System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 69d40235c287cb7597a528fcf6aff9c5f15ee51f:


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 31 2e 30 2e 20 20  ersion 3.21.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 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  D",.#endif.#if S
1ae0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c  QLITE_ENABLE_COL
1af0: 55 4d 4e 5f 4d 45 54 41 44 41 54 41 0a 20 20 22  UMN_METADATA.  "
1b00: 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45  ENABLE_COLUMN_ME
1b10: 54 41 44 41 54 41 22 2c 0a 23 65 6e 64 69 66 0a  TADATA",.#endif.
1b20: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1b30: 45 5f 43 4f 4c 55 4d 4e 5f 55 53 45 44 5f 4d 41  E_COLUMN_USED_MA
1b40: 53 4b 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 4c  SK.  "ENABLE_COL
1b50: 55 4d 4e 5f 55 53 45 44 5f 4d 41 53 4b 22 2c 0a  UMN_USED_MASK",.
1b60: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1b70: 45 5f 45 4e 41 42 4c 45 5f 43 4f 53 54 4d 55 4c  E_ENABLE_COSTMUL
1b80: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 53 54  T.  "ENABLE_COST
1b90: 4d 55 4c 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MULT",.#endif.#i
1ba0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1bb0: 43 55 52 53 4f 52 5f 48 49 4e 54 53 0a 20 20 22  CURSOR_HINTS.  "
1bc0: 45 4e 41 42 4c 45 5f 43 55 52 53 4f 52 5f 48 49  ENABLE_CURSOR_HI
1bd0: 4e 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  NTS",.#endif.#if
1be0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44   SQLITE_ENABLE_D
1bf0: 42 53 54 41 54 5f 56 54 41 42 0a 20 20 22 45 4e  BSTAT_VTAB.  "EN
1c00: 41 42 4c 45 5f 44 42 53 54 41 54 5f 56 54 41 42  ABLE_DBSTAT_VTAB
1c10: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1c20: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 45  LITE_ENABLE_EXPE
1c30: 4e 53 49 56 45 5f 41 53 53 45 52 54 0a 20 20 22  NSIVE_ASSERT.  "
1c40: 45 4e 41 42 4c 45 5f 45 58 50 45 4e 53 49 56 45  ENABLE_EXPENSIVE
1c50: 5f 41 53 53 45 52 54 22 2c 0a 23 65 6e 64 69 66  _ASSERT",.#endif
1c60: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1c70: 4c 45 5f 46 54 53 31 0a 20 20 22 45 4e 41 42 4c  LE_FTS1.  "ENABL
1c80: 45 5f 46 54 53 31 22 2c 0a 23 65 6e 64 69 66 0a  E_FTS1",.#endif.
1c90: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1ca0: 45 5f 46 54 53 32 0a 20 20 22 45 4e 41 42 4c 45  E_FTS2.  "ENABLE
1cb0: 5f 46 54 53 32 22 2c 0a 23 65 6e 64 69 66 0a 23  _FTS2",.#endif.#
1cc0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1cd0: 5f 46 54 53 33 0a 20 20 22 45 4e 41 42 4c 45 5f  _FTS3.  "ENABLE_
1ce0: 46 54 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69  FTS3",.#endif.#i
1cf0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1d00: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
1d10: 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 33 5f  .  "ENABLE_FTS3_
1d20: 50 41 52 45 4e 54 48 45 53 49 53 22 2c 0a 23 65  PARENTHESIS",.#e
1d30: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1d40: 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45  ENABLE_FTS3_TOKE
1d50: 4e 49 5a 45 52 0a 20 20 22 45 4e 41 42 4c 45 5f  NIZER.  "ENABLE_
1d60: 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 22 2c  FTS3_TOKENIZER",
1d70: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1d80: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 0a 20  TE_ENABLE_FTS4. 
1d90: 20 22 45 4e 41 42 4c 45 5f 46 54 53 34 22 2c 0a   "ENABLE_FTS4",.
1da0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1db0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 0a 20 20  E_ENABLE_FTS5.  
1dc0: 22 45 4e 41 42 4c 45 5f 46 54 53 35 22 2c 0a 23  "ENABLE_FTS5",.#
1dd0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1de0: 5f 45 4e 41 42 4c 45 5f 48 49 44 44 45 4e 5f 43  _ENABLE_HIDDEN_C
1df0: 4f 4c 55 4d 4e 53 0a 20 20 22 45 4e 41 42 4c 45  OLUMNS.  "ENABLE
1e00: 5f 48 49 44 44 45 4e 5f 43 4f 4c 55 4d 4e 53 22  _HIDDEN_COLUMNS"
1e10: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1e20: 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 0a 20  ITE_ENABLE_ICU. 
1e30: 20 22 45 4e 41 42 4c 45 5f 49 43 55 22 2c 0a 23   "ENABLE_ICU",.#
1e40: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1e50: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 0a  _ENABLE_IOTRACE.
1e60: 20 20 22 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43    "ENABLE_IOTRAC
1e70: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
1e80: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f  QLITE_ENABLE_JSO
1e90: 4e 31 0a 20 20 22 45 4e 41 42 4c 45 5f 4a 53 4f  N1.  "ENABLE_JSO
1ea0: 4e 31 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  N1",.#endif.#if 
1eb0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f  SQLITE_ENABLE_LO
1ec0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 0a 20 20 22  AD_EXTENSION.  "
1ed0: 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45  ENABLE_LOAD_EXTE
1ee0: 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  NSION",.#endif.#
1ef0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45 4e 41  ifdef SQLITE_ENA
1f00: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
1f10: 45 0a 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 43 4b  E.  "ENABLE_LOCK
1f20: 49 4e 47 5f 53 54 59 4c 45 3d 22 20 43 54 49 4d  ING_STYLE=" CTIM
1f30: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
1f40: 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53  ENABLE_LOCKING_S
1f50: 54 59 4c 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69  TYLE),.#endif.#i
1f60: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1f70: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
1f80: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 4f  T.  "ENABLE_MEMO
1f90: 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 22 2c 0a  RY_MANAGEMENT",.
1fa0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1fb0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
1fc0: 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  .  "ENABLE_MEMSY
1fd0: 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  S3",.#endif.#if 
1fe0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
1ff0: 4d 53 59 53 35 0a 20 20 22 45 4e 41 42 4c 45 5f  MSYS5.  "ENABLE_
2000: 4d 45 4d 53 59 53 35 22 2c 0a 23 65 6e 64 69 66  MEMSYS5",.#endif
2010: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2020: 4c 45 5f 4d 55 4c 54 49 50 4c 45 58 0a 20 20 22  LE_MULTIPLEX.  "
2030: 45 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c 45 58  ENABLE_MULTIPLEX
2040: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2050: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c 4c  LITE_ENABLE_NULL
2060: 5f 54 52 49 4d 0a 20 20 22 45 4e 41 42 4c 45 5f  _TRIM.  "ENABLE_
2070: 4e 55 4c 4c 5f 54 52 49 4d 22 2c 0a 23 65 6e 64  NULL_TRIM",.#end
2080: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2090: 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45  ABLE_OVERSIZE_CE
20a0: 4c 4c 5f 43 48 45 43 4b 0a 20 20 22 45 4e 41 42  LL_CHECK.  "ENAB
20b0: 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45 4c 4c  LE_OVERSIZE_CELL
20c0: 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a  _CHECK",.#endif.
20d0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
20e0: 45 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b  E_PREUPDATE_HOOK
20f0: 0a 20 20 22 45 4e 41 42 4c 45 5f 50 52 45 55 50  .  "ENABLE_PREUP
2100: 44 41 54 45 5f 48 4f 4f 4b 22 2c 0a 23 65 6e 64  DATE_HOOK",.#end
2110: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2120: 41 42 4c 45 5f 51 50 53 47 0a 20 20 22 45 4e 41  ABLE_QPSG.  "ENA
2130: 42 4c 45 5f 51 50 53 47 22 2c 0a 23 65 6e 64 69  BLE_QPSG",.#endi
2140: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2150: 42 4c 45 5f 52 42 55 0a 20 20 22 45 4e 41 42 4c  BLE_RBU.  "ENABL
2160: 45 5f 52 42 55 22 2c 0a 23 65 6e 64 69 66 0a 23  E_RBU",.#endif.#
2170: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2180: 5f 52 54 52 45 45 0a 20 20 22 45 4e 41 42 4c 45  _RTREE.  "ENABLE
2190: 5f 52 54 52 45 45 22 2c 0a 23 65 6e 64 69 66 0a  _RTREE",.#endif.
21a0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
21b0: 45 5f 53 45 4c 45 43 54 54 52 41 43 45 0a 20 20  E_SELECTTRACE.  
21c0: 22 45 4e 41 42 4c 45 5f 53 45 4c 45 43 54 54 52  "ENABLE_SELECTTR
21d0: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
21e0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53   SQLITE_ENABLE_S
21f0: 45 53 53 49 4f 4e 0a 20 20 22 45 4e 41 42 4c 45  ESSION.  "ENABLE
2200: 5f 53 45 53 53 49 4f 4e 22 2c 0a 23 65 6e 64 69  _SESSION",.#endi
2210: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2220: 42 4c 45 5f 53 4e 41 50 53 48 4f 54 0a 20 20 22  BLE_SNAPSHOT.  "
2230: 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f 54 22  ENABLE_SNAPSHOT"
2240: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2250: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
2260: 47 0a 20 20 22 45 4e 41 42 4c 45 5f 53 51 4c 4c  G.  "ENABLE_SQLL
2270: 4f 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  OG",.#endif.#if 
2280: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 45  defined(SQLITE_E
2290: 4e 41 42 4c 45 5f 53 54 41 54 34 29 0a 20 20 22  NABLE_STAT4).  "
22a0: 45 4e 41 42 4c 45 5f 53 54 41 54 34 22 2c 0a 23  ENABLE_STAT4",.#
22b0: 65 6c 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c  elif defined(SQL
22c0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
22d0: 29 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 41 54  ).  "ENABLE_STAT
22e0: 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  3",.#endif.#if S
22f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d  QLITE_ENABLE_STM
2300: 54 56 54 41 42 0a 20 20 22 45 4e 41 42 4c 45 5f  TVTAB.  "ENABLE_
2310: 53 54 4d 54 56 54 41 42 22 2c 0a 23 65 6e 64 69  STMTVTAB",.#endi
2320: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2330: 42 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41  BLE_STMT_SCANSTA
2340: 54 55 53 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54  TUS.  "ENABLE_ST
2350: 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 22 2c 0a  MT_SCANSTATUS",.
2360: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2370: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
2380: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 0a 20 20  _SQL_FUNCTION.  
2390: 22 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f  "ENABLE_UNKNOWN_
23a0: 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 22 2c 0a 23  SQL_FUNCTION",.#
23b0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
23c0: 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e  _ENABLE_UNLOCK_N
23d0: 4f 54 49 46 59 0a 20 20 22 45 4e 41 42 4c 45 5f  OTIFY.  "ENABLE_
23e0: 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 22 2c 0a  UNLOCK_NOTIFY",.
23f0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2400: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
2410: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 0a 20 20 22  DELETE_LIMIT.  "
2420: 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45  ENABLE_UPDATE_DE
2430: 4c 45 54 45 5f 4c 49 4d 49 54 22 2c 0a 23 65 6e  LETE_LIMIT",.#en
2440: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
2450: 4e 41 42 4c 45 5f 55 52 49 5f 30 30 5f 45 52 52  NABLE_URI_00_ERR
2460: 4f 52 0a 20 20 22 45 4e 41 42 4c 45 5f 55 52 49  OR.  "ENABLE_URI
2470: 5f 30 30 5f 45 52 52 4f 52 22 2c 0a 23 65 6e 64  _00_ERROR",.#end
2480: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2490: 41 42 4c 45 5f 56 46 53 54 52 41 43 45 0a 20 20  ABLE_VFSTRACE.  
24a0: 22 45 4e 41 42 4c 45 5f 56 46 53 54 52 41 43 45  "ENABLE_VFSTRACE
24b0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
24c0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 57 48 45 52  LITE_ENABLE_WHER
24d0: 45 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45  ETRACE.  "ENABLE
24e0: 5f 57 48 45 52 45 54 52 41 43 45 22 2c 0a 23 65  _WHERETRACE",.#e
24f0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2500: 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 0a 20 20  ENABLE_ZIPVFS.  
2510: 22 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 22 2c  "ENABLE_ZIPVFS",
2520: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2530: 54 45 5f 45 58 50 4c 41 49 4e 5f 45 53 54 49 4d  TE_EXPLAIN_ESTIM
2540: 41 54 45 44 5f 52 4f 57 53 0a 20 20 22 45 58 50  ATED_ROWS.  "EXP
2550: 4c 41 49 4e 5f 45 53 54 49 4d 41 54 45 44 5f 52  LAIN_ESTIMATED_R
2560: 4f 57 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  OWS",.#endif.#if
2570: 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 49 46   SQLITE_EXTRA_IF
2580: 4e 55 4c 4c 52 4f 57 0a 20 20 22 45 58 54 52 41  NULLROW.  "EXTRA
2590: 5f 49 46 4e 55 4c 4c 52 4f 57 22 2c 0a 23 65 6e  _IFNULLROW",.#en
25a0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
25b0: 45 5f 45 58 54 52 41 5f 49 4e 49 54 0a 20 20 22  E_EXTRA_INIT.  "
25c0: 45 58 54 52 41 5f 49 4e 49 54 3d 22 20 43 54 49  EXTRA_INIT=" CTI
25d0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
25e0: 5f 45 58 54 52 41 5f 49 4e 49 54 29 2c 0a 23 65  _EXTRA_INIT),.#e
25f0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2600: 54 45 5f 45 58 54 52 41 5f 53 48 55 54 44 4f 57  TE_EXTRA_SHUTDOW
2610: 4e 0a 20 20 22 45 58 54 52 41 5f 53 48 55 54 44  N.  "EXTRA_SHUTD
2620: 4f 57 4e 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  OWN=" CTIMEOPT_V
2630: 41 4c 28 53 51 4c 49 54 45 5f 45 58 54 52 41 5f  AL(SQLITE_EXTRA_
2640: 53 48 55 54 44 4f 57 4e 29 2c 0a 23 65 6e 64 69  SHUTDOWN),.#endi
2650: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2660: 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45  FTS3_MAX_EXPR_DE
2670: 50 54 48 0a 20 20 22 46 54 53 33 5f 4d 41 58 5f  PTH.  "FTS3_MAX_
2680: 45 58 50 52 5f 44 45 50 54 48 3d 22 20 43 54 49  EXPR_DEPTH=" CTI
2690: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
26a0: 5f 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44  _FTS3_MAX_EXPR_D
26b0: 45 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69  EPTH),.#endif.#i
26c0: 66 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 45 4e  f SQLITE_FTS5_EN
26d0: 41 42 4c 45 5f 54 45 53 54 5f 4d 49 0a 20 20 22  ABLE_TEST_MI.  "
26e0: 46 54 53 35 5f 45 4e 41 42 4c 45 5f 54 45 53 54  FTS5_ENABLE_TEST
26f0: 5f 4d 49 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  _MI",.#endif.#if
2700: 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 4e 4f 5f   SQLITE_FTS5_NO_
2710: 57 49 54 48 4f 55 54 5f 52 4f 57 49 44 0a 20 20  WITHOUT_ROWID.  
2720: 22 46 54 53 35 5f 4e 4f 5f 57 49 54 48 4f 55 54  "FTS5_NO_WITHOUT
2730: 5f 52 4f 57 49 44 22 2c 0a 23 65 6e 64 69 66 0a  _ROWID",.#endif.
2740: 23 69 66 20 53 51 4c 49 54 45 5f 48 41 53 5f 43  #if SQLITE_HAS_C
2750: 4f 44 45 43 0a 20 20 22 48 41 53 5f 43 4f 44 45  ODEC.  "HAS_CODE
2760: 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 48  C",.#endif.#if H
2770: 41 56 45 5f 49 53 4e 41 4e 20 7c 7c 20 53 51 4c  AVE_ISNAN || SQL
2780: 49 54 45 5f 48 41 56 45 5f 49 53 4e 41 4e 0a 20  ITE_HAVE_ISNAN. 
2790: 20 22 48 41 56 45 5f 49 53 4e 41 4e 22 2c 0a 23   "HAVE_ISNAN",.#
27a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
27b0: 5f 48 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52  _HOMEGROWN_RECUR
27c0: 53 49 56 45 5f 4d 55 54 45 58 0a 20 20 22 48 4f  SIVE_MUTEX.  "HO
27d0: 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56  MEGROWN_RECURSIV
27e0: 45 5f 4d 55 54 45 58 22 2c 0a 23 65 6e 64 69 66  E_MUTEX",.#endif
27f0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 47 4e 4f  .#if SQLITE_IGNO
2800: 52 45 5f 41 46 50 5f 4c 4f 43 4b 5f 45 52 52 4f  RE_AFP_LOCK_ERRO
2810: 52 53 0a 20 20 22 49 47 4e 4f 52 45 5f 41 46 50  RS.  "IGNORE_AFP
2820: 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 22 2c 0a 23  _LOCK_ERRORS",.#
2830: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2840: 5f 49 47 4e 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f  _IGNORE_FLOCK_LO
2850: 43 4b 5f 45 52 52 4f 52 53 0a 20 20 22 49 47 4e  CK_ERRORS.  "IGN
2860: 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45  ORE_FLOCK_LOCK_E
2870: 52 52 4f 52 53 22 2c 0a 23 65 6e 64 69 66 0a 23  RRORS",.#endif.#
2880: 69 66 20 53 51 4c 49 54 45 5f 49 4e 4c 49 4e 45  if SQLITE_INLINE
2890: 5f 4d 45 4d 43 50 59 0a 20 20 22 49 4e 4c 49 4e  _MEMCPY.  "INLIN
28a0: 45 5f 4d 45 4d 43 50 59 22 2c 0a 23 65 6e 64 69  E_MEMCPY",.#endi
28b0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 4e 54  f.#if SQLITE_INT
28c0: 36 34 5f 54 59 50 45 0a 20 20 22 49 4e 54 36 34  64_TYPE.  "INT64
28d0: 5f 54 59 50 45 22 2c 0a 23 65 6e 64 69 66 0a 23  _TYPE",.#endif.#
28e0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54  ifdef SQLITE_INT
28f0: 45 47 52 49 54 59 5f 43 48 45 43 4b 5f 45 52 52  EGRITY_CHECK_ERR
2900: 4f 52 5f 4d 41 58 0a 20 20 22 49 4e 54 45 47 52  OR_MAX.  "INTEGR
2910: 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f  ITY_CHECK_ERROR_
2920: 4d 41 58 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  MAX=" CTIMEOPT_V
2930: 41 4c 28 53 51 4c 49 54 45 5f 49 4e 54 45 47 52  AL(SQLITE_INTEGR
2940: 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f  ITY_CHECK_ERROR_
2950: 4d 41 58 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  MAX),.#endif.#if
2960: 20 53 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45   SQLITE_LIKE_DOE
2970: 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 0a  SNT_MATCH_BLOBS.
2980: 20 20 22 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d    "LIKE_DOESNT_M
2990: 41 54 43 48 5f 42 4c 4f 42 53 22 2c 0a 23 65 6e  ATCH_BLOBS",.#en
29a0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c  dif.#if SQLITE_L
29b0: 4f 43 4b 5f 54 52 41 43 45 0a 20 20 22 4c 4f 43  OCK_TRACE.  "LOC
29c0: 4b 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66  K_TRACE",.#endif
29d0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c 4f 47 5f  .#if SQLITE_LOG_
29e0: 43 41 43 48 45 5f 53 50 49 4c 4c 0a 20 20 22 4c  CACHE_SPILL.  "L
29f0: 4f 47 5f 43 41 43 48 45 5f 53 50 49 4c 4c 22 2c  OG_CACHE_SPILL",
2a00: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
2a10: 51 4c 49 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46  QLITE_MALLOC_SOF
2a20: 54 5f 4c 49 4d 49 54 0a 20 20 22 4d 41 4c 4c 4f  T_LIMIT.  "MALLO
2a30: 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 3d 22 20 43  C_SOFT_LIMIT=" C
2a40: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
2a50: 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c  TE_MALLOC_SOFT_L
2a60: 49 4d 49 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  IMIT),.#endif.#i
2a70: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2a80: 41 54 54 41 43 48 45 44 0a 20 20 22 4d 41 58 5f  ATTACHED.  "MAX_
2a90: 41 54 54 41 43 48 45 44 3d 22 20 43 54 49 4d 45  ATTACHED=" CTIME
2aa0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2ab0: 41 58 5f 41 54 54 41 43 48 45 44 29 2c 0a 23 65  AX_ATTACHED),.#e
2ac0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2ad0: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 0a 20 20  TE_MAX_COLUMN.  
2ae0: 22 4d 41 58 5f 43 4f 4c 55 4d 4e 3d 22 20 43 54  "MAX_COLUMN=" CT
2af0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2b00: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 29 2c 0a 23  E_MAX_COLUMN),.#
2b10: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2b20: 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44  ITE_MAX_COMPOUND
2b30: 5f 53 45 4c 45 43 54 0a 20 20 22 4d 41 58 5f 43  _SELECT.  "MAX_C
2b40: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 3d 22  OMPOUND_SELECT="
2b50: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2b60: 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e  LITE_MAX_COMPOUN
2b70: 44 5f 53 45 4c 45 43 54 29 2c 0a 23 65 6e 64 69  D_SELECT),.#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 44 45 46 41 55 4c 54 5f 50 41 47 45  MAX_DEFAULT_PAGE
2ba0: 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 44 45 46  _SIZE.  "MAX_DEF
2bb0: 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 22  AULT_PAGE_SIZE="
2bc0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2bd0: 4c 49 54 45 5f 4d 41 58 5f 44 45 46 41 55 4c 54  LITE_MAX_DEFAULT
2be0: 5f 50 41 47 45 5f 53 49 5a 45 29 2c 0a 23 65 6e  _PAGE_SIZE),.#en
2bf0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2c00: 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  E_MAX_EXPR_DEPTH
2c10: 0a 20 20 22 4d 41 58 5f 45 58 50 52 5f 44 45 50  .  "MAX_EXPR_DEP
2c20: 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  TH=" CTIMEOPT_VA
2c30: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50  L(SQLITE_MAX_EXP
2c40: 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64 69 66  R_DEPTH),.#endif
2c50: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2c60: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 0a  AX_FUNCTION_ARG.
2c70: 20 20 22 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f    "MAX_FUNCTION_
2c80: 41 52 47 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ARG=" CTIMEOPT_V
2c90: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55  AL(SQLITE_MAX_FU
2ca0: 4e 43 54 49 4f 4e 5f 41 52 47 29 2c 0a 23 65 6e  NCTION_ARG),.#en
2cb0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2cc0: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 0a 20 20 22  E_MAX_LENGTH.  "
2cd0: 4d 41 58 5f 4c 45 4e 47 54 48 3d 22 20 43 54 49  MAX_LENGTH=" CTI
2ce0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2cf0: 5f 4d 41 58 5f 4c 45 4e 47 54 48 29 2c 0a 23 65  _MAX_LENGTH),.#e
2d00: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2d10: 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54  TE_MAX_LIKE_PATT
2d20: 45 52 4e 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41  ERN_LENGTH.  "MA
2d30: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
2d40: 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50 54  ENGTH=" CTIMEOPT
2d50: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f  _VAL(SQLITE_MAX_
2d60: 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e  LIKE_PATTERN_LEN
2d70: 47 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  GTH),.#endif.#if
2d80: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  def SQLITE_MAX_M
2d90: 45 4d 4f 52 59 0a 20 20 22 4d 41 58 5f 4d 45 4d  EMORY.  "MAX_MEM
2da0: 4f 52 59 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ORY=" CTIMEOPT_V
2db0: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45  AL(SQLITE_MAX_ME
2dc0: 4d 4f 52 59 29 2c 0a 23 65 6e 64 69 66 0a 23 69  MORY),.#endif.#i
2dd0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2de0: 4d 4d 41 50 5f 53 49 5a 45 0a 20 20 22 4d 41 58  MMAP_SIZE.  "MAX
2df0: 5f 4d 4d 41 50 5f 53 49 5a 45 3d 22 20 43 54 49  _MMAP_SIZE=" CTI
2e00: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2e10: 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 29 2c  _MAX_MMAP_SIZE),
2e20: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
2e30: 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53  QLITE_MAX_MMAP_S
2e40: 49 5a 45 5f 0a 20 20 22 4d 41 58 5f 4d 4d 41 50  IZE_.  "MAX_MMAP
2e50: 5f 53 49 5a 45 5f 3d 22 20 43 54 49 4d 45 4f 50  _SIZE_=" CTIMEOP
2e60: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2e70: 5f 4d 4d 41 50 5f 53 49 5a 45 5f 29 2c 0a 23 65  _MMAP_SIZE_),.#e
2e80: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2e90: 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e  TE_MAX_PAGE_COUN
2ea0: 54 0a 20 20 22 4d 41 58 5f 50 41 47 45 5f 43 4f  T.  "MAX_PAGE_CO
2eb0: 55 4e 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  UNT=" CTIMEOPT_V
2ec0: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41  AL(SQLITE_MAX_PA
2ed0: 47 45 5f 43 4f 55 4e 54 29 2c 0a 23 65 6e 64 69  GE_COUNT),.#endi
2ee0: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2ef0: 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 0a 20 20  MAX_PAGE_SIZE.  
2f00: 22 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 3d 22  "MAX_PAGE_SIZE="
2f10: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2f20: 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53 49  LITE_MAX_PAGE_SI
2f30: 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ZE),.#endif.#ifd
2f40: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43  ef SQLITE_MAX_SC
2f50: 48 45 4d 41 5f 52 45 54 52 59 0a 20 20 22 4d 41  HEMA_RETRY.  "MA
2f60: 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 3d 22  X_SCHEMA_RETRY="
2f70: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2f80: 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f  LITE_MAX_SCHEMA_
2f90: 52 45 54 52 59 29 2c 0a 23 65 6e 64 69 66 0a 23  RETRY),.#endif.#
2fa0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58  ifdef SQLITE_MAX
2fb0: 5f 53 51 4c 5f 4c 45 4e 47 54 48 0a 20 20 22 4d  _SQL_LENGTH.  "M
2fc0: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 3d 22 20  AX_SQL_LENGTH=" 
2fd0: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
2fe0: 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47  ITE_MAX_SQL_LENG
2ff0: 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  TH),.#endif.#ifd
3000: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 54 52  ef SQLITE_MAX_TR
3010: 49 47 47 45 52 5f 44 45 50 54 48 0a 20 20 22 4d  IGGER_DEPTH.  "M
3020: 41 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48  AX_TRIGGER_DEPTH
3030: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
3040: 53 51 4c 49 54 45 5f 4d 41 58 5f 54 52 49 47 47  SQLITE_MAX_TRIGG
3050: 45 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64 69  ER_DEPTH),.#endi
3060: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
3070: 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MAX_VARIABLE_NUM
3080: 42 45 52 0a 20 20 22 4d 41 58 5f 56 41 52 49 41  BER.  "MAX_VARIA
3090: 42 4c 45 5f 4e 55 4d 42 45 52 3d 22 20 43 54 49  BLE_NUMBER=" CTI
30a0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
30b0: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
30c0: 4d 42 45 52 29 2c 0a 23 65 6e 64 69 66 0a 23 69  MBER),.#endif.#i
30d0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
30e0: 56 44 42 45 5f 4f 50 0a 20 20 22 4d 41 58 5f 56  VDBE_OP.  "MAX_V
30f0: 44 42 45 5f 4f 50 3d 22 20 43 54 49 4d 45 4f 50  DBE_OP=" CTIMEOP
3100: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3110: 5f 56 44 42 45 5f 4f 50 29 2c 0a 23 65 6e 64 69  _VDBE_OP),.#endi
3120: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
3130: 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MAX_WORKER_THREA
3140: 44 53 0a 20 20 22 4d 41 58 5f 57 4f 52 4b 45 52  DS.  "MAX_WORKER
3150: 5f 54 48 52 45 41 44 53 3d 22 20 43 54 49 4d 45  _THREADS=" CTIME
3160: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
3170: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
3180: 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S),.#endif.#if S
3190: 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 0a 20  QLITE_MEMDEBUG. 
31a0: 20 22 4d 45 4d 44 45 42 55 47 22 2c 0a 23 65 6e   "MEMDEBUG",.#en
31b0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d  dif.#if SQLITE_M
31c0: 49 58 45 44 5f 45 4e 44 49 41 4e 5f 36 34 42 49  IXED_ENDIAN_64BI
31d0: 54 5f 46 4c 4f 41 54 0a 20 20 22 4d 49 58 45 44  T_FLOAT.  "MIXED
31e0: 5f 45 4e 44 49 41 4e 5f 36 34 42 49 54 5f 46 4c  _ENDIAN_64BIT_FL
31f0: 4f 41 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  OAT",.#endif.#if
3200: 20 53 51 4c 49 54 45 5f 4d 4d 41 50 5f 52 45 41   SQLITE_MMAP_REA
3210: 44 57 52 49 54 45 0a 20 20 22 4d 4d 41 50 5f 52  DWRITE.  "MMAP_R
3220: 45 41 44 57 52 49 54 45 22 2c 0a 23 65 6e 64 69  EADWRITE",.#endi
3230: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55 54  f.#if SQLITE_MUT
3240: 45 58 5f 4e 4f 4f 50 0a 20 20 22 4d 55 54 45 58  EX_NOOP.  "MUTEX
3250: 5f 4e 4f 4f 50 22 2c 0a 23 65 6e 64 69 66 0a 23  _NOOP",.#endif.#
3260: 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  if SQLITE_MUTEX_
3270: 4e 52 45 46 0a 20 20 22 4d 55 54 45 58 5f 4e 52  NREF.  "MUTEX_NR
3280: 45 46 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  EF",.#endif.#if 
3290: 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4f 4d 49  SQLITE_MUTEX_OMI
32a0: 54 0a 20 20 22 4d 55 54 45 58 5f 4f 4d 49 54 22  T.  "MUTEX_OMIT"
32b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
32c0: 49 54 45 5f 4d 55 54 45 58 5f 50 54 48 52 45 41  ITE_MUTEX_PTHREA
32d0: 44 53 0a 20 20 22 4d 55 54 45 58 5f 50 54 48 52  DS.  "MUTEX_PTHR
32e0: 45 41 44 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  EADS",.#endif.#i
32f0: 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 57  f SQLITE_MUTEX_W
3300: 33 32 0a 20 20 22 4d 55 54 45 58 5f 57 33 32 22  32.  "MUTEX_W32"
3310: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3320: 49 54 45 5f 4e 45 45 44 5f 45 52 52 5f 4e 41 4d  ITE_NEED_ERR_NAM
3330: 45 0a 20 20 22 4e 45 45 44 5f 45 52 52 5f 4e 41  E.  "NEED_ERR_NA
3340: 4d 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ME",.#endif.#if 
3350: 53 51 4c 49 54 45 5f 4e 4f 49 4e 4c 49 4e 45 0a  SQLITE_NOINLINE.
3360: 20 20 22 4e 4f 49 4e 4c 49 4e 45 22 2c 0a 23 65    "NOINLINE",.#e
3370: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3380: 4e 4f 5f 53 59 4e 43 0a 20 20 22 4e 4f 5f 53 59  NO_SYNC.  "NO_SY
3390: 4e 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  NC",.#endif.#if 
33a0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
33b0: 52 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 41  RTABLE.  "OMIT_A
33c0: 4c 54 45 52 54 41 42 4c 45 22 2c 0a 23 65 6e 64  LTERTABLE",.#end
33d0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
33e0: 49 54 5f 41 4e 41 4c 59 5a 45 0a 20 20 22 4f 4d  IT_ANALYZE.  "OM
33f0: 49 54 5f 41 4e 41 4c 59 5a 45 22 2c 0a 23 65 6e  IT_ANALYZE",.#en
3400: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3410: 4d 49 54 5f 41 54 54 41 43 48 0a 20 20 22 4f 4d  MIT_ATTACH.  "OM
3420: 49 54 5f 41 54 54 41 43 48 22 2c 0a 23 65 6e 64  IT_ATTACH",.#end
3430: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3440: 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e  IT_AUTHORIZATION
3450: 0a 20 20 22 4f 4d 49 54 5f 41 55 54 48 4f 52 49  .  "OMIT_AUTHORI
3460: 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a  ZATION",.#endif.
3470: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3480: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20  AUTOINCREMENT.  
3490: 22 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d  "OMIT_AUTOINCREM
34a0: 45 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ENT",.#endif.#if
34b0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
34c0: 4f 49 4e 49 54 0a 20 20 22 4f 4d 49 54 5f 41 55  OINIT.  "OMIT_AU
34d0: 54 4f 49 4e 49 54 22 2c 0a 23 65 6e 64 69 66 0a  TOINIT",.#endif.
34e0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
34f0: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 0a  AUTOMATIC_INDEX.
3500: 20 20 22 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49    "OMIT_AUTOMATI
3510: 43 5f 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  C_INDEX",.#endif
3520: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3530: 5f 41 55 54 4f 52 45 53 45 54 0a 20 20 22 4f 4d  _AUTORESET.  "OM
3540: 49 54 5f 41 55 54 4f 52 45 53 45 54 22 2c 0a 23  IT_AUTORESET",.#
3550: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3560: 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d  _OMIT_AUTOVACUUM
3570: 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 56 41 43  .  "OMIT_AUTOVAC
3580: 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  UUM",.#endif.#if
3590: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54   SQLITE_OMIT_BET
35a0: 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  WEEN_OPTIMIZATIO
35b0: 4e 0a 20 20 22 4f 4d 49 54 5f 42 45 54 57 45 45  N.  "OMIT_BETWEE
35c0: 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  N_OPTIMIZATION",
35d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
35e0: 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54  TE_OMIT_BLOB_LIT
35f0: 45 52 41 4c 0a 20 20 22 4f 4d 49 54 5f 42 4c 4f  ERAL.  "OMIT_BLO
3600: 42 5f 4c 49 54 45 52 41 4c 22 2c 0a 23 65 6e 64  B_LITERAL",.#end
3610: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3620: 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 0a 20 20  IT_BTREECOUNT.  
3630: 22 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54  "OMIT_BTREECOUNT
3640: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3650: 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 0a 20  LITE_OMIT_CAST. 
3660: 20 22 4f 4d 49 54 5f 43 41 53 54 22 2c 0a 23 65   "OMIT_CAST",.#e
3670: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3680: 4f 4d 49 54 5f 43 48 45 43 4b 0a 20 20 22 4f 4d  OMIT_CHECK.  "OM
3690: 49 54 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69  IT_CHECK",.#endi
36a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
36b0: 54 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 22 4f 4d  T_COMPLETE.  "OM
36c0: 49 54 5f 43 4f 4d 50 4c 45 54 45 22 2c 0a 23 65  IT_COMPLETE",.#e
36d0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
36e0: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
36f0: 4c 45 43 54 0a 20 20 22 4f 4d 49 54 5f 43 4f 4d  LECT.  "OMIT_COM
3700: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 22 2c 0a 23  POUND_SELECT",.#
3710: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3720: 5f 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43  _OMIT_CONFLICT_C
3730: 4c 41 55 53 45 0a 20 20 22 4f 4d 49 54 5f 43 4f  LAUSE.  "OMIT_CO
3740: 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 22 2c 0a  NFLICT_CLAUSE",.
3750: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3760: 45 5f 4f 4d 49 54 5f 43 54 45 0a 20 20 22 4f 4d  E_OMIT_CTE.  "OM
3770: 49 54 5f 43 54 45 22 2c 0a 23 65 6e 64 69 66 0a  IT_CTE",.#endif.
3780: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3790: 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 0a 20  DATETIME_FUNCS. 
37a0: 20 22 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f   "OMIT_DATETIME_
37b0: 46 55 4e 43 53 22 2c 0a 23 65 6e 64 69 66 0a 23  FUNCS",.#endif.#
37c0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  if SQLITE_OMIT_D
37d0: 45 43 4c 54 59 50 45 0a 20 20 22 4f 4d 49 54 5f  ECLTYPE.  "OMIT_
37e0: 44 45 43 4c 54 59 50 45 22 2c 0a 23 65 6e 64 69  DECLTYPE",.#endi
37f0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3800: 54 5f 44 45 50 52 45 43 41 54 45 44 0a 20 20 22  T_DEPRECATED.  "
3810: 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 22  OMIT_DEPRECATED"
3820: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3830: 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 0a  ITE_OMIT_DISKIO.
3840: 20 20 22 4f 4d 49 54 5f 44 49 53 4b 49 4f 22 2c    "OMIT_DISKIO",
3850: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3860: 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 0a  TE_OMIT_EXPLAIN.
3870: 20 20 22 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 22    "OMIT_EXPLAIN"
3880: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3890: 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52  ITE_OMIT_FLAG_PR
38a0: 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 46 4c  AGMAS.  "OMIT_FL
38b0: 41 47 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e  AG_PRAGMAS",.#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 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
38e0: 4e 54 0a 20 20 22 4f 4d 49 54 5f 46 4c 4f 41 54  NT.  "OMIT_FLOAT
38f0: 49 4e 47 5f 50 4f 49 4e 54 22 2c 0a 23 65 6e 64  ING_POINT",.#end
3900: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3910: 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 0a 20  IT_FOREIGN_KEY. 
3920: 20 22 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b   "OMIT_FOREIGN_K
3930: 45 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  EY",.#endif.#if 
3940: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f  SQLITE_OMIT_GET_
3950: 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 47 45  TABLE.  "OMIT_GE
3960: 54 5f 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66  T_TABLE",.#endif
3970: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3980: 5f 48 45 58 5f 49 4e 54 45 47 45 52 0a 20 20 22  _HEX_INTEGER.  "
3990: 4f 4d 49 54 5f 48 45 58 5f 49 4e 54 45 47 45 52  OMIT_HEX_INTEGER
39a0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
39b0: 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c  LITE_OMIT_INCRBL
39c0: 4f 42 0a 20 20 22 4f 4d 49 54 5f 49 4e 43 52 42  OB.  "OMIT_INCRB
39d0: 4c 4f 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LOB",.#endif.#if
39e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54   SQLITE_OMIT_INT
39f0: 45 47 52 49 54 59 5f 43 48 45 43 4b 0a 20 20 22  EGRITY_CHECK.  "
3a00: 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43  OMIT_INTEGRITY_C
3a10: 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69  HECK",.#endif.#i
3a20: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49  f SQLITE_OMIT_LI
3a30: 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a  KE_OPTIMIZATION.
3a40: 20 20 22 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54    "OMIT_LIKE_OPT
3a50: 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64  IMIZATION",.#end
3a60: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3a70: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
3a80: 4e 0a 20 20 22 4f 4d 49 54 5f 4c 4f 41 44 5f 45  N.  "OMIT_LOAD_E
3a90: 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64 69  XTENSION",.#endi
3aa0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3ab0: 54 5f 4c 4f 43 41 4c 54 49 4d 45 0a 20 20 22 4f  T_LOCALTIME.  "O
3ac0: 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 22 2c 0a  MIT_LOCALTIME",.
3ad0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3ae0: 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45  E_OMIT_LOOKASIDE
3af0: 0a 20 20 22 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49  .  "OMIT_LOOKASI
3b00: 44 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DE",.#endif.#if 
3b10: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f  SQLITE_OMIT_MEMO
3b20: 52 59 44 42 0a 20 20 22 4f 4d 49 54 5f 4d 45 4d  RYDB.  "OMIT_MEM
3b30: 4f 52 59 44 42 22 2c 0a 23 65 6e 64 69 66 0a 23  ORYDB",.#endif.#
3b40: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f  if SQLITE_OMIT_O
3b50: 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20  R_OPTIMIZATION. 
3b60: 20 22 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49   "OMIT_OR_OPTIMI
3b70: 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a  ZATION",.#endif.
3b80: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3b90: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 0a 20 20  PAGER_PRAGMAS.  
3ba0: 22 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47  "OMIT_PAGER_PRAG
3bb0: 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  MAS",.#endif.#if
3bc0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 52   SQLITE_OMIT_PAR
3bd0: 53 45 52 5f 54 52 41 43 45 0a 20 20 22 4f 4d 49  SER_TRACE.  "OMI
3be0: 54 5f 50 41 52 53 45 52 5f 54 52 41 43 45 22 2c  T_PARSER_TRACE",
3bf0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3c00: 54 45 5f 4f 4d 49 54 5f 50 4f 50 45 4e 0a 20 20  TE_OMIT_POPEN.  
3c10: 22 4f 4d 49 54 5f 50 4f 50 45 4e 22 2c 0a 23 65  "OMIT_POPEN",.#e
3c20: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3c30: 4f 4d 49 54 5f 50 52 41 47 4d 41 0a 20 20 22 4f  OMIT_PRAGMA.  "O
3c40: 4d 49 54 5f 50 52 41 47 4d 41 22 2c 0a 23 65 6e  MIT_PRAGMA",.#en
3c50: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3c60: 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c  MIT_PROGRESS_CAL
3c70: 4c 42 41 43 4b 0a 20 20 22 4f 4d 49 54 5f 50 52  LBACK.  "OMIT_PR
3c80: 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 22  OGRESS_CALLBACK"
3c90: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3ca0: 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41  ITE_OMIT_QUICKBA
3cb0: 4c 41 4e 43 45 0a 20 20 22 4f 4d 49 54 5f 51 55  LANCE.  "OMIT_QU
3cc0: 49 43 4b 42 41 4c 41 4e 43 45 22 2c 0a 23 65 6e  ICKBALANCE",.#en
3cd0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3ce0: 4d 49 54 5f 52 45 49 4e 44 45 58 0a 20 20 22 4f  MIT_REINDEX.  "O
3cf0: 4d 49 54 5f 52 45 49 4e 44 45 58 22 2c 0a 23 65  MIT_REINDEX",.#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 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
3d20: 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 53 43 48 45  MAS.  "OMIT_SCHE
3d30: 4d 41 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e  MA_PRAGMAS",.#en
3d40: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3d50: 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49  MIT_SCHEMA_VERSI
3d60: 4f 4e 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d  ON_PRAGMAS.  "OM
3d70: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
3d80: 4e 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64  N_PRAGMAS",.#end
3d90: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3da0: 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45 0a  IT_SHARED_CACHE.
3db0: 20 20 22 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43    "OMIT_SHARED_C
3dc0: 41 43 48 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ACHE",.#endif.#i
3dd0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48  f SQLITE_OMIT_SH
3de0: 55 54 44 4f 57 4e 5f 44 49 52 45 43 54 4f 52 49  UTDOWN_DIRECTORI
3df0: 45 53 0a 20 20 22 4f 4d 49 54 5f 53 48 55 54 44  ES.  "OMIT_SHUTD
3e00: 4f 57 4e 5f 44 49 52 45 43 54 4f 52 49 45 53 22  OWN_DIRECTORIES"
3e10: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3e20: 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52  ITE_OMIT_SUBQUER
3e30: 59 0a 20 20 22 4f 4d 49 54 5f 53 55 42 51 55 45  Y.  "OMIT_SUBQUE
3e40: 52 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  RY",.#endif.#if 
3e50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f  SQLITE_OMIT_TCL_
3e60: 56 41 52 49 41 42 4c 45 0a 20 20 22 4f 4d 49 54  VARIABLE.  "OMIT
3e70: 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 22 2c 0a  _TCL_VARIABLE",.
3e80: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3e90: 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 0a 20 20  E_OMIT_TEMPDB.  
3ea0: 22 4f 4d 49 54 5f 54 45 4d 50 44 42 22 2c 0a 23  "OMIT_TEMPDB",.#
3eb0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3ec0: 5f 4f 4d 49 54 5f 54 45 53 54 5f 43 4f 4e 54 52  _OMIT_TEST_CONTR
3ed0: 4f 4c 0a 20 20 22 4f 4d 49 54 5f 54 45 53 54 5f  OL.  "OMIT_TEST_
3ee0: 43 4f 4e 54 52 4f 4c 22 2c 0a 23 65 6e 64 69 66  CONTROL",.#endif
3ef0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3f00: 5f 54 52 41 43 45 0a 20 20 22 4f 4d 49 54 5f 54  _TRACE.  "OMIT_T
3f10: 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RACE",.#endif.#i
3f20: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52  f SQLITE_OMIT_TR
3f30: 49 47 47 45 52 0a 20 20 22 4f 4d 49 54 5f 54 52  IGGER.  "OMIT_TR
3f40: 49 47 47 45 52 22 2c 0a 23 65 6e 64 69 66 0a 23  IGGER",.#endif.#
3f50: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  if SQLITE_OMIT_T
3f60: 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41  RUNCATE_OPTIMIZA
3f70: 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 54 52 55  TION.  "OMIT_TRU
3f80: 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49  NCATE_OPTIMIZATI
3f90: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
3fa0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31  SQLITE_OMIT_UTF1
3fb0: 36 0a 20 20 22 4f 4d 49 54 5f 55 54 46 31 36 22  6.  "OMIT_UTF16"
3fc0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3fd0: 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 0a  ITE_OMIT_VACUUM.
3fe0: 20 20 22 4f 4d 49 54 5f 56 41 43 55 55 4d 22 2c    "OMIT_VACUUM",
3ff0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4000: 54 45 5f 4f 4d 49 54 5f 56 49 45 57 0a 20 20 22  TE_OMIT_VIEW.  "
4010: 4f 4d 49 54 5f 56 49 45 57 22 2c 0a 23 65 6e 64  OMIT_VIEW",.#end
4020: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4030: 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 0a  IT_VIRTUALTABLE.
4040: 20 20 22 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54    "OMIT_VIRTUALT
4050: 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ABLE",.#endif.#i
4060: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41  f SQLITE_OMIT_WA
4070: 4c 0a 20 20 22 4f 4d 49 54 5f 57 41 4c 22 2c 0a  L.  "OMIT_WAL",.
4080: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4090: 45 5f 4f 4d 49 54 5f 57 53 44 0a 20 20 22 4f 4d  E_OMIT_WSD.  "OM
40a0: 49 54 5f 57 53 44 22 2c 0a 23 65 6e 64 69 66 0a  IT_WSD",.#endif.
40b0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
40c0: 58 46 45 52 5f 4f 50 54 0a 20 20 22 4f 4d 49 54  XFER_OPT.  "OMIT
40d0: 5f 58 46 45 52 5f 4f 50 54 22 2c 0a 23 65 6e 64  _XFER_OPT",.#end
40e0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 43  if.#if SQLITE_PC
40f0: 41 43 48 45 5f 53 45 50 41 52 41 54 45 5f 48 45  ACHE_SEPARATE_HE
4100: 41 44 45 52 0a 20 20 22 50 43 41 43 48 45 5f 53  ADER.  "PCACHE_S
4110: 45 50 41 52 41 54 45 5f 48 45 41 44 45 52 22 2c  EPARATE_HEADER",
4120: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4130: 54 45 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f 54  TE_PERFORMANCE_T
4140: 52 41 43 45 0a 20 20 22 50 45 52 46 4f 52 4d 41  RACE.  "PERFORMA
4150: 4e 43 45 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64  NCE_TRACE",.#end
4160: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 4f  if.#if SQLITE_PO
4170: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
4180: 45 0a 20 20 22 50 4f 57 45 52 53 41 46 45 5f 4f  E.  "POWERSAFE_O
4190: 56 45 52 57 52 49 54 45 22 2c 0a 23 65 6e 64 69  VERWRITE",.#endi
41a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 52 45  f.#if SQLITE_PRE
41b0: 46 45 52 5f 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e  FER_PROXY_LOCKIN
41c0: 47 0a 20 20 22 50 52 45 46 45 52 5f 50 52 4f 58  G.  "PREFER_PROX
41d0: 59 5f 4c 4f 43 4b 49 4e 47 22 2c 0a 23 65 6e 64  Y_LOCKING",.#end
41e0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 52  if.#if SQLITE_PR
41f0: 4f 58 59 5f 44 45 42 55 47 0a 20 20 22 50 52 4f  OXY_DEBUG.  "PRO
4200: 58 59 5f 44 45 42 55 47 22 2c 0a 23 65 6e 64 69  XY_DEBUG",.#endi
4210: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 52 45 56  f.#if SQLITE_REV
4220: 45 52 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53  ERSE_UNORDERED_S
4230: 45 4c 45 43 54 53 0a 20 20 22 52 45 56 45 52 53  ELECTS.  "REVERS
4240: 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45  E_UNORDERED_SELE
4250: 43 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  CTS",.#endif.#if
4260: 20 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e   SQLITE_RTREE_IN
4270: 54 5f 4f 4e 4c 59 0a 20 20 22 52 54 52 45 45 5f  T_ONLY.  "RTREE_
4280: 49 4e 54 5f 4f 4e 4c 59 22 2c 0a 23 65 6e 64 69  INT_ONLY",.#endi
4290: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 45 43  f.#if SQLITE_SEC
42a0: 55 52 45 5f 44 45 4c 45 54 45 0a 20 20 22 53 45  URE_DELETE.  "SE
42b0: 43 55 52 45 5f 44 45 4c 45 54 45 22 2c 0a 23 65  CURE_DELETE",.#e
42c0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
42d0: 53 4d 41 4c 4c 5f 53 54 41 43 4b 0a 20 20 22 53  SMALL_STACK.  "S
42e0: 4d 41 4c 4c 5f 53 54 41 43 4b 22 2c 0a 23 65 6e  MALL_STACK",.#en
42f0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
4300: 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 0a 20  E_SORTER_PMASZ. 
4310: 20 22 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 22   "SORTER_PMASZ="
4320: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
4330: 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53  LITE_SORTER_PMAS
4340: 5a 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  Z),.#endif.#if S
4350: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 0a 20 20  QLITE_SOUNDEX.  
4360: 22 53 4f 55 4e 44 45 58 22 2c 0a 23 65 6e 64 69  "SOUNDEX",.#endi
4370: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
4380: 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 0a 20 20  STAT4_SAMPLES.  
4390: 22 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 3d 22  "STAT4_SAMPLES="
43a0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
43b0: 4c 49 54 45 5f 53 54 41 54 34 5f 53 41 4d 50 4c  LITE_STAT4_SAMPL
43c0: 45 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ES),.#endif.#ifd
43d0: 65 66 20 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52  ef SQLITE_STMTJR
43e0: 4e 4c 5f 53 50 49 4c 4c 0a 20 20 22 53 54 4d 54  NL_SPILL.  "STMT
43f0: 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 22 20 43 54 49  JRNL_SPILL=" CTI
4400: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4410: 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 29  _STMTJRNL_SPILL)
4420: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4430: 49 54 45 5f 53 55 42 53 54 52 5f 43 4f 4d 50 41  ITE_SUBSTR_COMPA
4440: 54 49 42 49 4c 49 54 59 0a 20 20 22 53 55 42 53  TIBILITY.  "SUBS
4450: 54 52 5f 43 4f 4d 50 41 54 49 42 49 4c 49 54 59  TR_COMPATIBILITY
4460: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4470: 4c 49 54 45 5f 53 59 53 54 45 4d 5f 4d 41 4c 4c  LITE_SYSTEM_MALL
4480: 4f 43 0a 20 20 22 53 59 53 54 45 4d 5f 4d 41 4c  OC.  "SYSTEM_MAL
4490: 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LOC",.#endif.#if
44a0: 20 53 51 4c 49 54 45 5f 54 43 4c 0a 20 20 22 54   SQLITE_TCL.  "T
44b0: 43 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  CL",.#endif.#ifd
44c0: 65 66 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  ef SQLITE_TEMP_S
44d0: 54 4f 52 45 0a 20 20 22 54 45 4d 50 5f 53 54 4f  TORE.  "TEMP_STO
44e0: 52 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  RE=" CTIMEOPT_VA
44f0: 4c 28 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54  L(SQLITE_TEMP_ST
4500: 4f 52 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ORE),.#endif.#if
4510: 20 53 51 4c 49 54 45 5f 54 45 53 54 0a 20 20 22   SQLITE_TEST.  "
4520: 54 45 53 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TEST",.#endif.#i
4530: 66 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45  f defined(SQLITE
4540: 5f 54 48 52 45 41 44 53 41 46 45 29 0a 20 20 22  _THREADSAFE).  "
4550: 54 48 52 45 41 44 53 41 46 45 3d 22 20 43 54 49  THREADSAFE=" CTI
4560: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4570: 5f 54 48 52 45 41 44 53 41 46 45 29 2c 0a 23 65  _THREADSAFE),.#e
4580: 6c 69 66 20 64 65 66 69 6e 65 64 28 54 48 52 45  lif defined(THRE
4590: 41 44 53 41 46 45 29 0a 20 20 22 54 48 52 45 41  ADSAFE).  "THREA
45a0: 44 53 41 46 45 3d 22 20 43 54 49 4d 45 4f 50 54  DSAFE=" CTIMEOPT
45b0: 5f 56 41 4c 28 54 48 52 45 41 44 53 41 46 45 29  _VAL(THREADSAFE)
45c0: 2c 0a 23 65 6c 73 65 0a 20 20 22 54 48 52 45 41  ,.#else.  "THREA
45d0: 44 53 41 46 45 3d 31 22 2c 0a 23 65 6e 64 69 66  DSAFE=1",.#endif
45e0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 4e 4c 49  .#if SQLITE_UNLI
45f0: 4e 4b 5f 41 46 54 45 52 5f 43 4c 4f 53 45 0a 20  NK_AFTER_CLOSE. 
4600: 20 22 55 4e 4c 49 4e 4b 5f 41 46 54 45 52 5f 43   "UNLINK_AFTER_C
4610: 4c 4f 53 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LOSE",.#endif.#i
4620: 66 20 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41  f SQLITE_UNTESTA
4630: 42 4c 45 0a 20 20 22 55 4e 54 45 53 54 41 42 4c  BLE.  "UNTESTABL
4640: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
4650: 51 4c 49 54 45 5f 55 53 45 52 5f 41 55 54 48 45  QLITE_USER_AUTHE
4660: 4e 54 49 43 41 54 49 4f 4e 0a 20 20 22 55 53 45  NTICATION.  "USE
4670: 52 5f 41 55 54 48 45 4e 54 49 43 41 54 49 4f 4e  R_AUTHENTICATION
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 53 45 5f 41 4c 4c 4f 43 41 0a  LITE_USE_ALLOCA.
46a0: 20 20 22 55 53 45 5f 41 4c 4c 4f 43 41 22 2c 0a    "USE_ALLOCA",.
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 5f 46 43 4e 54 4c 5f 54 52 41 43  E_USE_FCNTL_TRAC
46d0: 45 0a 20 20 22 55 53 45 5f 46 43 4e 54 4c 5f 54  E.  "USE_FCNTL_T
46e0: 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RACE",.#endif.#i
46f0: 66 20 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49  f SQLITE_USE_URI
4700: 0a 20 20 22 55 53 45 5f 55 52 49 22 2c 0a 23 65  .  "USE_URI",.#e
4710: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4720: 56 44 42 45 5f 43 4f 56 45 52 41 47 45 0a 20 20  VDBE_COVERAGE.  
4730: 22 56 44 42 45 5f 43 4f 56 45 52 41 47 45 22 2c  "VDBE_COVERAGE",
4740: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4750: 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 0a  TE_WIN32_MALLOC.
4760: 20 20 22 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 22    "WIN32_MALLOC"
4770: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4780: 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 0a  ITE_ZERO_MALLOC.
4790: 20 20 22 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 22 2c    "ZERO_MALLOC",
47a0: 0a 23 65 6e 64 69 66 0a 2f 2a 20 0a 2a 2a 20 45  .#endif./* .** E
47b0: 4e 44 20 43 4f 44 45 20 47 45 4e 45 52 41 54 45  ND CODE GENERATE
47c0: 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63 74 69 6d  D BY tool/mkctim
47d0: 65 2e 74 63 6c 20 0a 2a 2f 0a 7d 3b 0a 0a 53 51  e.tcl .*/.};..SQ
47e0: 4c 49 54 45 5f 50 52 49 56 41 54 45 20 63 6f 6e  LITE_PRIVATE con
47f0: 73 74 20 63 68 61 72 20 2a 2a 73 71 6c 69 74 65  st char **sqlite
4800: 33 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 28  3CompileOptions(
4810: 69 6e 74 20 2a 70 6e 4f 70 74 29 7b 0a 20 20 2a  int *pnOpt){.  *
4820: 70 6e 4f 70 74 20 3d 20 73 69 7a 65 6f 66 28 73  pnOpt = sizeof(s
4830: 71 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f  qlite3azCompileO
4840: 70 74 29 20 2f 20 73 69 7a 65 6f 66 28 73 71 6c  pt) / sizeof(sql
4850: 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74  ite3azCompileOpt
4860: 5b 30 5d 29 3b 0a 20 20 72 65 74 75 72 6e 20 28  [0]);.  return (
4870: 63 6f 6e 73 74 20 63 68 61 72 2a 2a 29 73 71 6c  const char**)sql
4880: 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74  ite3azCompileOpt
4890: 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 53  ;.}..#endif /* S
48a0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
48b0: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 20 2a  LEOPTION_DIAGS *
48c0: 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /../************
48d0: 2a 2a 20 45 6e 64 20 6f 66 20 63 74 69 6d 65 2e  ** End of ctime.
48e0: 63 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  c **************
48f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4900: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4910: 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */./************
4920: 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65 20 73 71  ** Begin file sq
4930: 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a  liteInt.h ******
4940: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4960: 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65  */./*.** 2001 Se
4970: 70 74 65 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a  ptember 15.**.**
4980: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
4990: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
49a0: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
49b0: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
49c0: 66 0a 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74  f.** a legal not
49d0: 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62  ice, here is a b
49e0: 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20  lessing:.**.**  
49f0: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f    May you do goo
4a00: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a  d and not evil..
4a10: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  **    May you fi
4a20: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
4a30: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
4a40: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
4a50: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  **    May you sh
4a60: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
4a70: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
4a80: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a  an you give..**.
4a90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4aa0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ab0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ac0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ad0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 49 6e 74  *********.** Int
4ae0: 65 72 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 20  ernal interface 
4af0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20  definitions for 
4b00: 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2f 0a 23 69  SQLite..**.*/.#i
4b10: 66 6e 64 65 66 20 53 51 4c 49 54 45 49 4e 54 5f  fndef SQLITEINT_
4b20: 48 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  H.#define SQLITE
4b30: 49 4e 54 5f 48 0a 0a 2f 2a 20 53 70 65 63 69 61  INT_H../* Specia
4b40: 6c 20 43 6f 6d 6d 65 6e 74 73 3a 0a 2a 2a 0a 2a  l Comments:.**.*
4b50: 2a 20 53 6f 6d 65 20 63 6f 6d 6d 65 6e 74 73 20  * Some comments 
4b60: 68 61 76 65 20 73 70 65 63 69 61 6c 20 6d 65 61  have special mea
4b70: 6e 69 6e 67 20 74 6f 20 74 68 65 20 74 6f 6f 6c  ning to the tool
4b80: 73 20 74 68 61 74 20 6d 65 61 73 75 72 65 20 74  s that measure t
4b90: 65 73 74 0a 2a 2a 20 63 6f 76 65 72 61 67 65 3a  est.** coverage:
4ba0: 0a 2a 2a 0a 2a 2a 20 20 20 20 4e 4f 5f 54 45 53  .**.**    NO_TES
4bb0: 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  T               
4bc0: 20 20 20 20 20 20 2d 20 54 68 65 20 62 72 61 6e        - The bran
4bd0: 63 68 65 73 20 6f 6e 20 74 68 69 73 20 6c 69 6e  ches on this lin
4be0: 65 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 20 20 20  e are not.**    
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65                me
4c10: 61 73 75 72 65 64 20 62 79 20 62 72 61 6e 63 68  asured by branch
4c20: 20 63 6f 76 65 72 61 67 65 2e 20 20 54 68 69 73   coverage.  This
4c30: 20 69 73 0a 2a 2a 20 20 20 20 20 20 20 20 20 20   is.**          
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c50: 20 20 20 20 20 20 20 20 75 73 65 64 20 6f 6e 20          used on 
4c60: 6c 69 6e 65 73 20 6f 66 20 63 6f 64 65 20 74 68  lines of code th
4c70: 61 74 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20 20  at actually.**  
4c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 69 6d 70 6c 65 6d 65 6e 74 20 70 61 72 74 73 20  implement parts 
4cb0: 6f 66 20 63 6f 76 65 72 61 67 65 20 74 65 73 74  of coverage test
4cc0: 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50  ing..**.**    OP
4cd0: 54 49 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 54 52  TIMIZATION-IF-TR
4ce0: 55 45 20 20 20 20 20 20 20 20 2d 20 54 68 69 73  UE        - This
4cf0: 20 62 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77   branch is allow
4d00: 65 64 20 74 6f 20 61 6c 77 61 79 20 62 65 20 66  ed to alway be f
4d10: 61 6c 73 65 0a 2a 2a 20 20 20 20 20 20 20 20 20  alse.**         
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d30: 20 20 20 20 20 20 20 20 20 61 6e 64 20 74 68 65           and the
4d40: 20 63 6f 72 72 65 63 74 20 61 6e 73 77 65 72 20   correct answer 
4d50: 69 73 20 73 74 69 6c 6c 20 6f 62 74 61 69 6e 65  is still obtaine
4d60: 64 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20  d,.**           
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d80: 20 20 20 20 20 20 20 74 68 6f 75 67 68 20 70 65         though pe
4d90: 72 68 61 70 73 20 6d 6f 72 65 20 73 6c 6f 77 6c  rhaps more slowl
4da0: 79 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50 54 49  y..**.**    OPTI
4db0: 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 46 41 4c 53  MIZATION-IF-FALS
4dc0: 45 20 20 20 20 20 20 20 2d 20 54 68 69 73 20 62  E       - This b
4dd0: 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65 64  ranch is allowed
4de0: 20 74 6f 20 61 6c 77 61 79 20 62 65 20 74 72 75   to alway be tru
4df0: 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  e.**            
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e10: 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f        and the co
4e20: 72 72 65 63 74 20 61 6e 73 77 65 72 20 69 73 20  rrect answer is 
4e30: 73 74 69 6c 6c 20 6f 62 74 61 69 6e 65 64 2c 0a  still obtained,.
4e40: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  **              
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e60: 20 20 20 20 74 68 6f 75 67 68 20 70 65 72 68 61      though perha
4e70: 70 73 20 6d 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a  ps more slowly..
4e80: 2a 2a 0a 2a 2a 20 20 20 20 50 52 45 56 45 4e 54  **.**    PREVENT
4e90: 53 2d 48 41 52 4d 4c 45 53 53 2d 4f 56 45 52 52  S-HARMLESS-OVERR
4ea0: 45 41 44 20 20 2d 20 54 68 69 73 20 62 72 61 6e  EAD  - This bran
4eb0: 63 68 20 70 72 65 76 65 6e 74 73 20 61 20 62 75  ch prevents a bu
4ec0: 66 66 65 72 20 6f 76 65 72 72 65 61 64 0a 2a 2a  ffer overread.**
4ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20    that would be 
4f00: 68 61 72 6d 6c 65 73 73 20 61 6e 64 20 75 6e 64  harmless and und
4f10: 65 74 65 63 74 61 62 6c 65 0a 2a 2a 20 20 20 20  etectable.**    
4f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4f40: 20 69 74 20 64 69 64 20 6f 63 63 75 72 2e 20 20   it did occur.  
4f50: 0a 2a 2a 0a 2a 2a 20 49 6e 20 61 6c 6c 20 63 61  .**.** In all ca
4f60: 73 65 73 2c 20 74 68 65 20 73 70 65 63 69 61 6c  ses, the special
4f70: 20 63 6f 6d 6d 65 6e 74 20 6d 75 73 74 20 62 65   comment must be
4f80: 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 74 68 65   enclosed in the
4f90: 20 75 73 75 61 6c 0a 2a 2a 20 73 6c 61 73 68 2d   usual.** slash-
4fa0: 61 73 74 65 72 69 73 6b 2e 2e 2e 61 73 74 65 72  asterisk...aster
4fb0: 69 73 6b 2d 73 6c 61 73 68 20 63 6f 6d 6d 65 6e  isk-slash commen
4fc0: 74 20 6d 61 72 6b 73 2c 20 77 69 74 68 20 6e 6f  t marks, with no
4fd0: 20 73 70 61 63 65 73 20 62 65 74 77 65 65 6e 20   spaces between 
4fe0: 74 68 65 20 0a 2a 2a 20 61 73 74 65 72 69 73 6b  the .** asterisk
4ff0: 73 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 65 6e  s and the commen
5000: 74 20 74 65 78 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a  t text..*/../*.*
5010: 2a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20  * Make sure the 
5020: 54 63 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  Tcl calling conv
5030: 65 6e 74 69 6f 6e 20 6d 61 63 72 6f 20 69 73 20  ention macro is 
5040: 64 65 66 69 6e 65 64 2e 20 20 54 68 69 73 20 6d  defined.  This m
5050: 61 63 72 6f 20 69 73 0a 2a 2a 20 6f 6e 6c 79 20  acro is.** only 
5060: 75 73 65 64 20 62 79 20 74 65 73 74 20 63 6f 64  used by test cod
5070: 65 20 61 6e 64 20 54 63 6c 20 69 6e 74 65 67 72  e and Tcl integr
5080: 61 74 69 6f 6e 20 63 6f 64 65 2e 0a 2a 2f 0a 23  ation code..*/.#
5090: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 54 43  ifndef SQLITE_TC
50a0: 4c 41 50 49 0a 23 20 20 64 65 66 69 6e 65 20 53  LAPI.#  define S
50b0: 51 4c 49 54 45 5f 54 43 4c 41 50 49 0a 23 65 6e  QLITE_TCLAPI.#en
50c0: 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75  dif../*.** Inclu
50d0: 64 65 20 74 68 65 20 68 65 61 64 65 72 20 66 69  de the header fi
50e0: 6c 65 20 75 73 65 64 20 74 6f 20 63 75 73 74 6f  le used to custo
50f0: 6d 69 7a 65 20 74 68 65 20 63 6f 6d 70 69 6c 65  mize the compile
5100: 72 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 4d 53  r options for MS
5110: 56 43 2e 0a 2a 2a 20 54 68 69 73 20 73 68 6f 75  VC..** This shou
5120: 6c 64 20 62 65 20 64 6f 6e 65 20 66 69 72 73 74  ld be done first
5130: 20 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20   so that it can 
5140: 73 75 63 63 65 73 73 66 75 6c 6c 79 20 70 72 65  successfully pre
5150: 76 65 6e 74 20 73 70 75 72 69 6f 75 73 0a 2a 2a  vent spurious.**
5160: 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
5170: 67 73 20 64 75 65 20 74 6f 20 73 75 62 73 65 71  gs due to subseq
5180: 75 65 6e 74 20 63 6f 6e 74 65 6e 74 20 69 6e 20  uent content in 
5190: 74 68 69 73 20 66 69 6c 65 20 61 6e 64 20 6f 74  this file and ot
51a0: 68 65 72 20 66 69 6c 65 73 0a 2a 2a 20 74 68 61  her files.** tha
51b0: 74 20 61 72 65 20 69 6e 63 6c 75 64 65 64 20 62  t are included b
51c0: 79 20 74 68 69 73 20 66 69 6c 65 2e 0a 2a 2f 0a  y this file..*/.
51d0: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
51e0: 49 6e 63 6c 75 64 65 20 6d 73 76 63 2e 68 20 69  Include msvc.h i
51f0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
5200: 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a  sqliteInt.h ****
5210: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5220: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5230: 42 65 67 69 6e 20 66 69 6c 65 20 6d 73 76 63 2e  Begin file msvc.
5240: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
5250: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5270: 2f 2a 0a 2a 2a 20 32 30 31 35 20 4a 61 6e 75 61  /*.** 2015 Janua
5280: 72 79 20 31 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ry 12.**.** The 
5290: 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d 73  author disclaims
52a0: 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74 68   copyright to th
52b0: 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20  is source code. 
52c0: 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20   In place of.** 
52d0: 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20  a legal notice, 
52e0: 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73 69  here is a blessi
52f0: 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79  ng:.**.**    May
5300: 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64   you do good and
5310: 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20   not evil..**   
5320: 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66 6f   May you find fo
5330: 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79 6f  rgiveness for yo
5340: 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67 69  urself and forgi
5350: 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20  ve others..**   
5360: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
5370: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
5380: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
5390: 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a  u give..**.*****
53a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20  *********.**.** 
53f0: 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69  This file contai
5400: 6e 73 20 63 6f 64 65 20 74 68 61 74 20 69 73 20  ns code that is 
5410: 73 70 65 63 69 66 69 63 20 74 6f 20 4d 53 56 43  specific to MSVC
5420: 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c  ..*/.#ifndef SQL
5430: 49 54 45 5f 4d 53 56 43 5f 48 0a 23 64 65 66 69  ITE_MSVC_H.#defi
5440: 6e 65 20 53 51 4c 49 54 45 5f 4d 53 56 43 5f 48  ne SQLITE_MSVC_H
5450: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 4d  ..#if defined(_M
5460: 53 43 5f 56 45 52 29 0a 23 70 72 61 67 6d 61 20  SC_VER).#pragma 
5470: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5480: 3a 20 34 30 35 34 29 0a 23 70 72 61 67 6d 61 20  : 4054).#pragma 
5490: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54a0: 3a 20 34 30 35 35 29 0a 23 70 72 61 67 6d 61 20  : 4055).#pragma 
54b0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54c0: 3a 20 34 31 30 30 29 0a 23 70 72 61 67 6d 61 20  : 4100).#pragma 
54d0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54e0: 3a 20 34 31 32 37 29 0a 23 70 72 61 67 6d 61 20  : 4127).#pragma 
54f0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5500: 3a 20 34 31 33 30 29 0a 23 70 72 61 67 6d 61 20  : 4130).#pragma 
5510: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5520: 3a 20 34 31 35 32 29 0a 23 70 72 61 67 6d 61 20  : 4152).#pragma 
5530: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5540: 3a 20 34 31 38 39 29 0a 23 70 72 61 67 6d 61 20  : 4189).#pragma 
5550: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5560: 3a 20 34 32 30 36 29 0a 23 70 72 61 67 6d 61 20  : 4206).#pragma 
5570: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5580: 3a 20 34 32 31 30 29 0a 23 70 72 61 67 6d 61 20  : 4210).#pragma 
5590: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55a0: 3a 20 34 32 33 32 29 0a 23 70 72 61 67 6d 61 20  : 4232).#pragma 
55b0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55c0: 3a 20 34 32 34 34 29 0a 23 70 72 61 67 6d 61 20  : 4244).#pragma 
55d0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55e0: 3a 20 34 33 30 35 29 0a 23 70 72 61 67 6d 61 20  : 4305).#pragma 
55f0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5600: 3a 20 34 33 30 36 29 0a 23 70 72 61 67 6d 61 20  : 4306).#pragma 
5610: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5620: 3a 20 34 37 30 32 29 0a 23 70 72 61 67 6d 61 20  : 4702).#pragma 
5630: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5640: 3a 20 34 37 30 36 29 0a 23 65 6e 64 69 66 20 2f  : 4706).#endif /
5650: 2a 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56  * defined(_MSC_V
5660: 45 52 29 20 2a 2f 0a 0a 23 65 6e 64 69 66 20 2f  ER) */..#endif /
5670: 2a 20 53 51 4c 49 54 45 5f 4d 53 56 43 5f 48 20  * SQLITE_MSVC_H 
5680: 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */../***********
5690: 2a 2a 2a 20 45 6e 64 20 6f 66 20 6d 73 76 63 2e  *** End of msvc.
56a0: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
56b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
56c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
56d0: 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  **/./***********
56e0: 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e 67 20 77  *** Continuing w
56f0: 68 65 72 65 20 77 65 20 6c 65 66 74 20 6f 66 66  here we left off
5700: 20 69 6e 20 73 71 6c 69 74 65 49 6e 74 2e 68 20   in sqliteInt.h 
5710: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5720: 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69  **/../*.** Speci
5730: 61 6c 20 73 65 74 75 70 20 66 6f 72 20 56 78 57  al setup for VxW
5740: 6f 72 6b 73 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  orks.*/./*******
5750: 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20  ******* Include 
5760: 76 78 77 6f 72 6b 73 2e 68 20 69 6e 20 74 68 65  vxworks.h in the
5770: 20 6d 69 64 64 6c 65 20 6f 66 20 73 71 6c 69 74   middle of sqlit
5780: 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  eInt.h *********
5790: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  ******/./*******
57a0: 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69  ******* Begin fi
57b0: 6c 65 20 76 78 77 6f 72 6b 73 2e 68 20 2a 2a 2a  le vxworks.h ***
57c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
57d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
57e0: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30  ******/./*.** 20
57f0: 31 35 2d 30 33 2d 30 32 0a 2a 2a 0a 2a 2a 20 54  15-03-02.**.** T
5800: 68 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61  he author discla
5810: 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f  ims copyright to
5820: 20 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64   this source cod
5830: 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a  e.  In place of.
5840: 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63  ** a legal notic
5850: 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65  e, here is a ble
5860: 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20  ssing:.**.**    
5870: 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20  May you do good 
5880: 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a  and not evil..**
5890: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
58a0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
58b0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
58c0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a  rgive others..**
58d0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72      May you shar
58e0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20  e freely, never 
58f0: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e  taking more than
5900: 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a   you give..**.**
5910: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5920: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5930: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5940: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a  ************.**.
5960: 2a 2a 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  ** This file con
5970: 74 61 69 6e 73 20 63 6f 64 65 20 74 68 61 74 20  tains code that 
5980: 69 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 57  is specific to W
5990: 69 6e 64 20 52 69 76 65 72 27 73 20 56 78 57 6f  ind River's VxWo
59a0: 72 6b 73 0a 2a 2f 0a 23 69 66 20 64 65 66 69 6e  rks.*/.#if defin
59b0: 65 64 28 5f 5f 52 54 50 5f 5f 29 20 7c 7c 20 64  ed(__RTP__) || d
59c0: 65 66 69 6e 65 64 28 5f 57 52 53 5f 4b 45 52 4e  efined(_WRS_KERN
59d0: 45 4c 29 0a 2f 2a 20 54 68 69 73 20 69 73 20 56  EL)./* This is V
59e0: 78 57 6f 72 6b 73 2e 20 20 53 65 74 20 75 70 20  xWorks.  Set up 
59f0: 74 68 69 6e 67 73 20 73 70 65 63 69 61 6c 6c 79  things specially
5a00: 20 66 6f 72 20 74 68 61 74 20 4f 53 0a 2a 2f 0a   for that OS.*/.
5a10: 23 69 6e 63 6c 75 64 65 20 3c 76 78 57 6f 72 6b  #include <vxWork
5a20: 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 70  s.h>.#include <p
5a30: 74 68 72 65 61 64 2e 68 3e 20 20 2f 2a 20 61 6d  thread.h>  /* am
5a40: 61 6c 67 61 6d 61 74 6f 72 3a 20 64 6f 6e 74 63  algamator: dontc
5a50: 61 63 68 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ache */.#define 
5a60: 4f 53 5f 56 58 57 4f 52 4b 53 20 31 0a 23 64 65  OS_VXWORKS 1.#de
5a70: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 53 5f 4f  fine SQLITE_OS_O
5a80: 54 48 45 52 20 30 0a 23 64 65 66 69 6e 65 20 53  THER 0.#define S
5a90: 51 4c 49 54 45 5f 48 4f 4d 45 47 52 4f 57 4e 5f  QLITE_HOMEGROWN_
5aa0: 52 45 43 55 52 53 49 56 45 5f 4d 55 54 45 58 20  RECURSIVE_MUTEX 
5ab0: 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
5ac0: 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  _OMIT_LOAD_EXTEN
5ad0: 53 49 4f 4e 20 31 0a 23 64 65 66 69 6e 65 20 53  SION 1.#define S
5ae0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
5af0: 4b 49 4e 47 5f 53 54 59 4c 45 20 30 0a 23 64 65  KING_STYLE 0.#de
5b00: 66 69 6e 65 20 48 41 56 45 5f 55 54 49 4d 45 20  fine HAVE_UTIME 
5b10: 31 0a 23 65 6c 73 65 0a 2f 2a 20 54 68 69 73 20  1.#else./* This 
5b20: 69 73 20 6e 6f 74 20 56 78 57 6f 72 6b 73 2e 20  is not VxWorks. 
5b30: 2a 2f 0a 23 64 65 66 69 6e 65 20 4f 53 5f 56 58  */.#define OS_VX
5b40: 57 4f 52 4b 53 20 30 0a 23 64 65 66 69 6e 65 20  WORKS 0.#define 
5b50: 48 41 56 45 5f 46 43 48 4f 57 4e 20 31 0a 23 64  HAVE_FCHOWN 1.#d
5b60: 65 66 69 6e 65 20 48 41 56 45 5f 52 45 41 44 4c  efine HAVE_READL
5b70: 49 4e 4b 20 31 0a 23 64 65 66 69 6e 65 20 48 41  INK 1.#define HA
5b80: 56 45 5f 4c 53 54 41 54 20 31 0a 23 65 6e 64 69  VE_LSTAT 1.#endi
5b90: 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 5f 57 52  f /* defined(_WR
5ba0: 53 5f 4b 45 52 4e 45 4c 29 20 2a 2f 0a 0a 2f 2a  S_KERNEL) */../*
5bb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e  ************* En
5bc0: 64 20 6f 66 20 76 78 77 6f 72 6b 73 2e 68 20 2a  d of vxworks.h *
5bd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5be0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5bf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
5c00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f  ************* Co
5c10: 6e 74 69 6e 75 69 6e 67 20 77 68 65 72 65 20 77  ntinuing where w
5c20: 65 20 6c 65 66 74 20 6f 66 66 20 69 6e 20 73 71  e left off in sq
5c30: 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a  liteInt.h ******
5c40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f  ************/../
5c50: 2a 0a 2a 2a 20 54 68 65 73 65 20 23 64 65 66 69  *.** These #defi
5c60: 6e 65 73 20 73 68 6f 75 6c 64 20 65 6e 61 62 6c  nes should enabl
5c70: 65 20 3e 32 47 42 20 66 69 6c 65 20 73 75 70 70  e >2GB file supp
5c80: 6f 72 74 20 6f 6e 20 50 4f 53 49 58 20 69 66 20  ort on POSIX if 
5c90: 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e  the.** underlyin
5ca0: 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  g operating syst
5cb0: 65 6d 20 73 75 70 70 6f 72 74 73 20 69 74 2e 20  em supports it. 
5cc0: 20 49 66 20 74 68 65 20 4f 53 20 6c 61 63 6b 73   If the OS lacks
5cd0: 0a 2a 2a 20 6c 61 72 67 65 20 66 69 6c 65 20 73  .** large file s
5ce0: 75 70 70 6f 72 74 2c 20 6f 72 20 69 66 20 74 68  upport, or if th
5cf0: 65 20 4f 53 20 69 73 20 77 69 6e 64 6f 77 73 2c  e OS is windows,
5d00: 20 74 68 65 73 65 20 73 68 6f 75 6c 64 20 62 65   these should be
5d10: 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 0a 2a 2a 20 54   no-ops..**.** T
5d20: 69 63 6b 65 74 20 23 32 37 33 39 3a 20 20 54 68  icket #2739:  Th
5d30: 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f 53 4f 55  e _LARGEFILE_SOU
5d40: 52 43 45 20 6d 61 63 72 6f 20 6d 75 73 74 20 61  RCE macro must a
5d50: 70 70 65 61 72 20 62 65 66 6f 72 65 20 61 6e 79  ppear before any
5d60: 0a 2a 2a 20 73 79 73 74 65 6d 20 23 69 6e 63 6c  .** system #incl
5d70: 75 64 65 73 2e 20 20 48 65 6e 63 65 2c 20 74 68  udes.  Hence, th
5d80: 69 73 20 62 6c 6f 63 6b 20 6f 66 20 63 6f 64 65  is block of code
5d90: 20 6d 75 73 74 20 62 65 20 74 68 65 20 76 65 72   must be the ver
5da0: 79 20 66 69 72 73 74 0a 2a 2a 20 63 6f 64 65 20  y first.** code 
5db0: 69 6e 20 61 6c 6c 20 73 6f 75 72 63 65 20 66 69  in all source fi
5dc0: 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 4c 61 72 67 65  les..**.** Large
5dd0: 20 66 69 6c 65 20 73 75 70 70 6f 72 74 20 63 61   file support ca
5de0: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 75 73  n be disabled us
5df0: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
5e00: 5f 44 49 53 41 42 4c 45 5f 4c 46 53 20 73 77 69  _DISABLE_LFS swi
5e10: 74 63 68 0a 2a 2a 20 6f 6e 20 74 68 65 20 63 6f  tch.** on the co
5e20: 6d 70 69 6c 65 72 20 63 6f 6d 6d 61 6e 64 20 6c  mpiler command l
5e30: 69 6e 65 2e 20 20 54 68 69 73 20 69 73 20 6e 65  ine.  This is ne
5e40: 63 65 73 73 61 72 79 20 69 66 20 79 6f 75 20 61  cessary if you a
5e50: 72 65 20 63 6f 6d 70 69 6c 69 6e 67 0a 2a 2a 20  re compiling.** 
5e60: 6f 6e 20 61 20 72 65 63 65 6e 74 20 6d 61 63 68  on a recent mach
5e70: 69 6e 65 20 28 65 78 3a 20 52 65 64 20 48 61 74  ine (ex: Red Hat
5e80: 20 37 2e 32 29 20 62 75 74 20 79 6f 75 20 77 61   7.2) but you wa
5e90: 6e 74 20 79 6f 75 72 20 63 6f 64 65 20 74 6f 20  nt your code to 
5ea0: 77 6f 72 6b 0a 2a 2a 20 6f 6e 20 61 6e 20 6f 6c  work.** on an ol
5eb0: 64 65 72 20 6d 61 63 68 69 6e 65 20 28 65 78 3a  der machine (ex:
5ec0: 20 52 65 64 20 48 61 74 20 36 2e 30 29 2e 20 20   Red Hat 6.0).  
5ed0: 49 66 20 79 6f 75 20 63 6f 6d 70 69 6c 65 20 6f  If you compile o
5ee0: 6e 20 52 65 64 20 48 61 74 20 37 2e 32 0a 2a 2a  n Red Hat 7.2.**
5ef0: 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   without this op
5f00: 74 69 6f 6e 2c 20 4c 46 53 20 69 73 20 65 6e 61  tion, LFS is ena
5f10: 62 6c 65 2e 20 20 42 75 74 20 4c 46 53 20 64 6f  ble.  But LFS do
5f20: 65 73 20 6e 6f 74 20 65 78 69 73 74 20 69 6e 20  es not exist in 
5f30: 74 68 65 20 6b 65 72 6e 65 6c 0a 2a 2a 20 69 6e  the kernel.** in
5f40: 20 52 65 64 20 48 61 74 20 36 2e 30 2c 20 73 6f   Red Hat 6.0, so
5f50: 20 74 68 65 20 63 6f 64 65 20 77 6f 6e 27 74 20   the code won't 
5f60: 77 6f 72 6b 2e 20 20 48 65 6e 63 65 2c 20 66 6f  work.  Hence, fo
5f70: 72 20 6d 61 78 69 6d 75 6d 20 62 69 6e 61 72 79  r maximum binary
5f80: 0a 2a 2a 20 70 6f 72 74 61 62 69 6c 69 74 79 20  .** portability 
5f90: 79 6f 75 20 73 68 6f 75 6c 64 20 6f 6d 69 74 20  you should omit 
5fa0: 4c 46 53 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70  LFS..**.** The p
5fb0: 72 65 76 69 6f 75 73 20 70 61 72 61 67 72 61 70  revious paragrap
5fc0: 68 20 77 61 73 20 77 72 69 74 74 65 6e 20 69 6e  h was written in
5fd0: 20 32 30 30 35 2e 20 20 28 54 68 69 73 20 70 61   2005.  (This pa
5fe0: 72 61 67 72 61 70 68 20 69 73 20 77 72 69 74 74  ragraph is writt
5ff0: 65 6e 0a 2a 2a 20 6f 6e 20 32 30 30 38 2d 31 31  en.** on 2008-11
6000: 2d 32 38 2e 29 20 54 68 65 73 65 20 64 61 79 73  -28.) These days
6010: 2c 20 61 6c 6c 20 4c 69 6e 75 78 20 6b 65 72 6e  , all Linux kern
6020: 65 6c 73 20 73 75 70 70 6f 72 74 20 6c 61 72 67  els support larg
6030: 65 20 66 69 6c 65 73 2c 20 73 6f 0a 2a 2a 20 79  e files, so.** y
6040: 6f 75 20 73 68 6f 75 6c 64 20 70 72 6f 62 61 62  ou should probab
6050: 6c 79 20 6c 65 61 76 65 20 4c 46 53 20 65 6e 61  ly leave LFS ena
6060: 62 6c 65 64 2e 20 20 42 75 74 20 73 6f 6d 65 20  bled.  But some 
6070: 65 6d 62 65 64 64 65 64 20 70 6c 61 74 66 6f 72  embedded platfor
6080: 6d 73 20 6d 69 67 68 74 0a 2a 2a 20 6c 61 63 6b  ms might.** lack
6090: 20 4c 46 53 20 69 6e 20 77 68 69 63 68 20 63 61   LFS in which ca
60a0: 73 65 20 74 68 65 20 53 51 4c 49 54 45 5f 44 49  se the SQLITE_DI
60b0: 53 41 42 4c 45 5f 4c 46 53 20 6d 61 63 72 6f 20  SABLE_LFS macro 
60c0: 6d 69 67 68 74 20 73 74 69 6c 6c 20 62 65 20 75  might still be u
60d0: 73 65 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 53 69 6d  seful..**.** Sim
60e0: 69 6c 61 72 20 69 73 20 74 72 75 65 20 66 6f 72  ilar is true for
60f0: 20 4d 61 63 20 4f 53 20 58 2e 20 20 4c 46 53 20   Mac OS X.  LFS 
6100: 69 73 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65  is only supporte
6110: 64 20 6f 6e 20 4d 61 63 20 4f 53 20 58 20 39 20  d on Mac OS X 9 
6120: 61 6e 64 20 6c 61 74 65 72 2e 0a 2a 2f 0a 23 69  and later..*/.#i
6130: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 44 49 53  fndef SQLITE_DIS
6140: 41 42 4c 45 5f 4c 46 53 0a 23 20 64 65 66 69 6e  ABLE_LFS.# defin
6150: 65 20 5f 4c 41 52 47 45 5f 46 49 4c 45 20 20 20  e _LARGE_FILE   
6160: 20 20 20 20 31 0a 23 20 69 66 6e 64 65 66 20 5f      1.# ifndef _
6170: 46 49 4c 45 5f 4f 46 46 53 45 54 5f 42 49 54 53  FILE_OFFSET_BITS
6180: 0a 23 20 20 20 64 65 66 69 6e 65 20 5f 46 49 4c  .#   define _FIL
6190: 45 5f 4f 46 46 53 45 54 5f 42 49 54 53 20 36 34  E_OFFSET_BITS 64
61a0: 0a 23 20 65 6e 64 69 66 0a 23 20 64 65 66 69 6e  .# endif.# defin
61b0: 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f 53 4f 55  e _LARGEFILE_SOU
61c0: 52 43 45 20 31 0a 23 65 6e 64 69 66 0a 0a 2f 2a  RCE 1.#endif../*
61d0: 20 54 68 65 20 47 43 43 5f 56 45 52 53 49 4f 4e   The GCC_VERSION
61e0: 20 61 6e 64 20 4d 53 56 43 5f 56 45 52 53 49 4f   and MSVC_VERSIO
61f0: 4e 20 6d 61 63 72 6f 73 20 61 72 65 20 75 73 65  N macros are use
6200: 64 20 74 6f 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f  d to.** conditio
6210: 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65 20 6f 70  nally include op
6220: 74 69 6d 69 7a 61 74 69 6f 6e 73 20 66 6f 72 20  timizations for 
6230: 65 61 63 68 20 6f 66 20 74 68 65 73 65 20 63 6f  each of these co
6240: 6d 70 69 6c 65 72 73 2e 20 20 41 0a 2a 2a 20 76  mpilers.  A.** v
6250: 61 6c 75 65 20 6f 66 20 30 20 6d 65 61 6e 73 20  alue of 0 means 
6260: 74 68 61 74 20 63 6f 6d 70 69 6c 65 72 20 69 73  that compiler is
6270: 20 6e 6f 74 20 62 65 69 6e 67 20 75 73 65 64 2e   not being used.
6280: 20 20 54 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f    The.** SQLITE_
6290: 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49  DISABLE_INTRINSI
62a0: 43 20 6d 61 63 72 6f 20 6d 65 61 6e 73 20 64 6f  C macro means do
62b0: 20 6e 6f 74 20 75 73 65 20 61 6e 79 20 63 6f 6d   not use any com
62c0: 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 0a 2a  piler-specific.*
62d0: 2a 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2c  * optimizations,
62e0: 20 61 6e 64 20 68 65 6e 63 65 20 73 65 74 20 61   and hence set a
62f0: 6c 6c 20 63 6f 6d 70 69 6c 65 72 20 6d 61 63 72  ll compiler macr
6300: 6f 73 20 74 6f 20 30 0a 2a 2a 0a 2a 2a 20 54 68  os to 0.**.** Th
6310: 65 72 65 20 77 61 73 20 6f 6e 63 65 20 61 6c 73  ere was once als
6320: 6f 20 61 20 43 4c 41 4e 47 5f 56 45 52 53 49 4f  o a CLANG_VERSIO
6330: 4e 20 6d 61 63 72 6f 2e 20 20 48 6f 77 65 76 65  N macro.  Howeve
6340: 72 2c 20 77 65 20 6c 65 61 72 6e 20 74 68 61 74  r, we learn that
6350: 20 74 68 65 0a 2a 2a 20 76 65 72 73 69 6f 6e 20   the.** version 
6360: 6e 75 6d 62 65 72 73 20 69 6e 20 63 6c 61 6e 67  numbers in clang
6370: 20 61 72 65 20 66 6f 72 20 22 6d 61 72 6b 65 74   are for "market
6380: 69 6e 67 22 20 6f 6e 6c 79 20 61 6e 64 20 61 72  ing" only and ar
6390: 65 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 0a 2a  e inconsistent.*
63a0: 2a 20 61 6e 64 20 75 6e 72 65 6c 69 61 62 6c 65  * and unreliable
63b0: 2e 20 20 46 6f 72 74 75 6e 61 74 65 6c 79 2c 20  .  Fortunately, 
63c0: 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  all versions of 
63d0: 63 6c 61 6e 67 20 61 6c 73 6f 20 72 65 63 6f 67  clang also recog
63e0: 6e 69 7a 65 20 74 68 65 0a 2a 2a 20 67 63 63 20  nize the.** gcc 
63f0: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 20  version numbers 
6400: 61 6e 64 20 68 61 76 65 20 72 65 61 73 6f 6e 61  and have reasona
6410: 62 6c 65 20 73 65 74 74 69 6e 67 73 20 66 6f 72  ble settings for
6420: 20 67 63 63 20 76 65 72 73 69 6f 6e 20 6e 75 6d   gcc version num
6430: 62 65 72 73 2c 0a 2a 2a 20 73 6f 20 74 68 65 20  bers,.** so the 
6440: 47 43 43 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72  GCC_VERSION macr
6450: 6f 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f  o will be set to
6460: 20 61 20 63 6f 72 72 65 63 74 20 6e 6f 6e 2d 7a   a correct non-z
6470: 65 72 6f 20 76 61 6c 75 65 20 65 76 65 6e 0a 2a  ero value even.*
6480: 2a 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67  * when compiling
6490: 20 77 69 74 68 20 63 6c 61 6e 67 2e 0a 2a 2f 0a   with clang..*/.
64a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e  #if defined(__GN
64b0: 55 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  UC__) && !define
64c0: 64 28 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  d(SQLITE_DISABLE
64d0: 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23 20 64 65  _INTRINSIC).# de
64e0: 66 69 6e 65 20 47 43 43 5f 56 45 52 53 49 4f 4e  fine GCC_VERSION
64f0: 20 28 5f 5f 47 4e 55 43 5f 5f 2a 31 30 30 30 30   (__GNUC__*10000
6500: 30 30 2b 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f  00+__GNUC_MINOR_
6510: 5f 2a 31 30 30 30 2b 5f 5f 47 4e 55 43 5f 50 41  _*1000+__GNUC_PA
6520: 54 43 48 4c 45 56 45 4c 5f 5f 29 0a 23 65 6c 73  TCHLEVEL__).#els
6530: 65 0a 23 20 64 65 66 69 6e 65 20 47 43 43 5f 56  e.# define GCC_V
6540: 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64 69 66 0a  ERSION 0.#endif.
6550: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  #if defined(_MSC
6560: 5f 56 45 52 29 20 26 26 20 21 64 65 66 69 6e 65  _VER) && !define
6570: 64 28 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  d(SQLITE_DISABLE
6580: 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23 20 64 65  _INTRINSIC).# de
6590: 66 69 6e 65 20 4d 53 56 43 5f 56 45 52 53 49 4f  fine MSVC_VERSIO
65a0: 4e 20 5f 4d 53 43 5f 56 45 52 0a 23 65 6c 73 65  N _MSC_VER.#else
65b0: 0a 23 20 64 65 66 69 6e 65 20 4d 53 56 43 5f 56  .# define MSVC_V
65c0: 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64 69 66 0a  ERSION 0.#endif.
65d0: 0a 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 76  ./* Needed for v
65e0: 61 72 69 6f 75 73 20 64 65 66 69 6e 69 74 69 6f  arious definitio
65f0: 6e 73 2e 2e 2e 20 2a 2f 0a 23 69 66 20 64 65 66  ns... */.#if def
6600: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26  ined(__GNUC__) &
6610: 26 20 21 64 65 66 69 6e 65 64 28 5f 47 4e 55 5f  & !defined(_GNU_
6620: 53 4f 55 52 43 45 29 0a 23 20 64 65 66 69 6e 65  SOURCE).# define
6630: 20 5f 47 4e 55 5f 53 4f 55 52 43 45 0a 23 65 6e   _GNU_SOURCE.#en
6640: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
6650: 28 5f 5f 4f 70 65 6e 42 53 44 5f 5f 29 20 26 26  (__OpenBSD__) &&
6660: 20 21 64 65 66 69 6e 65 64 28 5f 42 53 44 5f 53   !defined(_BSD_S
6670: 4f 55 52 43 45 29 0a 23 20 64 65 66 69 6e 65 20  OURCE).# define 
6680: 5f 42 53 44 5f 53 4f 55 52 43 45 0a 23 65 6e 64  _BSD_SOURCE.#end
6690: 69 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69  if../*.** For Mi
66a0: 6e 47 57 2c 20 63 68 65 63 6b 20 74 6f 20 73 65  nGW, check to se
66b0: 65 20 69 66 20 77 65 20 63 61 6e 20 69 6e 63 6c  e if we can incl
66c0: 75 64 65 20 74 68 65 20 68 65 61 64 65 72 20 66  ude the header f
66d0: 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  ile containing i
66e0: 74 73 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 69 6e  ts.** version in
66f0: 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6d 6f 6e 67  formation, among
6700: 20 6f 74 68 65 72 20 74 68 69 6e 67 73 2e 20 20   other things.  
6710: 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 69 73 20 69  Normally, this i
6720: 6e 74 65 72 6e 61 6c 20 4d 69 6e 47 57 0a 2a 2a  nternal MinGW.**
6730: 20 68 65 61 64 65 72 20 66 69 6c 65 20 77 6f 75   header file wou
6740: 6c 64 20 5b 6f 6e 6c 79 5d 20 62 65 20 69 6e 63  ld [only] be inc
6750: 6c 75 64 65 64 20 61 75 74 6f 6d 61 74 69 63 61  luded automatica
6760: 6c 6c 79 20 62 79 20 6f 74 68 65 72 20 4d 69 6e  lly by other Min
6770: 47 57 20 68 65 61 64 65 72 0a 2a 2a 20 66 69 6c  GW header.** fil
6780: 65 73 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 65  es; however, the
6790: 20 63 6f 6e 74 61 69 6e 65 64 20 76 65 72 73 69   contained versi
67a0: 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  on information i
67b0: 73 20 6e 6f 77 20 72 65 71 75 69 72 65 64 20 62  s now required b
67c0: 79 20 74 68 69 73 0a 2a 2a 20 68 65 61 64 65 72  y this.** header
67d0: 20 66 69 6c 65 20 74 6f 20 77 6f 72 6b 20 61 72   file to work ar
67e0: 6f 75 6e 64 20 62 69 6e 61 72 79 20 63 6f 6d 70  ound binary comp
67f0: 61 74 69 62 69 6c 69 74 79 20 69 73 73 75 65 73  atibility issues
6800: 20 28 73 65 65 20 62 65 6c 6f 77 29 20 61 6e 64   (see below) and
6810: 0a 2a 2a 20 74 68 69 73 20 69 73 20 74 68 65 20  .** this is the 
6820: 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 77 61 79 20 74  only known way t
6830: 6f 20 72 65 6c 69 61 62 6c 79 20 6f 62 74 61 69  o reliably obtai
6840: 6e 20 69 74 2e 20 20 54 68 69 73 20 65 6e 74 69  n it.  This enti
6850: 72 65 20 23 69 66 20 62 6c 6f 63 6b 0a 2a 2a 20  re #if block.** 
6860: 77 6f 75 6c 64 20 62 65 20 63 6f 6d 70 6c 65 74  would be complet
6870: 65 6c 79 20 75 6e 6e 65 63 65 73 73 61 72 79 20  ely unnecessary 
6880: 69 66 20 74 68 65 72 65 20 77 61 73 20 61 6e 79  if there was any
6890: 20 6f 74 68 65 72 20 77 61 79 20 6f 66 20 64 65   other way of de
68a0: 74 65 63 74 69 6e 67 0a 2a 2a 20 4d 69 6e 47 57  tecting.** MinGW
68b0: 20 76 69 61 20 74 68 65 69 72 20 70 72 65 70 72   via their prepr
68c0: 6f 63 65 73 73 6f 72 20 28 65 2e 67 2e 20 69 66  ocessor (e.g. if
68d0: 20 74 68 65 79 20 63 75 73 74 6f 6d 69 7a 65 64   they customized
68e0: 20 74 68 65 69 72 20 47 43 43 20 74 6f 20 64 65   their GCC to de
68f0: 66 69 6e 65 0a 2a 2a 20 73 6f 6d 65 20 4d 69 6e  fine.** some Min
6900: 47 57 2d 73 70 65 63 69 66 69 63 20 6d 61 63 72  GW-specific macr
6910: 6f 73 29 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69  os).  When compi
6920: 6c 69 6e 67 20 66 6f 72 20 4d 69 6e 47 57 2c 20  ling for MinGW, 
6930: 65 69 74 68 65 72 20 74 68 65 0a 2a 2a 20 5f 48  either the.** _H
6940: 41 56 45 5f 4d 49 4e 47 57 5f 48 20 6f 72 20 5f  AVE_MINGW_H or _
6950: 48 41 56 45 5f 5f 4d 49 4e 47 57 5f 48 20 28 6e  HAVE__MINGW_H (n
6960: 6f 74 65 20 74 68 65 20 65 78 74 72 61 20 75 6e  ote the extra un
6970: 64 65 72 73 63 6f 72 65 29 20 6d 61 63 72 6f 20  derscore) macro 
6980: 6d 75 73 74 20 62 65 0a 2a 2a 20 64 65 66 69 6e  must be.** defin
6990: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 64  ed; otherwise, d
69a0: 65 74 65 63 74 69 6f 6e 20 6f 66 20 63 6f 6e 64  etection of cond
69b0: 69 74 69 6f 6e 73 20 73 70 65 63 69 66 69 63 20  itions specific 
69c0: 74 6f 20 4d 69 6e 47 57 20 77 69 6c 6c 20 62 65  to MinGW will be
69d0: 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2f  .** disabled..*/
69e0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 48 41  .#if defined(_HA
69f0: 56 45 5f 4d 49 4e 47 57 5f 48 29 0a 23 20 69 6e  VE_MINGW_H).# in
6a00: 63 6c 75 64 65 20 22 6d 69 6e 67 77 2e 68 22 0a  clude "mingw.h".
6a10: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 48  #elif defined(_H
6a20: 41 56 45 5f 5f 4d 49 4e 47 57 5f 48 29 0a 23 20  AVE__MINGW_H).# 
6a30: 69 6e 63 6c 75 64 65 20 22 5f 6d 69 6e 67 77 2e  include "_mingw.
6a40: 68 22 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a  h".#endif../*.**
6a50: 20 46 6f 72 20 4d 69 6e 47 57 20 76 65 72 73 69   For MinGW versi
6a60: 6f 6e 20 34 2e 78 20 28 61 6e 64 20 68 69 67 68  on 4.x (and high
6a70: 65 72 29 2c 20 63 68 65 63 6b 20 74 6f 20 73 65  er), check to se
6a80: 65 20 69 66 20 74 68 65 20 5f 55 53 45 5f 33 32  e if the _USE_32
6a90: 42 49 54 5f 54 49 4d 45 5f 54 0a 2a 2a 20 64 65  BIT_TIME_T.** de
6aa0: 66 69 6e 65 20 69 73 20 72 65 71 75 69 72 65 64  fine is required
6ab0: 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 62 69 6e   to maintain bin
6ac0: 61 72 79 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ary compatibilit
6ad0: 79 20 77 69 74 68 20 74 68 65 20 4d 53 56 43 20  y with the MSVC 
6ae0: 72 75 6e 74 69 6d 65 0a 2a 2a 20 6c 69 62 72 61  runtime.** libra
6af0: 72 79 20 69 6e 20 75 73 65 20 28 65 2e 67 2e 20  ry in use (e.g. 
6b00: 66 6f 72 20 57 69 6e 64 6f 77 73 20 58 50 29 2e  for Windows XP).
6b10: 0a 2a 2f 0a 23 69 66 20 21 64 65 66 69 6e 65 64  .*/.#if !defined
6b20: 28 5f 55 53 45 5f 33 32 42 49 54 5f 54 49 4d 45  (_USE_32BIT_TIME
6b30: 5f 54 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  _T) && !defined(
6b40: 5f 55 53 45 5f 36 34 42 49 54 5f 54 49 4d 45 5f  _USE_64BIT_TIME_
6b50: 54 29 20 26 26 20 5c 0a 20 20 20 20 64 65 66 69  T) && \.    defi
6b60: 6e 65 64 28 5f 57 49 4e 33 32 29 20 26 26 20 21  ned(_WIN32) && !
6b70: 64 65 66 69 6e 65 64 28 5f 57 49 4e 36 34 29 20  defined(_WIN64) 
6b80: 26 26 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64  && \.    defined
6b90: 28 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f 52 5f 56  (__MINGW_MAJOR_V
6ba0: 45 52 53 49 4f 4e 29 20 26 26 20 5f 5f 4d 49 4e  ERSION) && __MIN
6bb0: 47 57 5f 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e  GW_MAJOR_VERSION
6bc0: 20 3e 3d 20 34 20 26 26 20 5c 0a 20 20 20 20 64   >= 4 && \.    d
6bd0: 65 66 69 6e 65 64 28 5f 5f 4d 53 56 43 52 54 5f  efined(__MSVCRT_
6be0: 5f 29 0a 23 20 64 65 66 69 6e 65 20 5f 55 53 45  _).# define _USE
6bf0: 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54 0a 23 65  _32BIT_TIME_T.#e
6c00: 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20 70 75 62  ndif../* The pub
6c10: 6c 69 63 20 53 51 4c 69 74 65 20 69 6e 74 65 72  lic SQLite inter
6c20: 66 61 63 65 2e 20 20 54 68 65 20 5f 46 49 4c 45  face.  The _FILE
6c30: 5f 4f 46 46 53 45 54 5f 42 49 54 53 20 6d 61 63  _OFFSET_BITS mac
6c40: 72 6f 20 6d 75 73 74 20 61 70 70 65 61 72 0a 2a  ro must appear.*
6c50: 2a 20 66 69 72 73 74 20 69 6e 20 51 4e 58 2e 20  * first in QNX. 
6c60: 20 41 6c 73 6f 2c 20 74 68 65 20 5f 55 53 45 5f   Also, the _USE_
6c70: 33 32 42 49 54 5f 54 49 4d 45 5f 54 20 6d 61 63  32BIT_TIME_T mac
6c80: 72 6f 20 6d 75 73 74 20 61 70 70 65 61 72 20 66  ro must appear f
6c90: 69 72 73 74 20 66 6f 72 0a 2a 2a 20 4d 69 6e 47  irst for.** MinG
6ca0: 57 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  W..*/./*********
6cb0: 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20 73 71  ***** Include sq
6cc0: 6c 69 74 65 33 2e 68 20 69 6e 20 74 68 65 20 6d  lite3.h in the m
6cd0: 69 64 64 6c 65 20 6f 66 20 73 71 6c 69 74 65 49  iddle of sqliteI
6ce0: 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  nt.h ***********
6cf0: 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****/./*********
6d00: 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65  ***** Begin file
6d10: 20 73 71 6c 69 74 65 33 2e 68 20 2a 2a 2a 2a 2a   sqlite3.h *****
6d20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6d30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6d40: 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31  ****/./*.** 2001
6d50: 2d 30 39 2d 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65  -09-15.**.** The
6d60: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
6d70: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
6d80: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
6d90: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
6da0: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
6db0: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
6dc0: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
6dd0: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
6de0: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
6df0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
6e00: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
6e10: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
6e20: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
6e30: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
6e40: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
6e50: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
6e60: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
6e70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6e80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6e90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6ea0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6eb0: 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68 65  *****.** This he
6ec0: 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e 65  ader file define
6ed0: 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20  s the interface 
6ee0: 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  that the SQLite 
6ef0: 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72 65 73 65  library.** prese
6f00: 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74 20 70 72  nts to client pr
6f10: 6f 67 72 61 6d 73 2e 20 20 49 66 20 61 20 43 2d  ograms.  If a C-
6f20: 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 75 63 74  function, struct
6f30: 75 72 65 2c 20 64 61 74 61 74 79 70 65 2c 0a 2a  ure, datatype,.*
6f40: 2a 20 6f 72 20 63 6f 6e 73 74 61 6e 74 20 64 65  * or constant de
6f50: 66 69 6e 69 74 69 6f 6e 20 64 6f 65 73 20 6e 6f  finition does no
6f60: 74 20 61 70 70 65 61 72 20 69 6e 20 74 68 69 73  t appear in this
6f70: 20 66 69 6c 65 2c 20 74 68 65 6e 20 69 74 20 69   file, then it i
6f80: 73 0a 2a 2a 20 6e 6f 74 20 61 20 70 75 62 6c 69  s.** not a publi
6f90: 73 68 65 64 20 41 50 49 20 6f 66 20 53 51 4c 69  shed API of SQLi
6fa0: 74 65 2c 20 69 73 20 73 75 62 6a 65 63 74 20 74  te, is subject t
6fb0: 6f 20 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74  o change without
6fc0: 0a 2a 2a 20 6e 6f 74 69 63 65 2c 20 61 6e 64 20  .** notice, and 
6fd0: 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 72 65  should not be re
6fe0: 66 65 72 65 6e 63 65 64 20 62 79 20 70 72 6f 67  ferenced by prog
6ff0: 72 61 6d 73 20 74 68 61 74 20 75 73 65 20 53 51  rams that use SQ
7000: 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65  Lite..**.** Some
7010: 20 6f 66 20 74 68 65 20 64 65 66 69 6e 69 74 69   of the definiti
7020: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 69 6e 20  ons that are in 
7030: 74 68 69 73 20 66 69 6c 65 20 61 72 65 20 6d 61  this file are ma
7040: 72 6b 65 64 20 61 73 0a 2a 2a 20 22 65 78 70 65  rked as.** "expe
7050: 72 69 6d 65 6e 74 61 6c 22 2e 20 20 45 78 70 65  rimental".  Expe
7060: 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72 66 61  rimental interfa
7070: 63 65 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79  ces are normally
7080: 20 6e 65 77 0a 2a 2a 20 66 65 61 74 75 72 65 73   new.** features
7090: 20 72 65 63 65 6e 74 6c 79 20 61 64 64 65 64 20   recently added 
70a0: 74 6f 20 53 51 4c 69 74 65 2e 20 20 57 65 20 64  to SQLite.  We d
70b0: 6f 20 6e 6f 74 20 61 6e 74 69 63 69 70 61 74 65  o not anticipate
70c0: 20 63 68 61 6e 67 65 73 0a 2a 2a 20 74 6f 20 65   changes.** to e
70d0: 78 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65  xperimental inte
70e0: 72 66 61 63 65 73 20 62 75 74 20 72 65 73 65 72  rfaces but reser
70f0: 76 65 20 74 68 65 20 72 69 67 68 74 20 74 6f 20  ve the right to 
7100: 6d 61 6b 65 20 6d 69 6e 6f 72 20 63 68 61 6e 67  make minor chang
7110: 65 73 0a 2a 2a 20 69 66 20 65 78 70 65 72 69 65  es.** if experie
7120: 6e 63 65 20 66 72 6f 6d 20 75 73 65 20 22 69 6e  nce from use "in
7130: 20 74 68 65 20 77 69 6c 64 22 20 73 75 67 67 65   the wild" sugge
7140: 73 74 20 73 75 63 68 20 63 68 61 6e 67 65 73 20  st such changes 
7150: 61 72 65 20 70 72 75 64 65 6e 74 2e 0a 2a 2a 0a  are prudent..**.
7160: 2a 2a 20 54 68 65 20 6f 66 66 69 63 69 61 6c 20  ** The official 
7170: 43 2d 6c 61 6e 67 75 61 67 65 20 41 50 49 20 64  C-language API d
7180: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
7190: 20 53 51 4c 69 74 65 20 69 73 20 64 65 72 69 76   SQLite is deriv
71a0: 65 64 0a 2a 2a 20 66 72 6f 6d 20 63 6f 6d 6d 65  ed.** from comme
71b0: 6e 74 73 20 69 6e 20 74 68 69 73 20 66 69 6c 65  nts in this file
71c0: 2e 20 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  .  This file is 
71d0: 74 68 65 20 61 75 74 68 6f 72 69 74 61 74 69 76  the authoritativ
71e0: 65 20 73 6f 75 72 63 65 0a 2a 2a 20 6f 6e 20 68  e source.** on h
71f0: 6f 77 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  ow SQLite interf
7200: 61 63 65 73 20 61 72 65 20 73 75 70 70 6f 73 65  aces are suppose
7210: 64 20 74 6f 20 6f 70 65 72 61 74 65 2e 0a 2a 2a  d to operate..**
7220: 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  .** The name of 
7230: 74 68 69 73 20 66 69 6c 65 20 75 6e 64 65 72 20  this file under 
7240: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 61  configuration ma
7250: 6e 61 67 65 6d 65 6e 74 20 69 73 20 22 73 71 6c  nagement is "sql
7260: 69 74 65 2e 68 2e 69 6e 22 2e 0a 2a 2a 20 54 68  ite.h.in"..** Th
7270: 65 20 6d 61 6b 65 66 69 6c 65 20 6d 61 6b 65 73  e makefile makes
7280: 20 73 6f 6d 65 20 6d 69 6e 6f 72 20 63 68 61 6e   some minor chan
7290: 67 65 73 20 74 6f 20 74 68 69 73 20 66 69 6c 65  ges to this file
72a0: 20 28 73 75 63 68 20 61 73 20 69 6e 73 65 72 74   (such as insert
72b0: 69 6e 67 0a 2a 2a 20 74 68 65 20 76 65 72 73 69  ing.** the versi
72c0: 6f 6e 20 6e 75 6d 62 65 72 29 20 61 6e 64 20 63  on number) and c
72d0: 68 61 6e 67 65 73 20 69 74 73 20 6e 61 6d 65 20  hanges its name 
72e0: 74 6f 20 22 73 71 6c 69 74 65 33 2e 68 22 20 61  to "sqlite3.h" a
72f0: 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20 74 68 65  s.** part of the
7300: 20 62 75 69 6c 64 20 70 72 6f 63 65 73 73 2e 0a   build process..
7310: 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54  */.#ifndef SQLIT
7320: 45 33 5f 48 0a 23 64 65 66 69 6e 65 20 53 51 4c  E3_H.#define SQL
7330: 49 54 45 33 5f 48 0a 23 69 6e 63 6c 75 64 65 20  ITE3_H.#include 
7340: 3c 73 74 64 61 72 67 2e 68 3e 20 20 20 20 20 2f  <stdarg.h>     /
7350: 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 74 68 65  * Needed for the
7360: 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 76   definition of v
7370: 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a 2a  a_list */../*.**
7380: 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 63 61   Make sure we ca
7390: 6e 20 63 61 6c 6c 20 74 68 69 73 20 73 74 75 66  n call this stuf
73a0: 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a 23  f from C++..*/.#
73b0: 69 66 20 30 0a 65 78 74 65 72 6e 20 22 43 22 20  if 0.extern "C" 
73c0: 7b 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 2a 2a  {.#endif.../*.**
73d0: 20 50 72 6f 76 69 64 65 20 74 68 65 20 61 62 69   Provide the abi
73e0: 6c 69 74 79 20 74 6f 20 6f 76 65 72 72 69 64 65  lity to override
73f0: 20 6c 69 6e 6b 61 67 65 20 66 65 61 74 75 72 65   linkage feature
7400: 73 20 6f 66 20 74 68 65 20 69 6e 74 65 72 66 61  s of the interfa
7410: 63 65 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53  ce..*/.#ifndef S
7420: 51 4c 49 54 45 5f 45 58 54 45 52 4e 0a 23 20 64  QLITE_EXTERN.# d
7430: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 58 54  efine SQLITE_EXT
7440: 45 52 4e 20 65 78 74 65 72 6e 0a 23 65 6e 64 69  ERN extern.#endi
7450: 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45  f.#ifndef SQLITE
7460: 5f 41 50 49 0a 23 20 64 65 66 69 6e 65 20 53 51  _API.# define SQ
7470: 4c 49 54 45 5f 41 50 49 0a 23 65 6e 64 69 66 0a  LITE_API.#endif.
7480: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 43  #ifndef SQLITE_C
7490: 44 45 43 4c 0a 23 20 64 65 66 69 6e 65 20 53 51  DECL.# define SQ
74a0: 4c 49 54 45 5f 43 44 45 43 4c 0a 23 65 6e 64 69  LITE_CDECL.#endi
74b0: 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45  f.#ifndef SQLITE
74c0: 5f 41 50 49 43 41 4c 4c 0a 23 20 64 65 66 69 6e  _APICALL.# defin
74d0: 65 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c  e SQLITE_APICALL
74e0: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
74f0: 53 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 0a 23  SQLITE_STDCALL.#
7500: 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53   define SQLITE_S
7510: 54 44 43 41 4c 4c 20 53 51 4c 49 54 45 5f 41 50  TDCALL SQLITE_AP
7520: 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a 23 69 66  ICALL.#endif.#if
7530: 6e 64 65 66 20 53 51 4c 49 54 45 5f 43 41 4c 4c  ndef SQLITE_CALL
7540: 42 41 43 4b 0a 23 20 64 65 66 69 6e 65 20 53 51  BACK.# define SQ
7550: 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 65  LITE_CALLBACK.#e
7560: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
7570: 49 54 45 5f 53 59 53 41 50 49 0a 23 20 64 65 66  ITE_SYSAPI.# def
7580: 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 53 41 50  ine SQLITE_SYSAP
7590: 49 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20  I.#endif../*.** 
75a0: 54 68 65 73 65 20 6e 6f 2d 6f 70 20 6d 61 63 72  These no-op macr
75b0: 6f 73 20 61 72 65 20 75 73 65 64 20 69 6e 20 66  os are used in f
75c0: 72 6f 6e 74 20 6f 66 20 69 6e 74 65 72 66 61 63  ront of interfac
75d0: 65 73 20 74 6f 20 6d 61 72 6b 20 74 68 6f 73 65  es to mark those
75e0: 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 61  .** interfaces a
75f0: 73 20 65 69 74 68 65 72 20 64 65 70 72 65 63 61  s either depreca
7600: 74 65 64 20 6f 72 20 65 78 70 65 72 69 6d 65 6e  ted or experimen
7610: 74 61 6c 2e 20 20 4e 65 77 20 61 70 70 6c 69 63  tal.  New applic
7620: 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64  ations.** should
7630: 20 6e 6f 74 20 75 73 65 20 64 65 70 72 65 63 61   not use depreca
7640: 74 65 64 20 69 6e 74 65 72 66 61 63 65 73 20 2d  ted interfaces -
7650: 20 74 68 65 79 20 61 72 65 20 73 75 70 70 6f 72   they are suppor
7660: 74 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64  ted for backward
7670: 73 0a 2a 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69  s.** compatibili
7680: 74 79 20 6f 6e 6c 79 2e 20 20 41 70 70 6c 69 63  ty only.  Applic
7690: 61 74 69 6f 6e 20 77 72 69 74 65 72 73 20 73 68  ation writers sh
76a0: 6f 75 6c 64 20 62 65 20 61 77 61 72 65 20 74 68  ould be aware th
76b0: 61 74 0a 2a 2a 20 65 78 70 65 72 69 6d 65 6e 74  at.** experiment
76c0: 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  al interfaces ar
76d0: 65 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61  e subject to cha
76e0: 6e 67 65 20 69 6e 20 70 6f 69 6e 74 20 72 65 6c  nge in point rel
76f0: 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  eases..**.** The
7700: 73 65 20 6d 61 63 72 6f 73 20 75 73 65 64 20 74  se macros used t
7710: 6f 20 72 65 73 6f 6c 76 65 20 74 6f 20 76 61 72  o resolve to var
7720: 69 6f 75 73 20 6b 69 6e 64 73 20 6f 66 20 63 6f  ious kinds of co
7730: 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 74 68 61  mpiler magic tha
7740: 74 0a 2a 2a 20 77 6f 75 6c 64 20 67 65 6e 65 72  t.** would gener
7750: 61 74 65 20 77 61 72 6e 69 6e 67 20 6d 65 73 73  ate warning mess
7760: 61 67 65 73 20 77 68 65 6e 20 74 68 65 79 20 77  ages when they w
7770: 65 72 65 20 75 73 65 64 2e 20 20 42 75 74 20 74  ere used.  But t
7780: 68 61 74 0a 2a 2a 20 63 6f 6d 70 69 6c 65 72 20  hat.** compiler 
7790: 6d 61 67 69 63 20 65 6e 64 65 64 20 75 70 20 67  magic ended up g
77a0: 65 6e 65 72 61 74 69 6e 67 20 73 75 63 68 20 61  enerating such a
77b0: 20 66 6c 75 72 72 79 20 6f 66 20 62 75 67 20 72   flurry of bug r
77c0: 65 70 6f 72 74 73 0a 2a 2a 20 74 68 61 74 20 77  eports.** that w
77d0: 65 20 68 61 76 65 20 74 61 6b 65 6e 20 69 74 20  e have taken it 
77e0: 61 6c 6c 20 6f 75 74 20 61 6e 64 20 67 6f 6e 65  all out and gone
77f0: 20 62 61 63 6b 20 74 6f 20 75 73 69 6e 67 20 73   back to using s
7800: 69 6d 70 6c 65 0a 2a 2a 20 6e 6f 6f 70 20 6d 61  imple.** noop ma
7810: 63 72 6f 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  cros..*/.#define
7820: 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43 41 54   SQLITE_DEPRECAT
7830: 45 44 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  ED.#define SQLIT
7840: 45 5f 45 58 50 45 52 49 4d 45 4e 54 41 4c 0a 0a  E_EXPERIMENTAL..
7850: 2f 2a 0a 2a 2a 20 45 6e 73 75 72 65 20 74 68 65  /*.** Ensure the
7860: 73 65 20 73 79 6d 62 6f 6c 73 20 77 65 72 65 20  se symbols were 
7870: 6e 6f 74 20 64 65 66 69 6e 65 64 20 62 79 20 73  not defined by s
7880: 6f 6d 65 20 70 72 65 76 69 6f 75 73 20 68 65 61  ome previous hea
7890: 64 65 72 20 66 69 6c 65 2e 0a 2a 2f 0a 23 69 66  der file..*/.#if
78a0: 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49  def SQLITE_VERSI
78b0: 4f 4e 0a 23 20 75 6e 64 65 66 20 53 51 4c 49 54  ON.# undef SQLIT
78c0: 45 5f 56 45 52 53 49 4f 4e 0a 23 65 6e 64 69 66  E_VERSION.#endif
78d0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56  .#ifdef SQLITE_V
78e0: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20  ERSION_NUMBER.# 
78f0: 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52  undef SQLITE_VER
7900: 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e 64  SION_NUMBER.#end
7910: 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  if../*.** CAPI3R
7920: 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65  EF: Compile-Time
7930: 20 4c 69 62 72 61 72 79 20 56 65 72 73 69 6f 6e   Library Version
7940: 20 4e 75 6d 62 65 72 73 0a 2a 2a 0a 2a 2a 20 5e   Numbers.**.** ^
7950: 28 54 68 65 20 5b 53 51 4c 49 54 45 5f 56 45 52  (The [SQLITE_VER
7960: 53 49 4f 4e 5d 20 43 20 70 72 65 70 72 6f 63 65  SION] C preproce
7970: 73 73 6f 72 20 6d 61 63 72 6f 20 69 6e 20 74 68  ssor macro in th
7980: 65 20 73 71 6c 69 74 65 33 2e 68 20 68 65 61 64  e sqlite3.h head
7990: 65 72 0a 2a 2a 20 65 76 61 6c 75 61 74 65 73 20  er.** evaluates 
79a0: 74 6f 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  to a string lite
79b0: 72 61 6c 20 74 68 61 74 20 69 73 20 74 68 65 20  ral that is the 
79c0: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 69  SQLite version i
79d0: 6e 20 74 68 65 0a 2a 2a 20 66 6f 72 6d 61 74 20  n the.** format 
79e0: 22 58 2e 59 2e 5a 22 20 77 68 65 72 65 20 58 20  "X.Y.Z" where X 
79f0: 69 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65 72  is the major ver
7a00: 73 69 6f 6e 20 6e 75 6d 62 65 72 20 28 61 6c 77  sion number (alw
7a10: 61 79 73 20 33 20 66 6f 72 0a 2a 2a 20 53 51 4c  ays 3 for.** SQL
7a20: 69 74 65 33 29 20 61 6e 64 20 59 20 69 73 20 74  ite3) and Y is t
7a30: 68 65 20 6d 69 6e 6f 72 20 76 65 72 73 69 6f 6e  he minor version
7a40: 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a 20 69 73   number and Z is
7a50: 20 74 68 65 20 72 65 6c 65 61 73 65 20 6e 75 6d   the release num
7a60: 62 65 72 2e 29 5e 0a 2a 2a 20 5e 28 54 68 65 20  ber.)^.** ^(The 
7a70: 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  [SQLITE_VERSION_
7a80: 4e 55 4d 42 45 52 5d 20 43 20 70 72 65 70 72 6f  NUMBER] C prepro
7a90: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 72 65 73  cessor macro res
7aa0: 6f 6c 76 65 73 20 74 6f 20 61 6e 20 69 6e 74 65  olves to an inte
7ab0: 67 65 72 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ger.** with the 
7ac0: 76 61 6c 75 65 20 28 58 2a 31 30 30 30 30 30 30  value (X*1000000
7ad0: 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29 20 77   + Y*1000 + Z) w
7ae0: 68 65 72 65 20 58 2c 20 59 2c 20 61 6e 64 20 5a  here X, Y, and Z
7af0: 20 61 72 65 20 74 68 65 20 73 61 6d 65 0a 2a 2a   are the same.**
7b00: 20 6e 75 6d 62 65 72 73 20 75 73 65 64 20 69 6e   numbers used in
7b10: 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e   [SQLITE_VERSION
7b20: 5d 2e 29 5e 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ].)^.** The SQLI
7b30: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
7b40: 52 20 66 6f 72 20 61 6e 79 20 67 69 76 65 6e 20  R for any given 
7b50: 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74  release of SQLit
7b60: 65 20 77 69 6c 6c 20 61 6c 73 6f 0a 2a 2a 20 62  e will also.** b
7b70: 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68  e larger than th
7b80: 65 20 72 65 6c 65 61 73 65 20 66 72 6f 6d 20 77  e release from w
7b90: 68 69 63 68 20 69 74 20 69 73 20 64 65 72 69 76  hich it is deriv
7ba0: 65 64 2e 20 20 45 69 74 68 65 72 20 59 20 77 69  ed.  Either Y wi
7bb0: 6c 6c 0a 2a 2a 20 62 65 20 68 65 6c 64 20 63 6f  ll.** be held co
7bc0: 6e 73 74 61 6e 74 20 61 6e 64 20 5a 20 77 69 6c  nstant and Z wil
7bd0: 6c 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64  l be incremented
7be0: 20 6f 72 20 65 6c 73 65 20 59 20 77 69 6c 6c 20   or else Y will 
7bf0: 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 0a 2a  be incremented.*
7c00: 2a 20 61 6e 64 20 5a 20 77 69 6c 6c 20 62 65 20  * and Z will be 
7c10: 72 65 73 65 74 20 74 6f 20 7a 65 72 6f 2e 0a 2a  reset to zero..*
7c20: 2a 0a 2a 2a 20 53 69 6e 63 65 20 5b 76 65 72 73  *.** Since [vers
7c30: 69 6f 6e 20 33 2e 36 2e 31 38 5d 20 28 5b 64 61  ion 3.6.18] ([da
7c40: 74 65 6f 66 3a 33 2e 36 2e 31 38 5d 29 2c 20 0a  teof:3.6.18]), .
7c50: 2a 2a 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  ** SQLite source
7c60: 20 63 6f 64 65 20 68 61 73 20 62 65 65 6e 20 73   code has been s
7c70: 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20  tored in the.** 
7c80: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
7c90: 77 77 77 2e 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f  www.fossil-scm.o
7ca0: 72 67 2f 22 3e 46 6f 73 73 69 6c 20 63 6f 6e 66  rg/">Fossil conf
7cb0: 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65  iguration manage
7cc0: 6d 65 6e 74 0a 2a 2a 20 73 79 73 74 65 6d 3c 2f  ment.** system</
7cd0: 61 3e 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45  a>.  ^The SQLITE
7ce0: 5f 53 4f 55 52 43 45 5f 49 44 20 6d 61 63 72 6f  _SOURCE_ID macro
7cf0: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 0a 2a 2a   evaluates to.**
7d00: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
7d10: 69 64 65 6e 74 69 66 69 65 73 20 61 20 70 61 72  identifies a par
7d20: 74 69 63 75 6c 61 72 20 63 68 65 63 6b 2d 69 6e  ticular check-in
7d30: 20 6f 66 20 53 51 4c 69 74 65 0a 2a 2a 20 77 69   of SQLite.** wi
7d40: 74 68 69 6e 20 69 74 73 20 63 6f 6e 66 69 67 75  thin its configu
7d50: 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e  ration managemen
7d60: 74 20 73 79 73 74 65 6d 2e 20 20 5e 54 68 65 20  t system.  ^The 
7d70: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
7d80: 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  .** string conta
7d90: 69 6e 73 20 74 68 65 20 64 61 74 65 20 61 6e 64  ins the date and
7da0: 20 74 69 6d 65 20 6f 66 20 74 68 65 20 63 68 65   time of the che
7db0: 63 6b 2d 69 6e 20 28 55 54 43 29 20 61 6e 64 20  ck-in (UTC) and 
7dc0: 61 20 53 48 41 31 0a 2a 2a 20 6f 72 20 53 48 41  a SHA1.** or SHA
7dd0: 33 2d 32 35 36 20 68 61 73 68 20 6f 66 20 74 68  3-256 hash of th
7de0: 65 20 65 6e 74 69 72 65 20 73 6f 75 72 63 65 20  e entire source 
7df0: 74 72 65 65 2e 20 20 49 66 20 74 68 65 20 73 6f  tree.  If the so
7e00: 75 72 63 65 20 63 6f 64 65 20 68 61 73 0a 2a 2a  urce code has.**
7e10: 20 62 65 65 6e 20 65 64 69 74 65 64 20 69 6e 20   been edited in 
7e20: 61 6e 79 20 77 61 79 20 73 69 6e 63 65 20 69 74  any way since it
7e30: 20 77 61 73 20 6c 61 73 74 20 63 68 65 63 6b 65   was last checke
7e40: 64 20 69 6e 2c 20 74 68 65 6e 20 74 68 65 20 6c  d in, then the l
7e50: 61 73 74 0a 2a 2a 20 66 6f 75 72 20 68 65 78 61  ast.** four hexa
7e60: 64 65 63 69 6d 61 6c 20 64 69 67 69 74 73 20 6f  decimal digits o
7e70: 66 20 74 68 65 20 68 61 73 68 20 6d 61 79 20 62  f the hash may b
7e80: 65 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a  e modified..**.*
7e90: 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
7ea0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
7eb0: 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
7ec0: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
7ed0: 72 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 73  r()], [sqlite3_s
7ee0: 6f 75 72 63 65 69 64 28 29 5d 2c 0a 2a 2a 20 5b  ourceid()],.** [
7ef0: 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 29  sqlite_version()
7f00: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 73 6f  ] and [sqlite_so
7f10: 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a 2f 0a 23  urce_id()]..*/.#
7f20: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45  define SQLITE_VE
7f30: 52 53 49 4f 4e 20 20 20 20 20 20 20 20 22 33 2e  RSION        "3.
7f40: 32 31 2e 30 22 0a 23 64 65 66 69 6e 65 20 53 51  21.0".#define SQ
7f50: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
7f60: 42 45 52 20 33 30 32 31 30 30 30 0a 23 64 65 66  BER 3021000.#def
7f70: 69 6e 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43  ine SQLITE_SOURC
7f80: 45 5f 49 44 20 20 20 20 20 20 22 32 30 31 37 2d  E_ID      "2017-
7f90: 31 30 2d 31 36 20 31 31 3a 35 30 3a 31 32 20 37  10-16 11:50:12 7
7fa0: 30 30 61 33 63 36 39 34 34 33 38 63 61 36 63 63  00a3c694438ca6cc
7fb0: 61 31 38 35 64 30 30 39 37 66 32 34 37 39 39 65  a185d0097f24799e
7fc0: 38 32 37 31 37 65 66 33 38 63 62 34 37 62 64 38  82717ef38cb47bd8
7fd0: 33 36 36 36 63 38 30 66 30 65 33 63 62 32 66 22  3666c80f0e3cb2f"
7fe0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
7ff0: 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69 62 72 61  : Run-Time Libra
8000: 72 79 20 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65  ry Version Numbe
8010: 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  rs.** KEYWORDS: 
8020: 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 20  sqlite3_version 
8030: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
8040: 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74  .**.** These int
8050: 65 72 66 61 63 65 73 20 70 72 6f 76 69 64 65 20  erfaces provide 
8060: 74 68 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61  the same informa
8070: 74 69 6f 6e 20 61 73 20 74 68 65 20 5b 53 51 4c  tion as the [SQL
8080: 49 54 45 5f 56 45 52 53 49 4f 4e 5d 2c 0a 2a 2a  ITE_VERSION],.**
8090: 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e   [SQLITE_VERSION
80a0: 5f 4e 55 4d 42 45 52 5d 2c 20 61 6e 64 20 5b 53  _NUMBER], and [S
80b0: 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 5d  QLITE_SOURCE_ID]
80c0: 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C preprocessor 
80d0: 6d 61 63 72 6f 73 0a 2a 2a 20 62 75 74 20 61 72  macros.** but ar
80e0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
80f0: 68 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 6e  h the library in
8100: 73 74 65 61 64 20 6f 66 20 74 68 65 20 68 65 61  stead of the hea
8110: 64 65 72 20 66 69 6c 65 2e 20 20 5e 28 43 61 75  der file.  ^(Cau
8120: 74 69 6f 75 73 0a 2a 2a 20 70 72 6f 67 72 61 6d  tious.** program
8130: 6d 65 72 73 20 6d 69 67 68 74 20 69 6e 63 6c 75  mers might inclu
8140: 64 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  de assert() stat
8150: 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 69 72 20  ements in their 
8160: 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a  application to.*
8170: 2a 20 76 65 72 69 66 79 20 74 68 61 74 20 76 61  * verify that va
8180: 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  lues returned by
8190: 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65   these interface
81a0: 73 20 6d 61 74 63 68 20 74 68 65 20 6d 61 63 72  s match the macr
81b0: 6f 73 20 69 6e 0a 2a 2a 20 74 68 65 20 68 65 61  os in.** the hea
81c0: 64 65 72 2c 20 61 6e 64 20 74 68 75 73 20 65 6e  der, and thus en
81d0: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61 70  sure that the ap
81e0: 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 2a 2a 20  plication is.** 
81f0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6d 61  compiled with ma
8200: 74 63 68 69 6e 67 20 6c 69 62 72 61 72 79 20 61  tching library a
8210: 6e 64 20 68 65 61 64 65 72 20 66 69 6c 65 73 2e  nd header files.
8220: 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f  .**.** <blockquo
8230: 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 61 73 73 65  te><pre>.** asse
8240: 72 74 28 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  rt( sqlite3_libv
8250: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3d  ersion_number()=
8260: 3d 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  =SQLITE_VERSION_
8270: 4e 55 4d 42 45 52 20 29 3b 0a 2a 2a 20 61 73 73  NUMBER );.** ass
8280: 65 72 74 28 20 73 74 72 6e 63 6d 70 28 73 71 6c  ert( strncmp(sql
8290: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 2c  ite3_sourceid(),
82a0: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
82b0: 2c 38 30 29 3d 3d 30 20 29 3b 0a 2a 2a 20 61 73  ,80)==0 );.** as
82c0: 73 65 72 74 28 20 73 74 72 63 6d 70 28 73 71 6c  sert( strcmp(sql
82d0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
82e0: 29 2c 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  ),SQLITE_VERSION
82f0: 29 3d 3d 30 20 29 3b 0a 2a 2a 20 3c 2f 70 72 65  )==0 );.** </pre
8300: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  ></blockquote>)^
8310: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
8320: 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 73 74  te3_version[] st
8330: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 63 6f  ring constant co
8340: 6e 74 61 69 6e 73 20 74 68 65 20 74 65 78 74 20  ntains the text 
8350: 6f 66 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49  of [SQLITE_VERSI
8360: 4f 4e 5d 0a 2a 2a 20 6d 61 63 72 6f 2e 20 20 5e  ON].** macro.  ^
8370: 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  The sqlite3_libv
8380: 65 72 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f  ersion() functio
8390: 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  n returns a poin
83a0: 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 74 6f  ter to the.** to
83b0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72   the sqlite3_ver
83c0: 73 69 6f 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f  sion[] string co
83d0: 6e 73 74 61 6e 74 2e 20 20 54 68 65 20 73 71 6c  nstant.  The sql
83e0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
83f0: 29 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69 73  ).** function is
8400: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 75 73   provided for us
8410: 65 20 69 6e 20 44 4c 4c 73 20 73 69 6e 63 65 20  e in DLLs since 
8420: 44 4c 4c 20 75 73 65 72 73 20 75 73 75 61 6c 6c  DLL users usuall
8430: 79 20 64 6f 20 6e 6f 74 20 68 61 76 65 0a 2a 2a  y do not have.**
8440: 20 64 69 72 65 63 74 20 61 63 63 65 73 73 20 74   direct access t
8450: 6f 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e  o string constan
8460: 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 44 4c  ts within the DL
8470: 4c 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69  L.  ^The.** sqli
8480: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
8490: 75 6d 62 65 72 28 29 20 66 75 6e 63 74 69 6f 6e  umber() function
84a0: 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65   returns an inte
84b0: 67 65 72 20 65 71 75 61 6c 20 74 6f 0a 2a 2a 20  ger equal to.** 
84c0: 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  [SQLITE_VERSION_
84d0: 4e 55 4d 42 45 52 5d 2e 20 20 5e 28 54 68 65 20  NUMBER].  ^(The 
84e0: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
84f0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
8500: 72 6e 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65  rns .** a pointe
8510: 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f  r to a string co
8520: 6e 73 74 61 6e 74 20 77 68 6f 73 65 20 76 61 6c  nstant whose val
8530: 75 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  ue is the same a
8540: 73 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54  s the .** [SQLIT
8550: 45 5f 53 4f 55 52 43 45 5f 49 44 5d 20 43 20 70  E_SOURCE_ID] C p
8560: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8570: 6f 2e 20 20 45 78 63 65 70 74 20 69 66 20 53 51  o.  Except if SQ
8580: 4c 69 74 65 20 69 73 20 62 75 69 6c 74 0a 2a 2a  Lite is built.**
8590: 20 75 73 69 6e 67 20 61 6e 20 65 64 69 74 65 64   using an edited
85a0: 20 63 6f 70 79 20 6f 66 20 5b 74 68 65 20 61 6d   copy of [the am
85b0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65  algamation], the
85c0: 6e 20 74 68 65 20 6c 61 73 74 20 66 6f 75 72 20  n the last four 
85d0: 63 68 61 72 61 63 74 65 72 73 0a 2a 2a 20 6f 66  characters.** of
85e0: 20 74 68 65 20 68 61 73 68 20 6d 69 67 68 74 20   the hash might 
85f0: 62 65 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  be different fro
8600: 6d 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  m [SQLITE_SOURCE
8610: 5f 49 44 5d 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65  _ID].)^.**.** Se
8620: 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 5f  e also: [sqlite_
8630: 76 65 72 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b  version()] and [
8640: 73 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64  sqlite_source_id
8650: 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ()]..*/.SQLITE_A
8660: 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 73 71  PI const char sq
8670: 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20  lite3_version[] 
8680: 3d 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  = SQLITE_VERSION
8690: 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  ;.SQLITE_API con
86a0: 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
86b0: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 76 6f 69 64  _libversion(void
86c0: 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  );.SQLITE_API co
86d0: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
86e0: 33 5f 73 6f 75 72 63 65 69 64 28 76 6f 69 64 29  3_sourceid(void)
86f0: 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
8700: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
8710: 69 6f 6e 5f 6e 75 6d 62 65 72 28 76 6f 69 64 29  ion_number(void)
8720: 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
8730: 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69 62 72  F: Run-Time Libr
8740: 61 72 79 20 43 6f 6d 70 69 6c 61 74 69 6f 6e 20  ary Compilation 
8750: 4f 70 74 69 6f 6e 73 20 44 69 61 67 6e 6f 73 74  Options Diagnost
8760: 69 63 73 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ics.**.** ^The s
8770: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8780: 74 69 6f 6e 5f 75 73 65 64 28 29 20 66 75 6e 63  tion_used() func
8790: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 30 20 6f  tion returns 0 o
87a0: 72 20 31 20 0a 2a 2a 20 69 6e 64 69 63 61 74 69  r 1 .** indicati
87b0: 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 20 73  ng whether the s
87c0: 70 65 63 69 66 69 65 64 20 6f 70 74 69 6f 6e 20  pecified option 
87d0: 77 61 73 20 64 65 66 69 6e 65 64 20 61 74 20 0a  was defined at .
87e0: 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e  ** compile time.
87f0: 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 20 70    ^The SQLITE_ p
8800: 72 65 66 69 78 20 6d 61 79 20 62 65 20 6f 6d 69  refix may be omi
8810: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 2a  tted from the .*
8820: 2a 20 6f 70 74 69 6f 6e 20 6e 61 6d 65 20 70 61  * option name pa
8830: 73 73 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f  ssed to sqlite3_
8840: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
8850: 65 64 28 29 2e 20 20 0a 2a 2a 0a 2a 2a 20 5e 54  ed().  .**.** ^T
8860: 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  he sqlite3_compi
8870: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 66  leoption_get() f
8880: 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 69  unction allows i
8890: 74 65 72 61 74 69 6e 67 0a 2a 2a 20 6f 76 65 72  terating.** over
88a0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6f 70 74   the list of opt
88b0: 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20 64  ions that were d
88c0: 65 66 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c  efined at compil
88d0: 65 20 74 69 6d 65 20 62 79 0a 2a 2a 20 72 65 74  e time by.** ret
88e0: 75 72 6e 69 6e 67 20 74 68 65 20 4e 2d 74 68 20  urning the N-th 
88f0: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 6f 70 74  compile time opt
8900: 69 6f 6e 20 73 74 72 69 6e 67 2e 20 20 5e 49 66  ion string.  ^If
8910: 20 4e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e   N is out of ran
8920: 67 65 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  ge,.** sqlite3_c
8930: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
8940: 28 29 20 72 65 74 75 72 6e 73 20 61 20 4e 55 4c  () returns a NUL
8950: 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54 68 65  L pointer.  ^The
8960: 20 53 51 4c 49 54 45 5f 20 0a 2a 2a 20 70 72 65   SQLITE_ .** pre
8970: 66 69 78 20 69 73 20 6f 6d 69 74 74 65 64 20 66  fix is omitted f
8980: 72 6f 6d 20 61 6e 79 20 73 74 72 69 6e 67 73 20  rom any strings 
8990: 72 65 74 75 72 6e 65 64 20 62 79 20 0a 2a 2a 20  returned by .** 
89a0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
89b0: 70 74 69 6f 6e 5f 67 65 74 28 29 2e 0a 2a 2a 0a  ption_get()..**.
89c0: 2a 2a 20 5e 53 75 70 70 6f 72 74 20 66 6f 72 20  ** ^Support for 
89d0: 74 68 65 20 64 69 61 67 6e 6f 73 74 69 63 20 66  the diagnostic f
89e0: 75 6e 63 74 69 6f 6e 73 20 73 71 6c 69 74 65 33  unctions sqlite3
89f0: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
8a00: 73 65 64 28 29 0a 2a 2a 20 61 6e 64 20 73 71 6c  sed().** and sql
8a10: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
8a20: 6f 6e 5f 67 65 74 28 29 20 6d 61 79 20 62 65 20  on_get() may be 
8a30: 6f 6d 69 74 74 65 64 20 62 79 20 73 70 65 63 69  omitted by speci
8a40: 66 79 69 6e 67 20 74 68 65 20 0a 2a 2a 20 5b 53  fying the .** [S
8a50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
8a60: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 5d 20  LEOPTION_DIAGS] 
8a70: 6f 70 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c  option at compil
8a80: 65 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 53 65  e time..**.** Se
8a90: 65 20 61 6c 73 6f 3a 20 53 51 4c 20 66 75 6e 63  e also: SQL func
8aa0: 74 69 6f 6e 73 20 5b 73 71 6c 69 74 65 5f 63 6f  tions [sqlite_co
8ab0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
8ac0: 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  ()] and.** [sqli
8ad0: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
8ae0: 5f 67 65 74 28 29 5d 20 61 6e 64 20 74 68 65 20  _get()] and the 
8af0: 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73  [compile_options
8b00: 20 70 72 61 67 6d 61 5d 2e 0a 2a 2f 0a 23 69 66   pragma]..*/.#if
8b10: 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  ndef SQLITE_OMIT
8b20: 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44  _COMPILEOPTION_D
8b30: 49 41 47 53 0a 53 51 4c 49 54 45 5f 41 50 49 20  IAGS.SQLITE_API 
8b40: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  int sqlite3_comp
8b50: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 63  ileoption_used(c
8b60: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4f 70 74 4e  onst char *zOptN
8b70: 61 6d 65 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  ame);.SQLITE_API
8b80: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
8b90: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
8ba0: 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0a 23  on_get(int N);.#
8bb0: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  endif../*.** CAP
8bc0: 49 33 52 45 46 3a 20 54 65 73 74 20 54 6f 20 53  I3REF: Test To S
8bd0: 65 65 20 49 66 20 54 68 65 20 4c 69 62 72 61 72  ee If The Librar
8be0: 79 20 49 73 20 54 68 72 65 61 64 73 61 66 65 0a  y Is Threadsafe.
8bf0: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
8c00: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 20  e3_threadsafe() 
8c10: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
8c20: 20 7a 65 72 6f 20 69 66 20 61 6e 64 20 6f 6e 6c   zero if and onl
8c30: 79 20 69 66 0a 2a 2a 20 53 51 4c 69 74 65 20 77  y if.** SQLite w
8c40: 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  as compiled with
8c50: 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 20 6f   mutexing code o
8c60: 6d 69 74 74 65 64 20 64 75 65 20 74 6f 20 74 68  mitted due to th
8c70: 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52  e.** [SQLITE_THR
8c80: 45 41 44 53 41 46 45 5d 20 63 6f 6d 70 69 6c 65  EADSAFE] compile
8c90: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 62 65 69  -time option bei
8ca0: 6e 67 20 73 65 74 20 74 6f 20 30 2e 0a 2a 2a 0a  ng set to 0..**.
8cb0: 2a 2a 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65  ** SQLite can be
8cc0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6f   compiled with o
8cd0: 72 20 77 69 74 68 6f 75 74 20 6d 75 74 65 78 65  r without mutexe
8ce0: 73 2e 20 20 57 68 65 6e 0a 2a 2a 20 74 68 65 20  s.  When.** the 
8cf0: 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
8d00: 46 45 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73  FE] C preprocess
8d10: 6f 72 20 6d 61 63 72 6f 20 69 73 20 31 20 6f 72  or macro is 1 or
8d20: 20 32 2c 20 6d 75 74 65 78 65 73 0a 2a 2a 20 61   2, mutexes.** a
8d30: 72 65 20 65 6e 61 62 6c 65 64 20 61 6e 64 20 53  re enabled and S
8d40: 51 4c 69 74 65 20 69 73 20 74 68 72 65 61 64 73  QLite is threads
8d50: 61 66 65 2e 20 20 57 68 65 6e 20 74 68 65 0a 2a  afe.  When the.*
8d60: 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  * [SQLITE_THREAD
8d70: 53 41 46 45 5d 20 6d 61 63 72 6f 20 69 73 20 30  SAFE] macro is 0
8d80: 2c 20 0a 2a 2a 20 74 68 65 20 6d 75 74 65 78 65  , .** the mutexe
8d90: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20  s are omitted.  
8da0: 57 69 74 68 6f 75 74 20 74 68 65 20 6d 75 74 65  Without the mute
8db0: 78 65 73 2c 20 69 74 20 69 73 20 6e 6f 74 20 73  xes, it is not s
8dc0: 61 66 65 0a 2a 2a 20 74 6f 20 75 73 65 20 53 51  afe.** to use SQ
8dd0: 4c 69 74 65 20 63 6f 6e 63 75 72 72 65 6e 74 6c  Lite concurrentl
8de0: 79 20 66 72 6f 6d 20 6d 6f 72 65 20 74 68 61 6e  y from more than
8df0: 20 6f 6e 65 20 74 68 72 65 61 64 2e 0a 2a 2a 0a   one thread..**.
8e00: 2a 2a 20 45 6e 61 62 6c 69 6e 67 20 6d 75 74 65  ** Enabling mute
8e10: 78 65 73 20 69 6e 63 75 72 73 20 61 20 6d 65 61  xes incurs a mea
8e20: 73 75 72 61 62 6c 65 20 70 65 72 66 6f 72 6d 61  surable performa
8e30: 6e 63 65 20 70 65 6e 61 6c 74 79 2e 0a 2a 2a 20  nce penalty..** 
8e40: 53 6f 20 69 66 20 73 70 65 65 64 20 69 73 20 6f  So if speed is o
8e50: 66 20 75 74 6d 6f 73 74 20 69 6d 70 6f 72 74 61  f utmost importa
8e60: 6e 63 65 2c 20 69 74 20 6d 61 6b 65 73 20 73 65  nce, it makes se
8e70: 6e 73 65 20 74 6f 20 64 69 73 61 62 6c 65 0a 2a  nse to disable.*
8e80: 2a 20 74 68 65 20 6d 75 74 65 78 65 73 2e 20 20  * the mutexes.  
8e90: 42 75 74 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20  But for maximum 
8ea0: 73 61 66 65 74 79 2c 20 6d 75 74 65 78 65 73 20  safety, mutexes 
8eb0: 73 68 6f 75 6c 64 20 62 65 20 65 6e 61 62 6c 65  should be enable
8ec0: 64 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75  d..** ^The defau
8ed0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 66  lt behavior is f
8ee0: 6f 72 20 6d 75 74 65 78 65 73 20 74 6f 20 62 65  or mutexes to be
8ef0: 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20   enabled..**.** 
8f00: 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 63  This interface c
8f10: 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61 6e  an be used by an
8f20: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20   application to 
8f30: 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74  make sure that t
8f40: 68 65 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 6f 66  he.** version of
8f50: 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 74 20   SQLite that it 
8f60: 69 73 20 6c 69 6e 6b 69 6e 67 20 61 67 61 69 6e  is linking again
8f70: 73 74 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20  st was compiled 
8f80: 77 69 74 68 0a 2a 2a 20 74 68 65 20 64 65 73 69  with.** the desi
8f90: 72 65 64 20 73 65 74 74 69 6e 67 20 6f 66 20 74  red setting of t
8fa0: 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
8fb0: 44 53 41 46 45 5d 20 6d 61 63 72 6f 2e 0a 2a 2a  DSAFE] macro..**
8fc0: 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61  .** This interfa
8fd0: 63 65 20 6f 6e 6c 79 20 72 65 70 6f 72 74 73 20  ce only reports 
8fe0: 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  on the compile-t
8ff0: 69 6d 65 20 6d 75 74 65 78 20 73 65 74 74 69 6e  ime mutex settin
9000: 67 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 53 51 4c  g.** of the [SQL
9010: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
9020: 66 6c 61 67 2e 20 20 49 66 20 53 51 4c 69 74 65  flag.  If SQLite
9030: 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
9040: 68 0a 2a 2a 20 53 51 4c 49 54 45 5f 54 48 52 45  h.** SQLITE_THRE
9050: 41 44 53 41 46 45 3d 31 20 6f 72 20 3d 32 20 74  ADSAFE=1 or =2 t
9060: 68 65 6e 20 6d 75 74 65 78 65 73 20 61 72 65 20  hen mutexes are 
9070: 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  enabled by defau
9080: 6c 74 20 62 75 74 0a 2a 2a 20 63 61 6e 20 62 65  lt but.** can be
9090: 20 66 75 6c 6c 79 20 6f 72 20 70 61 72 74 69 61   fully or partia
90a0: 6c 6c 79 20 64 69 73 61 62 6c 65 64 20 75 73 69  lly disabled usi
90b0: 6e 67 20 61 20 63 61 6c 6c 20 74 6f 20 5b 73 71  ng a call to [sq
90c0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a  lite3_config()].
90d0: 2a 2a 20 77 69 74 68 20 74 68 65 20 76 65 72 62  ** with the verb
90e0: 73 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  s [SQLITE_CONFIG
90f0: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 2c 20  _SINGLETHREAD], 
9100: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
9110: 55 4c 54 49 54 48 52 45 41 44 5d 2c 0a 2a 2a 20  ULTITHREAD],.** 
9120: 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  or [SQLITE_CONFI
9130: 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 2e 20 20  G_SERIALIZED].  
9140: 5e 28 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  ^(The return val
9150: 75 65 20 6f 66 20 74 68 65 0a 2a 2a 20 73 71 6c  ue of the.** sql
9160: 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28  ite3_threadsafe(
9170: 29 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77 73  ) function shows
9180: 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6d 70 69 6c   only the compil
9190: 65 2d 74 69 6d 65 20 73 65 74 74 69 6e 67 20 6f  e-time setting o
91a0: 66 0a 2a 2a 20 74 68 72 65 61 64 20 73 61 66 65  f.** thread safe
91b0: 74 79 2c 20 6e 6f 74 20 61 6e 79 20 72 75 6e 2d  ty, not any run-
91c0: 74 69 6d 65 20 63 68 61 6e 67 65 73 20 74 6f 20  time changes to 
91d0: 74 68 61 74 20 73 65 74 74 69 6e 67 20 6d 61 64  that setting mad
91e0: 65 20 62 79 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  e by.** sqlite3_
91f0: 63 6f 6e 66 69 67 28 29 2e 20 49 6e 20 6f 74 68  config(). In oth
9200: 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20 72 65  er words, the re
9210: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
9220: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
9230: 66 65 28 29 0a 2a 2a 20 69 73 20 75 6e 63 68 61  fe().** is uncha
9240: 6e 67 65 64 20 62 79 20 63 61 6c 6c 73 20 74 6f  nged by calls to
9250: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
9260: 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 74  ).)^.**.** See t
9270: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
9280: 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  de] documentatio
9290: 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
92a0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2f   information..*/
92b0: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
92c0: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
92d0: 66 65 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  fe(void);../*.**
92e0: 20 43 41 50 49 33 52 45 46 3a 20 44 61 74 61 62   CAPI3REF: Datab
92f0: 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 48  ase Connection H
9300: 61 6e 64 6c 65 0a 2a 2a 20 4b 45 59 57 4f 52 44  andle.** KEYWORD
9310: 53 3a 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e  S: {database con
9320: 6e 65 63 74 69 6f 6e 7d 20 7b 64 61 74 61 62 61  nection} {databa
9330: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 7d 0a  se connections}.
9340: 2a 2a 0a 2a 2a 20 45 61 63 68 20 6f 70 65 6e 20  **.** Each open 
9350: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
9360: 69 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 62  is represented b
9370: 79 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  y a pointer to a
9380: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 0a 2a 2a  n instance of.**
9390: 20 74 68 65 20 6f 70 61 71 75 65 20 73 74 72 75   the opaque stru
93a0: 63 74 75 72 65 20 6e 61 6d 65 64 20 22 73 71 6c  cture named "sql
93b0: 69 74 65 33 22 2e 20 20 49 74 20 69 73 20 75 73  ite3".  It is us
93c0: 65 66 75 6c 20 74 6f 20 74 68 69 6e 6b 20 6f 66  eful to think of
93d0: 20 61 6e 20 73 71 6c 69 74 65 33 0a 2a 2a 20 70   an sqlite3.** p
93e0: 6f 69 6e 74 65 72 20 61 73 20 61 6e 20 6f 62 6a  ointer as an obj
93f0: 65 63 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74  ect.  The [sqlit
9400: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
9410: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
9420: 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
9430: 6f 70 65 6e 5f 76 32 28 29 5d 20 69 6e 74 65 72  open_v2()] inter
9440: 66 61 63 65 73 20 61 72 65 20 69 74 73 20 63 6f  faces are its co
9450: 6e 73 74 72 75 63 74 6f 72 73 2c 20 61 6e 64 20  nstructors, and 
9460: 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29  [sqlite3_close()
9470: 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65  ].** and [sqlite
9480: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 5d 20 61 72  3_close_v2()] ar
9490: 65 20 69 74 73 20 64 65 73 74 72 75 63 74 6f 72  e its destructor
94a0: 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 6d 61  s.  There are ma
94b0: 6e 79 20 6f 74 68 65 72 0a 2a 2a 20 69 6e 74 65  ny other.** inte
94c0: 72 66 61 63 65 73 20 28 73 75 63 68 20 61 73 0a  rfaces (such as.
94d0: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
94e0: 61 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69  are_v2()], [sqli
94f0: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
9500: 69 6f 6e 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b  ion()], and.** [
9510: 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
9520: 65 6f 75 74 28 29 5d 20 74 6f 20 6e 61 6d 65 20  eout()] to name 
9530: 62 75 74 20 74 68 72 65 65 29 20 74 68 61 74 20  but three) that 
9540: 61 72 65 20 6d 65 74 68 6f 64 73 20 6f 6e 20 61  are methods on a
9550: 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 20 6f 62 6a  n.** sqlite3 obj
9560: 65 63 74 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ect..*/.typedef 
9570: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 20 73  struct sqlite3 s
9580: 71 6c 69 74 65 33 3b 0a 0a 2f 2a 0a 2a 2a 20 43  qlite3;../*.** C
9590: 41 50 49 33 52 45 46 3a 20 36 34 2d 42 69 74 20  API3REF: 64-Bit 
95a0: 49 6e 74 65 67 65 72 20 54 79 70 65 73 0a 2a 2a  Integer Types.**
95b0: 20 4b 45 59 57 4f 52 44 53 3a 20 73 71 6c 69 74   KEYWORDS: sqlit
95c0: 65 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 75  e_int64 sqlite_u
95d0: 69 6e 74 36 34 0a 2a 2a 0a 2a 2a 20 42 65 63 61  int64.**.** Beca
95e0: 75 73 65 20 74 68 65 72 65 20 69 73 20 6e 6f 20  use there is no 
95f0: 63 72 6f 73 73 2d 70 6c 61 74 66 6f 72 6d 20 77  cross-platform w
9600: 61 79 20 74 6f 20 73 70 65 63 69 66 79 20 36 34  ay to specify 64
9610: 2d 62 69 74 20 69 6e 74 65 67 65 72 20 74 79 70  -bit integer typ
9620: 65 73 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6e 63  es.** SQLite inc
9630: 6c 75 64 65 73 20 74 79 70 65 64 65 66 73 20 66  ludes typedefs f
9640: 6f 72 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64  or 64-bit signed
9650: 20 61 6e 64 20 75 6e 73 69 67 6e 65 64 20 69 6e   and unsigned in
9660: 74 65 67 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  tegers..**.** Th
9670: 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  e sqlite3_int64 
9680: 61 6e 64 20 73 71 6c 69 74 65 33 5f 75 69 6e 74  and sqlite3_uint
9690: 36 34 20 61 72 65 20 74 68 65 20 70 72 65 66 65  64 are the prefe
96a0: 72 72 65 64 20 74 79 70 65 20 64 65 66 69 6e 69  rred type defini
96b0: 74 69 6f 6e 73 2e 0a 2a 2a 20 54 68 65 20 73 71  tions..** The sq
96c0: 6c 69 74 65 5f 69 6e 74 36 34 20 61 6e 64 20 73  lite_int64 and s
96d0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 74 79 70  qlite_uint64 typ
96e0: 65 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  es are supported
96f0: 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 0a 2a   for backwards.*
9700: 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  * compatibility 
9710: 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  only..**.** ^The
9720: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 61   sqlite3_int64 a
9730: 6e 64 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  nd sqlite_int64 
9740: 74 79 70 65 73 20 63 61 6e 20 73 74 6f 72 65 20  types can store 
9750: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 0a 2a  integer values.*
9760: 2a 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33 33  * between -92233
9770: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20 61  72036854775808 a
9780: 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38 35  nd +922337203685
9790: 34 37 37 35 38 30 37 20 69 6e 63 6c 75 73 69 76  4775807 inclusiv
97a0: 65 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69  e.  ^The.** sqli
97b0: 74 65 33 5f 75 69 6e 74 36 34 20 61 6e 64 20 73  te3_uint64 and s
97c0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 74 79 70  qlite_uint64 typ
97d0: 65 73 20 63 61 6e 20 73 74 6f 72 65 20 69 6e 74  es can store int
97e0: 65 67 65 72 20 76 61 6c 75 65 73 20 0a 2a 2a 20  eger values .** 
97f0: 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 2b 31  between 0 and +1
9800: 38 34 34 36 37 34 34 30 37 33 37 30 39 35 35 31  8446744073709551
9810: 36 31 35 20 69 6e 63 6c 75 73 69 76 65 2e 0a 2a  615 inclusive..*
9820: 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  /.#ifdef SQLITE_
9830: 49 4e 54 36 34 5f 54 59 50 45 0a 20 20 74 79 70  INT64_TYPE.  typ
9840: 65 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54 36  edef SQLITE_INT6
9850: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 69 6e  4_TYPE sqlite_in
9860: 74 36 34 3b 0a 23 20 69 66 64 65 66 20 53 51 4c  t64;.# ifdef SQL
9870: 49 54 45 5f 55 49 4e 54 36 34 5f 54 59 50 45 0a  ITE_UINT64_TYPE.
9880: 20 20 20 20 74 79 70 65 64 65 66 20 53 51 4c 49      typedef SQLI
9890: 54 45 5f 55 49 4e 54 36 34 5f 54 59 50 45 20 73  TE_UINT64_TYPE s
98a0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 20  qlite_uint64;.# 
98b0: 65 6c 73 65 20 20 0a 20 20 20 20 74 79 70 65 64  else  .    typed
98c0: 65 66 20 75 6e 73 69 67 6e 65 64 20 53 51 4c 49  ef unsigned SQLI
98d0: 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20 73 71  TE_INT64_TYPE sq
98e0: 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 20 65  lite_uint64;.# e
98f0: 6e 64 69 66 0a 23 65 6c 69 66 20 64 65 66 69 6e  ndif.#elif defin
9900: 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 7c 7c 20  ed(_MSC_VER) || 
9910: 64 65 66 69 6e 65 64 28 5f 5f 42 4f 52 4c 41 4e  defined(__BORLAN
9920: 44 43 5f 5f 29 0a 20 20 74 79 70 65 64 65 66 20  DC__).  typedef 
9930: 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 69  __int64 sqlite_i
9940: 6e 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20  nt64;.  typedef 
9950: 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e 74 36 34  unsigned __int64
9960: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a   sqlite_uint64;.
9970: 23 65 6c 73 65 0a 20 20 74 79 70 65 64 65 66 20  #else.  typedef 
9980: 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71  long long int sq
9990: 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79  lite_int64;.  ty
99a0: 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 6c  pedef unsigned l
99b0: 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c  ong long int sql
99c0: 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6e 64  ite_uint64;.#end
99d0: 69 66 0a 74 79 70 65 64 65 66 20 73 71 6c 69 74  if.typedef sqlit
99e0: 65 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  e_int64 sqlite3_
99f0: 69 6e 74 36 34 3b 0a 74 79 70 65 64 65 66 20 73  int64;.typedef s
9a00: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 73 71 6c  qlite_uint64 sql
9a10: 69 74 65 33 5f 75 69 6e 74 36 34 3b 0a 0a 2f 2a  ite3_uint64;../*
9a20: 0a 2a 2a 20 49 66 20 63 6f 6d 70 69 6c 69 6e 67  .** If compiling
9a30: 20 66 6f 72 20 61 20 70 72 6f 63 65 73 73 6f 72   for a processor
9a40: 20 74 68 61 74 20 6c 61 63 6b 73 20 66 6c 6f 61   that lacks floa
9a50: 74 69 6e 67 20 70 6f 69 6e 74 20 73 75 70 70 6f  ting point suppo
9a60: 72 74 2c 0a 2a 2a 20 73 75 62 73 74 69 74 75 74  rt,.** substitut
9a70: 65 20 69 6e 74 65 67 65 72 20 66 6f 72 20 66 6c  e integer for fl
9a80: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 2e 0a 2a 2f  oating-point..*/
9a90: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4f  .#ifdef SQLITE_O
9aa0: 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
9ab0: 4e 54 0a 23 20 64 65 66 69 6e 65 20 64 6f 75 62  NT.# define doub
9ac0: 6c 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  le sqlite3_int64
9ad0: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43  .#endif../*.** C
9ae0: 41 50 49 33 52 45 46 3a 20 43 6c 6f 73 69 6e 67  API3REF: Closing
9af0: 20 41 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e   A Database Conn
9b00: 65 63 74 69 6f 6e 0a 2a 2a 20 44 45 53 54 52 55  ection.** DESTRU
9b10: 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  CTOR: sqlite3.**
9b20: 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
9b30: 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20 73 71 6c  _close() and sql
9b40: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20  ite3_close_v2() 
9b50: 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64 65 73  routines are des
9b60: 74 72 75 63 74 6f 72 73 0a 2a 2a 20 66 6f 72 20  tructors.** for 
9b70: 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62  the [sqlite3] ob
9b80: 6a 65 63 74 2e 0a 2a 2a 20 5e 43 61 6c 6c 73 20  ject..** ^Calls 
9b90: 74 6f 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  to sqlite3_close
9ba0: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63  () and sqlite3_c
9bb0: 6c 6f 73 65 5f 76 32 28 29 20 72 65 74 75 72 6e  lose_v2() return
9bc0: 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 69 66 0a   [SQLITE_OK] if.
9bd0: 2a 2a 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d  ** the [sqlite3]
9be0: 20 6f 62 6a 65 63 74 20 69 73 20 73 75 63 63 65   object is succe
9bf0: 73 73 66 75 6c 6c 79 20 64 65 73 74 72 6f 79 65  ssfully destroye
9c00: 64 20 61 6e 64 20 61 6c 6c 20 61 73 73 6f 63 69  d and all associ
9c10: 61 74 65 64 0a 2a 2a 20 72 65 73 6f 75 72 63 65  ated.** resource
9c20: 73 20 61 72 65 20 64 65 61 6c 6c 6f 63 61 74 65  s are deallocate
9c30: 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  d..**.** ^If the
9c40: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
9c50: 74 69 6f 6e 20 69 73 20 61 73 73 6f 63 69 61 74  tion is associat
9c60: 65 64 20 77 69 74 68 20 75 6e 66 69 6e 61 6c 69  ed with unfinali
9c70: 7a 65 64 20 70 72 65 70 61 72 65 64 0a 2a 2a 20  zed prepared.** 
9c80: 73 74 61 74 65 6d 65 6e 74 73 20 6f 72 20 75 6e  statements or un
9c90: 66 69 6e 69 73 68 65 64 20 73 71 6c 69 74 65 33  finished sqlite3
9ca0: 5f 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 20  _backup objects 
9cb0: 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 63 6c 6f  then sqlite3_clo
9cc0: 73 65 28 29 0a 2a 2a 20 77 69 6c 6c 20 6c 65 61  se().** will lea
9cd0: 76 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ve the database 
9ce0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 70 65 6e 20  connection open 
9cf0: 61 6e 64 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  and return [SQLI
9d00: 54 45 5f 42 55 53 59 5d 2e 0a 2a 2a 20 5e 49 66  TE_BUSY]..** ^If
9d10: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76   sqlite3_close_v
9d20: 32 28 29 20 69 73 20 63 61 6c 6c 65 64 20 77 69  2() is called wi
9d30: 74 68 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70  th unfinalized p
9d40: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
9d50: 74 73 0a 2a 2a 20 61 6e 64 2f 6f 72 20 75 6e 66  ts.** and/or unf
9d60: 69 6e 69 73 68 65 64 20 73 71 6c 69 74 65 33 5f  inished sqlite3_
9d70: 62 61 63 6b 75 70 73 2c 20 74 68 65 6e 20 74 68  backups, then th
9d80: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
9d90: 63 74 69 6f 6e 20 62 65 63 6f 6d 65 73 0a 2a 2a  ction becomes.**
9da0: 20 61 6e 20 75 6e 75 73 61 62 6c 65 20 22 7a 6f   an unusable "zo
9db0: 6d 62 69 65 22 20 77 68 69 63 68 20 77 69 6c 6c  mbie" which will
9dc0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
9dd0: 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 77 68  e deallocated wh
9de0: 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 73 74 20 70  en the.** last p
9df0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
9e00: 74 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 20 6f  t is finalized o
9e10: 72 20 74 68 65 20 6c 61 73 74 20 73 71 6c 69 74  r the last sqlit
9e20: 65 33 5f 62 61 63 6b 75 70 20 69 73 0a 2a 2a 20  e3_backup is.** 
9e30: 66 69 6e 69 73 68 65 64 2e 20 20 54 68 65 20 73  finished.  The s
9e40: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28  qlite3_close_v2(
9e50: 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69  ) interface is i
9e60: 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20  ntended for use 
9e70: 77 69 74 68 0a 2a 2a 20 68 6f 73 74 20 6c 61 6e  with.** host lan
9e80: 67 75 61 67 65 73 20 74 68 61 74 20 61 72 65 20  guages that are 
9e90: 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 65  garbage collecte
9ea0: 64 2c 20 61 6e 64 20 77 68 65 72 65 20 74 68 65  d, and where the
9eb0: 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 0a   order in which.
9ec0: 2a 2a 20 64 65 73 74 72 75 63 74 6f 72 73 20 61  ** destructors a
9ed0: 72 65 20 63 61 6c 6c 65 64 20 69 73 20 61 72 62  re called is arb
9ee0: 69 74 72 61 72 79 2e 0a 2a 2a 0a 2a 2a 20 41 70  itrary..**.** Ap
9ef0: 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c  plications shoul
9f00: 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  d [sqlite3_final
9f10: 69 7a 65 20 7c 20 66 69 6e 61 6c 69 7a 65 5d 20  ize | finalize] 
9f20: 61 6c 6c 20 5b 70 72 65 70 61 72 65 64 20 73 74  all [prepared st
9f30: 61 74 65 6d 65 6e 74 73 5d 2c 0a 2a 2a 20 5b 73  atements],.** [s
9f40: 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73  qlite3_blob_clos
9f50: 65 20 7c 20 63 6c 6f 73 65 5d 20 61 6c 6c 20 5b  e | close] all [
9f60: 42 4c 4f 42 20 68 61 6e 64 6c 65 73 5d 2c 20 61  BLOB handles], a
9f70: 6e 64 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  nd .** [sqlite3_
9f80: 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 20 7c 20  backup_finish | 
9f90: 66 69 6e 69 73 68 5d 20 61 6c 6c 20 5b 73 71 6c  finish] all [sql
9fa0: 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a  ite3_backup] obj
9fb0: 65 63 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a  ects associated.
9fc0: 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 73 71 6c  ** with the [sql
9fd0: 69 74 65 33 5d 20 6f 62 6a 65 63 74 20 70 72 69  ite3] object pri
9fe0: 6f 72 20 74 6f 20 61 74 74 65 6d 70 74 69 6e 67  or to attempting
9ff0: 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 6f 62   to close the ob
a000: 6a 65 63 74 2e 20 20 5e 49 66 0a 2a 2a 20 73 71  ject.  ^If.** sq
a010: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
a020: 20 69 73 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20   is called on a 
a030: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
a040: 74 69 6f 6e 5d 20 74 68 61 74 20 73 74 69 6c 6c  tion] that still
a050: 20 68 61 73 0a 2a 2a 20 6f 75 74 73 74 61 6e 64   has.** outstand
a060: 69 6e 67 20 5b 70 72 65 70 61 72 65 64 20 73 74  ing [prepared st
a070: 61 74 65 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42  atements], [BLOB
a080: 20 68 61 6e 64 6c 65 73 5d 2c 20 61 6e 64 2f 6f   handles], and/o
a090: 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 61  r.** [sqlite3_ba
a0a0: 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 74 68  ckup] objects th
a0b0: 65 6e 20 69 74 20 72 65 74 75 72 6e 73 20 5b 53  en it returns [S
a0c0: 51 4c 49 54 45 5f 4f 4b 5d 20 61 6e 64 20 74 68  QLITE_OK] and th
a0d0: 65 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a  e deallocation.*
a0e0: 2a 20 6f 66 20 72 65 73 6f 75 72 63 65 73 20 69  * of resources i
a0f0: 73 20 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c  s deferred until
a100: 20 61 6c 6c 20 5b 70 72 65 70 61 72 65 64 20 73   all [prepared s
a110: 74 61 74 65 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f  tatements], [BLO
a120: 42 20 68 61 6e 64 6c 65 73 5d 2c 0a 2a 2a 20 61  B handles],.** a
a130: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b  nd [sqlite3_back
a140: 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 72 65 20  up] objects are 
a150: 61 6c 73 6f 20 64 65 73 74 72 6f 79 65 64 2e 0a  also destroyed..
a160: 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 5b 73 71  **.** ^If an [sq
a170: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 20 69 73  lite3] object is
a180: 20 64 65 73 74 72 6f 79 65 64 20 77 68 69 6c 65   destroyed while
a190: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69   a transaction i
a1a0: 73 20 6f 70 65 6e 2c 0a 2a 2a 20 74 68 65 20 74  s open,.** the t
a1b0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 61 75  ransaction is au
a1c0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 6f 6c 6c  tomatically roll
a1d0: 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54  ed back..**.** T
a1e0: 68 65 20 43 20 70 61 72 61 6d 65 74 65 72 20 74  he C parameter t
a1f0: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  o [sqlite3_close
a200: 28 43 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  (C)] and [sqlite
a210: 33 5f 63 6c 6f 73 65 5f 76 32 28 43 29 5d 0a 2a  3_close_v2(C)].*
a220: 2a 20 6d 75 73 74 20 62 65 20 65 69 74 68 65 72  * must be either
a230: 20 61 20 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74   a NULL.** point
a240: 65 72 20 6f 72 20 61 6e 20 5b 73 71 6c 69 74 65  er or an [sqlite
a250: 33 5d 20 6f 62 6a 65 63 74 20 70 6f 69 6e 74 65  3] object pointe
a260: 72 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72  r obtained.** fr
a270: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  om [sqlite3_open
a280: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
a290: 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 2a 2a 20 5b  en16()], or.** [
a2a0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
a2b0: 29 5d 2c 20 61 6e 64 20 6e 6f 74 20 70 72 65 76  )], and not prev
a2c0: 69 6f 75 73 6c 79 20 63 6c 6f 73 65 64 2e 0a 2a  iously closed..*
a2d0: 2a 20 5e 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74  * ^Calling sqlit
a2e0: 65 33 5f 63 6c 6f 73 65 28 29 20 6f 72 20 73 71  e3_close() or sq
a2f0: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
a300: 20 77 69 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69   with a NULL poi
a310: 6e 74 65 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  nter.** argument
a320: 20 69 73 20 61 20 68 61 72 6d 6c 65 73 73 20 6e   is a harmless n
a330: 6f 2d 6f 70 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  o-op..*/.SQLITE_
a340: 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
a350: 63 6c 6f 73 65 28 73 71 6c 69 74 65 33 2a 29 3b  close(sqlite3*);
a360: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
a370: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
a380: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
a390: 2a 2a 20 54 68 65 20 74 79 70 65 20 66 6f 72 20  ** The type for 
a3a0: 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  a callback funct
a3b0: 69 6f 6e 2e 0a 2a 2a 20 54 68 69 73 20 69 73 20  ion..** This is 
a3c0: 6c 65 67 61 63 79 20 61 6e 64 20 64 65 70 72 65  legacy and depre
a3d0: 63 61 74 65 64 2e 20 20 49 74 20 69 73 20 69 6e  cated.  It is in
a3e0: 63 6c 75 64 65 64 20 66 6f 72 20 68 69 73 74 6f  cluded for histo
a3f0: 72 69 63 61 6c 0a 2a 2a 20 63 6f 6d 70 61 74 69  rical.** compati
a400: 62 69 6c 69 74 79 20 61 6e 64 20 69 73 20 6e 6f  bility and is no
a410: 74 20 64 6f 63 75 6d 65 6e 74 65 64 2e 0a 2a 2f  t documented..*/
a420: 0a 74 79 70 65 64 65 66 20 69 6e 74 20 28 2a 73  .typedef int (*s
a430: 71 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b 29  qlite3_callback)
a440: 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a  (void*,int,char*
a450: 2a 2c 20 63 68 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a  *, char**);../*.
a460: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 6e 65  ** CAPI3REF: One
a470: 2d 53 74 65 70 20 51 75 65 72 79 20 45 78 65 63  -Step Query Exec
a480: 75 74 69 6f 6e 20 49 6e 74 65 72 66 61 63 65 0a  ution Interface.
a490: 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
a4a0: 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  e3.**.** The sql
a4b0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65  ite3_exec() inte
a4c0: 72 66 61 63 65 20 69 73 20 61 20 63 6f 6e 76 65  rface is a conve
a4d0: 6e 69 65 6e 63 65 20 77 72 61 70 70 65 72 20 61  nience wrapper a
a4e0: 72 6f 75 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  round.** [sqlite
a4f0: 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c  3_prepare_v2()],
a500: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
a510: 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ], and [sqlite3_
a520: 66 69 6e 61 6c 69 7a 65 28 29 5d 2c 0a 2a 2a 20  finalize()],.** 
a530: 74 68 61 74 20 61 6c 6c 6f 77 73 20 61 6e 20 61  that allows an a
a540: 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 72 75  pplication to ru
a550: 6e 20 6d 75 6c 74 69 70 6c 65 20 73 74 61 74 65  n multiple state
a560: 6d 65 6e 74 73 20 6f 66 20 53 51 4c 0a 2a 2a 20  ments of SQL.** 
a570: 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74  without having t
a580: 6f 20 75 73 65 20 61 20 6c 6f 74 20 6f 66 20 43  o use a lot of C
a590: 20 63 6f 64 65 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54   code. .**.** ^T
a5a0: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
a5b0: 29 20 69 6e 74 65 72 66 61 63 65 20 72 75 6e 73  ) interface runs
a5c0: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 55 54   zero or more UT
a5d0: 46 2d 38 20 65 6e 63 6f 64 65 64 2c 0a 2a 2a 20  F-8 encoded,.** 
a5e0: 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61  semicolon-separa
a5f0: 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  te SQL statement
a600: 73 20 70 61 73 73 65 64 20 69 6e 74 6f 20 69 74  s passed into it
a610: 73 20 32 6e 64 20 61 72 67 75 6d 65 6e 74 2c 0a  s 2nd argument,.
a620: 2a 2a 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78  ** in the contex
a630: 74 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  t of the [databa
a640: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 70  se connection] p
a650: 61 73 73 65 64 20 69 6e 20 61 73 20 69 74 73 20  assed in as its 
a660: 31 73 74 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 2e  1st.** argument.
a670: 20 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61    ^If the callba
a680: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74  ck function of t
a690: 68 65 20 33 72 64 20 61 72 67 75 6d 65 6e 74 20  he 3rd argument 
a6a0: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78  to.** sqlite3_ex
a6b0: 65 63 28 29 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  ec() is not NULL
a6c0: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76  , then it is inv
a6d0: 6f 6b 65 64 20 66 6f 72 20 65 61 63 68 20 72 65  oked for each re
a6e0: 73 75 6c 74 20 72 6f 77 0a 2a 2a 20 63 6f 6d 69  sult row.** comi
a6f0: 6e 67 20 6f 75 74 20 6f 66 20 74 68 65 20 65 76  ng out of the ev
a700: 61 6c 75 61 74 65 64 20 53 51 4c 20 73 74 61 74  aluated SQL stat
a710: 65 6d 65 6e 74 73 2e 20 20 5e 54 68 65 20 34 74  ements.  ^The 4t
a720: 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  h argument to.**
a730: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
a740: 69 73 20 72 65 6c 61 79 65 64 20 74 68 72 6f 75  is relayed throu
a750: 67 68 20 74 6f 20 74 68 65 20 31 73 74 20 61 72  gh to the 1st ar
a760: 67 75 6d 65 6e 74 20 6f 66 20 65 61 63 68 0a 2a  gument of each.*
a770: 2a 20 63 61 6c 6c 62 61 63 6b 20 69 6e 76 6f 63  * callback invoc
a780: 61 74 69 6f 6e 2e 20 20 5e 49 66 20 74 68 65 20  ation.  ^If the 
a790: 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72  callback pointer
a7a0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63   to sqlite3_exec
a7b0: 28 29 0a 2a 2a 20 69 73 20 4e 55 4c 4c 2c 20 74  ().** is NULL, t
a7c0: 68 65 6e 20 6e 6f 20 63 61 6c 6c 62 61 63 6b 20  hen no callback 
a7d0: 69 73 20 65 76 65 72 20 69 6e 76 6f 6b 65 64 20  is ever invoked 
a7e0: 61 6e 64 20 72 65 73 75 6c 74 20 72 6f 77 73 20  and result rows 
a7f0: 61 72 65 0a 2a 2a 20 69 67 6e 6f 72 65 64 2e 0a  are.** ignored..
a800: 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 65 72 72  **.** ^If an err
a810: 6f 72 20 6f 63 63 75 72 73 20 77 68 69 6c 65 20  or occurs while 
a820: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 53  evaluating the S
a830: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 70 61  QL statements pa
a840: 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 73 71 6c  ssed into.** sql
a850: 69 74 65 33 5f 65 78 65 63 28 29 2c 20 74 68 65  ite3_exec(), the
a860: 6e 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74  n execution of t
a870: 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  he current state
a880: 6d 65 6e 74 20 73 74 6f 70 73 20 61 6e 64 0a 2a  ment stops and.*
a890: 2a 20 73 75 62 73 65 71 75 65 6e 74 20 73 74 61  * subsequent sta
a8a0: 74 65 6d 65 6e 74 73 20 61 72 65 20 73 6b 69 70  tements are skip
a8b0: 70 65 64 2e 20 20 5e 49 66 20 74 68 65 20 35 74  ped.  ^If the 5t
a8c0: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  h parameter to s
a8d0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a  qlite3_exec().**
a8e0: 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65   is not NULL the
a8f0: 6e 20 61 6e 79 20 65 72 72 6f 72 20 6d 65 73 73  n any error mess
a900: 61 67 65 20 69 73 20 77 72 69 74 74 65 6e 20 69  age is written i
a910: 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69  nto memory obtai
a920: 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
a930: 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61  ite3_malloc()] a
a940: 6e 64 20 70 61 73 73 65 64 20 62 61 63 6b 20 74  nd passed back t
a950: 68 72 6f 75 67 68 20 74 68 65 20 35 74 68 20 70  hrough the 5th p
a960: 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 54 6f 20  arameter..** To 
a970: 61 76 6f 69 64 20 6d 65 6d 6f 72 79 20 6c 65 61  avoid memory lea
a980: 6b 73 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74  ks, the applicat
a990: 69 6f 6e 20 73 68 6f 75 6c 64 20 69 6e 76 6f 6b  ion should invok
a9a0: 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  e [sqlite3_free(
a9b0: 29 5d 0a 2a 2a 20 6f 6e 20 65 72 72 6f 72 20 6d  )].** on error m
a9c0: 65 73 73 61 67 65 20 73 74 72 69 6e 67 73 20 72  essage strings r
a9d0: 65 74 75 72 6e 65 64 20 74 68 72 6f 75 67 68 20  eturned through 
a9e0: 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65  the 5th paramete
a9f0: 72 20 6f 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  r of.** sqlite3_
aa00: 65 78 65 63 28 29 20 61 66 74 65 72 20 74 68 65  exec() after the
aa10: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
aa20: 74 72 69 6e 67 20 69 73 20 6e 6f 20 6c 6f 6e 67  tring is no long
aa30: 65 72 20 6e 65 65 64 65 64 2e 0a 2a 2a 20 5e 49  er needed..** ^I
aa40: 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d 65  f the 5th parame
aa50: 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65  ter to sqlite3_e
aa60: 78 65 63 28 29 20 69 73 20 6e 6f 74 20 4e 55 4c  xec() is not NUL
aa70: 4c 20 61 6e 64 20 6e 6f 20 65 72 72 6f 72 73 0a  L and no errors.
aa80: 2a 2a 20 6f 63 63 75 72 2c 20 74 68 65 6e 20 73  ** occur, then s
aa90: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 73 65  qlite3_exec() se
aaa0: 74 73 20 74 68 65 20 70 6f 69 6e 74 65 72 20 69  ts the pointer i
aab0: 6e 20 69 74 73 20 35 74 68 20 70 61 72 61 6d 65  n its 5th parame
aac0: 74 65 72 20 74 6f 0a 2a 2a 20 4e 55 4c 4c 20 62  ter to.** NULL b
aad0: 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e 67 2e  efore returning.
aae0: 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 73 71  .**.** ^If an sq
aaf0: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c  lite3_exec() cal
ab00: 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f  lback returns no
ab10: 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 73 71 6c 69  n-zero, the sqli
ab20: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 72 6f  te3_exec().** ro
ab30: 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 53 51  utine returns SQ
ab40: 4c 49 54 45 5f 41 42 4f 52 54 20 77 69 74 68 6f  LITE_ABORT witho
ab50: 75 74 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  ut invoking the 
ab60: 63 61 6c 6c 62 61 63 6b 20 61 67 61 69 6e 20 61  callback again a
ab70: 6e 64 0a 2a 2a 20 77 69 74 68 6f 75 74 20 72 75  nd.** without ru
ab80: 6e 6e 69 6e 67 20 61 6e 79 20 73 75 62 73 65 71  nning any subseq
ab90: 75 65 6e 74 20 53 51 4c 20 73 74 61 74 65 6d 65  uent SQL stateme
aba0: 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  nts..**.** ^The 
abb0: 32 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  2nd argument to 
abc0: 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  the sqlite3_exec
abd0: 28 29 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  () callback func
abe0: 74 69 6f 6e 20 69 73 20 74 68 65 0a 2a 2a 20 6e  tion is the.** n
abf0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
ac00: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
ac10: 20 5e 54 68 65 20 33 72 64 20 61 72 67 75 6d 65   ^The 3rd argume
ac20: 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  nt to the sqlite
ac30: 33 5f 65 78 65 63 28 29 0a 2a 2a 20 63 61 6c 6c  3_exec().** call
ac40: 62 61 63 6b 20 69 73 20 61 6e 20 61 72 72 61 79  back is an array
ac50: 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 20   of pointers to 
ac60: 73 74 72 69 6e 67 73 20 6f 62 74 61 69 6e 65 64  strings obtained
ac70: 20 61 73 20 69 66 20 66 72 6f 6d 0a 2a 2a 20 5b   as if from.** [
ac80: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
ac90: 65 78 74 28 29 5d 2c 20 6f 6e 65 20 66 6f 72 20  ext()], one for 
aca0: 65 61 63 68 20 63 6f 6c 75 6d 6e 2e 20 20 5e 49  each column.  ^I
acb0: 66 20 61 6e 20 65 6c 65 6d 65 6e 74 20 6f 66 20  f an element of 
acc0: 61 0a 2a 2a 20 72 65 73 75 6c 74 20 72 6f 77 20  a.** result row 
acd0: 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68 65  is NULL then the
ace0: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 73   corresponding s
acf0: 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 66 6f  tring pointer fo
ad00: 72 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  r the.** sqlite3
ad10: 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b  _exec() callback
ad20: 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
ad30: 65 72 2e 20 20 5e 54 68 65 20 34 74 68 20 61 72  er.  ^The 4th ar
ad40: 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a  gument to the.**
ad50: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
ad60: 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 61  callback is an a
ad70: 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73  rray of pointers
ad80: 20 74 6f 20 73 74 72 69 6e 67 73 20 77 68 65 72   to strings wher
ad90: 65 20 65 61 63 68 0a 2a 2a 20 65 6e 74 72 79 20  e each.** entry 
ada0: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e  represents the n
adb0: 61 6d 65 20 6f 66 20 63 6f 72 72 65 73 70 6f 6e  ame of correspon
adc0: 64 69 6e 67 20 72 65 73 75 6c 74 20 63 6f 6c 75  ding result colu
add0: 6d 6e 20 61 73 20 6f 62 74 61 69 6e 65 64 0a 2a  mn as obtained.*
ade0: 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  * from [sqlite3_
adf0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 5d 2e 0a  column_name()]..
ae00: 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 32 6e  **.** ^If the 2n
ae10: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  d parameter to s
ae20: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
ae30: 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
ae40: 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f   a pointer.** to
ae50: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
ae60: 2c 20 6f 72 20 61 20 70 6f 69 6e 74 65 72 20 74  , or a pointer t
ae70: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c  hat contains onl
ae80: 79 20 77 68 69 74 65 73 70 61 63 65 20 61 6e 64  y whitespace and
ae90: 2f 6f 72 20 0a 2a 2a 20 53 51 4c 20 63 6f 6d 6d  /or .** SQL comm
aea0: 65 6e 74 73 2c 20 74 68 65 6e 20 6e 6f 20 53 51  ents, then no SQ
aeb0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
aec0: 20 65 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74   evaluated and t
aed0: 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 69  he database.** i
aee0: 73 20 6e 6f 74 20 63 68 61 6e 67 65 64 2e 0a 2a  s not changed..*
aef0: 2a 0a 2a 2a 20 52 65 73 74 72 69 63 74 69 6f 6e  *.** Restriction
af00: 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  s:.**.** <ul>.**
af10: 20 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c 69 63   <li> The applic
af20: 61 74 69 6f 6e 20 6d 75 73 74 20 65 6e 73 75 72  ation must ensur
af30: 65 20 74 68 61 74 20 74 68 65 20 31 73 74 20 70  e that the 1st p
af40: 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
af50: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 20 20  te3_exec().**   
af60: 20 20 20 69 73 20 61 20 76 61 6c 69 64 20 61 6e     is a valid an
af70: 64 20 6f 70 65 6e 20 5b 64 61 74 61 62 61 73 65  d open [database
af80: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a   connection]..**
af90: 20 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c 69 63   <li> The applic
afa0: 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 63  ation must not c
afb0: 6c 6f 73 65 20 74 68 65 20 5b 64 61 74 61 62 61  lose the [databa
afc0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 73  se connection] s
afd0: 70 65 63 69 66 69 65 64 20 62 79 0a 2a 2a 20 20  pecified by.**  
afe0: 20 20 20 20 74 68 65 20 31 73 74 20 70 61 72 61      the 1st para
aff0: 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
b000: 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73 71  _exec() while sq
b010: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20  lite3_exec() is 
b020: 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 6c 69 3e  running..** <li>
b030: 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
b040: 20 6d 75 73 74 20 6e 6f 74 20 6d 6f 64 69 66 79   must not modify
b050: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
b060: 6e 74 20 74 65 78 74 20 70 61 73 73 65 64 20 69  nt text passed i
b070: 6e 74 6f 0a 2a 2a 20 20 20 20 20 20 74 68 65 20  nto.**      the 
b080: 32 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6f 66  2nd parameter of
b090: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
b0a0: 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65 78  while sqlite3_ex
b0b0: 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e  ec() is running.
b0c0: 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51 4c  .** </ul>.*/.SQL
b0d0: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
b0e0: 74 65 33 5f 65 78 65 63 28 0a 20 20 73 71 6c 69  te3_exec(.  sqli
b0f0: 74 65 33 2a 2c 20 20 20 20 20 20 20 20 20 20 20  te3*,           
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b110: 20 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70 65         /* An ope
b120: 6e 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20 20  n database */.  
b130: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c  const char *sql,
b140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b150: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53 51             /* SQ
b160: 4c 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65  L to be evaluate
b170: 64 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 63 61 6c  d */.  int (*cal
b180: 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c 69 6e 74  lback)(void*,int
b190: 2c 63 68 61 72 2a 2a 2c 63 68 61 72 2a 2a 29 2c  ,char**,char**),
b1a0: 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 66 75    /* Callback fu
b1b0: 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64  nction */.  void
b1c0: 20 2a 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   *,             
b1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1e0: 20 20 20 20 20 20 20 2f 2a 20 31 73 74 20 61 72         /* 1st ar
b1f0: 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62 61  gument to callba
b200: 63 6b 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 65  ck */.  char **e
b210: 72 72 6d 73 67 20 20 20 20 20 20 20 20 20 20 20  rrmsg           
b220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b230: 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20     /* Error msg 
b240: 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a  written here */.
b250: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
b260: 45 46 3a 20 52 65 73 75 6c 74 20 43 6f 64 65 73  EF: Result Codes
b270: 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 72  .** KEYWORDS: {r
b280: 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e  esult code defin
b290: 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 4d 61  itions}.**.** Ma
b2a0: 6e 79 20 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ny SQLite functi
b2b0: 6f 6e 73 20 72 65 74 75 72 6e 20 61 6e 20 69 6e  ons return an in
b2c0: 74 65 67 65 72 20 72 65 73 75 6c 74 20 63 6f 64  teger result cod
b2d0: 65 20 66 72 6f 6d 20 74 68 65 20 73 65 74 20 73  e from the set s
b2e0: 68 6f 77 6e 0a 2a 2a 20 68 65 72 65 20 69 6e 20  hown.** here in 
b2f0: 6f 72 64 65 72 20 74 6f 20 69 6e 64 69 63 61 74  order to indicat
b300: 65 20 73 75 63 63 65 73 73 20 6f 72 20 66 61 69  e success or fai
b310: 6c 75 72 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20  lure..**.** New 
b320: 65 72 72 6f 72 20 63 6f 64 65 73 20 6d 61 79 20  error codes may 
b330: 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75  be added in futu
b340: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
b350: 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  QLite..**.** See
b360: 20 61 6c 73 6f 3a 20 5b 65 78 74 65 6e 64 65 64   also: [extended
b370: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66   result code def
b380: 69 6e 69 74 69 6f 6e 73 5d 0a 2a 2f 0a 23 64 65  initions].*/.#de
b390: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20  fine SQLITE_OK  
b3a0: 20 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20           0   /* 
b3b0: 53 75 63 63 65 73 73 66 75 6c 20 72 65 73 75 6c  Successful resul
b3c0: 74 20 2a 2f 0a 2f 2a 20 62 65 67 69 6e 6e 69 6e  t */./* beginnin
b3d0: 67 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  g-of-error-codes
b3e0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b3f0: 54 45 5f 45 52 52 4f 52 20 20 20 20 20 20 20 20  TE_ERROR        
b400: 31 20 20 20 2f 2a 20 47 65 6e 65 72 69 63 20 65  1   /* Generic e
b410: 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rror */.#define 
b420: 53 51 4c 49 54 45 5f 49 4e 54 45 52 4e 41 4c 20  SQLITE_INTERNAL 
b430: 20 20 20 20 32 20 20 20 2f 2a 20 49 6e 74 65 72      2   /* Inter
b440: 6e 61 6c 20 6c 6f 67 69 63 20 65 72 72 6f 72 20  nal logic error 
b450: 69 6e 20 53 51 4c 69 74 65 20 2a 2f 0a 23 64 65  in SQLite */.#de
b460: 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 45 52 4d  fine SQLITE_PERM
b470: 20 20 20 20 20 20 20 20 20 33 20 20 20 2f 2a 20           3   /* 
b480: 41 63 63 65 73 73 20 70 65 72 6d 69 73 73 69 6f  Access permissio
b490: 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65 66  n denied */.#def
b4a0: 69 6e 65 20 53 51 4c 49 54 45 5f 41 42 4f 52 54  ine SQLITE_ABORT
b4b0: 20 20 20 20 20 20 20 20 34 20 20 20 2f 2a 20 43          4   /* C
b4c0: 61 6c 6c 62 61 63 6b 20 72 6f 75 74 69 6e 65 20  allback routine 
b4d0: 72 65 71 75 65 73 74 65 64 20 61 6e 20 61 62 6f  requested an abo
b4e0: 72 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  rt */.#define SQ
b4f0: 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20 20 20  LITE_BUSY       
b500: 20 20 35 20 20 20 2f 2a 20 54 68 65 20 64 61 74    5   /* The dat
b510: 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 6c 6f  abase file is lo
b520: 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  cked */.#define 
b530: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20  SQLITE_LOCKED   
b540: 20 20 20 20 36 20 20 20 2f 2a 20 41 20 74 61 62      6   /* A tab
b550: 6c 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  le in the databa
b560: 73 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a  se is locked */.
b570: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e  #define SQLITE_N
b580: 4f 4d 45 4d 20 20 20 20 20 20 20 20 37 20 20 20  OMEM        7   
b590: 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28 29 20 66 61  /* A malloc() fa
b5a0: 69 6c 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  iled */.#define 
b5b0: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
b5c0: 20 20 20 20 38 20 20 20 2f 2a 20 41 74 74 65 6d      8   /* Attem
b5d0: 70 74 20 74 6f 20 77 72 69 74 65 20 61 20 72 65  pt to write a re
b5e0: 61 64 6f 6e 6c 79 20 64 61 74 61 62 61 73 65 20  adonly database 
b5f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b600: 45 5f 49 4e 54 45 52 52 55 50 54 20 20 20 20 39  E_INTERRUPT    9
b610: 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20     /* Operation 
b620: 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 73 71  terminated by sq
b630: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
b640: 29 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  )*/.#define SQLI
b650: 54 45 5f 49 4f 45 52 52 20 20 20 20 20 20 20 31  TE_IOERR       1
b660: 30 20 20 20 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64  0   /* Some kind
b670: 20 6f 66 20 64 69 73 6b 20 49 2f 4f 20 65 72 72   of disk I/O err
b680: 6f 72 20 6f 63 63 75 72 72 65 64 20 2a 2f 0a 23  or occurred */.#
b690: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
b6a0: 52 52 55 50 54 20 20 20 20 20 31 31 20 20 20 2f  RRUPT     11   /
b6b0: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 64  * The database d
b6c0: 69 73 6b 20 69 6d 61 67 65 20 69 73 20 6d 61 6c  isk image is mal
b6d0: 66 6f 72 6d 65 64 20 2a 2f 0a 23 64 65 66 69 6e  formed */.#defin
b6e0: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  e SQLITE_NOTFOUN
b6f0: 44 20 20 20 20 31 32 20 20 20 2f 2a 20 55 6e 6b  D    12   /* Unk
b700: 6e 6f 77 6e 20 6f 70 63 6f 64 65 20 69 6e 20 73  nown opcode in s
b710: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
b720: 72 6f 6c 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65  rol() */.#define
b730: 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20 20 20   SQLITE_FULL    
b740: 20 20 20 20 31 33 20 20 20 2f 2a 20 49 6e 73 65      13   /* Inse
b750: 72 74 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63  rtion failed bec
b760: 61 75 73 65 20 64 61 74 61 62 61 73 65 20 69 73  ause database is
b770: 20 66 75 6c 6c 20 2a 2f 0a 23 64 65 66 69 6e 65   full */.#define
b780: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
b790: 20 20 20 20 31 34 20 20 20 2f 2a 20 55 6e 61 62      14   /* Unab
b7a0: 6c 65 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 64  le to open the d
b7b0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 2a 2f 0a  atabase file */.
b7c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50  #define SQLITE_P
b7d0: 52 4f 54 4f 43 4f 4c 20 20 20 20 31 35 20 20 20  ROTOCOL    15   
b7e0: 2f 2a 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b  /* Database lock
b7f0: 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f 72 20   protocol error 
b800: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b810: 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20 31 36  E_EMPTY       16
b820: 20 20 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 75     /* Internal u
b830: 73 65 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  se only */.#defi
b840: 6e 65 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  ne SQLITE_SCHEMA
b850: 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20 54 68        17   /* Th
b860: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
b870: 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23 64 65  a changed */.#de
b880: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42  fine SQLITE_TOOB
b890: 49 47 20 20 20 20 20 20 31 38 20 20 20 2f 2a 20  IG      18   /* 
b8a0: 53 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 65  String or BLOB e
b8b0: 78 63 65 65 64 73 20 73 69 7a 65 20 6c 69 6d 69  xceeds size limi
b8c0: 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  t */.#define SQL
b8d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 20  ITE_CONSTRAINT  
b8e0: 31 39 20 20 20 2f 2a 20 41 62 6f 72 74 20 64 75  19   /* Abort du
b8f0: 65 20 74 6f 20 63 6f 6e 73 74 72 61 69 6e 74 20  e to constraint 
b900: 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f 0a 23 64 65  violation */.#de
b910: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53 4d  fine SQLITE_MISM
b920: 41 54 43 48 20 20 20 20 32 30 20 20 20 2f 2a 20  ATCH    20   /* 
b930: 44 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74  Data type mismat
b940: 63 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ch */.#define SQ
b950: 4c 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20 20  LITE_MISUSE     
b960: 20 32 31 20 20 20 2f 2a 20 4c 69 62 72 61 72 79   21   /* Library
b970: 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74 6c   used incorrectl
b980: 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
b990: 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 20  ITE_NOLFS       
b9a0: 32 32 20 20 20 2f 2a 20 55 73 65 73 20 4f 53 20  22   /* Uses OS 
b9b0: 66 65 61 74 75 72 65 73 20 6e 6f 74 20 73 75 70  features not sup
b9c0: 70 6f 72 74 65 64 20 6f 6e 20 68 6f 73 74 20 2a  ported on host *
b9d0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b9e0: 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33 20  _AUTH        23 
b9f0: 20 20 2f 2a 20 41 75 74 68 6f 72 69 7a 61 74 69    /* Authorizati
ba00: 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65  on denied */.#de
ba10: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4f 52 4d  fine SQLITE_FORM
ba20: 41 54 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20  AT      24   /* 
ba30: 4e 6f 74 20 75 73 65 64 20 2a 2f 0a 23 64 65 66  Not used */.#def
ba40: 69 6e 65 20 53 51 4c 49 54 45 5f 52 41 4e 47 45  ine SQLITE_RANGE
ba50: 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 32         25   /* 2
ba60: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
ba70: 73 71 6c 69 74 65 33 5f 62 69 6e 64 20 6f 75 74  sqlite3_bind out
ba80: 20 6f 66 20 72 61 6e 67 65 20 2a 2f 0a 23 64 65   of range */.#de
ba90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 41  fine SQLITE_NOTA
baa0: 44 42 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20  DB      26   /* 
bab0: 46 69 6c 65 20 6f 70 65 6e 65 64 20 74 68 61 74  File opened that
bac0: 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61   is not a databa
bad0: 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69  se file */.#defi
bae0: 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45  ne SQLITE_NOTICE
baf0: 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 4e 6f        27   /* No
bb00: 74 69 66 69 63 61 74 69 6f 6e 73 20 66 72 6f 6d  tifications from
bb10: 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 2a   sqlite3_log() *
bb20: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
bb30: 5f 57 41 52 4e 49 4e 47 20 20 20 20 20 32 38 20  _WARNING     28 
bb40: 20 20 2f 2a 20 57 61 72 6e 69 6e 67 73 20 66 72    /* Warnings fr
bb50: 6f 6d 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  om sqlite3_log()
bb60: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bb70: 54 45 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31  TE_ROW         1
bb80: 30 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73  00  /* sqlite3_s
bb90: 74 65 70 28 29 20 68 61 73 20 61 6e 6f 74 68 65  tep() has anothe
bba0: 72 20 72 6f 77 20 72 65 61 64 79 20 2a 2f 0a 23  r row ready */.#
bbb0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 4f  define SQLITE_DO
bbc0: 4e 45 20 20 20 20 20 20 20 20 31 30 31 20 20 2f  NE        101  /
bbd0: 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  * sqlite3_step()
bbe0: 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 65 78   has finished ex
bbf0: 65 63 75 74 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e  ecuting */./* en
bc00: 64 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  d-of-error-codes
bc10: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
bc20: 52 45 46 3a 20 45 78 74 65 6e 64 65 64 20 52 65  REF: Extended Re
bc30: 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45  sult Codes.** KE
bc40: 59 57 4f 52 44 53 3a 20 7b 65 78 74 65 6e 64 65  YWORDS: {extende
bc50: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65  d result code de
bc60: 66 69 6e 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a  finitions}.**.**
bc70: 20 49 6e 20 69 74 73 20 64 65 66 61 75 6c 74 20   In its default 
bc80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 53  configuration, S
bc90: 51 4c 69 74 65 20 41 50 49 20 72 6f 75 74 69 6e  QLite API routin
bca0: 65 73 20 72 65 74 75 72 6e 20 6f 6e 65 20 6f 66  es return one of
bcb0: 20 33 30 20 69 6e 74 65 67 65 72 0a 2a 2a 20 5b   30 integer.** [
bcc0: 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 2e 20 20  result codes].  
bcd0: 48 6f 77 65 76 65 72 2c 20 65 78 70 65 72 69 65  However, experie
bce0: 6e 63 65 20 68 61 73 20 73 68 6f 77 6e 20 74 68  nce has shown th
bcf0: 61 74 20 6d 61 6e 79 20 6f 66 0a 2a 2a 20 74 68  at many of.** th
bd00: 65 73 65 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ese result codes
bd10: 20 61 72 65 20 74 6f 6f 20 63 6f 61 72 73 65 2d   are too coarse-
bd20: 67 72 61 69 6e 65 64 2e 20 20 54 68 65 79 20 64  grained.  They d
bd30: 6f 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 73  o not provide as
bd40: 0a 2a 2a 20 6d 75 63 68 20 69 6e 66 6f 72 6d 61  .** much informa
bd50: 74 69 6f 6e 20 61 62 6f 75 74 20 70 72 6f 62 6c  tion about probl
bd60: 65 6d 73 20 61 73 20 70 72 6f 67 72 61 6d 6d 65  ems as programme
bd70: 72 73 20 6d 69 67 68 74 20 6c 69 6b 65 2e 20 20  rs might like.  
bd80: 49 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 0a  In an effort to.
bd90: 2a 2a 20 61 64 64 72 65 73 73 20 74 68 69 73 2c  ** address this,
bda0: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20   newer versions 
bdb0: 6f 66 20 53 51 4c 69 74 65 20 28 76 65 72 73 69  of SQLite (versi
bdc0: 6f 6e 20 33 2e 33 2e 38 20 5b 64 61 74 65 6f 66  on 3.3.8 [dateof
bdd0: 3a 33 2e 33 2e 38 5d 0a 2a 2a 20 61 6e 64 20 6c  :3.3.8].** and l
bde0: 61 74 65 72 29 20 69 6e 63 6c 75 64 65 0a 2a 2a  ater) include.**
bdf0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 64 64   support for add
be00: 69 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 20 63  itional result c
be10: 6f 64 65 73 20 74 68 61 74 20 70 72 6f 76 69 64  odes that provid
be20: 65 20 6d 6f 72 65 20 64 65 74 61 69 6c 65 64 20  e more detailed 
be30: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 61  information.** a
be40: 62 6f 75 74 20 65 72 72 6f 72 73 2e 20 54 68 65  bout errors. The
be50: 73 65 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  se [extended res
be60: 75 6c 74 20 63 6f 64 65 73 5d 20 61 72 65 20 65  ult codes] are e
be70: 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61 62 6c  nabled or disabl
be80: 65 64 0a 2a 2a 20 6f 6e 20 61 20 70 65 72 20 64  ed.** on a per d
be90: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
bea0: 6f 6e 20 62 61 73 69 73 20 75 73 69 6e 67 20 74  on basis using t
beb0: 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  he.** [sqlite3_e
bec0: 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
bed0: 6f 64 65 73 28 29 5d 20 41 50 49 2e 20 20 4f 72  odes()] API.  Or
bee0: 2c 20 74 68 65 20 65 78 74 65 6e 64 65 64 20 63  , the extended c
bef0: 6f 64 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 6d  ode for.** the m
bf00: 6f 73 74 20 72 65 63 65 6e 74 20 65 72 72 6f 72  ost recent error
bf10: 20 63 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64   can be obtained
bf20: 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74   using.** [sqlit
bf30: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
bf40: 6f 64 65 28 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69  ode()]..*/.#defi
bf50: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
bf60: 52 45 41 44 20 20 20 20 20 20 20 20 20 20 20 20  READ            
bf70: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
bf80: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
bf90: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53  e SQLITE_IOERR_S
bfa0: 48 4f 52 54 5f 52 45 41 44 20 20 20 20 20 20 20  HORT_READ       
bfb0: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
bfc0: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
bfd0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57 52   SQLITE_IOERR_WR
bfe0: 49 54 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ITE             
bff0: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c000: 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (3<<8)).#define 
c010: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 59  SQLITE_IOERR_FSY
c020: 4e 43 20 20 20 20 20 20 20 20 20 20 20 20 20 28  NC             (
c030: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c040: 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  4<<8)).#define S
c050: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52 5f  QLITE_IOERR_DIR_
c060: 46 53 59 4e 43 20 20 20 20 20 20 20 20 20 28 53  FSYNC         (S
c070: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 35  QLITE_IOERR | (5
c080: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c090: 4c 49 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43  LITE_IOERR_TRUNC
c0a0: 41 54 45 20 20 20 20 20 20 20 20 20 20 28 53 51  ATE          (SQ
c0b0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 36 3c  LITE_IOERR | (6<
c0c0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c0d0: 49 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20  ITE_IOERR_FSTAT 
c0e0: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
c0f0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c  ITE_IOERR | (7<<
c100: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c110: 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20  TE_IOERR_UNLOCK 
c120: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
c130: 54 45 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c 38  TE_IOERR | (8<<8
c140: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c150: 45 5f 49 4f 45 52 52 5f 52 44 4c 4f 43 4b 20 20  E_IOERR_RDLOCK  
c160: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c170: 45 5f 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38 29  E_IOERR | (9<<8)
c180: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c190: 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 20 20 20  _IOERR_DELETE   
c1a0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c1b0: 5f 49 4f 45 52 52 20 7c 20 28 31 30 3c 3c 38 29  _IOERR | (10<<8)
c1c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c1d0: 5f 49 4f 45 52 52 5f 42 4c 4f 43 4b 45 44 20 20  _IOERR_BLOCKED  
c1e0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c1f0: 5f 49 4f 45 52 52 20 7c 20 28 31 31 3c 3c 38 29  _IOERR | (11<<8)
c200: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c210: 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20 20 20  _IOERR_NOMEM    
c220: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c230: 5f 49 4f 45 52 52 20 7c 20 28 31 32 3c 3c 38 29  _IOERR | (12<<8)
c240: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c250: 5f 49 4f 45 52 52 5f 41 43 43 45 53 53 20 20 20  _IOERR_ACCESS   
c260: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c270: 5f 49 4f 45 52 52 20 7c 20 28 31 33 3c 3c 38 29  _IOERR | (13<<8)
c280: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c290: 5f 49 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45  _IOERR_CHECKRESE
c2a0: 52 56 45 44 4c 4f 43 4b 20 28 53 51 4c 49 54 45  RVEDLOCK (SQLITE
c2b0: 5f 49 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38 29  _IOERR | (14<<8)
c2c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c2d0: 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 20 20 20 20  _IOERR_LOCK     
c2e0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c2f0: 5f 49 4f 45 52 52 20 7c 20 28 31 35 3c 3c 38 29  _IOERR | (15<<8)
c300: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c310: 5f 49 4f 45 52 52 5f 43 4c 4f 53 45 20 20 20 20  _IOERR_CLOSE    
c320: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c330: 5f 49 4f 45 52 52 20 7c 20 28 31 36 3c 3c 38 29  _IOERR | (16<<8)
c340: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c350: 5f 49 4f 45 52 52 5f 44 49 52 5f 43 4c 4f 53 45  _IOERR_DIR_CLOSE
c360: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c370: 5f 49 4f 45 52 52 20 7c 20 28 31 37 3c 3c 38 29  _IOERR | (17<<8)
c380: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c390: 5f 49 4f 45 52 52 5f 53 48 4d 4f 50 45 4e 20 20  _IOERR_SHMOPEN  
c3a0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c3b0: 5f 49 4f 45 52 52 20 7c 20 28 31 38 3c 3c 38 29  _IOERR | (18<<8)
c3c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c3d0: 5f 49 4f 45 52 52 5f 53 48 4d 53 49 5a 45 20 20  _IOERR_SHMSIZE  
c3e0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c3f0: 5f 49 4f 45 52 52 20 7c 20 28 31 39 3c 3c 38 29  _IOERR | (19<<8)
c400: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c410: 5f 49 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 20  _IOERR_SHMLOCK  
c420: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c430: 5f 49 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38 29  _IOERR | (20<<8)
c440: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c450: 5f 49 4f 45 52 52 5f 53 48 4d 4d 41 50 20 20 20  _IOERR_SHMMAP   
c460: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c470: 5f 49 4f 45 52 52 20 7c 20 28 32 31 3c 3c 38 29  _IOERR | (21<<8)
c480: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c490: 5f 49 4f 45 52 52 5f 53 45 45 4b 20 20 20 20 20  _IOERR_SEEK     
c4a0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c4b0: 5f 49 4f 45 52 52 20 7c 20 28 32 32 3c 3c 38 29  _IOERR | (22<<8)
c4c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c4d0: 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e 4f  _IOERR_DELETE_NO
c4e0: 45 4e 54 20 20 20 20 20 20 28 53 51 4c 49 54 45  ENT      (SQLITE
c4f0: 5f 49 4f 45 52 52 20 7c 20 28 32 33 3c 3c 38 29  _IOERR | (23<<8)
c500: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c510: 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 20 20 20 20  _IOERR_MMAP     
c520: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c530: 5f 49 4f 45 52 52 20 7c 20 28 32 34 3c 3c 38 29  _IOERR | (24<<8)
c540: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c550: 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d 50 50 41  _IOERR_GETTEMPPA
c560: 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  TH       (SQLITE
c570: 5f 49 4f 45 52 52 20 7c 20 28 32 35 3c 3c 38 29  _IOERR | (25<<8)
c580: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c590: 5f 49 4f 45 52 52 5f 43 4f 4e 56 50 41 54 48 20  _IOERR_CONVPATH 
c5a0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c5b0: 5f 49 4f 45 52 52 20 7c 20 28 32 36 3c 3c 38 29  _IOERR | (26<<8)
c5c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c5d0: 5f 49 4f 45 52 52 5f 56 4e 4f 44 45 20 20 20 20  _IOERR_VNODE    
c5e0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c5f0: 5f 49 4f 45 52 52 20 7c 20 28 32 37 3c 3c 38 29  _IOERR | (27<<8)
c600: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c610: 5f 49 4f 45 52 52 5f 41 55 54 48 20 20 20 20 20  _IOERR_AUTH     
c620: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c630: 5f 49 4f 45 52 52 20 7c 20 28 32 38 3c 3c 38 29  _IOERR | (28<<8)
c640: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c650: 5f 49 4f 45 52 52 5f 42 45 47 49 4e 5f 41 54 4f  _IOERR_BEGIN_ATO
c660: 4d 49 43 20 20 20 20 20 20 28 53 51 4c 49 54 45  MIC      (SQLITE
c670: 5f 49 4f 45 52 52 20 7c 20 28 32 39 3c 3c 38 29  _IOERR | (29<<8)
c680: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c690: 5f 49 4f 45 52 52 5f 43 4f 4d 4d 49 54 5f 41 54  _IOERR_COMMIT_AT
c6a0: 4f 4d 49 43 20 20 20 20 20 28 53 51 4c 49 54 45  OMIC     (SQLITE
c6b0: 5f 49 4f 45 52 52 20 7c 20 28 33 30 3c 3c 38 29  _IOERR | (30<<8)
c6c0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c6d0: 5f 49 4f 45 52 52 5f 52 4f 4c 4c 42 41 43 4b 5f  _IOERR_ROLLBACK_
c6e0: 41 54 4f 4d 49 43 20 20 20 28 53 51 4c 49 54 45  ATOMIC   (SQLITE
c6f0: 5f 49 4f 45 52 52 20 7c 20 28 33 31 3c 3c 38 29  _IOERR | (31<<8)
c700: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c710: 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 44 43 41  _LOCKED_SHAREDCA
c720: 43 48 45 20 20 20 20 20 20 28 53 51 4c 49 54 45  CHE      (SQLITE
c730: 5f 4c 4f 43 4b 45 44 20 7c 20 20 28 31 3c 3c 38  _LOCKED |  (1<<8
c740: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c750: 45 5f 42 55 53 59 5f 52 45 43 4f 56 45 52 59 20  E_BUSY_RECOVERY 
c760: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c770: 45 5f 42 55 53 59 20 20 20 7c 20 20 28 31 3c 3c  E_BUSY   |  (1<<
c780: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c790: 54 45 5f 42 55 53 59 5f 53 4e 41 50 53 48 4f 54  TE_BUSY_SNAPSHOT
c7a0: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
c7b0: 54 45 5f 42 55 53 59 20 20 20 7c 20 20 28 32 3c  TE_BUSY   |  (2<
c7c0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c7d0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e 4f 54  ITE_CANTOPEN_NOT
c7e0: 45 4d 50 44 49 52 20 20 20 20 20 20 28 53 51 4c  EMPDIR      (SQL
c7f0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28  ITE_CANTOPEN | (
c800: 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  1<<8)).#define S
c810: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 49  QLITE_CANTOPEN_I
c820: 53 44 49 52 20 20 20 20 20 20 20 20 20 20 28 53  SDIR          (S
c830: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c  QLITE_CANTOPEN |
c840: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
c850: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
c860: 5f 46 55 4c 4c 50 41 54 48 20 20 20 20 20 20 20  _FULLPATH       
c870: 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  (SQLITE_CANTOPEN
c880: 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65 66 69   | (3<<8)).#defi
c890: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
c8a0: 45 4e 5f 43 4f 4e 56 50 41 54 48 20 20 20 20 20  EN_CONVPATH     
c8b0: 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    (SQLITE_CANTOP
c8c0: 45 4e 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65  EN | (4<<8)).#de
c8d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52  fine SQLITE_CORR
c8e0: 55 50 54 5f 56 54 41 42 20 20 20 20 20 20 20 20  UPT_VTAB        
c8f0: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 52 52      (SQLITE_CORR
c900: 55 50 54 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  UPT | (1<<8)).#d
c910: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
c920: 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 20  DONLY_RECOVERY  
c930: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
c940: 44 4f 4e 4c 59 20 7c 20 28 31 3c 3c 38 29 29 0a  DONLY | (1<<8)).
c950: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
c960: 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b  EADONLY_CANTLOCK
c970: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52         (SQLITE_R
c980: 45 41 44 4f 4e 4c 59 20 7c 20 28 32 3c 3c 38 29  EADONLY | (2<<8)
c990: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c9a0: 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41  _READONLY_ROLLBA
c9b0: 43 4b 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  CK       (SQLITE
c9c0: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c  _READONLY | (3<<
c9d0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c9e0: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f  TE_READONLY_DBMO
c9f0: 56 45 44 20 20 20 20 20 20 20 20 28 53 51 4c 49  VED        (SQLI
ca00: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 34  TE_READONLY | (4
ca10: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
ca20: 4c 49 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42  LITE_ABORT_ROLLB
ca30: 41 43 4b 20 20 20 20 20 20 20 20 20 20 28 53 51  ACK          (SQ
ca40: 4c 49 54 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c  LITE_ABORT | (2<
ca50: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
ca60: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43  ITE_CONSTRAINT_C
ca70: 48 45 43 4b 20 20 20 20 20 20 20 20 28 53 51 4c  HECK        (SQL
ca80: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
ca90: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
caa0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cab0: 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20  NT_COMMITHOOK   
cac0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cad0: 4e 54 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  NT | (2<<8)).#de
cae0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
caf0: 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45  TRAINT_FOREIGNKE
cb00: 59 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  Y   (SQLITE_CONS
cb10: 54 52 41 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29  TRAINT | (3<<8))
cb20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cb30: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54  CONSTRAINT_FUNCT
cb40: 49 4f 4e 20 20 20 20 20 28 53 51 4c 49 54 45 5f  ION     (SQLITE_
cb50: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 34 3c  CONSTRAINT | (4<
cb60: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cb70: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e  ITE_CONSTRAINT_N
cb80: 4f 54 4e 55 4c 4c 20 20 20 20 20 20 28 53 51 4c  OTNULL      (SQL
cb90: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cba0: 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (5<<8)).#define
cbb0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cbc0: 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 20 20  NT_PRIMARYKEY   
cbd0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cbe0: 4e 54 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65  NT | (6<<8)).#de
cbf0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cc00: 54 52 41 49 4e 54 5f 54 52 49 47 47 45 52 20 20  TRAINT_TRIGGER  
cc10: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
cc20: 54 52 41 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29  TRAINT | (7<<8))
cc30: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cc40: 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51 55  CONSTRAINT_UNIQU
cc50: 45 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  E       (SQLITE_
cc60: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 38 3c  CONSTRAINT | (8<
cc70: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cc80: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56  ITE_CONSTRAINT_V
cc90: 54 41 42 20 20 20 20 20 20 20 20 20 28 53 51 4c  TAB         (SQL
cca0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
ccb0: 20 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (9<<8)).#define
ccc0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
ccd0: 4e 54 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20  NT_ROWID        
cce0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
ccf0: 4e 54 20 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65  NT |(10<<8)).#de
cd00: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cd10: 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20 20  CE_RECOVER_WAL  
cd20: 20 20 20 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49      (SQLITE_NOTI
cd30: 43 45 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  CE | (1<<8)).#de
cd40: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cd50: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
cd60: 41 43 4b 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49  ACK (SQLITE_NOTI
cd70: 43 45 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  CE | (2<<8)).#de
cd80: 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e  fine SQLITE_WARN
cd90: 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20 20 20  ING_AUTOINDEX   
cda0: 20 20 20 20 28 53 51 4c 49 54 45 5f 57 41 52 4e      (SQLITE_WARN
cdb0: 49 4e 47 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  ING | (1<<8)).#d
cdc0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
cdd0: 48 5f 55 53 45 52 20 20 20 20 20 20 20 20 20 20  H_USER          
cde0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 41 55 54       (SQLITE_AUT
cdf0: 48 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  H | (1<<8)).#def
ce00: 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f  ine SQLITE_OK_LO
ce10: 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20  AD_PERMANENTLY  
ce20: 20 20 20 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20     (SQLITE_OK | 
ce30: 28 31 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43  (1<<8))../*.** C
ce40: 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 46  API3REF: Flags F
ce50: 6f 72 20 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65  or File Open Ope
ce60: 72 61 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68  rations.**.** Th
ce70: 65 73 65 20 62 69 74 20 76 61 6c 75 65 73 20 61  ese bit values a
ce80: 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
ce90: 75 73 65 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72  use in the.** 3r
cea0: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  d parameter to t
ceb0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
cec0: 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
ced0: 20 61 6e 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34   and.** in the 4
cee0: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
cef0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
cf00: 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a  .xOpen] method..
cf10: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cf20: 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20  E_OPEN_READONLY 
cf30: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cf40: 30 31 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  01  /* Ok for sq
cf50: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
cf60: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cf70: 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
cf80: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cf90: 30 32 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  02  /* Ok for sq
cfa0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
cfb0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cfc0: 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 20 20 20  E_OPEN_CREATE   
cfd0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cfe0: 30 34 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  04  /* Ok for sq
cff0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d000: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d010: 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
d020: 4c 4f 53 45 20 20 20 20 30 78 30 30 30 30 30 30  LOSE    0x000000
d030: 30 38 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  08  /* VFS only 
d040: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d050: 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45  E_OPEN_EXCLUSIVE
d060: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d070: 31 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  10  /* VFS only 
d080: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d090: 45 5f 4f 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59  E_OPEN_AUTOPROXY
d0a0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d0b0: 32 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  20  /* VFS only 
d0c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d0d0: 45 5f 4f 50 45 4e 5f 55 52 49 20 20 20 20 20 20  E_OPEN_URI      
d0e0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d0f0: 34 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  40  /* Ok for sq
d100: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d110: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d120: 45 5f 4f 50 45 4e 5f 4d 45 4d 4f 52 59 20 20 20  E_OPEN_MEMORY   
d130: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
d140: 38 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  80  /* Ok for sq
d150: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d160: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d170: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 20 20  E_OPEN_MAIN_DB  
d180: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 31          0x000001
d190: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
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 54 45 4d 50 5f 44 42 20 20  E_OPEN_TEMP_DB  
d1c0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32          0x000002
d1d0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d1e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d1f0: 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54  E_OPEN_TRANSIENT
d200: 5f 44 42 20 20 20 20 20 30 78 30 30 30 30 30 34  _DB     0x000004
d210: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d220: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d230: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52  E_OPEN_MAIN_JOUR
d240: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 30 38  NAL     0x000008
d250: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d260: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d270: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52  E_OPEN_TEMP_JOUR
d280: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 31 30  NAL     0x000010
d290: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d2a0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d2b0: 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41  E_OPEN_SUBJOURNA
d2c0: 4c 20 20 20 20 20 20 20 30 78 30 30 30 30 32 30  L       0x000020
d2d0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d2e0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d2f0: 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f  E_OPEN_MASTER_JO
d300: 55 52 4e 41 4c 20 20 20 30 78 30 30 30 30 34 30  URNAL   0x000040
d310: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d320: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d330: 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20  E_OPEN_NOMUTEX  
d340: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 38 30          0x000080
d350: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d360: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d370: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d380: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
d390: 20 20 20 20 20 20 20 20 30 78 30 30 30 31 30 30          0x000100
d3a0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d3b0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d3c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d3d0: 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
d3e0: 48 45 20 20 20 20 20 20 30 78 30 30 30 32 30 30  HE      0x000200
d3f0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d400: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
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 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
d430: 43 48 45 20 20 20 20 20 30 78 30 30 30 34 30 30  CHE     0x000400
d440: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d450: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d460: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d470: 45 5f 4f 50 45 4e 5f 57 41 4c 20 20 20 20 20 20  E_OPEN_WAL      
d480: 20 20 20 20 20 20 20 20 30 78 30 30 30 38 30 30          0x000800
d490: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d4a0: 2a 2f 0a 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a  */../* Reserved:
d4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d4c0: 20 20 20 20 20 20 20 20 20 30 78 30 30 46 30 30           0x00F00
d4d0: 30 30 30 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41  000 */../*.** CA
d4e0: 50 49 33 52 45 46 3a 20 44 65 76 69 63 65 20 43  PI3REF: Device C
d4f0: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 0a 2a  haracteristics.*
d500: 2a 0a 2a 2a 20 54 68 65 20 78 44 65 76 69 63 65  *.** The xDevice
d510: 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
d520: 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 5b 73  method of the [s
d530: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
d540: 73 5d 0a 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74  s].** object ret
d550: 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20  urns an integer 
d560: 77 68 69 63 68 20 69 73 20 61 20 76 65 63 74 6f  which is a vecto
d570: 72 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 62 69  r of these.** bi
d580: 74 20 76 61 6c 75 65 73 20 65 78 70 72 65 73 73  t values express
d590: 69 6e 67 20 49 2f 4f 20 63 68 61 72 61 63 74 65  ing I/O characte
d5a0: 72 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6d  ristics of the m
d5b0: 61 73 73 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64  ass storage.** d
d5c0: 65 76 69 63 65 20 74 68 61 74 20 68 6f 6c 64 73  evice that holds
d5d0: 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 74   the file that t
d5e0: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
d5f0: 65 74 68 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72  ethods].** refer
d600: 73 20 74 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  s to..**.** The 
d610: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
d620: 4d 49 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61  MIC property mea
d630: 6e 73 20 74 68 61 74 20 61 6c 6c 20 77 72 69 74  ns that all writ
d640: 65 73 20 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a  es of.** any siz
d650: 65 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  e are atomic.  T
d660: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d670: 41 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73  ATOMICnnn values
d680: 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 77 72  .** mean that wr
d690: 69 74 65 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74  ites of blocks t
d6a0: 68 61 74 20 61 72 65 20 6e 6e 6e 20 62 79 74 65  hat are nnn byte
d6b0: 73 20 69 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a  s in size and.**
d6c0: 20 61 72 65 20 61 6c 69 67 6e 65 64 20 74 6f 20   are aligned to 
d6d0: 61 6e 20 61 64 64 72 65 73 73 20 77 68 69 63 68  an address which
d6e0: 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6d   is an integer m
d6f0: 75 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e  ultiple of.** nn
d700: 6e 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  n are atomic.  T
d710: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d720: 53 41 46 45 5f 41 50 50 45 4e 44 20 76 61 6c 75  SAFE_APPEND valu
d730: 65 20 6d 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20  e means.** that 
d740: 77 68 65 6e 20 64 61 74 61 20 69 73 20 61 70 70  when data is app
d750: 65 6e 64 65 64 20 74 6f 20 61 20 66 69 6c 65 2c  ended to a file,
d760: 20 74 68 65 20 64 61 74 61 20 69 73 20 61 70 70   the data is app
d770: 65 6e 64 65 64 0a 2a 2a 20 66 69 72 73 74 20 74  ended.** first t
d780: 68 65 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20  hen the size of 
d790: 74 68 65 20 66 69 6c 65 20 69 73 20 65 78 74 65  the file is exte
d7a0: 6e 64 65 64 2c 20 6e 65 76 65 72 20 74 68 65 20  nded, never the 
d7b0: 6f 74 68 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f  other.** way aro
d7c0: 75 6e 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45  und.  The SQLITE
d7d0: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
d7e0: 4c 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73  L property means
d7f0: 20 74 68 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61   that.** informa
d800: 74 69 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20  tion is written 
d810: 74 6f 20 64 69 73 6b 20 69 6e 20 74 68 65 20 73  to disk in the s
d820: 61 6d 65 20 6f 72 64 65 72 20 61 73 20 63 61 6c  ame order as cal
d830: 6c 73 0a 2a 2a 20 74 6f 20 78 57 72 69 74 65 28  ls.** to xWrite(
d840: 29 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  ).  The SQLITE_I
d850: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
d860: 56 45 52 57 52 49 54 45 20 70 72 6f 70 65 72 74  VERWRITE propert
d870: 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20  y means that.** 
d880: 61 66 74 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c  after reboot fol
d890: 6c 6f 77 69 6e 67 20 61 20 63 72 61 73 68 20 6f  lowing a crash o
d8a0: 72 20 70 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68  r power loss, th
d8b0: 65 20 6f 6e 6c 79 20 62 79 74 65 73 20 69 6e 20  e only bytes in 
d8c0: 61 0a 2a 2a 20 66 69 6c 65 20 74 68 61 74 20 77  a.** file that w
d8d0: 65 72 65 20 77 72 69 74 74 65 6e 20 61 74 20 74  ere written at t
d8e0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c  he application l
d8f0: 65 76 65 6c 20 6d 69 67 68 74 20 68 61 76 65 20  evel might have 
d900: 63 68 61 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74  changed.** and t
d910: 68 61 74 20 61 64 6a 61 63 65 6e 74 20 62 79 74  hat adjacent byt
d920: 65 73 2c 20 65 76 65 6e 20 62 79 74 65 73 20 77  es, even bytes w
d930: 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 73  ithin the same s
d940: 65 63 74 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61  ector are.** gua
d950: 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 75 6e  ranteed to be un
d960: 63 68 61 6e 67 65 64 2e 20 20 54 68 65 20 53 51  changed.  The SQ
d970: 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c  LITE_IOCAP_UNDEL
d980: 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e  ETABLE_WHEN_OPEN
d990: 0a 2a 2a 20 66 6c 61 67 20 69 6e 64 69 63 61 74  .** flag indicat
d9a0: 65 73 20 74 68 61 74 20 61 20 66 69 6c 65 20 63  es that a file c
d9b0: 61 6e 6e 6f 74 20 62 65 20 64 65 6c 65 74 65 64  annot be deleted
d9c0: 20 77 68 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65   when open.  The
d9d0: 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  .** SQLITE_IOCAP
d9e0: 5f 49 4d 4d 55 54 41 42 4c 45 20 66 6c 61 67 20  _IMMUTABLE flag 
d9f0: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74  indicates that t
da00: 68 65 20 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a  he file is on.**
da10: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61   read-only media
da20: 20 61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 63   and cannot be c
da30: 68 61 6e 67 65 64 20 65 76 65 6e 20 62 79 20 70  hanged even by p
da40: 72 6f 63 65 73 73 65 73 20 77 69 74 68 0a 2a 2a  rocesses with.**
da50: 20 65 6c 65 76 61 74 65 64 20 70 72 69 76 69 6c   elevated privil
da60: 65 67 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eges..**.** The 
da70: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 42 41 54  SQLITE_IOCAP_BAT
da80: 43 48 5f 41 54 4f 4d 49 43 20 70 72 6f 70 65 72  CH_ATOMIC proper
da90: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ty means that th
daa0: 65 20 75 6e 64 65 72 6c 79 69 6e 67 0a 2a 2a 20  e underlying.** 
dab0: 66 69 6c 65 73 79 73 74 65 6d 20 73 75 70 70 6f  filesystem suppo
dac0: 72 74 73 20 64 6f 69 6e 67 20 6d 75 6c 74 69 70  rts doing multip
dad0: 6c 65 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  le write operati
dae0: 6f 6e 73 20 61 74 6f 6d 69 63 61 6c 6c 79 20 77  ons atomically w
daf0: 68 65 6e 20 74 68 6f 73 65 0a 2a 2a 20 77 72 69  hen those.** wri
db00: 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72  te operations ar
db10: 65 20 62 72 61 63 6b 65 74 65 64 20 62 79 20 5b  e bracketed by [
db20: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
db30: 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IN_ATOMIC_WRITE]
db40: 20 61 6e 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   and.** [SQLITE_
db50: 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
db60: 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23  MIC_WRITE]..*/.#
db70: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
db80: 43 41 50 5f 41 54 4f 4d 49 43 20 20 20 20 20 20  CAP_ATOMIC      
db90: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
dba0: 30 30 30 30 31 0a 23 64 65 66 69 6e 65 20 53 51  00001.#define SQ
dbb0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
dbc0: 43 35 31 32 20 20 20 20 20 20 20 20 20 20 20 20  C512            
dbd0: 20 20 30 78 30 30 30 30 30 30 30 32 0a 23 64 65    0x00000002.#de
dbe0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
dbf0: 50 5f 41 54 4f 4d 49 43 31 4b 20 20 20 20 20 20  P_ATOMIC1K      
dc00: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
dc10: 30 30 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  004.#define SQLI
dc20: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
dc30: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  K               
dc40: 30 78 30 30 30 30 30 30 30 38 0a 23 64 65 66 69  0x00000008.#defi
dc50: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
dc60: 41 54 4f 4d 49 43 34 4b 20 20 20 20 20 20 20 20  ATOMIC4K        
dc70: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 31         0x0000001
dc80: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
dc90: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 20  _IOCAP_ATOMIC8K 
dca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
dcb0: 30 30 30 30 30 30 32 30 0a 23 64 65 66 69 6e 65  00000020.#define
dcc0: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54   SQLITE_IOCAP_AT
dcd0: 4f 4d 49 43 31 36 4b 20 20 20 20 20 20 20 20 20  OMIC16K         
dce0: 20 20 20 20 20 30 78 30 30 30 30 30 30 34 30 0a       0x00000040.
dcf0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
dd00: 4f 43 41 50 5f 41 54 4f 4d 49 43 33 32 4b 20 20  OCAP_ATOMIC32K  
dd10: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
dd20: 30 30 30 30 38 30 0a 23 64 65 66 69 6e 65 20 53  000080.#define S
dd30: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
dd40: 49 43 36 34 4b 20 20 20 20 20 20 20 20 20 20 20  IC64K           
dd50: 20 20 20 30 78 30 30 30 30 30 31 30 30 0a 23 64     0x00000100.#d
dd60: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
dd70: 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 20 20  AP_SAFE_APPEND  
dd80: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
dd90: 30 32 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c  0200.#define SQL
dda0: 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e  ITE_IOCAP_SEQUEN
ddb0: 54 49 41 4c 20 20 20 20 20 20 20 20 20 20 20 20  TIAL            
ddc0: 20 30 78 30 30 30 30 30 34 30 30 0a 23 64 65 66   0x00000400.#def
ddd0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
dde0: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
ddf0: 4e 5f 4f 50 45 4e 20 20 30 78 30 30 30 30 30 38  N_OPEN  0x000008
de00: 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  00.#define SQLIT
de10: 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46  E_IOCAP_POWERSAF
de20: 45 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20 30  E_OVERWRITE    0
de30: 78 30 30 30 30 31 30 30 30 0a 23 64 65 66 69 6e  x00001000.#defin
de40: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49  e SQLITE_IOCAP_I
de50: 4d 4d 55 54 41 42 4c 45 20 20 20 20 20 20 20 20  MMUTABLE        
de60: 20 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30        0x00002000
de70: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
de80: 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d  IOCAP_BATCH_ATOM
de90: 49 43 20 20 20 20 20 20 20 20 20 20 20 30 78 30  IC           0x0
dea0: 30 30 30 34 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43  0004000../*.** C
deb0: 41 50 49 33 52 45 46 3a 20 46 69 6c 65 20 4c 6f  API3REF: File Lo
dec0: 63 6b 69 6e 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a  cking Levels.**.
ded0: 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20 6f  ** SQLite uses o
dee0: 6e 65 20 6f 66 20 74 68 65 73 65 20 69 6e 74 65  ne of these inte
def0: 67 65 72 20 76 61 6c 75 65 73 20 61 73 20 74 68  ger values as th
df00: 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 61 72 67 75  e second.** argu
df10: 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 73 20 69 74  ment to calls it
df20: 20 6d 61 6b 65 73 20 74 6f 20 74 68 65 20 78 4c   makes to the xL
df30: 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63  ock() and xUnloc
df40: 6b 28 29 20 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f  k() methods.** o
df50: 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f  f an [sqlite3_io
df60: 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
df70: 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
df80: 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20  ITE_LOCK_NONE   
df90: 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e 65         0.#define
dfa0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41   SQLITE_LOCK_SHA
dfb0: 52 45 44 20 20 20 20 20 20 20 20 31 0a 23 64 65  RED        1.#de
dfc0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
dfd0: 5f 52 45 53 45 52 56 45 44 20 20 20 20 20 20 32  _RESERVED      2
dfe0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
dff0: 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 20 20 20 20  LOCK_PENDING    
e000: 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c     3.#define SQL
e010: 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49  ITE_LOCK_EXCLUSI
e020: 56 45 20 20 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20  VE     4../*.** 
e030: 43 41 50 49 33 52 45 46 3a 20 53 79 6e 63 68 72  CAPI3REF: Synchr
e040: 6f 6e 69 7a 61 74 69 6f 6e 20 54 79 70 65 20 46  onization Type F
e050: 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20  lags.**.** When 
e060: 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65 73 20 74  SQLite invokes t
e070: 68 65 20 78 53 79 6e 63 28 29 20 6d 65 74 68 6f  he xSync() metho
e080: 64 20 6f 66 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  d of an.** [sqli
e090: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
e0a0: 6f 62 6a 65 63 74 20 69 74 20 75 73 65 73 20 61  object it uses a
e0b0: 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a   combination of.
e0c0: 2a 2a 20 74 68 65 73 65 20 69 6e 74 65 67 65 72  ** these integer
e0d0: 20 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73   values as the s
e0e0: 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a  econd argument..
e0f0: 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 53  **.** When the S
e100: 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f  QLITE_SYNC_DATAO
e110: 4e 4c 59 20 66 6c 61 67 20 69 73 20 75 73 65 64  NLY flag is used
e120: 2c 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20  , it means that 
e130: 74 68 65 0a 2a 2a 20 73 79 6e 63 20 6f 70 65 72  the.** sync oper
e140: 61 74 69 6f 6e 20 6f 6e 6c 79 20 6e 65 65 64 73  ation only needs
e150: 20 74 6f 20 66 6c 75 73 68 20 64 61 74 61 20 74   to flush data t
e160: 6f 20 6d 61 73 73 20 73 74 6f 72 61 67 65 2e 20  o mass storage. 
e170: 20 49 6e 6f 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d   Inode.** inform
e180: 61 74 69 6f 6e 20 6e 65 65 64 20 6e 6f 74 20 62  ation need not b
e190: 65 20 66 6c 75 73 68 65 64 2e 20 49 66 20 74 68  e flushed. If th
e1a0: 65 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74  e lower four bit
e1b0: 73 20 6f 66 20 74 68 65 20 66 6c 61 67 0a 2a 2a  s of the flag.**
e1c0: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
e1d0: 4e 43 5f 4e 4f 52 4d 41 4c 2c 20 74 68 61 74 20  NC_NORMAL, that 
e1e0: 6d 65 61 6e 73 20 74 6f 20 75 73 65 20 6e 6f 72  means to use nor
e1f0: 6d 61 6c 20 66 73 79 6e 63 28 29 20 73 65 6d 61  mal fsync() sema
e200: 6e 74 69 63 73 2e 0a 2a 2a 20 49 66 20 74 68 65  ntics..** If the
e210: 20 6c 6f 77 65 72 20 66 6f 75 72 20 62 69 74 73   lower four bits
e220: 20 65 71 75 61 6c 20 53 51 4c 49 54 45 5f 53 59   equal SQLITE_SY
e230: 4e 43 5f 46 55 4c 4c 2c 20 74 68 61 74 20 6d 65  NC_FULL, that me
e240: 61 6e 73 0a 2a 2a 20 74 6f 20 75 73 65 20 4d 61  ans.** to use Ma
e250: 63 20 4f 53 20 58 20 73 74 79 6c 65 20 66 75 6c  c OS X style ful
e260: 6c 73 79 6e 63 20 69 6e 73 74 65 61 64 20 6f 66  lsync instead of
e270: 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20   fsync()..**.** 
e280: 44 6f 20 6e 6f 74 20 63 6f 6e 66 75 73 65 20 74  Do not confuse t
e290: 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  he SQLITE_SYNC_N
e2a0: 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45  ORMAL and SQLITE
e2b0: 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73  _SYNC_FULL flags
e2c0: 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 50 52  .** with the [PR
e2d0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
e2e0: 5d 3d 4e 4f 52 4d 41 4c 20 61 6e 64 20 5b 50 52  ]=NORMAL and [PR
e2f0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
e300: 5d 3d 46 55 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e  ]=FULL.** settin
e310: 67 73 2e 20 20 54 68 65 20 5b 73 79 6e 63 68 72  gs.  The [synchr
e320: 6f 6e 6f 75 73 20 70 72 61 67 6d 61 5d 20 64 65  onous pragma] de
e330: 74 65 72 6d 69 6e 65 73 20 77 68 65 6e 20 63 61  termines when ca
e340: 6c 6c 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53  lls to the.** xS
e350: 79 6e 63 20 56 46 53 20 6d 65 74 68 6f 64 20 6f  ync VFS method o
e360: 63 63 75 72 20 61 6e 64 20 61 70 70 6c 69 65 73  ccur and applies
e370: 20 75 6e 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73   uniformly acros
e380: 73 20 61 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e  s all platforms.
e390: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 53  .** The SQLITE_S
e3a0: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53  YNC_NORMAL and S
e3b0: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20  QLITE_SYNC_FULL 
e3c0: 66 6c 61 67 73 20 64 65 74 65 72 6d 69 6e 65 20  flags determine 
e3d0: 68 6f 77 0a 2a 2a 20 65 6e 65 72 67 65 74 69 63  how.** energetic
e3e0: 20 6f 72 20 72 69 67 6f 72 6f 75 73 20 6f 72 20   or rigorous or 
e3f0: 66 6f 72 63 65 66 75 6c 20 74 68 65 20 73 79 6e  forceful the syn
e400: 63 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65  c operations are
e410: 20 61 6e 64 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b   and.** only mak
e420: 65 20 61 20 64 69 66 66 65 72 65 6e 63 65 20 6f  e a difference o
e430: 6e 20 4d 61 63 20 4f 53 58 20 66 6f 72 20 74 68  n Mac OSX for th
e440: 65 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65  e default SQLite
e450: 20 63 6f 64 65 2e 0a 2a 2a 20 28 54 68 69 72 64   code..** (Third
e460: 2d 70 61 72 74 79 20 56 46 53 20 69 6d 70 6c 65  -party VFS imple
e470: 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69 67 68 74  mentations might
e480: 20 61 6c 73 6f 20 6d 61 6b 65 20 74 68 65 20 64   also make the d
e490: 69 73 74 69 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65  istinction.** be
e4a0: 74 77 65 65 6e 20 53 51 4c 49 54 45 5f 53 59 4e  tween SQLITE_SYN
e4b0: 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c  C_NORMAL and SQL
e4c0: 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 62  ITE_SYNC_FULL, b
e4d0: 75 74 20 61 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20  ut among the.** 
e4e0: 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
e4f0: 73 20 6e 61 74 69 76 65 6c 79 20 73 75 70 70 6f  s natively suppo
e500: 72 74 65 64 20 62 79 20 53 51 4c 69 74 65 2c 20  rted by SQLite, 
e510: 6f 6e 6c 79 20 4d 61 63 20 4f 53 58 0a 2a 2a 20  only Mac OSX.** 
e520: 63 61 72 65 73 20 61 62 6f 75 74 20 74 68 65 20  cares about the 
e530: 64 69 66 66 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a  difference.).*/.
e540: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
e550: 59 4e 43 5f 4e 4f 52 4d 41 4c 20 20 20 20 20 20  YNC_NORMAL      
e560: 20 20 30 78 30 30 30 30 32 0a 23 64 65 66 69 6e    0x00002.#defin
e570: 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55  e SQLITE_SYNC_FU
e580: 4c 4c 20 20 20 20 20 20 20 20 20 20 30 78 30 30  LL          0x00
e590: 30 30 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  003.#define SQLI
e5a0: 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59  TE_SYNC_DATAONLY
e5b0: 20 20 20 20 20 20 30 78 30 30 30 31 30 0a 0a 2f        0x00010../
e5c0: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f  *.** CAPI3REF: O
e5d0: 53 20 49 6e 74 65 72 66 61 63 65 20 4f 70 65 6e  S Interface Open
e5e0: 20 46 69 6c 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a   File Handle.**.
e5f0: 2a 2a 20 41 6e 20 5b 73 71 6c 69 74 65 33 5f 66  ** An [sqlite3_f
e600: 69 6c 65 5d 20 6f 62 6a 65 63 74 20 72 65 70 72  ile] object repr
e610: 65 73 65 6e 74 73 20 61 6e 20 6f 70 65 6e 20 66  esents an open f
e620: 69 6c 65 20 69 6e 20 74 68 65 20 0a 2a 2a 20 5b  ile in the .** [
e630: 73 71 6c 69 74 65 33 5f 76 66 73 20 7c 20 4f 53  sqlite3_vfs | OS
e640: 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
e650: 5d 2e 20 20 49 6e 64 69 76 69 64 75 61 6c 20 4f  ].  Individual O
e660: 53 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69  S interface.** i
e670: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77  mplementations w
e680: 69 6c 6c 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 73  ill.** want to s
e690: 75 62 63 6c 61 73 73 20 74 68 69 73 20 6f 62 6a  ubclass this obj
e6a0: 65 63 74 20 62 79 20 61 70 70 65 6e 64 69 6e 67  ect by appending
e6b0: 20 61 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c   additional fiel
e6c0: 64 73 0a 2a 2a 20 66 6f 72 20 74 68 65 69 72 20  ds.** for their 
e6d0: 6f 77 6e 20 75 73 65 2e 20 20 54 68 65 20 70 4d  own use.  The pM
e6e0: 65 74 68 6f 64 73 20 65 6e 74 72 79 20 69 73 20  ethods entry is 
e6f0: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 0a  a pointer to an.
e700: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  ** [sqlite3_io_m
e710: 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 74  ethods] object t
e720: 68 61 74 20 64 65 66 69 6e 65 73 20 6d 65 74 68  hat defines meth
e730: 6f 64 73 20 66 6f 72 20 70 65 72 66 6f 72 6d 69  ods for performi
e740: 6e 67 0a 2a 2a 20 49 2f 4f 20 6f 70 65 72 61 74  ng.** I/O operat
e750: 69 6f 6e 73 20 6f 6e 20 74 68 65 20 6f 70 65 6e  ions on the open
e760: 20 66 69 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65   file..*/.typede
e770: 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
e780: 5f 66 69 6c 65 20 73 71 6c 69 74 65 33 5f 66 69  _file sqlite3_fi
e790: 6c 65 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74  le;.struct sqlit
e7a0: 65 33 5f 66 69 6c 65 20 7b 0a 20 20 63 6f 6e 73  e3_file {.  cons
e7b0: 74 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  t struct sqlite3
e7c0: 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 2a 70 4d 65  _io_methods *pMe
e7d0: 74 68 6f 64 73 3b 20 20 2f 2a 20 4d 65 74 68 6f  thods;  /* Metho
e7e0: 64 73 20 66 6f 72 20 61 6e 20 6f 70 65 6e 20 66  ds for an open f
e7f0: 69 6c 65 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  ile */.};../*.**
e800: 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e   CAPI3REF: OS In
e810: 74 65 72 66 61 63 65 20 46 69 6c 65 20 56 69 72  terface File Vir
e820: 74 75 61 6c 20 4d 65 74 68 6f 64 73 20 4f 62 6a  tual Methods Obj
e830: 65 63 74 0a 2a 2a 0a 2a 2a 20 45 76 65 72 79 20  ect.**.** Every 
e840: 66 69 6c 65 20 6f 70 65 6e 65 64 20 62 79 20 74  file opened by t
e850: 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e  he [sqlite3_vfs.
e860: 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20 70 6f  xOpen] method po
e870: 70 75 6c 61 74 65 73 20 61 6e 0a 2a 2a 20 5b 73  pulates an.** [s
e880: 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
e890: 65 63 74 20 28 6f 72 2c 20 6d 6f 72 65 20 63 6f  ect (or, more co
e8a0: 6d 6d 6f 6e 6c 79 2c 20 61 20 73 75 62 63 6c 61  mmonly, a subcla
e8b0: 73 73 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71  ss of the.** [sq
e8c0: 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
e8d0: 63 74 29 20 77 69 74 68 20 61 20 70 6f 69 6e 74  ct) with a point
e8e0: 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
e8f0: 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
e900: 2e 0a 2a 2a 20 54 68 69 73 20 6f 62 6a 65 63 74  ..** This object
e910: 20 64 65 66 69 6e 65 73 20 74 68 65 20 6d 65 74   defines the met
e920: 68 6f 64 73 20 75 73 65 64 20 74 6f 20 70 65 72  hods used to per
e930: 66 6f 72 6d 20 76 61 72 69 6f 75 73 20 6f 70 65  form various ope
e940: 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e  rations.** again
e950: 73 74 20 74 68 65 20 6f 70 65 6e 20 66 69 6c 65  st the open file
e960: 20 72 65 70 72 65 73 65 6e 74 65 64 20 62 79 20   represented by 
e970: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
e980: 65 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a  e] object..**.**
e990: 20 49 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   If the [sqlite3
e9a0: 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68  _vfs.xOpen] meth
e9b0: 6f 64 20 73 65 74 73 20 74 68 65 20 73 71 6c 69  od sets the sqli
e9c0: 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64  te3_file.pMethod
e9d0: 73 20 65 6c 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f  s element .** to
e9e0: 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e   a non-NULL poin
e9f0: 74 65 72 2c 20 74 68 65 6e 20 74 68 65 20 73 71  ter, then the sq
ea00: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
ea10: 2e 78 43 6c 6f 73 65 20 6d 65 74 68 6f 64 0a 2a  .xClose method.*
ea20: 2a 20 6d 61 79 20 62 65 20 69 6e 76 6f 6b 65 64  * may be invoked
ea30: 20 65 76 65 6e 20 69 66 20 74 68 65 20 5b 73 71   even if the [sq
ea40: 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d  lite3_vfs.xOpen]
ea50: 20 72 65 70 6f 72 74 65 64 20 74 68 61 74 20 69   reported that i
ea60: 74 20 66 61 69 6c 65 64 2e 20 20 54 68 65 0a 2a  t failed.  The.*
ea70: 2a 20 6f 6e 6c 79 20 77 61 79 20 74 6f 20 70 72  * only way to pr
ea80: 65 76 65 6e 74 20 61 20 63 61 6c 6c 20 74 6f 20  event a call to 
ea90: 78 43 6c 6f 73 65 20 66 6f 6c 6c 6f 77 69 6e 67  xClose following
eaa0: 20 61 20 66 61 69 6c 65 64 20 5b 73 71 6c 69 74   a failed [sqlit
eab0: 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a  e3_vfs.xOpen].**
eac0: 20 69 73 20 66 6f 72 20 74 68 65 20 5b 73 71 6c   is for the [sql
ead0: 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20  ite3_vfs.xOpen] 
eae0: 74 6f 20 73 65 74 20 74 68 65 20 73 71 6c 69 74  to set the sqlit
eaf0: 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73  e3_file.pMethods
eb00: 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e   element.** to N
eb10: 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66  ULL..**.** The f
eb20: 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f  lags argument to
eb30: 20 78 53 79 6e 63 20 6d 61 79 20 62 65 20 6f 6e   xSync may be on
eb40: 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f 53 59 4e  e of [SQLITE_SYN
eb50: 43 5f 4e 4f 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20  C_NORMAL] or.** 
eb60: 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c  [SQLITE_SYNC_FUL
eb70: 4c 5d 2e 20 20 54 68 65 20 66 69 72 73 74 20 63  L].  The first c
eb80: 68 6f 69 63 65 20 69 73 20 74 68 65 20 6e 6f 72  hoice is the nor
eb90: 6d 61 6c 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 20  mal fsync()..** 
eba0: 54 68 65 20 73 65 63 6f 6e 64 20 63 68 6f 69 63  The second choic
ebb0: 65 20 69 73 20 61 20 4d 61 63 20 4f 53 20 58 20  e is a Mac OS X 
ebc0: 73 74 79 6c 65 20 66 75 6c 6c 73 79 6e 63 2e 20  style fullsync. 
ebd0: 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 53 59 4e   The [SQLITE_SYN
ebe0: 43 5f 44 41 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66  C_DATAONLY].** f
ebf0: 6c 61 67 20 6d 61 79 20 62 65 20 4f 52 65 64 20  lag may be ORed 
ec00: 69 6e 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74  in to indicate t
ec10: 68 61 74 20 6f 6e 6c 79 20 74 68 65 20 64 61 74  hat only the dat
ec20: 61 20 6f 66 20 74 68 65 20 66 69 6c 65 0a 2a 2a  a of the file.**
ec30: 20 61 6e 64 20 6e 6f 74 20 69 74 73 20 69 6e 6f   and not its ino
ec40: 64 65 20 6e 65 65 64 73 20 74 6f 20 62 65 20 73  de needs to be s
ec50: 79 6e 63 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ynced..**.** The
ec60: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20   integer values 
ec70: 74 6f 20 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78  to xLock() and x
ec80: 55 6e 6c 6f 63 6b 28 29 20 61 72 65 20 6f 6e 65  Unlock() are one
ec90: 20 6f 66 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c   of.** <ul>.** <
eca0: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  li> [SQLITE_LOCK
ecb0: 5f 4e 4f 4e 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20  _NONE],.** <li> 
ecc0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41  [SQLITE_LOCK_SHA
ecd0: 52 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  RED],.** <li> [S
ece0: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
ecf0: 56 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  VED],.** <li> [S
ed00: 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49  QLITE_LOCK_PENDI
ed10: 4e 47 5d 2c 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20  NG], or.** <li> 
ed20: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
ed30: 4c 55 53 49 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c  LUSIVE]..** </ul
ed40: 3e 0a 2a 2a 20 78 4c 6f 63 6b 28 29 20 69 6e 63  >.** xLock() inc
ed50: 72 65 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e  reases the lock.
ed60: 20 78 55 6e 6c 6f 63 6b 28 29 20 64 65 63 72 65   xUnlock() decre
ed70: 61 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a  ases the lock..*
ed80: 2a 20 54 68 65 20 78 43 68 65 63 6b 52 65 73 65  * The xCheckRese
ed90: 72 76 65 64 4c 6f 63 6b 28 29 20 6d 65 74 68 6f  rvedLock() metho
eda0: 64 20 63 68 65 63 6b 73 20 77 68 65 74 68 65 72  d checks whether
edb0: 20 61 6e 79 20 64 61 74 61 62 61 73 65 20 63 6f   any database co
edc0: 6e 6e 65 63 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74  nnection,.** eit
edd0: 68 65 72 20 69 6e 20 74 68 69 73 20 70 72 6f 63  her in this proc
ede0: 65 73 73 20 6f 72 20 69 6e 20 73 6f 6d 65 20 6f  ess or in some o
edf0: 74 68 65 72 20 70 72 6f 63 65 73 73 2c 20 69 73  ther process, is
ee00: 20 68 6f 6c 64 69 6e 67 20 61 20 52 45 53 45 52   holding a RESER
ee10: 56 45 44 2c 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c  VED,.** PENDING,
ee20: 20 6f 72 20 45 58 43 4c 55 53 49 56 45 20 6c 6f   or EXCLUSIVE lo
ee30: 63 6b 20 6f 6e 20 74 68 65 20 66 69 6c 65 2e 20  ck on the file. 
ee40: 20 49 74 20 72 65 74 75 72 6e 73 20 74 72 75 65   It returns true
ee50: 0a 2a 2a 20 69 66 20 73 75 63 68 20 61 20 6c 6f  .** if such a lo
ee60: 63 6b 20 65 78 69 73 74 73 20 61 6e 64 20 66 61  ck exists and fa
ee70: 6c 73 65 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  lse otherwise..*
ee80: 2a 0a 2a 2a 20 54 68 65 20 78 46 69 6c 65 43 6f  *.** The xFileCo
ee90: 6e 74 72 6f 6c 28 29 20 6d 65 74 68 6f 64 20 69  ntrol() method i
eea0: 73 20 61 20 67 65 6e 65 72 69 63 20 69 6e 74 65  s a generic inte
eeb0: 72 66 61 63 65 20 74 68 61 74 20 61 6c 6c 6f 77  rface that allow
eec0: 73 20 63 75 73 74 6f 6d 0a 2a 2a 20 56 46 53 20  s custom.** VFS 
eed0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
eee0: 74 6f 20 64 69 72 65 63 74 6c 79 20 63 6f 6e 74  to directly cont
eef0: 72 6f 6c 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  rol an open file
ef00: 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73   using the.** [s
ef10: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
ef20: 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65  rol()] interface
ef30: 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 22 6f  .  The second "o
ef40: 70 22 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  p" argument is a
ef50: 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20 6f 70 63  n.** integer opc
ef60: 6f 64 65 2e 20 20 54 68 65 20 74 68 69 72 64 20  ode.  The third 
ef70: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 67 65  argument is a ge
ef80: 6e 65 72 69 63 20 70 6f 69 6e 74 65 72 20 69 6e  neric pointer in
ef90: 74 65 6e 64 65 64 20 74 6f 0a 2a 2a 20 70 6f 69  tended to.** poi
efa0: 6e 74 20 74 6f 20 61 20 73 74 72 75 63 74 75 72  nt to a structur
efb0: 65 20 74 68 61 74 20 6d 61 79 20 63 6f 6e 74 61  e that may conta
efc0: 69 6e 20 61 72 67 75 6d 65 6e 74 73 20 6f 72 20  in arguments or 
efd0: 73 70 61 63 65 20 69 6e 20 77 68 69 63 68 20 74  space in which t
efe0: 6f 0a 2a 2a 20 77 72 69 74 65 20 72 65 74 75 72  o.** write retur
eff0: 6e 20 76 61 6c 75 65 73 2e 20 20 50 6f 74 65 6e  n values.  Poten
f000: 74 69 61 6c 20 75 73 65 73 20 66 6f 72 20 78 46  tial uses for xF
f010: 69 6c 65 43 6f 6e 74 72 6f 6c 28 29 20 6d 69 67  ileControl() mig
f020: 68 74 20 62 65 0a 2a 2a 20 66 75 6e 63 74 69 6f  ht be.** functio
f030: 6e 73 20 74 6f 20 65 6e 61 62 6c 65 20 62 6c 6f  ns to enable blo
f040: 63 6b 69 6e 67 20 6c 6f 63 6b 73 20 77 69 74 68  cking locks with
f050: 20 74 69 6d 65 6f 75 74 73 2c 20 74 6f 20 63 68   timeouts, to ch
f060: 61 6e 67 65 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b  ange the.** lock
f070: 69 6e 67 20 73 74 72 61 74 65 67 79 20 28 66 6f  ing strategy (fo
f080: 72 20 65 78 61 6d 70 6c 65 20 74 6f 20 75 73 65  r example to use
f090: 20 64 6f 74 2d 66 69 6c 65 20 6c 6f 63 6b 73 29   dot-file locks)
f0a0: 2c 20 74 6f 20 69 6e 71 75 69 72 65 0a 2a 2a 20  , to inquire.** 
f0b0: 61 62 6f 75 74 20 74 68 65 20 73 74 61 74 75 73  about the status
f0c0: 20 6f 66 20 61 20 6c 6f 63 6b 2c 20 6f 72 20 74   of a lock, or t
f0d0: 6f 20 62 72 65 61 6b 20 73 74 61 6c 65 20 6c 6f  o break stale lo
f0e0: 63 6b 73 2e 20 20 54 68 65 20 53 51 4c 69 74 65  cks.  The SQLite
f0f0: 0a 2a 2a 20 63 6f 72 65 20 72 65 73 65 72 76 65  .** core reserve
f100: 73 20 61 6c 6c 20 6f 70 63 6f 64 65 73 20 6c 65  s all opcodes le
f110: 73 73 20 74 68 61 6e 20 31 30 30 20 66 6f 72 20  ss than 100 for 
f120: 69 74 73 20 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20  its own use..** 
f130: 41 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  A [file control 
f140: 6f 70 63 6f 64 65 73 20 7c 20 6c 69 73 74 20 6f  opcodes | list o
f150: 66 20 6f 70 63 6f 64 65 73 5d 20 6c 65 73 73 20  f opcodes] less 
f160: 74 68 61 6e 20 31 30 30 20 69 73 20 61 76 61 69  than 100 is avai
f170: 6c 61 62 6c 65 2e 0a 2a 2a 20 41 70 70 6c 69 63  lable..** Applic
f180: 61 74 69 6f 6e 73 20 74 68 61 74 20 64 65 66 69  ations that defi
f190: 6e 65 20 61 20 63 75 73 74 6f 6d 20 78 46 69 6c  ne a custom xFil
f1a0: 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20  eControl method 
f1b0: 73 68 6f 75 6c 64 20 75 73 65 20 6f 70 63 6f 64  should use opcod
f1c0: 65 73 0a 2a 2a 20 67 72 65 61 74 65 72 20 74 68  es.** greater th
f1d0: 61 6e 20 31 30 30 20 74 6f 20 61 76 6f 69 64 20  an 100 to avoid 
f1e0: 63 6f 6e 66 6c 69 63 74 73 2e 20 20 56 46 53 20  conflicts.  VFS 
f1f0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
f200: 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75 72 6e  should.** return
f210: 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e   [SQLITE_NOTFOUN
f220: 44 5d 20 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74  D] for file cont
f230: 72 6f 6c 20 6f 70 63 6f 64 65 73 20 74 68 61 74  rol opcodes that
f240: 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20   they do not.** 
f250: 72 65 63 6f 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a  recognize..**.**
f260: 20 54 68 65 20 78 53 65 63 74 6f 72 53 69 7a 65   The xSectorSize
f270: 28 29 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  () method return
f280: 73 20 74 68 65 20 73 65 63 74 6f 72 20 73 69 7a  s the sector siz
f290: 65 20 6f 66 20 74 68 65 0a 2a 2a 20 64 65 76 69  e of the.** devi
f2a0: 63 65 20 74 68 61 74 20 75 6e 64 65 72 6c 69 65  ce that underlie
f2b0: 73 20 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65  s the file.  The
f2c0: 20 73 65 63 74 6f 72 20 73 69 7a 65 20 69 73 20   sector size is 
f2d0: 74 68 65 0a 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77  the.** minimum w
f2e0: 72 69 74 65 20 74 68 61 74 20 63 61 6e 20 62 65  rite that can be
f2f0: 20 70 65 72 66 6f 72 6d 65 64 20 77 69 74 68 6f   performed witho
f300: 75 74 20 64 69 73 74 75 72 62 69 6e 67 0a 2a 2a  ut disturbing.**
f310: 20 6f 74 68 65 72 20 62 79 74 65 73 20 69 6e 20   other bytes in 
f320: 74 68 65 20 66 69 6c 65 2e 20 20 54 68 65 20 78  the file.  The x
f330: 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69  DeviceCharacteri
f340: 73 74 69 63 73 28 29 0a 2a 2a 20 6d 65 74 68 6f  stics().** metho
f350: 64 20 72 65 74 75 72 6e 73 20 61 20 62 69 74 20  d returns a bit 
f360: 76 65 63 74 6f 72 20 64 65 73 63 72 69 62 69 6e  vector describin
f370: 67 20 62 65 68 61 76 69 6f 72 73 20 6f 66 20 74  g behaviors of t
f380: 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67  he.** underlying
f390: 20 64 65 76 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c   device:.**.** <
f3a0: 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  ul>.** <li> [SQL
f3b0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
f3c0: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
f3d0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31  E_IOCAP_ATOMIC51
f3e0: 32 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  2].** <li> [SQLI
f3f0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
f400: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f410: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32  TE_IOCAP_ATOMIC2
f420: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f430: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34  TE_IOCAP_ATOMIC4
f440: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f450: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38  TE_IOCAP_ATOMIC8
f460: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f470: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31  TE_IOCAP_ATOMIC1
f480: 36 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  6K].** <li> [SQL
f490: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
f4a0: 33 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  32K].** <li> [SQ
f4b0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
f4c0: 43 36 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  C64K].** <li> [S
f4d0: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45  QLITE_IOCAP_SAFE
f4e0: 5f 41 50 50 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e  _APPEND].** <li>
f4f0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53   [SQLITE_IOCAP_S
f500: 45 51 55 45 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c  EQUENTIAL].** <l
f510: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f520: 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45  _UNDELETABLE_WHE
f530: 4e 5f 4f 50 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20  N_OPEN].** <li> 
f540: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f  [SQLITE_IOCAP_PO
f550: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
f560: 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  E].** <li> [SQLI
f570: 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
f580: 4c 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  LE].** <li> [SQL
f590: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
f5a0: 41 54 4f 4d 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e  ATOMIC].** </ul>
f5b0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54  .**.** The SQLIT
f5c0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70  E_IOCAP_ATOMIC p
f5d0: 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68  roperty means th
f5e0: 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20 6f 66  at all writes of
f5f0: 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61 72 65  .** any size are
f600: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
f610: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
f620: 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d  Cnnn values.** m
f630: 65 61 6e 20 74 68 61 74 20 77 72 69 74 65 73 20  ean that writes 
f640: 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 61  of blocks that a
f650: 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20  re nnn bytes in 
f660: 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20  size and.** are 
f670: 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 61 64  aligned to an ad
f680: 64 72 65 73 73 20 77 68 69 63 68 20 69 73 20 61  dress which is a
f690: 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74 69 70  n integer multip
f6a0: 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65  le of.** nnn are
f6b0: 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51   atomic.  The SQ
f6c0: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f  LITE_IOCAP_SAFE_
f6d0: 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d 65 61  APPEND value mea
f6e0: 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65 6e 20  ns.** that when 
f6f0: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
f700: 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68 65 20   to a file, the 
f710: 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64  data is appended
f720: 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e 20 74  .** first then t
f730: 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 66  he size of the f
f740: 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65 64 2c  ile is extended,
f750: 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68 65 72   never the other
f760: 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64 2e 20  .** way around. 
f770: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41   The SQLITE_IOCA
f780: 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70 72 6f  P_SEQUENTIAL pro
f790: 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74  perty means that
f7a0: 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
f7b0: 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69  is written to di
f7c0: 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6f  sk in the same o
f7d0: 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a  rder as calls.**
f7e0: 20 74 6f 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a   to xWrite()..**
f7f0: 0a 2a 2a 20 49 66 20 78 52 65 61 64 28 29 20 72  .** If xRead() r
f800: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f  eturns SQLITE_IO
f810: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 69  ERR_SHORT_READ i
f820: 74 20 6d 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c  t must also fill
f830: 0a 2a 2a 20 69 6e 20 74 68 65 20 75 6e 72 65 61  .** in the unrea
f840: 64 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68  d portions of th
f850: 65 20 62 75 66 66 65 72 20 77 69 74 68 20 7a 65  e buffer with ze
f860: 72 6f 73 2e 20 20 41 20 56 46 53 20 74 68 61 74  ros.  A VFS that
f870: 0a 2a 2a 20 66 61 69 6c 73 20 74 6f 20 7a 65 72  .** fails to zer
f880: 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61  o-fill short rea
f890: 64 73 20 6d 69 67 68 74 20 73 65 65 6d 20 74 6f  ds might seem to
f8a0: 20 77 6f 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c   work.  However,
f8b0: 0a 2a 2a 20 66 61 69 6c 75 72 65 20 74 6f 20 7a  .** failure to z
f8c0: 65 72 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72  ero-fill short r
f8d0: 65 61 64 73 20 77 69 6c 6c 20 65 76 65 6e 74 75  eads will eventu
f8e0: 61 6c 6c 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20  ally lead to.** 
f8f0: 64 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74  database corrupt
f900: 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ion..*/.typedef 
f910: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69  struct sqlite3_i
f920: 6f 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69 74 65  o_methods sqlite
f930: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74  3_io_methods;.st
f940: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f  ruct sqlite3_io_
f950: 6d 65 74 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20  methods {.  int 
f960: 69 56 65 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20  iVersion;.  int 
f970: 28 2a 78 43 6c 6f 73 65 29 28 73 71 6c 69 74 65  (*xClose)(sqlite
f980: 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20  3_file*);.  int 
f990: 28 2a 78 52 65 61 64 29 28 73 71 6c 69 74 65 33  (*xRead)(sqlite3
f9a0: 5f 66 69 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69  _file*, void*, i
f9b0: 6e 74 20 69 41 6d 74 2c 20 73 71 6c 69 74 65 33  nt iAmt, sqlite3
f9c0: 5f 69 6e 74 36 34 20 69 4f 66 73 74 29 3b 0a 20  _int64 iOfst);. 
f9d0: 20 69 6e 74 20 28 2a 78 57 72 69 74 65 29 28 73   int (*xWrite)(s
f9e0: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f  qlite3_file*, co
f9f0: 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69  nst void*, int i
fa00: 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  Amt, sqlite3_int
fa10: 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74  64 iOfst);.  int
fa20: 20 28 2a 78 54 72 75 6e 63 61 74 65 29 28 73 71   (*xTruncate)(sq
fa30: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c  lite3_file*, sql
fa40: 69 74 65 33 5f 69 6e 74 36 34 20 73 69 7a 65 29  ite3_int64 size)
fa50: 3b 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29  ;.  int (*xSync)
fa60: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
fa70: 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e  int flags);.  in
fa80: 74 20 28 2a 78 46 69 6c 65 53 69 7a 65 29 28 73  t (*xFileSize)(s
fa90: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71  qlite3_file*, sq
faa0: 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 70 53 69  lite3_int64 *pSi
fab0: 7a 65 29 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f  ze);.  int (*xLo
fac0: 63 6b 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ck)(sqlite3_file
fad0: 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28  *, int);.  int (
fae0: 2a 78 55 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65  *xUnlock)(sqlite
faf0: 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20  3_file*, int);. 
fb00: 20 69 6e 74 20 28 2a 78 43 68 65 63 6b 52 65 73   int (*xCheckRes
fb10: 65 72 76 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74  ervedLock)(sqlit
fb20: 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70  e3_file*, int *p
fb30: 52 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28  ResOut);.  int (
fb40: 2a 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73  *xFileControl)(s
fb50: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
fb60: 74 20 6f 70 2c 20 76 6f 69 64 20 2a 70 41 72 67  t op, void *pArg
fb70: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 65 63 74  );.  int (*xSect
fb80: 6f 72 53 69 7a 65 29 28 73 71 6c 69 74 65 33 5f  orSize)(sqlite3_
fb90: 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  file*);.  int (*
fba0: 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72  xDeviceCharacter
fbb0: 69 73 74 69 63 73 29 28 73 71 6c 69 74 65 33 5f  istics)(sqlite3_
fbc0: 66 69 6c 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74  file*);.  /* Met
fbd0: 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 76  hods above are v
fbe0: 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e  alid for version
fbf0: 20 31 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53   1 */.  int (*xS
fc00: 68 6d 4d 61 70 29 28 73 71 6c 69 74 65 33 5f 66  hmMap)(sqlite3_f
fc10: 69 6c 65 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69  ile*, int iPg, i
fc20: 6e 74 20 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f  nt pgsz, int, vo
fc30: 69 64 20 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a  id volatile**);.
fc40: 20 20 69 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b    int (*xShmLock
fc50: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
fc60: 20 69 6e 74 20 6f 66 66 73 65 74 2c 20 69 6e 74   int offset, int
fc70: 20 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a   n, int flags);.
fc80: 20 20 76 6f 69 64 20 28 2a 78 53 68 6d 42 61 72    void (*xShmBar
fc90: 72 69 65 72 29 28 73 71 6c 69 74 65 33 5f 66 69  rier)(sqlite3_fi
fca0: 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53  le*);.  int (*xS
fcb0: 68 6d 55 6e 6d 61 70 29 28 73 71 6c 69 74 65 33  hmUnmap)(sqlite3
fcc0: 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65  _file*, int dele
fcd0: 74 65 46 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65  teFlag);.  /* Me
fce0: 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20  thods above are 
fcf0: 76 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f  valid for versio
fd00: 6e 20 32 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  n 2 */.  int (*x
fd10: 46 65 74 63 68 29 28 73 71 6c 69 74 65 33 5f 66  Fetch)(sqlite3_f
fd20: 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  ile*, sqlite3_in
fd30: 74 36 34 20 69 4f 66 73 74 2c 20 69 6e 74 20 69  t64 iOfst, int i
fd40: 41 6d 74 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b  Amt, void **pp);
fd50: 0a 20 20 69 6e 74 20 28 2a 78 55 6e 66 65 74 63  .  int (*xUnfetc
fd60: 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  h)(sqlite3_file*
fd70: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
fd80: 69 4f 66 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b  iOfst, void *p);
fd90: 0a 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62  .  /* Methods ab
fda0: 6f 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f  ove are valid fo
fdb0: 72 20 76 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20  r version 3 */. 
fdc0: 20 2f 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d   /* Additional m
fdd0: 65 74 68 6f 64 73 20 6d 61 79 20 62 65 20 61 64  ethods may be ad
fde0: 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
fdf0: 6c 65 61 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a  leases */.};../*
fe00: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 74  .** CAPI3REF: St
fe10: 61 6e 64 61 72 64 20 46 69 6c 65 20 43 6f 6e 74  andard File Cont
fe20: 72 6f 6c 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b  rol Opcodes.** K
fe30: 45 59 57 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63  EYWORDS: {file c
fe40: 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20  ontrol opcodes} 
fe50: 7b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70  {file control op
fe60: 63 6f 64 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73  code}.**.** Thes
fe70: 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  e integer consta
fe80: 6e 74 73 20 61 72 65 20 6f 70 63 6f 64 65 73 20  nts are opcodes 
fe90: 66 6f 72 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  for the xFileCon
fea0: 74 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f  trol method.** o
feb0: 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69  f the [sqlite3_i
fec0: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
fed0: 74 20 61 6e 64 20 66 6f 72 20 74 68 65 20 5b 73  t and for the [s
fee0: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
fef0: 72 6f 6c 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66  rol()].** interf
ff00: 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ace..**.** <ul>.
ff10: 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
ff20: 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d  FCNTL_LOCKSTATE]
ff30: 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
ff40: 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45  _FCNTL_LOCKSTATE
ff50: 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
ff60: 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20   for debugging. 
ff70: 20 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20   This.** opcode 
ff80: 63 61 75 73 65 73 20 74 68 65 20 78 46 69 6c 65  causes the xFile
ff90: 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74  Control method t
ffa0: 6f 20 77 72 69 74 65 20 74 68 65 20 63 75 72 72  o write the curr
ffb0: 65 6e 74 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20  ent state of.** 
ffc0: 74 68 65 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66  the lock (one of
ffd0: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f   [SQLITE_LOCK_NO
ffe0: 4e 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  NE], [SQLITE_LOC
fff0: 4b 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53  K_SHARED],.** [S
10000 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52  QLITE_LOCK_RESER
10010 56 45 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f  VED], [SQLITE_LO
10020 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20  CK_PENDING], or 
10030 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43  [SQLITE_LOCK_EXC
10040 4c 55 53 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f  LUSIVE]).** into
10050 20 61 6e 20 69 6e 74 65 67 65 72 20 74 68 61 74   an integer that
10060 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d 65   the pArg argume
10070 6e 74 20 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68  nt points to. Th
10080 69 73 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a  is capability.**
10090 20 69 73 20 75 73 65 64 20 64 75 72 69 6e 67 20   is used during 
100a0 74 65 73 74 69 6e 67 20 61 6e 64 20 69 73 20 6f  testing and is o
100b0 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68  nly available wh
100c0 65 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 54 45  en the SQLITE_TE
100d0 53 54 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  ST.** compile-ti
100e0 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  me option is use
100f0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
10100 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
10110 5f 48 49 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b  _HINT]].** The [
10120 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
10130 45 5f 48 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69  E_HINT] opcode i
10140 73 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  s used by SQLite
10150 20 74 6f 20 67 69 76 65 20 74 68 65 20 56 46 53   to give the VFS
10160 0a 2a 2a 20 6c 61 79 65 72 20 61 20 68 69 6e 74  .** layer a hint
10170 20 6f 66 20 68 6f 77 20 6c 61 72 67 65 20 74 68   of how large th
10180 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
10190 77 69 6c 6c 20 67 72 6f 77 20 74 6f 20 62 65 20  will grow to be 
101a0 64 75 72 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75  during the.** cu
101b0 72 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f  rrent transactio
101c0 6e 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73  n.  This hint is
101d0 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 20   not guaranteed 
101e0 74 6f 20 62 65 20 61 63 63 75 72 61 74 65 20 62  to be accurate b
101f0 75 74 20 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65  ut it.** is ofte
10200 6e 20 63 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e  n close.  The un
10210 64 65 72 6c 79 69 6e 67 20 56 46 53 20 6d 69 67  derlying VFS mig
10220 68 74 20 63 68 6f 6f 73 65 20 74 6f 20 70 72 65  ht choose to pre
10230 61 6c 6c 6f 63 61 74 65 20 64 61 74 61 62 61 73  allocate databas
10240 65 0a 2a 2a 20 66 69 6c 65 20 73 70 61 63 65 20  e.** file space 
10250 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 68 69  based on this hi
10260 6e 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 68  nt in order to h
10270 65 6c 70 20 77 72 69 74 65 73 20 74 6f 20 74 68  elp writes to th
10280 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69  e database.** fi
10290 6c 65 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a  le run faster..*
102a0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
102b0 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49  E_FCNTL_CHUNK_SI
102c0 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ZE]].** The [SQL
102d0 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
102e0 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73 20  SIZE] opcode is 
102f0 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74 20  used to request 
10300 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a 20  that the VFS.** 
10310 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75 6e  extends and trun
10320 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62 61  cates the databa
10330 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e 6b  se file in chunk
10340 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65 63  s of a size spec
10350 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  ified.** by the 
10360 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74 68  user. The fourth
10370 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
10380 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
10390 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a  ol()] should .**
103a0 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e 74   point to an int
103b0 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29 20  eger (type int) 
103c0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
103d0 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74 6f  ew chunk-size to
103e0 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65 20   use.** for the 
103f0 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62 61  nominated databa
10400 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20 64  se. Allocating d
10410 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70 61  atabase file spa
10420 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20 63  ce in large.** c
10430 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20 61  hunks (say 1MB a
10440 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20 72  t a time), may r
10450 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74 65  educe file-syste
10460 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  m fragmentation 
10470 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20 70  and.** improve p
10480 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 6f  erformance on so
10490 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a  me systems..**.*
104a0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
104b0 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
104c0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
104d0 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
104e0 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73  INTER] opcode is
104f0 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
10500 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20  a pointer.** to 
10510 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
10520 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69  e] object associ
10530 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72 74  ated with a part
10540 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
10550 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
10560 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
10570 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
10580 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  OINTER]..**.** <
10590 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
105a0 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45  L_JOURNAL_POINTE
105b0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
105c0 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c  TE_FCNTL_JOURNAL
105d0 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65  _POINTER] opcode
105e0 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61   is used to obta
105f0 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  in a pointer.** 
10600 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
10610 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73  file] object ass
10620 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
10630 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28 65   journal file (e
10640 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72 6f  ither.** the [ro
10650 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
10660 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68  or the [write-ah
10670 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61 20  ead log]) for a 
10680 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
10690 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
106a0 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51  n.  See also [SQ
106b0 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
106c0 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
106d0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
106e0 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 5d  TL_SYNC_OMITTED]
106f0 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 69  ].** No longer i
10700 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  n use..**.** <li
10710 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
10720 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  SYNC]].** The [S
10730 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
10740 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e 65  ] opcode is gene
10750 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  rated internally
10760 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a 2a   by SQLite and.*
10770 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56 46  * sent to the VF
10780 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65  S immediately be
10790 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20 6d  fore the xSync m
107a0 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64  ethod is invoked
107b0 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61 73   on a.** databas
107c0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
107d0 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78 53  r. Or, if the xS
107e0 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f  ync method is no
107f0 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62 65  t invoked .** be
10800 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20 68  cause the user h
10810 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53 51  as configured SQ
10820 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b 50  Lite with .** [P
10830 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
10840 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63 68  s | PRAGMA synch
10850 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20 69  ronous=OFF] it i
10860 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c 61  s invoked in pla
10870 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78 53  ce .** of the xS
10880 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20 6d  ync method. In m
10890 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20 70  ost cases, the p
108a0 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 20  ointer argument 
108b0 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20 74  passed with.** t
108c0 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
108d0 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76 65   is NULL. Howeve
108e0 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62 61  r, if the databa
108f0 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67  se file is being
10900 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70 61   synced.** as pa
10910 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64 61  rt of a multi-da
10920 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20 74  tabase commit, t
10930 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e  he argument poin
10940 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72 6d  ts to a nul-term
10950 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67  inated.** string
10960 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
10970 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61 73  transactions mas
10980 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ter-journal file
10990 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68 61   name. VFSes tha
109a0 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65 65  t .** do not nee
109b0 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73 68  d this signal sh
109c0 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67  ould silently ig
109d0 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65  nore this opcode
109e0 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 0a  . Applications .
109f0 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 61  ** should not ca
10a00 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ll [sqlite3_file
10a10 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68  _control()] with
10a20 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73 20   this opcode as 
10a30 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a 2a  doing so may .**
10a40 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70 65   disrupt the ope
10a50 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 70  ration of the sp
10a60 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73 20  ecialized VFSes 
10a70 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65 20  that do require 
10a80 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  it.  .**.** <li>
10a90 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  [[SQLITE_FCNTL_C
10aa0 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d 5d  OMMIT_PHASETWO]]
10ab0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
10ac0 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41  FCNTL_COMMIT_PHA
10ad0 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69 73  SETWO] opcode is
10ae0 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72   generated inter
10af0 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 0a  nally by SQLite.
10b00 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20 74  ** and sent to t
10b10 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20 74  he VFS after a t
10b20 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 62  ransaction has b
10b30 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69 6d  een committed im
10b40 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75 74  mediately.** but
10b50 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74 61   before the data
10b60 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65 64  base is unlocked
10b70 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20  . VFSes that do 
10b80 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73 69  not need this si
10b90 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20 73  gnal.** should s
10ba0 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20 74  ilently ignore t
10bb0 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70 6c  his opcode. Appl
10bc0 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ications should 
10bd0 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c  not call.** [sql
10be0 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
10bf0 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20 6f  l()] with this o
10c00 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20 73  pcode as doing s
10c10 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74 68  o may disrupt th
10c20 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20  e .** operation 
10c30 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69 7a  of the specializ
10c40 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  ed VFSes that do
10c50 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a 2a   require it.  .*
10c60 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
10c70 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
10c80 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65  _RETRY]].** ^The
10c90 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57   [SQLITE_FCNTL_W
10ca0 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20 6f  IN32_AV_RETRY] o
10cb0 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
10cc0 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f 6d   configure autom
10cd0 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63 6f  atic.** retry co
10ce0 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76 61  unts and interva
10cf0 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20 64  ls for certain d
10d00 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f  isk I/O operatio
10d10 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77 69  ns for the.** wi
10d20 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20 6f  ndows [VFS] in o
10d30 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20  rder to provide 
10d40 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74 68  robustness in th
10d50 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a 2a  e presence of.**
10d60 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f 67   anti-virus prog
10d70 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75 6c  rams.  By defaul
10d80 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20 56  t, the windows V
10d90 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66 69  FS will retry fi
10da0 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c 65  le read,.** file
10db0 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c 65   write, and file
10dc0 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f   delete operatio
10dd0 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d 65  ns up to 10 time
10de0 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79 0a  s, with a delay.
10df0 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73 65  ** of 25 millise
10e00 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68 65  conds before the
10e10 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e 64   first retry and
10e20 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79 20   with the delay 
10e30 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62 79  increasing.** by
10e40 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 32   an additional 2
10e50 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 77  5 milliseconds w
10e60 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71 75  ith each subsequ
10e70 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69 73  ent retry.  This
10e80 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f 77  .** opcode allow
10e90 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c 75  s these two valu
10ea0 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20 61  es (10 retries a
10eb0 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e  nd 25 millisecon
10ec0 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a 20  ds of delay).** 
10ed0 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e 20  to be adjusted. 
10ee0 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20   The values are 
10ef0 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c 20  changed for all 
10f00 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
10f10 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20 74  ions.** within t
10f20 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e  he same process.
10f30 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69    The argument i
10f40 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
10f50 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a 2a  n array of two.*
10f60 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72 65  * integers where
10f70 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65 67   the first integ
10f80 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72 65  er is the new re
10f90 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74 68  try count and th
10fa0 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65  e second.** inte
10fb0 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61 79  ger is the delay
10fc0 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e 74  .  If either int
10fd0 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76 65  eger is negative
10fe0 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74 69  , then the setti
10ff0 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61  ng.** is not cha
11000 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61 64  nged but instead
11010 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65   the prior value
11020 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e 67   of that setting
11030 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 69   is written.** i
11040 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65 6e  nto the array en
11050 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74 68  try, allowing th
11060 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79 20  e current retry 
11070 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a 2a  settings to be.*
11080 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e 20  * interrogated. 
11090 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61 72   The zDbName par
110a0 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65  ameter is ignore
110b0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
110c0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
110d0 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68  IST_WAL]].** ^Th
110e0 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
110f0 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70 63  PERSIST_WAL] opc
11100 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  ode is used to s
11110 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a  et or query the.
11120 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b 57  ** persistent [W
11130 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61 64  AL | Write Ahead
11140 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20 20   Log] setting.  
11150 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
11160 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72 69  auxiliary.** wri
11170 74 65 20 61 68 65 61 64 20 6c 6f 67 20 61 6e 64  te ahead log and
11180 20 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 66   shared memory f
11190 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74 72  iles used for tr
111a0 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f  ansaction contro
111b0 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61 74  l.** are automat
111c0 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
111d0 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20 63  hen the latest c
111e0 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
111f0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c 6f   database.** clo
11200 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70 65  ses.  Setting pe
11210 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
11220 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20 66  e causes those f
11230 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74 20  iles to persist 
11240 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20  after.** close. 
11250 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65 20   Persisting the 
11260 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c 20  files is useful 
11270 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63 65  when other proce
11280 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  sses that do not
11290 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20 70  .** have write p
112a0 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68 65  ermission on the
112b0 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
112c0 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ining the databa
112d0 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a 20  se file want.** 
112e0 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74 61  to read the data
112f0 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74 68  base file, as th
11300 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65 64  e WAL and shared
11310 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d 75   memory files mu
11320 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20 6f  st exist.** in o
11330 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61 74  rder for the dat
11340 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61 64  abase to be read
11350 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72 74  able.  The fourt
11360 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  h parameter to.*
11370 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  * [sqlite3_file_
11380 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20 74  control()] for t
11390 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75 6c  his opcode shoul
113a0 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74  d be a pointer t
113b0 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a 2a  o an integer..**
113c0 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69 73   That integer is
113d0 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70 65   0 to disable pe
113e0 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
113f0 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65  e or 1 to enable
11400 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20 57   persistent.** W
11410 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  AL mode.  If the
11420 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11430 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11440 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11450 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20 70  current.** WAL p
11460 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74 69  ersistence setti
11470 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ng..**.** <li>[[
11480 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57  SQLITE_FCNTL_POW
11490 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
114a0 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
114b0 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
114c0 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70  FE_OVERWRITE] op
114d0 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
114e0 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
114f0 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 22  .** persistent "
11500 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77 72  powersafe-overwr
11510 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20 73  ite" or "PSOW" s
11520 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53 4f  etting.  The PSO
11530 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65 74  W setting.** det
11540 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51 4c  ermines the [SQL
11550 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53  ITE_IOCAP_POWERS
11560 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 62  AFE_OVERWRITE] b
11570 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44 65  it of the.** xDe
11580 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
11590 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68 65  ics methods. The
115a0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
115b0 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  r to.** [sqlite3
115c0 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
115d0 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65   for this opcode
115e0 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69   should be a poi
115f0 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
11600 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65  er..** That inte
11610 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73 61  ger is 0 to disa
11620 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 20  ble zero-damage 
11630 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61  mode or 1 to ena
11640 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 0a  ble zero-damage.
11650 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  ** mode.  If the
11660 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11670 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11680 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11690 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d  current.** zero-
116a0 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74 74  damage mode sett
116b0 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
116c0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56  [SQLITE_FCNTL_OV
116d0 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68  ERWRITE]].** ^Th
116e0 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
116f0 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64  OVERWRITE] opcod
11700 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  e is invoked by 
11710 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70 65  SQLite after ope
11720 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65 20  ning.** a write 
11730 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 69  transaction to i
11740 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75 6e  ndicate that, un
11750 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c 65  less it is rolle
11760 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65 0a  d back for some.
11770 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20 65  ** reason, the e
11780 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20 66  ntire database f
11790 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65 72  ile will be over
117a0 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20 63  written by the c
117b0 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e 73  urrent .** trans
117c0 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20  action. This is 
117d0 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20 6f  used by VACUUM o
117e0 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
117f0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
11800 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a  NTL_VFSNAME]].**
11810 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
11820 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70 63  NTL_VFSNAME] opc
11830 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ode can be used 
11840 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e 61  to obtain the na
11850 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56  mes of.** all [V
11860 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46 53  FSes] in the VFS
11870 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61 6d   stack.  The nam
11880 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56 46  es are of all VF
11890 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65 0a  S shims and the.
118a0 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d  ** final bottom-
118b0 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77 72  level VFS are wr
118c0 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72  itten into memor
118d0 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
118e0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  .** [sqlite3_mal
118f0 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20 72  loc()] and the r
11900 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64 20  esult is stored 
11910 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61 72  in the char* var
11920 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74 68  iable.** that th
11930 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
11940 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 66  er of [sqlite3_f
11950 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 70  ile_control()] p
11960 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68 65  oints to..** The
11970 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f   caller is respo
11980 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69  nsible for freei
11990 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68  ng the memory wh
119a0 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69 74  en done.  As wit
119b0 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63 6f  h.** all file-co
119c0 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20 74  ntrol actions, t
119d0 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
119e0 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20 77  ntee that this w
119f0 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20  ill actually.** 
11a00 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43 61  do anything.  Ca
11a10 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e 69  llers should ini
11a20 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61 72  tialize the char
11a30 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61 20  * variable to a 
11a40 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  NULL.** pointer 
11a50 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69 6c  in case this fil
11a60 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74  e-control is not
11a70 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20 54   implemented.  T
11a80 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
11a90 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64 20  .** is intended 
11aa0 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20 75  for diagnostic u
11ab0 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c  se only..**.** <
11ac0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
11ad0 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a  L_VFS_POINTER]].
11ae0 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
11af0 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
11b00 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20  R] opcode finds 
11b10 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
11b20 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56   top-level.** [V
11b30 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79 20  FSes] currently 
11b40 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20 61  in use.  ^(The a
11b50 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a 20  rgument X in.** 
11b60 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
11b70 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f 46  trol(db,SQLITE_F
11b80 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52  CNTL_VFS_POINTER
11b90 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20 6f  ,X) must be.** o
11ba0 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65 33  f type "[sqlite3
11bb0 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69 73  _vfs] **".  This
11bc0 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73 65   opcodes will se
11bd0 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f 69  t *X.** to a poi
11be0 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70 2d  nter to the top-
11bf0 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20  level VFS.)^.** 
11c00 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20  ^When there are 
11c10 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68 69  multiple VFS shi
11c20 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b 2c  ms in the stack,
11c30 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69 6e   this opcode fin
11c40 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72 2d  ds the.** upper-
11c50 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a  most shim only..
11c60 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
11c70 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
11c80 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20 61  ].** ^Whenever a
11c90 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d   [PRAGMA] statem
11ca0 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20 61  ent is parsed, a
11cb0 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  n [SQLITE_FCNTL_
11cc0 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65  PRAGMA] .** file
11cd0 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e 74   control is sent
11ce0 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73 71   to the open [sq
11cf0 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
11d00 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ct corresponding
11d10 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61 62  .** to the datab
11d20 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69 63  ase file to whic
11d30 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74 61  h the pragma sta
11d40 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20 5e  tement refers. ^
11d50 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  The argument.** 
11d60 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  to the [SQLITE_F
11d70 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
11d80 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e 20  e control is an 
11d90 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e  array of.** poin
11da0 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
11db0 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69 63  (char**) in whic
11dc0 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65  h the second ele
11dd0 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72 61  ment of the arra
11de0 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  y.** is the name
11df0 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 61   of the pragma a
11e00 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c 65  nd the third ele
11e10 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67 75  ment is the argu
11e20 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 70  ment to the.** p
11e30 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69 66  ragma or NULL if
11e40 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73 20   the pragma has 
11e50 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 54  no argument.  ^T
11e60 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  he handler for a
11e70 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  n.** [SQLITE_FCN
11e80 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20  TL_PRAGMA] file 
11e90 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74 69  control can opti
11ea0 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65 20  onally make the 
11eb0 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a  first element.**
11ec0 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20 61   of the char** a
11ed0 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74 6f  rgument point to
11ee0 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e   a string obtain
11ef0 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
11f00 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f  _mprintf()].** o
11f10 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74  r the equivalent
11f20 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e 67   and that string
11f30 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
11f40 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70   result of the p
11f50 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65 20  ragma or.** the 
11f60 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 66  error message if
11f70 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69 6c   the pragma fail
11f80 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53  s. ^If the.** [S
11f90 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
11fa0 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  MA] file control
11fb0 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
11fc0 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65 6e  _NOTFOUND], then
11fd0 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41   normal .** [PRA
11fe0 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  GMA] processing 
11ff0 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66 20  continues.  ^If 
12000 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  the [SQLITE_FCNT
12010 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c  L_PRAGMA].** fil
12020 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
12030 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74  s [SQLITE_OK], t
12040 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20 61  hen the parser a
12050 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a  ssumes that the.
12060 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64 6c  ** VFS has handl
12070 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69 74  ed the PRAGMA it
12080 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61 72  self and the par
12090 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61 20  ser generates a 
120a0 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72 65  no-op.** prepare
120b0 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20 72  d statement if r
120c0 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73 20  esult string is 
120d0 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72 65  NULL, or that re
120e0 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a 20  turns a copy.** 
120f0 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 74  of the result st
12100 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72 69  ring if the stri
12110 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a  ng is non-NULL..
12120 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49  ** ^If the [SQLI
12130 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
12140 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65   file control re
12150 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65 73  turns.** any res
12160 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20 74  ult code other t
12170 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  han [SQLITE_OK] 
12180 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  or [SQLITE_NOTFO
12190 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  UND], that means
121a0 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46 53  .** that the VFS
121b0 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20   encountered an 
121c0 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e 64  error while hand
121d0 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41  ling the [PRAGMA
121e0 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f 6d  ] and the.** com
121f0 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  pilation of the 
12200 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69 74  PRAGMA fails wit
12210 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54 68  h an error.  ^Th
12220 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
12230 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20  PRAGMA].** file 
12240 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20 61  control occurs a
12250 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
12260 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d  of pragma statem
12270 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ent analysis and
12280 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62 6c   so.** it is abl
12290 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62 75  e to override bu
122a0 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d 20  ilt-in [PRAGMA] 
122b0 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
122c0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
122d0 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
122e0 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
122f0 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e  TE_FCNTL_BUSYHAN
12300 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f  DLER].** file-co
12310 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e 76  ntrol may be inv
12320 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20 6f  oked by SQLite o
12330 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
12340 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73 68  ile handle.** sh
12350 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20 69  ortly after it i
12360 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64 65  s opened in orde
12370 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 63  r to provide a c
12380 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20 61  ustom VFS with a
12390 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65 20  ccess.** to the 
123a0 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73 79  connections busy
123b0 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
123c0 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  k. The argument 
123d0 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64  is of type (void
123e0 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72 72   **).** - an arr
123f0 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64 20  ay of two (void 
12400 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66  *) values. The f
12410 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61 63  irst (void *) ac
12420 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a  tually points.**
12430 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f   to a function o
12440 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29 28  f type (int (*)(
12450 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72 64  void *)). In ord
12460 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  er to invoke the
12470 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20   connections.** 
12480 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74 68  busy-handler, th
12490 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75  is function shou
124a0 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ld be invoked wi
124b0 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28 76  th the second (v
124c0 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68 65  oid *) in.** the
124d0 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f 6e   array as the on
124e0 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20  ly argument. If 
124f0 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  it returns non-z
12500 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f 70  ero, then the op
12510 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c  eration.** shoul
12520 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49 66  d be retried. If
12530 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72 6f   it returns zero
12540 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46 53  , the custom VFS
12550 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e 20   should abandon 
12560 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6f  the.** current o
12570 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  peration..**.** 
12580 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12590 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d  TL_TEMPFILENAME]
125a0 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69 6f  ].** ^Applicatio
125b0 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 65  n can invoke the
125c0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
125d0 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69 6c  EMPFILENAME] fil
125e0 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20  e-control.** to 
125f0 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e 65  have SQLite gene
12600 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f 72  rate a.** tempor
12610 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73 69  ary filename usi
12620 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f  ng the same algo
12630 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66 6f  rithm that is fo
12640 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72 61  llowed to genera
12650 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20  te.** temporary 
12660 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54 45  filenames for TE
12670 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74  MP tables and ot
12680 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  her internal use
12690 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75 6d  s.  The.** argum
126a0 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20  ent should be a 
126b0 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69 6c  char** which wil
126c0 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68  l be filled with
126d0 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a   the filename.**
126e0 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65   written into me
126f0 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
12700 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
12710 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c 6c  oc()].  The call
12720 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76  er should.** inv
12730 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  oke [sqlite3_fre
12740 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73 75  e()] on the resu
12750 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d 65  lt to avoid a me
12760 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a  mory leak..**.**
12770 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12780 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a  NTL_MMAP_SIZE]].
12790 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
127a0 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  CNTL_MMAP_SIZE] 
127b0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20  file control is 
127c0 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f 72  used to query or
127d0 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78 69   set the.** maxi
127e0 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  mum number of by
127f0 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65  tes that will be
12800 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79   used for memory
12810 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20  -mapped I/O..** 
12820 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
12830 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76  a pointer to a v
12840 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71 6c  alue of type sql
12850 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74 0a  ite3_int64 that.
12860 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f 72  ** is an advisor
12870 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  y maximum number
12880 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
12890 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79 20   file to memory 
128a0 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f 69  map.  The.** poi
128b0 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69 74  nter is overwrit
128c0 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c 64  ten with the old
128d0 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69 6d   value.  The lim
128e0 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65  it is not change
128f0 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c 75  d if.** the valu
12900 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f 69  e originally poi
12910 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74  nted to is negat
12920 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20  ive, and so the 
12930 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a 2a  current limit .*
12940 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64  * can be queried
12950 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20 61   by passing in a
12960 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 65   pointer to a ne
12970 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20 20  gative number.  
12980 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e  This.** file-con
12990 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e 74  trol is used int
129a0 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c 65  ernally to imple
129b0 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d 61  ment [PRAGMA mma
129c0 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  p_size]..**.** <
129d0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
129e0 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68 65  L_TRACE]].** The
129f0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
12a00 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
12a10 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76 69  ol provides advi
12a20 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  sory information
12a30 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20 61  .** to the VFS a
12a40 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68 69  bout what the hi
12a50 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20 74  gher layers of t
12a60 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20  he SQLite stack 
12a70 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68  are doing..** Th
12a80 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
12a90 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20  is used by some 
12aa0 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72 61  VFS activity tra
12ab0 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a  cing [shims]..**
12ac0 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
12ad0 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
12ae0 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67 68  ed string.  High
12af0 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65  er layers in the
12b00 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63 6b  .** SQLite stack
12b10 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69 6e   may generate in
12b20 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73 20  stances of this 
12b30 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66 0a  file control if.
12b40 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55  ** the [SQLITE_U
12b50 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20  SE_FCNTL_TRACE] 
12b60 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
12b70 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
12b80 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
12b90 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
12ba0 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ED]].** The [SQL
12bb0 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
12bc0 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  VED] file contro
12bd0 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
12be0 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a 2a   argument as a.*
12bf0 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  * pointer to an 
12c00 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20 77  integer and it w
12c10 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e 20  rites a boolean 
12c20 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  into that intege
12c30 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f  r depending.** o
12c40 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
12c50 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62 65   the file has be
12c60 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76 65  en renamed, move
12c70 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73 69  d, or deleted si
12c80 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66 69  nce it.** was fi
12c90 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a  rst opened..**.*
12ca0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12cb0 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
12cc0 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
12cd0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
12ce0 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_GET_HANDLE] o
12cf0 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65  pcode can be use
12d00 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 0a  d to obtain the.
12d10 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  ** underlying na
12d20 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65  tive file handle
12d30 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
12d40 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e 20   a file handle. 
12d50 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63 6f   This file.** co
12d60 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73  ntrol interprets
12d70 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73   its argument as
12d80 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
12d90 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64  native file hand
12da0 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65 73  le and.** writes
12db0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76   the resulting v
12dc0 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a  alue there..**.*
12dd0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12de0 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48  CNTL_WIN32_SET_H
12df0 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
12e00 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
12e10 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_SET_HANDLE] o
12e20 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
12e30 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
12e40 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
12e50 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
12e60 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 73  trol method to s
12e70 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61 6e  wap the file han
12e80 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e 65  dle with the one
12e90 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20 62  .** pointed to b
12ea0 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d  y the pArg argum
12eb0 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61 62  ent.  This capab
12ec0 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64 75  ility is used du
12ed0 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a 20  ring testing.** 
12ee0 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74  and only needs t
12ef0 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 77  o be supported w
12f00 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54 20  hen SQLITE_TEST 
12f10 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a  is defined..**.*
12f20 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12f30 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d  CNTL_WAL_BLOCK]]
12f40 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
12f50 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
12f60 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20   is a signal to 
12f70 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74 68  the VFS layer th
12f80 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20 62  at it might.** b
12f90 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20 74  e advantageous t
12fa0 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 6e  o block on the n
12fb0 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66 20  ext WAL lock if 
12fc0 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74 20  the lock is not 
12fd0 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 61  immediately.** a
12fe0 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 57  vailable.  The W
12ff0 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73 73  AL subsystem iss
13000 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c 20  ues this signal 
13010 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20 63  during rare.** c
13020 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e 20  ircumstances in 
13030 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20 70  order to fix a p
13040 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69 6f  roblem with prio
13050 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e 0a  rity inversion..
13060 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** Applications 
13070 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f  should <em>not</
13080 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69 6c  em> use this fil
13090 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a  e-control..**.**
130a0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
130b0 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20  NTL_ZIPVFS]].** 
130c0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
130d0 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64 65  L_ZIPVFS] opcode
130e0 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
130f0 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e 20  by zipvfs only. 
13100 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46 53  All other.** VFS
13110 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53   should return S
13120 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66  QLITE_NOTFOUND f
13130 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 0a  or this opcode..
13140 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13150 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a  TE_FCNTL_RBU]].*
13160 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13170 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65 20  NTL_RBU] opcode 
13180 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
13190 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46  y the special VF
131a0 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68 65  S used by.** the
131b0 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20 6f   RBU extension o
131c0 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20  nly.  All other 
131d0 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72  VFS should retur
131e0 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  n SQLITE_NOTFOUN
131f0 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f 70  D for.** this op
13200 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c  code.  .**.** <l
13210 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13220 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52  _BEGIN_ATOMIC_WR
13230 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65 20  ITE]].** If the 
13240 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45  [SQLITE_FCNTL_BE
13250 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
13260 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e 73  ] opcode returns
13270 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65 6e   SQLITE_OK, then
13280 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65 73  .** the file des
13290 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63 65  criptor is place
132a0 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69 74  d in "batch writ
132b0 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a 2a  e mode", which.*
132c0 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62 73  * means all subs
132d0 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70 65  equent write ope
132e0 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  rations will be 
132f0 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f 6e  deferred and don
13300 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79 20  e.** atomically 
13310 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51 4c  at the next [SQL
13320 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
13330 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 20  _ATOMIC_WRITE]. 
13340 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61 74   Systems.** that
13350 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20   do not support 
13360 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72 69  batch atomic wri
13370 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  tes will return 
13380 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e  SQLITE_NOTFOUND.
13390 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61  .** ^Following a
133a0 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c 49   successful SQLI
133b0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
133c0 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64 20  TOMIC_WRITE and 
133d0 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65 20  prior to.** the 
133e0 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f  closing [SQLITE_
133f0 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
13400 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a 2a  MIC_WRITE] or.**
13410 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
13420 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
13430 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77 69  RITE], SQLite wi
13440 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46  ll make.** no VF
13450 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c 6c  S interface call
13460 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 73  s on the same [s
13470 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69 6c  qlite3_file] fil
13480 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a 20  e descriptor.** 
13490 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c 73  except for calls
134a0 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20 6d   to the xWrite m
134b0 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78 46  ethod and the xF
134c0 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f  ileControl metho
134d0 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49 54  d.** with [SQLIT
134e0 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e  E_FCNTL_SIZE_HIN
134f0 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  T]..**.** <li>[[
13500 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
13510 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
13520 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
13530 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41  E_FCNTL_COMMIT_A
13540 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63  TOMIC_WRITE] opc
13550 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77  ode causes all w
13560 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  rite.** operatio
13570 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72 65  ns since the pre
13580 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c  vious successful
13590 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51   call to .** [SQ
135a0 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e  LITE_FCNTL_BEGIN
135b0 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74  _ATOMIC_WRITE] t
135c0 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61  o be performed a
135d0 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68  tomically..** Th
135e0 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
135f0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
13600 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  OK] if and only 
13610 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77 65  if the writes we
13620 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f 72  re.** all perfor
13630 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  med successfully
13640 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20 63   and have been c
13650 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72 73  ommitted to pers
13660 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 0a  istent storage..
13670 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f  ** ^Regardless o
13680 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
13690 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66 75   it is successfu
136a0 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f 6e  l, this file con
136b0 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74 68  trol takes.** th
136c0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
136d0 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77  r out of batch w
136e0 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68 61  rite mode so tha
136f0 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
13700 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61 74  .** write operat
13710 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e  ions are indepen
13720 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65  dent..** ^SQLite
13730 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f   will never invo
13740 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ke SQLITE_FCNTL_
13750 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52  COMMIT_ATOMIC_WR
13760 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
13770 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
13780 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
13790 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
137a0 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
137b0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
137c0 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41  FCNTL_ROLLBACK_A
137d0 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a  TOMIC_WRITE]].**
137e0 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
137f0 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d  TL_ROLLBACK_ATOM
13800 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  IC_WRITE] opcode
13810 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74   causes all writ
13820 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20  e.** operations 
13830 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f  since the previo
13840 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  us successful ca
13850 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54  ll to .** [SQLIT
13860 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
13870 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62  OMIC_WRITE] to b
13880 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a  e rolled back..*
13890 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  * ^This file con
138a0 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20 66  trol takes the f
138b0 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f  ile descriptor o
138c0 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74  ut of batch writ
138d0 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68 61  e mode.** so tha
138e0 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
138f0 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
13900 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e  s are independen
13910 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  t..** ^SQLite wi
13920 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20  ll never invoke 
13930 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c  SQLITE_FCNTL_ROL
13940 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49  LBACK_ATOMIC_WRI
13950 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20  TE without.** a 
13960 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75 6c  prior successful
13970 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45   call to [SQLITE
13980 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
13990 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 20 3c  MIC_WRITE]..** <
139a0 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  /ul>.*/.#define 
139b0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43  SQLITE_FCNTL_LOC
139c0 4b 53 54 41 54 45 20 20 20 20 20 20 20 20 20 20  KSTATE          
139d0 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53       1.#define S
139e0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47 45 54 5f  QLITE_FCNTL_GET_
139f0 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20  LOCKPROXYFILE   
13a00 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51      2.#define SQ
13a10 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c  LITE_FCNTL_SET_L
13a20 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20  OCKPROXYFILE    
13a30 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c     3.#define SQL
13a40 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f 45  ITE_FCNTL_LAST_E
13a50 52 52 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20  RRNO            
13a60 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    4.#define SQLI
13a70 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
13a80 4e 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NT              
13a90 20 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   5.#define SQLIT
13aa0 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49  E_FCNTL_CHUNK_SI
13ab0 5a 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ZE              
13ac0 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  6.#define SQLITE
13ad0 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e  _FCNTL_FILE_POIN
13ae0 54 45 52 20 20 20 20 20 20 20 20 20 20 20 20 37  TER            7
13af0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13b00 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54  FCNTL_SYNC_OMITT
13b10 45 44 20 20 20 20 20 20 20 20 20 20 20 20 38 0a  ED            8.
13b20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
13b30 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45  CNTL_WIN32_AV_RE
13b40 54 52 59 20 20 20 20 20 20 20 20 20 20 39 0a 23  TRY          9.#
13b50 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
13b60 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57 41 4c 20  NTL_PERSIST_WAL 
13b70 20 20 20 20 20 20 20 20 20 20 20 31 30 0a 23 64             10.#d
13b80 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
13b90 54 4c 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20  TL_OVERWRITE    
13ba0 20 20 20 20 20 20 20 20 20 20 31 31 0a 23 64 65            11.#de
13bb0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13bc0 4c 5f 56 46 53 4e 41 4d 45 20 20 20 20 20 20 20  L_VFSNAME       
13bd0 20 20 20 20 20 20 20 20 20 31 32 0a 23 64 65 66           12.#def
13be0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13bf0 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
13c00 52 49 54 45 20 20 20 20 31 33 0a 23 64 65 66 69  RITE    13.#defi
13c10 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13c20 50 52 41 47 4d 41 20 20 20 20 20 20 20 20 20 20  PRAGMA          
13c30 20 20 20 20 20 20 20 31 34 0a 23 64 65 66 69 6e         14.#defin
13c40 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42  e SQLITE_FCNTL_B
13c50 55 53 59 48 41 4e 44 4c 45 52 20 20 20 20 20 20  USYHANDLER      
13c60 20 20 20 20 20 20 31 35 0a 23 64 65 66 69 6e 65        15.#define
13c70 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45   SQLITE_FCNTL_TE
13c80 4d 50 46 49 4c 45 4e 41 4d 45 20 20 20 20 20 20  MPFILENAME      
13c90 20 20 20 20 20 31 36 0a 23 64 65 66 69 6e 65 20       16.#define 
13ca0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41  SQLITE_FCNTL_MMA
13cb0 50 5f 53 49 5a 45 20 20 20 20 20 20 20 20 20 20  P_SIZE          
13cc0 20 20 20 20 31 38 0a 23 64 65 66 69 6e 65 20 53      18.#define S
13cd0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43  QLITE_FCNTL_TRAC
13ce0 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
13cf0 20 20 20 31 39 0a 23 64 65 66 69 6e 65 20 53 51     19.#define SQ
13d00 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d  LITE_FCNTL_HAS_M
13d10 4f 56 45 44 20 20 20 20 20 20 20 20 20 20 20 20  OVED            
13d20 20 20 32 30 0a 23 64 65 66 69 6e 65 20 53 51 4c    20.#define SQL
13d30 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 20 20  ITE_FCNTL_SYNC  
13d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d50 20 32 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   21.#define SQLI
13d60 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f  TE_FCNTL_COMMIT_
13d70 50 48 41 53 45 54 57 4f 20 20 20 20 20 20 20 20  PHASETWO        
13d80 32 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  22.#define SQLIT
13d90 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45  E_FCNTL_WIN32_SE
13da0 54 5f 48 41 4e 44 4c 45 20 20 20 20 20 20 20 32  T_HANDLE       2
13db0 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  3.#define SQLITE
13dc0 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b  _FCNTL_WAL_BLOCK
13dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 34                24
13de0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13df0 46 43 4e 54 4c 5f 5a 49 50 56 46 53 20 20 20 20  FCNTL_ZIPVFS    
13e00 20 20 20 20 20 20 20 20 20 20 20 20 20 32 35 0a               25.
13e10 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
13e20 43 4e 54 4c 5f 52 42 55 20 20 20 20 20 20 20 20  CNTL_RBU        
13e30 20 20 20 20 20 20 20 20 20 20 20 20 32 36 0a 23              26.#
13e40 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
13e50 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 20  NTL_VFS_POINTER 
13e60 20 20 20 20 20 20 20 20 20 20 20 32 37 0a 23 64             27.#d
13e70 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
13e80 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54  TL_JOURNAL_POINT
13e90 45 52 20 20 20 20 20 20 20 20 32 38 0a 23 64 65  ER        28.#de
13ea0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13eb0 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44  L_WIN32_GET_HAND
13ec0 4c 45 20 20 20 20 20 20 20 32 39 0a 23 64 65 66  LE       29.#def
13ed0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13ee0 5f 50 44 42 20 20 20 20 20 20 20 20 20 20 20 20  _PDB            
13ef0 20 20 20 20 20 20 20 20 33 30 0a 23 64 65 66 69          30.#defi
13f00 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13f10 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49  BEGIN_ATOMIC_WRI
13f20 54 45 20 20 20 20 20 33 31 0a 23 64 65 66 69 6e  TE     31.#defin
13f30 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  e SQLITE_FCNTL_C
13f40 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49  OMMIT_ATOMIC_WRI
13f50 54 45 20 20 20 20 33 32 0a 23 64 65 66 69 6e 65  TE    32.#define
13f60 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f   SQLITE_FCNTL_RO
13f70 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52  LLBACK_ATOMIC_WR
13f80 49 54 45 20 20 33 33 0a 0a 2f 2a 20 64 65 70 72  ITE  33../* depr
13f90 65 63 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a  ecated names */.
13fa0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47  #define SQLITE_G
13fb0 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
13fc0 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e        SQLITE_FCN
13fd0 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TL_GET_LOCKPROXY
13fe0 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c  FILE.#define SQL
13ff0 49 54 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58  ITE_SET_LOCKPROX
14000 59 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54  YFILE      SQLIT
14010 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b  E_FCNTL_SET_LOCK
14020 50 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e  PROXYFILE.#defin
14030 65 20 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52  e SQLITE_LAST_ER
14040 52 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20  RNO             
14050 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
14060 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20  T_ERRNO.../*.** 
14070 43 41 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20  CAPI3REF: Mutex 
14080 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65  Handle.**.** The
14090 20 6d 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69   mutex module wi
140a0 74 68 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69  thin SQLite defi
140b0 6e 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  nes [sqlite3_mut
140c0 65 78 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20  ex] to be an.** 
140d0 61 62 73 74 72 61 63 74 20 74 79 70 65 20 66 6f  abstract type fo
140e0 72 20 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74  r a mutex object
140f0 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f  .  The SQLite co
14100 72 65 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a  re never looks.*
14110 2a 20 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61  * at the interna
14120 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
14130 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   of an [sqlite3_
14140 6d 75 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79  mutex].  It only
14150 0a 2a 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70  .** deals with p
14160 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b  ointers to the [
14170 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f  sqlite3_mutex] o
14180 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74  bject..**.** Mut
14190 65 78 65 73 20 61 72 65 20 63 72 65 61 74 65 64  exes are created
141a0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
141b0 6d 75 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a  mutex_alloc()]..
141c0 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
141d0 74 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20  t sqlite3_mutex 
141e0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a  sqlite3_mutex;..
141f0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
14200 4c 6f 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69  Loadable Extensi
14210 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41  on Thunk.**.** A
14220 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
14230 6f 70 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61  opaque sqlite3_a
14240 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75  pi_routines stru
14250 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20  cture is passed 
14260 61 73 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20  as.** the third 
14270 70 61 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74  parameter to ent
14280 72 79 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f  ry points of [lo
14290 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e  adable extension
142a0 73 5d 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72  s].  This.** str
142b0 75 63 74 75 72 65 20 6d 75 73 74 20 62 65 20 74  ucture must be t
142c0 79 70 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65  ypedefed in orde
142d0 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  r to work around
142e0 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
142f0 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c  gs.** on some pl
14300 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65  atforms..*/.type
14310 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
14320 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20  e3_api_routines 
14330 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
14340 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ines;../*.** CAP
14350 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
14360 61 63 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a  ace Object.**.**
14370 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
14380 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20  the sqlite3_vfs 
14390 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74  object defines t
143a0 68 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74  he interface bet
143b0 77 65 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69  ween.** the SQLi
143c0 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20  te core and the 
143d0 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
143e0 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68  ting system.  Th
143f0 65 20 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68  e "vfs".** in th
14400 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62  e name of the ob
14410 6a 65 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20  ject stands for 
14420 22 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79  "virtual file sy
14430 73 74 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74  stem".  See.** t
14440 68 65 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f  he [VFS | VFS do
14450 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72  cumentation] for
14460 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
14470 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  tion..**.** The 
14480 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 56 65  value of the iVe
14490 72 73 69 6f 6e 20 66 69 65 6c 64 20 69 73 20 69  rsion field is i
144a0 6e 69 74 69 61 6c 6c 79 20 31 20 62 75 74 20 6d  nitially 1 but m
144b0 61 79 20 62 65 20 6c 61 72 67 65 72 20 69 6e 0a  ay be larger in.
144c0 2a 2a 20 66 75 74 75 72 65 20 76 65 72 73 69 6f  ** future versio
144d0 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 41  ns of SQLite.  A
144e0 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73  dditional fields
144f0 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65 64   may be appended
14500 20 74 6f 20 74 68 69 73 0a 2a 2a 20 6f 62 6a 65   to this.** obje
14510 63 74 20 77 68 65 6e 20 74 68 65 20 69 56 65 72  ct when the iVer
14520 73 69 6f 6e 20 76 61 6c 75 65 20 69 73 20 69 6e  sion value is in
14530 63 72 65 61 73 65 64 2e 20 20 4e 6f 74 65 20 74  creased.  Note t
14540 68 61 74 20 74 68 65 20 73 74 72 75 63 74 75 72  hat the structur
14550 65 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69  e.** of the sqli
14560 74 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63  te3_vfs object c
14570 68 61 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72  hanges in the tr
14580 61 6e 73 61 63 74 69 6f 6e 20 62 65 74 77 65 65  ansaction betwee
14590 6e 0a 2a 2a 20 53 51 4c 69 74 65 20 76 65 72 73  n.** SQLite vers
145a0 69 6f 6e 20 33 2e 35 2e 39 20 61 6e 64 20 33 2e  ion 3.5.9 and 3.
145b0 36 2e 30 20 61 6e 64 20 79 65 74 20 74 68 65 20  6.0 and yet the 
145c0 69 56 65 72 73 69 6f 6e 20 66 69 65 6c 64 20 77  iVersion field w
145d0 61 73 20 6e 6f 74 0a 2a 2a 20 6d 6f 64 69 66 69  as not.** modifi
145e0 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 7a  ed..**.** The sz
145f0 4f 73 46 69 6c 65 20 66 69 65 6c 64 20 69 73 20  OsFile field is 
14600 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
14610 73 75 62 63 6c 61 73 73 65 64 20 5b 73 71 6c 69  subclassed [sqli
14620 74 65 33 5f 66 69 6c 65 5d 0a 2a 2a 20 73 74 72  te3_file].** str
14630 75 63 74 75 72 65 20 75 73 65 64 20 62 79 20 74  ucture used by t
14640 68 69 73 20 56 46 53 2e 20 20 6d 78 50 61 74 68  his VFS.  mxPath
14650 6e 61 6d 65 20 69 73 20 74 68 65 20 6d 61 78 69  name is the maxi
14660 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 0a 2a 2a  mum length of.**
14670 20 61 20 70 61 74 68 6e 61 6d 65 20 69 6e 20 74   a pathname in t
14680 68 69 73 20 56 46 53 2e 0a 2a 2a 0a 2a 2a 20 52  his VFS..**.** R
14690 65 67 69 73 74 65 72 65 64 20 73 71 6c 69 74 65  egistered sqlite
146a0 33 5f 76 66 73 20 6f 62 6a 65 63 74 73 20 61 72  3_vfs objects ar
146b0 65 20 6b 65 70 74 20 6f 6e 20 61 20 6c 69 6e 6b  e kept on a link
146c0 65 64 20 6c 69 73 74 20 66 6f 72 6d 65 64 20 62  ed list formed b
146d0 79 0a 2a 2a 20 74 68 65 20 70 4e 65 78 74 20 70  y.** the pNext p
146e0 6f 69 6e 74 65 72 2e 20 20 54 68 65 20 5b 73 71  ointer.  The [sq
146f0 6c 69 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74  lite3_vfs_regist
14700 65 72 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71  er()].** and [sq
14710 6c 69 74 65 33 5f 76 66 73 5f 75 6e 72 65 67 69  lite3_vfs_unregi
14720 73 74 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63  ster()] interfac
14730 65 73 20 6d 61 6e 61 67 65 20 74 68 69 73 20 6c  es manage this l
14740 69 73 74 0a 2a 2a 20 69 6e 20 61 20 74 68 72 65  ist.** in a thre
14750 61 64 2d 73 61 66 65 20 77 61 79 2e 20 20 54 68  ad-safe way.  Th
14760 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 66  e [sqlite3_vfs_f
14770 69 6e 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ind()] interface
14780 0a 2a 2a 20 73 65 61 72 63 68 65 73 20 74 68 65  .** searches the
14790 20 6c 69 73 74 2e 20 20 4e 65 69 74 68 65 72 20   list.  Neither 
147a0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
147b0 63 6f 64 65 20 6e 6f 72 20 74 68 65 20 56 46 53  code nor the VFS
147c0 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  .** implementati
147d0 6f 6e 20 73 68 6f 75 6c 64 20 75 73 65 20 74 68  on should use th
147e0 65 20 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e  e pNext pointer.
147f0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 4e 65 78 74  .**.** The pNext
14800 20 66 69 65 6c 64 20 69 73 20 74 68 65 20 6f 6e   field is the on
14810 6c 79 20 66 69 65 6c 64 20 69 6e 20 74 68 65 20  ly field in the 
14820 73 71 6c 69 74 65 33 5f 76 66 73 0a 2a 2a 20 73  sqlite3_vfs.** s
14830 74 72 75 63 74 75 72 65 20 74 68 61 74 20 53 51  tructure that SQ
14840 4c 69 74 65 20 77 69 6c 6c 20 65 76 65 72 20 6d  Lite will ever m
14850 6f 64 69 66 79 2e 20 20 53 51 4c 69 74 65 20 77  odify.  SQLite w
14860 69 6c 6c 20 6f 6e 6c 79 20 61 63 63 65 73 73 0a  ill only access.
14870 2a 2a 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 69  ** or modify thi
14880 73 20 66 69 65 6c 64 20 77 68 69 6c 65 20 68 6f  s field while ho
14890 6c 64 69 6e 67 20 61 20 70 61 72 74 69 63 75 6c  lding a particul
148a0 61 72 20 73 74 61 74 69 63 20 6d 75 74 65 78 2e  ar static mutex.
148b0 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74  .** The applicat
148c0 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 65 76 65 72  ion should never
148d0 20 6d 6f 64 69 66 79 20 61 6e 79 74 68 69 6e 67   modify anything
148e0 20 77 69 74 68 69 6e 20 74 68 65 20 73 71 6c 69   within the sqli
148f0 74 65 33 5f 76 66 73 0a 2a 2a 20 6f 62 6a 65 63  te3_vfs.** objec
14900 74 20 6f 6e 63 65 20 74 68 65 20 6f 62 6a 65 63  t once the objec
14910 74 20 68 61 73 20 62 65 65 6e 20 72 65 67 69 73  t has been regis
14920 74 65 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  tered..**.** The
14930 20 7a 4e 61 6d 65 20 66 69 65 6c 64 20 68 6f 6c   zName field hol
14940 64 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  ds the name of t
14950 68 65 20 56 46 53 20 6d 6f 64 75 6c 65 2e 20 20  he VFS module.  
14960 54 68 65 20 6e 61 6d 65 20 6d 75 73 74 0a 2a 2a  The name must.**
14970 20 62 65 20 75 6e 69 71 75 65 20 61 63 72 6f 73   be unique acros
14980 73 20 61 6c 6c 20 56 46 53 20 6d 6f 64 75 6c 65  s all VFS module
14990 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74  s..**.** [[sqlit
149a0 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 5d 0a 2a  e3_vfs.xOpen]].*
149b0 2a 20 5e 53 51 4c 69 74 65 20 67 75 61 72 61 6e  * ^SQLite guaran
149c0 74 65 65 73 20 74 68 61 74 20 74 68 65 20 7a 46  tees that the zF
149d0 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65  ilename paramete
149e0 72 20 74 6f 20 78 4f 70 65 6e 0a 2a 2a 20 69 73  r to xOpen.** is
149f0 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c 20 70   either a NULL p
14a00 6f 69 6e 74 65 72 20 6f 72 20 73 74 72 69 6e 67  ointer or string
14a10 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f   obtained.** fro
14a20 6d 20 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65 28  m xFullPathname(
14a30 29 20 77 69 74 68 20 61 6e 20 6f 70 74 69 6f 6e  ) with an option
14a40 61 6c 20 73 75 66 66 69 78 20 61 64 64 65 64 2e  al suffix added.
14a50 0a 2a 2a 20 5e 49 66 20 61 20 73 75 66 66 69 78  .** ^If a suffix
14a60 20 69 73 20 61 64 64 65 64 20 74 6f 20 74 68 65   is added to the
14a70 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d   zFilename param
14a80 65 74 65 72 2c 20 69 74 20 77 69 6c 6c 0a 2a 2a  eter, it will.**
14a90 20 63 6f 6e 73 69 73 74 20 6f 66 20 61 20 73 69   consist of a si
14aa0 6e 67 6c 65 20 22 2d 22 20 63 68 61 72 61 63 74  ngle "-" charact
14ab0 65 72 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6e  er followed by n
14ac0 6f 20 6d 6f 72 65 20 74 68 61 6e 0a 2a 2a 20 31  o more than.** 1
14ad0 31 20 61 6c 70 68 61 6e 75 6d 65 72 69 63 20 61  1 alphanumeric a
14ae0 6e 64 2f 6f 72 20 22 2d 22 20 63 68 61 72 61 63  nd/or "-" charac
14af0 74 65 72 73 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65  ters..** ^SQLite
14b00 20 66 75 72 74 68 65 72 20 67 75 61 72 61 6e 74   further guarant
14b10 65 65 73 20 74 68 61 74 0a 2a 2a 20 74 68 65 20  ees that.** the 
14b20 73 74 72 69 6e 67 20 77 69 6c 6c 20 62 65 20 76  string will be v
14b30 61 6c 69 64 20 61 6e 64 20 75 6e 63 68 61 6e 67  alid and unchang
14b40 65 64 20 75 6e 74 69 6c 20 78 43 6c 6f 73 65 28  ed until xClose(
14b50 29 20 69 73 0a 2a 2a 20 63 61 6c 6c 65 64 2e 20  ) is.** called. 
14b60 42 65 63 61 75 73 65 20 6f 66 20 74 68 65 20 70  Because of the p
14b70 72 65 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65  revious sentence
14b80 2c 0a 2a 2a 20 74 68 65 20 5b 73 71 6c 69 74 65  ,.** the [sqlite
14b90 33 5f 66 69 6c 65 5d 20 63 61 6e 20 73 61 66 65  3_file] can safe
14ba0 6c 79 20 73 74 6f 72 65 20 61 20 70 6f 69 6e 74  ly store a point
14bb0 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 66 69 6c  er to the.** fil
14bc0 65 6e 61 6d 65 20 69 66 20 69 74 20 6e 65 65 64  ename if it need
14bd0 73 20 74 6f 20 72 65 6d 65 6d 62 65 72 20 74 68  s to remember th
14be0 65 20 66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 73  e filename for s
14bf0 6f 6d 65 20 72 65 61 73 6f 6e 2e 0a 2a 2a 20 49  ome reason..** I
14c00 66 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20  f the zFilename 
14c10 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70  parameter to xOp
14c20 65 6e 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69  en is a NULL poi
14c30 6e 74 65 72 20 74 68 65 6e 20 78 4f 70 65 6e 0a  nter then xOpen.
14c40 2a 2a 20 6d 75 73 74 20 69 6e 76 65 6e 74 20 69  ** must invent i
14c50 74 73 20 6f 77 6e 20 74 65 6d 70 6f 72 61 72 79  ts own temporary
14c60 20 6e 61 6d 65 20 66 6f 72 20 74 68 65 20 66 69   name for the fi
14c70 6c 65 2e 20 20 5e 57 68 65 6e 65 76 65 72 20 74  le.  ^Whenever t
14c80 68 65 20 0a 2a 2a 20 78 46 69 6c 65 6e 61 6d 65  he .** xFilename
14c90 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 4e 55   parameter is NU
14ca0 4c 4c 20 69 74 20 77 69 6c 6c 20 61 6c 73 6f 20  LL it will also 
14cb0 62 65 20 74 68 65 20 63 61 73 65 20 74 68 61 74  be the case that
14cc0 20 74 68 65 0a 2a 2a 20 66 6c 61 67 73 20 70 61   the.** flags pa
14cd0 72 61 6d 65 74 65 72 20 77 69 6c 6c 20 69 6e 63  rameter will inc
14ce0 6c 75 64 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45  lude [SQLITE_OPE
14cf0 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d  N_DELETEONCLOSE]
14d00 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6c 61 67  ..**.** The flag
14d10 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 4f  s argument to xO
14d20 70 65 6e 28 29 20 69 6e 63 6c 75 64 65 73 20 61  pen() includes a
14d30 6c 6c 20 62 69 74 73 20 73 65 74 20 69 6e 0a 2a  ll bits set in.*
14d40 2a 20 74 68 65 20 66 6c 61 67 73 20 61 72 67 75  * the flags argu
14d50 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  ment to [sqlite3
14d60 5f 6f 70 65 6e 5f 76 32 28 29 5d 2e 20 20 4f 72  _open_v2()].  Or
14d70 20 69 66 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65   if [sqlite3_ope
14d80 6e 28 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69  n()].** or [sqli
14d90 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 20 69 73  te3_open16()] is
14da0 20 75 73 65 64 2c 20 74 68 65 6e 20 66 6c 61 67   used, then flag
14db0 73 20 69 6e 63 6c 75 64 65 73 20 61 74 20 6c 65  s includes at le
14dc0 61 73 74 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f  ast.** [SQLITE_O
14dd0 50 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 20 7c  PEN_READWRITE] |
14de0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52   [SQLITE_OPEN_CR
14df0 45 41 54 45 5d 2e 20 0a 2a 2a 20 49 66 20 78 4f  EATE]. .** If xO
14e00 70 65 6e 28 29 20 6f 70 65 6e 73 20 61 20 66 69  pen() opens a fi
14e10 6c 65 20 72 65 61 64 2d 6f 6e 6c 79 20 74 68 65  le read-only the
14e20 6e 20 69 74 20 73 65 74 73 20 2a 70 4f 75 74 46  n it sets *pOutF
14e30 6c 61 67 73 20 74 6f 0a 2a 2a 20 69 6e 63 6c 75  lags to.** inclu
14e40 64 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  de [SQLITE_OPEN_
14e50 52 45 41 44 4f 4e 4c 59 5d 2e 20 20 4f 74 68 65  READONLY].  Othe
14e60 72 20 62 69 74 73 20 69 6e 20 2a 70 4f 75 74 46  r bits in *pOutF
14e70 6c 61 67 73 20 6d 61 79 20 62 65 20 73 65 74 2e  lags may be set.
14e80 0a 2a 2a 0a 2a 2a 20 5e 28 53 51 4c 69 74 65 20  .**.** ^(SQLite 
14e90 77 69 6c 6c 20 61 6c 73 6f 20 61 64 64 20 6f 6e  will also add on
14ea0 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  e of the followi
14eb0 6e 67 20 66 6c 61 67 73 20 74 6f 20 74 68 65 20  ng flags to the 
14ec0 78 4f 70 65 6e 28 29 0a 2a 2a 20 63 61 6c 6c 2c  xOpen().** call,
14ed0 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
14ee0 65 20 6f 62 6a 65 63 74 20 62 65 69 6e 67 20 6f  e object being o
14ef0 70 65 6e 65 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c  pened:.**.** <ul
14f00 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49  >.** <li>  [SQLI
14f10 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d  TE_OPEN_MAIN_DB]
14f20 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54  .** <li>  [SQLIT
14f30 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52  E_OPEN_MAIN_JOUR
14f40 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53  NAL].** <li>  [S
14f50 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f  QLITE_OPEN_TEMP_
14f60 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  DB].** <li>  [SQ
14f70 4c 49 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a  LITE_OPEN_TEMP_J
14f80 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20  OURNAL].** <li> 
14f90 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 52   [SQLITE_OPEN_TR
14fa0 41 4e 53 49 45 4e 54 5f 44 42 5d 0a 2a 2a 20 3c  ANSIENT_DB].** <
14fb0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
14fc0 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a  N_SUBJOURNAL].**
14fd0 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f   <li>  [SQLITE_O
14fe0 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f 55 52 4e  PEN_MASTER_JOURN
14ff0 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  AL].** <li>  [SQ
15000 4c 49 54 45 5f 4f 50 45 4e 5f 57 41 4c 5d 0a 2a  LITE_OPEN_WAL].*
15010 2a 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a 0a 2a 2a 20  * </ul>)^.**.** 
15020 54 68 65 20 66 69 6c 65 20 49 2f 4f 20 69 6d 70  The file I/O imp
15030 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 63 61 6e 20  lementation can 
15040 75 73 65 20 74 68 65 20 6f 62 6a 65 63 74 20 74  use the object t
15050 79 70 65 20 66 6c 61 67 73 20 74 6f 0a 2a 2a 20  ype flags to.** 
15060 63 68 61 6e 67 65 20 74 68 65 20 77 61 79 20 69  change the way i
15070 74 20 64 65 61 6c 73 20 77 69 74 68 20 66 69 6c  t deals with fil
15080 65 73 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65  es.  For example
15090 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
150a0 0a 2a 2a 20 74 68 61 74 20 64 6f 65 73 20 6e 6f  .** that does no
150b0 74 20 63 61 72 65 20 61 62 6f 75 74 20 63 72 61  t care about cra
150c0 73 68 20 72 65 63 6f 76 65 72 79 20 6f 72 20 72  sh recovery or r
150d0 6f 6c 6c 62 61 63 6b 20 6d 69 67 68 74 20 6d 61  ollback might ma
150e0 6b 65 0a 2a 2a 20 74 68 65 20 6f 70 65 6e 20 6f  ke.** the open o
150f0 66 20 61 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  f a journal file
15100 20 61 20 6e 6f 2d 6f 70 2e 20 20 57 72 69 74 65   a no-op.  Write
15110 73 20 74 6f 20 74 68 69 73 20 6a 6f 75 72 6e 61  s to this journa
15120 6c 20 77 6f 75 6c 64 0a 2a 2a 20 61 6c 73 6f 20  l would.** also 
15130 62 65 20 6e 6f 2d 6f 70 73 2c 20 61 6e 64 20 61  be no-ops, and a
15140 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 72 65  ny attempt to re
15150 61 64 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 77  ad the journal w
15160 6f 75 6c 64 20 72 65 74 75 72 6e 0a 2a 2a 20 53  ould return.** S
15170 51 4c 49 54 45 5f 49 4f 45 52 52 2e 20 20 4f 72  QLITE_IOERR.  Or
15180 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74   the implementat
15190 69 6f 6e 20 6d 69 67 68 74 20 72 65 63 6f 67 6e  ion might recogn
151a0 69 7a 65 20 74 68 61 74 20 61 20 64 61 74 61 62  ize that a datab
151b0 61 73 65 0a 2a 2a 20 66 69 6c 65 20 77 69 6c 6c  ase.** file will
151c0 20 62 65 20 64 6f 69 6e 67 20 70 61 67 65 2d 61   be doing page-a
151d0 6c 69 67 6e 65 64 20 73 65 63 74 6f 72 20 72 65  ligned sector re
151e0 61 64 73 20 61 6e 64 20 77 72 69 74 65 73 20 69  ads and writes i
151f0 6e 20 61 20 72 61 6e 64 6f 6d 0a 2a 2a 20 6f 72  n a random.** or
15200 64 65 72 20 61 6e 64 20 73 65 74 20 75 70 20 69  der and set up i
15210 74 73 20 49 2f 4f 20 73 75 62 73 79 73 74 65 6d  ts I/O subsystem
15220 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 2a 2a   accordingly..**
15230 0a 2a 2a 20 53 51 4c 69 74 65 20 6d 69 67 68 74  .** SQLite might
15240 20 61 6c 73 6f 20 61 64 64 20 6f 6e 65 20 6f 66   also add one of
15250 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66   the following f
15260 6c 61 67 73 20 74 6f 20 74 68 65 20 78 4f 70 65  lags to the xOpe
15270 6e 20 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20  n method:.**.** 
15280 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  <ul>.** <li> [SQ
15290 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45  LITE_OPEN_DELETE
152a0 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20 3c 6c 69 3e  ONCLOSE].** <li>
152b0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58   [SQLITE_OPEN_EX
152c0 43 4c 55 53 49 56 45 5d 0a 2a 2a 20 3c 2f 75 6c  CLUSIVE].** </ul
152d0 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  >.**.** The [SQL
152e0 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f  ITE_OPEN_DELETEO
152f0 4e 43 4c 4f 53 45 5d 20 66 6c 61 67 20 6d 65 61  NCLOSE] flag mea
15300 6e 73 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75  ns the file shou
15310 6c 64 20 62 65 0a 2a 2a 20 64 65 6c 65 74 65 64  ld be.** deleted
15320 20 77 68 65 6e 20 69 74 20 69 73 20 63 6c 6f 73   when it is clos
15330 65 64 2e 20 20 5e 54 68 65 20 5b 53 51 4c 49 54  ed.  ^The [SQLIT
15340 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
15350 4c 4f 53 45 5d 0a 2a 2a 20 77 69 6c 6c 20 62 65  LOSE].** will be
15360 20 73 65 74 20 66 6f 72 20 54 45 4d 50 20 64 61   set for TEMP da
15370 74 61 62 61 73 65 73 20 61 6e 64 20 74 68 65 69  tabases and thei
15380 72 20 6a 6f 75 72 6e 61 6c 73 2c 20 74 72 61 6e  r journals, tran
15390 73 69 65 6e 74 0a 2a 2a 20 64 61 74 61 62 61 73  sient.** databas
153a0 65 73 2c 20 61 6e 64 20 73 75 62 6a 6f 75 72 6e  es, and subjourn
153b0 61 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  als..**.** ^The 
153c0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43  [SQLITE_OPEN_EXC
153d0 4c 55 53 49 56 45 5d 20 66 6c 61 67 20 69 73 20  LUSIVE] flag is 
153e0 61 6c 77 61 79 73 20 75 73 65 64 20 69 6e 20 63  always used in c
153f0 6f 6e 6a 75 6e 63 74 69 6f 6e 0a 2a 2a 20 77 69  onjunction.** wi
15400 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f  th the [SQLITE_O
15410 50 45 4e 5f 43 52 45 41 54 45 5d 20 66 6c 61 67  PEN_CREATE] flag
15420 2c 20 77 68 69 63 68 20 61 72 65 20 62 6f 74 68  , which are both
15430 20 64 69 72 65 63 74 6c 79 0a 2a 2a 20 61 6e 61   directly.** ana
15440 6c 6f 67 6f 75 73 20 74 6f 20 74 68 65 20 4f 5f  logous to the O_
15450 45 58 43 4c 20 61 6e 64 20 4f 5f 43 52 45 41 54  EXCL and O_CREAT
15460 20 66 6c 61 67 73 20 6f 66 20 74 68 65 20 50 4f   flags of the PO
15470 53 49 58 20 6f 70 65 6e 28 29 0a 2a 2a 20 41 50  SIX open().** AP
15480 49 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f  I.  The SQLITE_O
15490 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 20 66 6c  PEN_EXCLUSIVE fl
154a0 61 67 2c 20 77 68 65 6e 20 70 61 69 72 65 64 20  ag, when paired 
154b0 77 69 74 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c  with the .** SQL
154c0 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 2c  ITE_OPEN_CREATE,
154d0 20 69 73 20 75 73 65 64 20 74 6f 20 69 6e 64 69   is used to indi
154e0 63 61 74 65 20 74 68 61 74 20 66 69 6c 65 20 73  cate that file s
154f0 68 6f 75 6c 64 20 61 6c 77 61 79 73 0a 2a 2a 20  hould always.** 
15500 62 65 20 63 72 65 61 74 65 64 2c 20 61 6e 64 20  be created, and 
15510 74 68 61 74 20 69 74 20 69 73 20 61 6e 20 65 72  that it is an er
15520 72 6f 72 20 69 66 20 69 74 20 61 6c 72 65 61 64  ror if it alread
15530 79 20 65 78 69 73 74 73 2e 0a 2a 2a 20 49 74 20  y exists..** It 
15540 69 73 20 3c 69 3e 6e 6f 74 3c 2f 69 3e 20 75 73  is <i>not</i> us
15550 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74  ed to indicate t
15560 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62  he file should b
15570 65 20 6f 70 65 6e 65 64 20 0a 2a 2a 20 66 6f 72  e opened .** for
15580 20 65 78 63 6c 75 73 69 76 65 20 61 63 63 65 73   exclusive acces
15590 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 74 20 6c 65 61  s..**.** ^At lea
155a0 73 74 20 73 7a 4f 73 46 69 6c 65 20 62 79 74 65  st szOsFile byte
155b0 73 20 6f 66 20 6d 65 6d 6f 72 79 20 61 72 65 20  s of memory are 
155c0 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 53 51 4c  allocated by SQL
155d0 69 74 65 0a 2a 2a 20 74 6f 20 68 6f 6c 64 20 74  ite.** to hold t
155e0 68 65 20 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  he  [sqlite3_fil
155f0 65 5d 20 73 74 72 75 63 74 75 72 65 20 70 61 73  e] structure pas
15600 73 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64  sed as the third
15610 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  .** argument to 
15620 78 4f 70 65 6e 2e 20 20 54 68 65 20 78 4f 70 65  xOpen.  The xOpe
15630 6e 20 6d 65 74 68 6f 64 20 64 6f 65 73 20 6e 6f  n method does no
15640 74 20 68 61 76 65 20 74 6f 0a 2a 2a 20 61 6c 6c  t have to.** all
15650 6f 63 61 74 65 20 74 68 65 20 73 74 72 75 63 74  ocate the struct
15660 75 72 65 3b 20 69 74 20 73 68 6f 75 6c 64 20 6a  ure; it should j
15670 75 73 74 20 66 69 6c 6c 20 69 74 20 69 6e 2e 20  ust fill it in. 
15680 20 4e 6f 74 65 20 74 68 61 74 0a 2a 2a 20 74 68   Note that.** th
15690 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6d  e xOpen method m
156a0 75 73 74 20 73 65 74 20 74 68 65 20 73 71 6c 69  ust set the sqli
156b0 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64  te3_file.pMethod
156c0 73 20 74 6f 20 65 69 74 68 65 72 0a 2a 2a 20 61  s to either.** a
156d0 20 76 61 6c 69 64 20 5b 73 71 6c 69 74 65 33 5f   valid [sqlite3_
156e0 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
156f0 63 74 20 6f 72 20 74 6f 20 4e 55 4c 4c 2e 20 20  ct or to NULL.  
15700 78 4f 70 65 6e 20 6d 75 73 74 20 64 6f 0a 2a 2a  xOpen must do.**
15710 20 74 68 69 73 20 65 76 65 6e 20 69 66 20 74 68   this even if th
15720 65 20 6f 70 65 6e 20 66 61 69 6c 73 2e 20 20 53  e open fails.  S
15730 51 4c 69 74 65 20 65 78 70 65 63 74 73 20 74 68  QLite expects th
15740 61 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f 66  at the sqlite3_f
15750 69 6c 65 2e 70 4d 65 74 68 6f 64 73 0a 2a 2a 20  ile.pMethods.** 
15760 65 6c 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20  element will be 
15770 76 61 6c 69 64 20 61 66 74 65 72 20 78 4f 70 65  valid after xOpe
15780 6e 20 72 65 74 75 72 6e 73 20 72 65 67 61 72 64  n returns regard
15790 6c 65 73 73 20 6f 66 20 74 68 65 20 73 75 63 63  less of the succ
157a0 65 73 73 0a 2a 2a 20 6f 72 20 66 61 69 6c 75 72  ess.** or failur
157b0 65 20 6f 66 20 74 68 65 20 78 4f 70 65 6e 20 63  e of the xOpen c
157c0 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c  all..**.** [[sql
157d0 69 74 65 33 5f 76 66 73 2e 78 41 63 63 65 73 73  ite3_vfs.xAccess
157e0 5d 5d 0a 2a 2a 20 5e 54 68 65 20 66 6c 61 67 73  ]].** ^The flags
157f0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 41 63   argument to xAc
15800 63 65 73 73 28 29 20 6d 61 79 20 62 65 20 5b 53  cess() may be [S
15810 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49  QLITE_ACCESS_EXI
15820 53 54 53 5d 0a 2a 2a 20 74 6f 20 74 65 73 74 20  STS].** to test 
15830 66 6f 72 20 74 68 65 20 65 78 69 73 74 65 6e 63  for the existenc
15840 65 20 6f 66 20 61 20 66 69 6c 65 2c 20 6f 72 20  e of a file, or 
15850 5b 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52  [SQLITE_ACCESS_R
15860 45 41 44 57 52 49 54 45 5d 20 74 6f 0a 2a 2a 20  EADWRITE] to.** 
15870 74 65 73 74 20 77 68 65 74 68 65 72 20 61 20 66  test whether a f
15880 69 6c 65 20 69 73 20 72 65 61 64 61 62 6c 65 20  ile is readable 
15890 61 6e 64 20 77 72 69 74 61 62 6c 65 2c 20 6f 72  and writable, or
158a0 20 5b 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f   [SQLITE_ACCESS_
158b0 52 45 41 44 5d 0a 2a 2a 20 74 6f 20 74 65 73 74  READ].** to test
158c0 20 77 68 65 74 68 65 72 20 61 20 66 69 6c 65 20   whether a file 
158d0 69 73 20 61 74 20 6c 65 61 73 74 20 72 65 61 64  is at least read
158e0 61 62 6c 65 2e 20 20 20 54 68 65 20 66 69 6c 65  able.   The file
158f0 20 63 61 6e 20 62 65 20 61 0a 2a 2a 20 64 69 72   can be a.** dir
15900 65 63 74 6f 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 53  ectory..**.** ^S
15910 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79  QLite will alway
15920 73 20 61 6c 6c 6f 63 61 74 65 20 61 74 20 6c 65  s allocate at le
15930 61 73 74 20 6d 78 50 61 74 68 6e 61 6d 65 2b 31  ast mxPathname+1
15940 20 62 79 74 65 73 20 66 6f 72 20 74 68 65 0a 2a   bytes for the.*
15950 2a 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 20  * output buffer 
15960 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65 2e 20 20  xFullPathname.  
15970 54 68 65 20 65 78 61 63 74 20 73 69 7a 65 20 6f  The exact size o
15980 66 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66  f the output buf
15990 66 65 72 0a 2a 2a 20 69 73 20 61 6c 73 6f 20 70  fer.** is also p
159a0 61 73 73 65 64 20 61 73 20 61 20 70 61 72 61 6d  assed as a param
159b0 65 74 65 72 20 74 6f 20 62 6f 74 68 20 20 6d 65  eter to both  me
159c0 74 68 6f 64 73 2e 20 49 66 20 74 68 65 20 6f 75  thods. If the ou
159d0 74 70 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69  tput buffer.** i
159e0 73 20 6e 6f 74 20 6c 61 72 67 65 20 65 6e 6f 75  s not large enou
159f0 67 68 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54  gh, [SQLITE_CANT
15a00 4f 50 45 4e 5d 20 73 68 6f 75 6c 64 20 62 65 20  OPEN] should be 
15a10 72 65 74 75 72 6e 65 64 2e 20 53 69 6e 63 65 20  returned. Since 
15a20 74 68 69 73 20 69 73 0a 2a 2a 20 68 61 6e 64 6c  this is.** handl
15a30 65 64 20 61 73 20 61 20 66 61 74 61 6c 20 65 72  ed as a fatal er
15a40 72 6f 72 20 62 79 20 53 51 4c 69 74 65 2c 20 76  ror by SQLite, v
15a50 66 73 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  fs implementatio
15a60 6e 73 20 73 68 6f 75 6c 64 20 65 6e 64 65 61 76  ns should endeav
15a70 6f 72 0a 2a 2a 20 74 6f 20 70 72 65 76 65 6e 74  or.** to prevent
15a80 20 74 68 69 73 20 62 79 20 73 65 74 74 69 6e 67   this by setting
15a90 20 6d 78 50 61 74 68 6e 61 6d 65 20 74 6f 20 61   mxPathname to a
15aa0 20 73 75 66 66 69 63 69 65 6e 74 6c 79 20 6c 61   sufficiently la
15ab0 72 67 65 20 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a  rge value..**.**
15ac0 20 54 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73   The xRandomness
15ad0 28 29 2c 20 78 53 6c 65 65 70 28 29 2c 20 78 43  (), xSleep(), xC
15ae0 75 72 72 65 6e 74 54 69 6d 65 28 29 2c 20 61 6e  urrentTime(), an
15af0 64 20 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e  d xCurrentTimeIn
15b00 74 36 34 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61  t64().** interfa
15b10 63 65 73 20 61 72 65 20 6e 6f 74 20 73 74 72 69  ces are not stri
15b20 63 74 6c 79 20 61 20 70 61 72 74 20 6f 66 20 74  ctly a part of t
15b30 68 65 20 66 69 6c 65 73 79 73 74 65 6d 2c 20 62  he filesystem, b
15b40 75 74 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 69  ut they are.** i
15b50 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 56  ncluded in the V
15b60 46 53 20 73 74 72 75 63 74 75 72 65 20 66 6f 72  FS structure for
15b70 20 63 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 0a 2a   completeness..*
15b80 2a 20 54 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73  * The xRandomnes
15b90 73 28 29 20 66 75 6e 63 74 69 6f 6e 20 61 74 74  s() function att
15ba0 65 6d 70 74 73 20 74 6f 20 72 65 74 75 72 6e 20  empts to return 
15bb0 6e 42 79 74 65 73 20 62 79 74 65 73 0a 2a 2a 20  nBytes bytes.** 
15bc0 6f 66 20 67 6f 6f 64 2d 71 75 61 6c 69 74 79 20  of good-quality 
15bd0 72 61 6e 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20  randomness into 
15be0 7a 4f 75 74 2e 20 20 54 68 65 20 72 65 74 75 72  zOut.  The retur
15bf0 6e 20 76 61 6c 75 65 20 69 73 0a 2a 2a 20 74 68  n value is.** th
15c00 65 20 61 63 74 75 61 6c 20 6e 75 6d 62 65 72 20  e actual number 
15c10 6f 66 20 62 79 74 65 73 20 6f 66 20 72 61 6e 64  of bytes of rand
15c20 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 2e  omness obtained.
15c30 0a 2a 2a 20 54 68 65 20 78 53 6c 65 65 70 28 29  .** The xSleep()
15c40 20 6d 65 74 68 6f 64 20 63 61 75 73 65 73 20 74   method causes t
15c50 68 65 20 63 61 6c 6c 69 6e 67 20 74 68 72 65 61  he calling threa
15c60 64 20 74 6f 20 73 6c 65 65 70 20 66 6f 72 20 61  d to sleep for a
15c70 74 0a 2a 2a 20 6c 65 61 73 74 20 74 68 65 20 6e  t.** least the n
15c80 75 6d 62 65 72 20 6f 66 20 6d 69 63 72 6f 73 65  umber of microse
15c90 63 6f 6e 64 73 20 67 69 76 65 6e 2e 20 20 5e 54  conds given.  ^T
15ca0 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28  he xCurrentTime(
15cb0 29 0a 2a 2a 20 6d 65 74 68 6f 64 20 72 65 74 75  ).** method retu
15cc0 72 6e 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79  rns a Julian Day
15cd0 20 4e 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20   Number for the 
15ce0 63 75 72 72 65 6e 74 20 64 61 74 65 20 61 6e 64  current date and
15cf0 20 74 69 6d 65 20 61 73 0a 2a 2a 20 61 20 66 6c   time as.** a fl
15d00 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c  oating point val
15d10 75 65 2e 0a 2a 2a 20 5e 54 68 65 20 78 43 75 72  ue..** ^The xCur
15d20 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20  rentTimeInt64() 
15d30 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 2c 20  method returns, 
15d40 61 73 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 74  as an integer, t
15d50 68 65 20 4a 75 6c 69 61 6e 0a 2a 2a 20 44 61 79  he Julian.** Day
15d60 20 4e 75 6d 62 65 72 20 6d 75 6c 74 69 70 6c 69   Number multipli
15d70 65 64 20 62 79 20 38 36 34 30 30 30 30 30 20 28  ed by 86400000 (
15d80 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69  the number of mi
15d90 6c 6c 69 73 65 63 6f 6e 64 73 20 69 6e 20 0a 2a  lliseconds in .*
15da0 2a 20 61 20 32 34 2d 68 6f 75 72 20 64 61 79 29  * a 24-hour day)
15db0 2e 20 20 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77  .  .** ^SQLite w
15dc0 69 6c 6c 20 75 73 65 20 74 68 65 20 78 43 75 72  ill use the xCur
15dd0 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20  rentTimeInt64() 
15de0 6d 65 74 68 6f 64 20 74 6f 20 67 65 74 20 74 68  method to get th
15df0 65 20 63 75 72 72 65 6e 74 0a 2a 2a 20 64 61 74  e current.** dat
15e00 65 20 61 6e 64 20 74 69 6d 65 20 69 66 20 74 68  e and time if th
15e10 61 74 20 6d 65 74 68 6f 64 20 69 73 20 61 76 61  at method is ava
15e20 69 6c 61 62 6c 65 20 28 69 66 20 69 56 65 72 73  ilable (if iVers
15e30 69 6f 6e 20 69 73 20 32 20 6f 72 20 0a 2a 2a 20  ion is 2 or .** 
15e40 67 72 65 61 74 65 72 20 61 6e 64 20 74 68 65 20  greater and the 
15e50 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
15e60 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 29 20 61 6e   is not NULL) an
15e70 64 20 77 69 6c 6c 20 66 61 6c 6c 20 62 61 63 6b  d will fall back
15e80 0a 2a 2a 20 74 6f 20 78 43 75 72 72 65 6e 74 54  .** to xCurrentT
15e90 69 6d 65 28 29 20 69 66 20 78 43 75 72 72 65 6e  ime() if xCurren
15ea0 74 54 69 6d 65 49 6e 74 36 34 28 29 20 69 73 20  tTimeInt64() is 
15eb0 75 6e 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 0a  unavailable..**.
15ec0 2a 2a 20 5e 54 68 65 20 78 53 65 74 53 79 73 74  ** ^The xSetSyst
15ed0 65 6d 43 61 6c 6c 28 29 2c 20 78 47 65 74 53 79  emCall(), xGetSy
15ee0 73 74 65 6d 43 61 6c 6c 28 29 2c 20 61 6e 64 20  stemCall(), and 
15ef0 78 4e 65 73 74 53 79 73 74 65 6d 43 61 6c 6c 28  xNestSystemCall(
15f00 29 20 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20  ) interfaces.** 
15f10 61 72 65 20 6e 6f 74 20 75 73 65 64 20 62 79 20  are not used by 
15f20 74 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2e  the SQLite core.
15f30 20 20 54 68 65 73 65 20 6f 70 74 69 6f 6e 61 6c    These optional
15f40 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
15f50 70 72 6f 76 69 64 65 64 0a 2a 2a 20 62 79 20 73  provided.** by s
15f60 6f 6d 65 20 56 46 53 65 73 20 74 6f 20 66 61 63  ome VFSes to fac
15f70 69 6c 69 74 61 74 65 20 74 65 73 74 69 6e 67 20  ilitate testing 
15f80 6f 66 20 74 68 65 20 56 46 53 20 63 6f 64 65 2e  of the VFS code.
15f90 20 42 79 20 6f 76 65 72 72 69 64 69 6e 67 20 0a   By overriding .
15fa0 2a 2a 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20  ** system calls 
15fb0 77 69 74 68 20 66 75 6e 63 74 69 6f 6e 73 20 75  with functions u
15fc0 6e 64 65 72 20 69 74 73 20 63 6f 6e 74 72 6f 6c  nder its control
15fd0 2c 20 61 20 74 65 73 74 20 70 72 6f 67 72 61 6d  , a test program
15fe0 20 63 61 6e 0a 2a 2a 20 73 69 6d 75 6c 61 74 65   can.** simulate
15ff0 20 66 61 75 6c 74 73 20 61 6e 64 20 65 72 72 6f   faults and erro
16000 72 20 63 6f 6e 64 69 74 69 6f 6e 73 20 74 68 61  r conditions tha
16010 74 20 77 6f 75 6c 64 20 6f 74 68 65 72 77 69 73  t would otherwis
16020 65 20 62 65 20 64 69 66 66 69 63 75 6c 74 0a 2a  e be difficult.*
16030 2a 20 6f 72 20 69 6d 70 6f 73 73 69 62 6c 65 20  * or impossible 
16040 74 6f 20 69 6e 64 75 63 65 2e 20 20 54 68 65 20  to induce.  The 
16050 73 65 74 20 6f 66 20 73 79 73 74 65 6d 20 63 61  set of system ca
16060 6c 6c 73 20 74 68 61 74 20 63 61 6e 20 62 65 20  lls that can be 
16070 6f 76 65 72 72 69 64 64 65 6e 0a 2a 2a 20 76 61  overridden.** va
16080 72 69 65 73 20 66 72 6f 6d 20 6f 6e 65 20 56 46  ries from one VF
16090 53 20 74 6f 20 61 6e 6f 74 68 65 72 2c 20 61 6e  S to another, an
160a0 64 20 66 72 6f 6d 20 6f 6e 65 20 76 65 72 73 69  d from one versi
160b0 6f 6e 20 6f 66 20 74 68 65 20 73 61 6d 65 20 56  on of the same V
160c0 46 53 20 74 6f 20 74 68 65 0a 2a 2a 20 6e 65 78  FS to the.** nex
160d0 74 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  t.  Applications
160e0 20 74 68 61 74 20 75 73 65 20 74 68 65 73 65 20   that use these 
160f0 69 6e 74 65 72 66 61 63 65 73 20 6d 75 73 74 20  interfaces must 
16100 62 65 20 70 72 65 70 61 72 65 64 20 66 6f 72 20  be prepared for 
16110 61 6e 79 0a 2a 2a 20 6f 72 20 61 6c 6c 20 6f 66  any.** or all of
16120 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65   these interface
16130 73 20 74 6f 20 62 65 20 4e 55 4c 4c 20 6f 72 20  s to be NULL or 
16140 66 6f 72 20 74 68 65 69 72 20 62 65 68 61 76 69  for their behavi
16150 6f 72 20 74 6f 20 63 68 61 6e 67 65 0a 2a 2a 20  or to change.** 
16160 66 72 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65  from one release
16170 20 74 6f 20 74 68 65 20 6e 65 78 74 2e 20 20 41   to the next.  A
16180 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74  pplications must
16190 20 6e 6f 74 20 61 74 74 65 6d 70 74 20 74 6f 20   not attempt to 
161a0 61 63 63 65 73 73 0a 2a 2a 20 61 6e 79 20 6f 66  access.** any of
161b0 20 74 68 65 73 65 20 6d 65 74 68 6f 64 73 20 69   these methods i
161c0 66 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20 6f  f the iVersion o
161d0 66 20 74 68 65 20 56 46 53 20 69 73 20 6c 65 73  f the VFS is les
161e0 73 20 74 68 61 6e 20 33 2e 0a 2a 2f 0a 74 79 70  s than 3..*/.typ
161f0 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
16200 74 65 33 5f 76 66 73 20 73 71 6c 69 74 65 33 5f  te3_vfs sqlite3_
16210 76 66 73 3b 0a 74 79 70 65 64 65 66 20 76 6f 69  vfs;.typedef voi
16220 64 20 28 2a 73 71 6c 69 74 65 33 5f 73 79 73 63  d (*sqlite3_sysc
16230 61 6c 6c 5f 70 74 72 29 28 76 6f 69 64 29 3b 0a  all_ptr)(void);.
16240 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76  struct sqlite3_v
16250 66 73 20 7b 0a 20 20 69 6e 74 20 69 56 65 72 73  fs {.  int iVers
16260 69 6f 6e 3b 20 20 20 20 20 20 20 20 20 20 20 20  ion;            
16270 2f 2a 20 53 74 72 75 63 74 75 72 65 20 76 65 72  /* Structure ver
16280 73 69 6f 6e 20 6e 75 6d 62 65 72 20 28 63 75 72  sion number (cur
16290 72 65 6e 74 6c 79 20 33 29 20 2a 2f 0a 20 20 69  rently 3) */.  i
162a0 6e 74 20 73 7a 4f 73 46 69 6c 65 3b 20 20 20 20  nt szOsFile;    
162b0 20 20 20 20 20 20 20 20 2f 2a 20 53 69 7a 65 20          /* Size 
162c0 6f 66 20 73 75 62 63 6c 61 73 73 65 64 20 73 71  of subclassed sq
162d0 6c 69 74 65 33 5f 66 69 6c 65 20 2a 2f 0a 20 20  lite3_file */.  
162e0 69 6e 74 20 6d 78 50 61 74 68 6e 61 6d 65 3b 20  int mxPathname; 
162f0 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
16300 6d 75 6d 20 66 69 6c 65 20 70 61 74 68 6e 61 6d  mum file pathnam
16310 65 20 6c 65 6e 67 74 68 20 2a 2f 0a 20 20 73 71  e length */.  sq
16320 6c 69 74 65 33 5f 76 66 73 20 2a 70 4e 65 78 74  lite3_vfs *pNext
16330 3b 20 20 20 20 20 20 2f 2a 20 4e 65 78 74 20 72  ;      /* Next r
16340 65 67 69 73 74 65 72 65 64 20 56 46 53 20 2a 2f  egistered VFS */
16350 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
16360 4e 61 6d 65 3b 20 20 20 20 20 20 20 2f 2a 20 4e  Name;       /* N
16370 61 6d 65 20 6f 66 20 74 68 69 73 20 76 69 72 74  ame of this virt
16380 75 61 6c 20 66 69 6c 65 20 73 79 73 74 65 6d 20  ual file system 
16390 2a 2f 0a 20 20 76 6f 69 64 20 2a 70 41 70 70 44  */.  void *pAppD
163a0 61 74 61 3b 20 20 20 20 20 20 20 20 20 20 2f 2a  ata;          /*
163b0 20 50 6f 69 6e 74 65 72 20 74 6f 20 61 70 70 6c   Pointer to appl
163c0 69 63 61 74 69 6f 6e 2d 73 70 65 63 69 66 69 63  ication-specific
163d0 20 64 61 74 61 20 2a 2f 0a 20 20 69 6e 74 20 28   data */.  int (
163e0 2a 78 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f  *xOpen)(sqlite3_
163f0 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
16400 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65 33   *zName, sqlite3
16410 5f 66 69 6c 65 2a 2c 0a 20 20 20 20 20 20 20 20  _file*,.        
16420 20 20 20 20 20 20 20 69 6e 74 20 66 6c 61 67 73         int flags
16430 2c 20 69 6e 74 20 2a 70 4f 75 74 46 6c 61 67 73  , int *pOutFlags
16440 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 65 6c 65  );.  int (*xDele
16450 74 65 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  te)(sqlite3_vfs*
16460 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
16470 61 6d 65 2c 20 69 6e 74 20 73 79 6e 63 44 69 72  ame, int syncDir
16480 29 3b 0a 20 20 69 6e 74 20 28 2a 78 41 63 63 65  );.  int (*xAcce
16490 73 73 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  ss)(sqlite3_vfs*
164a0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
164b0 61 6d 65 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20  ame, int flags, 
164c0 69 6e 74 20 2a 70 52 65 73 4f 75 74 29 3b 0a 20  int *pResOut);. 
164d0 20 69 6e 74 20 28 2a 78 46 75 6c 6c 50 61 74 68   int (*xFullPath
164e0 6e 61 6d 65 29 28 73 71 6c 69 74 65 33 5f 76 66  name)(sqlite3_vf
164f0 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  s*, const char *
16500 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e 4f 75 74 2c  zName, int nOut,
16510 20 63 68 61 72 20 2a 7a 4f 75 74 29 3b 0a 20 20   char *zOut);.  
16520 76 6f 69 64 20 2a 28 2a 78 44 6c 4f 70 65 6e 29  void *(*xDlOpen)
16530 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63  (sqlite3_vfs*, c
16540 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65  onst char *zFile
16550 6e 61 6d 65 29 3b 0a 20 20 76 6f 69 64 20 28 2a  name);.  void (*
16560 78 44 6c 45 72 72 6f 72 29 28 73 71 6c 69 74 65  xDlError)(sqlite
16570 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6e 42 79 74  3_vfs*, int nByt
16580 65 2c 20 63 68 61 72 20 2a 7a 45 72 72 4d 73 67  e, char *zErrMsg
16590 29 3b 0a 20 20 76 6f 69 64 20 28 2a 28 2a 78 44  );.  void (*(*xD
165a0 6c 53 79 6d 29 28 73 71 6c 69 74 65 33 5f 76 66  lSym)(sqlite3_vf
165b0 73 2a 2c 76 6f 69 64 2a 2c 20 63 6f 6e 73 74 20  s*,void*, const 
165c0 63 68 61 72 20 2a 7a 53 79 6d 62 6f 6c 29 29 28  char *zSymbol))(
165d0 76 6f 69 64 29 3b 0a 20 20 76 6f 69 64 20 28 2a  void);.  void (*
165e0 78 44 6c 43 6c 6f 73 65 29 28 73 71 6c 69 74 65  xDlClose)(sqlite
165f0 33 5f 76 66 73 2a 2c 20 76 6f 69 64 2a 29 3b 0a  3_vfs*, void*);.
16600 20 20 69 6e 74 20 28 2a 78 52 61 6e 64 6f 6d 6e    int (*xRandomn
16610 65 73 73 29 28 73 71 6c 69 74 65 33 5f 76 66 73  ess)(sqlite3_vfs
16620 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c 20 63 68  *, int nByte, ch
16630 61 72 20 2a 7a 4f 75 74 29 3b 0a 20 20 69 6e 74  ar *zOut);.  int
16640 20 28 2a 78 53 6c 65 65 70 29 28 73 71 6c 69 74   (*xSleep)(sqlit
16650 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6d 69 63  e3_vfs*, int mic
16660 72 6f 73 65 63 6f 6e 64 73 29 3b 0a 20 20 69 6e  roseconds);.  in
16670 74 20 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65  t (*xCurrentTime
16680 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
16690 64 6f 75 62 6c 65 2a 29 3b 0a 20 20 69 6e 74 20  double*);.  int 
166a0 28 2a 78 47 65 74 4c 61 73 74 45 72 72 6f 72 29  (*xGetLastError)
166b0 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69  (sqlite3_vfs*, i
166c0 6e 74 2c 20 63 68 61 72 20 2a 29 3b 0a 20 20 2f  nt, char *);.  /
166d0 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f  *.  ** The metho
166e0 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20  ds above are in 
166f0 76 65 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65  version 1 of the
16700 20 73 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65   sqlite_vfs obje
16710 63 74 0a 20 20 2a 2a 20 64 65 66 69 6e 69 74 69  ct.  ** definiti
16720 6f 6e 2e 20 20 54 68 6f 73 65 20 74 68 61 74 20  on.  Those that 
16730 66 6f 6c 6c 6f 77 20 61 72 65 20 61 64 64 65 64  follow are added
16740 20 69 6e 20 76 65 72 73 69 6f 6e 20 32 20 6f 72   in version 2 or
16750 20 6c 61 74 65 72 0a 20 20 2a 2f 0a 20 20 69 6e   later.  */.  in
16760 74 20 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65  t (*xCurrentTime
16770 49 6e 74 36 34 29 28 73 71 6c 69 74 65 33 5f 76  Int64)(sqlite3_v
16780 66 73 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  fs*, sqlite3_int
16790 36 34 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20  64*);.  /*.  ** 
167a0 54 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76  The methods abov
167b0 65 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e  e are in version
167c0 73 20 31 20 61 6e 64 20 32 20 6f 66 20 74 68 65  s 1 and 2 of the
167d0 20 73 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65   sqlite_vfs obje
167e0 63 74 2e 0a 20 20 2a 2a 20 54 68 6f 73 65 20 62  ct..  ** Those b
167f0 65 6c 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72  elow are for ver
16800 73 69 6f 6e 20 33 20 61 6e 64 20 67 72 65 61 74  sion 3 and great
16810 65 72 2e 0a 20 20 2a 2f 0a 20 20 69 6e 74 20 28  er..  */.  int (
16820 2a 78 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 29  *xSetSystemCall)
16830 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63  (sqlite3_vfs*, c
16840 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
16850 2c 20 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c  , sqlite3_syscal
16860 6c 5f 70 74 72 29 3b 0a 20 20 73 71 6c 69 74 65  l_ptr);.  sqlite
16870 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 20 28 2a  3_syscall_ptr (*
16880 78 47 65 74 53 79 73 74 65 6d 43 61 6c 6c 29 28  xGetSystemCall)(
16890 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f  sqlite3_vfs*, co
168a0 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29  nst char *zName)
168b0 3b 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  ;.  const char *
168c0 28 2a 78 4e 65 78 74 53 79 73 74 65 6d 43 61 6c  (*xNextSystemCal
168d0 6c 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  l)(sqlite3_vfs*,
168e0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
168f0 6d 65 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54  me);.  /*.  ** T
16900 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
16910 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 73   are in versions
16920 20 31 20 74 68 72 6f 75 67 68 20 33 20 6f 66 20   1 through 3 of 
16930 74 68 65 20 73 71 6c 69 74 65 5f 76 66 73 20 6f  the sqlite_vfs o
16940 62 6a 65 63 74 2e 0a 20 20 2a 2a 20 4e 65 77 20  bject..  ** New 
16950 66 69 65 6c 64 73 20 6d 61 79 20 62 65 20 61 70  fields may be ap
16960 70 65 6e 64 65 64 20 69 6e 20 66 75 74 75 72 65  pended in future
16970 20 76 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 20   versions.  The 
16980 69 56 65 72 73 69 6f 6e 0a 20 20 2a 2a 20 76 61  iVersion.  ** va
16990 6c 75 65 20 77 69 6c 6c 20 69 6e 63 72 65 6d 65  lue will increme
169a0 6e 74 20 77 68 65 6e 65 76 65 72 20 74 68 69 73  nt whenever this
169b0 20 68 61 70 70 65 6e 73 2e 20 0a 20 20 2a 2f 0a   happens. .  */.
169c0 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  };../*.** CAPI3R
169d0 45 46 3a 20 46 6c 61 67 73 20 66 6f 72 20 74 68  EF: Flags for th
169e0 65 20 78 41 63 63 65 73 73 20 56 46 53 20 6d 65  e xAccess VFS me
169f0 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  thod.**.** These
16a00 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e   integer constan
16a10 74 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ts can be used a
16a20 73 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61  s the third para
16a30 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20  meter to.** the 
16a40 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64 20 6f  xAccess method o
16a50 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 76 66  f an [sqlite3_vf
16a60 73 5d 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 79  s] object.  They
16a70 20 64 65 74 65 72 6d 69 6e 65 0a 2a 2a 20 77 68   determine.** wh
16a80 61 74 20 6b 69 6e 64 20 6f 66 20 70 65 72 6d 69  at kind of permi
16a90 73 73 69 6f 6e 73 20 74 68 65 20 78 41 63 63 65  ssions the xAcce
16aa0 73 73 20 6d 65 74 68 6f 64 20 69 73 20 6c 6f 6f  ss method is loo
16ab0 6b 69 6e 67 20 66 6f 72 2e 0a 2a 2a 20 57 69 74  king for..** Wit
16ac0 68 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  h SQLITE_ACCESS_
16ad0 45 58 49 53 54 53 2c 20 74 68 65 20 78 41 63 63  EXISTS, the xAcc
16ae0 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 73 69  ess method.** si
16af0 6d 70 6c 79 20 63 68 65 63 6b 73 20 77 68 65 74  mply checks whet
16b00 68 65 72 20 74 68 65 20 66 69 6c 65 20 65 78 69  her the file exi
16b10 73 74 73 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c  sts..** With SQL
16b20 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57  ITE_ACCESS_READW
16b30 52 49 54 45 2c 20 74 68 65 20 78 41 63 63 65 73  RITE, the xAcces
16b40 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63  s method.** chec
16b50 6b 73 20 77 68 65 74 68 65 72 20 74 68 65 20 6e  ks whether the n
16b60 61 6d 65 64 20 64 69 72 65 63 74 6f 72 79 20 69  amed directory i
16b70 73 20 62 6f 74 68 20 72 65 61 64 61 62 6c 65 20  s both readable 
16b80 61 6e 64 20 77 72 69 74 61 62 6c 65 0a 2a 2a 20  and writable.** 
16b90 28 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (in other words,
16ba0 20 69 66 20 66 69 6c 65 73 20 63 61 6e 20 62 65   if files can be
16bb0 20 61 64 64 65 64 2c 20 72 65 6d 6f 76 65 64 2c   added, removed,
16bc0 20 61 6e 64 20 72 65 6e 61 6d 65 64 20 77 69 74   and renamed wit
16bd0 68 69 6e 0a 2a 2a 20 74 68 65 20 64 69 72 65 63  hin.** the direc
16be0 74 6f 72 79 29 2e 0a 2a 2a 20 54 68 65 20 53 51  tory)..** The SQ
16bf0 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
16c00 57 52 49 54 45 20 63 6f 6e 73 74 61 6e 74 20 69  WRITE constant i
16c10 73 20 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64  s currently used
16c20 20 6f 6e 6c 79 20 62 79 20 74 68 65 0a 2a 2a 20   only by the.** 
16c30 5b 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65  [temp_store_dire
16c40 63 74 6f 72 79 20 70 72 61 67 6d 61 5d 2c 20 74  ctory pragma], t
16c50 68 6f 75 67 68 20 74 68 69 73 20 63 6f 75 6c 64  hough this could
16c60 20 63 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74   change in a fut
16c70 75 72 65 0a 2a 2a 20 72 65 6c 65 61 73 65 20 6f  ure.** release o
16c80 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 57 69 74  f SQLite..** Wit
16c90 68 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  h SQLITE_ACCESS_
16ca0 52 45 41 44 2c 20 74 68 65 20 78 41 63 63 65 73  READ, the xAcces
16cb0 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63  s method.** chec
16cc0 6b 73 20 77 68 65 74 68 65 72 20 74 68 65 20 66  ks whether the f
16cd0 69 6c 65 20 69 73 20 72 65 61 64 61 62 6c 65 2e  ile is readable.
16ce0 20 20 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43    The SQLITE_ACC
16cf0 45 53 53 5f 52 45 41 44 20 63 6f 6e 73 74 61 6e  ESS_READ constan
16d00 74 20 69 73 0a 2a 2a 20 63 75 72 72 65 6e 74 6c  t is.** currentl
16d10 79 20 75 6e 75 73 65 64 2c 20 74 68 6f 75 67 68  y unused, though
16d20 20 69 74 20 6d 69 67 68 74 20 62 65 20 75 73 65   it might be use
16d30 64 20 69 6e 20 61 20 66 75 74 75 72 65 20 72 65  d in a future re
16d40 6c 65 61 73 65 20 6f 66 0a 2a 2a 20 53 51 4c 69  lease of.** SQLi
16d50 74 65 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  te..*/.#define S
16d60 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49  QLITE_ACCESS_EXI
16d70 53 54 53 20 20 20 20 30 0a 23 64 65 66 69 6e 65  STS    0.#define
16d80 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52   SQLITE_ACCESS_R
16d90 45 41 44 57 52 49 54 45 20 31 20 20 20 2f 2a 20  EADWRITE 1   /* 
16da0 55 73 65 64 20 62 79 20 50 52 41 47 4d 41 20 74  Used by PRAGMA t
16db0 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
16dc0 6f 72 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ory */.#define S
16dd0 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41  QLITE_ACCESS_REA
16de0 44 20 20 20 20 20 20 32 20 20 20 2f 2a 20 55 6e  D      2   /* Un
16df0 75 73 65 64 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  used */../*.** C
16e00 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 66  API3REF: Flags f
16e10 6f 72 20 74 68 65 20 78 53 68 6d 4c 6f 63 6b 20  or the xShmLock 
16e20 56 46 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a  VFS method.**.**
16e30 20 54 68 65 73 65 20 69 6e 74 65 67 65 72 20 63   These integer c
16e40 6f 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20  onstants define 
16e50 74 68 65 20 76 61 72 69 6f 75 73 20 6c 6f 63 6b  the various lock
16e60 69 6e 67 20 6f 70 65 72 61 74 69 6f 6e 73 0a 2a  ing operations.*
16e70 2a 20 61 6c 6c 6f 77 65 64 20 62 79 20 74 68 65  * allowed by the
16e80 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64   xShmLock method
16e90 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f   of [sqlite3_io_
16ea0 6d 65 74 68 6f 64 73 5d 2e 20 20 54 68 65 0a 2a  methods].  The.*
16eb0 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20  * following are 
16ec0 74 68 65 20 6f 6e 6c 79 20 6c 65 67 61 6c 20 63  the only legal c
16ed0 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 66  ombinations of f
16ee0 6c 61 67 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78  lags to the.** x
16ef0 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 3a 0a  ShmLock method:.
16f00 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c  **.** <ul>.** <l
16f10 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c  i>  SQLITE_SHM_L
16f20 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d  OCK | SQLITE_SHM
16f30 5f 53 48 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20  _SHARED.** <li> 
16f40 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b   SQLITE_SHM_LOCK
16f50 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58   | SQLITE_SHM_EX
16f60 43 4c 55 53 49 56 45 0a 2a 2a 20 3c 6c 69 3e 20  CLUSIVE.** <li> 
16f70 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f   SQLITE_SHM_UNLO
16f80 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f  CK | SQLITE_SHM_
16f90 53 48 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20  SHARED.** <li>  
16fa0 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43  SQLITE_SHM_UNLOC
16fb0 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45  K | SQLITE_SHM_E
16fc0 58 43 4c 55 53 49 56 45 0a 2a 2a 20 3c 2f 75 6c  XCLUSIVE.** </ul
16fd0 3e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 75 6e 6c  >.**.** When unl
16fe0 6f 63 6b 69 6e 67 2c 20 74 68 65 20 73 61 6d 65  ocking, the same
16ff0 20 53 48 41 52 45 44 20 6f 72 20 45 58 43 4c 55   SHARED or EXCLU
17000 53 49 56 45 20 66 6c 61 67 20 6d 75 73 74 20 62  SIVE flag must b
17010 65 20 73 75 70 70 6c 69 65 64 20 61 73 0a 2a 2a  e supplied as.**
17020 20 77 61 73 20 67 69 76 65 6e 20 6f 6e 20 74 68   was given on th
17030 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  e corresponding 
17040 6c 6f 63 6b 2e 20 20 0a 2a 2a 0a 2a 2a 20 54 68  lock.  .**.** Th
17050 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f  e xShmLock metho
17060 64 20 63 61 6e 20 74 72 61 6e 73 69 74 69 6f 6e  d can transition
17070 20 62 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65   between unlocke
17080 64 20 61 6e 64 20 53 48 41 52 45 44 20 6f 72 0a  d and SHARED or.
17090 2a 2a 20 62 65 74 77 65 65 6e 20 75 6e 6c 6f 63  ** between unloc
170a0 6b 65 64 20 61 6e 64 20 45 58 43 4c 55 53 49 56  ked and EXCLUSIV
170b0 45 2e 20 20 49 74 20 63 61 6e 6e 6f 74 20 74 72  E.  It cannot tr
170c0 61 6e 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e  ansition between
170d0 20 53 48 41 52 45 44 0a 2a 2a 20 61 6e 64 20 45   SHARED.** and E
170e0 58 43 4c 55 53 49 56 45 2e 0a 2a 2f 0a 23 64 65  XCLUSIVE..*/.#de
170f0 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f  fine SQLITE_SHM_
17100 55 4e 4c 4f 43 4b 20 20 20 20 20 20 20 31 0a 23  UNLOCK       1.#
17110 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48  define SQLITE_SH
17120 4d 5f 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 32  M_LOCK         2
17130 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
17140 53 48 4d 5f 53 48 41 52 45 44 20 20 20 20 20 20  SHM_SHARED      
17150 20 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   4.#define SQLIT
17160 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 20  E_SHM_EXCLUSIVE 
17170 20 20 20 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49     8../*.** CAPI
17180 33 52 45 46 3a 20 4d 61 78 69 6d 75 6d 20 78 53  3REF: Maximum xS
17190 68 6d 4c 6f 63 6b 20 69 6e 64 65 78 0a 2a 2a 0a  hmLock index.**.
171a0 2a 2a 20 54 68 65 20 78 53 68 6d 4c 6f 63 6b 20  ** The xShmLock 
171b0 6d 65 74 68 6f 64 20 6f 6e 20 5b 73 71 6c 69 74  method on [sqlit
171c0 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6d  e3_io_methods] m
171d0 61 79 20 75 73 65 20 76 61 6c 75 65 73 0a 2a 2a  ay use values.**
171e0 20 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 74   between 0 and t
171f0 68 69 73 20 75 70 70 65 72 20 62 6f 75 6e 64 20  his upper bound 
17200 61 73 20 69 74 73 20 22 6f 66 66 73 65 74 22 20  as its "offset" 
17210 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20 54 68 65  argument..** The
17220 20 53 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c   SQLite core wil
17230 6c 20 6e 65 76 65 72 20 61 74 74 65 6d 70 74 20  l never attempt 
17240 74 6f 20 61 63 71 75 69 72 65 20 6f 72 20 72 65  to acquire or re
17250 6c 65 61 73 65 20 61 0a 2a 2a 20 6c 6f 63 6b 20  lease a.** lock 
17260 6f 75 74 73 69 64 65 20 6f 66 20 74 68 69 73 20  outside of this 
17270 72 61 6e 67 65 0a 2a 2f 0a 23 64 65 66 69 6e 65  range.*/.#define
17280 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4e 4c 4f 43   SQLITE_SHM_NLOC
17290 4b 20 20 20 20 20 20 20 20 38 0a 0a 0a 2f 2a 0a  K        8.../*.
172a0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 49 6e 69  ** CAPI3REF: Ini
172b0 74 69 61 6c 69 7a 65 20 54 68 65 20 53 51 4c 69  tialize The SQLi
172c0 74 65 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a  te Library.**.**
172d0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e   ^The sqlite3_in
172e0 69 74 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69  itialize() routi
172f0 6e 65 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74  ne initializes t
17300 68 65 0a 2a 2a 20 53 51 4c 69 74 65 20 6c 69 62  he.** SQLite lib
17310 72 61 72 79 2e 20 20 5e 54 68 65 20 73 71 6c 69  rary.  ^The sqli
17320 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 72  te3_shutdown() r
17330 6f 75 74 69 6e 65 0a 2a 2a 20 64 65 61 6c 6c 6f  outine.** deallo
17340 63 61 74 65 73 20 61 6e 79 20 72 65 73 6f 75 72  cates any resour
17350 63 65 73 20 74 68 61 74 20 77 65 72 65 20 61 6c  ces that were al
17360 6c 6f 63 61 74 65 64 20 62 79 20 73 71 6c 69 74  located by sqlit
17370 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e  e3_initialize().
17380 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
17390 65 73 20 61 72 65 20 64 65 73 69 67 6e 65 64 20  es are designed 
173a0 74 6f 20 61 69 64 20 69 6e 20 70 72 6f 63 65 73  to aid in proces
173b0 73 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  s initialization
173c0 20 61 6e 64 0a 2a 2a 20 73 68 75 74 64 6f 77 6e   and.** shutdown
173d0 20 6f 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73   on embedded sys
173e0 74 65 6d 73 2e 20 20 57 6f 72 6b 73 74 61 74 69  tems.  Workstati
173f0 6f 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  on applications 
17400 75 73 69 6e 67 0a 2a 2a 20 53 51 4c 69 74 65 20  using.** SQLite 
17410 6e 6f 72 6d 61 6c 6c 79 20 64 6f 20 6e 6f 74 20  normally do not 
17420 6e 65 65 64 20 74 6f 20 69 6e 76 6f 6b 65 20 65  need to invoke e
17430 69 74 68 65 72 20 6f 66 20 74 68 65 73 65 20 72  ither of these r
17440 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 41  outines..**.** A
17450 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
17460 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73  _initialize() is
17470 20 61 6e 20 22 65 66 66 65 63 74 69 76 65 22 20   an "effective" 
17480 63 61 6c 6c 20 69 66 20 69 74 20 69 73 0a 2a 2a  call if it is.**
17490 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20   the first time 
174a0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
174b0 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20  ze() is invoked 
174c0 64 75 72 69 6e 67 20 74 68 65 20 6c 69 66 65 74  during the lifet
174d0 69 6d 65 20 6f 66 0a 2a 2a 20 74 68 65 20 70 72  ime of.** the pr
174e0 6f 63 65 73 73 2c 20 6f 72 20 69 66 20 69 74 20  ocess, or if it 
174f0 69 73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d  is the first tim
17500 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
17510 6c 69 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65  lize() is invoke
17520 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  d.** following a
17530 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
17540 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 5e 28  _shutdown().  ^(
17550 4f 6e 6c 79 20 61 6e 20 65 66 66 65 63 74 69 76  Only an effectiv
17560 65 20 63 61 6c 6c 0a 2a 2a 20 6f 66 20 73 71 6c  e call.** of sql
17570 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
17580 29 20 64 6f 65 73 20 61 6e 79 20 69 6e 69 74 69  ) does any initi
17590 61 6c 69 7a 61 74 69 6f 6e 2e 20 20 41 6c 6c 20  alization.  All 
175a0 6f 74 68 65 72 20 63 61 6c 6c 73 0a 2a 2a 20 61  other calls.** a
175b0 72 65 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f  re harmless no-o
175c0 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 41 20 63 61  ps.)^.**.** A ca
175d0 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68  ll to sqlite3_sh
175e0 75 74 64 6f 77 6e 28 29 20 69 73 20 61 6e 20 22  utdown() is an "
175f0 65 66 66 65 63 74 69 76 65 22 20 63 61 6c 6c 20  effective" call 
17600 69 66 20 69 74 20 69 73 20 74 68 65 20 66 69 72  if it is the fir
17610 73 74 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 73 71  st.** call to sq
17620 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
17630 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20   since the last 
17640 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
17650 7a 65 28 29 2e 20 20 5e 28 4f 6e 6c 79 0a 2a 2a  ze().  ^(Only.**
17660 20 61 6e 20 65 66 66 65 63 74 69 76 65 20 63 61   an effective ca
17670 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68  ll to sqlite3_sh
17680 75 74 64 6f 77 6e 28 29 20 64 6f 65 73 20 61 6e  utdown() does an
17690 79 20 64 65 69 6e 69 74 69 61 6c 69 7a 61 74 69  y deinitializati
176a0 6f 6e 2e 0a 2a 2a 20 41 6c 6c 20 6f 74 68 65 72  on..** All other
176b0 20 76 61 6c 69 64 20 63 61 6c 6c 73 20 74 6f 20   valid calls to 
176c0 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
176d0 28 29 20 61 72 65 20 68 61 72 6d 6c 65 73 73 20  () are harmless 
176e0 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20  no-ops.)^.**.** 
176f0 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  The sqlite3_init
17700 69 61 6c 69 7a 65 28 29 20 69 6e 74 65 72 66 61  ialize() interfa
17710 63 65 20 69 73 20 74 68 72 65 61 64 73 61 66 65  ce is threadsafe
17720 2c 20 62 75 74 20 73 71 6c 69 74 65 33 5f 73 68  , but sqlite3_sh
17730 75 74 64 6f 77 6e 28 29 0a 2a 2a 20 69 73 20 6e  utdown().** is n
17740 6f 74 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  ot.  The sqlite3
17750 5f 73 68 75 74 64 6f 77 6e 28 29 20 69 6e 74 65  _shutdown() inte
17760 72 66 61 63 65 20 6d 75 73 74 20 6f 6e 6c 79 20  rface must only 
17770 62 65 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 61  be called from a
17780 0a 2a 2a 20 73 69 6e 67 6c 65 20 74 68 72 65 61  .** single threa
17790 64 2e 20 20 41 6c 6c 20 6f 70 65 6e 20 5b 64 61  d.  All open [da
177a0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
177b0 6e 73 5d 20 6d 75 73 74 20 62 65 20 63 6c 6f 73  ns] must be clos
177c0 65 64 20 61 6e 64 20 61 6c 6c 0a 2a 2a 20 6f 74  ed and all.** ot
177d0 68 65 72 20 53 51 4c 69 74 65 20 72 65 73 6f 75  her SQLite resou
177e0 72 63 65 73 20 6d 75 73 74 20 62 65 20 64 65 61  rces must be dea
177f0 6c 6c 6f 63 61 74 65 64 20 70 72 69 6f 72 20 74  llocated prior t
17800 6f 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 73 71  o invoking.** sq
17810 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
17820 2e 0a 2a 2a 0a 2a 2a 20 41 6d 6f 6e 67 20 6f 74  ..**.** Among ot
17830 68 65 72 20 74 68 69 6e 67 73 2c 20 5e 73 71 6c  her things, ^sql
17840 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
17850 29 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 0a 2a 2a  ) will invoke.**
17860 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74   sqlite3_os_init
17870 28 29 2e 20 20 53 69 6d 69 6c 61 72 6c 79 2c 20  ().  Similarly, 
17880 5e 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77  ^sqlite3_shutdow
17890 6e 28 29 0a 2a 2a 20 77 69 6c 6c 20 69 6e 76 6f  n().** will invo
178a0 6b 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  ke sqlite3_os_en
178b0 64 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  d()..**.** ^The 
178c0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
178d0 7a 65 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74  ze() routine ret
178e0 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  urns [SQLITE_OK]
178f0 20 6f 6e 20 73 75 63 63 65 73 73 2e 0a 2a 2a 20   on success..** 
17900 5e 49 66 20 66 6f 72 20 73 6f 6d 65 20 72 65 61  ^If for some rea
17910 73 6f 6e 2c 20 73 71 6c 69 74 65 33 5f 69 6e 69  son, sqlite3_ini
17920 74 69 61 6c 69 7a 65 28 29 20 69 73 20 75 6e 61  tialize() is una
17930 62 6c 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a  ble to initializ
17940 65 0a 2a 2a 20 74 68 65 20 6c 69 62 72 61 72 79  e.** the library
17950 20 28 70 65 72 68 61 70 73 20 69 74 20 69 73 20   (perhaps it is 
17960 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61  unable to alloca
17970 74 65 20 61 20 6e 65 65 64 65 64 20 72 65 73 6f  te a needed reso
17980 75 72 63 65 20 73 75 63 68 0a 2a 2a 20 61 73 20  urce such.** as 
17990 61 20 6d 75 74 65 78 29 20 69 74 20 72 65 74 75  a mutex) it retu
179a0 72 6e 73 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f  rns an [error co
179b0 64 65 5d 20 6f 74 68 65 72 20 74 68 61 6e 20 5b  de] other than [
179c0 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 0a 2a  SQLITE_OK]..**.*
179d0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69  * ^The sqlite3_i
179e0 6e 69 74 69 61 6c 69 7a 65 28 29 20 72 6f 75 74  nitialize() rout
179f0 69 6e 65 20 69 73 20 63 61 6c 6c 65 64 20 69 6e  ine is called in
17a00 74 65 72 6e 61 6c 6c 79 20 62 79 20 6d 61 6e 79  ternally by many
17a10 20 6f 74 68 65 72 0a 2a 2a 20 53 51 4c 69 74 65   other.** SQLite
17a20 20 69 6e 74 65 72 66 61 63 65 73 20 73 6f 20 74   interfaces so t
17a30 68 61 74 20 61 6e 20 61 70 70 6c 69 63 61 74 69  hat an applicati
17a40 6f 6e 20 75 73 75 61 6c 6c 79 20 64 6f 65 73 20  on usually does 
17a50 6e 6f 74 20 6e 65 65 64 20 74 6f 0a 2a 2a 20 69  not need to.** i
17a60 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e  nvoke sqlite3_in
17a70 69 74 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63  itialize() direc
17a80 74 6c 79 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  tly.  For exampl
17a90 65 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  e, [sqlite3_open
17aa0 28 29 5d 0a 2a 2a 20 63 61 6c 6c 73 20 73 71 6c  ()].** calls sql
17ab0 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
17ac0 29 20 73 6f 20 74 68 65 20 53 51 4c 69 74 65 20  ) so the SQLite 
17ad0 6c 69 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20  library will be 
17ae0 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a  automatically.**
17af0 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 77 68 65   initialized whe
17b00 6e 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  n [sqlite3_open(
17b10 29 5d 20 69 73 20 63 61 6c 6c 65 64 20 69 66 20  )] is called if 
17b20 69 74 20 68 61 73 20 6e 6f 74 20 62 65 20 69 6e  it has not be in
17b30 69 74 69 61 6c 69 7a 65 64 0a 2a 2a 20 61 6c 72  itialized.** alr
17b40 65 61 64 79 2e 20 20 5e 48 6f 77 65 76 65 72 2c  eady.  ^However,
17b50 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   if SQLite is co
17b60 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 20  mpiled with the 
17b70 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  [SQLITE_OMIT_AUT
17b80 4f 49 4e 49 54 5d 0a 2a 2a 20 63 6f 6d 70 69 6c  OINIT].** compil
17b90 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74  e-time option, t
17ba0 68 65 6e 20 74 68 65 20 61 75 74 6f 6d 61 74 69  hen the automati
17bb0 63 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74  c calls to sqlit
17bc0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 0a  e3_initialize().
17bd0 2a 2a 20 61 72 65 20 6f 6d 69 74 74 65 64 20 61  ** are omitted a
17be0 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  nd the applicati
17bf0 6f 6e 20 6d 75 73 74 20 63 61 6c 6c 20 73 71 6c  on must call sql
17c00 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
17c10 29 20 64 69 72 65 63 74 6c 79 0a 2a 2a 20 70 72  ) directly.** pr
17c20 69 6f 72 20 74 6f 20 75 73 69 6e 67 20 61 6e 79  ior to using any
17c30 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e   other SQLite in
17c40 74 65 72 66 61 63 65 2e 20 20 46 6f 72 20 6d 61  terface.  For ma
17c50 78 69 6d 75 6d 20 70 6f 72 74 61 62 69 6c 69 74  ximum portabilit
17c60 79 2c 0a 2a 2a 20 69 74 20 69 73 20 72 65 63 6f  y,.** it is reco
17c70 6d 6d 65 6e 64 65 64 20 74 68 61 74 20 61 70 70  mmended that app
17c80 6c 69 63 61 74 69 6f 6e 73 20 61 6c 77 61 79 73  lications always
17c90 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f   invoke sqlite3_
17ca0 69 6e 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a 20  initialize().** 
17cb0 64 69 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74  directly prior t
17cc0 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f 74 68 65  o using any othe
17cd0 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  r SQLite interfa
17ce0 63 65 2e 20 20 46 75 74 75 72 65 20 72 65 6c 65  ce.  Future rele
17cf0 61 73 65 73 0a 2a 2a 20 6f 66 20 53 51 4c 69 74  ases.** of SQLit
17d00 65 20 6d 61 79 20 72 65 71 75 69 72 65 20 74 68  e may require th
17d10 69 73 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f  is.  In other wo
17d20 72 64 73 2c 20 74 68 65 20 62 65 68 61 76 69 6f  rds, the behavio
17d30 72 20 65 78 68 69 62 69 74 65 64 0a 2a 2a 20 77  r exhibited.** w
17d40 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f  hen SQLite is co
17d50 6d 70 69 6c 65 64 20 77 69 74 68 20 5b 53 51 4c  mpiled with [SQL
17d60 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
17d70 54 5d 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20  T] might become 
17d80 74 68 65 0a 2a 2a 20 64 65 66 61 75 6c 74 20 62  the.** default b
17d90 65 68 61 76 69 6f 72 20 69 6e 20 73 6f 6d 65 20  ehavior in some 
17da0 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f  future release o
17db0 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20  f SQLite..**.** 
17dc0 54 68 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69  The sqlite3_os_i
17dd0 6e 69 74 28 29 20 72 6f 75 74 69 6e 65 20 64 6f  nit() routine do
17de0 65 73 20 6f 70 65 72 61 74 69 6e 67 2d 73 79 73  es operating-sys
17df0 74 65 6d 20 73 70 65 63 69 66 69 63 0a 2a 2a 20  tem specific.** 
17e00 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f  initialization o
17e10 66 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62  f the SQLite lib
17e20 72 61 72 79 2e 20 20 54 68 65 20 73 71 6c 69 74  rary.  The sqlit
17e30 65 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 72  e3_os_end().** r
17e40 6f 75 74 69 6e 65 20 75 6e 64 6f 65 73 20 74 68  outine undoes th
17e50 65 20 65 66 66 65 63 74 20 6f 66 20 73 71 6c 69  e effect of sqli
17e60 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20  te3_os_init().  
17e70 54 79 70 69 63 61 6c 20 74 61 73 6b 73 0a 2a 2a  Typical tasks.**
17e80 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20 74 68   performed by th
17e90 65 73 65 20 72 6f 75 74 69 6e 65 73 20 69 6e 63  ese routines inc
17ea0 6c 75 64 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  lude allocation 
17eb0 6f 72 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a  or deallocation.
17ec0 2a 2a 20 6f 66 20 73 74 61 74 69 63 20 72 65 73  ** of static res
17ed0 6f 75 72 63 65 73 2c 20 69 6e 69 74 69 61 6c 69  ources, initiali
17ee0 7a 61 74 69 6f 6e 20 6f 66 20 67 6c 6f 62 61 6c  zation of global
17ef0 20 76 61 72 69 61 62 6c 65 73 2c 0a 2a 2a 20 73   variables,.** s
17f00 65 74 74 69 6e 67 20 75 70 20 61 20 64 65 66 61  etting up a defa
17f10 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  ult [sqlite3_vfs
17f20 5d 20 6d 6f 64 75 6c 65 2c 20 6f 72 20 73 65 74  ] module, or set
17f30 74 69 6e 67 20 75 70 0a 2a 2a 20 61 20 64 65 66  ting up.** a def
17f40 61 75 6c 74 20 63 6f 6e 66 69 67 75 72 61 74 69  ault configurati
17f50 6f 6e 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  on using [sqlite
17f60 33 5f 63 6f 6e 66 69 67 28 29 5d 2e 0a 2a 2a 0a  3_config()]..**.
17f70 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74 69  ** The applicati
17f80 6f 6e 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20  on should never 
17f90 69 6e 76 6f 6b 65 20 65 69 74 68 65 72 20 73 71  invoke either sq
17fa0 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 0a  lite3_os_init().
17fb0 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73  ** or sqlite3_os
17fc0 5f 65 6e 64 28 29 20 64 69 72 65 63 74 6c 79 2e  _end() directly.
17fd0 20 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f    The applicatio
17fe0 6e 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 69 6e  n should only in
17ff0 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  voke.** sqlite3_
18000 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 61 6e 64  initialize() and
18010 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
18020 6e 28 29 2e 20 20 54 68 65 20 73 71 6c 69 74 65  n().  The sqlite
18030 33 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a 20 69  3_os_init().** i
18040 6e 74 65 72 66 61 63 65 20 69 73 20 63 61 6c 6c  nterface is call
18050 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ed automatically
18060 20 62 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74   by sqlite3_init
18070 69 61 6c 69 7a 65 28 29 20 61 6e 64 0a 2a 2a 20  ialize() and.** 
18080 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29  sqlite3_os_end()
18090 20 69 73 20 63 61 6c 6c 65 64 20 62 79 20 73 71   is called by sq
180a0 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
180b0 2e 20 20 41 70 70 72 6f 70 72 69 61 74 65 0a 2a  .  Appropriate.*
180c0 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  * implementation
180d0 73 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73  s for sqlite3_os
180e0 5f 69 6e 69 74 28 29 20 61 6e 64 20 73 71 6c 69  _init() and sqli
180f0 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20  te3_os_end().** 
18100 61 72 65 20 62 75 69 6c 74 20 69 6e 74 6f 20 53  are built into S
18110 51 4c 69 74 65 20 77 68 65 6e 20 69 74 20 69 73  QLite when it is
18120 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 55 6e   compiled for Un
18130 69 78 2c 20 57 69 6e 64 6f 77 73 2c 20 6f 72 20  ix, Windows, or 
18140 4f 53 2f 32 2e 0a 2a 2a 20 57 68 65 6e 20 5b 63  OS/2..** When [c
18150 75 73 74 6f 6d 20 62 75 69 6c 64 73 20 7c 20 62  ustom builds | b
18160 75 69 6c 74 20 66 6f 72 20 6f 74 68 65 72 20 70  uilt for other p
18170 6c 61 74 66 6f 72 6d 73 5d 0a 2a 2a 20 28 75 73  latforms].** (us
18180 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ing the [SQLITE_
18190 4f 53 5f 4f 54 48 45 52 3d 31 5d 20 63 6f 6d 70  OS_OTHER=1] comp
181a0 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69  ile-time.** opti
181b0 6f 6e 29 20 74 68 65 20 61 70 70 6c 69 63 61 74  on) the applicat
181c0 69 6f 6e 20 6d 75 73 74 20 73 75 70 70 6c 79 20  ion must supply 
181d0 61 20 73 75 69 74 61 62 6c 65 20 69 6d 70 6c 65  a suitable imple
181e0 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 0a 2a 2a  mentation for.**
181f0 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74   sqlite3_os_init
18200 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f  () and sqlite3_o
18210 73 5f 65 6e 64 28 29 2e 20 20 41 6e 20 61 70 70  s_end().  An app
18220 6c 69 63 61 74 69 6f 6e 2d 73 75 70 70 6c 69 65  lication-supplie
18230 64 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  d.** implementat
18240 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f  ion of sqlite3_o
18250 73 5f 69 6e 69 74 28 29 20 6f 72 20 73 71 6c 69  s_init() or sqli
18260 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20  te3_os_end().** 
18270 6d 75 73 74 20 72 65 74 75 72 6e 20 5b 53 51 4c  must return [SQL
18280 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65  ITE_OK] on succe
18290 73 73 20 61 6e 64 20 73 6f 6d 65 20 6f 74 68 65  ss and some othe
182a0 72 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 75  r [error code] u
182b0 70 6f 6e 0a 2a 2a 20 66 61 69 6c 75 72 65 2e 0a  pon.** failure..
182c0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
182d0 74 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  t sqlite3_initia
182e0 6c 69 7a 65 28 76 6f 69 64 29 3b 0a 53 51 4c 49  lize(void);.SQLI
182f0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
18300 65 33 5f 73 68 75 74 64 6f 77 6e 28 76 6f 69 64  e3_shutdown(void
18310 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
18320 74 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  t sqlite3_os_ini
18330 74 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f  t(void);.SQLITE_
18340 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
18350 6f 73 5f 65 6e 64 28 76 6f 69 64 29 3b 0a 0a 2f  os_end(void);../
18360 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
18370 6f 6e 66 69 67 75 72 69 6e 67 20 54 68 65 20 53  onfiguring The S
18380 51 4c 69 74 65 20 4c 69 62 72 61 72 79 0a 2a 2a  QLite Library.**
18390 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
183a0 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61  config() interfa
183b0 63 65 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61  ce is used to ma
183c0 6b 65 20 67 6c 6f 62 61 6c 20 63 6f 6e 66 69 67  ke global config
183d0 75 72 61 74 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67  uration.** chang
183e0 65 73 20 74 6f 20 53 51 4c 69 74 65 20 69 6e 20  es to SQLite in 
183f0 6f 72 64 65 72 20 74 6f 20 74 75 6e 65 20 53 51  order to tune SQ
18400 4c 69 74 65 20 74 6f 20 74 68 65 20 73 70 65 63  Lite to the spec
18410 69 66 69 63 20 6e 65 65 64 73 20 6f 66 0a 2a 2a  ific needs of.**
18420 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
18430 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 63  .  The default c
18440 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 69 73 20  onfiguration is 
18450 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20  recommended for 
18460 6d 6f 73 74 0a 2a 2a 20 61 70 70 6c 69 63 61 74  most.** applicat
18470 69 6f 6e 73 20 61 6e 64 20 73 6f 20 74 68 69 73  ions and so this
18480 20 72 6f 75 74 69 6e 65 20 69 73 20 75 73 75 61   routine is usua
18490 6c 6c 79 20 6e 6f 74 20 6e 65 63 65 73 73 61 72  lly not necessar
184a0 79 2e 20 20 49 74 20 69 73 0a 2a 2a 20 70 72 6f  y.  It is.** pro
184b0 76 69 64 65 64 20 74 6f 20 73 75 70 70 6f 72 74  vided to support
184c0 20 72 61 72 65 20 61 70 70 6c 69 63 61 74 69 6f   rare applicatio
184d0 6e 73 20 77 69 74 68 20 75 6e 75 73 75 61 6c 20  ns with unusual 
184e0 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e  needs..**.** <b>
184f0 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  The sqlite3_conf
18500 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ig() interface i
18510 73 20 6e 6f 74 20 74 68 72 65 61 64 73 61 66 65  s not threadsafe
18520 2e 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  . The applicatio
18530 6e 0a 2a 2a 20 6d 75 73 74 20 65 6e 73 75 72 65  n.** must ensure
18540 20 74 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 53   that no other S
18550 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 73  QLite interfaces
18560 20 61 72 65 20 69 6e 76 6f 6b 65 64 20 62 79 20   are invoked by 
18570 6f 74 68 65 72 0a 2a 2a 20 74 68 72 65 61 64 73  other.** threads
18580 20 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 63   while sqlite3_c
18590 6f 6e 66 69 67 28 29 20 69 73 20 72 75 6e 6e 69  onfig() is runni
185a0 6e 67 2e 3c 2f 62 3e 0a 2a 2a 0a 2a 2a 20 54 68  ng.</b>.**.** Th
185b0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
185c0 28 29 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20  () interface.** 
185d0 6d 61 79 20 6f 6e 6c 79 20 62 65 20 69 6e 76 6f  may only be invo
185e0 6b 65 64 20 70 72 69 6f 72 20 74 6f 20 6c 69 62  ked prior to lib
185f0 72 61 72 79 20 69 6e 69 74 69 61 6c 69 7a 61 74  rary initializat
18600 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71  ion using.** [sq
18610 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18620 28 29 5d 20 6f 72 20 61 66 74 65 72 20 73 68 75  ()] or after shu
18630 74 64 6f 77 6e 20 62 79 20 5b 73 71 6c 69 74 65  tdown by [sqlite
18640 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 2e 0a 2a  3_shutdown()]..*
18650 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 63 6f  * ^If sqlite3_co
18660 6e 66 69 67 28 29 20 69 73 20 63 61 6c 6c 65 64  nfig() is called
18670 20 61 66 74 65 72 20 5b 73 71 6c 69 74 65 33 5f   after [sqlite3_
18680 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 6e  initialize()] an
18690 64 20 62 65 66 6f 72 65 0a 2a 2a 20 5b 73 71 6c  d before.** [sql
186a0 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d  ite3_shutdown()]
186b0 20 74 68 65 6e 20 69 74 20 77 69 6c 6c 20 72 65   then it will re
186c0 74 75 72 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55  turn SQLITE_MISU
186d0 53 45 2e 0a 2a 2a 20 4e 6f 74 65 2c 20 68 6f 77  SE..** Note, how
186e0 65 76 65 72 2c 20 74 68 61 74 20 5e 73 71 6c 69  ever, that ^sqli
186f0 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 63 61 6e  te3_config() can
18700 20 62 65 20 63 61 6c 6c 65 64 20 61 73 20 70 61   be called as pa
18710 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 69 6d 70  rt of the.** imp
18720 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61  lementation of a
18730 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  n application-de
18740 66 69 6e 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f  fined [sqlite3_o
18750 73 5f 69 6e 69 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a  s_init()]..**.**
18760 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   The first argum
18770 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63  ent to sqlite3_c
18780 6f 6e 66 69 67 28 29 20 69 73 20 61 6e 20 69 6e  onfig() is an in
18790 74 65 67 65 72 0a 2a 2a 20 5b 63 6f 6e 66 69 67  teger.** [config
187a0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d 20  uration option] 
187b0 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 73 0a  that determines.
187c0 2a 2a 20 77 68 61 74 20 70 72 6f 70 65 72 74 79  ** what property
187d0 20 6f 66 20 53 51 4c 69 74 65 20 69 73 20 74 6f   of SQLite is to
187e0 20 62 65 20 63 6f 6e 66 69 67 75 72 65 64 2e 20   be configured. 
187f0 20 53 75 62 73 65 71 75 65 6e 74 20 61 72 67 75   Subsequent argu
18800 6d 65 6e 74 73 0a 2a 2a 20 76 61 72 79 20 64 65  ments.** vary de
18810 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 5b  pending on the [
18820 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
18830 74 69 6f 6e 5d 0a 2a 2a 20 69 6e 20 74 68 65 20  tion].** in the 
18840 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a  first argument..
18850 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 63 6f  **.** ^When a co
18860 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
18870 6f 6e 20 69 73 20 73 65 74 2c 20 73 71 6c 69 74  on is set, sqlit
18880 65 33 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75  e3_config() retu
18890 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e  rns [SQLITE_OK].
188a0 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6f 70 74 69  .** ^If the opti
188b0 6f 6e 20 69 73 20 75 6e 6b 6e 6f 77 6e 20 6f 72  on is unknown or
188c0 20 53 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c   SQLite is unabl
188d0 65 20 74 6f 20 73 65 74 20 74 68 65 20 6f 70 74  e to set the opt
188e0 69 6f 6e 0a 2a 2a 20 74 68 65 6e 20 74 68 69 73  ion.** then this
188f0 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
18900 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72   a non-zero [err
18910 6f 72 20 63 6f 64 65 5d 2e 0a 2a 2f 0a 53 51 4c  or code]..*/.SQL
18920 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
18930 74 65 33 5f 63 6f 6e 66 69 67 28 69 6e 74 2c 20  te3_config(int, 
18940 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ...);../*.** CAP
18950 49 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 65  I3REF: Configure
18960 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
18970 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  tions.** METHOD:
18980 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54   sqlite3.**.** T
18990 68 65 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  he sqlite3_db_co
189a0 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63 65  nfig() interface
189b0 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65   is used to make
189c0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 2a   configuration.*
189d0 2a 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20 5b  * changes to a [
189e0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
189f0 69 6f 6e 5d 2e 20 20 54 68 65 20 69 6e 74 65 72  ion].  The inter
18a00 66 61 63 65 20 69 73 20 73 69 6d 69 6c 61 72 20  face is similar 
18a10 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63  to.** [sqlite3_c
18a20 6f 6e 66 69 67 28 29 5d 20 65 78 63 65 70 74 20  onfig()] except 
18a30 74 68 61 74 20 74 68 65 20 63 68 61 6e 67 65 73  that the changes
18a40 20 61 70 70 6c 79 20 74 6f 20 61 20 73 69 6e 67   apply to a sing
18a50 6c 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20  le.** [database 
18a60 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 28 73 70 65  connection] (spe
18a70 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 66 69  cified in the fi
18a80 72 73 74 20 61 72 67 75 6d 65 6e 74 29 2e 0a 2a  rst argument)..*
18a90 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20  *.** The second 
18aa0 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69  argument to sqli
18ab0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 44 2c  te3_db_config(D,
18ac0 56 2c 2e 2e 2e 29 20 20 69 73 20 74 68 65 0a 2a  V,...)  is the.*
18ad0 2a 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  * [SQLITE_DBCONF
18ae0 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 7c 20 63  IG_LOOKASIDE | c
18af0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 76 65 72  onfiguration ver
18b00 62 5d 20 2d 20 61 6e 20 69 6e 74 65 67 65 72 20  b] - an integer 
18b10 63 6f 64 65 20 0a 2a 2a 20 74 68 61 74 20 69 6e  code .** that in
18b20 64 69 63 61 74 65 73 20 77 68 61 74 20 61 73 70  dicates what asp
18b30 65 63 74 20 6f 66 20 74 68 65 20 5b 64 61 74 61  ect of the [data
18b40 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
18b50 20 69 73 20 62 65 69 6e 67 20 63 6f 6e 66 69 67   is being config
18b60 75 72 65 64 2e 0a 2a 2a 20 53 75 62 73 65 71 75  ured..** Subsequ
18b70 65 6e 74 20 61 72 67 75 6d 65 6e 74 73 20 76 61  ent arguments va
18b80 72 79 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20  ry depending on 
18b90 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
18ba0 6e 20 76 65 72 62 2e 0a 2a 2a 0a 2a 2a 20 5e 43  n verb..**.** ^C
18bb0 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  alls to sqlite3_
18bc0 64 62 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75  db_config() retu
18bd0 72 6e 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20  rn SQLITE_OK if 
18be0 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20 74  and only if.** t
18bf0 68 65 20 63 61 6c 6c 20 69 73 20 63 6f 6e 73 69  he call is consi
18c00 64 65 72 65 64 20 73 75 63 63 65 73 73 66 75 6c  dered successful
18c10 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
18c20 69 6e 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 63  int sqlite3_db_c
18c30 6f 6e 66 69 67 28 73 71 6c 69 74 65 33 2a 2c 20  onfig(sqlite3*, 
18c40 69 6e 74 20 6f 70 2c 20 2e 2e 2e 29 3b 0a 0a 2f  int op, ...);../
18c50 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d  *.** CAPI3REF: M
18c60 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e  emory Allocation
18c70 20 52 6f 75 74 69 6e 65 73 0a 2a 2a 0a 2a 2a 20   Routines.**.** 
18c80 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  An instance of t
18c90 68 69 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e  his object defin
18ca0 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
18cb0 20 62 65 74 77 65 65 6e 20 53 51 4c 69 74 65 0a   between SQLite.
18cc0 2a 2a 20 61 6e 64 20 6c 6f 77 2d 6c 65 76 65 6c  ** and low-level
18cd0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
18ce0 6f 6e 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a  on routines..**.
18cf0 2a 2a 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69  ** This object i
18d00 73 20 75 73 65 64 20 69 6e 20 6f 6e 6c 79 20 6f  s used in only o
18d10 6e 65 20 70 6c 61 63 65 20 69 6e 20 74 68 65 20  ne place in the 
18d20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
18d30 2e 0a 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74  ..** A pointer t
18d40 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  o an instance of
18d50 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   this object is 
18d60 74 68 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a  the argument to.
18d70 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ** [sqlite3_conf
18d80 69 67 28 29 5d 20 77 68 65 6e 20 74 68 65 20 63  ig()] when the c
18d90 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
18da0 69 6f 6e 20 69 73 0a 2a 2a 20 5b 53 51 4c 49 54  ion is.** [SQLIT
18db0 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d  E_CONFIG_MALLOC]
18dc0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   or [SQLITE_CONF
18dd0 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 5d 2e 20 20  IG_GETMALLOC].  
18de0 0a 2a 2a 20 42 79 20 63 72 65 61 74 69 6e 67 20  .** By creating 
18df0 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
18e00 68 69 73 20 6f 62 6a 65 63 74 0a 2a 2a 20 61 6e  his object.** an
18e10 64 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20  d passing it to 
18e20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d  [sqlite3_config]
18e30 28 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ([SQLITE_CONFIG_
18e40 4d 41 4c 4c 4f 43 5d 29 0a 2a 2a 20 64 75 72 69  MALLOC]).** duri
18e50 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ng configuration
18e60 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
18e70 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 6e 20   can specify an 
18e80 61 6c 74 65 72 6e 61 74 69 76 65 0a 2a 2a 20 6d  alternative.** m
18e90 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
18ea0 20 73 75 62 73 79 73 74 65 6d 20 66 6f 72 20 53   subsystem for S
18eb0 51 4c 69 74 65 20 74 6f 20 75 73 65 20 66 6f 72  QLite to use for
18ec0 20 61 6c 6c 20 6f 66 20 69 74 73 0a 2a 2a 20 64   all of its.** d
18ed0 79 6e 61 6d 69 63 20 6d 65 6d 6f 72 79 20 6e 65  ynamic memory ne
18ee0 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20  eds..**.** Note 
18ef0 74 68 61 74 20 53 51 4c 69 74 65 20 63 6f 6d 65  that SQLite come
18f00 73 20 77 69 74 68 20 73 65 76 65 72 61 6c 20 5b  s with several [
18f10 62 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20  built-in memory 
18f20 61 6c 6c 6f 63 61 74 6f 72 73 5d 0a 2a 2a 20 74  allocators].** t
18f30 68 61 74 20 61 72 65 20 70 65 72 66 65 63 74 6c  hat are perfectl
18f40 79 20 61 64 65 71 75 61 74 65 20 66 6f 72 20 74  y adequate for t
18f50 68 65 20 6f 76 65 72 77 68 65 6c 6d 69 6e 67 20  he overwhelming 
18f60 6d 61 6a 6f 72 69 74 79 20 6f 66 20 61 70 70 6c  majority of appl
18f70 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 61 6e 64 20  ications.** and 
18f80 74 68 61 74 20 74 68 69 73 20 6f 62 6a 65 63 74  that this object
18f90 20 69 73 20 6f 6e 6c 79 20 75 73 65 66 75 6c 20   is only useful 
18fa0 74 6f 20 61 20 74 69 6e 79 20 6d 69 6e 6f 72 69  to a tiny minori
18fb0 74 79 20 6f 66 20 61 70 70 6c 69 63 61 74 69 6f  ty of applicatio
18fc0 6e 73 0a 2a 2a 20 77 69 74 68 20 73 70 65 63 69  ns.** with speci
18fd0 61 6c 69 7a 65 64 20 6d 65 6d 6f 72 79 20 61 6c  alized memory al
18fe0 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65  location require
18ff0 6d 65 6e 74 73 2e 20 20 54 68 69 73 20 6f 62 6a  ments.  This obj
19000 65 63 74 20 69 73 0a 2a 2a 20 61 6c 73 6f 20 75  ect is.** also u
19010 73 65 64 20 64 75 72 69 6e 67 20 74 65 73 74 69  sed during testi
19020 6e 67 20 6f 66 20 53 51 4c 69 74 65 20 69 6e 20  ng of SQLite in 
19030 6f 72 64 65 72 20 74 6f 20 73 70 65 63 69 66 79  order to specify
19040 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
19050 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ** memory alloca
19060 74 6f 72 20 74 68 61 74 20 73 69 6d 75 6c 61 74  tor that simulat
19070 65 73 20 6d 65 6d 6f 72 79 20 6f 75 74 2d 6f 66  es memory out-of
19080 2d 6d 65 6d 6f 72 79 20 63 6f 6e 64 69 74 69 6f  -memory conditio
19090 6e 73 20 69 6e 0a 2a 2a 20 6f 72 64 65 72 20 74  ns in.** order t
190a0 6f 20 76 65 72 69 66 79 20 74 68 61 74 20 53 51  o verify that SQ
190b0 4c 69 74 65 20 72 65 63 6f 76 65 72 73 20 67 72  Lite recovers gr
190c0 61 63 65 66 75 6c 6c 79 20 66 72 6f 6d 20 73 75  acefully from su
190d0 63 68 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f 6e 73  ch.** conditions
190e0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 4d 61 6c  ..**.** The xMal
190f0 6c 6f 63 2c 20 78 52 65 61 6c 6c 6f 63 2c 20 61  loc, xRealloc, a
19100 6e 64 20 78 46 72 65 65 20 6d 65 74 68 6f 64 73  nd xFree methods
19110 20 6d 75 73 74 20 77 6f 72 6b 20 6c 69 6b 65 20   must work like 
19120 74 68 65 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29 2c  the.** malloc(),
19130 20 72 65 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66   realloc() and f
19140 72 65 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 20  ree() functions 
19150 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72  from the standar
19160 64 20 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a 20  d C library..** 
19170 5e 53 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65  ^SQLite guarante
19180 65 73 20 74 68 61 74 20 74 68 65 20 73 65 63 6f  es that the seco
19190 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a  nd argument to.*
191a0 2a 20 78 52 65 61 6c 6c 6f 63 20 69 73 20 61 6c  * xRealloc is al
191b0 77 61 79 73 20 61 20 76 61 6c 75 65 20 72 65 74  ways a value ret
191c0 75 72 6e 65 64 20 62 79 20 61 20 70 72 69 6f 72  urned by a prior
191d0 20 63 61 6c 6c 20 74 6f 20 78 52 6f 75 6e 64 75   call to xRoundu
191e0 70 2e 0a 2a 2a 0a 2a 2a 20 78 53 69 7a 65 20 73  p..**.** xSize s
191f0 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65  hould return the
19200 20 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 20   allocated size 
19210 6f 66 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  of a memory allo
19220 63 61 74 69 6f 6e 0a 2a 2a 20 70 72 65 76 69 6f  cation.** previo
19230 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72  usly obtained fr
19240 6f 6d 20 78 4d 61 6c 6c 6f 63 20 6f 72 20 78 52  om xMalloc or xR
19250 65 61 6c 6c 6f 63 2e 20 20 54 68 65 20 61 6c 6c  ealloc.  The all
19260 6f 63 61 74 65 64 20 73 69 7a 65 0a 2a 2a 20 69  ocated size.** i
19270 73 20 61 6c 77 61 79 73 20 61 74 20 6c 65 61 73  s always at leas
19280 74 20 61 73 20 62 69 67 20 61 73 20 74 68 65 20  t as big as the 
19290 72 65 71 75 65 73 74 65 64 20 73 69 7a 65 20 62  requested size b
192a0 75 74 20 6d 61 79 20 62 65 20 6c 61 72 67 65 72  ut may be larger
192b0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 6f 75  ..**.** The xRou
192c0 6e 64 75 70 20 6d 65 74 68 6f 64 20 72 65 74 75  ndup method retu
192d0 72 6e 73 20 77 68 61 74 20 77 6f 75 6c 64 20 62  rns what would b
192e0 65 20 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20  e the allocated 
192f0 73 69 7a 65 20 6f 66 0a 2a 2a 20 61 20 6d 65 6d  size of.** a mem
19300 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 67  ory allocation g
19310 69 76 65 6e 20 61 20 70 61 72 74 69 63 75 6c 61  iven a particula
19320 72 20 72 65 71 75 65 73 74 65 64 20 73 69 7a 65  r requested size
19330 2e 20 20 4d 6f 73 74 20 6d 65 6d 6f 72 79 0a 2a  .  Most memory.*
19340 2a 20 61 6c 6c 6f 63 61 74 6f 72 73 20 72 6f 75  * allocators rou
19350 6e 64 20 75 70 20 6d 65 6d 6f 72 79 20 61 6c 6c  nd up memory all
19360 6f 63 61 74 69 6f 6e 73 20 61 74 20 6c 65 61 73  ocations at leas
19370 74 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75  t to the next mu
19380 6c 74 69 70 6c 65 0a 2a 2a 20 6f 66 20 38 2e 20  ltiple.** of 8. 
19390 20 53 6f 6d 65 20 61 6c 6c 6f 63 61 74 6f 72 73   Some allocators
193a0 20 72 6f 75 6e 64 20 75 70 20 74 6f 20 61 20 6c   round up to a l
193b0 61 72 67 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f  arger multiple o
193c0 72 20 74 6f 20 61 20 70 6f 77 65 72 20 6f 66 20  r to a power of 
193d0 32 2e 0a 2a 2a 20 45 76 65 72 79 20 6d 65 6d 6f  2..** Every memo
193e0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 65  ry allocation re
193f0 71 75 65 73 74 20 63 6f 6d 69 6e 67 20 69 6e 20  quest coming in 
19400 74 68 72 6f 75 67 68 20 5b 73 71 6c 69 74 65 33  through [sqlite3
19410 5f 6d 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 6f 72  _malloc()].** or
19420 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
19430 63 28 29 5d 20 66 69 72 73 74 20 63 61 6c 6c 73  c()] first calls
19440 20 78 52 6f 75 6e 64 75 70 2e 20 20 49 66 20 78   xRoundup.  If x
19450 52 6f 75 6e 64 75 70 20 72 65 74 75 72 6e 73 20  Roundup returns 
19460 30 2c 20 0a 2a 2a 20 74 68 61 74 20 63 61 75 73  0, .** that caus
19470 65 73 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e  es the correspon
19480 64 69 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ding memory allo
19490 63 61 74 69 6f 6e 20 74 6f 20 66 61 69 6c 2e 0a  cation to fail..
194a0 2a 2a 0a 2a 2a 20 54 68 65 20 78 49 6e 69 74 20  **.** The xInit 
194b0 6d 65 74 68 6f 64 20 69 6e 69 74 69 61 6c 69 7a  method initializ
194c0 65 73 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  es the memory al
194d0 6c 6f 63 61 74 6f 72 2e 20 20 46 6f 72 20 65 78  locator.  For ex
194e0 61 6d 70 6c 65 2c 0a 2a 2a 20 69 74 20 6d 69 67  ample,.** it mig
194f0 68 74 20 61 6c 6c 6f 63 61 74 65 20 61 6e 79 20  ht allocate any 
19500 72 65 71 75 69 72 65 20 6d 75 74 65 78 65 73 20  require mutexes 
19510 6f 72 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 6e  or initialize in
19520 74 65 72 6e 61 6c 20 64 61 74 61 0a 2a 2a 20 73  ternal data.** s
19530 74 72 75 63 74 75 72 65 73 2e 20 20 54 68 65 20  tructures.  The 
19540 78 53 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64  xShutdown method
19550 20 69 73 20 69 6e 76 6f 6b 65 64 20 28 69 6e 64   is invoked (ind
19560 69 72 65 63 74 6c 79 29 20 62 79 0a 2a 2a 20 5b  irectly) by.** [
19570 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
19580 28 29 5d 20 61 6e 64 20 73 68 6f 75 6c 64 20 64  ()] and should d
19590 65 61 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65  eallocate any re
195a0 73 6f 75 72 63 65 73 20 61 63 71 75 69 72 65 64  sources acquired
195b0 0a 2a 2a 20 62 79 20 78 49 6e 69 74 2e 20 20 54  .** by xInit.  T
195c0 68 65 20 70 41 70 70 44 61 74 61 20 70 6f 69 6e  he pAppData poin
195d0 74 65 72 20 69 73 20 75 73 65 64 20 61 73 20 74  ter is used as t
195e0 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65  he only paramete
195f0 72 20 74 6f 0a 2a 2a 20 78 49 6e 69 74 20 61 6e  r to.** xInit an
19600 64 20 78 53 68 75 74 64 6f 77 6e 2e 0a 2a 2a 0a  d xShutdown..**.
19610 2a 2a 20 53 51 4c 69 74 65 20 68 6f 6c 64 73 20  ** SQLite holds 
19620 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45  the [SQLITE_MUTE
19630 58 5f 53 54 41 54 49 43 5f 4d 41 53 54 45 52 5d  X_STATIC_MASTER]
19640 20 6d 75 74 65 78 20 77 68 65 6e 20 69 74 20 69   mutex when it i
19650 6e 76 6f 6b 65 73 0a 2a 2a 20 74 68 65 20 78 49  nvokes.** the xI
19660 6e 69 74 20 6d 65 74 68 6f 64 2c 20 73 6f 20 74  nit method, so t
19670 68 65 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 20  he xInit method 
19680 6e 65 65 64 20 6e 6f 74 20 62 65 20 74 68 72 65  need not be thre
19690 61 64 73 61 66 65 2e 20 20 54 68 65 0a 2a 2a 20  adsafe.  The.** 
196a0 78 53 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64  xShutdown method
196b0 20 69 73 20 6f 6e 6c 79 20 63 61 6c 6c 65 64 20   is only called 
196c0 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 68  from [sqlite3_sh
196d0 75 74 64 6f 77 6e 28 29 5d 20 73 6f 20 69 74 20  utdown()] so it 
196e0 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 6e 65 65 64  does.** not need
196f0 20 74 6f 20 62 65 20 74 68 72 65 61 64 73 61 66   to be threadsaf
19700 65 20 65 69 74 68 65 72 2e 20 20 46 6f 72 20 61  e either.  For a
19710 6c 6c 20 6f 74 68 65 72 20 6d 65 74 68 6f 64 73  ll other methods
19720 2c 20 53 51 4c 69 74 65 0a 2a 2a 20 68 6f 6c 64  , SQLite.** hold
19730 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 55  s the [SQLITE_MU
19740 54 45 58 5f 53 54 41 54 49 43 5f 4d 45 4d 5d 20  TEX_STATIC_MEM] 
19750 6d 75 74 65 78 20 61 73 20 6c 6f 6e 67 20 61 73  mutex as long as
19760 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
19770 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
19780 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  ] configuration 
19790 6f 70 74 69 6f 6e 20 69 73 20 74 75 72 6e 65 64  option is turned
197a0 20 6f 6e 20 28 77 68 69 63 68 0a 2a 2a 20 69 74   on (which.** it
197b0 20 69 73 20 62 79 20 64 65 66 61 75 6c 74 29 20   is by default) 
197c0 61 6e 64 20 73 6f 20 74 68 65 20 6d 65 74 68 6f  and so the metho
197d0 64 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63  ds are automatic
197e0 61 6c 6c 79 20 73 65 72 69 61 6c 69 7a 65 64 2e  ally serialized.
197f0 0a 2a 2a 20 48 6f 77 65 76 65 72 2c 20 69 66 20  .** However, if 
19800 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
19810 45 4d 53 54 41 54 55 53 5d 20 69 73 20 64 69 73  EMSTATUS] is dis
19820 61 62 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20  abled, then the 
19830 6f 74 68 65 72 0a 2a 2a 20 6d 65 74 68 6f 64 73  other.** methods
19840 20 6d 75 73 74 20 62 65 20 74 68 72 65 61 64 73   must be threads
19850 61 66 65 20 6f 72 20 65 6c 73 65 20 6d 61 6b 65  afe or else make
19860 20 74 68 65 69 72 20 6f 77 6e 20 61 72 72 61 6e   their own arran
19870 67 65 6d 65 6e 74 73 20 66 6f 72 0a 2a 2a 20 73  gements for.** s
19880 65 72 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a  erialization..**
19890 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  .** SQLite will 
198a0 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 78 49 6e  never invoke xIn
198b0 69 74 28 29 20 6d 6f 72 65 20 74 68 61 6e 20 6f  it() more than o
198c0 6e 63 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69  nce without an i
198d0 6e 74 65 72 76 65 6e 69 6e 67 0a 2a 2a 20 63 61  ntervening.** ca
198e0 6c 6c 20 74 6f 20 78 53 68 75 74 64 6f 77 6e 28  ll to xShutdown(
198f0 29 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  )..*/.typedef st
19900 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d  ruct sqlite3_mem
19910 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33  _methods sqlite3
19920 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 3b 0a 73 74  _mem_methods;.st
19930 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d  ruct sqlite3_mem
19940 5f 6d 65 74 68 6f 64 73 20 7b 0a 20 20 76 6f 69  _methods {.  voi
19950 64 20 2a 28 2a 78 4d 61 6c 6c 6f 63 29 28 69 6e  d *(*xMalloc)(in
19960 74 29 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 4d  t);         /* M
19970 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
19980 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76   function */.  v
19990 6f 69 64 20 28 2a 78 46 72 65 65 29 28 76 6f 69  oid (*xFree)(voi
199a0 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20 2f 2a  d*);          /*
199b0 20 46 72 65 65 20 61 20 70 72 69 6f 72 20 61 6c   Free a prior al
199c0 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f  location */.  vo
199d0 69 64 20 2a 28 2a 78 52 65 61 6c 6c 6f 63 29 28  id *(*xRealloc)(
199e0 76 6f 69 64 2a 2c 69 6e 74 29 3b 20 20 2f 2a 20  void*,int);  /* 
199f0 52 65 73 69 7a 65 20 61 6e 20 61 6c 6c 6f 63 61  Resize an alloca
19a00 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a  tion */.  int (*
19a10 78 53 69 7a 65 29 28 76 6f 69 64 2a 29 3b 20 20  xSize)(void*);  
19a20 20 20 20 20 20 20 20 20 20 2f 2a 20 52 65 74 75           /* Retu
19a30 72 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 61  rn the size of a
19a40 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a  n allocation */.
19a50 20 20 69 6e 74 20 28 2a 78 52 6f 75 6e 64 75 70    int (*xRoundup
19a60 29 28 69 6e 74 29 3b 20 20 20 20 20 20 20 20 20  )(int);         
19a70 20 2f 2a 20 52 6f 75 6e 64 20 75 70 20 72 65 71   /* Round up req
19a80 75 65 73 74 20 73 69 7a 65 20 74 6f 20 61 6c 6c  uest size to all
19a90 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 2a 2f 0a  ocation size */.
19aa0 20 20 69 6e 74 20 28 2a 78 49 6e 69 74 29 28 76    int (*xInit)(v
19ab0 6f 69 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20  oid*);          
19ac0 20 2f 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74   /* Initialize t
19ad0 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  he memory alloca
19ae0 74 6f 72 20 2a 2f 0a 20 20 76 6f 69 64 20 28 2a  tor */.  void (*
19af0 78 53 68 75 74 64 6f 77 6e 29 28 76 6f 69 64 2a  xShutdown)(void*
19b00 29 3b 20 20 20 20 20 20 2f 2a 20 44 65 69 6e 69  );      /* Deini
19b10 74 69 61 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f  tialize the memo
19b20 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a  ry allocator */.
19b30 20 20 76 6f 69 64 20 2a 70 41 70 70 44 61 74 61    void *pAppData
19b40 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;               
19b50 20 2f 2a 20 41 72 67 75 6d 65 6e 74 20 74 6f 20   /* Argument to 
19b60 78 49 6e 69 74 28 29 20 61 6e 64 20 78 53 68 75  xInit() and xShu
19b70 74 64 6f 77 6e 28 29 20 2a 2f 0a 7d 3b 0a 0a 2f  tdown() */.};../
19b80 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
19b90 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74  onfiguration Opt
19ba0 69 6f 6e 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  ions.** KEYWORDS
19bb0 3a 20 7b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  : {configuration
19bc0 20 6f 70 74 69 6f 6e 7d 0a 2a 2a 0a 2a 2a 20 54   option}.**.** T
19bd0 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61  hese constants a
19be0 72 65 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65  re the available
19bf0 20 69 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75   integer configu
19c00 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74  ration options t
19c10 68 61 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61  hat.** can be pa
19c20 73 73 65 64 20 61 73 20 74 68 65 20 66 69 72 73  ssed as the firs
19c30 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  t argument to th
19c40 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  e [sqlite3_confi
19c50 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a  g()] interface..
19c60 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67  **.** New config
19c70 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  uration options 
19c80 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20  may be added in 
19c90 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20  future releases 
19ca0 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78  of SQLite..** Ex
19cb0 69 73 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61  isting configura
19cc0 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67  tion options mig
19cd0 68 74 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75  ht be discontinu
19ce0 65 64 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  ed.  Application
19cf0 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63  s.** should chec
19d00 6b 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64  k the return cod
19d10 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  e from [sqlite3_
19d20 63 6f 6e 66 69 67 28 29 5d 20 74 6f 20 6d 61 6b  config()] to mak
19d30 65 20 73 75 72 65 20 74 68 61 74 0a 2a 2a 20 74  e sure that.** t
19d40 68 65 20 63 61 6c 6c 20 77 6f 72 6b 65 64 2e 20  he call worked. 
19d50 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f   The [sqlite3_co
19d60 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
19d70 65 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a  e will return a.
19d80 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72  ** non-zero [err
19d90 6f 72 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69  or code] if a di
19da0 73 63 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e  scontinued or un
19db0 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67  supported config
19dc0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a  uration option.*
19dd0 2a 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a  * is invoked..**
19de0 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
19df0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47  LITE_CONFIG_SING
19e00 4c 45 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53  LETHREAD]] <dt>S
19e10 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e  QLITE_CONFIG_SIN
19e20 47 4c 45 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a  GLETHREAD</dt>.*
19e30 2a 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20  * <dd>There are 
19e40 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  no arguments to 
19e50 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54  this option.  ^T
19e60 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  his option sets 
19e70 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e  the.** [threadin
19e80 67 20 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c  g mode] to Singl
19e90 65 2d 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74  e-thread.  In ot
19ea0 68 65 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69  her words, it di
19eb0 73 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75  sables.** all mu
19ec0 74 65 78 69 6e 67 20 61 6e 64 20 70 75 74 73 20  texing and puts 
19ed0 53 51 4c 69 74 65 20 69 6e 74 6f 20 61 20 6d 6f  SQLite into a mo
19ee0 64 65 20 77 68 65 72 65 20 69 74 20 63 61 6e 20  de where it can 
19ef0 6f 6e 6c 79 20 62 65 20 75 73 65 64 0a 2a 2a 20  only be used.** 
19f00 62 79 20 61 20 73 69 6e 67 6c 65 20 74 68 72 65  by a single thre
19f10 61 64 2e 20 20 20 5e 49 66 20 53 51 4c 69 74 65  ad.   ^If SQLite
19f20 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
19f30 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  h.** the [SQLITE
19f40 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53 51  _THREADSAFE | SQ
19f50 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
19f60 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  0] compile-time 
19f70 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69  option then.** i
19f80 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c  t is not possibl
19f90 65 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  e to change the 
19fa0 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
19fb0 20 66 72 6f 6d 20 69 74 73 20 64 65 66 61 75 6c   from its defaul
19fc0 74 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 53 69  t.** value of Si
19fd0 6e 67 6c 65 2d 74 68 72 65 61 64 20 61 6e 64 20  ngle-thread and 
19fe0 73 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  so [sqlite3_conf
19ff0 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72  ig()] will retur
1a000 6e 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52  n .** [SQLITE_ER
1a010 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77  ROR] if called w
1a020 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43  ith the SQLITE_C
1a030 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
1a040 41 44 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  AD.** configurat
1a050 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e  ion option.</dd>
1a060 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1a070 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
1a080 41 44 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  AD]] <dt>SQLITE_
1a090 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
1a0a0 41 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  AD</dt>.** <dd>T
1a0b0 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75  here are no argu
1a0c0 6d 65 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70  ments to this op
1a0d0 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74  tion.  ^This opt
1a0e0 69 6f 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20  ion sets the.** 
1a0f0 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
1a100 20 74 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64   to Multi-thread
1a110 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  .  In other word
1a120 73 2c 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a  s, it disables.*
1a130 2a 20 6d 75 74 65 78 69 6e 67 20 6f 6e 20 5b 64  * mutexing on [d
1a140 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1a150 6f 6e 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65  on] and [prepare
1a160 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a  d statement] obj
1a170 65 63 74 73 2e 0a 2a 2a 20 54 68 65 20 61 70 70  ects..** The app
1a180 6c 69 63 61 74 69 6f 6e 20 69 73 20 72 65 73 70  lication is resp
1a190 6f 6e 73 69 62 6c 65 20 66 6f 72 20 73 65 72 69  onsible for seri
1a1a0 61 6c 69 7a 69 6e 67 20 61 63 63 65 73 73 20 74  alizing access t
1a1b0 6f 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63  o.** [database c
1a1c0 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 61 6e 64 20  onnections] and 
1a1d0 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
1a1e0 65 6e 74 73 5d 2e 20 20 42 75 74 20 6f 74 68 65  ents].  But othe
1a1f0 72 20 6d 75 74 65 78 65 73 0a 2a 2a 20 61 72 65  r mutexes.** are
1a200 20 65 6e 61 62 6c 65 64 20 73 6f 20 74 68 61 74   enabled so that
1a210 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 62 65 20   SQLite will be 
1a220 73 61 66 65 20 74 6f 20 75 73 65 20 69 6e 20 61  safe to use in a
1a230 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 0a   multi-threaded.
1a240 2a 2a 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61  ** environment a
1a250 73 20 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f  s long as no two
1a260 20 74 68 72 65 61 64 73 20 61 74 74 65 6d 70 74   threads attempt
1a270 20 74 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65   to use the same
1a280 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
1a290 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20 74 68 65  nnection] at the
1a2a0 20 73 61 6d 65 20 74 69 6d 65 2e 20 20 5e 49 66   same time.  ^If
1a2b0 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
1a2c0 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20  led with.** the 
1a2d0 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
1a2e0 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45  FE | SQLITE_THRE
1a2f0 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c  ADSAFE=0] compil
1a300 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
1a310 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20  en.** it is not 
1a320 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 65 74 20  possible to set 
1a330 74 68 65 20 4d 75 6c 74 69 2d 74 68 72 65 61 64  the Multi-thread
1a340 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
1a350 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  ] and.** [sqlite
1a360 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c  3_config()] will
1a370 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
1a380 45 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64  ERROR] if called
1a390 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c   with the.** SQL
1a3a0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
1a3b0 54 48 52 45 41 44 20 63 6f 6e 66 69 67 75 72 61  THREAD configura
1a3c0 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64  tion option.</dd
1a3d0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1a3e0 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a  _CONFIG_SERIALIZ
1a3f0 45 44 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ED]] <dt>SQLITE_
1a400 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45  CONFIG_SERIALIZE
1a410 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  D</dt>.** <dd>Th
1a420 65 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d  ere are no argum
1a430 65 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74  ents to this opt
1a440 69 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69  ion.  ^This opti
1a450 6f 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b  on sets the.** [
1a460 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
1a470 74 6f 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 49  to Serialized. I
1a480 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74  n other words, t
1a490 68 69 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c  his option enabl
1a4a0 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65 78 65  es.** all mutexe
1a4b0 73 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20  s including the 
1a4c0 72 65 63 75 72 73 69 76 65 0a 2a 2a 20 6d 75 74  recursive.** mut
1a4d0 65 78 65 73 20 6f 6e 20 5b 64 61 74 61 62 61 73  exes on [databas
1a4e0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e  e connection] an
1a4f0 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  d [prepared stat
1a500 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74 73 2e 0a  ement] objects..
1a510 2a 2a 20 49 6e 20 74 68 69 73 20 6d 6f 64 65 20  ** In this mode 
1a520 28 77 68 69 63 68 20 69 73 20 74 68 65 20 64 65  (which is the de
1a530 66 61 75 6c 74 20 77 68 65 6e 20 53 51 4c 69 74  fault when SQLit
1a540 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1a550 74 68 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48  th.** [SQLITE_TH
1a560 52 45 41 44 53 41 46 45 3d 31 5d 29 20 74 68 65  READSAFE=1]) the
1a570 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
1a580 77 69 6c 6c 20 69 74 73 65 6c 66 20 73 65 72 69  will itself seri
1a590 61 6c 69 7a 65 20 61 63 63 65 73 73 0a 2a 2a 20  alize access.** 
1a5a0 74 6f 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  to [database con
1a5b0 6e 65 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70  nections] and [p
1a5c0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
1a5d0 74 73 5d 20 73 6f 20 74 68 61 74 20 74 68 65 0a  ts] so that the.
1a5e0 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  ** application i
1a5f0 73 20 66 72 65 65 20 74 6f 20 75 73 65 20 74 68  s free to use th
1a600 65 20 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65  e same [database
1a610 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 72 20   connection] or 
1a620 74 68 65 0a 2a 2a 20 73 61 6d 65 20 5b 70 72 65  the.** same [pre
1a630 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
1a640 20 69 6e 20 64 69 66 66 65 72 65 6e 74 20 74 68   in different th
1a650 72 65 61 64 73 20 61 74 20 74 68 65 20 73 61 6d  reads at the sam
1a660 65 20 74 69 6d 65 2e 0a 2a 2a 20 5e 49 66 20 53  e time..** ^If S
1a670 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1a680 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53  d with.** the [S
1a690 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1a6a0 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44   | SQLITE_THREAD
1a6b0 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d  SAFE=0] compile-
1a6c0 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e  time option then
1a6d0 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f  .** it is not po
1a6e0 73 73 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68  ssible to set th
1a6f0 65 20 53 65 72 69 61 6c 69 7a 65 64 20 5b 74 68  e Serialized [th
1a700 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 6e  reading mode] an
1a710 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  d.** [sqlite3_co
1a720 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74  nfig()] will ret
1a730 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  urn [SQLITE_ERRO
1a740 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74  R] if called wit
1a750 68 20 74 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f  h the.** SQLITE_
1a760 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45  CONFIG_SERIALIZE
1a770 44 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  D configuration 
1a780 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a  option.</dd>.**.
1a790 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1a7a0 49 47 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e  IG_MALLOC]] <dt>
1a7b0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
1a7c0 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LLOC</dt>.** <dd
1a7d0 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43  > ^(The SQLITE_C
1a7e0 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 20 6f 70 74  ONFIG_MALLOC opt
1a7f0 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1a800 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
1a810 68 20 69 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74  h is .** a point
1a820 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
1a830 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65  e of the [sqlite
1a840 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73  3_mem_methods] s
1a850 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65  tructure..** The
1a860 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66   argument specif
1a870 69 65 73 0a 2a 2a 20 61 6c 74 65 72 6e 61 74 69  ies.** alternati
1a880 76 65 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d  ve low-level mem
1a890 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72  ory allocation r
1a8a0 6f 75 74 69 6e 65 73 20 74 6f 20 62 65 20 75 73  outines to be us
1a8b0 65 64 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 2a  ed in place of.*
1a8c0 2a 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  * the memory all
1a8d0 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73  ocation routines
1a8e0 20 62 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69   built into SQLi
1a8f0 74 65 2e 29 5e 20 5e 53 51 4c 69 74 65 20 6d 61  te.)^ ^SQLite ma
1a900 6b 65 73 0a 2a 2a 20 69 74 73 20 6f 77 6e 20 70  kes.** its own p
1a910 72 69 76 61 74 65 20 63 6f 70 79 20 6f 66 20 74  rivate copy of t
1a920 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68  he content of th
1a930 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  e [sqlite3_mem_m
1a940 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72  ethods] structur
1a950 65 0a 2a 2a 20 62 65 66 6f 72 65 20 74 68 65 20  e.** before the 
1a960 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1a970 29 5d 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 2e  )] call returns.
1a980 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1a990 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
1a9a0 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49  ALLOC]] <dt>SQLI
1a9b0 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
1a9c0 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  LOC</dt>.** <dd>
1a9d0 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f   ^(The SQLITE_CO
1a9e0 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 20 6f  NFIG_GETMALLOC o
1a9f0 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1aa00 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68  ngle argument wh
1aa10 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e  ich.** is a poin
1aa20 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e  ter to an instan
1aa30 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  ce of the [sqlit
1aa40 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20  e3_mem_methods] 
1aa50 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68  structure..** Th
1aa60 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  e [sqlite3_mem_m
1aa70 65 74 68 6f 64 73 5d 0a 2a 2a 20 73 74 72 75 63  ethods].** struc
1aa80 74 75 72 65 20 69 73 20 66 69 6c 6c 65 64 20 77  ture is filled w
1aa90 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 6c  ith the currentl
1aaa0 79 20 64 65 66 69 6e 65 64 20 6d 65 6d 6f 72 79  y defined memory
1aab0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74   allocation rout
1aac0 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20  ines.)^.** This 
1aad0 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  option can be us
1aae0 65 64 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74  ed to overload t
1aaf0 68 65 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72  he default memor
1ab00 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20  y allocation.** 
1ab10 72 6f 75 74 69 6e 65 73 20 77 69 74 68 20 61 20  routines with a 
1ab20 77 72 61 70 70 65 72 20 74 68 61 74 20 73 69 6d  wrapper that sim
1ab30 75 6c 61 74 69 6f 6e 73 20 6d 65 6d 6f 72 79 20  ulations memory 
1ab40 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75  allocation failu
1ab50 72 65 20 6f 72 0a 2a 2a 20 74 72 61 63 6b 73 20  re or.** tracks 
1ab60 6d 65 6d 6f 72 79 20 75 73 61 67 65 2c 20 66 6f  memory usage, fo
1ab70 72 20 65 78 61 6d 70 6c 65 2e 20 3c 2f 64 64 3e  r example. </dd>
1ab80 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1ab90 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c  CONFIG_SMALL_MAL
1aba0 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  LOC]] <dt>SQLITE
1abb0 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41  _CONFIG_SMALL_MA
1abc0 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LLOC</dt>.** <dd
1abd0 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  > ^The SQLITE_CO
1abe0 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f  NFIG_SMALL_MALLO
1abf0 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 73  C option takes s
1ac00 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f  ingle argument o
1ac10 66 0a 2a 2a 20 74 79 70 65 20 69 6e 74 2c 20 69  f.** type int, i
1ac20 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20  nterpreted as a 
1ac30 62 6f 6f 6c 65 61 6e 2c 20 77 68 69 63 68 20 69  boolean, which i
1ac40 66 20 74 72 75 65 20 70 72 6f 76 69 64 65 73 20  f true provides 
1ac50 61 20 68 69 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c  a hint to.** SQL
1ac60 69 74 65 20 74 68 61 74 20 69 74 20 73 68 6f 75  ite that it shou
1ac70 6c 64 20 61 76 6f 69 64 20 6c 61 72 67 65 20 6d  ld avoid large m
1ac80 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
1ac90 73 20 69 66 20 70 6f 73 73 69 62 6c 65 2e 0a 2a  s if possible..*
1aca0 2a 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 72 75  * SQLite will ru
1acb0 6e 20 66 61 73 74 65 72 20 69 66 20 69 74 20 69  n faster if it i
1acc0 73 20 66 72 65 65 20 74 6f 20 6d 61 6b 65 20 6c  s free to make l
1acd0 61 72 67 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  arge memory allo
1ace0 63 61 74 69 6f 6e 73 2c 0a 2a 2a 20 62 75 74 20  cations,.** but 
1acf0 73 6f 6d 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  some application
1ad00 20 6d 69 67 68 74 20 70 72 65 66 65 72 20 74 6f   might prefer to
1ad10 20 72 75 6e 20 73 6c 6f 77 65 72 20 69 6e 20 65   run slower in e
1ad20 78 63 68 61 6e 67 65 20 66 6f 72 0a 2a 2a 20 67  xchange for.** g
1ad30 75 61 72 61 6e 74 65 65 73 20 61 62 6f 75 74 20  uarantees about 
1ad40 6d 65 6d 6f 72 79 20 66 72 61 67 6d 65 6e 74 61  memory fragmenta
1ad50 74 69 6f 6e 20 74 68 61 74 20 61 72 65 20 70 6f  tion that are po
1ad60 73 73 69 62 6c 65 20 69 66 20 6c 61 72 67 65 0a  ssible if large.
1ad70 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61  ** allocations a
1ad80 72 65 20 61 76 6f 69 64 65 64 2e 20 20 54 68 69  re avoided.  Thi
1ad90 73 20 68 69 6e 74 20 69 73 20 6e 6f 72 6d 61 6c  s hint is normal
1ada0 6c 79 20 6f 66 66 2e 0a 2a 2a 20 3c 2f 64 64 3e  ly off..** </dd>
1adb0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1adc0 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
1add0 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1ade0 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 3c 2f  NFIG_MEMSTATUS</
1adf0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65  dt>.** <dd> ^The
1ae00 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1ae10 45 4d 53 54 41 54 55 53 20 6f 70 74 69 6f 6e 20  EMSTATUS option 
1ae20 74 61 6b 65 73 20 73 69 6e 67 6c 65 20 61 72 67  takes single arg
1ae30 75 6d 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e  ument of type in
1ae40 74 2c 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 65  t,.** interprete
1ae50 64 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20  d as a boolean, 
1ae60 77 68 69 63 68 20 65 6e 61 62 6c 65 73 20 6f 72  which enables or
1ae70 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 63 6f   disables the co
1ae80 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a 2a 2a 20 6d  llection of.** m
1ae90 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
1aea0 20 73 74 61 74 69 73 74 69 63 73 2e 20 5e 28 57   statistics. ^(W
1aeb0 68 65 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  hen memory alloc
1aec0 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73  ation statistics
1aed0 20 61 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64   are.** disabled
1aee0 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  , the following 
1aef0 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
1af00 73 20 62 65 63 6f 6d 65 20 6e 6f 6e 2d 6f 70 65  s become non-ope
1af10 72 61 74 69 6f 6e 61 6c 3a 0a 2a 2a 20 20 20 3c  rational:.**   <
1af20 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73  ul>.**   <li> [s
1af30 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
1af40 65 64 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20  ed()].**   <li> 
1af50 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
1af60 68 69 67 68 77 61 74 65 72 28 29 5d 0a 2a 2a 20  highwater()].** 
1af70 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
1af80 73 6f 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 36  soft_heap_limit6
1af90 34 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b  4()].**   <li> [
1afa0 73 71 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34  sqlite3_status64
1afb0 28 29 5d 0a 2a 2a 20 20 20 3c 2f 75 6c 3e 29 5e  ()].**   </ul>)^
1afc0 0a 2a 2a 20 5e 4d 65 6d 6f 72 79 20 61 6c 6c 6f  .** ^Memory allo
1afd0 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63  cation statistic
1afe0 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79  s are enabled by
1aff0 20 64 65 66 61 75 6c 74 20 75 6e 6c 65 73 73 20   default unless 
1b000 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d  SQLite is.** com
1b010 70 69 6c 65 64 20 77 69 74 68 20 5b 53 51 4c 49  piled with [SQLI
1b020 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54  TE_DEFAULT_MEMST
1b030 41 54 55 53 5d 3d 30 20 69 6e 20 77 68 69 63 68  ATUS]=0 in which
1b040 20 63 61 73 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20   case memory.** 
1b050 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69  allocation stati
1b060 73 74 69 63 73 20 61 72 65 20 64 69 73 61 62 6c  stics are disabl
1b070 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a  ed by default..*
1b080 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
1b090 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43  SQLITE_CONFIG_SC
1b0a0 52 41 54 43 48 5d 5d 20 3c 64 74 3e 53 51 4c 49  RATCH]] <dt>SQLI
1b0b0 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43  TE_CONFIG_SCRATC
1b0c0 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54  H</dt>.** <dd> T
1b0d0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1b0e0 5f 53 43 52 41 54 43 48 20 6f 70 74 69 6f 6e 20  _SCRATCH option 
1b0f0 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65  is no longer use
1b100 64 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  d..** </dd>.**.*
1b110 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1b120 47 5f 50 41 47 45 43 41 43 48 45 5d 5d 20 3c 64  G_PAGECACHE]] <d
1b130 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1b140 50 41 47 45 43 41 43 48 45 3c 2f 64 74 3e 0a 2a  PAGECACHE</dt>.*
1b150 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49  * <dd> ^The SQLI
1b160 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41  TE_CONFIG_PAGECA
1b170 43 48 45 20 6f 70 74 69 6f 6e 20 73 70 65 63 69  CHE option speci
1b180 66 69 65 73 20 61 20 6d 65 6d 6f 72 79 20 70 6f  fies a memory po
1b190 6f 6c 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69 74  ol.** that SQLit
1b1a0 65 20 63 61 6e 20 75 73 65 20 66 6f 72 20 74 68  e can use for th
1b1b0 65 20 64 61 74 61 62 61 73 65 20 70 61 67 65 20  e database page 
1b1c0 63 61 63 68 65 20 77 69 74 68 20 74 68 65 20 64  cache with the d
1b1d0 65 66 61 75 6c 74 20 70 61 67 65 0a 2a 2a 20 63  efault page.** c
1b1e0 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ache implementat
1b1f0 69 6f 6e 2e 20 20 0a 2a 2a 20 54 68 69 73 20 63  ion.  .** This c
1b200 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1b210 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20 69  ion is a no-op i
1b220 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
1b230 2d 64 65 66 69 6e 65 20 70 61 67 65 0a 2a 2a 20  -define page.** 
1b240 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  cache implementa
1b250 74 69 6f 6e 20 69 73 20 6c 6f 61 64 65 64 20 75  tion is loaded u
1b260 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45  sing the [SQLITE
1b270 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 5d  _CONFIG_PCACHE2]
1b280 2e 0a 2a 2a 20 5e 54 68 65 72 65 20 61 72 65 20  ..** ^There are 
1b290 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73 20  three arguments 
1b2a0 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  to SQLITE_CONFIG
1b2b0 5f 50 41 47 45 43 41 43 48 45 3a 20 41 20 70 6f  _PAGECACHE: A po
1b2c0 69 6e 74 65 72 20 74 6f 0a 2a 2a 20 38 2d 62 79  inter to.** 8-by
1b2d0 74 65 20 61 6c 69 67 6e 65 64 20 6d 65 6d 6f 72  te aligned memor
1b2e0 79 20 28 70 4d 65 6d 29 2c 20 74 68 65 20 73 69  y (pMem), the si
1b2f0 7a 65 20 6f 66 20 65 61 63 68 20 70 61 67 65 20  ze of each page 
1b300 63 61 63 68 65 20 6c 69 6e 65 20 28 73 7a 29 2c  cache line (sz),
1b310 0a 2a 2a 20 61 6e 64 20 74 68 65 20 6e 75 6d 62  .** and the numb
1b320 65 72 20 6f 66 20 63 61 63 68 65 20 6c 69 6e 65  er of cache line
1b330 73 20 28 4e 29 2e 0a 2a 2a 20 54 68 65 20 73 7a  s (N)..** The sz
1b340 20 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64   argument should
1b350 20 62 65 20 74 68 65 20 73 69 7a 65 20 6f 66 20   be the size of 
1b360 74 68 65 20 6c 61 72 67 65 73 74 20 64 61 74 61  the largest data
1b370 62 61 73 65 20 70 61 67 65 0a 2a 2a 20 28 61 20  base page.** (a 
1b380 70 6f 77 65 72 20 6f 66 20 74 77 6f 20 62 65 74  power of two bet
1b390 77 65 65 6e 20 35 31 32 20 61 6e 64 20 36 35 35  ween 512 and 655
1b3a0 33 36 29 20 70 6c 75 73 20 73 6f 6d 65 20 65 78  36) plus some ex
1b3b0 74 72 61 20 62 79 74 65 73 20 66 6f 72 20 65 61  tra bytes for ea
1b3c0 63 68 0a 2a 2a 20 70 61 67 65 20 68 65 61 64 65  ch.** page heade
1b3d0 72 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65 72 20  r.  ^The number 
1b3e0 6f 66 20 65 78 74 72 61 20 62 79 74 65 73 20 6e  of extra bytes n
1b3f0 65 65 64 65 64 20 62 79 20 74 68 65 20 70 61 67  eeded by the pag
1b400 65 20 68 65 61 64 65 72 0a 2a 2a 20 63 61 6e 20  e header.** can 
1b410 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 75 73  be determined us
1b420 69 6e 67 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ing [SQLITE_CONF
1b430 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 5d  IG_PCACHE_HDRSZ]
1b440 2e 0a 2a 2a 20 5e 49 74 20 69 73 20 68 61 72 6d  ..** ^It is harm
1b450 6c 65 73 73 2c 20 61 70 61 72 74 20 66 72 6f 6d  less, apart from
1b460 20 74 68 65 20 77 61 73 74 65 64 20 6d 65 6d 6f   the wasted memo
1b470 72 79 2c 0a 2a 2a 20 66 6f 72 20 74 68 65 20 73  ry,.** for the s
1b480 7a 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 62  z parameter to b
1b490 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 6e 65  e larger than ne
1b4a0 63 65 73 73 61 72 79 2e 20 20 54 68 65 20 70 4d  cessary.  The pM
1b4b0 65 6d 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 6d  em.** argument m
1b4c0 75 73 74 20 62 65 20 65 69 74 68 65 72 20 61 20  ust be either a 
1b4d0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72 20  NULL pointer or 
1b4e0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
1b4f0 38 2d 62 79 74 65 0a 2a 2a 20 61 6c 69 67 6e 65  8-byte.** aligne
1b500 64 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72  d block of memor
1b510 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20 73 7a  y of at least sz
1b520 2a 4e 20 62 79 74 65 73 2c 20 6f 74 68 65 72 77  *N bytes, otherw
1b530 69 73 65 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e  ise.** subsequen
1b540 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  t behavior is un
1b550 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 5e 57 68 65  defined..** ^Whe
1b560 6e 20 70 4d 65 6d 20 69 73 20 6e 6f 74 20 4e 55  n pMem is not NU
1b570 4c 4c 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  LL, SQLite will 
1b580 73 74 72 69 76 65 20 74 6f 20 75 73 65 20 74 68  strive to use th
1b590 65 20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64 65  e memory provide
1b5a0 64 0a 2a 2a 20 74 6f 20 73 61 74 69 73 66 79 20  d.** to satisfy 
1b5b0 70 61 67 65 20 63 61 63 68 65 20 6e 65 65 64 73  page cache needs
1b5c0 2c 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20 74  , falling back t
1b5d0 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  o [sqlite3_mallo
1b5e0 63 28 29 5d 20 69 66 0a 2a 2a 20 61 20 70 61 67  c()] if.** a pag
1b5f0 65 20 63 61 63 68 65 20 6c 69 6e 65 20 69 73 20  e cache line is 
1b600 6c 61 72 67 65 72 20 74 68 61 6e 20 73 7a 20 62  larger than sz b
1b610 79 74 65 73 20 6f 72 20 69 66 20 61 6c 6c 20 6f  ytes or if all o
1b620 66 20 74 68 65 20 70 4d 65 6d 20 62 75 66 66 65  f the pMem buffe
1b630 72 0a 2a 2a 20 69 73 20 65 78 68 61 75 73 74 65  r.** is exhauste
1b640 64 2e 0a 2a 2a 20 5e 49 66 20 70 4d 65 6d 20 69  d..** ^If pMem i
1b650 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73 20  s NULL and N is 
1b660 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 65  non-zero, then e
1b670 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ach database con
1b680 6e 65 63 74 69 6f 6e 0a 2a 2a 20 64 6f 65 73 20  nection.** does 
1b690 61 6e 20 69 6e 69 74 69 61 6c 20 62 75 6c 6b 20  an initial bulk 
1b6a0 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 6f 72 20 70  allocation for p
1b6b0 61 67 65 20 63 61 63 68 65 20 6d 65 6d 6f 72 79  age cache memory
1b6c0 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  .** from [sqlite
1b6d0 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73 75 66 66  3_malloc()] suff
1b6e0 69 63 69 65 6e 74 20 66 6f 72 20 4e 20 63 61 63  icient for N cac
1b6f0 68 65 20 6c 69 6e 65 73 20 69 66 20 4e 20 69 73  he lines if N is
1b700 20 70 6f 73 69 74 69 76 65 20 6f 72 0a 2a 2a 20   positive or.** 
1b710 6f 66 20 2d 31 30 32 34 2a 4e 20 62 79 74 65 73  of -1024*N bytes
1b720 20 69 66 20 4e 20 69 73 20 6e 65 67 61 74 69 76   if N is negativ
1b730 65 2c 20 2e 20 5e 49 66 20 61 64 64 69 74 69 6f  e, . ^If additio
1b740 6e 61 6c 0a 2a 2a 20 70 61 67 65 20 63 61 63 68  nal.** page cach
1b750 65 20 6d 65 6d 6f 72 79 20 69 73 20 6e 65 65 64  e memory is need
1b760 65 64 20 62 65 79 6f 6e 64 20 77 68 61 74 20 69  ed beyond what i
1b770 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68  s provided by th
1b780 65 20 69 6e 69 74 69 61 6c 0a 2a 2a 20 61 6c 6c  e initial.** all
1b790 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e 20 53 51  ocation, then SQ
1b7a0 4c 69 74 65 20 67 6f 65 73 20 74 6f 20 5b 73 71  Lite goes to [sq
1b7b0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
1b7c0 73 65 70 61 72 61 74 65 6c 79 20 66 6f 72 20 65  separately for e
1b7d0 61 63 68 0a 2a 2a 20 61 64 64 69 74 69 6f 6e 61  ach.** additiona
1b7e0 6c 20 63 61 63 68 65 20 6c 69 6e 65 2e 20 3c 2f  l cache line. </
1b7f0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1b800 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d 5d  TE_CONFIG_HEAP]]
1b810 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1b820 49 47 5f 48 45 41 50 3c 2f 64 74 3e 0a 2a 2a 20  IG_HEAP</dt>.** 
1b830 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45  <dd> ^The SQLITE
1b840 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 6f 70 74  _CONFIG_HEAP opt
1b850 69 6f 6e 20 73 70 65 63 69 66 69 65 73 20 61 20  ion specifies a 
1b860 73 74 61 74 69 63 20 6d 65 6d 6f 72 79 20 62 75  static memory bu
1b870 66 66 65 72 20 0a 2a 2a 20 74 68 61 74 20 53 51  ffer .** that SQ
1b880 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20 66 6f  Lite will use fo
1b890 72 20 61 6c 6c 20 6f 66 20 69 74 73 20 64 79 6e  r all of its dyn
1b8a0 61 6d 69 63 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  amic memory allo
1b8b0 63 61 74 69 6f 6e 20 6e 65 65 64 73 0a 2a 2a 20  cation needs.** 
1b8c0 62 65 79 6f 6e 64 20 74 68 6f 73 65 20 70 72 6f  beyond those pro
1b8d0 76 69 64 65 64 20 66 6f 72 20 62 79 20 5b 53 51  vided for by [SQ
1b8e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
1b8f0 43 41 43 48 45 5d 2e 0a 2a 2a 20 5e 54 68 65 20  CACHE]..** ^The 
1b900 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
1b910 41 50 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c  AP option is onl
1b920 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 53  y available if S
1b930 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1b940 64 0a 2a 2a 20 77 69 74 68 20 65 69 74 68 65 72  d.** with either
1b950 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
1b960 4d 45 4d 53 59 53 33 5d 20 6f 72 20 5b 53 51 4c  MEMSYS3] or [SQL
1b970 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
1b980 53 35 5d 20 61 6e 64 20 72 65 74 75 72 6e 73 0a  S5] and returns.
1b990 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52  ** [SQLITE_ERROR
1b9a0 5d 20 69 66 20 69 6e 76 6f 6b 65 64 20 6f 74 68  ] if invoked oth
1b9b0 65 72 77 69 73 65 2e 0a 2a 2a 20 5e 54 68 65 72  erwise..** ^Ther
1b9c0 65 20 61 72 65 20 74 68 72 65 65 20 61 72 67 75  e are three argu
1b9d0 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49 54 45 5f  ments to SQLITE_
1b9e0 43 4f 4e 46 49 47 5f 48 45 41 50 3a 0a 2a 2a 20  CONFIG_HEAP:.** 
1b9f0 41 6e 20 38 2d 62 79 74 65 20 61 6c 69 67 6e 65  An 8-byte aligne
1ba00 64 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  d pointer to the
1ba10 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 74 68 65 20   memory,.** the 
1ba20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
1ba30 69 6e 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 75  in the memory bu
1ba40 66 66 65 72 2c 20 61 6e 64 20 74 68 65 20 6d 69  ffer, and the mi
1ba50 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e  nimum allocation
1ba60 20 73 69 7a 65 2e 0a 2a 2a 20 5e 49 66 20 74 68   size..** ^If th
1ba70 65 20 66 69 72 73 74 20 70 6f 69 6e 74 65 72 20  e first pointer 
1ba80 28 74 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69 6e  (the memory poin
1ba90 74 65 72 29 20 69 73 20 4e 55 4c 4c 2c 20 74 68  ter) is NULL, th
1baa0 65 6e 20 53 51 4c 69 74 65 20 72 65 76 65 72 74  en SQLite revert
1bab0 73 0a 2a 2a 20 74 6f 20 75 73 69 6e 67 20 69 74  s.** to using it
1bac0 73 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  s default memory
1bad0 20 61 6c 6c 6f 63 61 74 6f 72 20 28 74 68 65 20   allocator (the 
1bae0 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20  system malloc() 
1baf0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 29 2c  implementation),
1bb00 0a 2a 2a 20 75 6e 64 6f 69 6e 67 20 61 6e 79 20  .** undoing any 
1bb10 70 72 69 6f 72 20 69 6e 76 6f 63 61 74 69 6f 6e  prior invocation
1bb20 20 6f 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   of [SQLITE_CONF
1bb30 49 47 5f 4d 41 4c 4c 4f 43 5d 2e 20 20 5e 49 66  IG_MALLOC].  ^If
1bb40 20 74 68 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 70   the.** memory p
1bb50 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e 55  ointer is not NU
1bb60 4c 4c 20 74 68 65 6e 20 74 68 65 20 61 6c 74 65  LL then the alte
1bb70 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0a 2a  rnative memory.*
1bb80 2a 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 65  * allocator is e
1bb90 6e 67 61 67 65 64 20 74 6f 20 68 61 6e 64 6c 65  ngaged to handle
1bba0 20 61 6c 6c 20 6f 66 20 53 51 4c 69 74 65 73 20   all of SQLites 
1bbb0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1bbc0 6e 20 6e 65 65 64 73 2e 0a 2a 2a 20 54 68 65 20  n needs..** The 
1bbd0 66 69 72 73 74 20 70 6f 69 6e 74 65 72 20 28 74  first pointer (t
1bbe0 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65  he memory pointe
1bbf0 72 29 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e  r) must be align
1bc00 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a  ed to an 8-byte.
1bc10 2a 2a 20 62 6f 75 6e 64 61 72 79 20 6f 72 20 73  ** boundary or s
1bc20 75 62 73 65 71 75 65 6e 74 20 62 65 68 61 76 69  ubsequent behavi
1bc30 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c  or of SQLite wil
1bc40 6c 20 62 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a  l be undefined..
1bc50 2a 2a 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 61  ** The minimum a
1bc60 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 69  llocation size i
1bc70 73 20 63 61 70 70 65 64 20 61 74 20 32 2a 2a 31  s capped at 2**1
1bc80 32 2e 20 52 65 61 73 6f 6e 61 62 6c 65 20 76 61  2. Reasonable va
1bc90 6c 75 65 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20  lues.** for the 
1bca0 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69  minimum allocati
1bcb0 6f 6e 20 73 69 7a 65 20 61 72 65 20 32 2a 2a 35  on size are 2**5
1bcc0 20 74 68 72 6f 75 67 68 20 32 2a 2a 38 2e 3c 2f   through 2**8.</
1bcd0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1bce0 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 5d  TE_CONFIG_MUTEX]
1bcf0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1bd00 46 49 47 5f 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a  FIG_MUTEX</dt>.*
1bd10 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1bd20 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
1bd30 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
1bd40 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20  single argument 
1bd50 77 68 69 63 68 20 69 73 20 61 0a 2a 2a 20 70 6f  which is a.** po
1bd60 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
1bd70 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c  ance of the [sql
1bd80 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1bd90 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a  ds] structure..*
1bda0 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 73  * The argument s
1bdb0 70 65 63 69 66 69 65 73 20 61 6c 74 65 72 6e 61  pecifies alterna
1bdc0 74 69 76 65 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d  tive low-level m
1bdd0 75 74 65 78 20 72 6f 75 74 69 6e 65 73 20 74 6f  utex routines to
1bde0 20 62 65 20 75 73 65 64 0a 2a 2a 20 69 6e 20 70   be used.** in p
1bdf0 6c 61 63 65 20 74 68 65 20 6d 75 74 65 78 20 72  lace the mutex r
1be00 6f 75 74 69 6e 65 73 20 62 75 69 6c 74 20 69 6e  outines built in
1be10 74 6f 20 53 51 4c 69 74 65 2e 29 5e 20 20 5e 53  to SQLite.)^  ^S
1be20 51 4c 69 74 65 20 6d 61 6b 65 73 20 61 20 63 6f  QLite makes a co
1be30 70 79 20 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e  py of.** the con
1be40 74 65 6e 74 20 6f 66 20 74 68 65 20 5b 73 71 6c  tent of the [sql
1be50 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1be60 64 73 5d 20 73 74 72 75 63 74 75 72 65 20 62 65  ds] structure be
1be70 66 6f 72 65 20 74 68 65 20 63 61 6c 6c 20 74 6f  fore the call to
1be80 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
1be90 66 69 67 28 29 5d 20 72 65 74 75 72 6e 73 2e 20  fig()] returns. 
1bea0 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1beb0 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74  mpiled with.** t
1bec0 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
1bed0 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54  DSAFE | SQLITE_T
1bee0 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d  HREADSAFE=0] com
1bef0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1bf00 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74   then.** the ent
1bf10 69 72 65 20 6d 75 74 65 78 69 6e 67 20 73 75 62  ire mutexing sub
1bf20 73 79 73 74 65 6d 20 69 73 20 6f 6d 69 74 74 65  system is omitte
1bf30 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
1bf40 20 61 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c 73   and hence calls
1bf50 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
1bf60 63 6f 6e 66 69 67 28 29 5d 20 77 69 74 68 20 74  config()] with t
1bf70 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1bf80 5f 4d 55 54 45 58 20 63 6f 6e 66 69 67 75 72 61  _MUTEX configura
1bf90 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c  tion option will
1bfa0 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  .** return [SQLI
1bfb0 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a  TE_ERROR].</dd>.
1bfc0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1bfd0 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 5d 5d  ONFIG_GETMUTEX]]
1bfe0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1bff0 49 47 5f 47 45 54 4d 55 54 45 58 3c 2f 64 74 3e  IG_GETMUTEX</dt>
1c000 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
1c010 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1c020 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20 74 61 6b  MUTEX option tak
1c030 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
1c040 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73  ment which.** is
1c050 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1c060 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
1c070 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f   [sqlite3_mutex_
1c080 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75  methods] structu
1c090 72 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c  re.  The.** [sql
1c0a0 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1c0b0 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  ds].** structure
1c0c0 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20   is filled with 
1c0d0 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65  the currently de
1c0e0 66 69 6e 65 64 20 6d 75 74 65 78 20 72 6f 75 74  fined mutex rout
1c0f0 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20  ines.)^.** This 
1c100 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  option can be us
1c110 65 64 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74  ed to overload t
1c120 68 65 20 64 65 66 61 75 6c 74 20 6d 75 74 65 78  he default mutex
1c130 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72   allocation.** r
1c140 6f 75 74 69 6e 65 73 20 77 69 74 68 20 61 20 77  outines with a w
1c150 72 61 70 70 65 72 20 75 73 65 64 20 74 6f 20 74  rapper used to t
1c160 72 61 63 6b 20 6d 75 74 65 78 20 75 73 61 67 65  rack mutex usage
1c170 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65   for performance
1c180 0a 2a 2a 20 70 72 6f 66 69 6c 69 6e 67 20 6f 72  .** profiling or
1c190 20 74 65 73 74 69 6e 67 2c 20 66 6f 72 20 65 78   testing, for ex
1c1a0 61 6d 70 6c 65 2e 20 20 20 5e 49 66 20 53 51 4c  ample.   ^If SQL
1c1b0 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
1c1c0 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
1c1d0 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
1c1e0 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1c1f0 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
1c200 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
1c210 2a 20 74 68 65 20 65 6e 74 69 72 65 20 6d 75 74  * the entire mut
1c220 65 78 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20  exing subsystem 
1c230 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
1c240 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 68 65  the build and he
1c250 6e 63 65 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20  nce calls to.** 
1c260 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1c270 29 5d 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  )] with the SQLI
1c280 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54  TE_CONFIG_GETMUT
1c290 45 58 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  EX configuration
1c2a0 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20   option will.** 
1c2b0 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45  return [SQLITE_E
1c2c0 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  RROR].</dd>.**.*
1c2d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1c2e0 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 5d 20 3c 64  G_LOOKASIDE]] <d
1c2f0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1c300 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a 2a  LOOKASIDE</dt>.*
1c310 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1c320 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  ITE_CONFIG_LOOKA
1c330 53 49 44 45 20 6f 70 74 69 6f 6e 20 74 61 6b 65  SIDE option take
1c340 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20  s two arguments 
1c350 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 0a 2a  that determine.*
1c360 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69  * the default si
1c370 7a 65 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20  ze of lookaside 
1c380 6d 65 6d 6f 72 79 20 6f 6e 20 65 61 63 68 20 5b  memory on each [
1c390 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1c3a0 69 6f 6e 5d 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ion]..** The fir
1c3b0 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  st argument is t
1c3c0 68 65 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61  he.** size of ea
1c3d0 63 68 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66  ch lookaside buf
1c3e0 66 65 72 20 73 6c 6f 74 20 61 6e 64 20 74 68 65  fer slot and the
1c3f0 20 73 65 63 6f 6e 64 20 69 73 20 74 68 65 20 6e   second is the n
1c400 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74  umber of.** slot
1c410 73 20 61 6c 6c 6f 63 61 74 65 64 20 74 6f 20 65  s allocated to e
1c420 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ach database con
1c430 6e 65 63 74 69 6f 6e 2e 29 5e 20 20 5e 28 53 51  nection.)^  ^(SQ
1c440 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b  LITE_CONFIG_LOOK
1c450 41 53 49 44 45 0a 2a 2a 20 73 65 74 73 20 74 68  ASIDE.** sets th
1c460 65 20 3c 69 3e 64 65 66 61 75 6c 74 3c 2f 69 3e  e <i>default</i>
1c470 20 6c 6f 6f 6b 61 73 69 64 65 20 73 69 7a 65 2e   lookaside size.
1c480 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 44 42 43   The [SQLITE_DBC
1c490 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d  ONFIG_LOOKASIDE]
1c4a0 0a 2a 2a 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  .** option to [s
1c4b0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
1c4c0 28 29 5d 20 63 61 6e 20 62 65 20 75 73 65 64 20  ()] can be used 
1c4d0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6c 6f  to change the lo
1c4e0 6f 6b 61 73 69 64 65 0a 2a 2a 20 63 6f 6e 66 69  okaside.** confi
1c4f0 67 75 72 61 74 69 6f 6e 20 6f 6e 20 69 6e 64 69  guration on indi
1c500 76 69 64 75 61 6c 20 63 6f 6e 6e 65 63 74 69 6f  vidual connectio
1c510 6e 73 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  ns.)^ </dd>.**.*
1c520 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1c530 47 5f 50 43 41 43 48 45 32 5d 5d 20 3c 64 74 3e  G_PCACHE2]] <dt>
1c540 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1c550 41 43 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ACHE2</dt>.** <d
1c560 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  d> ^(The SQLITE_
1c570 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 20 6f  CONFIG_PCACHE2 o
1c580 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1c590 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68  ngle argument wh
1c5a0 69 63 68 20 69 73 20 0a 2a 2a 20 61 20 70 6f 69  ich is .** a poi
1c5b0 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69  nter to an [sqli
1c5c0 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1c5d0 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20 20 54 68  ds2] object.  Th
1c5e0 69 73 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66  is object specif
1c5f0 69 65 73 0a 2a 2a 20 74 68 65 20 69 6e 74 65 72  ies.** the inter
1c600 66 61 63 65 20 74 6f 20 61 20 63 75 73 74 6f 6d  face to a custom
1c610 20 70 61 67 65 20 63 61 63 68 65 20 69 6d 70 6c   page cache impl
1c620 65 6d 65 6e 74 61 74 69 6f 6e 2e 29 5e 0a 2a 2a  ementation.)^.**
1c630 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 61   ^SQLite makes a
1c640 20 63 6f 70 79 20 6f 66 20 74 68 65 20 5b 73 71   copy of the [sq
1c650 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
1c660 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e 3c 2f  hods2] object.</
1c670 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1c680 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41  TE_CONFIG_GETPCA
1c690 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  CHE2]] <dt>SQLIT
1c6a0 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1c6b0 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  HE2</dt>.** <dd>
1c6c0 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f   ^(The SQLITE_CO
1c6d0 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 20  NFIG_GETPCACHE2 
1c6e0 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1c6f0 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77  ingle argument w
1c700 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69  hich.** is a poi
1c710 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69  nter to an [sqli
1c720 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1c730 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20 20 53 51  ds2] object.  SQ
1c740 4c 69 74 65 20 63 6f 70 69 65 73 20 6f 66 0a 2a  Lite copies of.*
1c750 2a 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61  * the current pa
1c760 67 65 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65  ge cache impleme
1c770 6e 74 61 74 69 6f 6e 20 69 6e 74 6f 20 74 68 61  ntation into tha
1c780 74 20 6f 62 6a 65 63 74 2e 29 5e 20 3c 2f 64 64  t object.)^ </dd
1c790 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1c7a0 5f 43 4f 4e 46 49 47 5f 4c 4f 47 5d 5d 20 3c 64  _CONFIG_LOG]] <d
1c7b0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1c7c0 4c 4f 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  LOG</dt>.** <dd>
1c7d0 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46   The SQLITE_CONF
1c7e0 49 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 69 73  IG_LOG option is
1c7f0 20 75 73 65 64 20 74 6f 20 63 6f 6e 66 69 67 75   used to configu
1c800 72 65 20 74 68 65 20 53 51 4c 69 74 65 0a 2a 2a  re the SQLite.**
1c810 20 67 6c 6f 62 61 6c 20 5b 65 72 72 6f 72 20 6c   global [error l
1c820 6f 67 5d 2e 0a 2a 2a 20 28 5e 54 68 65 20 53 51  og]..** (^The SQ
1c830 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20  LITE_CONFIG_LOG 
1c840 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 74 77 6f  option takes two
1c850 20 61 72 67 75 6d 65 6e 74 73 3a 20 61 20 70 6f   arguments: a po
1c860 69 6e 74 65 72 20 74 6f 20 61 0a 2a 2a 20 66 75  inter to a.** fu
1c870 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 20 63 61  nction with a ca
1c880 6c 6c 20 73 69 67 6e 61 74 75 72 65 20 6f 66 20  ll signature of 
1c890 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 69 6e  void(*)(void*,in
1c8a0 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20  t,const char*), 
1c8b0 0a 2a 2a 20 61 6e 64 20 61 20 70 6f 69 6e 74 65  .** and a pointe
1c8c0 72 20 74 6f 20 76 6f 69 64 2e 20 5e 49 66 20 74  r to void. ^If t
1c8d0 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  he function poin
1c8e0 74 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c  ter is not NULL,
1c8f0 20 69 74 20 69 73 0a 2a 2a 20 69 6e 76 6f 6b 65   it is.** invoke
1c900 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  d by [sqlite3_lo
1c910 67 28 29 5d 20 74 6f 20 70 72 6f 63 65 73 73 20  g()] to process 
1c920 65 61 63 68 20 6c 6f 67 67 69 6e 67 20 65 76 65  each logging eve
1c930 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20  nt.  ^If the.** 
1c940 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
1c950 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 20 5b 73   is NULL, the [s
1c960 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 69 6e  qlite3_log()] in
1c970 74 65 72 66 61 63 65 20 62 65 63 6f 6d 65 73 20  terface becomes 
1c980 61 20 6e 6f 2d 6f 70 2e 0a 2a 2a 20 5e 54 68 65  a no-op..** ^The
1c990 20 76 6f 69 64 20 70 6f 69 6e 74 65 72 20 74 68   void pointer th
1c9a0 61 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64  at is the second
1c9b0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 53 51 4c   argument to SQL
1c9c0 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 69  ITE_CONFIG_LOG i
1c9d0 73 0a 2a 2a 20 70 61 73 73 65 64 20 74 68 72 6f  s.** passed thro
1c9e0 75 67 68 20 61 73 20 74 68 65 20 66 69 72 73 74  ugh as the first
1c9f0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
1ca00 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  e application-de
1ca10 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a 20  fined logger.** 
1ca20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 65 76 65  function wheneve
1ca30 72 20 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 20  r that function 
1ca40 69 73 20 69 6e 76 6f 6b 65 64 2e 20 20 5e 54 68  is invoked.  ^Th
1ca50 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
1ca60 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20 6c 6f 67  er to.** the log
1ca70 67 65 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ger function is 
1ca80 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
1ca90 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rst parameter to
1caa0 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
1cab0 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6c  ng.** [sqlite3_l
1cac0 6f 67 28 29 5d 20 63 61 6c 6c 20 61 6e 64 20 69  og()] call and i
1cad0 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65  s intended to be
1cae0 20 61 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d   a [result code]
1caf0 20 6f 72 20 61 6e 0a 2a 2a 20 5b 65 78 74 65 6e   or an.** [exten
1cb00 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d  ded result code]
1cb10 2e 20 20 5e 54 68 65 20 74 68 69 72 64 20 70 61  .  ^The third pa
1cb20 72 61 6d 65 74 65 72 20 70 61 73 73 65 64 20 74  rameter passed t
1cb30 6f 20 74 68 65 20 6c 6f 67 67 65 72 20 69 73 0a  o the logger is.
1cb40 2a 2a 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 61  ** log message a
1cb50 66 74 65 72 20 66 6f 72 6d 61 74 74 69 6e 67 20  fter formatting 
1cb60 76 69 61 20 5b 73 71 6c 69 74 65 33 5f 73 6e 70  via [sqlite3_snp
1cb70 72 69 6e 74 66 28 29 5d 2e 0a 2a 2a 20 54 68 65  rintf()]..** The
1cb80 20 53 51 4c 69 74 65 20 6c 6f 67 67 69 6e 67 20   SQLite logging 
1cb90 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74  interface is not
1cba0 20 72 65 65 6e 74 72 61 6e 74 3b 20 74 68 65 20   reentrant; the 
1cbb0 6c 6f 67 67 65 72 20 66 75 6e 63 74 69 6f 6e 0a  logger function.
1cbc0 2a 2a 20 73 75 70 70 6c 69 65 64 20 62 79 20 74  ** supplied by t
1cbd0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
1cbe0 75 73 74 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 61  ust not invoke a
1cbf0 6e 79 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  ny SQLite interf
1cc00 61 63 65 2e 0a 2a 2a 20 49 6e 20 61 20 6d 75 6c  ace..** In a mul
1cc10 74 69 2d 74 68 72 65 61 64 65 64 20 61 70 70 6c  ti-threaded appl
1cc20 69 63 61 74 69 6f 6e 2c 20 74 68 65 20 61 70 70  ication, the app
1cc30 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
1cc40 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75 6e 63 74   logger.** funct
1cc50 69 6f 6e 20 6d 75 73 74 20 62 65 20 74 68 72 65  ion must be thre
1cc60 61 64 73 61 66 65 2e 20 3c 2f 64 64 3e 0a 2a 2a  adsafe. </dd>.**
1cc70 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1cc80 46 49 47 5f 55 52 49 5d 5d 20 3c 64 74 3e 53 51  FIG_URI]] <dt>SQ
1cc90 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 0a  LITE_CONFIG_URI.
1cca0 2a 2a 20 3c 64 64 3e 5e 28 54 68 65 20 53 51 4c  ** <dd>^(The SQL
1ccb0 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 6f  ITE_CONFIG_URI o
1ccc0 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1ccd0 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66  ngle argument of
1cce0 20 74 79 70 65 20 69 6e 74 2e 0a 2a 2a 20 49 66   type int..** If
1ccf0 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20   non-zero, then 
1cd00 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  URI handling is 
1cd10 67 6c 6f 62 61 6c 6c 79 20 65 6e 61 62 6c 65 64  globally enabled
1cd20 2e 20 49 66 20 74 68 65 20 70 61 72 61 6d 65 74  . If the paramet
1cd30 65 72 20 69 73 20 7a 65 72 6f 2c 0a 2a 2a 20 74  er is zero,.** t
1cd40 68 65 6e 20 55 52 49 20 68 61 6e 64 6c 69 6e 67  hen URI handling
1cd50 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73   is globally dis
1cd60 61 62 6c 65 64 2e 29 5e 20 5e 49 66 20 55 52 49  abled.)^ ^If URI
1cd70 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f   handling is glo
1cd80 62 61 6c 6c 79 0a 2a 2a 20 65 6e 61 62 6c 65 64  bally.** enabled
1cd90 2c 20 61 6c 6c 20 66 69 6c 65 6e 61 6d 65 73 20  , all filenames 
1cda0 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
1cdb0 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
1cdc0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
1cdd0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  .** [sqlite3_ope
1cde0 6e 31 36 28 29 5d 20 6f 72 0a 2a 2a 20 73 70 65  n16()] or.** spe
1cdf0 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
1ce00 66 20 5b 41 54 54 41 43 48 5d 20 63 6f 6d 6d 61  f [ATTACH] comma
1ce10 6e 64 73 20 61 72 65 20 69 6e 74 65 72 70 72 65  nds are interpre
1ce20 74 65 64 20 61 73 20 55 52 49 73 2c 20 72 65 67  ted as URIs, reg
1ce30 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66 20 77 68  ardless.** of wh
1ce40 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
1ce50 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52   [SQLITE_OPEN_UR
1ce60 49 5d 20 66 6c 61 67 20 69 73 20 73 65 74 20 77  I] flag is set w
1ce70 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
1ce80 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  .** connection i
1ce90 73 20 6f 70 65 6e 65 64 2e 20 5e 49 66 20 69 74  s opened. ^If it
1cea0 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73   is globally dis
1ceb0 61 62 6c 65 64 2c 20 66 69 6c 65 6e 61 6d 65 73  abled, filenames
1cec0 20 61 72 65 0a 2a 2a 20 6f 6e 6c 79 20 69 6e 74   are.** only int
1ced0 65 72 70 72 65 74 65 64 20 61 73 20 55 52 49 73  erpreted as URIs
1cee0 20 69 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f   if the SQLITE_O
1cef0 50 45 4e 5f 55 52 49 20 66 6c 61 67 20 69 73 20  PEN_URI flag is 
1cf00 73 65 74 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20  set when the.** 
1cf10 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1cf20 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20 5e  ion is opened. ^
1cf30 28 42 79 20 64 65 66 61 75 6c 74 2c 20 55 52 49  (By default, URI
1cf40 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f   handling is glo
1cf50 62 61 6c 6c 79 0a 2a 2a 20 64 69 73 61 62 6c 65  bally.** disable
1cf60 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  d. The default v
1cf70 61 6c 75 65 20 6d 61 79 20 62 65 20 63 68 61 6e  alue may be chan
1cf80 67 65 64 20 62 79 20 63 6f 6d 70 69 6c 69 6e 67  ged by compiling
1cf90 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51   with the.** [SQ
1cfa0 4c 49 54 45 5f 55 53 45 5f 55 52 49 5d 20 73 79  LITE_USE_URI] sy
1cfb0 6d 62 6f 6c 20 64 65 66 69 6e 65 64 2e 29 5e 0a  mbol defined.)^.
1cfc0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1cfd0 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49  ONFIG_COVERING_I
1cfe0 4e 44 45 58 5f 53 43 41 4e 5d 5d 20 3c 64 74 3e  NDEX_SCAN]] <dt>
1cff0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f  SQLITE_CONFIG_CO
1d000 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
1d010 4e 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  N.** <dd>^The SQ
1d020 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
1d030 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20  RING_INDEX_SCAN 
1d040 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1d050 69 6e 67 6c 65 20 69 6e 74 65 67 65 72 0a 2a 2a  ingle integer.**
1d060 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20   argument which 
1d070 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
1d080 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69 6e 20 6f  s a boolean in o
1d090 72 64 65 72 20 74 6f 20 65 6e 61 62 6c 65 20 6f  rder to enable o
1d0a0 72 20 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65  r disable.** the
1d0b0 20 75 73 65 20 6f 66 20 63 6f 76 65 72 69 6e 67   use of covering
1d0c0 20 69 6e 64 69 63 65 73 20 66 6f 72 20 66 75 6c   indices for ful
1d0d0 6c 20 74 61 62 6c 65 20 73 63 61 6e 73 20 69 6e  l table scans in
1d0e0 20 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d   the query optim
1d0f0 69 7a 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 64 65  izer..** ^The de
1d100 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
1d110 20 64 65 74 65 72 6d 69 6e 65 64 0a 2a 2a 20 62   determined.** b
1d120 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 41 4c  y the [SQLITE_AL
1d130 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  LOW_COVERING_IND
1d140 45 58 5f 53 43 41 4e 5d 20 63 6f 6d 70 69 6c 65  EX_SCAN] compile
1d150 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 6f 72  -time option, or
1d160 20 69 73 20 22 6f 6e 22 0a 2a 2a 20 69 66 20 74   is "on".** if t
1d170 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  hat compile-time
1d180 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74   option is omitt
1d190 65 64 2e 0a 2a 2a 20 54 68 65 20 61 62 69 6c 69  ed..** The abili
1d1a0 74 79 20 74 6f 20 64 69 73 61 62 6c 65 20 74 68  ty to disable th
1d1b0 65 20 75 73 65 20 6f 66 20 63 6f 76 65 72 69 6e  e use of coverin
1d1c0 67 20 69 6e 64 69 63 65 73 20 66 6f 72 20 66 75  g indices for fu
1d1d0 6c 6c 20 74 61 62 6c 65 20 73 63 61 6e 73 0a 2a  ll table scans.*
1d1e0 2a 20 69 73 20 62 65 63 61 75 73 65 20 73 6f 6d  * is because som
1d1f0 65 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 63 6f  e incorrectly co
1d200 64 65 64 20 6c 65 67 61 63 79 20 61 70 70 6c 69  ded legacy appli
1d210 63 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 6d 61  cations might ma
1d220 6c 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 77 68 65  lfunction.** whe
1d230 6e 20 74 68 65 20 6f 70 74 69 6d 69 7a 61 74 69  n the optimizati
1d240 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 20 20  on is enabled.  
1d250 50 72 6f 76 69 64 69 6e 67 20 74 68 65 20 61 62  Providing the ab
1d260 69 6c 69 74 79 20 74 6f 0a 2a 2a 20 64 69 73 61  ility to.** disa
1d270 62 6c 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 61  ble the optimiza
1d280 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 74 68 65 20  tion allows the 
1d290 6f 6c 64 65 72 2c 20 62 75 67 67 79 20 61 70 70  older, buggy app
1d2a0 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65 20 74 6f  lication code to
1d2b0 20 77 6f 72 6b 0a 2a 2a 20 77 69 74 68 6f 75 74   work.** without
1d2c0 20 63 68 61 6e 67 65 20 65 76 65 6e 20 77 69 74   change even wit
1d2d0 68 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73  h newer versions
1d2e0 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a   of SQLite..**.*
1d2f0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1d300 47 5f 50 43 41 43 48 45 5d 5d 20 5b 5b 53 51 4c  G_PCACHE]] [[SQL
1d310 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
1d320 41 43 48 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  ACHE]].** <dt>SQ
1d330 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1d340 48 45 20 61 6e 64 20 53 51 4c 49 54 45 5f 43 4f  HE and SQLITE_CO
1d350 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 0a 2a  NFIG_GETPCACHE.*
1d360 2a 20 3c 64 64 3e 20 54 68 65 73 65 20 6f 70 74  * <dd> These opt
1d370 69 6f 6e 73 20 61 72 65 20 6f 62 73 6f 6c 65 74  ions are obsolet
1d380 65 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74  e and should not
1d390 20 62 65 20 75 73 65 64 20 62 79 20 6e 65 77 20   be used by new 
1d3a0 63 6f 64 65 2e 0a 2a 2a 20 54 68 65 79 20 61 72  code..** They ar
1d3b0 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 62  e retained for b
1d3c0 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
1d3d0 62 69 6c 69 74 79 20 62 75 74 20 61 72 65 20 6e  bility but are n
1d3e0 6f 77 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 20 3c 2f  ow no-ops..** </
1d3f0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1d400 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47  TE_CONFIG_SQLLOG
1d410 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
1d420 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 0a 2a  _CONFIG_SQLLOG.*
1d430 2a 20 3c 64 64 3e 54 68 69 73 20 6f 70 74 69 6f  * <dd>This optio
1d440 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  n is only availa
1d450 62 6c 65 20 69 66 20 73 71 6c 69 74 65 20 69 73  ble if sqlite is
1d460 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
1d470 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e  he.** [SQLITE_EN
1d480 41 42 4c 45 5f 53 51 4c 4c 4f 47 5d 20 70 72 65  ABLE_SQLLOG] pre
1d490 2d 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  -processor macro
1d4a0 20 64 65 66 69 6e 65 64 2e 20 54 68 65 20 66 69   defined. The fi
1d4b0 72 73 74 20 61 72 67 75 6d 65 6e 74 20 73 68 6f  rst argument sho
1d4c0 75 6c 64 0a 2a 2a 20 62 65 20 61 20 70 6f 69 6e  uld.** be a poin
1d4d0 74 65 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f  ter to a functio
1d4e0 6e 20 6f 66 20 74 79 70 65 20 76 6f 69 64 28 2a  n of type void(*
1d4f0 29 28 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a  )(void*,sqlite3*
1d500 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e  ,const char*, in
1d510 74 29 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  t)..** The secon
1d520 64 20 73 68 6f 75 6c 64 20 62 65 20 6f 66 20 74  d should be of t
1d530 79 70 65 20 28 76 6f 69 64 2a 29 2e 20 54 68 65  ype (void*). The
1d540 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
1d550 6f 6b 65 64 20 62 79 20 74 68 65 20 6c 69 62 72  oked by the libr
1d560 61 72 79 0a 2a 2a 20 69 6e 20 74 68 72 65 65 20  ary.** in three 
1d570 73 65 70 61 72 61 74 65 20 63 69 72 63 75 6d 73  separate circums
1d580 74 61 6e 63 65 73 2c 20 69 64 65 6e 74 69 66 69  tances, identifi
1d590 65 64 20 62 79 20 74 68 65 20 76 61 6c 75 65 20  ed by the value 
1d5a0 70 61 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a  passed as the.**
1d5b0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
1d5c0 72 2e 20 49 66 20 74 68 65 20 66 6f 75 72 74 68  r. If the fourth
1d5d0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 30 2c   parameter is 0,
1d5e0 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   then the databa
1d5f0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
1d600 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 73   passed as the s
1d610 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 68  econd argument h
1d620 61 73 20 6a 75 73 74 20 62 65 65 6e 20 6f 70 65  as just been ope
1d630 6e 65 64 2e 20 54 68 65 20 74 68 69 72 64 20 61  ned. The third a
1d640 72 67 75 6d 65 6e 74 0a 2a 2a 20 70 6f 69 6e 74  rgument.** point
1d650 73 20 74 6f 20 61 20 62 75 66 66 65 72 20 63 6f  s to a buffer co
1d660 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 6d  ntaining the nam
1d670 65 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 64 61  e of the main da
1d680 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20  tabase file. If 
1d690 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61  the.** fourth pa
1d6a0 72 61 6d 65 74 65 72 20 69 73 20 31 2c 20 74 68  rameter is 1, th
1d6b0 65 6e 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  en the SQL state
1d6c0 6d 65 6e 74 20 74 68 61 74 20 74 68 65 20 74 68  ment that the th
1d6d0 69 72 64 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  ird parameter.**
1d6e0 20 70 6f 69 6e 74 73 20 74 6f 20 68 61 73 20 6a   points to has j
1d6f0 75 73 74 20 62 65 65 6e 20 65 78 65 63 75 74 65  ust been execute
1d700 64 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 66 6f  d. Or, if the fo
1d710 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
1d720 73 20 32 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65  s 2, then.** the
1d730 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e   connection bein
1d740 67 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  g passed as the 
1d750 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
1d760 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
1d770 2e 20 54 68 65 0a 2a 2a 20 74 68 69 72 64 20 70  . The.** third p
1d780 61 72 61 6d 65 74 65 72 20 69 73 20 70 61 73 73  arameter is pass
1d790 65 64 20 4e 55 4c 4c 20 49 6e 20 74 68 69 73 20  ed NULL In this 
1d7a0 63 61 73 65 2e 20 20 41 6e 20 65 78 61 6d 70 6c  case.  An exampl
1d7b0 65 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 0a  e of using this.
1d7c0 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ** configuration
1d7d0 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 73   option can be s
1d7e0 65 65 6e 20 69 6e 20 74 68 65 20 22 74 65 73 74  een in the "test
1d7f0 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63  _sqllog.c" sourc
1d800 65 20 66 69 6c 65 20 69 6e 0a 2a 2a 20 74 68 65  e file in.** the
1d810 20 63 61 6e 6f 6e 69 63 61 6c 20 53 51 4c 69 74   canonical SQLit
1d820 65 20 73 6f 75 72 63 65 20 74 72 65 65 2e 3c 2f  e source tree.</
1d830 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1d840 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
1d850 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  IZE]].** <dt>SQL
1d860 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
1d870 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 53 51 4c  SIZE.** <dd>^SQL
1d880 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
1d890 53 49 5a 45 20 74 61 6b 65 73 20 74 77 6f 20 36  SIZE takes two 6
1d8a0 34 2d 62 69 74 20 69 6e 74 65 67 65 72 20 28 73  4-bit integer (s
1d8b0 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 20 76 61  qlite3_int64) va
1d8c0 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20 61 72 65  lues.** that are
1d8d0 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6d 61   the default mma
1d8e0 70 20 73 69 7a 65 20 6c 69 6d 69 74 20 28 74 68  p size limit (th
1d8f0 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
1d900 67 20 66 6f 72 0a 2a 2a 20 5b 50 52 41 47 4d 41  g for.** [PRAGMA
1d910 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20 61 6e 64   mmap_size]) and
1d920 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c   the maximum all
1d930 6f 77 65 64 20 6d 6d 61 70 20 73 69 7a 65 20 6c  owed mmap size l
1d940 69 6d 69 74 2e 0a 2a 2a 20 5e 54 68 65 20 64 65  imit..** ^The de
1d950 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 63 61  fault setting ca
1d960 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20  n be overridden 
1d970 62 79 20 65 61 63 68 20 64 61 74 61 62 61 73 65  by each database
1d980 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e   connection usin
1d990 67 0a 2a 2a 20 65 69 74 68 65 72 20 74 68 65 20  g.** either the 
1d9a0 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a  [PRAGMA mmap_siz
1d9b0 65 5d 20 63 6f 6d 6d 61 6e 64 2c 20 6f 72 20 62  e] command, or b
1d9c0 79 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b  y using the.** [
1d9d0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41  SQLITE_FCNTL_MMA
1d9e0 50 5f 53 49 5a 45 5d 20 66 69 6c 65 20 63 6f 6e  P_SIZE] file con
1d9f0 74 72 6f 6c 2e 20 20 5e 28 54 68 65 20 6d 61 78  trol.  ^(The max
1da00 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61  imum allowed mma
1da10 70 20 73 69 7a 65 0a 2a 2a 20 77 69 6c 6c 20 62  p size.** will b
1da20 65 20 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63  e silently trunc
1da30 61 74 65 64 20 69 66 20 6e 65 63 65 73 73 61 72  ated if necessar
1da40 79 20 73 6f 20 74 68 61 74 20 69 74 20 64 6f 65  y so that it doe
1da50 73 20 6e 6f 74 20 65 78 63 65 65 64 20 74 68 65  s not exceed the
1da60 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  .** compile-time
1da70 20 6d 61 78 69 6d 75 6d 20 6d 6d 61 70 20 73 69   maximum mmap si
1da80 7a 65 20 73 65 74 20 62 79 20 74 68 65 0a 2a 2a  ze set by the.**
1da90 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41   [SQLITE_MAX_MMA
1daa0 50 5f 53 49 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d  P_SIZE] compile-
1dab0 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 29 5e 0a 2a  time option.)^.*
1dac0 2a 20 5e 49 66 20 65 69 74 68 65 72 20 61 72 67  * ^If either arg
1dad0 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 6f 70  ument to this op
1dae0 74 69 6f 6e 20 69 73 20 6e 65 67 61 74 69 76 65  tion is negative
1daf0 2c 20 74 68 65 6e 20 74 68 61 74 20 61 72 67 75  , then that argu
1db00 6d 65 6e 74 20 69 73 0a 2a 2a 20 63 68 61 6e 67  ment is.** chang
1db10 65 64 20 74 6f 20 69 74 73 20 63 6f 6d 70 69 6c  ed to its compil
1db20 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 2e 0a  e-time default..
1db30 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1db40 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
1db50 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SIZE]].** <dt>SQ
1db60 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33  LITE_CONFIG_WIN3
1db70 32 5f 48 45 41 50 53 49 5a 45 0a 2a 2a 20 3c 64  2_HEAPSIZE.** <d
1db80 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  d>^The SQLITE_CO
1db90 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53  NFIG_WIN32_HEAPS
1dba0 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e  IZE option is on
1dbb0 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20  ly available if 
1dbc0 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d  SQLite is.** com
1dbd0 70 69 6c 65 64 20 66 6f 72 20 57 69 6e 64 6f 77  piled for Window
1dbe0 73 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  s with the [SQLI
1dbf0 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5d  TE_WIN32_MALLOC]
1dc00 20 70 72 65 2d 70 72 6f 63 65 73 73 6f 72 20 6d   pre-processor m
1dc10 61 63 72 6f 0a 2a 2a 20 64 65 66 69 6e 65 64 2e  acro.** defined.
1dc20 20 5e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   ^SQLITE_CONFIG_
1dc30 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20 74  WIN32_HEAPSIZE t
1dc40 61 6b 65 73 20 61 20 33 32 2d 62 69 74 20 75 6e  akes a 32-bit un
1dc50 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 76  signed integer v
1dc60 61 6c 75 65 0a 2a 2a 20 74 68 61 74 20 73 70 65  alue.** that spe
1dc70 63 69 66 69 65 73 20 74 68 65 20 6d 61 78 69 6d  cifies the maxim
1dc80 75 6d 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63  um size of the c
1dc90 72 65 61 74 65 64 20 68 65 61 70 2e 0a 2a 2a 0a  reated heap..**.
1dca0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1dcb0 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 5d  IG_PCACHE_HDRSZ]
1dcc0 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1dcd0 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
1dce0 52 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20  RSZ.** <dd>^The 
1dcf0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1dd00 41 43 48 45 5f 48 44 52 53 5a 20 6f 70 74 69 6f  ACHE_HDRSZ optio
1dd10 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1dd20 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68   parameter which
1dd30 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72  .** is a pointer
1dd40 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 61   to an integer a
1dd50 6e 64 20 77 72 69 74 65 73 20 69 6e 74 6f 20 74  nd writes into t
1dd60 68 61 74 20 69 6e 74 65 67 65 72 20 74 68 65 20  hat integer the 
1dd70 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 72 61 0a  number of extra.
1dd80 2a 2a 20 62 79 74 65 73 20 70 65 72 20 70 61 67  ** bytes per pag
1dd90 65 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  e required for e
1dda0 61 63 68 20 70 61 67 65 20 69 6e 20 5b 53 51 4c  ach page in [SQL
1ddb0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43  ITE_CONFIG_PAGEC
1ddc0 41 43 48 45 5d 2e 0a 2a 2a 20 54 68 65 20 61 6d  ACHE]..** The am
1ddd0 6f 75 6e 74 20 6f 66 20 65 78 74 72 61 20 73 70  ount of extra sp
1dde0 61 63 65 20 72 65 71 75 69 72 65 64 20 63 61 6e  ace required can
1ddf0 20 63 68 61 6e 67 65 20 64 65 70 65 6e 64 69 6e   change dependin
1de00 67 20 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65  g on the compile
1de10 72 2c 0a 2a 2a 20 74 61 72 67 65 74 20 70 6c 61  r,.** target pla
1de20 74 66 6f 72 6d 2c 20 61 6e 64 20 53 51 4c 69 74  tform, and SQLit
1de30 65 20 76 65 72 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  e version..**.**
1de40 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1de50 5f 50 4d 41 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e  _PMASZ]].** <dt>
1de60 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
1de70 41 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20  ASZ.** <dd>^The 
1de80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
1de90 41 53 5a 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  ASZ option takes
1dea0 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65   a single parame
1deb0 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  ter which.** is 
1dec0 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65  an unsigned inte
1ded0 67 65 72 20 61 6e 64 20 73 65 74 73 20 74 68 65  ger and sets the
1dee0 20 22 4d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69   "Minimum PMA Si
1def0 7a 65 22 20 66 6f 72 20 74 68 65 20 6d 75 6c 74  ze" for the mult
1df00 69 74 68 72 65 61 64 65 64 0a 2a 2a 20 73 6f 72  ithreaded.** sor
1df10 74 65 72 20 74 6f 20 74 68 61 74 20 69 6e 74 65  ter to that inte
1df20 67 65 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ger.  The defaul
1df30 74 20 6d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69  t minimum PMA Si
1df40 7a 65 20 69 73 20 73 65 74 20 62 79 20 74 68 65  ze is set by the
1df50 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 4f 52 54  .** [SQLITE_SORT
1df60 45 52 5f 50 4d 41 53 5a 5d 20 63 6f 6d 70 69 6c  ER_PMASZ] compil
1df70 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20 20  e-time option.  
1df80 4e 65 77 20 74 68 72 65 61 64 73 20 61 72 65 20  New threads are 
1df90 6c 61 75 6e 63 68 65 64 0a 2a 2a 20 74 6f 20 68  launched.** to h
1dfa0 65 6c 70 20 77 69 74 68 20 73 6f 72 74 20 6f 70  elp with sort op
1dfb0 65 72 61 74 69 6f 6e 73 20 77 68 65 6e 20 6d 75  erations when mu
1dfc0 6c 74 69 74 68 72 65 61 64 65 64 20 73 6f 72 74  ltithreaded sort
1dfd0 69 6e 67 0a 2a 2a 20 69 73 20 65 6e 61 62 6c 65  ing.** is enable
1dfe0 64 20 28 75 73 69 6e 67 20 74 68 65 20 5b 50 52  d (using the [PR
1dff0 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20 63 6f  AGMA threads] co
1e000 6d 6d 61 6e 64 29 20 61 6e 64 20 74 68 65 20 61  mmand) and the a
1e010 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74  mount of content
1e020 0a 2a 2a 20 74 6f 20 62 65 20 73 6f 72 74 65 64  .** to be sorted
1e030 20 65 78 63 65 65 64 73 20 74 68 65 20 70 61 67   exceeds the pag
1e040 65 20 73 69 7a 65 20 74 69 6d 65 73 20 74 68 65  e size times the
1e050 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 0a   minimum of the.
1e060 2a 2a 20 5b 50 52 41 47 4d 41 20 63 61 63 68 65  ** [PRAGMA cache
1e070 5f 73 69 7a 65 5d 20 73 65 74 74 69 6e 67 20 61  _size] setting a
1e080 6e 64 20 74 68 69 73 20 76 61 6c 75 65 2e 0a 2a  nd this value..*
1e090 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1e0a0 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50  NFIG_STMTJRNL_SP
1e0b0 49 4c 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  ILL]].** <dt>SQL
1e0c0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a  ITE_CONFIG_STMTJ
1e0d0 52 4e 4c 5f 53 50 49 4c 4c 0a 2a 2a 20 3c 64 64  RNL_SPILL.** <dd
1e0e0 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  >^The SQLITE_CON
1e0f0 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  FIG_STMTJRNL_SPI
1e100 4c 4c 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  LL option takes 
1e110 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74  a single paramet
1e120 65 72 20 77 68 69 63 68 0a 2a 2a 20 62 65 63 6f  er which.** beco
1e130 6d 65 73 20 74 68 65 20 5b 73 74 61 74 65 6d 65  mes the [stateme
1e140 6e 74 20 6a 6f 75 72 6e 61 6c 5d 20 73 70 69 6c  nt journal] spil
1e150 6c 2d 74 6f 2d 64 69 73 6b 20 74 68 72 65 73 68  l-to-disk thresh
1e160 6f 6c 64 2e 20 20 0a 2a 2a 20 5b 53 74 61 74 65  old.  .** [State
1e170 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 5d 20 61  ment journals] a
1e180 72 65 20 68 65 6c 64 20 69 6e 20 6d 65 6d 6f 72  re held in memor
1e190 79 20 75 6e 74 69 6c 20 74 68 65 69 72 20 73 69  y until their si
1e1a0 7a 65 20 28 69 6e 20 62 79 74 65 73 29 0a 2a 2a  ze (in bytes).**
1e1b0 20 65 78 63 65 65 64 73 20 74 68 69 73 20 74 68   exceeds this th
1e1c0 72 65 73 68 6f 6c 64 2c 20 61 74 20 77 68 69 63  reshold, at whic
1e1d0 68 20 70 6f 69 6e 74 20 74 68 65 79 20 61 72 65  h point they are
1e1e0 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b   written to disk
1e1f0 2e 0a 2a 2a 20 4f 72 20 69 66 20 74 68 65 20 74  ..** Or if the t
1e200 68 72 65 73 68 6f 6c 64 20 69 73 20 2d 31 2c 20  hreshold is -1, 
1e210 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61  statement journa
1e220 6c 73 20 61 72 65 20 61 6c 77 61 79 73 20 68 65  ls are always he
1e230 6c 64 0a 2a 2a 20 65 78 63 6c 75 73 69 76 65 6c  ld.** exclusivel
1e240 79 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20  y in memory..** 
1e250 53 69 6e 63 65 20 6d 61 6e 79 20 73 74 61 74 65  Since many state
1e260 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6e 65  ment journals ne
1e270 76 65 72 20 62 65 63 6f 6d 65 20 6c 61 72 67 65  ver become large
1e280 2c 20 73 65 74 74 69 6e 67 20 74 68 65 20 73 70  , setting the sp
1e290 69 6c 6c 0a 2a 2a 20 74 68 72 65 73 68 6f 6c 64  ill.** threshold
1e2a0 20 74 6f 20 61 20 76 61 6c 75 65 20 73 75 63 68   to a value such
1e2b0 20 61 73 20 36 34 4b 69 42 20 63 61 6e 20 67 72   as 64KiB can gr
1e2c0 65 61 74 6c 79 20 72 65 64 75 63 65 20 74 68 65  eatly reduce the
1e2d0 20 61 6d 6f 75 6e 74 20 6f 66 0a 2a 2a 20 49 2f   amount of.** I/
1e2e0 4f 20 72 65 71 75 69 72 65 64 20 74 6f 20 73 75  O required to su
1e2f0 70 70 6f 72 74 20 73 74 61 74 65 6d 65 6e 74 20  pport statement 
1e300 72 6f 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 54 68 65  rollback..** The
1e310 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66   default value f
1e320 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  or this setting 
1e330 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79  is controlled by
1e340 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1e350 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20  STMTJRNL_SPILL] 
1e360 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1e370 69 6f 6e 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f  ion..** </dl>.*/
1e380 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1e390 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
1e3a0 45 41 44 20 20 31 20 20 2f 2a 20 6e 69 6c 20 2a  EAD  1  /* nil *
1e3b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e3c0 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
1e3d0 45 41 44 20 20 20 32 20 20 2f 2a 20 6e 69 6c 20  EAD   2  /* nil 
1e3e0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1e3f0 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49  E_CONFIG_SERIALI
1e400 5a 45 44 20 20 20 20 33 20 20 2f 2a 20 6e 69 6c  ZED    3  /* nil
1e410 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1e420 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1e430 20 20 20 20 20 20 20 20 34 20 20 2f 2a 20 73 71          4  /* sq
1e440 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1e450 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s* */.#define SQ
1e460 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
1e470 41 4c 4c 4f 43 20 20 20 20 20 35 20 20 2f 2a 20  ALLOC     5  /* 
1e480 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
1e490 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ods* */.#define 
1e4a0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43  SQLITE_CONFIG_SC
1e4b0 52 41 54 43 48 20 20 20 20 20 20 20 36 20 20 2f  RATCH       6  /
1e4c0 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  * No longer used
1e4d0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1e4e0 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41  TE_CONFIG_PAGECA
1e4f0 43 48 45 20 20 20 20 20 37 20 20 2f 2a 20 76 6f  CHE     7  /* vo
1e500 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20 69 6e 74  id*, int sz, int
1e510 20 4e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51   N */.#define SQ
1e520 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
1e530 20 20 20 20 20 20 20 20 20 20 38 20 20 2f 2a 20            8  /* 
1e540 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42 79 74 65  void*, int nByte
1e550 2c 20 69 6e 74 20 6d 69 6e 20 2a 2f 0a 23 64 65  , int min */.#de
1e560 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1e570 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 20 20 20  IG_MEMSTATUS    
1e580 20 39 20 20 2f 2a 20 62 6f 6f 6c 65 61 6e 20 2a   9  /* boolean *
1e590 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e5a0 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 20 20  _CONFIG_MUTEX   
1e5b0 20 20 20 20 20 31 30 20 20 2f 2a 20 73 71 6c 69       10  /* sqli
1e5c0 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64  te3_mutex_method
1e5d0 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s* */.#define SQ
1e5e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
1e5f0 55 54 45 58 20 20 20 20 20 31 31 20 20 2f 2a 20  UTEX     11  /* 
1e600 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1e610 74 68 6f 64 73 2a 20 2a 2f 0a 2f 2a 20 70 72 65  thods* */./* pre
1e620 76 69 6f 75 73 6c 79 20 53 51 4c 49 54 45 5f 43  viously SQLITE_C
1e630 4f 4e 46 49 47 5f 43 48 55 4e 4b 41 4c 4c 4f 43  ONFIG_CHUNKALLOC
1e640 20 31 32 20 77 68 69 63 68 20 69 73 20 6e 6f 77   12 which is now
1e650 20 75 6e 75 73 65 64 2e 20 2a 2f 20 0a 23 64 65   unused. */ .#de
1e660 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1e670 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 20 20 20  IG_LOOKASIDE    
1e680 31 33 20 20 2f 2a 20 69 6e 74 20 69 6e 74 20 2a  13  /* int int *
1e690 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e6a0 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 20 20  _CONFIG_PCACHE  
1e6b0 20 20 20 20 20 31 34 20 20 2f 2a 20 6e 6f 2d 6f       14  /* no-o
1e6c0 70 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  p */.#define SQL
1e6d0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
1e6e0 41 43 48 45 20 20 20 20 31 35 20 20 2f 2a 20 6e  ACHE    15  /* n
1e6f0 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e 65 20  o-op */.#define 
1e700 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1e710 47 20 20 20 20 20 20 20 20 20 20 31 36 20 20 2f  G          16  /
1e720 2a 20 78 46 75 6e 63 2c 20 76 6f 69 64 2a 20 2a  * xFunc, void* *
1e730 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e740 5f 43 4f 4e 46 49 47 5f 55 52 49 20 20 20 20 20  _CONFIG_URI     
1e750 20 20 20 20 20 31 37 20 20 2f 2a 20 69 6e 74 20       17  /* int 
1e760 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1e770 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32  E_CONFIG_PCACHE2
1e780 20 20 20 20 20 20 31 38 20 20 2f 2a 20 73 71 6c        18  /* sql
1e790 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68  ite3_pcache_meth
1e7a0 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  ods2* */.#define
1e7b0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1e7c0 45 54 50 43 41 43 48 45 32 20 20 20 31 39 20 20  ETPCACHE2   19  
1e7d0 2f 2a 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68  /* sqlite3_pcach
1e7e0 65 5f 6d 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23  e_methods2* */.#
1e7f0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1e800 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  NFIG_COVERING_IN
1e810 44 45 58 5f 53 43 41 4e 20 32 30 20 20 2f 2a 20  DEX_SCAN 20  /* 
1e820 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  int */.#define S
1e830 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c  QLITE_CONFIG_SQL
1e840 4c 4f 47 20 20 20 20 20 20 20 32 31 20 20 2f 2a  LOG       21  /*
1e850 20 78 53 71 6c 6c 6f 67 2c 20 76 6f 69 64 2a 20   xSqllog, void* 
1e860 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1e870 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49  E_CONFIG_MMAP_SI
1e880 5a 45 20 20 20 20 32 32 20 20 2f 2a 20 73 71 6c  ZE    22  /* sql
1e890 69 74 65 33 5f 69 6e 74 36 34 2c 20 73 71 6c 69  ite3_int64, sqli
1e8a0 74 65 33 5f 69 6e 74 36 34 20 2a 2f 0a 23 64 65  te3_int64 */.#de
1e8b0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1e8c0 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
1e8d0 45 20 20 20 20 20 20 32 33 20 20 2f 2a 20 69 6e  E      23  /* in
1e8e0 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66 69  t nByte */.#defi
1e8f0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1e900 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 20 20 20  _PCACHE_HDRSZ   
1e910 20 20 20 20 20 32 34 20 20 2f 2a 20 69 6e 74 20       24  /* int 
1e920 2a 70 73 7a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  *psz */.#define 
1e930 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
1e940 41 53 5a 20 20 20 20 20 20 20 20 20 20 20 20 20  ASZ             
1e950 20 20 32 35 20 20 2f 2a 20 75 6e 73 69 67 6e 65    25  /* unsigne
1e960 64 20 69 6e 74 20 73 7a 50 6d 61 20 2a 2f 0a 23  d int szPma */.#
1e970 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1e980 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50  NFIG_STMTJRNL_SP
1e990 49 4c 4c 20 20 20 20 20 20 32 36 20 20 2f 2a 20  ILL      26  /* 
1e9a0 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65  int nByte */.#de
1e9b0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1e9c0 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20  IG_SMALL_MALLOC 
1e9d0 20 20 20 20 20 20 20 32 37 20 20 2f 2a 20 62 6f         27  /* bo
1e9e0 6f 6c 65 61 6e 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  olean */../*.** 
1e9f0 43 41 50 49 33 52 45 46 3a 20 44 61 74 61 62 61  CAPI3REF: Databa
1ea00 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 43 6f  se Connection Co
1ea10 6e 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74 69  nfiguration Opti
1ea20 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ons.**.** These 
1ea30 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 74 68  constants are th
1ea40 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74 65  e available inte
1ea50 67 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ger configuratio
1ea60 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 0a 2a  n options that.*
1ea70 2a 20 63 61 6e 20 62 65 20 70 61 73 73 65 64 20  * can be passed 
1ea80 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  as the second ar
1ea90 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 73  gument to the [s
1eaa0 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
1eab0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a  ()] interface..*
1eac0 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67 75  *.** New configu
1ead0 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d  ration options m
1eae0 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66  ay be added in f
1eaf0 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f  uture releases o
1eb00 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78 69  f SQLite..** Exi
1eb10 73 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74  sting configurat
1eb20 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68  ion options migh
1eb30 74 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65  t be discontinue
1eb40 64 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  d.  Applications
1eb50 0a 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63 6b  .** should check
1eb60 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65   the return code
1eb70 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 64   from [sqlite3_d
1eb80 62 5f 63 6f 6e 66 69 67 28 29 5d 20 74 6f 20 6d  b_config()] to m
1eb90 61 6b 65 20 73 75 72 65 20 74 68 61 74 0a 2a 2a  ake sure that.**
1eba0 20 74 68 65 20 63 61 6c 6c 20 77 6f 72 6b 65 64   the call worked
1ebb0 2e 20 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33  .  ^The [sqlite3
1ebc0 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e  _db_config()] in
1ebd0 74 65 72 66 61 63 65 20 77 69 6c 6c 20 72 65 74  terface will ret
1ebe0 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72  urn a.** non-zer
1ebf0 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69  o [error code] i
1ec00 66 20 61 20 64 69 73 63 6f 6e 74 69 6e 75 65 64  f a discontinued
1ec10 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64 20   or unsupported 
1ec20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1ec30 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b  tion.** is invok
1ec40 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a  ed..**.** <dl>.*
1ec50 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43  * <dt>SQLITE_DBC
1ec60 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c  ONFIG_LOOKASIDE<
1ec70 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
1ec80 69 73 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  is option takes 
1ec90 74 68 72 65 65 20 61 64 64 69 74 69 6f 6e 61 6c  three additional
1eca0 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74 20   arguments that 
1ecb0 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 0a 2a  determine the .*
1ecc0 2a 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  * [lookaside mem
1ecd0 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d 20 63  ory allocator] c
1ece0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 6f 72  onfiguration for
1ecf0 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
1ed00 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 5e  onnection]..** ^
1ed10 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
1ed20 6e 74 20 28 74 68 65 20 74 68 69 72 64 20 70 61  nt (the third pa
1ed30 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
1ed40 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d  te3_db_config()]
1ed50 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e 74 65 72   is a.** pointer
1ed60 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20 62 75 66   to a memory buf
1ed70 66 65 72 20 74 6f 20 75 73 65 20 66 6f 72 20 6c  fer to use for l
1ed80 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 2e  ookaside memory.
1ed90 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
1eda0 72 67 75 6d 65 6e 74 20 61 66 74 65 72 20 74 68  rgument after th
1edb0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
1edc0 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 76 65 72 62  G_LOOKASIDE verb
1edd0 0a 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c 4c 20  .** may be NULL 
1ede0 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 53 51  in which case SQ
1edf0 4c 69 74 65 20 77 69 6c 6c 20 61 6c 6c 6f 63 61  Lite will alloca
1ee00 74 65 20 74 68 65 0a 2a 2a 20 6c 6f 6f 6b 61 73  te the.** lookas
1ee10 69 64 65 20 62 75 66 66 65 72 20 69 74 73 65 6c  ide buffer itsel
1ee20 66 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  f using [sqlite3
1ee30 5f 6d 61 6c 6c 6f 63 28 29 5d 2e 20 5e 54 68 65  _malloc()]. ^The
1ee40 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
1ee50 20 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a 65 20   is the.** size 
1ee60 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73 69 64  of each lookasid
1ee70 65 20 62 75 66 66 65 72 20 73 6c 6f 74 2e 20 20  e buffer slot.  
1ee80 5e 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d  ^The third argum
1ee90 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ent is the numbe
1eea0 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 2e 20 20  r of.** slots.  
1eeb0 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  The size of the 
1eec0 62 75 66 66 65 72 20 69 6e 20 74 68 65 20 66 69  buffer in the fi
1eed0 72 73 74 20 61 72 67 75 6d 65 6e 74 20 6d 75 73  rst argument mus
1eee0 74 20 62 65 20 67 72 65 61 74 65 72 20 74 68 61  t be greater tha
1eef0 6e 0a 2a 2a 20 6f 72 20 65 71 75 61 6c 20 74 6f  n.** or equal to
1ef00 20 74 68 65 20 70 72 6f 64 75 63 74 20 6f 66 20   the product of 
1ef10 74 68 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74  the second and t
1ef20 68 69 72 64 20 61 72 67 75 6d 65 6e 74 73 2e 20  hird arguments. 
1ef30 20 54 68 65 20 62 75 66 66 65 72 0a 2a 2a 20 6d   The buffer.** m
1ef40 75 73 74 20 62 65 20 61 6c 69 67 6e 65 64 20 74  ust be aligned t
1ef50 6f 20 61 6e 20 38 2d 62 79 74 65 20 62 6f 75 6e  o an 8-byte boun
1ef60 64 61 72 79 2e 20 20 5e 49 66 20 74 68 65 20 73  dary.  ^If the s
1ef70 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
1ef80 6f 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 42 43 4f  o.** SQLITE_DBCO
1ef90 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 69  NFIG_LOOKASIDE i
1efa0 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70 6c 65  s not a multiple
1efb0 20 6f 66 20 38 2c 20 69 74 20 69 73 20 69 6e 74   of 8, it is int
1efc0 65 72 6e 61 6c 6c 79 0a 2a 2a 20 72 6f 75 6e 64  ernally.** round
1efd0 65 64 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 6e  ed down to the n
1efe0 65 78 74 20 73 6d 61 6c 6c 65 72 20 6d 75 6c 74  ext smaller mult
1eff0 69 70 6c 65 20 6f 66 20 38 2e 20 20 5e 28 54 68  iple of 8.  ^(Th
1f000 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  e lookaside memo
1f010 72 79 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74  ry.** configurat
1f020 69 6f 6e 20 66 6f 72 20 61 20 64 61 74 61 62 61  ion for a databa
1f030 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 61  se connection ca
1f040 6e 20 6f 6e 6c 79 20 62 65 20 63 68 61 6e 67 65  n only be change
1f050 64 20 77 68 65 6e 20 74 68 61 74 0a 2a 2a 20 63  d when that.** c
1f060 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6e 6f 74  onnection is not
1f070 20 63 75 72 72 65 6e 74 6c 79 20 75 73 69 6e 67   currently using
1f080 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72   lookaside memor
1f090 79 2c 20 6f 72 20 69 6e 20 6f 74 68 65 72 20 77  y, or in other w
1f0a0 6f 72 64 73 0a 2a 2a 20 77 68 65 6e 20 74 68 65  ords.** when the
1f0b0 20 22 63 75 72 72 65 6e 74 20 76 61 6c 75 65 22   "current value"
1f0c0 20 72 65 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20   returned by.** 
1f0d0 5b 73 71 6c 69 74 65 33 5f 64 62 5f 73 74 61 74  [sqlite3_db_stat
1f0e0 75 73 5d 28 44 2c 5b 53 51 4c 49 54 45 5f 43 4f  us](D,[SQLITE_CO
1f0f0 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 2c  NFIG_LOOKASIDE],
1f100 2e 2e 2e 29 20 69 73 20 7a 65 72 6f 2e 0a 2a 2a  ...) is zero..**
1f110 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20   Any attempt to 
1f120 63 68 61 6e 67 65 20 74 68 65 20 6c 6f 6f 6b 61  change the looka
1f130 73 69 64 65 20 6d 65 6d 6f 72 79 20 63 6f 6e 66  side memory conf
1f140 69 67 75 72 61 74 69 6f 6e 20 77 68 65 6e 20 6c  iguration when l
1f150 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20 6d 65 6d 6f  ookaside.** memo
1f160 72 79 20 69 73 20 69 6e 20 75 73 65 20 6c 65 61  ry is in use lea
1f170 76 65 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ves the configur
1f180 61 74 69 6f 6e 20 75 6e 63 68 61 6e 67 65 64 20  ation unchanged 
1f190 61 6e 64 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20  and returns .** 
1f1a0 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e 29 5e  [SQLITE_BUSY].)^
1f1b0 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e  </dd>.**.** <dt>
1f1c0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1f1d0 45 4e 41 42 4c 45 5f 46 4b 45 59 3c 2f 64 74 3e  ENABLE_FKEY</dt>
1f1e0 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f  .** <dd> ^This o
1f1f0 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
1f200 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62   enable or disab
1f210 6c 65 20 74 68 65 20 65 6e 66 6f 72 63 65 6d 65  le the enforceme
1f220 6e 74 20 6f 66 0a 2a 2a 20 5b 66 6f 72 65 69 67  nt of.** [foreig
1f230 6e 20 6b 65 79 20 63 6f 6e 73 74 72 61 69 6e 74  n key constraint
1f240 73 5d 2e 20 20 54 68 65 72 65 20 73 68 6f 75 6c  s].  There shoul
1f250 64 20 62 65 20 74 77 6f 20 61 64 64 69 74 69 6f  d be two additio
1f260 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a  nal arguments..*
1f270 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  * The first argu
1f280 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e 74 65 67  ment is an integ
1f290 65 72 20 77 68 69 63 68 20 69 73 20 30 20 74 6f  er which is 0 to
1f2a0 20 64 69 73 61 62 6c 65 20 46 4b 20 65 6e 66 6f   disable FK enfo
1f2b0 72 63 65 6d 65 6e 74 2c 0a 2a 2a 20 70 6f 73 69  rcement,.** posi
1f2c0 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 46  tive to enable F
1f2d0 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 72  K enforcement or
1f2e0 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61   negative to lea
1f2f0 76 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e  ve FK enforcemen
1f300 74 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e 20  t.** unchanged. 
1f310 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
1f320 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
1f330 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
1f340 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
1f350 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
1f360 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
1f370 74 68 65 72 20 46 4b 20 65 6e 66 6f 72 63 65 6d  ther FK enforcem
1f380 65 6e 74 20 69 73 20 6f 66 66 20 6f 72 20 6f 6e  ent is off or on
1f390 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68  .** following th
1f3a0 69 73 20 63 61 6c 6c 2e 20 20 54 68 65 20 73 65  is call.  The se
1f3b0 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6d  cond parameter m
1f3c0 61 79 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69  ay be a NULL poi
1f3d0 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20 77 68 69 63  nter, in.** whic
1f3e0 68 20 63 61 73 65 20 74 68 65 20 46 4b 20 65 6e  h case the FK en
1f3f0 66 6f 72 63 65 6d 65 6e 74 20 73 65 74 74 69 6e  forcement settin
1f400 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65  g is not reporte
1f410 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a  d back. </dd>.**
1f420 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44  .** <dt>SQLITE_D
1f430 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54  BCONFIG_ENABLE_T
1f440 52 49 47 47 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c  RIGGER</dt>.** <
1f450 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e  dd> ^This option
1f460 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
1f470 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 5b 43  le or disable [C
1f480 52 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20  REATE TRIGGER | 
1f490 74 72 69 67 67 65 72 73 5d 2e 0a 2a 2a 20 54 68  triggers]..** Th
1f4a0 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77  ere should be tw
1f4b0 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67  o additional arg
1f4c0 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66  uments..** The f
1f4d0 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73  irst argument is
1f4e0 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63   an integer whic
1f4f0 68 20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c  h is 0 to disabl
1f500 65 20 74 72 69 67 67 65 72 73 2c 0a 2a 2a 20 70  e triggers,.** p
1f510 6f 73 69 74 69 76 65 20 74 6f 20 65 6e 61 62 6c  ositive to enabl
1f520 65 20 74 72 69 67 67 65 72 73 20 6f 72 20 6e 65  e triggers or ne
1f530 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20  gative to leave 
1f540 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63 68  the setting unch
1f550 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65  anged..** The se
1f560 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
1f570 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1f580 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77  n integer into w
1f590 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74  hich.** is writt
1f5a0 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64  en 0 or 1 to ind
1f5b0 69 63 61 74 65 20 77 68 65 74 68 65 72 20 74 72  icate whether tr
1f5c0 69 67 67 65 72 73 20 61 72 65 20 64 69 73 61 62  iggers are disab
1f5d0 6c 65 64 20 6f 72 20 65 6e 61 62 6c 65 64 0a 2a  led or enabled.*
1f5e0 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73  * following this
1f5f0 20 63 61 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f   call.  The seco
1f600 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79  nd parameter may
1f610 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   be a NULL point
1f620 65 72 2c 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20  er, in.** which 
1f630 63 61 73 65 20 74 68 65 20 74 72 69 67 67 65 72  case the trigger
1f640 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20   setting is not 
1f650 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c  reported back. <
1f660 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53  /dd>.**.** <dt>S
1f670 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
1f680 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e  NABLE_FTS3_TOKEN
1f690 49 5a 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  IZER</dt>.** <dd
1f6a0 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  > ^This option i
1f6b0 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
1f6c0 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20   or disable the 
1f6d0 74 77 6f 2d 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  two-argument.** 
1f6e0 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 5b  version of the [
1f6f0 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29  fts3_tokenizer()
1f700 5d 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68  ] function which
1f710 20 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 0a   is part of the.
1f720 2a 2a 20 5b 46 54 53 33 5d 20 66 75 6c 6c 2d 74  ** [FTS3] full-t
1f730 65 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e  ext search engin
1f740 65 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 2a 2a 20  e extension..** 
1f750 54 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20  There should be 
1f760 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61  two additional a
1f770 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65  rguments..** The
1f780 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
1f790 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68  is an integer wh
1f7a0 69 63 68 20 69 73 20 30 20 74 6f 20 64 69 73 61  ich is 0 to disa
1f7b0 62 6c 65 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a  ble fts3_tokeniz
1f7c0 65 72 28 29 20 6f 72 0a 2a 2a 20 70 6f 73 69 74  er() or.** posit
1f7d0 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 66 74  ive to enable ft
1f7e0 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
1f7f0 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c 65  r negative to le
1f800 61 76 65 20 74 68 65 20 73 65 74 74 69 6e 67 0a  ave the setting.
1f810 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  ** unchanged..**
1f820 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
1f830 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
1f840 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
1f850 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
1f860 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
1f870 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
1f880 74 68 65 72 20 66 74 73 33 5f 74 6f 6b 65 6e 69  ther fts3_tokeni
1f890 7a 65 72 20 69 73 20 64 69 73 61 62 6c 65 64 20  zer is disabled 
1f8a0 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f  or enabled.** fo
1f8b0 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c  llowing this cal
1f8c0 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70  l.  The second p
1f8d0 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20  arameter may be 
1f8e0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  a NULL pointer, 
1f8f0 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65  in.** which case
1f900 20 74 68 65 20 6e 65 77 20 73 65 74 74 69 6e 67   the new setting
1f910 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65 64   is not reported
1f920 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a   back. </dd>.**.
1f930 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
1f940 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f  CONFIG_ENABLE_LO
1f950 41 44 5f 45 58 54 45 4e 53 49 4f 4e 3c 2f 64 74  AD_EXTENSION</dt
1f960 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20  >.** <dd> ^This 
1f970 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
1f980 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
1f990 62 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ble the [sqlite3
1f9a0 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  _load_extension(
1f9b0 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  )].** interface 
1f9c0 69 6e 64 65 70 65 6e 64 65 6e 74 6c 79 20 6f 66  independently of
1f9d0 20 74 68 65 20 5b 6c 6f 61 64 5f 65 78 74 65 6e   the [load_exten
1f9e0 73 69 6f 6e 28 29 5d 20 53 51 4c 20 66 75 6e 63  sion()] SQL func
1f9f0 74 69 6f 6e 2e 0a 2a 2a 20 54 68 65 20 5b 73 71  tion..** The [sq
1fa00 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61  lite3_enable_loa
1fa10 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 41  d_extension()] A
1fa20 50 49 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69  PI enables or di
1fa30 73 61 62 6c 65 73 20 62 6f 74 68 20 74 68 65 0a  sables both the.
1fa40 2a 2a 20 43 2d 41 50 49 20 5b 73 71 6c 69 74 65  ** C-API [sqlite
1fa50 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  3_load_extension
1fa60 28 29 5d 20 61 6e 64 20 74 68 65 20 53 51 4c 20  ()] and the SQL 
1fa70 66 75 6e 63 74 69 6f 6e 20 5b 6c 6f 61 64 5f 65  function [load_e
1fa80 78 74 65 6e 73 69 6f 6e 28 29 5d 2e 0a 2a 2a 20  xtension()]..** 
1fa90 54 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20  There should be 
1faa0 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61  two additional a
1fab0 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 57 68 65  rguments..** Whe
1fac0 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  n the first argu
1fad0 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 69 6e 74  ment to this int
1fae0 65 72 66 61 63 65 20 69 73 20 31 2c 20 74 68 65  erface is 1, the
1faf0 6e 20 6f 6e 6c 79 20 74 68 65 20 43 2d 41 50 49  n only the C-API
1fb00 20 69 73 0a 2a 2a 20 65 6e 61 62 6c 65 64 20 61   is.** enabled a
1fb10 6e 64 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74  nd the SQL funct
1fb20 69 6f 6e 20 72 65 6d 61 69 6e 73 20 64 69 73 61  ion remains disa
1fb30 62 6c 65 64 2e 20 20 49 66 20 74 68 65 20 66 69  bled.  If the fi
1fb40 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a  rst argument to.
1fb50 2a 2a 20 74 68 69 73 20 69 6e 74 65 72 66 61 63  ** this interfac
1fb60 65 20 69 73 20 30 2c 20 74 68 65 6e 20 62 6f 74  e is 0, then bot
1fb70 68 20 74 68 65 20 43 2d 41 50 49 20 61 6e 64 20  h the C-API and 
1fb80 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  the SQL function
1fb90 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 0a 2a   are disabled..*
1fba0 2a 20 49 66 20 74 68 65 20 66 69 72 73 74 20 61  * If the first a
1fbb0 72 67 75 6d 65 6e 74 20 69 73 20 2d 31 2c 20 74  rgument is -1, t
1fbc0 68 65 6e 20 6e 6f 20 63 68 61 6e 67 65 73 20 61  hen no changes a
1fbd0 72 65 20 6d 61 64 65 20 74 6f 20 73 74 61 74 65  re made to state
1fbe0 20 6f 66 20 65 69 74 68 65 72 20 74 68 65 0a 2a   of either the.*
1fbf0 2a 20 43 2d 41 50 49 20 6f 72 20 74 68 65 20 53  * C-API or the S
1fc00 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  QL function..** 
1fc10 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
1fc20 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65  eter is a pointe
1fc30 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20  r to an integer 
1fc40 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73  into which.** is
1fc50 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20   written 0 or 1 
1fc60 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74  to indicate whet
1fc70 68 65 72 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  her [sqlite3_loa
1fc80 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 69  d_extension()] i
1fc90 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 73 20 64  nterface.** is d
1fca0 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61 62 6c  isabled or enabl
1fcb0 65 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69  ed following thi
1fcc0 73 20 63 61 6c 6c 2e 20 20 54 68 65 20 73 65 63  s call.  The sec
1fcd0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6d 61  ond parameter ma
1fce0 79 0a 2a 2a 20 62 65 20 61 20 4e 55 4c 4c 20 70  y.** be a NULL p
1fcf0 6f 69 6e 74 65 72 2c 20 69 6e 20 77 68 69 63 68  ointer, in which
1fd00 20 63 61 73 65 20 74 68 65 20 6e 65 77 20 73 65   case the new se
1fd10 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70  tting is not rep
1fd20 6f 72 74 65 64 20 62 61 63 6b 2e 0a 2a 2a 20 3c  orted back..** <
1fd30 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53  /dd>.**.** <dt>S
1fd40 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d  QLITE_DBCONFIG_M
1fd50 41 49 4e 44 42 4e 41 4d 45 3c 2f 64 74 3e 0a 2a  AINDBNAME</dt>.*
1fd60 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74  * <dd> ^This opt
1fd70 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 63  ion is used to c
1fd80 68 61 6e 67 65 20 74 68 65 20 6e 61 6d 65 20 6f  hange the name o
1fd90 66 20 74 68 65 20 22 6d 61 69 6e 22 20 64 61 74  f the "main" dat
1fda0 61 62 61 73 65 0a 2a 2a 20 73 63 68 65 6d 61 2e  abase.** schema.
1fdb0 20 20 5e 54 68 65 20 73 6f 6c 65 20 61 72 67 75    ^The sole argu
1fdc0 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65  ment is a pointe
1fdd0 72 20 74 6f 20 61 20 63 6f 6e 73 74 61 6e 74 20  r to a constant 
1fde0 55 54 46 38 20 73 74 72 69 6e 67 0a 2a 2a 20 77  UTF8 string.** w
1fdf0 68 69 63 68 20 77 69 6c 6c 20 62 65 63 6f 6d 65  hich will become
1fe00 20 74 68 65 20 6e 65 77 20 73 63 68 65 6d 61 20   the new schema 
1fe10 6e 61 6d 65 20 69 6e 20 70 6c 61 63 65 20 6f 66  name in place of
1fe20 20 22 6d 61 69 6e 22 2e 20 20 5e 53 51 4c 69 74   "main".  ^SQLit
1fe30 65 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 6d 61  e.** does not ma
1fe40 6b 65 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  ke a copy of the
1fe50 20 6e 65 77 20 6d 61 69 6e 20 73 63 68 65 6d 61   new main schema
1fe60 20 6e 61 6d 65 20 73 74 72 69 6e 67 2c 20 73 6f   name string, so
1fe70 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
1fe80 0a 2a 2a 20 6d 75 73 74 20 65 6e 73 75 72 65 20  .** must ensure 
1fe90 74 68 61 74 20 74 68 65 20 61 72 67 75 6d 65 6e  that the argumen
1fea0 74 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68  t passed into th
1feb0 69 73 20 44 42 43 4f 4e 46 49 47 20 6f 70 74 69  is DBCONFIG opti
1fec0 6f 6e 20 69 73 20 75 6e 63 68 61 6e 67 65 64 0a  on is unchanged.
1fed0 2a 2a 20 75 6e 74 69 6c 20 61 66 74 65 72 20 74  ** until after t
1fee0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
1fef0 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e 0a 2a  ection closes..*
1ff00 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64  * </dd>.**.** <d
1ff10 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  t>SQLITE_DBCONFI
1ff20 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f  G_NO_CKPT_ON_CLO
1ff30 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  SE</dt>.** <dd> 
1ff40 55 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20  Usually, when a 
1ff50 64 61 74 61 62 61 73 65 20 69 6e 20 77 61 6c 20  database in wal 
1ff60 6d 6f 64 65 20 69 73 20 63 6c 6f 73 65 64 20 6f  mode is closed o
1ff70 72 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20  r detached from 
1ff80 61 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68  a .** database h
1ff90 61 6e 64 6c 65 2c 20 53 51 4c 69 74 65 20 63 68  andle, SQLite ch
1ffa0 65 63 6b 73 20 69 66 20 74 68 69 73 20 77 69 6c  ecks if this wil
1ffb0 6c 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65 72  l mean that ther
1ffc0 65 20 61 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a  e are now no .**
1ffd0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20   connections at 
1ffe0 61 6c 6c 20 74 6f 20 74 68 65 20 64 61 74 61 62  all to the datab
1fff0 61 73 65 2e 20 49 66 20 73 6f 2c 20 69 74 20 70  ase. If so, it p
20000 65 72 66 6f 72 6d 73 20 61 20 63 68 65 63 6b 70  erforms a checkp
20010 6f 69 6e 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69  oint .** operati
20020 6f 6e 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e  on before closin
20030 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  g the connection
20040 2e 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61  . This option ma
20050 79 20 62 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20  y be used to.** 
20060 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 62 65  override this be
20070 68 61 76 69 6f 75 72 2e 20 54 68 65 20 66 69 72  haviour. The fir
20080 73 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73  st parameter pas
20090 73 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72  sed to this oper
200a0 61 74 69 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69  ation.** is an i
200b0 6e 74 65 67 65 72 20 2d 20 6e 6f 6e 2d 7a 65 72  nteger - non-zer
200c0 6f 20 74 6f 20 64 69 73 61 62 6c 65 20 63 68 65  o to disable che
200d0 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73  ckpoints-on-clos
200e0 65 2c 20 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a  e, or zero (the.
200f0 2a 2a 20 64 65 66 61 75 6c 74 29 20 74 6f 20 65  ** default) to e
20100 6e 61 62 6c 65 20 74 68 65 6d 2e 20 54 68 65 20  nable them. The 
20110 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
20120 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
20130 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69   an integer.** i
20140 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69  nto which is wri
20150 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69  tten 0 or 1 to i
20160 6e 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20  ndicate whether 
20170 63 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63  checkpoints-on-c
20180 6c 6f 73 65 0a 2a 2a 20 68 61 76 65 20 62 65 65  lose.** have bee
20190 6e 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69  n disabled - 0 i
201a0 66 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 64  f they are not d
201b0 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20 74 68  isabled, 1 if th
201c0 65 79 20 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e  ey are..** </dd>
201d0 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  .**.** <dt>SQLIT
201e0 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
201f0 45 5f 51 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c  E_QPSG</dt>.** <
20200 64 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  dd>^(The SQLITE_
20210 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
20220 51 50 53 47 20 6f 70 74 69 6f 6e 20 61 63 74 69  QPSG option acti
20230 76 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76  vates or deactiv
20240 61 74 65 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65  ates.** the [que
20250 72 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69  ry planner stabi
20260 6c 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20  lity guarantee] 
20270 28 51 50 53 47 29 2e 20 20 57 68 65 6e 20 74 68  (QPSG).  When th
20280 65 20 51 50 53 47 20 69 73 20 61 63 74 69 76 65  e QPSG is active
20290 2c 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 53 51  ,.** a single SQ
202a0 4c 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e  L query statemen
202b0 74 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73  t will always us
202c0 65 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72  e the same algor
202d0 69 74 68 6d 20 72 65 67 61 72 64 6c 65 73 73 0a  ithm regardless.
202e0 2a 2a 20 6f 66 20 76 61 6c 75 65 73 20 6f 66 20  ** of values of 
202f0 5b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72  [bound parameter
20300 73 5d 2e 29 5e 20 54 68 65 20 51 50 53 47 20 64  s].)^ The QPSG d
20310 69 73 61 62 6c 65 73 20 73 6f 6d 65 20 71 75 65  isables some que
20320 72 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73  ry optimizations
20330 0a 2a 2a 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74  .** that look at
20340 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 62   the values of b
20350 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 2c  ound parameters,
20360 20 77 68 69 63 68 20 63 61 6e 20 6d 61 6b 65 20   which can make 
20370 73 6f 6d 65 20 71 75 65 72 69 65 73 0a 2a 2a 20  some queries.** 
20380 73 6c 6f 77 65 72 2e 20 20 42 75 74 20 74 68 65  slower.  But the
20390 20 51 50 53 47 20 68 61 73 20 74 68 65 20 61 64   QPSG has the ad
203a0 76 61 6e 74 61 67 65 20 6f 66 20 6d 6f 72 65 20  vantage of more 
203b0 70 72 65 64 69 63 74 61 62 6c 65 20 62 65 68 61  predictable beha
203c0 76 69 6f 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74  vior.  With.** t
203d0 68 65 20 51 50 53 47 20 61 63 74 69 76 65 2c 20  he QPSG active, 
203e0 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61  SQLite will alwa
203f0 79 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20  ys use the same 
20400 71 75 65 72 79 20 70 6c 61 6e 20 69 6e 20 74 68  query plan in th
20410 65 20 66 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61  e field as.** wa
20420 73 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65  s used during te
20430 73 74 69 6e 67 20 69 6e 20 74 68 65 20 6c 61 62  sting in the lab
20440 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ..** </dd>.**.**
20450 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </dl>.*/.#defin
20460 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
20470 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 20 20 20 20  G_MAINDBNAME    
20480 20 20 20 20 20 20 20 20 31 30 30 30 20 2f 2a 20          1000 /* 
20490 63 6f 6e 73 74 20 63 68 61 72 2a 20 2a 2f 0a 23  const char* */.#
204a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42  define SQLITE_DB
204b0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
204c0 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30 30               100
204d0 31 20 2f 2a 20 76 6f 69 64 2a 20 69 6e 74 20 69  1 /* void* int i
204e0 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
204f0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20500 41 42 4c 45 5f 46 4b 45 59 20 20 20 20 20 20 20  ABLE_FKEY       
20510 20 20 20 20 31 30 30 32 20 2f 2a 20 69 6e 74 20      1002 /* int 
20520 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
20530 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
20540 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 20 20  ENABLE_TRIGGER  
20550 20 20 20 20 20 20 31 30 30 33 20 2f 2a 20 69 6e        1003 /* in
20560 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
20570 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
20580 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f  G_ENABLE_FTS3_TO
20590 4b 45 4e 49 5a 45 52 20 31 30 30 34 20 2f 2a 20  KENIZER 1004 /* 
205a0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
205b0 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
205c0 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f  FIG_ENABLE_LOAD_
205d0 45 58 54 45 4e 53 49 4f 4e 20 31 30 30 35 20 2f  EXTENSION 1005 /
205e0 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
205f0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
20600 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
20610 5f 43 4c 4f 53 45 20 20 20 20 20 20 31 30 30 36  _CLOSE      1006
20620 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
20630 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
20640 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
20650 50 53 47 20 20 20 20 20 20 20 20 20 20 20 31 30  PSG           10
20660 30 37 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  07 /* int int* *
20670 2f 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  /.../*.** CAPI3R
20680 45 46 3a 20 45 6e 61 62 6c 65 20 4f 72 20 44 69  EF: Enable Or Di
20690 73 61 62 6c 65 20 45 78 74 65 6e 64 65 64 20 52  sable Extended R
206a0 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4d  esult Codes.** M
206b0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
206c0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
206d0 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c  3_extended_resul
206e0 74 5f 63 6f 64 65 73 28 29 20 72 6f 75 74 69 6e  t_codes() routin
206f0 65 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69 73  e enables or dis
20700 61 62 6c 65 73 20 74 68 65 0a 2a 2a 20 5b 65 78  ables the.** [ex
20710 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
20720 64 65 73 5d 20 66 65 61 74 75 72 65 20 6f 66 20  des] feature of 
20730 53 51 4c 69 74 65 2e 20 5e 54 68 65 20 65 78 74  SQLite. ^The ext
20740 65 6e 64 65 64 20 72 65 73 75 6c 74 0a 2a 2a 20  ended result.** 
20750 63 6f 64 65 73 20 61 72 65 20 64 69 73 61 62 6c  codes are disabl
20760 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 66 6f  ed by default fo
20770 72 20 68 69 73 74 6f 72 69 63 61 6c 20 63 6f 6d  r historical com
20780 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2f 0a 53  patibility..*/.S
20790 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
207a0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 72  lite3_extended_r
207b0 65 73 75 6c 74 5f 63 6f 64 65 73 28 73 71 6c 69  esult_codes(sqli
207c0 74 65 33 2a 2c 20 69 6e 74 20 6f 6e 6f 66 66 29  te3*, int onoff)
207d0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
207e0 46 3a 20 4c 61 73 74 20 49 6e 73 65 72 74 20 52  F: Last Insert R
207f0 6f 77 69 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  owid.** METHOD: 
20800 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 45  sqlite3.**.** ^E
20810 61 63 68 20 65 6e 74 72 79 20 69 6e 20 6d 6f 73  ach entry in mos
20820 74 20 53 51 4c 69 74 65 20 74 61 62 6c 65 73 20  t SQLite tables 
20830 28 65 78 63 65 70 74 20 66 6f 72 20 5b 57 49 54  (except for [WIT
20840 48 4f 55 54 20 52 4f 57 49 44 5d 20 74 61 62 6c  HOUT ROWID] tabl
20850 65 73 29 0a 2a 2a 20 68 61 73 20 61 20 75 6e 69  es).** has a uni
20860 71 75 65 20 36 34 2d 62 69 74 20 73 69 67 6e 65  que 64-bit signe
20870 64 0a 2a 2a 20 69 6e 74 65 67 65 72 20 6b 65 79  d.** integer key
20880 20 63 61 6c 6c 65 64 20 74 68 65 20 5b 52 4f 57   called the [ROW
20890 49 44 20 7c 20 22 72 6f 77 69 64 22 5d 2e 20 5e  ID | "rowid"]. ^
208a0 54 68 65 20 72 6f 77 69 64 20 69 73 20 61 6c 77  The rowid is alw
208b0 61 79 73 20 61 76 61 69 6c 61 62 6c 65 0a 2a 2a  ays available.**
208c0 20 61 73 20 61 6e 20 75 6e 64 65 63 6c 61 72 65   as an undeclare
208d0 64 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 64 20 52  d column named R
208e0 4f 57 49 44 2c 20 4f 49 44 2c 20 6f 72 20 5f 52  OWID, OID, or _R
208f0 4f 57 49 44 5f 20 61 73 20 6c 6f 6e 67 20 61 73  OWID_ as long as
20900 20 74 68 6f 73 65 0a 2a 2a 20 6e 61 6d 65 73 20   those.** names 
20910 61 72 65 20 6e 6f 74 20 61 6c 73 6f 20 75 73 65  are not also use
20920 64 20 62 79 20 65 78 70 6c 69 63 69 74 6c 79 20  d by explicitly 
20930 64 65 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e 73  declared columns
20940 2e 20 5e 49 66 0a 2a 2a 20 74 68 65 20 74 61 62  . ^If.** the tab
20950 6c 65 20 68 61 73 20 61 20 63 6f 6c 75 6d 6e 20  le has a column 
20960 6f 66 20 74 79 70 65 20 5b 49 4e 54 45 47 45 52  of type [INTEGER
20970 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 74 68   PRIMARY KEY] th
20980 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 0a 2a  en that column.*
20990 2a 20 69 73 20 61 6e 6f 74 68 65 72 20 61 6c 69  * is another ali
209a0 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69 64  as for the rowid
209b0 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
209c0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
209d0 5f 72 6f 77 69 64 28 44 29 20 69 6e 74 65 72 66  _rowid(D) interf
209e0 61 63 65 20 75 73 75 61 6c 6c 79 20 72 65 74 75  ace usually retu
209f0 72 6e 73 20 74 68 65 20 5b 72 6f 77 69 64 5d 20  rns the [rowid] 
20a00 6f 66 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20 72  of.** the most r
20a10 65 63 65 6e 74 20 73 75 63 63 65 73 73 66 75 6c  ecent successful
20a20 20 5b 49 4e 53 45 52 54 5d 20 69 6e 74 6f 20 61   [INSERT] into a
20a30 20 72 6f 77 69 64 20 74 61 62 6c 65 20 6f 72 20   rowid table or 
20a40 5b 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d 0a  [virtual table].
20a50 2a 2a 20 6f 6e 20 64 61 74 61 62 61 73 65 20 63  ** on database c
20a60 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 5e 49 6e  onnection D. ^In
20a70 73 65 72 74 73 20 69 6e 74 6f 20 5b 57 49 54 48  serts into [WITH
20a80 4f 55 54 20 52 4f 57 49 44 5d 20 74 61 62 6c 65  OUT ROWID] table
20a90 73 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 72 65 63  s are not.** rec
20aa0 6f 72 64 65 64 2e 20 5e 49 66 20 6e 6f 20 73 75  orded. ^If no su
20ab0 63 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52 54  ccessful [INSERT
20ac0 5d 73 20 69 6e 74 6f 20 72 6f 77 69 64 20 74 61  ]s into rowid ta
20ad0 62 6c 65 73 20 68 61 76 65 20 65 76 65 72 20 6f  bles have ever o
20ae0 63 63 75 72 72 65 64 20 0a 2a 2a 20 6f 6e 20 74  ccurred .** on t
20af0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
20b00 65 63 74 69 6f 6e 20 44 2c 20 74 68 65 6e 20 73  ection D, then s
20b10 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
20b20 72 74 5f 72 6f 77 69 64 28 44 29 20 72 65 74 75  rt_rowid(D) retu
20b30 72 6e 73 20 0a 2a 2a 20 7a 65 72 6f 2e 0a 2a 2a  rns .** zero..**
20b40 0a 2a 2a 20 41 73 20 77 65 6c 6c 20 61 73 20 62  .** As well as b
20b50 65 69 6e 67 20 73 65 74 20 61 75 74 6f 6d 61 74  eing set automat
20b60 69 63 61 6c 6c 79 20 61 73 20 72 6f 77 73 20 61  ically as rows a
20b70 72 65 20 69 6e 73 65 72 74 65 64 20 69 6e 74 6f  re inserted into
20b80 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 74 61 62   database.** tab
20b90 6c 65 73 2c 20 74 68 65 20 76 61 6c 75 65 20 72  les, the value r
20ba0 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 20  eturned by this 
20bb0 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65 20  function may be 
20bc0 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20 62  set explicitly b
20bd0 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 65  y.** [sqlite3_se
20be0 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  t_last_insert_ro
20bf0 77 69 64 28 29 5d 0a 2a 2a 0a 2a 2a 20 53 6f 6d  wid()].**.** Som
20c00 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 20  e virtual table 
20c10 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
20c20 6d 61 79 20 49 4e 53 45 52 54 20 72 6f 77 73 20  may INSERT rows 
20c30 69 6e 74 6f 20 72 6f 77 69 64 20 74 61 62 6c 65  into rowid table
20c40 73 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20  s as.** part of 
20c50 63 6f 6d 6d 69 74 74 69 6e 67 20 61 20 74 72 61  committing a tra
20c60 6e 73 61 63 74 69 6f 6e 20 28 65 2e 67 2e 20 74  nsaction (e.g. t
20c70 6f 20 66 6c 75 73 68 20 64 61 74 61 20 61 63 63  o flush data acc
20c80 75 6d 75 6c 61 74 65 64 20 69 6e 20 6d 65 6d 6f  umulated in memo
20c90 72 79 0a 2a 2a 20 74 6f 20 64 69 73 6b 29 2e 20  ry.** to disk). 
20ca0 49 6e 20 74 68 69 73 20 63 61 73 65 20 73 75 62  In this case sub
20cb0 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f  sequent calls to
20cc0 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72   this function r
20cd0 65 74 75 72 6e 20 74 68 65 20 72 6f 77 69 64 0a  eturn the rowid.
20ce0 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ** associated wi
20cf0 74 68 20 74 68 65 73 65 20 69 6e 74 65 72 6e 61  th these interna
20d00 6c 20 49 4e 53 45 52 54 20 6f 70 65 72 61 74 69  l INSERT operati
20d10 6f 6e 73 2c 20 77 68 69 63 68 20 6c 65 61 64 73  ons, which leads
20d20 20 74 6f 20 0a 2a 2a 20 75 6e 69 6e 74 75 69 74   to .** unintuit
20d30 69 76 65 20 72 65 73 75 6c 74 73 2e 20 56 69 72  ive results. Vir
20d40 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
20d50 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68 61 74 20  mentations that 
20d60 64 6f 20 77 72 69 74 65 20 74 6f 20 72 6f 77 69  do write to rowi
20d70 64 0a 2a 2a 20 74 61 62 6c 65 73 20 69 6e 20 74  d.** tables in t
20d80 68 69 73 20 77 61 79 20 63 61 6e 20 61 76 6f 69  his way can avoi
20d90 64 20 74 68 69 73 20 70 72 6f 62 6c 65 6d 20 62  d this problem b
20da0 79 20 72 65 73 74 6f 72 69 6e 67 20 74 68 65 20  y restoring the 
20db0 6f 72 69 67 69 6e 61 6c 20 0a 2a 2a 20 72 6f 77  original .** row
20dc0 69 64 20 76 61 6c 75 65 20 75 73 69 6e 67 20 5b  id value using [
20dd0 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74  sqlite3_set_last
20de0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d  _insert_rowid()]
20df0 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e   before returnin
20e00 67 20 0a 2a 2a 20 63 6f 6e 74 72 6f 6c 20 74 6f  g .** control to
20e10 20 74 68 65 20 75 73 65 72 2e 0a 2a 2a 0a 2a 2a   the user..**.**
20e20 20 5e 28 49 66 20 61 6e 20 5b 49 4e 53 45 52 54   ^(If an [INSERT
20e30 5d 20 6f 63 63 75 72 73 20 77 69 74 68 69 6e 20  ] occurs within 
20e40 61 20 74 72 69 67 67 65 72 20 74 68 65 6e 20 74  a trigger then t
20e50 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c 6c  his routine will
20e60 20 0a 2a 2a 20 72 65 74 75 72 6e 20 74 68 65 20   .** return the 
20e70 5b 72 6f 77 69 64 5d 20 6f 66 20 74 68 65 20 69  [rowid] of the i
20e80 6e 73 65 72 74 65 64 20 72 6f 77 20 61 73 20 6c  nserted row as l
20e90 6f 6e 67 20 61 73 20 74 68 65 20 74 72 69 67 67  ong as the trigg
20ea0 65 72 20 69 73 20 0a 2a 2a 20 72 75 6e 6e 69 6e  er is .** runnin
20eb0 67 2e 20 4f 6e 63 65 20 74 68 65 20 74 72 69 67  g. Once the trig
20ec0 67 65 72 20 70 72 6f 67 72 61 6d 20 65 6e 64 73  ger program ends
20ed0 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  , the value retu
20ee0 72 6e 65 64 20 0a 2a 2a 20 62 79 20 74 68 69 73  rned .** by this
20ef0 20 72 6f 75 74 69 6e 65 20 72 65 76 65 72 74 73   routine reverts
20f00 20 74 6f 20 77 68 61 74 20 69 74 20 77 61 73 20   to what it was 
20f10 62 65 66 6f 72 65 20 74 68 65 20 74 72 69 67 67  before the trigg
20f20 65 72 20 77 61 73 20 66 69 72 65 64 2e 29 5e 0a  er was fired.)^.
20f30 2a 2a 0a 2a 2a 20 5e 41 6e 20 5b 49 4e 53 45 52  **.** ^An [INSER
20f40 54 5d 20 74 68 61 74 20 66 61 69 6c 73 20 64 75  T] that fails du
20f50 65 20 74 6f 20 61 20 63 6f 6e 73 74 72 61 69 6e  e to a constrain
20f60 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e  t violation is n
20f70 6f 74 20 61 0a 2a 2a 20 73 75 63 63 65 73 73 66  ot a.** successf
20f80 75 6c 20 5b 49 4e 53 45 52 54 5d 20 61 6e 64 20  ul [INSERT] and 
20f90 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65 20  does not change 
20fa0 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
20fb0 65 64 20 62 79 20 74 68 69 73 0a 2a 2a 20 72 6f  ed by this.** ro
20fc0 75 74 69 6e 65 2e 20 20 5e 54 68 75 73 20 49 4e  utine.  ^Thus IN
20fd0 53 45 52 54 20 4f 52 20 46 41 49 4c 2c 20 49 4e  SERT OR FAIL, IN
20fe0 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 2c 20  SERT OR IGNORE, 
20ff0 49 4e 53 45 52 54 20 4f 52 20 52 4f 4c 4c 42 41  INSERT OR ROLLBA
21000 43 4b 2c 0a 2a 2a 20 61 6e 64 20 49 4e 53 45 52  CK,.** and INSER
21010 54 20 4f 52 20 41 42 4f 52 54 20 6d 61 6b 65 20  T OR ABORT make 
21020 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68  no changes to th
21030 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f  e return value o
21040 66 20 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69 6e  f this.** routin
21050 65 20 77 68 65 6e 20 74 68 65 69 72 20 69 6e 73  e when their ins
21060 65 72 74 69 6f 6e 20 66 61 69 6c 73 2e 20 20 5e  ertion fails.  ^
21070 28 57 68 65 6e 20 49 4e 53 45 52 54 20 4f 52 20  (When INSERT OR 
21080 52 45 50 4c 41 43 45 0a 2a 2a 20 65 6e 63 6f 75  REPLACE.** encou
21090 6e 74 65 72 73 20 61 20 63 6f 6e 73 74 72 61 69  nters a constrai
210a0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 2c 20 69 74  nt violation, it
210b0 20 64 6f 65 73 20 6e 6f 74 20 66 61 69 6c 2e 20   does not fail. 
210c0 20 54 68 65 0a 2a 2a 20 49 4e 53 45 52 54 20 63   The.** INSERT c
210d0 6f 6e 74 69 6e 75 65 73 20 74 6f 20 63 6f 6d 70  ontinues to comp
210e0 6c 65 74 69 6f 6e 20 61 66 74 65 72 20 64 65 6c  letion after del
210f0 65 74 69 6e 67 20 72 6f 77 73 20 74 68 61 74 20  eting rows that 
21100 63 61 75 73 65 64 0a 2a 2a 20 74 68 65 20 63 6f  caused.** the co
21110 6e 73 74 72 61 69 6e 74 20 70 72 6f 62 6c 65 6d  nstraint problem
21120 20 73 6f 20 49 4e 53 45 52 54 20 4f 52 20 52 45   so INSERT OR RE
21130 50 4c 41 43 45 20 77 69 6c 6c 20 61 6c 77 61 79  PLACE will alway
21140 73 20 63 68 61 6e 67 65 0a 2a 2a 20 74 68 65 20  s change.** the 
21150 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20  return value of 
21160 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 2e 29  this interface.)
21170 5e 0a 2a 2a 0a 2a 2a 20 5e 46 6f 72 20 74 68 65  ^.**.** ^For the
21180 20 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68 69   purposes of thi
21190 73 20 72 6f 75 74 69 6e 65 2c 20 61 6e 20 5b 49  s routine, an [I
211a0 4e 53 45 52 54 5d 20 69 73 20 63 6f 6e 73 69 64  NSERT] is consid
211b0 65 72 65 64 20 74 6f 0a 2a 2a 20 62 65 20 73 75  ered to.** be su
211c0 63 63 65 73 73 66 75 6c 20 65 76 65 6e 20 69 66  ccessful even if
211d0 20 69 74 20 69 73 20 73 75 62 73 65 71 75 65 6e   it is subsequen
211e0 74 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e  tly rolled back.
211f0 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e 63  .**.** This func
21200 74 69 6f 6e 20 69 73 20 61 63 63 65 73 73 69 62  tion is accessib
21210 6c 65 20 74 6f 20 53 51 4c 20 73 74 61 74 65 6d  le to SQL statem
21220 65 6e 74 73 20 76 69 61 20 74 68 65 0a 2a 2a 20  ents via the.** 
21230 5b 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  [last_insert_row
21240 69 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  id() SQL functio
21250 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 73  n]..**.** If a s
21260 65 70 61 72 61 74 65 20 74 68 72 65 61 64 20 70  eparate thread p
21270 65 72 66 6f 72 6d 73 20 61 20 6e 65 77 20 5b 49  erforms a new [I
21280 4e 53 45 52 54 5d 20 6f 6e 20 74 68 65 20 73 61  NSERT] on the sa
21290 6d 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63  me.** database c
212a0 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69 6c 65 20  onnection while 
212b0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73  the [sqlite3_las
212c0 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
212d0 5d 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69 73  ].** function is
212e0 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20 74 68 75   running and thu
212f0 73 20 63 68 61 6e 67 65 73 20 74 68 65 20 6c 61  s changes the la
21300 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77 69 64  st insert [rowid
21310 5d 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 76  ],.** then the v
21320 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
21330 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69   [sqlite3_last_i
21340 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20 69  nsert_rowid()] i
21350 73 0a 2a 2a 20 75 6e 70 72 65 64 69 63 74 61 62  s.** unpredictab
21360 6c 65 20 61 6e 64 20 6d 69 67 68 74 20 6e 6f 74  le and might not
21370 20 65 71 75 61 6c 20 65 69 74 68 65 72 20 74 68   equal either th
21380 65 20 6f 6c 64 20 6f 72 20 74 68 65 20 6e 65 77  e old or the new
21390 0a 2a 2a 20 6c 61 73 74 20 69 6e 73 65 72 74 20  .** last insert 
213a0 5b 72 6f 77 69 64 5d 2e 0a 2a 2f 0a 53 51 4c 49  [rowid]..*/.SQLI
213b0 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69  TE_API sqlite3_i
213c0 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6c 61 73  nt64 sqlite3_las
213d0 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 73  t_insert_rowid(s
213e0 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
213f0 20 43 41 50 49 33 52 45 46 3a 20 53 65 74 20 74   CAPI3REF: Set t
21400 68 65 20 4c 61 73 74 20 49 6e 73 65 72 74 20 52  he Last Insert R
21410 6f 77 69 64 20 76 61 6c 75 65 2e 0a 2a 2a 20 4d  owid value..** M
21420 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
21430 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
21440 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74  _set_last_insert
21450 5f 72 6f 77 69 64 28 44 2c 20 52 29 20 6d 65 74  _rowid(D, R) met
21460 68 6f 64 20 61 6c 6c 6f 77 73 20 74 68 65 20 61  hod allows the a
21470 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a 2a  pplication to.**
21480 20 73 65 74 20 74 68 65 20 76 61 6c 75 65 20 72   set the value r
21490 65 74 75 72 6e 65 64 20 62 79 20 63 61 6c 6c 69  eturned by calli
214a0 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  ng sqlite3_last_
214b0 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29 20  insert_rowid(D) 
214c0 74 6f 20 52 20 0a 2a 2a 20 77 69 74 68 6f 75 74  to R .** without
214d0 20 69 6e 73 65 72 74 69 6e 67 20 61 20 72 6f 77   inserting a row
214e0 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 62 61   into the databa
214f0 73 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  se..*/.SQLITE_AP
21500 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 73  I void sqlite3_s
21510 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  et_last_insert_r
21520 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 2c 73 71  owid(sqlite3*,sq
21530 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b 0a 0a 2f  lite3_int64);../
21540 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
21550 6f 75 6e 74 20 54 68 65 20 4e 75 6d 62 65 72 20  ount The Number 
21560 4f 66 20 52 6f 77 73 20 4d 6f 64 69 66 69 65 64  Of Rows Modified
21570 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
21580 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20  te3.**.** ^This 
21590 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
215a0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
215b0 6f 77 73 20 6d 6f 64 69 66 69 65 64 2c 20 69 6e  ows modified, in
215c0 73 65 72 74 65 64 20 6f 72 0a 2a 2a 20 64 65 6c  serted or.** del
215d0 65 74 65 64 20 62 79 20 74 68 65 20 6d 6f 73 74  eted by the most
215e0 20 72 65 63 65 6e 74 6c 79 20 63 6f 6d 70 6c 65   recently comple
215f0 74 65 64 20 49 4e 53 45 52 54 2c 20 55 50 44 41  ted INSERT, UPDA
21600 54 45 20 6f 72 20 44 45 4c 45 54 45 0a 2a 2a 20  TE or DELETE.** 
21610 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65  statement on the
21620 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
21630 74 69 6f 6e 20 73 70 65 63 69 66 69 65 64 20 62  tion specified b
21640 79 20 74 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d  y the only param
21650 65 74 65 72 2e 0a 2a 2a 20 5e 45 78 65 63 75 74  eter..** ^Execut
21660 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 74 79  ing any other ty
21670 70 65 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d  pe of SQL statem
21680 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 6d 6f 64  ent does not mod
21690 69 66 79 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a  ify the value.**
216a0 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69   returned by thi
216b0 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a  s function..**.*
216c0 2a 20 5e 4f 6e 6c 79 20 63 68 61 6e 67 65 73 20  * ^Only changes 
216d0 6d 61 64 65 20 64 69 72 65 63 74 6c 79 20 62 79  made directly by
216e0 20 74 68 65 20 49 4e 53 45 52 54 2c 20 55 50 44   the INSERT, UPD
216f0 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74  ATE or DELETE st
21700 61 74 65 6d 65 6e 74 20 61 72 65 0a 2a 2a 20 63  atement are.** c
21710 6f 6e 73 69 64 65 72 65 64 20 2d 20 61 75 78 69  onsidered - auxi
21720 6c 69 61 72 79 20 63 68 61 6e 67 65 73 20 63 61  liary changes ca
21730 75 73 65 64 20 62 79 20 5b 43 52 45 41 54 45 20  used by [CREATE 
21740 54 52 49 47 47 45 52 20 7c 20 74 72 69 67 67 65  TRIGGER | trigge
21750 72 73 5d 2c 20 0a 2a 2a 20 5b 66 6f 72 65 69 67  rs], .** [foreig
21760 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 20 6f  n key actions] o
21770 72 20 5b 52 45 50 4c 41 43 45 5d 20 63 6f 6e 73  r [REPLACE] cons
21780 74 72 61 69 6e 74 20 72 65 73 6f 6c 75 74 69 6f  traint resolutio
21790 6e 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65  n are not counte
217a0 64 2e 0a 2a 2a 20 0a 2a 2a 20 43 68 61 6e 67 65  d..** .** Change
217b0 73 20 74 6f 20 61 20 76 69 65 77 20 74 68 61 74  s to a view that
217c0 20 61 72 65 20 69 6e 74 65 72 63 65 70 74 65 64   are intercepted
217d0 20 62 79 20 0a 2a 2a 20 5b 49 4e 53 54 45 41 44   by .** [INSTEAD
217e0 20 4f 46 20 74 72 69 67 67 65 72 20 7c 20 49 4e   OF trigger | IN
217f0 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
21800 73 5d 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74  s] are not count
21810 65 64 2e 20 5e 54 68 65 20 76 61 6c 75 65 20 0a  ed. ^The value .
21820 2a 2a 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  ** returned by s
21830 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
21840 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66 74   immediately aft
21850 65 72 20 61 6e 20 49 4e 53 45 52 54 2c 20 55 50  er an INSERT, UP
21860 44 41 54 45 20 6f 72 20 0a 2a 2a 20 44 45 4c 45  DATE or .** DELE
21870 54 45 20 73 74 61 74 65 6d 65 6e 74 20 72 75 6e  TE statement run
21880 20 6f 6e 20 61 20 76 69 65 77 20 69 73 20 61 6c   on a view is al
21890 77 61 79 73 20 7a 65 72 6f 2e 20 4f 6e 6c 79 20  ways zero. Only 
218a0 63 68 61 6e 67 65 73 20 6d 61 64 65 20 74 6f 20  changes made to 
218b0 72 65 61 6c 20 0a 2a 2a 20 74 61 62 6c 65 73 20  real .** tables 
218c0 61 72 65 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a  are counted..**.
218d0 2a 2a 20 54 68 69 6e 67 73 20 61 72 65 20 6d 6f  ** Things are mo
218e0 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64 20 69  re complicated i
218f0 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 68  f the sqlite3_ch
21900 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e  anges() function
21910 20 69 73 0a 2a 2a 20 65 78 65 63 75 74 65 64 20   is.** executed 
21920 77 68 69 6c 65 20 61 20 74 72 69 67 67 65 72 20  while a trigger 
21930 70 72 6f 67 72 61 6d 20 69 73 20 72 75 6e 6e 69  program is runni
21940 6e 67 2e 20 54 68 69 73 20 6d 61 79 20 68 61 70  ng. This may hap
21950 70 65 6e 20 69 66 20 74 68 65 0a 2a 2a 20 70 72  pen if the.** pr
21960 6f 67 72 61 6d 20 75 73 65 73 20 74 68 65 20 5b  ogram uses the [
21970 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66 75  changes() SQL fu
21980 6e 63 74 69 6f 6e 5d 2c 20 6f 72 20 69 66 20 73  nction], or if s
21990 6f 6d 65 20 6f 74 68 65 72 20 63 61 6c 6c 62 61  ome other callba
219a0 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69  ck.** function i
219b0 6e 76 6f 6b 65 73 20 73 71 6c 69 74 65 33 5f 63  nvokes sqlite3_c
219c0 68 61 6e 67 65 73 28 29 20 64 69 72 65 63 74 6c  hanges() directl
219d0 79 2e 20 45 73 73 65 6e 74 69 61 6c 6c 79 3a 0a  y. Essentially:.
219e0 2a 2a 20 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 20  ** .** <ul>.**  
219f0 20 3c 6c 69 3e 20 5e 28 42 65 66 6f 72 65 20 65   <li> ^(Before e
21a00 6e 74 65 72 69 6e 67 20 61 20 74 72 69 67 67 65  ntering a trigge
21a10 72 20 70 72 6f 67 72 61 6d 20 74 68 65 20 76 61  r program the va
21a20 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 0a  lue returned by.
21a30 2a 2a 20 20 20 20 20 20 20 20 73 71 6c 69 74 65  **        sqlite
21a40 33 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63  3_changes() func
21a50 74 69 6f 6e 20 69 73 20 73 61 76 65 64 2e 20 41  tion is saved. A
21a60 66 74 65 72 20 74 68 65 20 74 72 69 67 67 65 72  fter the trigger
21a70 20 70 72 6f 67 72 61 6d 20 0a 2a 2a 20 20 20 20   program .**    
21a80 20 20 20 20 68 61 73 20 66 69 6e 69 73 68 65 64      has finished
21a90 2c 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76  , the original v
21aa0 61 6c 75 65 20 69 73 20 72 65 73 74 6f 72 65 64  alue is restored
21ab0 2e 29 5e 0a 2a 2a 20 0a 2a 2a 20 20 20 3c 6c 69  .)^.** .**   <li
21ac0 3e 20 5e 28 57 69 74 68 69 6e 20 61 20 74 72 69  > ^(Within a tri
21ad0 67 67 65 72 20 70 72 6f 67 72 61 6d 20 65 61 63  gger program eac
21ae0 68 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45  h INSERT, UPDATE
21af0 20 61 6e 64 20 44 45 4c 45 54 45 20 0a 2a 2a 20   and DELETE .** 
21b00 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e 74         statement
21b10 20 73 65 74 73 20 74 68 65 20 76 61 6c 75 65 20   sets the value 
21b20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69  returned by sqli
21b30 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 0a 2a  te3_changes() .*
21b40 2a 20 20 20 20 20 20 20 20 75 70 6f 6e 20 63 6f  *        upon co
21b50 6d 70 6c 65 74 69 6f 6e 20 61 73 20 6e 6f 72 6d  mpletion as norm
21b60 61 6c 2e 20 4f 66 20 63 6f 75 72 73 65 2c 20 74  al. Of course, t
21b70 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 6e  his value will n
21b80 6f 74 20 69 6e 63 6c 75 64 65 20 0a 2a 2a 20 20  ot include .**  
21b90 20 20 20 20 20 20 61 6e 79 20 63 68 61 6e 67 65        any change
21ba0 73 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20 73  s performed by s
21bb0 75 62 2d 74 72 69 67 67 65 72 73 2c 20 61 73 20  ub-triggers, as 
21bc0 74 68 65 20 73 71 6c 69 74 65 33 5f 63 68 61 6e  the sqlite3_chan
21bd0 67 65 73 28 29 20 0a 2a 2a 20 20 20 20 20 20 20  ges() .**       
21be0 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 73   value will be s
21bf0 61 76 65 64 20 61 6e 64 20 72 65 73 74 6f 72 65  aved and restore
21c00 64 20 61 66 74 65 72 20 65 61 63 68 20 73 75 62  d after each sub
21c10 2d 74 72 69 67 67 65 72 20 68 61 73 20 72 75 6e  -trigger has run
21c20 2e 29 5e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20  .)^.** </ul>.** 
21c30 0a 2a 2a 20 5e 54 68 69 73 20 6d 65 61 6e 73 20  .** ^This means 
21c40 74 68 61 74 20 69 66 20 74 68 65 20 63 68 61 6e  that if the chan
21c50 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ges() SQL functi
21c60 6f 6e 20 28 6f 72 20 73 69 6d 69 6c 61 72 29 20  on (or similar) 
21c70 69 73 20 75 73 65 64 0a 2a 2a 20 62 79 20 74 68  is used.** by th
21c80 65 20 66 69 72 73 74 20 49 4e 53 45 52 54 2c 20  e first INSERT, 
21c90 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45  UPDATE or DELETE
21ca0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69   statement withi
21cb0 6e 20 61 20 74 72 69 67 67 65 72 2c 20 69 74 20  n a trigger, it 
21cc0 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74 68 65 20  .** returns the 
21cd0 76 61 6c 75 65 20 61 73 20 73 65 74 20 77 68 65  value as set whe
21ce0 6e 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 73 74  n the calling st
21cf0 61 74 65 6d 65 6e 74 20 62 65 67 61 6e 20 65 78  atement began ex
21d00 65 63 75 74 69 6e 67 2e 0a 2a 2a 20 5e 49 66 20  ecuting..** ^If 
21d10 69 74 20 69 73 20 75 73 65 64 20 62 79 20 74 68  it is used by th
21d20 65 20 73 65 63 6f 6e 64 20 6f 72 20 73 75 62 73  e second or subs
21d30 65 71 75 65 6e 74 20 73 75 63 68 20 73 74 61 74  equent such stat
21d40 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20 74  ement within a t
21d50 72 69 67 67 65 72 20 0a 2a 2a 20 70 72 6f 67 72  rigger .** progr
21d60 61 6d 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65  am, the value re
21d70 74 75 72 6e 65 64 20 72 65 66 6c 65 63 74 73 20  turned reflects 
21d80 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
21d90 77 73 20 6d 6f 64 69 66 69 65 64 20 62 79 20 74  ws modified by t
21da0 68 65 20 0a 2a 2a 20 70 72 65 76 69 6f 75 73 20  he .** previous 
21db0 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f  INSERT, UPDATE o
21dc0 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  r DELETE stateme
21dd0 6e 74 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  nt within the sa
21de0 6d 65 20 74 72 69 67 67 65 72 2e 0a 2a 2a 0a 2a  me trigger..**.*
21df0 2a 20 53 65 65 20 61 6c 73 6f 20 74 68 65 20 5b  * See also the [
21e00 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68  sqlite3_total_ch
21e10 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61  anges()] interfa
21e20 63 65 2c 20 74 68 65 0a 2a 2a 20 5b 63 6f 75 6e  ce, the.** [coun
21e30 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61  t_changes pragma
21e40 5d 2c 20 61 6e 64 20 74 68 65 20 5b 63 68 61 6e  ], and the [chan
21e50 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ges() SQL functi
21e60 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20  on]..**.** If a 
21e70 73 65 70 61 72 61 74 65 20 74 68 72 65 61 64 20  separate thread 
21e80 6d 61 6b 65 73 20 63 68 61 6e 67 65 73 20 6f 6e  makes changes on
21e90 20 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61   the same databa
21ea0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
21eb0 20 77 68 69 6c 65 20 5b 73 71 6c 69 74 65 33 5f   while [sqlite3_
21ec0 63 68 61 6e 67 65 73 28 29 5d 20 69 73 20 72 75  changes()] is ru
21ed0 6e 6e 69 6e 67 20 74 68 65 6e 20 74 68 65 20 76  nning then the v
21ee0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a  alue returned.**
21ef0 20 69 73 20 75 6e 70 72 65 64 69 63 74 61 62 6c   is unpredictabl
21f00 65 20 61 6e 64 20 6e 6f 74 20 6d 65 61 6e 69 6e  e and not meanin
21f10 67 66 75 6c 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  gful..*/.SQLITE_
21f20 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
21f30 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33 2a  changes(sqlite3*
21f40 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
21f50 45 46 3a 20 54 6f 74 61 6c 20 4e 75 6d 62 65 72  EF: Total Number
21f60 20 4f 66 20 52 6f 77 73 20 4d 6f 64 69 66 69 65   Of Rows Modifie
21f70 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  d.** METHOD: sql
21f80 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73  ite3.**.** ^This
21f90 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
21fa0 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d 62  s the total numb
21fb0 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 73 65 72  er of rows inser
21fc0 74 65 64 2c 20 6d 6f 64 69 66 69 65 64 20 6f 72  ted, modified or
21fd0 0a 2a 2a 20 64 65 6c 65 74 65 64 20 62 79 20 61  .** deleted by a
21fe0 6c 6c 20 5b 49 4e 53 45 52 54 5d 2c 20 5b 55 50  ll [INSERT], [UP
21ff0 44 41 54 45 5d 20 6f 72 20 5b 44 45 4c 45 54 45  DATE] or [DELETE
22000 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 63 6f 6d  ] statements com
22010 70 6c 65 74 65 64 0a 2a 2a 20 73 69 6e 63 65 20  pleted.** since 
22020 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
22030 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f 70 65 6e  nection was open
22040 65 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68  ed, including th
22050 6f 73 65 20 65 78 65 63 75 74 65 64 20 61 73 0a  ose executed as.
22060 2a 2a 20 70 61 72 74 20 6f 66 20 74 72 69 67 67  ** part of trigg
22070 65 72 20 70 72 6f 67 72 61 6d 73 2e 20 5e 45 78  er programs. ^Ex
22080 65 63 75 74 69 6e 67 20 61 6e 79 20 6f 74 68 65  ecuting any othe
22090 72 20 74 79 70 65 20 6f 66 20 53 51 4c 20 73 74  r type of SQL st
220a0 61 74 65 6d 65 6e 74 0a 2a 2a 20 64 6f 65 73 20  atement.** does 
220b0 6e 6f 74 20 61 66 66 65 63 74 20 74 68 65 20 76  not affect the v
220c0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
220d0 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63   sqlite3_total_c
220e0 68 61 6e 67 65 73 28 29 2e 0a 2a 2a 20 0a 2a 2a  hanges()..** .**
220f0 20 5e 43 68 61 6e 67 65 73 20 6d 61 64 65 20 61   ^Changes made a
22100 73 20 70 61 72 74 20 6f 66 20 5b 66 6f 72 65 69  s part of [forei
22110 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 20  gn key actions] 
22120 61 72 65 20 69 6e 63 6c 75 64 65 64 20 69 6e 20  are included in 
22130 74 68 65 0a 2a 2a 20 63 6f 75 6e 74 2c 20 62 75  the.** count, bu
22140 74 20 74 68 6f 73 65 20 6d 61 64 65 20 61 73 20  t those made as 
22150 70 61 72 74 20 6f 66 20 52 45 50 4c 41 43 45 20  part of REPLACE 
22160 63 6f 6e 73 74 72 61 69 6e 74 20 72 65 73 6f 6c  constraint resol
22170 75 74 69 6f 6e 20 61 72 65 0a 2a 2a 20 6e 6f 74  ution are.** not
22180 2e 20 5e 43 68 61 6e 67 65 73 20 74 6f 20 61 20  . ^Changes to a 
22190 76 69 65 77 20 74 68 61 74 20 61 72 65 20 69 6e  view that are in
221a0 74 65 72 63 65 70 74 65 64 20 62 79 20 49 4e 53  tercepted by INS
221b0 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72 73  TEAD OF triggers
221c0 20 0a 2a 2a 20 61 72 65 20 6e 6f 74 20 63 6f 75   .** are not cou
221d0 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 53 65 65  nted..** .** See
221e0 20 61 6c 73 6f 20 74 68 65 20 5b 73 71 6c 69 74   also the [sqlit
221f0 65 33 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 6e  e3_changes()] in
22200 74 65 72 66 61 63 65 2c 20 74 68 65 0a 2a 2a 20  terface, the.** 
22210 5b 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 70  [count_changes p
22220 72 61 67 6d 61 5d 2c 20 61 6e 64 20 74 68 65 20  ragma], and the 
22230 5b 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29  [total_changes()
22240 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a   SQL function]..
22250 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72  **.** If a separ
22260 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65 73  ate thread makes
22270 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65 20   changes on the 
22280 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f  same database co
22290 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c  nnection.** whil
222a0 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
222b0 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 73 20 72  _changes()] is r
222c0 75 6e 6e 69 6e 67 20 74 68 65 6e 20 74 68 65 20  unning then the 
222d0 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75 72 6e 65  value.** returne
222e0 64 20 69 73 20 75 6e 70 72 65 64 69 63 74 61 62  d is unpredictab
222f0 6c 65 20 61 6e 64 20 6e 6f 74 20 6d 65 61 6e 69  le and not meani
22300 6e 67 66 75 6c 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ngful..*/.SQLITE
22310 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
22320 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 73  _total_changes(s
22330 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
22340 20 43 41 50 49 33 52 45 46 3a 20 49 6e 74 65 72   CAPI3REF: Inter
22350 72 75 70 74 20 41 20 4c 6f 6e 67 2d 52 75 6e 6e  rupt A Long-Runn
22360 69 6e 67 20 51 75 65 72 79 0a 2a 2a 20 4d 45 54  ing Query.** MET
22370 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
22380 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f  ** ^This functio
22390 6e 20 63 61 75 73 65 73 20 61 6e 79 20 70 65 6e  n causes any pen
223a0 64 69 6e 67 20 64 61 74 61 62 61 73 65 20 6f 70  ding database op
223b0 65 72 61 74 69 6f 6e 20 74 6f 20 61 62 6f 72 74  eration to abort
223c0 20 61 6e 64 0a 2a 2a 20 72 65 74 75 72 6e 20 61   and.** return a
223d0 74 20 69 74 73 20 65 61 72 6c 69 65 73 74 20 6f  t its earliest o
223e0 70 70 6f 72 74 75 6e 69 74 79 2e 20 54 68 69 73  pportunity. This
223f0 20 72 6f 75 74 69 6e 65 20 69 73 20 74 79 70 69   routine is typi
22400 63 61 6c 6c 79 0a 2a 2a 20 63 61 6c 6c 65 64 20  cally.** called 
22410 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61  in response to a
22420 20 75 73 65 72 20 61 63 74 69 6f 6e 20 73 75 63   user action suc
22430 68 20 61 73 20 70 72 65 73 73 69 6e 67 20 22 43  h as pressing "C
22440 61 6e 63 65 6c 22 0a 2a 2a 20 6f 72 20 43 74 72  ancel".** or Ctr
22450 6c 2d 43 20 77 68 65 72 65 20 74 68 65 20 75 73  l-C where the us
22460 65 72 20 77 61 6e 74 73 20 61 20 6c 6f 6e 67 20  er wants a long 
22470 71 75 65 72 79 20 6f 70 65 72 61 74 69 6f 6e 20  query operation 
22480 74 6f 20 68 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64  to halt.** immed
22490 69 61 74 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49  iately..**.** ^I
224a0 74 20 69 73 20 73 61 66 65 20 74 6f 20 63 61 6c  t is safe to cal
224b0 6c 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 66  l this routine f
224c0 72 6f 6d 20 61 20 74 68 72 65 61 64 20 64 69 66  rom a thread dif
224d0 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 0a  ferent from the.
224e0 2a 2a 20 74 68 72 65 61 64 20 74 68 61 74 20 69  ** thread that i
224f0 73 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e  s currently runn
22500 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65  ing the database
22510 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20 42 75 74   operation.  But
22520 20 69 74 0a 2a 2a 20 69 73 20 6e 6f 74 20 73 61   it.** is not sa
22530 66 65 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20  fe to call this 
22540 72 6f 75 74 69 6e 65 20 77 69 74 68 20 61 20 5b  routine with a [
22550 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
22560 69 6f 6e 5d 20 74 68 61 74 0a 2a 2a 20 69 73 20  ion] that.** is 
22570 63 6c 6f 73 65 64 20 6f 72 20 6d 69 67 68 74 20  closed or might 
22580 63 6c 6f 73 65 20 62 65 66 6f 72 65 20 73 71 6c  close before sql
22590 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29  ite3_interrupt()
225a0 20 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20   returns..**.** 
225b0 5e 49 66 20 61 6e 20 53 51 4c 20 6f 70 65 72 61  ^If an SQL opera
225c0 74 69 6f 6e 20 69 73 20 76 65 72 79 20 6e 65 61  tion is very nea
225d0 72 6c 79 20 66 69 6e 69 73 68 65 64 20 61 74 20  rly finished at 
225e0 74 68 65 20 74 69 6d 65 20 77 68 65 6e 0a 2a 2a  the time when.**
225f0 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
22600 70 74 28 29 20 69 73 20 63 61 6c 6c 65 64 2c 20  pt() is called, 
22610 74 68 65 6e 20 69 74 20 6d 69 67 68 74 20 6e 6f  then it might no
22620 74 20 68 61 76 65 20 61 6e 20 6f 70 70 6f 72 74  t have an opport
22630 75 6e 69 74 79 0a 2a 2a 20 74 6f 20 62 65 20 69  unity.** to be i
22640 6e 74 65 72 72 75 70 74 65 64 20 61 6e 64 20 6d  nterrupted and m
22650 69 67 68 74 20 63 6f 6e 74 69 6e 75 65 20 74 6f  ight continue to
22660 20 63 6f 6d 70 6c 65 74 69 6f 6e 2e 0a 2a 2a 0a   completion..**.
22670 2a 2a 20 5e 41 6e 20 53 51 4c 20 6f 70 65 72 61  ** ^An SQL opera
22680 74 69 6f 6e 20 74 68 61 74 20 69 73 20 69 6e 74  tion that is int
22690 65 72 72 75 70 74 65 64 20 77 69 6c 6c 20 72 65  errupted will re
226a0 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 49 4e 54  turn [SQLITE_INT
226b0 45 52 52 55 50 54 5d 2e 0a 2a 2a 20 5e 49 66 20  ERRUPT]..** ^If 
226c0 74 68 65 20 69 6e 74 65 72 72 75 70 74 65 64 20  the interrupted 
226d0 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 69 73  SQL operation is
226e0 20 61 6e 20 49 4e 53 45 52 54 2c 20 55 50 44 41   an INSERT, UPDA
226f0 54 45 2c 20 6f 72 20 44 45 4c 45 54 45 0a 2a 2a  TE, or DELETE.**
22700 20 74 68 61 74 20 69 73 20 69 6e 73 69 64 65 20   that is inside 
22710 61 6e 20 65 78 70 6c 69 63 69 74 20 74 72 61 6e  an explicit tran
22720 73 61 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68  saction, then th
22730 65 20 65 6e 74 69 72 65 20 74 72 61 6e 73 61 63  e entire transac
22740 74 69 6f 6e 0a 2a 2a 20 77 69 6c 6c 20 62 65 20  tion.** will be 
22750 72 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74 6f  rolled back auto
22760 6d 61 74 69 63 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a  matically..**.**
22770 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e   ^The sqlite3_in
22780 74 65 72 72 75 70 74 28 44 29 20 63 61 6c 6c 20  terrupt(D) call 
22790 69 73 20 69 6e 20 65 66 66 65 63 74 20 75 6e 74  is in effect unt
227a0 69 6c 20 61 6c 6c 20 63 75 72 72 65 6e 74 6c 79  il all currently
227b0 20 72 75 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20   running.** SQL 
227c0 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20 5b 64  statements on [d
227d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
227e0 6f 6e 5d 20 44 20 63 6f 6d 70 6c 65 74 65 2e 20  on] D complete. 
227f0 20 5e 41 6e 79 20 6e 65 77 20 53 51 4c 20 73 74   ^Any new SQL st
22800 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74  atements.** that
22810 20 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74   are started aft
22820 65 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  er the sqlite3_i
22830 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c 20  nterrupt() call 
22840 61 6e 64 20 62 65 66 6f 72 65 20 74 68 65 20 0a  and before the .
22850 2a 2a 20 72 75 6e 6e 69 6e 67 20 73 74 61 74 65  ** running state
22860 6d 65 6e 74 73 20 72 65 61 63 68 65 73 20 7a 65  ments reaches ze
22870 72 6f 20 61 72 65 20 69 6e 74 65 72 72 75 70 74  ro are interrupt
22880 65 64 20 61 73 20 69 66 20 74 68 65 79 20 68 61  ed as if they ha
22890 64 20 62 65 65 6e 0a 2a 2a 20 72 75 6e 6e 69 6e  d been.** runnin
228a0 67 20 70 72 69 6f 72 20 74 6f 20 74 68 65 20 73  g prior to the s
228b0 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
228c0 28 29 20 63 61 6c 6c 2e 20 20 5e 4e 65 77 20 53  () call.  ^New S
228d0 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a  QL statements.**
228e0 20 74 68 61 74 20 61 72 65 20 73 74 61 72 74 65   that are starte
228f0 64 20 61 66 74 65 72 20 74 68 65 20 72 75 6e 6e  d after the runn
22900 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f  ing statement co
22910 75 6e 74 20 72 65 61 63 68 65 73 20 7a 65 72 6f  unt reaches zero
22920 20 61 72 65 0a 2a 2a 20 6e 6f 74 20 65 66 66 65   are.** not effe
22930 63 74 65 64 20 62 79 20 74 68 65 20 73 71 6c 69  cted by the sqli
22940 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2e  te3_interrupt().
22950 0a 2a 2a 20 5e 41 20 63 61 6c 6c 20 74 6f 20 73  .** ^A call to s
22960 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74  qlite3_interrupt
22970 28 44 29 20 74 68 61 74 20 6f 63 63 75 72 73 20  (D) that occurs 
22980 77 68 65 6e 20 74 68 65 72 65 20 61 72 65 20 6e  when there are n
22990 6f 20 72 75 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c  o running.** SQL
229a0 20 73 74 61 74 65 6d 65 6e 74 73 20 69 73 20 61   statements is a
229b0 20 6e 6f 2d 6f 70 20 61 6e 64 20 68 61 73 20 6e   no-op and has n
229c0 6f 20 65 66 66 65 63 74 20 6f 6e 20 53 51 4c 20  o effect on SQL 
229d0 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68  statements.** th
229e0 61 74 20 61 72 65 20 73 74 61 72 74 65 64 20 61  at are started a
229f0 66 74 65 72 20 74 68 65 20 73 71 6c 69 74 65 33  fter the sqlite3
22a00 5f 69 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c  _interrupt() cal
22a10 6c 20 72 65 74 75 72 6e 73 2e 0a 2a 2f 0a 53 51  l returns..*/.SQ
22a20 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71  LITE_API void sq
22a30 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
22a40 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a  sqlite3*);../*.*
22a50 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65  * CAPI3REF: Dete
22a60 72 6d 69 6e 65 20 49 66 20 41 6e 20 53 51 4c 20  rmine If An SQL 
22a70 53 74 61 74 65 6d 65 6e 74 20 49 73 20 43 6f 6d  Statement Is Com
22a80 70 6c 65 74 65 0a 2a 2a 0a 2a 2a 20 54 68 65 73  plete.**.** Thes
22a90 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 75  e routines are u
22aa0 73 65 66 75 6c 20 64 75 72 69 6e 67 20 63 6f 6d  seful during com
22ab0 6d 61 6e 64 2d 6c 69 6e 65 20 69 6e 70 75 74 20  mand-line input 
22ac0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20  to determine if 
22ad0 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79  the.** currently
22ae0 20 65 6e 74 65 72 65 64 20 74 65 78 74 20 73 65   entered text se
22af0 65 6d 73 20 74 6f 20 66 6f 72 6d 20 61 20 63 6f  ems to form a co
22b00 6d 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65  mplete SQL state
22b10 6d 65 6e 74 20 6f 72 0a 2a 2a 20 69 66 20 61 64  ment or.** if ad
22b20 64 69 74 69 6f 6e 61 6c 20 69 6e 70 75 74 20 69  ditional input i
22b30 73 20 6e 65 65 64 65 64 20 62 65 66 6f 72 65 20  s needed before 
22b40 73 65 6e 64 69 6e 67 20 74 68 65 20 74 65 78 74  sending the text
22b50 20 69 6e 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20   into.** SQLite 
22b60 66 6f 72 20 70 61 72 73 69 6e 67 2e 20 20 5e 54  for parsing.  ^T
22b70 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65  hese routines re
22b80 74 75 72 6e 20 31 20 69 66 20 74 68 65 20 69 6e  turn 1 if the in
22b90 70 75 74 20 73 74 72 69 6e 67 0a 2a 2a 20 61 70  put string.** ap
22ba0 70 65 61 72 73 20 74 6f 20 62 65 20 61 20 63 6f  pears to be a co
22bb0 6d 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65  mplete SQL state
22bc0 6d 65 6e 74 2e 20 20 5e 41 20 73 74 61 74 65 6d  ment.  ^A statem
22bd0 65 6e 74 20 69 73 20 6a 75 64 67 65 64 20 74 6f  ent is judged to
22be0 20 62 65 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20   be.** complete 
22bf0 69 66 20 69 74 20 65 6e 64 73 20 77 69 74 68 20  if it ends with 
22c00 61 20 73 65 6d 69 63 6f 6c 6f 6e 20 74 6f 6b 65  a semicolon toke
22c10 6e 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20 70  n and is not a p
22c20 72 65 66 69 78 20 6f 66 20 61 0a 2a 2a 20 77 65  refix of a.** we
22c30 6c 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41 54 45  ll-formed CREATE
22c40 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65   TRIGGER stateme
22c50 6e 74 2e 20 20 5e 53 65 6d 69 63 6f 6c 6f 6e 73  nt.  ^Semicolons
22c60 20 74 68 61 74 20 61 72 65 20 65 6d 62 65 64 64   that are embedd
22c70 65 64 20 77 69 74 68 69 6e 0a 2a 2a 20 73 74 72  ed within.** str
22c80 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 6f 72 20  ing literals or 
22c90 71 75 6f 74 65 64 20 69 64 65 6e 74 69 66 69 65  quoted identifie
22ca0 72 20 6e 61 6d 65 73 20 6f 72 20 63 6f 6d 6d 65  r names or comme
22cb0 6e 74 73 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 69  nts are not.** i
22cc0 6e 64 65 70 65 6e 64 65 6e 74 20 74 6f 6b 65 6e  ndependent token
22cd0 73 20 28 74 68 65 79 20 61 72 65 20 70 61 72 74  s (they are part
22ce0 20 6f 66 20 74 68 65 20 74 6f 6b 65 6e 20 69 6e   of the token in
22cf0 20 77 68 69 63 68 20 74 68 65 79 20 61 72 65 0a   which they are.
22d00 2a 2a 20 65 6d 62 65 64 64 65 64 29 20 61 6e 64  ** embedded) and
22d10 20 74 68 75 73 20 64 6f 20 6e 6f 74 20 63 6f 75   thus do not cou
22d20 6e 74 20 61 73 20 61 20 73 74 61 74 65 6d 65 6e  nt as a statemen
22d30 74 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 20 5e  t terminator.  ^
22d40 57 68 69 74 65 73 70 61 63 65 0a 2a 2a 20 61 6e  Whitespace.** an
22d50 64 20 63 6f 6d 6d 65 6e 74 73 20 74 68 61 74 20  d comments that 
22d60 66 6f 6c 6c 6f 77 20 74 68 65 20 66 69 6e 61 6c  follow the final
22d70 20 73 65 6d 69 63 6f 6c 6f 6e 20 61 72 65 20 69   semicolon are i
22d80 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54  gnored..**.** ^T
22d90 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65  hese routines re
22da0 74 75 72 6e 20 30 20 69 66 20 74 68 65 20 73 74  turn 0 if the st
22db0 61 74 65 6d 65 6e 74 20 69 73 20 69 6e 63 6f 6d  atement is incom
22dc0 70 6c 65 74 65 2e 20 20 5e 49 66 20 61 0a 2a 2a  plete.  ^If a.**
22dd0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
22de0 6f 6e 20 66 61 69 6c 73 2c 20 74 68 65 6e 20 53  on fails, then S
22df0 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 69 73 20 72  QLITE_NOMEM is r
22e00 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  eturned..**.** ^
22e10 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 64  These routines d
22e20 6f 20 6e 6f 74 20 70 61 72 73 65 20 74 68 65 20  o not parse the 
22e30 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74  SQL statements t
22e40 68 75 73 0a 2a 2a 20 77 69 6c 6c 20 6e 6f 74 20  hus.** will not 
22e50 64 65 74 65 63 74 20 73 79 6e 74 61 63 74 69 63  detect syntactic
22e60 61 6c 6c 79 20 69 6e 63 6f 72 72 65 63 74 20 53  ally incorrect S
22e70 51 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20 53  QL..**.** ^(If S
22e80 51 4c 69 74 65 20 68 61 73 20 6e 6f 74 20 62 65  QLite has not be
22e90 65 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 75  en initialized u
22ea0 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e  sing [sqlite3_in
22eb0 69 74 69 61 6c 69 7a 65 28 29 5d 20 70 72 69 6f  itialize()] prio
22ec0 72 20 0a 2a 2a 20 74 6f 20 69 6e 76 6f 6b 69 6e  r .** to invokin
22ed0 67 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  g sqlite3_comple
22ee0 74 65 31 36 28 29 20 74 68 65 6e 20 73 71 6c 69  te16() then sqli
22ef0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
22f00 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61   is invoked.** a
22f10 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
22f20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
22f30 31 36 28 29 2e 20 20 49 66 20 74 68 61 74 20 69  16().  If that i
22f40 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 66 61  nitialization fa
22f50 69 6c 73 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65  ils,.** then the
22f60 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72   return value fr
22f70 6f 6d 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  om sqlite3_compl
22f80 65 74 65 31 36 28 29 20 77 69 6c 6c 20 62 65 20  ete16() will be 
22f90 6e 6f 6e 2d 7a 65 72 6f 0a 2a 2a 20 72 65 67 61  non-zero.** rega
22fa0 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
22fb0 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 69 6e 70  r or not the inp
22fc0 75 74 20 53 51 4c 20 69 73 20 63 6f 6d 70 6c 65  ut SQL is comple
22fd0 74 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  te.)^.**.** The 
22fe0 69 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65  input to [sqlite
22ff0 33 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 6d 75  3_complete()] mu
23000 73 74 20 62 65 20 61 20 7a 65 72 6f 2d 74 65 72  st be a zero-ter
23010 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 38  minated.** UTF-8
23020 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54   string..**.** T
23030 68 65 20 69 6e 70 75 74 20 74 6f 20 5b 73 71 6c  he input to [sql
23040 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
23050 29 5d 20 6d 75 73 74 20 62 65 20 61 20 7a 65 72  )] must be a zer
23060 6f 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20  o-terminated.** 
23070 55 54 46 2d 31 36 20 73 74 72 69 6e 67 20 69 6e  UTF-16 string in
23080 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64   native byte ord
23090 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  er..*/.SQLITE_AP
230a0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f  I int sqlite3_co
230b0 6d 70 6c 65 74 65 28 63 6f 6e 73 74 20 63 68 61  mplete(const cha
230c0 72 20 2a 73 71 6c 29 3b 0a 53 51 4c 49 54 45 5f  r *sql);.SQLITE_
230d0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
230e0 63 6f 6d 70 6c 65 74 65 31 36 28 63 6f 6e 73 74  complete16(const
230f0 20 76 6f 69 64 20 2a 73 71 6c 29 3b 0a 0a 2f 2a   void *sql);../*
23100 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65  .** CAPI3REF: Re
23110 67 69 73 74 65 72 20 41 20 43 61 6c 6c 62 61 63  gister A Callbac
23120 6b 20 54 6f 20 48 61 6e 64 6c 65 20 53 51 4c 49  k To Handle SQLI
23130 54 45 5f 42 55 53 59 20 45 72 72 6f 72 73 0a 2a  TE_BUSY Errors.*
23140 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 62 75 73  * KEYWORDS: {bus
23150 79 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61  y-handler callba
23160 63 6b 7d 20 7b 62 75 73 79 20 68 61 6e 64 6c 65  ck} {busy handle
23170 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  r}.** METHOD: sq
23180 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
23190 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
231a0 6e 64 6c 65 72 28 44 2c 58 2c 50 29 20 72 6f 75  ndler(D,X,P) rou
231b0 74 69 6e 65 20 73 65 74 73 20 61 20 63 61 6c 6c  tine sets a call
231c0 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 58 0a  back function X.
231d0 2a 2a 20 74 68 61 74 20 6d 69 67 68 74 20 62 65  ** that might be
231e0 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 61 72   invoked with ar
231f0 67 75 6d 65 6e 74 20 50 20 77 68 65 6e 65 76 65  gument P wheneve
23200 72 0a 2a 2a 20 61 6e 20 61 74 74 65 6d 70 74 20  r.** an attempt 
23210 69 73 20 6d 61 64 65 20 74 6f 20 61 63 63 65 73  is made to acces
23220 73 20 61 20 64 61 74 61 62 61 73 65 20 74 61 62  s a database tab
23230 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  le associated wi
23240 74 68 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20  th.** [database 
23250 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 77 68  connection] D wh
23260 65 6e 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61  en another threa
23270 64 0a 2a 2a 20 6f 72 20 70 72 6f 63 65 73 73 20  d.** or process 
23280 68 61 73 20 74 68 65 20 74 61 62 6c 65 20 6c 6f  has the table lo
23290 63 6b 65 64 2e 0a 2a 2a 20 54 68 65 20 73 71 6c  cked..** The sql
232a0 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
232b0 72 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73  r() interface is
232c0 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65   used to impleme
232d0 6e 74 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  nt.** [sqlite3_b
232e0 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20 61  usy_timeout()] a
232f0 6e 64 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f  nd [PRAGMA busy_
23300 74 69 6d 65 6f 75 74 5d 2e 0a 2a 2a 0a 2a 2a 20  timeout]..**.** 
23310 5e 49 66 20 74 68 65 20 62 75 73 79 20 63 61 6c  ^If the busy cal
23320 6c 62 61 63 6b 20 69 73 20 4e 55 4c 4c 2c 20 74  lback is NULL, t
23330 68 65 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  hen [SQLITE_BUSY
23340 5d 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65 64  ].** is returned
23350 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 75 70 6f   immediately upo
23360 6e 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74  n encountering t
23370 68 65 20 6c 6f 63 6b 2e 20 20 5e 49 66 20 74 68  he lock.  ^If th
23380 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 0a  e busy callback.
23390 2a 2a 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20  ** is not NULL, 
233a0 74 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63  then the callbac
233b0 6b 20 6d 69 67 68 74 20 62 65 20 69 6e 76 6f 6b  k might be invok
233c0 65 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75  ed with two argu
233d0 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ments..**.** ^Th
233e0 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
233f0 20 74 6f 20 74 68 65 20 62 75 73 79 20 68 61 6e   to the busy han
23400 64 6c 65 72 20 69 73 20 61 20 63 6f 70 79 20 6f  dler is a copy o
23410 66 20 74 68 65 20 76 6f 69 64 2a 20 70 6f 69 6e  f the void* poin
23420 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  ter which.** is 
23430 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  the third argume
23440 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 75  nt to sqlite3_bu
23450 73 79 5f 68 61 6e 64 6c 65 72 28 29 2e 20 20 5e  sy_handler().  ^
23460 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  The second argum
23470 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 65 20 62 75  ent to.** the bu
23480 73 79 20 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62  sy handler callb
23490 61 63 6b 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ack is the numbe
234a0 72 20 6f 66 20 74 69 6d 65 73 20 74 68 61 74 20  r of times that 
234b0 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72  the busy handler
234c0 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 69 6e 76   has.** been inv
234d0 6f 6b 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20  oked previously 
234e0 66 6f 72 20 74 68 65 20 73 61 6d 65 20 6c 6f 63  for the same loc
234f0 6b 69 6e 67 20 65 76 65 6e 74 2e 20 20 5e 49 66  king event.  ^If
23500 20 74 68 65 0a 2a 2a 20 62 75 73 79 20 63 61 6c   the.** busy cal
23510 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 30 2c  lback returns 0,
23520 20 74 68 65 6e 20 6e 6f 20 61 64 64 69 74 69 6f   then no additio
23530 6e 61 6c 20 61 74 74 65 6d 70 74 73 20 61 72 65  nal attempts are
23540 20 6d 61 64 65 20 74 6f 0a 2a 2a 20 61 63 63 65   made to.** acce
23550 73 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ss the database 
23560 61 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  and [SQLITE_BUSY
23570 5d 20 69 73 20 72 65 74 75 72 6e 65 64 0a 2a 2a  ] is returned.**
23580 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74   to the applicat
23590 69 6f 6e 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ion..** ^If the 
235a0 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73  callback returns
235b0 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20   non-zero, then 
235c0 61 6e 6f 74 68 65 72 20 61 74 74 65 6d 70 74 0a  another attempt.
235d0 2a 2a 20 69 73 20 6d 61 64 65 20 74 6f 20 61 63  ** is made to ac
235e0 63 65 73 73 20 74 68 65 20 64 61 74 61 62 61 73  cess the databas
235f0 65 20 61 6e 64 20 74 68 65 20 63 79 63 6c 65 20  e and the cycle 
23600 72 65 70 65 61 74 73 2e 0a 2a 2a 0a 2a 2a 20 54  repeats..**.** T
23610 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 61  he presence of a
23620 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 64 6f   busy handler do
23630 65 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65  es not guarantee
23640 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65   that it will be
23650 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e   invoked.** when
23660 20 74 68 65 72 65 20 69 73 20 6c 6f 63 6b 20 63   there is lock c
23670 6f 6e 74 65 6e 74 69 6f 6e 2e 20 5e 49 66 20 53  ontention. ^If S
23680 51 4c 69 74 65 20 64 65 74 65 72 6d 69 6e 65 73  QLite determines
23690 20 74 68 61 74 20 69 6e 76 6f 6b 69 6e 67 20 74   that invoking t
236a0 68 65 20 62 75 73 79 0a 2a 2a 20 68 61 6e 64 6c  he busy.** handl
236b0 65 72 20 63 6f 75 6c 64 20 72 65 73 75 6c 74 20  er could result 
236c0 69 6e 20 61 20 64 65 61 64 6c 6f 63 6b 2c 20 69  in a deadlock, i
236d0 74 20 77 69 6c 6c 20 67 6f 20 61 68 65 61 64 20  t will go ahead 
236e0 61 6e 64 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  and return [SQLI
236f0 54 45 5f 42 55 53 59 5d 0a 2a 2a 20 74 6f 20 74  TE_BUSY].** to t
23700 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69  he application i
23710 6e 73 74 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69  nstead of invoki
23720 6e 67 20 74 68 65 20 0a 2a 2a 20 62 75 73 79 20  ng the .** busy 
23730 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20 43 6f 6e 73  handler..** Cons
23740 69 64 65 72 20 61 20 73 63 65 6e 61 72 69 6f 20  ider a scenario 
23750 77 68 65 72 65 20 6f 6e 65 20 70 72 6f 63 65 73  where one proces
23760 73 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 72  s is holding a r
23770 65 61 64 20 6c 6f 63 6b 20 74 68 61 74 0a 2a 2a  ead lock that.**
23780 20 69 74 20 69 73 20 74 72 79 69 6e 67 20 74 6f   it is trying to
23790 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 20 72 65   promote to a re
237a0 73 65 72 76 65 64 20 6c 6f 63 6b 20 61 6e 64 0a  served lock and.
237b0 2a 2a 20 61 20 73 65 63 6f 6e 64 20 70 72 6f 63  ** a second proc
237c0 65 73 73 20 69 73 20 68 6f 6c 64 69 6e 67 20 61  ess is holding a
237d0 20 72 65 73 65 72 76 65 64 20 6c 6f 63 6b 20 74   reserved lock t
237e0 68 61 74 20 69 74 20 69 73 20 74 72 79 69 6e 67  hat it is trying
237f0 0a 2a 2a 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74  .** to promote t
23800 6f 20 61 6e 20 65 78 63 6c 75 73 69 76 65 20 6c  o an exclusive l
23810 6f 63 6b 2e 20 20 54 68 65 20 66 69 72 73 74 20  ock.  The first 
23820 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74 20 70  process cannot p
23830 72 6f 63 65 65 64 0a 2a 2a 20 62 65 63 61 75 73  roceed.** becaus
23840 65 20 69 74 20 69 73 20 62 6c 6f 63 6b 65 64 20  e it is blocked 
23850 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20 61 6e  by the second an
23860 64 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f  d the second pro
23870 63 65 73 73 20 63 61 6e 6e 6f 74 0a 2a 2a 20 70  cess cannot.** p
23880 72 6f 63 65 65 64 20 62 65 63 61 75 73 65 20 69  roceed because i
23890 74 20 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20  t is blocked by 
238a0 74 68 65 20 66 69 72 73 74 2e 20 20 49 66 20 62  the first.  If b
238b0 6f 74 68 20 70 72 6f 63 65 73 73 65 73 0a 2a 2a  oth processes.**
238c0 20 69 6e 76 6f 6b 65 20 74 68 65 20 62 75 73 79   invoke the busy
238d0 20 68 61 6e 64 6c 65 72 73 2c 20 6e 65 69 74 68   handlers, neith
238e0 65 72 20 77 69 6c 6c 20 6d 61 6b 65 20 61 6e 79  er will make any
238f0 20 70 72 6f 67 72 65 73 73 2e 20 20 54 68 65 72   progress.  Ther
23900 65 66 6f 72 65 2c 0a 2a 2a 20 53 51 4c 69 74 65  efore,.** SQLite
23910 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
23920 5f 42 55 53 59 5d 20 66 6f 72 20 74 68 65 20 66  _BUSY] for the f
23930 69 72 73 74 20 70 72 6f 63 65 73 73 2c 20 68 6f  irst process, ho
23940 70 69 6e 67 20 74 68 61 74 20 74 68 69 73 0a 2a  ping that this.*
23950 2a 20 77 69 6c 6c 20 69 6e 64 75 63 65 20 74 68  * will induce th
23960 65 20 66 69 72 73 74 20 70 72 6f 63 65 73 73 20  e first process 
23970 74 6f 20 72 65 6c 65 61 73 65 20 69 74 73 20 72  to release its r
23980 65 61 64 20 6c 6f 63 6b 20 61 6e 64 20 61 6c 6c  ead lock and all
23990 6f 77 0a 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64  ow.** the second
239a0 20 70 72 6f 63 65 73 73 20 74 6f 20 70 72 6f 63   process to proc
239b0 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  eed..**.** ^The 
239c0 64 65 66 61 75 6c 74 20 62 75 73 79 20 63 61 6c  default busy cal
239d0 6c 62 61 63 6b 20 69 73 20 4e 55 4c 4c 2e 0a 2a  lback is NULL..*
239e0 2a 0a 2a 2a 20 5e 28 54 68 65 72 65 20 63 61 6e  *.** ^(There can
239f0 20 6f 6e 6c 79 20 62 65 20 61 20 73 69 6e 67 6c   only be a singl
23a00 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 64  e busy handler d
23a10 65 66 69 6e 65 64 20 66 6f 72 20 65 61 63 68 0a  efined for each.
23a20 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
23a30 6e 65 63 74 69 6f 6e 5d 2e 20 20 53 65 74 74 69  nection].  Setti
23a40 6e 67 20 61 20 6e 65 77 20 62 75 73 79 20 68 61  ng a new busy ha
23a50 6e 64 6c 65 72 20 63 6c 65 61 72 73 20 61 6e 79  ndler clears any
23a60 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 73  .** previously s
23a70 65 74 20 68 61 6e 64 6c 65 72 2e 29 5e 20 20 5e  et handler.)^  ^
23a80 4e 6f 74 65 20 74 68 61 74 20 63 61 6c 6c 69 6e  Note that callin
23a90 67 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  g [sqlite3_busy_
23aa0 74 69 6d 65 6f 75 74 28 29 5d 0a 2a 2a 20 6f 72  timeout()].** or
23ab0 20 65 76 61 6c 75 61 74 69 6e 67 20 5b 50 52 41   evaluating [PRA
23ac0 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74  GMA busy_timeout
23ad0 3d 4e 5d 20 77 69 6c 6c 20 63 68 61 6e 67 65 20  =N] will change 
23ae0 74 68 65 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64  the.** busy hand
23af0 6c 65 72 20 61 6e 64 20 74 68 75 73 20 63 6c 65  ler and thus cle
23b00 61 72 20 61 6e 79 20 70 72 65 76 69 6f 75 73 6c  ar any previousl
23b10 79 20 73 65 74 20 62 75 73 79 20 68 61 6e 64 6c  y set busy handl
23b20 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62 75  er..**.** The bu
23b30 73 79 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75  sy callback shou
23b40 6c 64 20 6e 6f 74 20 74 61 6b 65 20 61 6e 79 20  ld not take any 
23b50 61 63 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 6f  actions which mo
23b60 64 69 66 79 20 74 68 65 0a 2a 2a 20 64 61 74 61  dify the.** data
23b70 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
23b80 74 68 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65  that invoked the
23b90 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 20 20   busy handler.  
23ba0 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 0a  In other words,.
23bb0 2a 2a 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ** the busy hand
23bc0 6c 65 72 20 69 73 20 6e 6f 74 20 72 65 65 6e 74  ler is not reent
23bd0 72 61 6e 74 2e 20 20 41 6e 79 20 73 75 63 68 20  rant.  Any such 
23be0 61 63 74 69 6f 6e 73 0a 2a 2a 20 72 65 73 75 6c  actions.** resul
23bf0 74 20 69 6e 20 75 6e 64 65 66 69 6e 65 64 20 62  t in undefined b
23c00 65 68 61 76 69 6f 72 2e 0a 2a 2a 20 0a 2a 2a 20  ehavior..** .** 
23c10 41 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 6d  A busy handler m
23c20 75 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68  ust not close th
23c30 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
23c40 63 74 69 6f 6e 0a 2a 2a 20 6f 72 20 5b 70 72 65  ction.** or [pre
23c50 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
23c60 20 74 68 61 74 20 69 6e 76 6f 6b 65 64 20 74 68   that invoked th
23c70 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a  e busy handler..
23c80 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
23c90 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68  t sqlite3_busy_h
23ca0 61 6e 64 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c  andler(sqlite3*,
23cb0 69 6e 74 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74  int(*)(void*,int
23cc0 29 2c 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  ),void*);../*.**
23cd0 20 43 41 50 49 33 52 45 46 3a 20 53 65 74 20 41   CAPI3REF: Set A
23ce0 20 42 75 73 79 20 54 69 6d 65 6f 75 74 0a 2a 2a   Busy Timeout.**
23cf0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
23d00 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75  .**.** ^This rou
23d10 74 69 6e 65 20 73 65 74 73 20 61 20 5b 73 71 6c  tine sets a [sql
23d20 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
23d30 72 20 7c 20 62 75 73 79 20 68 61 6e 64 6c 65 72  r | busy handler
23d40 5d 20 74 68 61 74 20 73 6c 65 65 70 73 0a 2a 2a  ] that sleeps.**
23d50 20 66 6f 72 20 61 20 73 70 65 63 69 66 69 65 64   for a specified
23d60 20 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20   amount of time 
23d70 77 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73 20  when a table is 
23d80 6c 6f 63 6b 65 64 2e 20 20 5e 54 68 65 20 68 61  locked.  ^The ha
23d90 6e 64 6c 65 72 0a 2a 2a 20 77 69 6c 6c 20 73 6c  ndler.** will sl
23da0 65 65 70 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d  eep multiple tim
23db0 65 73 20 75 6e 74 69 6c 20 61 74 20 6c 65 61 73  es until at leas
23dc0 74 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f  t "ms" milliseco
23dd0 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 0a  nds of sleeping.
23de0 2a 2a 20 68 61 76 65 20 61 63 63 75 6d 75 6c 61  ** have accumula
23df0 74 65 64 2e 20 20 5e 41 66 74 65 72 20 61 74 20  ted.  ^After at 
23e00 6c 65 61 73 74 20 22 6d 73 22 20 6d 69 6c 6c 69  least "ms" milli
23e10 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70  seconds of sleep
23e20 69 6e 67 2c 0a 2a 2a 20 74 68 65 20 68 61 6e 64  ing,.** the hand
23e30 6c 65 72 20 72 65 74 75 72 6e 73 20 30 20 77 68  ler returns 0 wh
23e40 69 63 68 20 63 61 75 73 65 73 20 5b 73 71 6c 69  ich causes [sqli
23e50 74 65 33 5f 73 74 65 70 28 29 5d 20 74 6f 20 72  te3_step()] to r
23e60 65 74 75 72 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45  eturn.** [SQLITE
23e70 5f 42 55 53 59 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43  _BUSY]..**.** ^C
23e80 61 6c 6c 69 6e 67 20 74 68 69 73 20 72 6f 75 74  alling this rout
23e90 69 6e 65 20 77 69 74 68 20 61 6e 20 61 72 67 75  ine with an argu
23ea0 6d 65 6e 74 20 6c 65 73 73 20 74 68 61 6e 20 6f  ment less than o
23eb0 72 20 65 71 75 61 6c 20 74 6f 20 7a 65 72 6f 0a  r equal to zero.
23ec0 2a 2a 20 74 75 72 6e 73 20 6f 66 66 20 61 6c 6c  ** turns off all
23ed0 20 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2e 0a   busy handlers..
23ee0 2a 2a 0a 2a 2a 20 5e 28 54 68 65 72 65 20 63 61  **.** ^(There ca
23ef0 6e 20 6f 6e 6c 79 20 62 65 20 61 20 73 69 6e 67  n only be a sing
23f00 6c 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  le busy handler 
23f10 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72  for a particular
23f20 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
23f30 6e 6e 65 63 74 69 6f 6e 5d 20 61 74 20 61 6e 79  nnection] at any
23f40 20 67 69 76 65 6e 20 6d 6f 6d 65 6e 74 2e 20 20   given moment.  
23f50 49 66 20 61 6e 6f 74 68 65 72 20 62 75 73 79 20  If another busy 
23f60 68 61 6e 64 6c 65 72 0a 2a 2a 20 77 61 73 20 64  handler.** was d
23f70 65 66 69 6e 65 64 20 20 28 75 73 69 6e 67 20 5b  efined  (using [
23f80 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e  sqlite3_busy_han
23f90 64 6c 65 72 28 29 5d 29 20 70 72 69 6f 72 20 74  dler()]) prior t
23fa0 6f 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 74 68 69  o calling.** thi
23fb0 73 20 72 6f 75 74 69 6e 65 2c 20 74 68 61 74 20  s routine, that 
23fc0 6f 74 68 65 72 20 62 75 73 79 20 68 61 6e 64 6c  other busy handl
23fd0 65 72 20 69 73 20 63 6c 65 61 72 65 64 2e 29 5e  er is cleared.)^
23fe0 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
23ff0 20 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74    [PRAGMA busy_t
24000 69 6d 65 6f 75 74 5d 0a 2a 2f 0a 53 51 4c 49 54  imeout].*/.SQLIT
24010 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
24020 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 73  3_busy_timeout(s
24030 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6d 73 29  qlite3*, int ms)
24040 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
24050 46 3a 20 43 6f 6e 76 65 6e 69 65 6e 63 65 20 52  F: Convenience R
24060 6f 75 74 69 6e 65 73 20 46 6f 72 20 52 75 6e 6e  outines For Runn
24070 69 6e 67 20 51 75 65 72 69 65 73 0a 2a 2a 20 4d  ing Queries.** M
24080 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
24090 2a 0a 2a 2a 20 54 68 69 73 20 69 73 20 61 20 6c  *.** This is a l
240a0 65 67 61 63 79 20 69 6e 74 65 72 66 61 63 65 20  egacy interface 
240b0 74 68 61 74 20 69 73 20 70 72 65 73 65 72 76 65  that is preserve
240c0 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20  d for backwards 
240d0 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a  compatibility..*
240e0 2a 20 55 73 65 20 6f 66 20 74 68 69 73 20 69 6e  * Use of this in
240f0 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74 20 72  terface is not r
24100 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a 2a 2a 0a 2a  ecommended..**.*
24110 2a 20 44 65 66 69 6e 69 74 69 6f 6e 3a 20 41 20  * Definition: A 
24120 3c 62 3e 72 65 73 75 6c 74 20 74 61 62 6c 65 3c  <b>result table<
24130 2f 62 3e 20 69 73 20 6d 65 6d 6f 72 79 20 64 61  /b> is memory da
24140 74 61 20 73 74 72 75 63 74 75 72 65 20 63 72 65  ta structure cre
24150 61 74 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b  ated by the.** [
24160 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
24170 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20  e()] interface. 
24180 20 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20   A result table 
24190 72 65 63 6f 72 64 73 20 74 68 65 0a 2a 2a 20 63  records the.** c
241a0 6f 6d 70 6c 65 74 65 20 71 75 65 72 79 20 72 65  omplete query re
241b0 73 75 6c 74 73 20 66 72 6f 6d 20 6f 6e 65 20 6f  sults from one o
241c0 72 20 6d 6f 72 65 20 71 75 65 72 69 65 73 2e 0a  r more queries..
241d0 2a 2a 0a 2a 2a 20 54 68 65 20 74 61 62 6c 65 20  **.** The table 
241e0 63 6f 6e 63 65 70 74 75 61 6c 6c 79 20 68 61 73  conceptually has
241f0 20 61 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77   a number of row
24200 73 20 61 6e 64 20 63 6f 6c 75 6d 6e 73 2e 20 20  s and columns.  
24210 42 75 74 0a 2a 2a 20 74 68 65 73 65 20 6e 75 6d  But.** these num
24220 62 65 72 73 20 61 72 65 20 6e 6f 74 20 70 61 72  bers are not par
24230 74 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  t of the result 
24240 74 61 62 6c 65 20 69 74 73 65 6c 66 2e 20 20 54  table itself.  T
24250 68 65 73 65 0a 2a 2a 20 6e 75 6d 62 65 72 73 20  hese.** numbers 
24260 61 72 65 20 6f 62 74 61 69 6e 65 64 20 73 65 70  are obtained sep
24270 61 72 61 74 65 6c 79 2e 20 20 4c 65 74 20 4e 20  arately.  Let N 
24280 62 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  be the number of
24290 20 72 6f 77 73 0a 2a 2a 20 61 6e 64 20 4d 20 62   rows.** and M b
242a0 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  e the number of 
242b0 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41  columns..**.** A
242c0 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69 73   result table is
242d0 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69   an array of poi
242e0 6e 74 65 72 73 20 74 6f 20 7a 65 72 6f 2d 74 65  nters to zero-te
242f0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
24300 74 72 69 6e 67 73 2e 0a 2a 2a 20 54 68 65 72 65  trings..** There
24310 20 61 72 65 20 28 4e 2b 31 29 2a 4d 20 65 6c 65   are (N+1)*M ele
24320 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 61 72 72  ments in the arr
24330 61 79 2e 20 20 54 68 65 20 66 69 72 73 74 20 4d  ay.  The first M
24340 20 70 6f 69 6e 74 65 72 73 20 70 6f 69 6e 74 0a   pointers point.
24350 2a 2a 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69  ** to zero-termi
24360 6e 61 74 65 64 20 73 74 72 69 6e 67 73 20 74 68  nated strings th
24370 61 74 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20  at  contain the 
24380 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c  names of the col
24390 75 6d 6e 73 2e 0a 2a 2a 20 54 68 65 20 72 65 6d  umns..** The rem
243a0 61 69 6e 69 6e 67 20 65 6e 74 72 69 65 73 20 61  aining entries a
243b0 6c 6c 20 70 6f 69 6e 74 20 74 6f 20 71 75 65 72  ll point to quer
243c0 79 20 72 65 73 75 6c 74 73 2e 20 20 4e 55 4c 4c  y results.  NULL
243d0 20 76 61 6c 75 65 73 20 72 65 73 75 6c 74 0a 2a   values result.*
243e0 2a 20 69 6e 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  * in NULL pointe
243f0 72 73 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 76  rs.  All other v
24400 61 6c 75 65 73 20 61 72 65 20 69 6e 20 74 68 65  alues are in the
24410 69 72 20 55 54 46 2d 38 20 7a 65 72 6f 2d 74 65  ir UTF-8 zero-te
24420 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69  rminated.** stri
24430 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f  ng representatio
24440 6e 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79  n as returned by
24450 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
24460 5f 74 65 78 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20  _text()]..**.** 
24470 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 6d  A result table m
24480 69 67 68 74 20 63 6f 6e 73 69 73 74 20 6f 66 20  ight consist of 
24490 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6d 65 6d 6f  one or more memo
244a0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a  ry allocations..
244b0 2a 2a 20 49 74 20 69 73 20 6e 6f 74 20 73 61 66  ** It is not saf
244c0 65 20 74 6f 20 70 61 73 73 20 61 20 72 65 73 75  e to pass a resu
244d0 6c 74 20 74 61 62 6c 65 20 64 69 72 65 63 74 6c  lt table directl
244e0 79 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72  y to [sqlite3_fr
244f0 65 65 28 29 5d 2e 0a 2a 2a 20 41 20 72 65 73 75  ee()]..** A resu
24500 6c 74 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20  lt table should 
24510 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 75  be deallocated u
24520 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 72  sing [sqlite3_fr
24530 65 65 5f 74 61 62 6c 65 28 29 5d 2e 0a 2a 2a 0a  ee_table()]..**.
24540 2a 2a 20 5e 28 41 73 20 61 6e 20 65 78 61 6d 70  ** ^(As an examp
24550 6c 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  le of the result
24560 20 74 61 62 6c 65 20 66 6f 72 6d 61 74 2c 20 73   table format, s
24570 75 70 70 6f 73 65 20 61 20 71 75 65 72 79 20 72  uppose a query r
24580 65 73 75 6c 74 0a 2a 2a 20 69 73 20 61 73 20 66  esult.** is as f
24590 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62  ollows:.**.** <b
245a0 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
245b0 2a 2a 20 20 20 20 20 20 20 20 4e 61 6d 65 20 20  **        Name  
245c0 20 20 20 20 20 20 7c 20 41 67 65 0a 2a 2a 20 20        | Age.**  
245d0 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d        ----------
245e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a  -------------.**
245f0 20 20 20 20 20 20 20 20 41 6c 69 63 65 20 20 20          Alice   
24600 20 20 20 20 7c 20 34 33 0a 2a 2a 20 20 20 20 20      | 43.**     
24610 20 20 20 42 6f 62 20 20 20 20 20 20 20 20 20 7c     Bob         |
24620 20 32 38 0a 2a 2a 20 20 20 20 20 20 20 20 43 69   28.**        Ci
24630 6e 64 79 20 20 20 20 20 20 20 7c 20 32 31 0a 2a  ndy       | 21.*
24640 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  * </pre></blockq
24650 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 72  uote>.**.** Ther
24660 65 20 61 72 65 20 74 77 6f 20 63 6f 6c 75 6d 6e  e are two column
24670 20 28 4d 3d 3d 32 29 20 61 6e 64 20 74 68 72 65   (M==2) and thre
24680 65 20 72 6f 77 73 20 28 4e 3d 3d 33 29 2e 20 20  e rows (N==3).  
24690 54 68 75 73 20 74 68 65 0a 2a 2a 20 72 65 73 75  Thus the.** resu
246a0 6c 74 20 74 61 62 6c 65 20 68 61 73 20 38 20 65  lt table has 8 e
246b0 6e 74 72 69 65 73 2e 20 20 53 75 70 70 6f 73 65  ntries.  Suppose
246c0 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c   the result tabl
246d0 65 20 69 73 20 73 74 6f 72 65 64 0a 2a 2a 20 69  e is stored.** i
246e0 6e 20 61 6e 20 61 72 72 61 79 20 6e 61 6d 65 73  n an array names
246f0 20 61 7a 52 65 73 75 6c 74 2e 20 20 54 68 65 6e   azResult.  Then
24700 20 61 7a 52 65 73 75 6c 74 20 68 6f 6c 64 73 20   azResult holds 
24710 74 68 69 73 20 63 6f 6e 74 65 6e 74 3a 0a 2a 2a  this content:.**
24720 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  .** <blockquote>
24730 3c 70 72 65 3e 0a 2a 2a 20 20 20 20 20 20 20 20  <pre>.**        
24740 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 30 5d 20  azResult&#91;0] 
24750 3d 20 22 4e 61 6d 65 22 3b 0a 2a 2a 20 20 20 20  = "Name";.**    
24760 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
24770 3b 31 5d 20 3d 20 22 41 67 65 22 3b 0a 2a 2a 20  ;1] = "Age";.** 
24780 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
24790 23 39 31 3b 32 5d 20 3d 20 22 41 6c 69 63 65 22  #91;2] = "Alice"
247a0 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
247b0 73 75 6c 74 26 23 39 31 3b 33 5d 20 3d 20 22 34  sult&#91;3] = "4
247c0 33 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  3";.**        az
247d0 52 65 73 75 6c 74 26 23 39 31 3b 34 5d 20 3d 20  Result&#91;4] = 
247e0 22 42 6f 62 22 3b 0a 2a 2a 20 20 20 20 20 20 20  "Bob";.**       
247f0 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 35 5d   azResult&#91;5]
24800 20 3d 20 22 32 38 22 3b 0a 2a 2a 20 20 20 20 20   = "28";.**     
24810 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b     azResult&#91;
24820 36 5d 20 3d 20 22 43 69 6e 64 79 22 3b 0a 2a 2a  6] = "Cindy";.**
24830 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
24840 26 23 39 31 3b 37 5d 20 3d 20 22 32 31 22 3b 0a  &#91;7] = "21";.
24850 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ** </pre></block
24860 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  quote>)^.**.** ^
24870 54 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  The sqlite3_get_
24880 74 61 62 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e  table() function
24890 20 65 76 61 6c 75 61 74 65 73 20 6f 6e 65 20 6f   evaluates one o
248a0 72 20 6d 6f 72 65 0a 2a 2a 20 73 65 6d 69 63 6f  r more.** semico
248b0 6c 6f 6e 2d 73 65 70 61 72 61 74 65 64 20 53 51  lon-separated SQ
248c0 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20  L statements in 
248d0 74 68 65 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  the zero-termina
248e0 74 65 64 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72  ted UTF-8.** str
248f0 69 6e 67 20 6f 66 20 69 74 73 20 32 6e 64 20 70  ing of its 2nd p
24900 61 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65 74  arameter and ret
24910 75 72 6e 73 20 61 20 72 65 73 75 6c 74 20 74 61  urns a result ta
24920 62 6c 65 20 74 6f 20 74 68 65 0a 2a 2a 20 70 6f  ble to the.** po
24930 69 6e 74 65 72 20 67 69 76 65 6e 20 69 6e 20 69  inter given in i
24940 74 73 20 33 72 64 20 70 61 72 61 6d 65 74 65 72  ts 3rd parameter
24950 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 74 68  ..**.** After th
24960 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 68 61  e application ha
24970 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68 20  s finished with 
24980 74 68 65 20 72 65 73 75 6c 74 20 66 72 6f 6d 20  the result from 
24990 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
249a0 65 28 29 2c 0a 2a 2a 20 69 74 20 6d 75 73 74 20  e(),.** it must 
249b0 70 61 73 73 20 74 68 65 20 72 65 73 75 6c 74 20  pass the result 
249c0 74 61 62 6c 65 20 70 6f 69 6e 74 65 72 20 74 6f  table pointer to
249d0 20 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61   sqlite3_free_ta
249e0 62 6c 65 28 29 20 69 6e 20 6f 72 64 65 72 20 74  ble() in order t
249f0 6f 0a 2a 2a 20 72 65 6c 65 61 73 65 20 74 68 65  o.** release the
24a00 20 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 61 73   memory that was
24a10 20 6d 61 6c 6c 6f 63 65 64 2e 20 20 42 65 63 61   malloced.  Beca
24a20 75 73 65 20 6f 66 20 74 68 65 20 77 61 79 20 74  use of the way t
24a30 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d  he.** [sqlite3_m
24a40 61 6c 6c 6f 63 28 29 5d 20 68 61 70 70 65 6e 73  alloc()] happens
24a50 20 77 69 74 68 69 6e 20 73 71 6c 69 74 65 33 5f   within sqlite3_
24a60 67 65 74 5f 74 61 62 6c 65 28 29 2c 20 74 68 65  get_table(), the
24a70 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 66 75 6e 63   calling.** func
24a80 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 74 72  tion must not tr
24a90 79 20 74 6f 20 63 61 6c 6c 20 5b 73 71 6c 69 74  y to call [sqlit
24aa0 65 33 5f 66 72 65 65 28 29 5d 20 64 69 72 65 63  e3_free()] direc
24ab0 74 6c 79 2e 20 20 4f 6e 6c 79 0a 2a 2a 20 5b 73  tly.  Only.** [s
24ac0 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
24ad0 65 28 29 5d 20 69 73 20 61 62 6c 65 20 74 6f 20  e()] is able to 
24ae0 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d 6f  release the memo
24af0 72 79 20 70 72 6f 70 65 72 6c 79 20 61 6e 64 20  ry properly and 
24b00 73 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68  safely..**.** Th
24b10 65 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  e sqlite3_get_ta
24b20 62 6c 65 28 29 20 69 6e 74 65 72 66 61 63 65 20  ble() interface 
24b30 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61  is implemented a
24b40 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75  s a wrapper arou
24b50 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  nd.** [sqlite3_e
24b60 78 65 63 28 29 5d 2e 20 20 54 68 65 20 73 71 6c  xec()].  The sql
24b70 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
24b80 20 72 6f 75 74 69 6e 65 20 64 6f 65 73 20 6e 6f   routine does no
24b90 74 20 68 61 76 65 20 61 63 63 65 73 73 0a 2a 2a  t have access.**
24ba0 20 74 6f 20 61 6e 79 20 69 6e 74 65 72 6e 61 6c   to any internal
24bb0 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73   data structures
24bc0 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 49 74 20   of SQLite.  It 
24bd0 75 73 65 73 20 6f 6e 6c 79 20 74 68 65 20 70 75  uses only the pu
24be0 62 6c 69 63 0a 2a 2a 20 69 6e 74 65 72 66 61 63  blic.** interfac
24bf0 65 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e 20  e defined here. 
24c00 20 41 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63   As a consequenc
24c10 65 2c 20 65 72 72 6f 72 73 20 74 68 61 74 20 6f  e, errors that o
24c20 63 63 75 72 20 69 6e 20 74 68 65 0a 2a 2a 20 77  ccur in the.** w
24c30 72 61 70 70 65 72 20 6c 61 79 65 72 20 6f 75 74  rapper layer out
24c40 73 69 64 65 20 6f 66 20 74 68 65 20 69 6e 74 65  side of the inte
24c50 72 6e 61 6c 20 5b 73 71 6c 69 74 65 33 5f 65 78  rnal [sqlite3_ex
24c60 65 63 28 29 5d 20 63 61 6c 6c 20 61 72 65 20 6e  ec()] call are n
24c70 6f 74 0a 2a 2a 20 72 65 66 6c 65 63 74 65 64 20  ot.** reflected 
24c80 69 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 61  in subsequent ca
24c90 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  lls to [sqlite3_
24ca0 65 72 72 63 6f 64 65 28 29 5d 20 6f 72 0a 2a 2a  errcode()] or.**
24cb0 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   [sqlite3_errmsg
24cc0 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ()]..*/.SQLITE_A
24cd0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67  PI int sqlite3_g
24ce0 65 74 5f 74 61 62 6c 65 28 0a 20 20 73 71 6c 69  et_table(.  sqli
24cf0 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
24d00 20 20 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74    /* An open dat
24d10 61 62 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  abase */.  const
24d20 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20   char *zSql,    
24d30 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20 65 76   /* SQL to be ev
24d40 61 6c 75 61 74 65 64 20 2a 2f 0a 20 20 63 68 61  aluated */.  cha
24d50 72 20 2a 2a 2a 70 61 7a 52 65 73 75 6c 74 2c 20  r ***pazResult, 
24d60 20 20 20 2f 2a 20 52 65 73 75 6c 74 73 20 6f 66     /* Results of
24d70 20 74 68 65 20 71 75 65 72 79 20 2a 2f 0a 20 20   the query */.  
24d80 69 6e 74 20 2a 70 6e 52 6f 77 2c 20 20 20 20 20  int *pnRow,     
24d90 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
24da0 6f 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20 77  of result rows w
24db0 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20  ritten here */. 
24dc0 20 69 6e 74 20 2a 70 6e 43 6f 6c 75 6d 6e 2c 20   int *pnColumn, 
24dd0 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72         /* Number
24de0 20 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d   of result colum
24df0 6e 73 20 77 72 69 74 74 65 6e 20 68 65 72 65 20  ns written here 
24e00 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 70 7a 45 72  */.  char **pzEr
24e10 72 6d 73 67 20 20 20 20 20 20 20 2f 2a 20 45 72  rmsg       /* Er
24e20 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e 20  ror msg written 
24e30 68 65 72 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54  here */.);.SQLIT
24e40 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74  E_API void sqlit
24e50 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 63 68  e3_free_table(ch
24e60 61 72 20 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a 2f  ar **result);../
24e70 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46  *.** CAPI3REF: F
24e80 6f 72 6d 61 74 74 65 64 20 53 74 72 69 6e 67 20  ormatted String 
24e90 50 72 69 6e 74 69 6e 67 20 46 75 6e 63 74 69 6f  Printing Functio
24ea0 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  ns.**.** These r
24eb0 6f 75 74 69 6e 65 73 20 61 72 65 20 77 6f 72 6b  outines are work
24ec0 2d 61 6c 69 6b 65 73 20 6f 66 20 74 68 65 20 22  -alikes of the "
24ed0 70 72 69 6e 74 66 28 29 22 20 66 61 6d 69 6c 79  printf()" family
24ee0 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a   of functions.**
24ef0 20 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61   from the standa
24f00 72 64 20 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a  rd C library..**
24f10 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20   These routines 
24f20 75 6e 64 65 72 73 74 61 6e 64 20 6d 6f 73 74 20  understand most 
24f30 6f 66 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 4b 26  of the common K&
24f40 52 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74  R formatting opt
24f50 69 6f 6e 73 2c 0a 2a 2a 20 70 6c 75 73 20 73 6f  ions,.** plus so
24f60 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6e 6f  me additional no
24f70 6e 2d 73 74 61 6e 64 61 72 64 20 66 6f 72 6d 61  n-standard forma
24f80 74 73 2c 20 64 65 74 61 69 6c 65 64 20 62 65 6c  ts, detailed bel
24f90 6f 77 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74  ow..** Note that
24fa0 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 6d 6f 72   some of the mor
24fb0 65 20 6f 62 73 63 75 72 65 20 66 6f 72 6d 61 74  e obscure format
24fc0 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 66 72 6f  ting options fro
24fd0 6d 20 72 65 63 65 6e 74 0a 2a 2a 20 43 2d 6c 69  m recent.** C-li
24fe0 62 72 61 72 79 20 73 74 61 6e 64 61 72 64 73 20  brary standards 
24ff0 61 72 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d  are omitted from
25000 20 74 68 69 73 20 69 6d 70 6c 65 6d 65 6e 74 61   this implementa
25010 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  tion..**.** ^The
25020 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66   sqlite3_mprintf
25030 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 76  () and sqlite3_v
25040 6d 70 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e  mprintf() routin
25050 65 73 20 77 72 69 74 65 20 74 68 65 69 72 0a 2a  es write their.*
25060 2a 20 72 65 73 75 6c 74 73 20 69 6e 74 6f 20 6d  * results into m
25070 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
25080 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
25090 6c 6f 63 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73  loc()]..** The s
250a0 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20  trings returned 
250b0 62 79 20 74 68 65 73 65 20 74 77 6f 20 72 6f 75  by these two rou
250c0 74 69 6e 65 73 20 73 68 6f 75 6c 64 20 62 65 0a  tines should be.
250d0 2a 2a 20 72 65 6c 65 61 73 65 64 20 62 79 20 5b  ** released by [
250e0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e  sqlite3_free()].
250f0 20 20 5e 42 6f 74 68 20 72 6f 75 74 69 6e 65 73    ^Both routines
25100 20 72 65 74 75 72 6e 20 61 0a 2a 2a 20 4e 55 4c   return a.** NUL
25110 4c 20 70 6f 69 6e 74 65 72 20 69 66 20 5b 73 71  L pointer if [sq
25120 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
25130 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c  is unable to all
25140 6f 63 61 74 65 20 65 6e 6f 75 67 68 0a 2a 2a 20  ocate enough.** 
25150 6d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74  memory to hold t
25160 68 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72  he resulting str
25170 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65  ing..**.** ^(The
25180 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74   sqlite3_snprint
25190 66 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 73  f() routine is s
251a0 69 6d 69 6c 61 72 20 74 6f 20 22 73 6e 70 72 69  imilar to "snpri
251b0 6e 74 66 28 29 22 20 66 72 6f 6d 0a 2a 2a 20 74  ntf()" from.** t
251c0 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69  he standard C li
251d0 62 72 61 72 79 2e 20 20 54 68 65 20 72 65 73 75  brary.  The resu
251e0 6c 74 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e  lt is written in
251f0 74 6f 20 74 68 65 0a 2a 2a 20 62 75 66 66 65 72  to the.** buffer
25200 20 73 75 70 70 6c 69 65 64 20 61 73 20 74 68 65   supplied as the
25210 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
25220 72 20 77 68 6f 73 65 20 73 69 7a 65 20 69 73 20  r whose size is 
25230 67 69 76 65 6e 20 62 79 0a 2a 2a 20 74 68 65 20  given by.** the 
25240 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e  first parameter.
25250 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 6f   Note that the o
25260 72 64 65 72 20 6f 66 20 74 68 65 0a 2a 2a 20 66  rder of the.** f
25270 69 72 73 74 20 74 77 6f 20 70 61 72 61 6d 65 74  irst two paramet
25280 65 72 73 20 69 73 20 72 65 76 65 72 73 65 64 20  ers is reversed 
25290 66 72 6f 6d 20 73 6e 70 72 69 6e 74 66 28 29 2e  from snprintf().
252a0 29 5e 20 20 54 68 69 73 20 69 73 20 61 6e 0a 2a  )^  This is an.*
252b0 2a 20 68 69 73 74 6f 72 69 63 61 6c 20 61 63 63  * historical acc
252c0 69 64 65 6e 74 20 74 68 61 74 20 63 61 6e 6e 6f  ident that canno
252d0 74 20 62 65 20 66 69 78 65 64 20 77 69 74 68 6f  t be fixed witho
252e0 75 74 20 62 72 65 61 6b 69 6e 67 0a 2a 2a 20 62  ut breaking.** b
252f0 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
25300 62 69 6c 69 74 79 2e 20 20 5e 28 4e 6f 74 65 20  bility.  ^(Note 
25310 61 6c 73 6f 20 74 68 61 74 20 73 71 6c 69 74 65  also that sqlite
25320 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20  3_snprintf().** 
25330 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65  returns a pointe
25340 72 20 74 6f 20 69 74 73 20 62 75 66 66 65 72 20  r to its buffer 
25350 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6e  instead of the n
25360 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 63 68 61 72  umber of.** char
25370 61 63 74 65 72 73 20 61 63 74 75 61 6c 6c 79 20  acters actually 
25380 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65  written into the
25390 20 62 75 66 66 65 72 2e 29 5e 20 20 57 65 20 61   buffer.)^  We a
253a0 64 6d 69 74 20 74 68 61 74 0a 2a 2a 20 74 68 65  dmit that.** the
253b0 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61   number of chara
253c0 63 74 65 72 73 20 77 72 69 74 74 65 6e 20 77 6f  cters written wo
253d0 75 6c 64 20 62 65 20 61 20 6d 6f 72 65 20 75 73  uld be a more us
253e0 65 66 75 6c 20 72 65 74 75 72 6e 0a 2a 2a 20 76  eful return.** v
253f0 61 6c 75 65 20 62 75 74 20 77 65 20 63 61 6e 6e  alue but we cann
25400 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 69 6d  ot change the im
25410 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
25420 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
25430 28 29 0a 2a 2a 20 6e 6f 77 20 77 69 74 68 6f 75  ().** now withou
25440 74 20 62 72 65 61 6b 69 6e 67 20 63 6f 6d 70 61  t breaking compa
25450 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20  tibility..**.** 
25460 5e 41 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20  ^As long as the 
25470 62 75 66 66 65 72 20 73 69 7a 65 20 69 73 20 67  buffer size is g
25480 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65 72 6f  reater than zero
25490 2c 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e  , sqlite3_snprin
254a0 74 66 28 29 0a 2a 2a 20 67 75 61 72 61 6e 74 65  tf().** guarante
254b0 65 73 20 74 68 61 74 20 74 68 65 20 62 75 66 66  es that the buff
254c0 65 72 20 69 73 20 61 6c 77 61 79 73 20 7a 65 72  er is always zer
254d0 6f 2d 74 65 72 6d 69 6e 61 74 65 64 2e 20 20 5e  o-terminated.  ^
254e0 54 68 65 20 66 69 72 73 74 0a 2a 2a 20 70 61 72  The first.** par
254f0 61 6d 65 74 65 72 20 22 6e 22 20 69 73 20 74 68  ameter "n" is th
25500 65 20 74 6f 74 61 6c 20 73 69 7a 65 20 6f 66 20  e total size of 
25510 74 68 65 20 62 75 66 66 65 72 2c 20 69 6e 63 6c  the buffer, incl
25520 75 64 69 6e 67 20 73 70 61 63 65 20 66 6f 72 0a  uding space for.
25530 2a 2a 20 74 68 65 20 7a 65 72 6f 20 74 65 72 6d  ** the zero term
25540 69 6e 61 74 6f 72 2e 20 20 53 6f 20 74 68 65 20  inator.  So the 
25550 6c 6f 6e 67 65 73 74 20 73 74 72 69 6e 67 20 74  longest string t
25560 68 61 74 20 63 61 6e 20 62 65 20 63 6f 6d 70 6c  hat can be compl
25570 65 74 65 6c 79 0a 2a 2a 20 77 72 69 74 74 65 6e  etely.** written
25580 20 77 69 6c 6c 20 62 65 20 6e 2d 31 20 63 68 61   will be n-1 cha
25590 72 61 63 74 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e  racters..**.** ^
255a0 54 68 65 20 73 71 6c 69 74 65 33 5f 76 73 6e 70  The sqlite3_vsnp
255b0 72 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65 20  rintf() routine 
255c0 69 73 20 61 20 76 61 72 61 72 67 73 20 76 65 72  is a varargs ver
255d0 73 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f  sion of sqlite3_
255e0 73 6e 70 72 69 6e 74 66 28 29 2e 0a 2a 2a 0a 2a  snprintf()..**.*
255f0 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
25600 20 61 6c 6c 20 69 6d 70 6c 65 6d 65 6e 74 20 73   all implement s
25610 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 66  ome additional f
25620 6f 72 6d 61 74 74 69 6e 67 0a 2a 2a 20 6f 70 74  ormatting.** opt
25630 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73  ions that are us
25640 65 66 75 6c 20 66 6f 72 20 63 6f 6e 73 74 72 75  eful for constru
25650 63 74 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  cting SQL statem
25660 65 6e 74 73 2e 0a 2a 2a 20 41 6c 6c 20 6f 66 20  ents..** All of 
25670 74 68 65 20 75 73 75 61 6c 20 70 72 69 6e 74 66  the usual printf
25680 28 29 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 70  () formatting op
25690 74 69 6f 6e 73 20 61 70 70 6c 79 2e 20 20 49 6e  tions apply.  In
256a0 20 61 64 64 69 74 69 6f 6e 2c 20 74 68 65 72 65   addition, there
256b0 0a 2a 2a 20 69 73 20 61 72 65 20 22 25 71 22 2c  .** is are "%q",
256c0 20 22 25 51 22 2c 20 22 25 77 22 20 61 6e 64 20   "%Q", "%w" and 
256d0 22 25 7a 22 20 6f 70 74 69 6f 6e 73 2e 0a 2a 2a  "%z" options..**
256e0 0a 2a 2a 20 5e 28 54 68 65 20 25 71 20 6f 70 74  .** ^(The %q opt
256f0 69 6f 6e 20 77 6f 72 6b 73 20 6c 69 6b 65 20 25  ion works like %
25700 73 20 69 6e 20 74 68 61 74 20 69 74 20 73 75 62  s in that it sub
25710 73 74 69 74 75 74 65 73 20 61 20 6e 75 6c 2d 74  stitutes a nul-t
25720 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72  erminated.** str
25730 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 61 72 67  ing from the arg
25740 75 6d 65 6e 74 20 6c 69 73 74 2e 20 20 42 75 74  ument list.  But
25750 20 25 71 20 61 6c 73 6f 20 64 6f 75 62 6c 65 73   %q also doubles
25760 20 65 76 65 72 79 20 27 5c 27 27 20 63 68 61 72   every '\'' char
25770 61 63 74 65 72 2e 0a 2a 2a 20 25 71 20 69 73 20  acter..** %q is 
25780 64 65 73 69 67 6e 65 64 20 66 6f 72 20 75 73 65  designed for use
25790 20 69 6e 73 69 64 65 20 61 20 73 74 72 69 6e 67   inside a string
257a0 20 6c 69 74 65 72 61 6c 2e 29 5e 20 20 42 79 20   literal.)^  By 
257b0 64 6f 75 62 6c 69 6e 67 20 65 61 63 68 20 27 5c  doubling each '\
257c0 27 27 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 20  ''.** character 
257d0 69 74 20 65 73 63 61 70 65 73 20 74 68 61 74 20  it escapes that 
257e0 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 61 6c  character and al
257f0 6c 6f 77 73 20 69 74 20 74 6f 20 62 65 20 69 6e  lows it to be in
25800 73 65 72 74 65 64 20 69 6e 74 6f 0a 2a 2a 20 74  serted into.** t
25810 68 65 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a  he string..**.**
25820 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 73   For example, as
25830 73 75 6d 65 20 74 68 65 20 73 74 72 69 6e 67 20  sume the string 
25840 76 61 72 69 61 62 6c 65 20 7a 54 65 78 74 20 63  variable zText c
25850 6f 6e 74 61 69 6e 73 20 74 65 78 74 20 61 73 20  ontains text as 
25860 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c  follows:.**.** <
25870 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
25880 0a 2a 2a 20 20 63 68 61 72 20 2a 7a 54 65 78 74  .**  char *zText
25890 20 3d 20 22 49 74 27 73 20 61 20 68 61 70 70 79   = "It's a happy
258a0 20 64 61 79 21 22 3b 0a 2a 2a 20 3c 2f 70 72 65   day!";.** </pre
258b0 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a  ></blockquote>.*
258c0 2a 0a 2a 2a 20 4f 6e 65 20 63 61 6e 20 75 73 65  *.** One can use
258d0 20 74 68 69 73 20 74 65 78 74 20 69 6e 20 61 6e   this text in an
258e0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61   SQL statement a
258f0 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a  s follows:.**.**
25900 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72   <blockquote><pr
25910 65 3e 0a 2a 2a 20 20 63 68 61 72 20 2a 7a 53 51  e>.**  char *zSQ
25920 4c 20 3d 20 73 71 6c 69 74 65 33 5f 6d 70 72 69  L = sqlite3_mpri
25930 6e 74 66 28 22 49 4e 53 45 52 54 20 49 4e 54 4f  ntf("INSERT INTO
25940 20 74 61 62 6c 65 20 56 41 4c 55 45 53 28 27 25   table VALUES('%
25950 71 27 29 22 2c 20 7a 54 65 78 74 29 3b 0a 2a 2a  q')", zText);.**
25960 20 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 64    sqlite3_exec(d
25970 62 2c 20 7a 53 51 4c 2c 20 30 2c 20 30 2c 20 30  b, zSQL, 0, 0, 0
25980 29 3b 0a 2a 2a 20 20 73 71 6c 69 74 65 33 5f 66  );.**  sqlite3_f
25990 72 65 65 28 7a 53 51 4c 29 3b 0a 2a 2a 20 3c 2f  ree(zSQL);.** </
259a0 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
259b0 3e 0a 2a 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20  >.**.** Because 
259c0 74 68 65 20 25 71 20 66 6f 72 6d 61 74 20 73 74  the %q format st
259d0 72 69 6e 67 20 69 73 20 75 73 65 64 2c 20 74 68  ring is used, th
259e0 65 20 27 5c 27 27 20 63 68 61 72 61 63 74 65 72  e '\'' character
259f0 20 69 6e 20 7a 54 65 78 74 0a 2a 2a 20 69 73 20   in zText.** is 
25a00 65 73 63 61 70 65 64 20 61 6e 64 20 74 68 65 20  escaped and the 
25a10 53 51 4c 20 67 65 6e 65 72 61 74 65 64 20 69 73  SQL generated is
25a20 20 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a   as follows:.**.
25a30 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  ** <blockquote><
25a40 70 72 65 3e 0a 2a 2a 20 20 49 4e 53 45 52 54 20  pre>.**  INSERT 
25a50 49 4e 54 4f 20 74 61 62 6c 65 31 20 56 41 4c 55  INTO table1 VALU
25a60 45 53 28 27 49 74 27 27 73 20 61 20 68 61 70 70  ES('It''s a happ
25a70 79 20 64 61 79 21 27 29 0a 2a 2a 20 3c 2f 70 72  y day!').** </pr
25a80 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
25a90 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 73 20 63 6f  **.** This is co
25aa0 72 72 65 63 74 2e 20 20 48 61 64 20 77 65 20 75  rrect.  Had we u
25ab0 73 65 64 20 25 73 20 69 6e 73 74 65 61 64 20 6f  sed %s instead o
25ac0 66 20 25 71 2c 20 74 68 65 20 67 65 6e 65 72 61  f %q, the genera
25ad0 74 65 64 20 53 51 4c 0a 2a 2a 20 77 6f 75 6c 64  ted SQL.** would
25ae0 20 68 61 76 65 20 6c 6f 6f 6b 65 64 20 6c 69 6b   have looked lik
25af0 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62  e this:.**.** <b
25b00 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
25b10 2a 2a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  **  INSERT INTO 
25b20 74 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27 49  table1 VALUES('I
25b30 74 27 73 20 61 20 68 61 70 70 79 20 64 61 79 21  t's a happy day!
25b40 27 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62  ');.** </pre></b
25b50 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a  lockquote>.**.**
25b60 20 54 68 69 73 20 73 65 63 6f 6e 64 20 65 78 61   This second exa
25b70 6d 70 6c 65 20 69 73 20 61 6e 20 53 51 4c 20 73  mple is an SQL s
25b80 79 6e 74 61 78 20 65 72 72 6f 72 2e 20 20 41 73  yntax error.  As
25b90 20 61 20 67 65 6e 65 72 61 6c 20 72 75 6c 65 20   a general rule 
25ba0 79 6f 75 20 73 68 6f 75 6c 64 0a 2a 2a 20 61 6c  you should.** al
25bb0 77 61 79 73 20 75 73 65 20 25 71 20 69 6e 73 74  ways use %q inst
25bc0 65 61 64 20 6f 66 20 25 73 20 77 68 65 6e 20 69  ead of %s when i
25bd0 6e 73 65 72 74 69 6e 67 20 74 65 78 74 20 69 6e  nserting text in
25be0 74 6f 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  to a string lite
25bf0 72 61 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65  ral..**.** ^(The
25c00 20 25 51 20 6f 70 74 69 6f 6e 20 77 6f 72 6b 73   %Q option works
25c10 20 6c 69 6b 65 20 25 71 20 65 78 63 65 70 74 20   like %q except 
25c20 69 74 20 61 6c 73 6f 20 61 64 64 73 20 73 69 6e  it also adds sin
25c30 67 6c 65 20 71 75 6f 74 65 73 20 61 72 6f 75 6e  gle quotes aroun
25c40 64 0a 2a 2a 20 74 68 65 20 6f 75 74 73 69 64 65  d.** the outside
25c50 20 6f 66 20 74 68 65 20 74 6f 74 61 6c 20 73 74   of the total st
25c60 72 69 6e 67 2e 20 20 41 64 64 69 74 69 6f 6e 61  ring.  Additiona
25c70 6c 6c 79 2c 20 69 66 20 74 68 65 20 70 61 72 61  lly, if the para
25c80 6d 65 74 65 72 20 69 6e 20 74 68 65 0a 2a 2a 20  meter in the.** 
25c90 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 69 73  argument list is
25ca0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
25cb0 20 25 51 20 73 75 62 73 74 69 74 75 74 65 73 20   %Q substitutes 
25cc0 74 68 65 20 74 65 78 74 20 22 4e 55 4c 4c 22 20  the text "NULL" 
25cd0 28 77 69 74 68 6f 75 74 0a 2a 2a 20 73 69 6e 67  (without.** sing
25ce0 6c 65 20 71 75 6f 74 65 73 29 2e 29 5e 20 20 53  le quotes).)^  S
25cf0 6f 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20  o, for example, 
25d00 6f 6e 65 20 63 6f 75 6c 64 20 73 61 79 3a 0a 2a  one could say:.*
25d10 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65  *.** <blockquote
25d20 3e 3c 70 72 65 3e 0a 2a 2a 20 20 63 68 61 72 20  ><pre>.**  char 
25d30 2a 7a 53 51 4c 20 3d 20 73 71 6c 69 74 65 33 5f  *zSQL = sqlite3_
25d40 6d 70 72 69 6e 74 66 28 22 49 4e 53 45 52 54 20  mprintf("INSERT 
25d50 49 4e 54 4f 20 74 61 62 6c 65 20 56 41 4c 55 45  INTO table VALUE
25d60 53 28 25 51 29 22 2c 20 7a 54 65 78 74 29 3b 0a  S(%Q)", zText);.
25d70 2a 2a 20 20 73 71 6c 69 74 65 33 5f 65 78 65 63  **  sqlite3_exec
25d80 28 64 62 2c 20 7a 53 51 4c 2c 20 30 2c 20 30 2c  (db, zSQL, 0, 0,
25d90 20 30 29 3b 0a 2a 2a 20 20 73 71 6c 69 74 65 33   0);.**  sqlite3
25da0 5f 66 72 65 65 28 7a 53 51 4c 29 3b 0a 2a 2a 20  _free(zSQL);.** 
25db0 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
25dc0 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f  te>.**.** The co
25dd0 64 65 20 61 62 6f 76 65 20 77 69 6c 6c 20 72 65  de above will re
25de0 6e 64 65 72 20 61 20 63 6f 72 72 65 63 74 20 53  nder a correct S
25df0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20  QL statement in 
25e00 74 68 65 20 7a 53 51 4c 0a 2a 2a 20 76 61 72 69  the zSQL.** vari
25e10 61 62 6c 65 20 65 76 65 6e 20 69 66 20 74 68 65  able even if the
25e20 20 7a 54 65 78 74 20 76 61 72 69 61 62 6c 65 20   zText variable 
25e30 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  is a NULL pointe
25e40 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 22  r..**.** ^(The "
25e50 25 77 22 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f  %w" formatting o
25e60 70 74 69 6f 6e 20 69 73 20 6c 69 6b 65 20 22 25  ption is like "%
25e70 71 22 20 65 78 63 65 70 74 20 74 68 61 74 20 69  q" except that i
25e80 74 20 65 78 70 65 63 74 73 20 74 6f 0a 2a 2a 20  t expects to.** 
25e90 62 65 20 63 6f 6e 74 61 69 6e 65 64 20 77 69 74  be contained wit
25ea0 68 69 6e 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65  hin double-quote
25eb0 73 20 69 6e 73 74 65 61 64 20 6f 66 20 73 69 6e  s instead of sin
25ec0 67 6c 65 20 71 75 6f 74 65 73 2c 20 61 6e 64 20  gle quotes, and 
25ed0 69 74 0a 2a 2a 20 65 73 63 61 70 65 73 20 74 68  it.** escapes th
25ee0 65 20 64 6f 75 62 6c 65 2d 71 75 6f 74 65 20 63  e double-quote c
25ef0 68 61 72 61 63 74 65 72 20 69 6e 73 74 65 61 64  haracter instead
25f00 20 6f 66 20 74 68 65 20 73 69 6e 67 6c 65 2d 71   of the single-q
25f10 75 6f 74 65 0a 2a 2a 20 63 68 61 72 61 63 74 65  uote.** characte
25f20 72 2e 29 5e 20 20 54 68 65 20 22 25 77 22 20 66  r.)^  The "%w" f
25f30 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e  ormatting option
25f40 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72   is intended for
25f50 20 73 61 66 65 6c 79 20 69 6e 73 65 72 74 69 6e   safely insertin
25f60 67 0a 2a 2a 20 74 61 62 6c 65 20 61 6e 64 20 63  g.** table and c
25f70 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 69 6e 74 6f  olumn names into
25f80 20 61 20 63 6f 6e 73 74 72 75 63 74 65 64 20 53   a constructed S
25f90 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a  QL statement..**
25fa0 0a 2a 2a 20 5e 28 54 68 65 20 22 25 7a 22 20 66  .** ^(The "%z" f
25fb0 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e  ormatting option
25fc0 20 77 6f 72 6b 73 20 6c 69 6b 65 20 22 25 73 22   works like "%s"
25fd0 20 62 75 74 20 77 69 74 68 20 74 68 65 0a 2a 2a   but with the.**
25fe0 20 61 64 64 69 74 69 6f 6e 20 74 68 61 74 20 61   addition that a
25ff0 66 74 65 72 20 74 68 65 20 73 74 72 69 6e 67 20  fter the string 
26000 68 61 73 20 62 65 65 6e 20 72 65 61 64 20 61 6e  has been read an
26010 64 20 63 6f 70 69 65 64 20 69 6e 74 6f 0a 2a 2a  d copied into.**
26020 20 74 68 65 20 72 65 73 75 6c 74 2c 20 5b 73 71   the result, [sq
26030 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20 69 73  lite3_free()] is
26040 20 63 61 6c 6c 65 64 20 6f 6e 20 74 68 65 20 69   called on the i
26050 6e 70 75 74 20 73 74 72 69 6e 67 2e 29 5e 0a 2a  nput string.)^.*
26060 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61  /.SQLITE_API cha
26070 72 20 2a 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  r *sqlite3_mprin
26080 74 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 2e  tf(const char*,.
26090 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..);.SQLITE_API 
260a0 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 76 6d  char *sqlite3_vm
260b0 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68 61  printf(const cha
260c0 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 53 51  r*, va_list);.SQ
260d0 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73  LITE_API char *s
260e0 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28  qlite3_snprintf(
260f0 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74 20  int,char*,const 
26100 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a 53 51 4c  char*, ...);.SQL
26110 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71  ITE_API char *sq
26120 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e 74 66 28  lite3_vsnprintf(
26130 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e 73 74 20  int,char*,const 
26140 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b  char*, va_list);
26150 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
26160 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74  : Memory Allocat
26170 69 6f 6e 20 53 75 62 73 79 73 74 65 6d 0a 2a 2a  ion Subsystem.**
26180 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20 63  .** The SQLite c
26190 6f 72 65 20 75 73 65 73 20 74 68 65 73 65 20 74  ore uses these t
261a0 68 72 65 65 20 72 6f 75 74 69 6e 65 73 20 66 6f  hree routines fo
261b0 72 20 61 6c 6c 20 6f 66 20 69 74 73 20 6f 77 6e  r all of its own
261c0 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 20 6d 65 6d  .** internal mem
261d0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e  ory allocation n
261e0 65 65 64 73 2e 20 22 43 6f 72 65 22 20 69 6e 20  eeds. "Core" in 
261f0 74 68 65 20 70 72 65 76 69 6f 75 73 20 73 65 6e  the previous sen
26200 74 65 6e 63 65 0a 2a 2a 20 64 6f 65 73 20 6e 6f  tence.** does no
26210 74 20 69 6e 63 6c 75 64 65 20 6f 70 65 72 61 74  t include operat
26220 69 6e 67 2d 73 79 73 74 65 6d 20 73 70 65 63 69  ing-system speci
26230 66 69 63 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  fic VFS implemen
26240 74 61 74 69 6f 6e 2e 20 20 54 68 65 0a 2a 2a 20  tation.  The.** 
26250 57 69 6e 64 6f 77 73 20 56 46 53 20 75 73 65 73  Windows VFS uses
26260 20 6e 61 74 69 76 65 20 6d 61 6c 6c 6f 63 28 29   native malloc()
26270 20 61 6e 64 20 66 72 65 65 28 29 20 66 6f 72 20   and free() for 
26280 73 6f 6d 65 20 6f 70 65 72 61 74 69 6f 6e 73 2e  some operations.
26290 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
262a0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 6f 75  te3_malloc() rou
262b0 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 70  tine returns a p
262c0 6f 69 6e 74 65 72 20 74 6f 20 61 20 62 6c 6f 63  ointer to a bloc
262d0 6b 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79 20 61  k.** of memory a
262e0 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65 73 20  t least N bytes 
262f0 69 6e 20 6c 65 6e 67 74 68 2c 20 77 68 65 72 65  in length, where
26300 20 4e 20 69 73 20 74 68 65 20 70 61 72 61 6d 65   N is the parame
26310 74 65 72 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69  ter..** ^If sqli
26320 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73 20  te3_malloc() is 
26330 75 6e 61 62 6c 65 20 74 6f 20 6f 62 74 61 69 6e  unable to obtain
26340 20 73 75 66 66 69 63 69 65 6e 74 20 66 72 65 65   sufficient free
26350 0a 2a 2a 20 6d 65 6d 6f 72 79 2c 20 69 74 20 72  .** memory, it r
26360 65 74 75 72 6e 73 20 61 20 4e 55 4c 4c 20 70 6f  eturns a NULL po
26370 69 6e 74 65 72 2e 20 20 5e 49 66 20 74 68 65 20  inter.  ^If the 
26380 70 61 72 61 6d 65 74 65 72 20 4e 20 74 6f 0a 2a  parameter N to.*
26390 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  * sqlite3_malloc
263a0 28 29 20 69 73 20 7a 65 72 6f 20 6f 72 20 6e 65  () is zero or ne
263b0 67 61 74 69 76 65 20 74 68 65 6e 20 73 71 6c 69  gative then sqli
263c0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 72 65 74  te3_malloc() ret
263d0 75 72 6e 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70  urns.** a NULL p
263e0 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 54  ointer..**.** ^T
263f0 68 65 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  he sqlite3_mallo
26400 63 36 34 28 4e 29 20 72 6f 75 74 69 6e 65 20 77  c64(N) routine w
26410 6f 72 6b 73 20 6a 75 73 74 20 6c 69 6b 65 0a 2a  orks just like.*
26420 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  * sqlite3_malloc
26430 28 4e 29 20 65 78 63 65 70 74 20 74 68 61 74 20  (N) except that 
26440 4e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64  N is an unsigned
26450 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 20   64-bit integer 
26460 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20 61 20  instead.** of a 
26470 73 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e  signed 32-bit in
26480 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61  teger..**.** ^Ca
26490 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 66 72  lling sqlite3_fr
264a0 65 65 28 29 20 77 69 74 68 20 61 20 70 6f 69 6e  ee() with a poin
264b0 74 65 72 20 70 72 65 76 69 6f 75 73 6c 79 20 72  ter previously r
264c0 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71  eturned.** by sq
264d0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f  lite3_malloc() o
264e0 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  r sqlite3_reallo
264f0 63 28 29 20 72 65 6c 65 61 73 65 73 20 74 68 61  c() releases tha
26500 74 20 6d 65 6d 6f 72 79 20 73 6f 0a 2a 2a 20 74  t memory so.** t
26510 68 61 74 20 69 74 20 6d 69 67 68 74 20 62 65 20  hat it might be 
26520 72 65 75 73 65 64 2e 20 20 5e 54 68 65 20 73 71  reused.  ^The sq
26530 6c 69 74 65 33 5f 66 72 65 65 28 29 20 72 6f 75  lite3_free() rou
26540 74 69 6e 65 20 69 73 0a 2a 2a 20 61 20 6e 6f 2d  tine is.** a no-
26550 6f 70 20 69 66 20 69 73 20 63 61 6c 6c 65 64 20  op if is called 
26560 77 69 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  with a NULL poin
26570 74 65 72 2e 20 20 50 61 73 73 69 6e 67 20 61 20  ter.  Passing a 
26580 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  NULL pointer.** 
26590 74 6f 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  to sqlite3_free(
265a0 29 20 69 73 20 68 61 72 6d 6c 65 73 73 2e 20 20  ) is harmless.  
265b0 41 66 74 65 72 20 62 65 69 6e 67 20 66 72 65 65  After being free
265c0 64 2c 20 6d 65 6d 6f 72 79 0a 2a 2a 20 73 68 6f  d, memory.** sho
265d0 75 6c 64 20 6e 65 69 74 68 65 72 20 62 65 20 72  uld neither be r
265e0 65 61 64 20 6e 6f 72 20 77 72 69 74 74 65 6e 2e  ead nor written.
265f0 20 20 45 76 65 6e 20 72 65 61 64 69 6e 67 20 70    Even reading p
26600 72 65 76 69 6f 75 73 6c 79 20 66 72 65 65 64 0a  reviously freed.
26610 2a 2a 20 6d 65 6d 6f 72 79 20 6d 69 67 68 74 20  ** memory might 
26620 72 65 73 75 6c 74 20 69 6e 20 61 20 73 65 67 6d  result in a segm
26630 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c 74 20 6f  entation fault o
26640 72 20 6f 74 68 65 72 20 73 65 76 65 72 65 20 65  r other severe e
26650 72 72 6f 72 2e 0a 2a 2a 20 4d 65 6d 6f 72 79 20  rror..** Memory 
26660 63 6f 72 72 75 70 74 69 6f 6e 2c 20 61 20 73 65  corruption, a se
26670 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c 74  gmentation fault
26680 2c 20 6f 72 20 6f 74 68 65 72 20 73 65 76 65 72  , or other sever
26690 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 69 67 68 74  e error.** might
266a0 20 72 65 73 75 6c 74 20 69 66 20 73 71 6c 69 74   result if sqlit
266b0 65 33 5f 66 72 65 65 28 29 20 69 73 20 63 61 6c  e3_free() is cal
266c0 6c 65 64 20 77 69 74 68 20 61 20 6e 6f 6e 2d 4e  led with a non-N
266d0 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ULL pointer that
266e0 0a 2a 2a 20 77 61 73 20 6e 6f 74 20 6f 62 74 61  .** was not obta
266f0 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
26700 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71  3_malloc() or sq
26710 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2e  lite3_realloc().
26720 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
26730 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29  te3_realloc(X,N)
26740 20 69 6e 74 65 72 66 61 63 65 20 61 74 74 65 6d   interface attem
26750 70 74 73 20 74 6f 20 72 65 73 69 7a 65 20 61 0a  pts to resize a.
26760 2a 2a 20 70 72 69 6f 72 20 6d 65 6d 6f 72 79 20  ** prior memory 
26770 61 6c 6c 6f 63 61 74 69 6f 6e 20 58 20 74 6f 20  allocation X to 
26780 62 65 20 61 74 20 6c 65 61 73 74 20 4e 20 62 79  be at least N by
26790 74 65 73 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  tes..** ^If the 
267a0 58 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  X parameter to s
267b0 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58  qlite3_realloc(X
267c0 2c 4e 29 0a 2a 2a 20 69 73 20 61 20 4e 55 4c 4c  ,N).** is a NULL
267d0 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 69 74   pointer then it
267e0 73 20 62 65 68 61 76 69 6f 72 20 69 73 20 69 64  s behavior is id
267f0 65 6e 74 69 63 61 6c 20 74 6f 20 63 61 6c 6c 69  entical to calli
26800 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61  ng.** sqlite3_ma
26810 6c 6c 6f 63 28 4e 29 2e 0a 2a 2a 20 5e 49 66 20  lloc(N)..** ^If 
26820 74 68 65 20 4e 20 70 61 72 61 6d 65 74 65 72 20  the N parameter 
26830 74 6f 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  to sqlite3_reall
26840 6f 63 28 58 2c 4e 29 20 69 73 20 7a 65 72 6f 20  oc(X,N) is zero 
26850 6f 72 0a 2a 2a 20 6e 65 67 61 74 69 76 65 20 74  or.** negative t
26860 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72  hen the behavior
26870 20 69 73 20 65 78 61 63 74 6c 79 20 74 68 65 20   is exactly the 
26880 73 61 6d 65 20 61 73 20 63 61 6c 6c 69 6e 67 0a  same as calling.
26890 2a 2a 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  ** sqlite3_free(
268a0 58 29 2e 0a 2a 2a 20 5e 73 71 6c 69 74 65 33 5f  X)..** ^sqlite3_
268b0 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 72 65 74  realloc(X,N) ret
268c0 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
268d0 6f 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  o a memory alloc
268e0 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 61 74 20 6c  ation.** of at l
268f0 65 61 73 74 20 4e 20 62 79 74 65 73 20 69 6e 20  east N bytes in 
26900 73 69 7a 65 20 6f 72 20 4e 55 4c 4c 20 69 66 20  size or NULL if 
26910 69 6e 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d  insufficient mem
26920 6f 72 79 20 69 73 20 61 76 61 69 6c 61 62 6c 65  ory is available
26930 2e 0a 2a 2a 20 5e 49 66 20 4d 20 69 73 20 74 68  ..** ^If M is th
26940 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 72  e size of the pr
26950 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20  ior allocation, 
26960 74 68 65 6e 20 6d 69 6e 28 4e 2c 4d 29 20 62 79  then min(N,M) by
26970 74 65 73 0a 2a 2a 20 6f 66 20 74 68 65 20 70 72  tes.** of the pr
26980 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 61  ior allocation a
26990 72 65 20 63 6f 70 69 65 64 20 69 6e 74 6f 20 74  re copied into t
269a0 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
269b0 62 75 66 66 65 72 20 72 65 74 75 72 6e 65 64 0a  buffer returned.
269c0 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f 72 65  ** by sqlite3_re
269d0 61 6c 6c 6f 63 28 58 2c 4e 29 20 61 6e 64 20 74  alloc(X,N) and t
269e0 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74  he prior allocat
269f0 69 6f 6e 20 69 73 20 66 72 65 65 64 2e 0a 2a 2a  ion is freed..**
26a00 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 72 65 61   ^If sqlite3_rea
26a10 6c 6c 6f 63 28 58 2c 4e 29 20 72 65 74 75 72 6e  lloc(X,N) return
26a20 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73 20  s NULL and N is 
26a30 70 6f 73 69 74 69 76 65 2c 20 74 68 65 6e 20 74  positive, then t
26a40 68 65 0a 2a 2a 20 70 72 69 6f 72 20 61 6c 6c 6f  he.** prior allo
26a50 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 66 72  cation is not fr
26a60 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  eed..**.** ^The 
26a70 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36  sqlite3_realloc6
26a80 34 28 58 2c 4e 29 20 69 6e 74 65 72 66 61 63 65  4(X,N) interface
26a90 73 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65  s works the same
26aa0 20 61 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 72   as.** sqlite3_r
26ab0 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 65 78 63 65  ealloc(X,N) exce
26ac0 70 74 20 74 68 61 74 20 4e 20 69 73 20 61 20 36  pt that N is a 6
26ad0 34 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69  4-bit unsigned i
26ae0 6e 74 65 67 65 72 20 69 6e 73 74 65 61 64 0a 2a  nteger instead.*
26af0 2a 20 6f 66 20 61 20 33 32 2d 62 69 74 20 73 69  * of a 32-bit si
26b00 67 6e 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a  gned integer..**
26b10 0a 2a 2a 20 5e 49 66 20 58 20 69 73 20 61 20 6d  .** ^If X is a m
26b20 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
26b30 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
26b40 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c 69 74 65  ined from sqlite
26b50 33 5f 6d 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73  3_malloc(),.** s
26b60 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28  qlite3_malloc64(
26b70 29 2c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  ), sqlite3_reall
26b80 6f 63 28 29 2c 20 6f 72 20 73 71 6c 69 74 65 33  oc(), or sqlite3
26b90 5f 72 65 61 6c 6c 6f 63 36 34 28 29 2c 20 74 68  _realloc64(), th
26ba0 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 73  en.** sqlite3_ms
26bb0 69 7a 65 28 58 29 20 72 65 74 75 72 6e 73 20 74  ize(X) returns t
26bc0 68 65 20 73 69 7a 65 20 6f 66 20 74 68 61 74 20  he size of that 
26bd0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
26be0 6e 20 69 6e 20 62 79 74 65 73 2e 0a 2a 2a 20 5e  n in bytes..** ^
26bf0 54 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  The value return
26c00 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 6d 73  ed by sqlite3_ms
26c10 69 7a 65 28 58 29 20 6d 69 67 68 74 20 62 65 20  ize(X) might be 
26c20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68 65 20  larger than the 
26c30 6e 75 6d 62 65 72 0a 2a 2a 20 6f 66 20 62 79 74  number.** of byt
26c40 65 73 20 72 65 71 75 65 73 74 65 64 20 77 68 65  es requested whe
26c50 6e 20 58 20 77 61 73 20 61 6c 6c 6f 63 61 74 65  n X was allocate
26c60 64 2e 20 20 5e 49 66 20 58 20 69 73 20 61 20 4e  d.  ^If X is a N
26c70 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e  ULL pointer then
26c80 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a  .** sqlite3_msiz
26c90 65 28 58 29 20 72 65 74 75 72 6e 73 20 7a 65 72  e(X) returns zer
26ca0 6f 2e 20 20 49 66 20 58 20 70 6f 69 6e 74 73 20  o.  If X points 
26cb0 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61  to something tha
26cc0 74 20 69 73 20 6e 6f 74 0a 2a 2a 20 74 68 65 20  t is not.** the 
26cd0 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 6d 65 6d  beginning of mem
26ce0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20  ory allocation, 
26cf0 6f 72 20 69 66 20 69 74 20 70 6f 69 6e 74 73 20  or if it points 
26d00 74 6f 20 61 20 66 6f 72 6d 65 72 6c 79 0a 2a 2a  to a formerly.**
26d10 20 76 61 6c 69 64 20 6d 65 6d 6f 72 79 20 61 6c   valid memory al
26d20 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74 20 68 61  location that ha
26d30 73 20 6e 6f 77 20 62 65 65 6e 20 66 72 65 65 64  s now been freed
26d40 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
26d50 69 6f 72 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65  ior.** of sqlite
26d60 33 5f 6d 73 69 7a 65 28 58 29 20 69 73 20 75 6e  3_msize(X) is un
26d70 64 65 66 69 6e 65 64 20 61 6e 64 20 70 6f 73 73  defined and poss
26d80 69 62 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a  ibly harmful..**
26d90 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f 72 79 20  .** ^The memory 
26da0 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69  returned by sqli
26db0 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c 20 73 71  te3_malloc(), sq
26dc0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2c  lite3_realloc(),
26dd0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  .** sqlite3_mall
26de0 6f 63 36 34 28 29 2c 20 61 6e 64 20 73 71 6c 69  oc64(), and sqli
26df0 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 29 0a  te3_realloc64().
26e00 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 61 6c 69  ** is always ali
26e10 67 6e 65 64 20 74 6f 20 61 74 20 6c 65 61 73 74  gned to at least
26e20 20 61 6e 20 38 20 62 79 74 65 20 62 6f 75 6e 64   an 8 byte bound
26e30 61 72 79 2c 20 6f 72 20 74 6f 20 61 0a 2a 2a 20  ary, or to a.** 
26e40 34 20 62 79 74 65 20 62 6f 75 6e 64 61 72 79 20  4 byte boundary 
26e50 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 34  if the [SQLITE_4
26e60 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41  _BYTE_ALIGNED_MA
26e70 4c 4c 4f 43 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  LLOC] compile-ti
26e80 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20  me.** option is 
26e90 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 6e 20 53  used..**.** In S
26ea0 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e  QLite version 3.
26eb0 35 2e 30 20 61 6e 64 20 33 2e 35 2e 31 2c 20 69  5.0 and 3.5.1, i
26ec0 74 20 77 61 73 20 70 6f 73 73 69 62 6c 65 20 74  t was possible t
26ed0 6f 20 64 65 66 69 6e 65 0a 2a 2a 20 74 68 65 20  o define.** the 
26ee0 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f  SQLITE_OMIT_MEMO
26ef0 52 59 5f 41 4c 4c 4f 43 41 54 49 4f 4e 20 77 68  RY_ALLOCATION wh
26f00 69 63 68 20 77 6f 75 6c 64 20 63 61 75 73 65 20  ich would cause 
26f10 74 68 65 20 62 75 69 6c 74 2d 69 6e 0a 2a 2a 20  the built-in.** 
26f20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f  implementation o
26f30 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  f these routines
26f40 20 74 6f 20 62 65 20 6f 6d 69 74 74 65 64 2e 20   to be omitted. 
26f50 20 54 68 61 74 20 63 61 70 61 62 69 6c 69 74 79   That capability
26f60 0a 2a 2a 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72  .** is no longer
26f70 20 70 72 6f 76 69 64 65 64 2e 20 20 4f 6e 6c 79   provided.  Only
26f80 20 62 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79   built-in memory
26f90 20 61 6c 6c 6f 63 61 74 6f 72 73 20 63 61 6e 20   allocators can 
26fa0 62 65 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 50  be used..**.** P
26fb0 72 69 6f 72 20 74 6f 20 53 51 4c 69 74 65 20 76  rior to SQLite v
26fc0 65 72 73 69 6f 6e 20 33 2e 37 2e 31 30 2c 20 74  ersion 3.7.10, t
26fd0 68 65 20 57 69 6e 64 6f 77 73 20 4f 53 20 69 6e  he Windows OS in
26fe0 74 65 72 66 61 63 65 20 6c 61 79 65 72 20 63 61  terface layer ca
26ff0 6c 6c 65 64 0a 2a 2a 20 74 68 65 20 73 79 73 74  lled.** the syst
27000 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20  em malloc() and 
27010 66 72 65 65 28 29 20 64 69 72 65 63 74 6c 79 20  free() directly 
27020 77 68 65 6e 20 63 6f 6e 76 65 72 74 69 6e 67 0a  when converting.
27030 2a 2a 20 66 69 6c 65 6e 61 6d 65 73 20 62 65 74  ** filenames bet
27040 77 65 65 6e 20 74 68 65 20 55 54 46 2d 38 20 65  ween the UTF-8 e
27050 6e 63 6f 64 69 6e 67 20 75 73 65 64 20 62 79 20  ncoding used by 
27060 53 51 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 77 68  SQLite.** and wh
27070 61 74 65 76 65 72 20 66 69 6c 65 6e 61 6d 65 20  atever filename 
27080 65 6e 63 6f 64 69 6e 67 20 69 73 20 75 73 65 64  encoding is used
27090 20 62 79 20 74 68 65 20 70 61 72 74 69 63 75 6c   by the particul
270a0 61 72 20 57 69 6e 64 6f 77 73 0a 2a 2a 20 69 6e  ar Windows.** in
270b0 73 74 61 6c 6c 61 74 69 6f 6e 2e 20 20 4d 65 6d  stallation.  Mem
270c0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 65  ory allocation e
270d0 72 72 6f 72 73 20 77 65 72 65 20 64 65 74 65 63  rrors were detec
270e0 74 65 64 2c 20 62 75 74 0a 2a 2a 20 74 68 65 79  ted, but.** they
270f0 20 77 65 72 65 20 72 65 70 6f 72 74 65 64 20 62   were reported b
27100 61 63 6b 20 61 73 20 5b 53 51 4c 49 54 45 5f 43  ack as [SQLITE_C
27110 41 4e 54 4f 50 45 4e 5d 20 6f 72 0a 2a 2a 20 5b  ANTOPEN] or.** [
27120 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d 20 72 61  SQLITE_IOERR] ra
27130 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54  ther than [SQLIT
27140 45 5f 4e 4f 4d 45 4d 5d 2e 0a 2a 2a 0a 2a 2a 20  E_NOMEM]..**.** 
27150 54 68 65 20 70 6f 69 6e 74 65 72 20 61 72 67 75  The pointer argu
27160 6d 65 6e 74 73 20 74 6f 20 5b 73 71 6c 69 74 65  ments to [sqlite
27170 33 5f 66 72 65 65 28 29 5d 20 61 6e 64 20 5b 73  3_free()] and [s
27180 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29  qlite3_realloc()
27190 5d 0a 2a 2a 20 6d 75 73 74 20 62 65 20 65 69 74  ].** must be eit
271a0 68 65 72 20 4e 55 4c 4c 20 6f 72 20 65 6c 73 65  her NULL or else
271b0 20 70 6f 69 6e 74 65 72 73 20 6f 62 74 61 69 6e   pointers obtain
271c0 65 64 20 66 72 6f 6d 20 61 20 70 72 69 6f 72 0a  ed from a prior.
271d0 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66  ** invocation of
271e0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
271f0 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  ()] or [sqlite3_
27200 72 65 61 6c 6c 6f 63 28 29 5d 20 74 68 61 74 20  realloc()] that 
27210 68 61 76 65 0a 2a 2a 20 6e 6f 74 20 79 65 74 20  have.** not yet 
27220 62 65 65 6e 20 72 65 6c 65 61 73 65 64 2e 0a 2a  been released..*
27230 2a 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61  *.** The applica
27240 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 72 65  tion must not re
27250 61 64 20 6f 72 20 77 72 69 74 65 20 61 6e 79 20  ad or write any 
27260 70 61 72 74 20 6f 66 0a 2a 2a 20 61 20 62 6c 6f  part of.** a blo
27270 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 61 66 74  ck of memory aft
27280 65 72 20 69 74 20 68 61 73 20 62 65 65 6e 20 72  er it has been r
27290 65 6c 65 61 73 65 64 20 75 73 69 6e 67 0a 2a 2a  eleased using.**
272a0 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29   [sqlite3_free()
272b0 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65  ] or [sqlite3_re
272c0 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a 53 51 4c  alloc()]..*/.SQL
272d0 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73 71  ITE_API void *sq
272e0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 69 6e 74  lite3_malloc(int
272f0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f  );.SQLITE_API vo
27300 69 64 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  id *sqlite3_mall
27310 6f 63 36 34 28 73 71 6c 69 74 65 33 5f 75 69 6e  oc64(sqlite3_uin
27320 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  t64);.SQLITE_API
27330 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 72   void *sqlite3_r
27340 65 61 6c 6c 6f 63 28 76 6f 69 64 2a 2c 20 69 6e  ealloc(void*, in
27350 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  t);.SQLITE_API v
27360 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 72 65 61  oid *sqlite3_rea
27370 6c 6c 6f 63 36 34 28 76 6f 69 64 2a 2c 20 73 71  lloc64(void*, sq
27380 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a 53  lite3_uint64);.S
27390 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73  QLITE_API void s
273a0 71 6c 69 74 65 33 5f 66 72 65 65 28 76 6f 69 64  qlite3_free(void
273b0 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 73  *);.SQLITE_API s
273c0 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 20 73 71  qlite3_uint64 sq
273d0 6c 69 74 65 33 5f 6d 73 69 7a 65 28 76 6f 69 64  lite3_msize(void
273e0 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
273f0 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f  REF: Memory Allo
27400 63 61 74 6f 72 20 53 74 61 74 69 73 74 69 63 73  cator Statistics
27410 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 70 72  .**.** SQLite pr
27420 6f 76 69 64 65 73 20 74 68 65 73 65 20 74 77 6f  ovides these two
27430 20 69 6e 74 65 72 66 61 63 65 73 20 66 6f 72 20   interfaces for 
27440 72 65 70 6f 72 74 69 6e 67 20 6f 6e 20 74 68 65  reporting on the
27450 20 73 74 61 74 75 73 0a 2a 2a 20 6f 66 20 74 68   status.** of th
27460 65 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  e [sqlite3_mallo
27470 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 66  c()], [sqlite3_f
27480 72 65 65 28 29 5d 2c 20 61 6e 64 20 5b 73 71 6c  ree()], and [sql
27490 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a  ite3_realloc()].
274a0 2a 2a 20 72 6f 75 74 69 6e 65 73 2c 20 77 68 69  ** routines, whi
274b0 63 68 20 66 6f 72 6d 20 74 68 65 20 62 75 69 6c  ch form the buil
274c0 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  t-in memory allo
274d0 63 61 74 69 6f 6e 20 73 75 62 73 79 73 74 65 6d  cation subsystem
274e0 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 73 71  ..**.** ^The [sq
274f0 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
27500 64 28 29 5d 20 72 6f 75 74 69 6e 65 20 72 65 74  d()] routine ret
27510 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20  urns the number 
27520 6f 66 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 6d  of bytes.** of m
27530 65 6d 6f 72 79 20 63 75 72 72 65 6e 74 6c 79 20  emory currently 
27540 6f 75 74 73 74 61 6e 64 69 6e 67 20 28 6d 61 6c  outstanding (mal
27550 6c 6f 63 65 64 20 62 75 74 20 6e 6f 74 20 66 72  loced but not fr
27560 65 65 64 29 2e 0a 2a 2a 20 5e 54 68 65 20 5b 73  eed)..** ^The [s
27570 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
27580 67 68 77 61 74 65 72 28 29 5d 20 72 6f 75 74 69  ghwater()] routi
27590 6e 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d  ne returns the m
275a0 61 78 69 6d 75 6d 0a 2a 2a 20 76 61 6c 75 65 20  aximum.** value 
275b0 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  of [sqlite3_memo
275c0 72 79 5f 75 73 65 64 28 29 5d 20 73 69 6e 63 65  ry_used()] since
275d0 20 74 68 65 20 68 69 67 68 2d 77 61 74 65 72 20   the high-water 
275e0 6d 61 72 6b 0a 2a 2a 20 77 61 73 20 6c 61 73 74  mark.** was last
275f0 20 72 65 73 65 74 2e 20 20 5e 54 68 65 20 76 61   reset.  ^The va
27600 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  lues returned by
27610 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
27620 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a 2a 2a 20  _used()] and.** 
27630 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
27640 68 69 67 68 77 61 74 65 72 28 29 5d 20 69 6e 63  highwater()] inc
27650 6c 75 64 65 20 61 6e 79 20 6f 76 65 72 68 65 61  lude any overhea
27660 64 0a 2a 2a 20 61 64 64 65 64 20 62 79 20 53 51  d.** added by SQ
27670 4c 69 74 65 20 69 6e 20 69 74 73 20 69 6d 70 6c  Lite in its impl
27680 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 73  ementation of [s
27690 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
276a0 2c 0a 2a 2a 20 62 75 74 20 6e 6f 74 20 6f 76 65  ,.** but not ove
276b0 72 68 65 61 64 20 61 64 64 65 64 20 62 79 20 74  rhead added by t
276c0 68 65 20 61 6e 79 20 75 6e 64 65 72 6c 79 69 6e  he any underlyin
276d0 67 20 73 79 73 74 65 6d 20 6c 69 62 72 61 72 79  g system library
276e0 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 74 68 61  .** routines tha
276f0 74 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  t [sqlite3_mallo
27700 63 28 29 5d 20 6d 61 79 20 63 61 6c 6c 2e 0a 2a  c()] may call..*
27710 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f 72 79  *.** ^The memory
27720 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b   high-water mark
27730 20 69 73 20 72 65 73 65 74 20 74 6f 20 74 68 65   is reset to the
27740 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f   current value o
27750 66 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65  f.** [sqlite3_me
27760 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 69 66 20  mory_used()] if 
27770 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 20  and only if the 
27780 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
27790 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
277a0 68 69 67 68 77 61 74 65 72 28 29 5d 20 69 73 20  highwater()] is 
277b0 74 72 75 65 2e 20 20 5e 54 68 65 20 76 61 6c 75  true.  ^The valu
277c0 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79  e returned.** by
277d0 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
277e0 5f 68 69 67 68 77 61 74 65 72 28 31 29 5d 20 69  _highwater(1)] i
277f0 73 20 74 68 65 20 68 69 67 68 2d 77 61 74 65 72  s the high-water
27800 20 6d 61 72 6b 0a 2a 2a 20 70 72 69 6f 72 20 74   mark.** prior t
27810 6f 20 74 68 65 20 72 65 73 65 74 2e 0a 2a 2f 0a  o the reset..*/.
27820 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74  SQLITE_API sqlit
27830 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33  e3_int64 sqlite3
27840 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 76 6f 69  _memory_used(voi
27850 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 73  d);.SQLITE_API s
27860 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71 6c  qlite3_int64 sql
27870 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
27880 77 61 74 65 72 28 69 6e 74 20 72 65 73 65 74 46  water(int resetF
27890 6c 61 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  lag);../*.** CAP
278a0 49 33 52 45 46 3a 20 50 73 65 75 64 6f 2d 52 61  I3REF: Pseudo-Ra
278b0 6e 64 6f 6d 20 4e 75 6d 62 65 72 20 47 65 6e 65  ndom Number Gene
278c0 72 61 74 6f 72 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  rator.**.** SQLi
278d0 74 65 20 63 6f 6e 74 61 69 6e 73 20 61 20 68 69  te contains a hi
278e0 67 68 2d 71 75 61 6c 69 74 79 20 70 73 65 75 64  gh-quality pseud
278f0 6f 2d 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 20  o-random number 
27900 67 65 6e 65 72 61 74 6f 72 20 28 50 52 4e 47 29  generator (PRNG)
27910 20 75 73 65 64 20 74 6f 0a 2a 2a 20 73 65 6c 65   used to.** sele
27920 63 74 20 72 61 6e 64 6f 6d 20 5b 52 4f 57 49 44  ct random [ROWID
27930 20 7c 20 52 4f 57 49 44 73 5d 20 77 68 65 6e 20   | ROWIDs] when 
27940 69 6e 73 65 72 74 69 6e 67 20 6e 65 77 20 72 65  inserting new re
27950 63 6f 72 64 73 20 69 6e 74 6f 20 61 20 74 61 62  cords into a tab
27960 6c 65 20 74 68 61 74 0a 2a 2a 20 61 6c 72 65 61  le that.** alrea
27970 64 79 20 75 73 65 73 20 74 68 65 20 6c 61 72 67  dy uses the larg
27980 65 73 74 20 70 6f 73 73 69 62 6c 65 20 5b 52 4f  est possible [RO
27990 57 49 44 5d 2e 20 20 54 68 65 20 50 52 4e 47 20  WID].  The PRNG 
279a0 69 73 20 61 6c 73 6f 20 75 73 65 64 20 66 6f 72  is also used for
279b0 0a 2a 2a 20 74 68 65 20 62 75 69 6c 64 2d 69 6e  .** the build-in
279c0 20 72 61 6e 64 6f 6d 28 29 20 61 6e 64 20 72 61   random() and ra
279d0 6e 64 6f 6d 62 6c 6f 62 28 29 20 53 51 4c 20 66  ndomblob() SQL f
279e0 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68 69 73 20  unctions.  This 
279f0 69 6e 74 65 72 66 61 63 65 20 61 6c 6c 6f 77 73  interface allows
27a00 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  .** applications
27a10 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 73   to access the s
27a20 61 6d 65 20 50 52 4e 47 20 66 6f 72 20 6f 74 68  ame PRNG for oth
27a30 65 72 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a  er purposes..**.
27a40 2a 2a 20 5e 41 20 63 61 6c 6c 20 74 6f 20 74 68  ** ^A call to th
27a50 69 73 20 72 6f 75 74 69 6e 65 20 73 74 6f 72 65  is routine store
27a60 73 20 4e 20 62 79 74 65 73 20 6f 66 20 72 61 6e  s N bytes of ran
27a70 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20 62 75 66  domness into buf
27a80 66 65 72 20 50 2e 0a 2a 2a 20 5e 54 68 65 20 50  fer P..** ^The P
27a90 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 20 62   parameter can b
27aa0 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  e a NULL pointer
27ab0 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 69 73  ..**.** ^If this
27ac0 20 72 6f 75 74 69 6e 65 20 68 61 73 20 6e 6f 74   routine has not
27ad0 20 62 65 65 6e 20 70 72 65 76 69 6f 75 73 6c 79   been previously
27ae0 20 63 61 6c 6c 65 64 20 6f 72 20 69 66 20 74 68   called or if th
27af0 65 20 70 72 65 76 69 6f 75 73 0a 2a 2a 20 63 61  e previous.** ca
27b00 6c 6c 20 68 61 64 20 4e 20 6c 65 73 73 20 74 68  ll had N less th
27b10 61 6e 20 6f 6e 65 20 6f 72 20 61 20 4e 55 4c 4c  an one or a NULL
27b20 20 70 6f 69 6e 74 65 72 20 66 6f 72 20 50 2c 20   pointer for P, 
27b30 74 68 65 6e 20 74 68 65 20 50 52 4e 47 20 69 73  then the PRNG is
27b40 0a 2a 2a 20 73 65 65 64 65 64 20 75 73 69 6e 67  .** seeded using
27b50 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f 62 74 61   randomness obta
27b60 69 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 78 52  ined from the xR
27b70 61 6e 64 6f 6d 6e 65 73 73 20 6d 65 74 68 6f 64  andomness method
27b80 20 6f 66 0a 2a 2a 20 74 68 65 20 64 65 66 61 75   of.** the defau
27b90 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d  lt [sqlite3_vfs]
27ba0 20 6f 62 6a 65 63 74 2e 0a 2a 2a 20 5e 49 66 20   object..** ^If 
27bb0 74 68 65 20 70 72 65 76 69 6f 75 73 20 63 61 6c  the previous cal
27bc0 6c 20 74 6f 20 74 68 69 73 20 72 6f 75 74 69 6e  l to this routin
27bd0 65 20 68 61 64 20 61 6e 20 4e 20 6f 66 20 31 20  e had an N of 1 
27be0 6f 72 20 6d 6f 72 65 20 61 6e 64 20 61 0a 2a 2a  or more and a.**
27bf0 20 6e 6f 6e 2d 4e 55 4c 4c 20 50 20 74 68 65 6e   non-NULL P then
27c00 20 74 68 65 20 70 73 65 75 64 6f 2d 72 61 6e 64   the pseudo-rand
27c10 6f 6d 6e 65 73 73 20 69 73 20 67 65 6e 65 72 61  omness is genera
27c20 74 65 64 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 6c  ted.** internall
27c30 79 20 61 6e 64 20 77 69 74 68 6f 75 74 20 72 65  y and without re
27c40 63 6f 75 72 73 65 20 74 6f 20 74 68 65 20 5b 73  course to the [s
27c50 71 6c 69 74 65 33 5f 76 66 73 5d 20 78 52 61 6e  qlite3_vfs] xRan
27c60 64 6f 6d 6e 65 73 73 0a 2a 2a 20 6d 65 74 68 6f  domness.** metho
27c70 64 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  d..*/.SQLITE_API
27c80 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 72 61   void sqlite3_ra
27c90 6e 64 6f 6d 6e 65 73 73 28 69 6e 74 20 4e 2c 20  ndomness(int N, 
27ca0 76 6f 69 64 20 2a 50 29 3b 0a 0a 2f 2a 0a 2a 2a  void *P);../*.**
27cb0 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70 69   CAPI3REF: Compi
27cc0 6c 65 2d 54 69 6d 65 20 41 75 74 68 6f 72 69 7a  le-Time Authoriz
27cd0 61 74 69 6f 6e 20 43 61 6c 6c 62 61 63 6b 73 0a  ation Callbacks.
27ce0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
27cf0 65 33 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  e3.** KEYWORDS: 
27d00 7b 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c  {authorizer call
27d10 62 61 63 6b 7d 0a 2a 2a 0a 2a 2a 20 5e 54 68 69  back}.**.** ^Thi
27d20 73 20 72 6f 75 74 69 6e 65 20 72 65 67 69 73 74  s routine regist
27d30 65 72 73 20 61 6e 20 61 75 74 68 6f 72 69 7a 65  ers an authorize
27d40 72 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68 20  r callback with 
27d50 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20  a particular.** 
27d60 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
27d70 74 69 6f 6e 5d 2c 20 73 75 70 70 6c 69 65 64 20  tion], supplied 
27d80 69 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67  in the first arg
27d90 75 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68 65 20 61  ument..** ^The a
27da0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
27db0 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 61 73  ck is invoked as
27dc0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
27dd0 61 72 65 20 62 65 69 6e 67 20 63 6f 6d 70 69 6c  are being compil
27de0 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c 69 74 65  ed.** by [sqlite
27df0 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f 72 20  3_prepare()] or 
27e00 69 74 73 20 76 61 72 69 61 6e 74 73 20 5b 73 71  its variants [sq
27e10 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
27e20 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
27e30 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 2c 20  _prepare_v3()], 
27e40 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
27e50 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  16()], [sqlite3_
27e60 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d 2c  prepare16_v2()],
27e70 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  .** and [sqlite3
27e80 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d  _prepare16_v3()]
27e90 2e 20 20 5e 41 74 20 76 61 72 69 6f 75 73 0a 2a  .  ^At various.*
27ea0 2a 20 70 6f 69 6e 74 73 20 64 75 72 69 6e 67 20  * points during 
27eb0 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20  the compilation 
27ec0 70 72 6f 63 65 73 73 2c 20 61 73 20 6c 6f 67 69  process, as logi
27ed0 63 20 69 73 20 62 65 69 6e 67 20 63 72 65 61 74  c is being creat
27ee0 65 64 0a 2a 2a 20 74 6f 20 70 65 72 66 6f 72 6d  ed.** to perform
27ef0 20 76 61 72 69 6f 75 73 20 61 63 74 69 6f 6e 73   various actions
27f00 2c 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  , the authorizer
27f10 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
27f20 6f 6b 65 64 20 74 6f 0a 2a 2a 20 73 65 65 20 69  oked to.** see i
27f30 66 20 74 68 6f 73 65 20 61 63 74 69 6f 6e 73 20  f those actions 
27f40 61 72 65 20 61 6c 6c 6f 77 65 64 2e 20 20 5e 54  are allowed.  ^T
27f50 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  he authorizer ca
27f60 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 0a 2a 2a  llback should.**
27f70 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
27f80 4f 4b 5d 20 74 6f 20 61 6c 6c 6f 77 20 74 68 65  OK] to allow the
27f90 20 61 63 74 69 6f 6e 2c 20 5b 53 51 4c 49 54 45   action, [SQLITE
27fa0 5f 49 47 4e 4f 52 45 5d 20 74 6f 20 64 69 73 61  _IGNORE] to disa
27fb0 6c 6c 6f 77 20 74 68 65 0a 2a 2a 20 73 70 65 63  llow the.** spec
27fc0 69 66 69 63 20 61 63 74 69 6f 6e 20 62 75 74 20  ific action but 
27fd0 61 6c 6c 6f 77 20 74 68 65 20 53 51 4c 20 73 74  allow the SQL st
27fe0 61 74 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74 69  atement to conti
27ff0 6e 75 65 20 74 6f 20 62 65 0a 2a 2a 20 63 6f 6d  nue to be.** com
28000 70 69 6c 65 64 2c 20 6f 72 20 5b 53 51 4c 49 54  piled, or [SQLIT
28010 45 5f 44 45 4e 59 5d 20 74 6f 20 63 61 75 73 65  E_DENY] to cause
28020 20 74 68 65 20 65 6e 74 69 72 65 20 53 51 4c 20   the entire SQL 
28030 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 0a  statement to be.
28040 2a 2a 20 72 65 6a 65 63 74 65 64 20 77 69 74 68  ** rejected with
28050 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 49 66 20   an error.  ^If 
28060 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  the authorizer c
28070 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 0a  allback returns.
28080 2a 2a 20 61 6e 79 20 76 61 6c 75 65 20 6f 74 68  ** any value oth
28090 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  er than [SQLITE_
280a0 49 47 4e 4f 52 45 5d 2c 20 5b 53 51 4c 49 54 45  IGNORE], [SQLITE
280b0 5f 4f 4b 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45  _OK], or [SQLITE
280c0 5f 44 45 4e 59 5d 0a 2a 2a 20 74 68 65 6e 20 74  _DENY].** then t
280d0 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  he [sqlite3_prep
280e0 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 65 71 75  are_v2()] or equ
280f0 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20 74 68 61  ivalent call tha
28100 74 20 74 72 69 67 67 65 72 65 64 0a 2a 2a 20 74  t triggered.** t
28110 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 77 69  he authorizer wi
28120 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61 6e 20  ll fail with an 
28130 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 0a 2a  error message..*
28140 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 63 61  *.** When the ca
28150 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b  llback returns [
28160 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68 61 74  SQLITE_OK], that
28170 20 6d 65 61 6e 73 20 74 68 65 20 6f 70 65 72 61   means the opera
28180 74 69 6f 6e 0a 2a 2a 20 72 65 71 75 65 73 74 65  tion.** requeste
28190 64 20 69 73 20 6f 6b 2e 20 20 5e 57 68 65 6e 20  d is ok.  ^When 
281a0 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  the callback ret
281b0 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 44 45 4e  urns [SQLITE_DEN
281c0 59 5d 2c 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69  Y], the.** [sqli
281d0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
281e0 5d 20 6f 72 20 65 71 75 69 76 61 6c 65 6e 74 20  ] or equivalent 
281f0 63 61 6c 6c 20 74 68 61 74 20 74 72 69 67 67 65  call that trigge
28200 72 65 64 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f  red the.** autho
28210 72 69 7a 65 72 20 77 69 6c 6c 20 66 61 69 6c 20  rizer will fail 
28220 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 6d 65  with an error me
28230 73 73 61 67 65 20 65 78 70 6c 61 69 6e 69 6e 67  ssage explaining
28240 20 74 68 61 74 0a 2a 2a 20 61 63 63 65 73 73 20   that.** access 
28250 69 73 20 64 65 6e 69 65 64 2e 20 0a 2a 2a 0a 2a  is denied. .**.*
28260 2a 20 5e 54 68 65 20 66 69 72 73 74 20 70 61 72  * ^The first par
28270 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61 75  ameter to the au
28280 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
28290 6b 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74  k is a copy of t
282a0 68 65 20 74 68 69 72 64 0a 2a 2a 20 70 61 72 61  he third.** para
282b0 6d 65 74 65 72 20 74 6f 20 74 68 65 20 73 71 6c  meter to the sql
282c0 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
282d0 7a 65 72 28 29 20 69 6e 74 65 72 66 61 63 65 2e  zer() interface.
282e0 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72   ^The second par
282f0 61 6d 65 74 65 72 0a 2a 2a 20 74 6f 20 74 68 65  ameter.** to the
28300 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20   callback is an 
28310 69 6e 74 65 67 65 72 20 5b 53 51 4c 49 54 45 5f  integer [SQLITE_
28320 43 4f 50 59 20 7c 20 61 63 74 69 6f 6e 20 63 6f  COPY | action co
28330 64 65 5d 20 74 68 61 74 20 73 70 65 63 69 66 69  de] that specifi
28340 65 73 0a 2a 2a 20 74 68 65 20 70 61 72 74 69 63  es.** the partic
28350 75 6c 61 72 20 61 63 74 69 6f 6e 20 74 6f 20 62  ular action to b
28360 65 20 61 75 74 68 6f 72 69 7a 65 64 2e 20 5e 54  e authorized. ^T
28370 68 65 20 74 68 69 72 64 20 74 68 72 6f 75 67 68  he third through
28380 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72   sixth parameter
28390 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c 6c  s.** to the call
283a0 62 61 63 6b 20 61 72 65 20 65 69 74 68 65 72 20  back are either 
283b0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 20 6f 72  NULL pointers or
283c0 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
283d0 20 73 74 72 69 6e 67 73 0a 2a 2a 20 74 68 61 74   strings.** that
283e0 20 63 6f 6e 74 61 69 6e 20 61 64 64 69 74 69 6f   contain additio
283f0 6e 61 6c 20 64 65 74 61 69 6c 73 20 61 62 6f 75  nal details abou
28400 74 20 74 68 65 20 61 63 74 69 6f 6e 20 74 6f 20  t the action to 
28410 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e 0a 2a  be authorized..*
28420 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d  * Applications m
28430 75 73 74 20 61 6c 77 61 79 73 20 62 65 20 70 72  ust always be pr
28440 65 70 61 72 65 64 20 74 6f 20 65 6e 63 6f 75 6e  epared to encoun
28450 74 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  ter a NULL point
28460 65 72 20 69 6e 20 61 6e 79 0a 2a 2a 20 6f 66 20  er in any.** of 
28470 74 68 65 20 74 68 69 72 64 20 74 68 72 6f 75 67  the third throug
28480 68 20 74 68 65 20 73 69 78 74 68 20 70 61 72 61  h the sixth para
28490 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 61 75  meters of the au
284a0 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63 61 6c 6c  thorization call
284b0 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  back..**.** ^If 
284c0 74 68 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20  the action code 
284d0 69 73 20 5b 53 51 4c 49 54 45 5f 52 45 41 44 5d  is [SQLITE_READ]
284e0 0a 2a 2a 20 61 6e 64 20 74 68 65 20 63 61 6c 6c  .** and the call
284f0 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b 53 51  back returns [SQ
28500 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65  LITE_IGNORE] the
28510 6e 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72  n the.** [prepar
28520 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 73 74  ed statement] st
28530 61 74 65 6d 65 6e 74 20 69 73 20 63 6f 6e 73 74  atement is const
28540 72 75 63 74 65 64 20 74 6f 20 73 75 62 73 74 69  ructed to substi
28550 74 75 74 65 0a 2a 2a 20 61 20 4e 55 4c 4c 20 76  tute.** a NULL v
28560 61 6c 75 65 20 69 6e 20 70 6c 61 63 65 20 6f 66  alue in place of
28570 20 74 68 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d   the table colum
28580 6e 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76  n that would hav
28590 65 0a 2a 2a 20 62 65 65 6e 20 72 65 61 64 20 69  e.** been read i
285a0 66 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 68 61  f [SQLITE_OK] ha
285b0 64 20 62 65 65 6e 20 72 65 74 75 72 6e 65 64 2e  d been returned.
285c0 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 49 47    The [SQLITE_IG
285d0 4e 4f 52 45 5d 0a 2a 2a 20 72 65 74 75 72 6e 20  NORE].** return 
285e0 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64  can be used to d
285f0 65 6e 79 20 61 6e 20 75 6e 74 72 75 73 74 65 64  eny an untrusted
28600 20 75 73 65 72 20 61 63 63 65 73 73 20 74 6f 20   user access to 
28610 69 6e 64 69 76 69 64 75 61 6c 0a 2a 2a 20 63 6f  individual.** co
28620 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c 65  lumns of a table
28630 2e 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 74 61 62  ..** ^When a tab
28640 6c 65 20 69 73 20 72 65 66 65 72 65 6e 63 65 64  le is referenced
28650 20 62 79 20 61 20 5b 53 45 4c 45 43 54 5d 20 62   by a [SELECT] b
28660 75 74 20 6e 6f 20 63 6f 6c 75 6d 6e 20 76 61 6c  ut no column val
28670 75 65 73 20 61 72 65 0a 2a 2a 20 65 78 74 72 61  ues are.** extra
28680 63 74 65 64 20 66 72 6f 6d 20 74 68 61 74 20 74  cted from that t
28690 61 62 6c 65 20 28 66 6f 72 20 65 78 61 6d 70 6c  able (for exampl
286a0 65 20 69 6e 20 61 20 71 75 65 72 79 20 6c 69 6b  e in a query lik
286b0 65 0a 2a 2a 20 22 53 45 4c 45 43 54 20 63 6f 75  e.** "SELECT cou
286c0 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61 62 22 29  nt(*) FROM tab")
286d0 20 74 68 65 6e 20 74 68 65 20 5b 53 51 4c 49 54   then the [SQLIT
286e0 45 5f 52 45 41 44 5d 20 61 75 74 68 6f 72 69 7a  E_READ] authoriz
286f0 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69  er callback.** i
28700 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66  s invoked once f
28710 6f 72 20 74 68 61 74 20 74 61 62 6c 65 20 77 69  or that table wi
28720 74 68 20 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  th a column name
28730 20 74 68 61 74 20 69 73 20 61 6e 20 65 6d 70 74   that is an empt
28740 79 20 73 74 72 69 6e 67 2e 0a 2a 2a 20 5e 49 66  y string..** ^If
28750 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f 64 65   the action code
28760 20 69 73 20 5b 53 51 4c 49 54 45 5f 44 45 4c 45   is [SQLITE_DELE
28770 54 45 5d 20 61 6e 64 20 74 68 65 20 63 61 6c 6c  TE] and the call
28780 62 61 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20  back returns.** 
28790 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20  [SQLITE_IGNORE] 
287a0 74 68 65 6e 20 74 68 65 20 5b 44 45 4c 45 54 45  then the [DELETE
287b0 5d 20 6f 70 65 72 61 74 69 6f 6e 20 70 72 6f 63  ] operation proc
287c0 65 65 64 73 20 62 75 74 20 74 68 65 0a 2a 2a 20  eeds but the.** 
287d0 5b 74 72 75 6e 63 61 74 65 20 6f 70 74 69 6d 69  [truncate optimi
287e0 7a 61 74 69 6f 6e 5d 20 69 73 20 64 69 73 61 62  zation] is disab
287f0 6c 65 64 20 61 6e 64 20 61 6c 6c 20 72 6f 77 73  led and all rows
28800 20 61 72 65 20 64 65 6c 65 74 65 64 20 69 6e 64   are deleted ind
28810 69 76 69 64 75 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a  ividually..**.**
28820 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 69   An authorizer i
28830 73 20 75 73 65 64 20 77 68 65 6e 20 5b 73 71 6c  s used when [sql
28840 69 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20 70  ite3_prepare | p
28850 72 65 70 61 72 69 6e 67 5d 0a 2a 2a 20 53 51 4c  reparing].** SQL
28860 20 73 74 61 74 65 6d 65 6e 74 73 20 66 72 6f 6d   statements from
28870 20 61 6e 20 75 6e 74 72 75 73 74 65 64 20 73 6f   an untrusted so
28880 75 72 63 65 2c 20 74 6f 20 65 6e 73 75 72 65 20  urce, to ensure 
28890 74 68 61 74 20 74 68 65 20 53 51 4c 20 73 74 61  that the SQL sta
288a0 74 65 6d 65 6e 74 73 0a 2a 2a 20 64 6f 20 6e 6f  tements.** do no
288b0 74 20 74 72 79 20 74 6f 20 61 63 63 65 73 73 20  t try to access 
288c0 64 61 74 61 20 74 68 65 79 20 61 72 65 20 6e 6f  data they are no
288d0 74 20 61 6c 6c 6f 77 65 64 20 74 6f 20 73 65 65  t allowed to see
288e0 2c 20 6f 72 20 74 68 61 74 20 74 68 65 79 20 64  , or that they d
288f0 6f 20 6e 6f 74 0a 2a 2a 20 74 72 79 20 74 6f 20  o not.** try to 
28900 65 78 65 63 75 74 65 20 6d 61 6c 69 63 69 6f 75  execute maliciou
28910 73 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  s statements tha
28920 74 20 64 61 6d 61 67 65 20 74 68 65 20 64 61 74  t damage the dat
28930 61 62 61 73 65 2e 20 20 46 6f 72 0a 2a 2a 20 65  abase.  For.** e
28940 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70 6c 69  xample, an appli
28950 63 61 74 69 6f 6e 20 6d 61 79 20 61 6c 6c 6f 77  cation may allow
28960 20 61 20 75 73 65 72 20 74 6f 20 65 6e 74 65 72   a user to enter
28970 20 61 72 62 69 74 72 61 72 79 0a 2a 2a 20 53 51   arbitrary.** SQ
28980 4c 20 71 75 65 72 69 65 73 20 66 6f 72 20 65 76  L queries for ev
28990 61 6c 75 61 74 69 6f 6e 20 62 79 20 61 20 64 61  aluation by a da
289a0 74 61 62 61 73 65 2e 20 20 42 75 74 20 74 68 65  tabase.  But the
289b0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65   application doe
289c0 73 0a 2a 2a 20 6e 6f 74 20 77 61 6e 74 20 74 68  s.** not want th
289d0 65 20 75 73 65 72 20 74 6f 20 62 65 20 61 62 6c  e user to be abl
289e0 65 20 74 6f 20 6d 61 6b 65 20 61 72 62 69 74 72  e to make arbitr
289f0 61 72 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74  ary changes to t
28a00 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 2e 20  he.** database. 
28a10 20 41 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63   An authorizer c
28a20 6f 75 6c 64 20 74 68 65 6e 20 62 65 20 70 75 74  ould then be put
28a30 20 69 6e 20 70 6c 61 63 65 20 77 68 69 6c 65 20   in place while 
28a40 74 68 65 0a 2a 2a 20 75 73 65 72 2d 65 6e 74 65  the.** user-ente
28a50 72 65 64 20 53 51 4c 20 69 73 20 62 65 69 6e 67  red SQL is being
28a60 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
28a70 65 20 7c 20 70 72 65 70 61 72 65 64 5d 20 74 68  e | prepared] th
28a80 61 74 0a 2a 2a 20 64 69 73 61 6c 6c 6f 77 73 20  at.** disallows 
28a90 65 76 65 72 79 74 68 69 6e 67 20 65 78 63 65 70  everything excep
28aa0 74 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  t [SELECT] state
28ab0 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 41 70 70  ments..**.** App
28ac0 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 6e  lications that n
28ad0 65 65 64 20 74 6f 20 70 72 6f 63 65 73 73 20 53  eed to process S
28ae0 51 4c 20 66 72 6f 6d 20 75 6e 74 72 75 73 74 65  QL from untruste
28af0 64 20 73 6f 75 72 63 65 73 0a 2a 2a 20 6d 69 67  d sources.** mig
28b00 68 74 20 61 6c 73 6f 20 63 6f 6e 73 69 64 65 72  ht also consider
28b10 20 6c 6f 77 65 72 69 6e 67 20 72 65 73 6f 75 72   lowering resour
28b20 63 65 20 6c 69 6d 69 74 73 20 75 73 69 6e 67 20  ce limits using 
28b30 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29  [sqlite3_limit()
28b40 5d 0a 2a 2a 20 61 6e 64 20 6c 69 6d 69 74 69 6e  ].** and limitin
28b50 67 20 64 61 74 61 62 61 73 65 20 73 69 7a 65 20  g database size 
28b60 75 73 69 6e 67 20 74 68 65 20 5b 6d 61 78 5f 70  using the [max_p
28b70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47  age_count] [PRAG
28b80 4d 41 5d 0a 2a 2a 20 69 6e 20 61 64 64 69 74 69  MA].** in additi
28b90 6f 6e 20 74 6f 20 75 73 69 6e 67 20 61 6e 20 61  on to using an a
28ba0 75 74 68 6f 72 69 7a 65 72 2e 0a 2a 2a 0a 2a 2a  uthorizer..**.**
28bb0 20 5e 28 4f 6e 6c 79 20 61 20 73 69 6e 67 6c 65   ^(Only a single
28bc0 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6e 20   authorizer can 
28bd0 62 65 20 69 6e 20 70 6c 61 63 65 20 6f 6e 20 61  be in place on a
28be0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
28bf0 74 69 6f 6e 0a 2a 2a 20 61 74 20 61 20 74 69 6d  tion.** at a tim
28c00 65 2e 20 20 45 61 63 68 20 63 61 6c 6c 20 74 6f  e.  Each call to
28c10 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74   sqlite3_set_aut
28c20 68 6f 72 69 7a 65 72 20 6f 76 65 72 72 69 64 65  horizer override
28c30 73 20 74 68 65 0a 2a 2a 20 70 72 65 76 69 6f 75  s the.** previou
28c40 73 20 63 61 6c 6c 2e 29 5e 20 20 5e 44 69 73 61  s call.)^  ^Disa
28c50 62 6c 65 20 74 68 65 20 61 75 74 68 6f 72 69 7a  ble the authoriz
28c60 65 72 20 62 79 20 69 6e 73 74 61 6c 6c 69 6e 67  er by installing
28c70 20 61 20 4e 55 4c 4c 20 63 61 6c 6c 62 61 63 6b   a NULL callback
28c80 2e 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 69  ..** The authori
28c90 7a 65 72 20 69 73 20 64 69 73 61 62 6c 65 64 20  zer is disabled 
28ca0 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a  by default..**.*
28cb0 2a 20 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72  * The authorizer
28cc0 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20 6e   callback must n
28cd0 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 74  ot do anything t
28ce0 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79 0a  hat will modify.
28cf0 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ** the database 
28d00 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
28d10 69 6e 76 6f 6b 65 64 20 74 68 65 20 61 75 74 68  invoked the auth
28d20 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 2e  orizer callback.
28d30 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73  .** Note that [s
28d40 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
28d50 32 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  2()] and [sqlite
28d60 33 5f 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d  3_step()] both m
28d70 6f 64 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64  odify their.** d
28d80 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
28d90 6f 6e 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e  ons for the mean
28da0 69 6e 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20  ing of "modify" 
28db0 69 6e 20 74 68 69 73 20 70 61 72 61 67 72 61 70  in this paragrap
28dc0 68 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20 5b  h..**.** ^When [
28dd0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
28de0 76 32 28 29 5d 20 69 73 20 75 73 65 64 20 74 6f  v2()] is used to
28df0 20 70 72 65 70 61 72 65 20 61 20 73 74 61 74 65   prepare a state
28e00 6d 65 6e 74 2c 20 74 68 65 0a 2a 2a 20 73 74 61  ment, the.** sta
28e10 74 65 6d 65 6e 74 20 6d 69 67 68 74 20 62 65 20  tement might be 
28e20 72 65 2d 70 72 65 70 61 72 65 64 20 64 75 72 69  re-prepared duri
28e30 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  ng [sqlite3_step
28e40 28 29 5d 20 64 75 65 20 74 6f 20 61 20 0a 2a 2a  ()] due to a .**
28e50 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2e 20   schema change. 
28e60 20 48 65 6e 63 65 2c 20 74 68 65 20 61 70 70 6c   Hence, the appl
28e70 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 65  ication should e
28e80 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 0a 2a  nsure that the.*
28e90 2a 20 63 6f 72 72 65 63 74 20 61 75 74 68 6f 72  * correct author
28ea0 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 72 65  izer callback re
28eb0 6d 61 69 6e 73 20 69 6e 20 70 6c 61 63 65 20 64  mains in place d
28ec0 75 72 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  uring the [sqlit
28ed0 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a 0a 2a  e3_step()]..**.*
28ee0 2a 20 5e 4e 6f 74 65 20 74 68 61 74 20 74 68 65  * ^Note that the
28ef0 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
28f00 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
28f10 6f 6e 6c 79 20 64 75 72 69 6e 67 0a 2a 2a 20 5b  only during.** [
28f20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
28f30 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69 61 6e  )] or its varian
28f40 74 73 2e 20 20 41 75 74 68 6f 72 69 7a 61 74 69  ts.  Authorizati
28f50 6f 6e 20 69 73 20 6e 6f 74 0a 2a 2a 20 70 65 72  on is not.** per
28f60 66 6f 72 6d 65 64 20 64 75 72 69 6e 67 20 73 74  formed during st
28f70 61 74 65 6d 65 6e 74 20 65 76 61 6c 75 61 74 69  atement evaluati
28f80 6f 6e 20 69 6e 20 5b 73 71 6c 69 74 65 33 5f 73  on in [sqlite3_s
28f90 74 65 70 28 29 5d 2c 20 75 6e 6c 65 73 73 0a 2a  tep()], unless.*
28fa0 2a 20 61 73 20 73 74 61 74 65 64 20 69 6e 20 74  * as stated in t
28fb0 68 65 20 70 72 65 76 69 6f 75 73 20 70 61 72 61  he previous para
28fc0 67 72 61 70 68 2c 20 73 71 6c 69 74 65 33 5f 73  graph, sqlite3_s
28fd0 74 65 70 28 29 20 69 6e 76 6f 6b 65 73 0a 2a 2a  tep() invokes.**
28fe0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
28ff0 5f 76 32 28 29 20 74 6f 20 72 65 70 72 65 70 61  _v2() to reprepa
29000 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74 20 61  re a statement a
29010 66 74 65 72 20 61 20 73 63 68 65 6d 61 20 63 68  fter a schema ch
29020 61 6e 67 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  ange..*/.SQLITE_
29030 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
29040 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 0a  set_authorizer(.
29050 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20 69 6e    sqlite3*,.  in
29060 74 20 28 2a 78 41 75 74 68 29 28 76 6f 69 64 2a  t (*xAuth)(void*
29070 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a  ,int,const char*
29080 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e  ,const char*,con
29090 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63  st char*,const c
290a0 68 61 72 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70  har*),.  void *p
290b0 55 73 65 72 44 61 74 61 0a 29 3b 0a 0a 2f 2a 0a  UserData.);../*.
290c0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 41 75 74  ** CAPI3REF: Aut
290d0 68 6f 72 69 7a 65 72 20 52 65 74 75 72 6e 20 43  horizer Return C
290e0 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b  odes.**.** The [
290f0 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
29100 6f 72 69 7a 65 72 20 7c 20 61 75 74 68 6f 72 69  orizer | authori
29110 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  zer callback fun
29120 63 74 69 6f 6e 5d 20 6d 75 73 74 0a 2a 2a 20 72  ction] must.** r
29130 65 74 75 72 6e 20 65 69 74 68 65 72 20 5b 53 51  eturn either [SQ
29140 4c 49 54 45 5f 4f 4b 5d 20 6f 72 20 6f 6e 65 20  LITE_OK] or one 
29150 6f 66 20 74 68 65 73 65 20 74 77 6f 20 63 6f 6e  of these two con
29160 73 74 61 6e 74 73 20 69 6e 20 6f 72 64 65 72 0a  stants in order.
29170 2a 2a 20 74 6f 20 73 69 67 6e 61 6c 20 53 51 4c  ** to signal SQL
29180 69 74 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ite whether or n
29190 6f 74 20 74 68 65 20 61 63 74 69 6f 6e 20 69 73  ot the action is
291a0 20 70 65 72 6d 69 74 74 65 64 2e 20 20 53 65 65   permitted.  See
291b0 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   the.** [sqlite3
291c0 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 20  _set_authorizer 
291d0 7c 20 61 75 74 68 6f 72 69 7a 65 72 20 64 6f 63  | authorizer doc
291e0 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72 20  umentation] for 
291f0 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e  additional.** in
29200 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  formation..**.**
29210 20 4e 6f 74 65 20 74 68 61 74 20 53 51 4c 49 54   Note that SQLIT
29220 45 5f 49 47 4e 4f 52 45 20 69 73 20 61 6c 73 6f  E_IGNORE is also
29230 20 75 73 65 64 20 61 73 20 61 20 5b 63 6f 6e 66   used as a [conf
29240 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  lict resolution 
29250 6d 6f 64 65 5d 0a 2a 2a 20 72 65 74 75 72 6e 65  mode].** returne
29260 64 20 66 72 6f 6d 20 74 68 65 20 5b 73 71 6c 69  d from the [sqli
29270 74 65 33 5f 76 74 61 62 5f 6f 6e 5f 63 6f 6e 66  te3_vtab_on_conf
29280 6c 69 63 74 28 29 5d 20 69 6e 74 65 72 66 61 63  lict()] interfac
29290 65 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  e..*/.#define SQ
292a0 4c 49 54 45 5f 44 45 4e 59 20 20 20 31 20 20 20  LITE_DENY   1   
292b0 2f 2a 20 41 62 6f 72 74 20 74 68 65 20 53 51 4c  /* Abort the SQL
292c0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 20   statement with 
292d0 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  an error */.#def
292e0 69 6e 65 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52  ine SQLITE_IGNOR
292f0 45 20 32 20 20 20 2f 2a 20 44 6f 6e 27 74 20 61  E 2   /* Don't a
29300 6c 6c 6f 77 20 61 63 63 65 73 73 2c 20 62 75 74  llow access, but
29310 20 64 6f 6e 27 74 20 67 65 6e 65 72 61 74 65 20   don't generate 
29320 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a  an error */../*.
29330 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 41 75 74  ** CAPI3REF: Aut
29340 68 6f 72 69 7a 65 72 20 41 63 74 69 6f 6e 20 43  horizer Action C
29350 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b  odes.**.** The [
29360 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
29370 6f 72 69 7a 65 72 28 29 5d 20 69 6e 74 65 72 66  orizer()] interf
29380 61 63 65 20 72 65 67 69 73 74 65 72 73 20 61 20  ace registers a 
29390 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
293a0 6e 0a 2a 2a 20 74 68 61 74 20 69 73 20 69 6e 76  n.** that is inv
293b0 6f 6b 65 64 20 74 6f 20 61 75 74 68 6f 72 69 7a  oked to authoriz
293c0 65 20 63 65 72 74 61 69 6e 20 53 51 4c 20 73 74  e certain SQL st
293d0 61 74 65 6d 65 6e 74 20 61 63 74 69 6f 6e 73 2e  atement actions.
293e0 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20    The.** second 
293f0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
29400 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20   callback is an 
29410 69 6e 74 65 67 65 72 20 63 6f 64 65 20 74 68 61  integer code tha
29420 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 77  t specifies.** w
29430 68 61 74 20 61 63 74 69 6f 6e 20 69 73 20 62 65  hat action is be
29440 69 6e 67 20 61 75 74 68 6f 72 69 7a 65 64 2e 20  ing authorized. 
29450 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 69   These are the i
29460 6e 74 65 67 65 72 20 61 63 74 69 6f 6e 20 63 6f  nteger action co
29470 64 65 73 20 74 68 61 74 0a 2a 2a 20 74 68 65 20  des that.** the 
29480 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
29490 61 63 6b 20 6d 61 79 20 62 65 20 70 61 73 73 65  ack may be passe
294a0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 61  d..**.** These a
294b0 63 74 69 6f 6e 20 63 6f 64 65 20 76 61 6c 75 65  ction code value
294c0 73 20 73 69 67 6e 69 66 79 20 77 68 61 74 20 6b  s signify what k
294d0 69 6e 64 20 6f 66 20 6f 70 65 72 61 74 69 6f 6e  ind of operation
294e0 20 69 73 20 74 6f 20 62 65 0a 2a 2a 20 61 75 74   is to be.** aut
294f0 68 6f 72 69 7a 65 64 2e 20 20 54 68 65 20 33 72  horized.  The 3r
29500 64 20 61 6e 64 20 34 74 68 20 70 61 72 61 6d 65  d and 4th parame
29510 74 65 72 73 20 74 6f 20 74 68 65 20 61 75 74 68  ters to the auth
29520 6f 72 69 7a 61 74 69 6f 6e 0a 2a 2a 20 63 61 6c  orization.** cal
29530 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 77  lback function w
29540 69 6c 6c 20 62 65 20 70 61 72 61 6d 65 74 65 72  ill be parameter
29550 73 20 6f 72 20 4e 55 4c 4c 20 64 65 70 65 6e 64  s or NULL depend
29560 69 6e 67 20 6f 6e 20 77 68 69 63 68 20 6f 66 20  ing on which of 
29570 74 68 65 73 65 0a 2a 2a 20 63 6f 64 65 73 20 69  these.** codes i
29580 73 20 75 73 65 64 20 61 73 20 74 68 65 20 73 65  s used as the se
29590 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 2e 20  cond parameter. 
295a0 20 5e 28 54 68 65 20 35 74 68 20 70 61 72 61 6d   ^(The 5th param
295b0 65 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 61  eter to the.** a
295c0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
295d0 63 6b 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f  ck is the name o
295e0 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 28  f the database (
295f0 22 6d 61 69 6e 22 2c 20 22 74 65 6d 70 22 2c 0a  "main", "temp",.
29600 2a 2a 20 65 74 63 2e 29 20 69 66 20 61 70 70 6c  ** etc.) if appl
29610 69 63 61 62 6c 65 2e 29 5e 20 20 5e 54 68 65 20  icable.)^  ^The 
29620 36 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f  6th parameter to
29630 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20   the authorizer 
29640 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 74  callback.** is t
29650 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 69  he name of the i
29660 6e 6e 65 72 2d 6d 6f 73 74 20 74 72 69 67 67 65  nner-most trigge
29670 72 20 6f 72 20 76 69 65 77 20 74 68 61 74 20 69  r or view that i
29680 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f  s responsible fo
29690 72 0a 2a 2a 20 74 68 65 20 61 63 63 65 73 73 20  r.** the access 
296a0 61 74 74 65 6d 70 74 20 6f 72 20 4e 55 4c 4c 20  attempt or NULL 
296b0 69 66 20 74 68 69 73 20 61 63 63 65 73 73 20 61  if this access a
296c0 74 74 65 6d 70 74 20 69 73 20 64 69 72 65 63 74  ttempt is direct
296d0 6c 79 20 66 72 6f 6d 0a 2a 2a 20 74 6f 70 2d 6c  ly from.** top-l
296e0 65 76 65 6c 20 53 51 4c 20 63 6f 64 65 2e 0a 2a  evel SQL code..*
296f0 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /./*************
29700 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
29710 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 33  ************** 3
29720 72 64 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  rd ************ 
29730 34 74 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  4th ***********/
29740 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29750 43 52 45 41 54 45 5f 49 4e 44 45 58 20 20 20 20  CREATE_INDEX    
29760 20 20 20 20 20 20 31 20 20 20 2f 2a 20 49 6e 64        1   /* Ind
29770 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62  ex Name      Tab
29780 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
29790 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
297a0 52 45 41 54 45 5f 54 41 42 4c 45 20 20 20 20 20  REATE_TABLE     
297b0 20 20 20 20 20 32 20 20 20 2f 2a 20 54 61 62 6c       2   /* Tabl
297c0 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
297d0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
297e0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
297f0 45 41 54 45 5f 54 45 4d 50 5f 49 4e 44 45 58 20  EATE_TEMP_INDEX 
29800 20 20 20 20 33 20 20 20 2f 2a 20 49 6e 64 65 78      3   /* Index
29810 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65   Name      Table
29820 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
29830 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
29840 41 54 45 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20  ATE_TEMP_TABLE  
29850 20 20 20 34 20 20 20 2f 2a 20 54 61 62 6c 65 20     4   /* Table 
29860 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
29870 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
29880 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
29890 54 45 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20  TE_TEMP_TRIGGER 
298a0 20 20 35 20 20 20 2f 2a 20 54 72 69 67 67 65 72    5   /* Trigger
298b0 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e   Name    Table N
298c0 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
298d0 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
298e0 45 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20  E_TEMP_VIEW     
298f0 20 36 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d   6   /* View Nam
29900 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  e       NULL    
29910 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
29920 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
29930 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20  _TRIGGER        
29940 37 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e  7   /* Trigger N
29950 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  ame    Table Nam
29960 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
29970 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
29980 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20 38  VIEW           8
29990 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20     /* View Name 
299a0 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
299b0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
299c0 20 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 20 20   SQLITE_DELETE  
299d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 39 20                9 
299e0 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
299f0 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
29a00 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
29a10 53 51 4c 49 54 45 5f 44 52 4f 50 5f 49 4e 44 45  SQLITE_DROP_INDE
29a20 58 20 20 20 20 20 20 20 20 20 20 20 31 30 20 20  X           10  
29a30 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20   /* Index Name  
29a40 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
29a50 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
29a60 51 4c 49 54 45 5f 44 52 4f 50 5f 54 41 42 4c 45  QLITE_DROP_TABLE
29a70 20 20 20 20 20 20 20 20 20 20 20 31 31 20 20 20             11   
29a80 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
29a90 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
29aa0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
29ab0 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 49  LITE_DROP_TEMP_I
29ac0 4e 44 45 58 20 20 20 20 20 20 31 32 20 20 20 2f  NDEX      12   /
29ad0 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20  * Index Name    
29ae0 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
29af0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
29b00 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 41  ITE_DROP_TEMP_TA
29b10 42 4c 45 20 20 20 20 20 20 31 33 20 20 20 2f 2a  BLE      13   /*
29b20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
29b30 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
29b40 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
29b50 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 54 52 49  TE_DROP_TEMP_TRI
29b60 47 47 45 52 20 20 20 20 31 34 20 20 20 2f 2a 20  GGER    14   /* 
29b70 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20  Trigger Name    
29b80 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
29b90 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
29ba0 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 56 49 45 57  E_DROP_TEMP_VIEW
29bb0 20 20 20 20 20 20 20 31 35 20 20 20 2f 2a 20 56         15   /* V
29bc0 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e  iew Name       N
29bd0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
29be0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
29bf0 5f 44 52 4f 50 5f 54 52 49 47 47 45 52 20 20 20  _DROP_TRIGGER   
29c00 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 54 72        16   /* Tr
29c10 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61  igger Name    Ta
29c20 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
29c30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29c40 44 52 4f 50 5f 56 49 45 57 20 20 20 20 20 20 20  DROP_VIEW       
29c50 20 20 20 20 20 31 37 20 20 20 2f 2a 20 56 69 65       17   /* Vie
29c60 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c  w Name       NUL
29c70 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
29c80 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
29c90 4e 53 45 52 54 20 20 20 20 20 20 20 20 20 20 20  NSERT           
29ca0 20 20 20 20 31 38 20 20 20 2f 2a 20 54 61 62 6c      18   /* Tabl
29cb0 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
29cc0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
29cd0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52  define SQLITE_PR
29ce0 41 47 4d 41 20 20 20 20 20 20 20 20 20 20 20 20  AGMA            
29cf0 20 20 20 31 39 20 20 20 2f 2a 20 50 72 61 67 6d     19   /* Pragm
29d00 61 20 4e 61 6d 65 20 20 20 20 20 31 73 74 20 61  a Name     1st a
29d10 72 67 20 6f 72 20 4e 55 4c 4c 20 2a 2f 0a 23 64  rg or NULL */.#d
29d20 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
29d30 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  D               
29d40 20 20 32 30 20 20 20 2f 2a 20 54 61 62 6c 65 20    20   /* Table 
29d50 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e  Name      Column
29d60 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65   Name     */.#de
29d70 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 45 4c 45  fine SQLITE_SELE
29d80 43 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20  CT              
29d90 20 32 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20   21   /* NULL   
29da0 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20           NULL   
29db0 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
29dc0 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 4e 53  ine SQLITE_TRANS
29dd0 41 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20  ACTION          
29de0 32 32 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f  22   /* Operatio
29df0 6e 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  n       NULL    
29e00 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
29e10 6e 65 20 53 51 4c 49 54 45 5f 55 50 44 41 54 45  ne SQLITE_UPDATE
29e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
29e30 33 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  3   /* Table Nam
29e40 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61  e      Column Na
29e50 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  me     */.#defin
29e60 65 20 53 51 4c 49 54 45 5f 41 54 54 41 43 48 20  e SQLITE_ATTACH 
29e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 34                24
29e80 20 20 20 2f 2a 20 46 69 6c 65 6e 61 6d 65 20 20     /* Filename  
29e90 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
29ea0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
29eb0 20 53 51 4c 49 54 45 5f 44 45 54 41 43 48 20 20   SQLITE_DETACH  
29ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 32 35 20               25 
29ed0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61    /* Database Na
29ee0 6d 65 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20  me   NULL       
29ef0 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
29f00 53 51 4c 49 54 45 5f 41 4c 54 45 52 5f 54 41 42  SQLITE_ALTER_TAB
29f10 4c 45 20 20 20 20 20 20 20 20 20 20 32 36 20 20  LE          26  
29f20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 4e 61 6d   /* Database Nam
29f30 65 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20  e   Table Name  
29f40 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
29f50 51 4c 49 54 45 5f 52 45 49 4e 44 45 58 20 20 20  QLITE_REINDEX   
29f60 20 20 20 20 20 20 20 20 20 20 20 32 37 20 20 20             27   
29f70 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20  /* Index Name   
29f80 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
29f90 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
29fa0 4c 49 54 45 5f 41 4e 41 4c 59 5a 45 20 20 20 20  LITE_ANALYZE    
29fb0 20 20 20 20 20 20 20 20 20 20 32 38 20 20 20 2f            28   /
29fc0 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
29fd0 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
29fe0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
29ff0 49 54 45 5f 43 52 45 41 54 45 5f 56 54 41 42 4c  ITE_CREATE_VTABL
2a000 45 20 20 20 20 20 20 20 20 32 39 20 20 20 2f 2a  E        29   /*
2a010 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2a020 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20 20   Module Name    
2a030 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2a040 54 45 5f 44 52 4f 50 5f 56 54 41 42 4c 45 20 20  TE_DROP_VTABLE  
2a050 20 20 20 20 20 20 20 20 33 30 20 20 20 2f 2a 20          30   /* 
2a060 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2a070 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20 20 20 20  Module Name     
2a080 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2a090 45 5f 46 55 4e 43 54 49 4f 4e 20 20 20 20 20 20  E_FUNCTION      
2a0a0 20 20 20 20 20 20 20 33 31 20 20 20 2f 2a 20 4e         31   /* N
2a0b0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 46  ULL            F
2a0c0 75 6e 63 74 69 6f 6e 20 4e 61 6d 65 20 20 20 2a  unction Name   *
2a0d0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2a0e0 5f 53 41 56 45 50 4f 49 4e 54 20 20 20 20 20 20  _SAVEPOINT      
2a0f0 20 20 20 20 20 20 33 32 20 20 20 2f 2a 20 4f 70        32   /* Op
2a100 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 53 61  eration       Sa
2a110 76 65 70 6f 69 6e 74 20 4e 61 6d 65 20 20 2a 2f  vepoint Name  */
2a120 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2a130 43 4f 50 59 20 20 20 20 20 20 20 20 20 20 20 20  COPY            
2a140 20 20 20 20 20 20 30 20 20 20 2f 2a 20 4e 6f 20        0   /* No 
2a150 6c 6f 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a 23  longer used */.#
2a160 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
2a170 43 55 52 53 49 56 45 20 20 20 20 20 20 20 20 20  CURSIVE         
2a180 20 20 20 33 33 20 20 20 2f 2a 20 4e 55 4c 4c 20     33   /* NULL 
2a190 20 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c 20             NULL 
2a1a0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 0a 2f             */../
2a1b0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54  *.** CAPI3REF: T
2a1c0 72 61 63 69 6e 67 20 41 6e 64 20 50 72 6f 66 69  racing And Profi
2a1d0 6c 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a  ling Functions.*
2a1e0 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
2a1f0 33 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f  3.**.** These ro
2a200 75 74 69 6e 65 73 20 61 72 65 20 64 65 70 72 65  utines are depre
2a210 63 61 74 65 64 2e 20 55 73 65 20 74 68 65 20 5b  cated. Use the [
2a220 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2a230 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a  ()] interface.**
2a240 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
2a250 72 6f 75 74 69 6e 65 73 20 64 65 73 63 72 69 62  routines describ
2a260 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 54  ed here..**.** T
2a270 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65  hese routines re
2a280 67 69 73 74 65 72 20 63 61 6c 6c 62 61 63 6b 20  gister callback 
2a290 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 63  functions that c
2a2a0 61 6e 20 62 65 20 75 73 65 64 20 66 6f 72 0a 2a  an be used for.*
2a2b0 2a 20 74 72 61 63 69 6e 67 20 61 6e 64 20 70 72  * tracing and pr
2a2c0 6f 66 69 6c 69 6e 67 20 74 68 65 20 65 78 65 63  ofiling the exec
2a2d0 75 74 69 6f 6e 20 6f 66 20 53 51 4c 20 73 74 61  ution of SQL sta
2a2e0 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e  tements..**.** ^
2a2f0 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  The callback fun
2a300 63 74 69 6f 6e 20 72 65 67 69 73 74 65 72 65 64  ction registered
2a310 20 62 79 20 73 71 6c 69 74 65 33 5f 74 72 61 63   by sqlite3_trac
2a320 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20 61  e() is invoked a
2a330 74 0a 2a 2a 20 76 61 72 69 6f 75 73 20 74 69 6d  t.** various tim
2a340 65 73 20 77 68 65 6e 20 61 6e 20 53 51 4c 20 73  es when an SQL s
2a350 74 61 74 65 6d 65 6e 74 20 69 73 20 62 65 69 6e  tatement is bein
2a360 67 20 72 75 6e 20 62 79 20 5b 73 71 6c 69 74 65  g run by [sqlite
2a370 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a 20 5e 54  3_step()]..** ^T
2a380 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  he sqlite3_trace
2a390 28 29 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  () callback is i
2a3a0 6e 76 6f 6b 65 64 20 77 69 74 68 20 61 20 55 54  nvoked with a UT
2a3b0 46 2d 38 20 72 65 6e 64 65 72 69 6e 67 20 6f 66  F-8 rendering of
2a3c0 20 74 68 65 0a 2a 2a 20 53 51 4c 20 73 74 61 74   the.** SQL stat
2a3d0 65 6d 65 6e 74 20 74 65 78 74 20 61 73 20 74 68  ement text as th
2a3e0 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 72 73  e statement firs
2a3f0 74 20 62 65 67 69 6e 73 20 65 78 65 63 75 74 69  t begins executi
2a400 6e 67 2e 0a 2a 2a 20 5e 28 41 64 64 69 74 69 6f  ng..** ^(Additio
2a410 6e 61 6c 20 73 71 6c 69 74 65 33 5f 74 72 61 63  nal sqlite3_trac
2a420 65 28 29 20 63 61 6c 6c 62 61 63 6b 73 20 6d 69  e() callbacks mi
2a430 67 68 74 20 6f 63 63 75 72 0a 2a 2a 20 61 73 20  ght occur.** as 
2a440 65 61 63 68 20 74 72 69 67 67 65 72 65 64 20 73  each triggered s
2a450 75 62 70 72 6f 67 72 61 6d 20 69 73 20 65 6e 74  ubprogram is ent
2a460 65 72 65 64 2e 20 20 54 68 65 20 63 61 6c 6c 62  ered.  The callb
2a470 61 63 6b 73 20 66 6f 72 20 74 72 69 67 67 65 72  acks for trigger
2a480 73 0a 2a 2a 20 63 6f 6e 74 61 69 6e 20 61 20 55  s.** contain a U
2a490 54 46 2d 38 20 53 51 4c 20 63 6f 6d 6d 65 6e 74  TF-8 SQL comment
2a4a0 20 74 68 61 74 20 69 64 65 6e 74 69 66 69 65 73   that identifies
2a4b0 20 74 68 65 20 74 72 69 67 67 65 72 2e 29 5e 0a   the trigger.)^.
2a4c0 2a 2a 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  **.** The [SQLIT
2a4d0 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d  E_TRACE_SIZE_LIM
2a4e0 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  IT] compile-time
2a4f0 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75   option can be u
2a500 73 65 64 20 74 6f 20 6c 69 6d 69 74 0a 2a 2a 20  sed to limit.** 
2a510 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 5b 62  the length of [b
2a520 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 5d 20  ound parameter] 
2a530 65 78 70 61 6e 73 69 6f 6e 20 69 6e 20 74 68 65  expansion in the
2a540 20 6f 75 74 70 75 74 20 6f 66 20 73 71 6c 69 74   output of sqlit
2a550 65 33 5f 74 72 61 63 65 28 29 2e 0a 2a 2a 0a 2a  e3_trace()..**.*
2a560 2a 20 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b 20  * ^The callback 
2a570 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65  function registe
2a580 72 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 70  red by sqlite3_p
2a590 72 6f 66 69 6c 65 28 29 20 69 73 20 69 6e 76 6f  rofile() is invo
2a5a0 6b 65 64 0a 2a 2a 20 61 73 20 65 61 63 68 20 53  ked.** as each S
2a5b0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e  QL statement fin
2a5c0 69 73 68 65 73 2e 20 20 5e 54 68 65 20 70 72 6f  ishes.  ^The pro
2a5d0 66 69 6c 65 20 63 61 6c 6c 62 61 63 6b 20 63 6f  file callback co
2a5e0 6e 74 61 69 6e 73 0a 2a 2a 20 74 68 65 20 6f 72  ntains.** the or
2a5f0 69 67 69 6e 61 6c 20 73 74 61 74 65 6d 65 6e 74  iginal statement
2a600 20 74 65 78 74 20 61 6e 64 20 61 6e 20 65 73 74   text and an est
2a610 69 6d 61 74 65 20 6f 66 20 77 61 6c 6c 2d 63 6c  imate of wall-cl
2a620 6f 63 6b 20 74 69 6d 65 0a 2a 2a 20 6f 66 20 68  ock time.** of h
2a630 6f 77 20 6c 6f 6e 67 20 74 68 61 74 20 73 74 61  ow long that sta
2a640 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20 72  tement took to r
2a650 75 6e 2e 20 20 5e 54 68 65 20 70 72 6f 66 69 6c  un.  ^The profil
2a660 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 74 69  e callback.** ti
2a670 6d 65 20 69 73 20 69 6e 20 75 6e 69 74 73 20 6f  me is in units o
2a680 66 20 6e 61 6e 6f 73 65 63 6f 6e 64 73 2c 20 68  f nanoseconds, h
2a690 6f 77 65 76 65 72 20 74 68 65 20 63 75 72 72 65  owever the curre
2a6a0 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  nt implementatio
2a6b0 6e 0a 2a 2a 20 69 73 20 6f 6e 6c 79 20 63 61 70  n.** is only cap
2a6c0 61 62 6c 65 20 6f 66 20 6d 69 6c 6c 69 73 65 63  able of millisec
2a6d0 6f 6e 64 20 72 65 73 6f 6c 75 74 69 6f 6e 20 73  ond resolution s
2a6e0 6f 20 74 68 65 20 73 69 78 20 6c 65 61 73 74 20  o the six least 
2a6f0 73 69 67 6e 69 66 69 63 61 6e 74 0a 2a 2a 20 64  significant.** d
2a700 69 67 69 74 73 20 69 6e 20 74 68 65 20 74 69 6d  igits in the tim
2a710 65 20 61 72 65 20 6d 65 61 6e 69 6e 67 6c 65 73  e are meaningles
2a720 73 2e 20 20 46 75 74 75 72 65 20 76 65 72 73 69  s.  Future versi
2a730 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 0a 2a 2a  ons of SQLite.**
2a740 20 6d 69 67 68 74 20 70 72 6f 76 69 64 65 20 67   might provide g
2a750 72 65 61 74 65 72 20 72 65 73 6f 6c 75 74 69 6f  reater resolutio
2a760 6e 20 6f 6e 20 74 68 65 20 70 72 6f 66 69 6c 65  n on the profile
2a770 72 20 63 61 6c 6c 62 61 63 6b 2e 20 20 54 68 65  r callback.  The
2a780 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 6f 66  .** sqlite3_prof
2a790 69 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 69  ile() function i
2a7a0 73 20 63 6f 6e 73 69 64 65 72 65 64 20 65 78 70  s considered exp
2a7b0 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64 20 69 73  erimental and is
2a7c0 0a 2a 2a 20 73 75 62 6a 65 63 74 20 74 6f 20 63  .** subject to c
2a7d0 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72 65 20  hange in future 
2a7e0 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
2a7f0 74 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  te..*/.SQLITE_AP
2a800 49 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43 41  I SQLITE_DEPRECA
2a810 54 45 44 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  TED void *sqlite
2a820 33 5f 74 72 61 63 65 28 73 71 6c 69 74 65 33 2a  3_trace(sqlite3*
2a830 2c 0a 20 20 20 76 6f 69 64 28 2a 78 54 72 61 63  ,.   void(*xTrac
2a840 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63  e)(void*,const c
2a850 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 53  har*), void*);.S
2a860 51 4c 49 54 45 5f 41 50 49 20 53 51 4c 49 54 45  QLITE_API SQLITE
2a870 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f 69 64  _DEPRECATED void
2a880 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c   *sqlite3_profil
2a890 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20 76  e(sqlite3*,.   v
2a8a0 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65 29 28 76  oid(*xProfile)(v
2a8b0 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  oid*,const char*
2a8c0 2c 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29  ,sqlite3_uint64)
2a8d0 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  , void*);../*.**
2a8e0 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20 54   CAPI3REF: SQL T
2a8f0 72 61 63 65 20 45 76 65 6e 74 20 43 6f 64 65 73  race Event Codes
2a900 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 53 51  .** KEYWORDS: SQ
2a910 4c 49 54 45 5f 54 52 41 43 45 0a 2a 2a 0a 2a 2a  LITE_TRACE.**.**
2a920 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73   These constants
2a930 20 69 64 65 6e 74 69 66 79 20 63 6c 61 73 73 65   identify classe
2a940 73 20 6f 66 20 65 76 65 6e 74 73 20 74 68 61 74  s of events that
2a950 20 63 61 6e 20 62 65 20 6d 6f 6e 69 74 6f 72 65   can be monitore
2a960 64 0a 2a 2a 20 75 73 69 6e 67 20 74 68 65 20 5b  d.** using the [
2a970 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2a980 28 29 5d 20 74 72 61 63 69 6e 67 20 6c 6f 67 69  ()] tracing logi
2a990 63 2e 20 20 54 68 65 20 74 68 69 72 64 20 61 72  c.  The third ar
2a9a0 67 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20 5b 73 71  gument.** to [sq
2a9b0 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29  lite3_trace_v2()
2a9c0 5d 20 69 73 20 61 6e 20 4f 52 2d 65 64 20 63 6f  ] is an OR-ed co
2a9d0 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20 6f 6e 65  mbination of one
2a9e0 20 6f 72 20 6d 6f 72 65 20 6f 66 0a 2a 2a 20 74   or more of.** t
2a9f0 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e  he following con
2aa00 73 74 61 6e 74 73 2e 20 20 5e 54 68 65 20 66 69  stants.  ^The fi
2aa10 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rst argument to 
2aa20 74 68 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61  the trace callba
2aa30 63 6b 0a 2a 2a 20 69 73 20 6f 6e 65 20 6f 66 20  ck.** is one of 
2aa40 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f  the following co
2aa50 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 4e  nstants..**.** N
2aa60 65 77 20 74 72 61 63 69 6e 67 20 63 6f 6e 73 74  ew tracing const
2aa70 61 6e 74 73 20 6d 61 79 20 62 65 20 61 64 64 65  ants may be adde
2aa80 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  d in future rele
2aa90 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74  ases..**.** ^A t
2aaa0 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 20 68 61  race callback ha
2aab0 73 20 66 6f 75 72 20 61 72 67 75 6d 65 6e 74 73  s four arguments
2aac0 3a 20 78 43 61 6c 6c 62 61 63 6b 28 54 2c 43 2c  : xCallback(T,C,
2aad0 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65 20 54 20  P,X)..** ^The T 
2aae0 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e 65 20  argument is one 
2aaf0 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 20 74  of the integer t
2ab00 79 70 65 20 63 6f 64 65 73 20 61 62 6f 76 65 2e  ype codes above.
2ab10 0a 2a 2a 20 5e 54 68 65 20 43 20 61 72 67 75 6d  .** ^The C argum
2ab20 65 6e 74 20 69 73 20 61 20 63 6f 70 79 20 6f 66  ent is a copy of
2ab30 20 74 68 65 20 63 6f 6e 74 65 78 74 20 70 6f 69   the context poi
2ab40 6e 74 65 72 20 70 61 73 73 65 64 20 69 6e 20 61  nter passed in a
2ab50 73 20 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20  s the.** fourth 
2ab60 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c  argument to [sql
2ab70 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 5d  ite3_trace_v2()]
2ab80 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e 64 20 58  ..** The P and X
2ab90 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70   arguments are p
2aba0 6f 69 6e 74 65 72 73 20 77 68 6f 73 65 20 6d 65  ointers whose me
2abb0 61 6e 69 6e 67 73 20 64 65 70 65 6e 64 20 6f 6e  anings depend on
2abc0 20 54 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a   T..**.** <dl>.*
2abd0 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41 43 45  * [[SQLITE_TRACE
2abe0 5f 53 54 4d 54 5d 5d 20 3c 64 74 3e 53 51 4c 49  _STMT]] <dt>SQLI
2abf0 54 45 5f 54 52 41 43 45 5f 53 54 4d 54 3c 2f 64  TE_TRACE_STMT</d
2ac00 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51  t>.** <dd>^An SQ
2ac10 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54 20  LITE_TRACE_STMT 
2ac20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
2ac30 6b 65 64 20 77 68 65 6e 20 61 20 70 72 65 70 61  ked when a prepa
2ac40 72 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  red statement.**
2ac50 20 66 69 72 73 74 20 62 65 67 69 6e 73 20 72 75   first begins ru
2ac60 6e 6e 69 6e 67 20 61 6e 64 20 70 6f 73 73 69 62  nning and possib
2ac70 6c 79 20 61 74 20 6f 74 68 65 72 20 74 69 6d 65  ly at other time
2ac80 73 20 64 75 72 69 6e 67 20 74 68 65 0a 2a 2a 20  s during the.** 
2ac90 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74 68 65  execution of the
2aca0 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
2acb0 65 6e 74 2c 20 73 75 63 68 20 61 73 20 61 74 20  ent, such as at 
2acc0 74 68 65 20 73 74 61 72 74 20 6f 66 20 65 61 63  the start of eac
2acd0 68 0a 2a 2a 20 74 72 69 67 67 65 72 20 73 75 62  h.** trigger sub
2ace0 70 72 6f 67 72 61 6d 2e 20 5e 54 68 65 20 50 20  program. ^The P 
2acf0 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
2ad00 69 6e 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20  inter to the.** 
2ad10 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
2ad20 65 6e 74 5d 2e 20 5e 54 68 65 20 58 20 61 72 67  ent]. ^The X arg
2ad30 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74  ument is a point
2ad40 65 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20 77  er to a string w
2ad50 68 69 63 68 0a 2a 2a 20 69 73 20 74 68 65 20 75  hich.** is the u
2ad60 6e 65 78 70 61 6e 64 65 64 20 53 51 4c 20 74 65  nexpanded SQL te
2ad70 78 74 20 6f 66 20 74 68 65 20 70 72 65 70 61 72  xt of the prepar
2ad80 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 72 20  ed statement or 
2ad90 61 6e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 20 0a  an SQL comment .
2ada0 2a 2a 20 74 68 61 74 20 69 6e 64 69 63 61 74 65  ** that indicate
2adb0 73 20 74 68 65 20 69 6e 76 6f 63 61 74 69 6f 6e  s the invocation
2adc0 20 6f 66 20 61 20 74 72 69 67 67 65 72 2e 20 20   of a trigger.  
2add0 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 63 61  ^The callback ca
2ade0 6e 20 63 6f 6d 70 75 74 65 0a 2a 2a 20 74 68 65  n compute.** the
2adf0 20 73 61 6d 65 20 74 65 78 74 20 74 68 61 74 20   same text that 
2ae00 77 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20  would have been 
2ae10 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20  returned by the 
2ae20 6c 65 67 61 63 79 20 5b 73 71 6c 69 74 65 33 5f  legacy [sqlite3_
2ae30 74 72 61 63 65 28 29 5d 0a 2a 2a 20 69 6e 74 65  trace()].** inte
2ae40 72 66 61 63 65 20 62 79 20 75 73 69 6e 67 20 74  rface by using t
2ae50 68 65 20 58 20 61 72 67 75 6d 65 6e 74 20 77 68  he X argument wh
2ae60 65 6e 20 58 20 62 65 67 69 6e 73 20 77 69 74 68  en X begins with
2ae70 20 22 2d 2d 22 20 61 6e 64 20 69 6e 76 6f 6b 69   "--" and invoki
2ae80 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  ng.** [sqlite3_e
2ae90 78 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 5d 20  xpanded_sql(P)] 
2aea0 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 0a 2a 2a  otherwise..**.**
2aeb0 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f   [[SQLITE_TRACE_
2aec0 50 52 4f 46 49 4c 45 5d 5d 20 3c 64 74 3e 53 51  PROFILE]] <dt>SQ
2aed0 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2aee0 4c 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e  LE</dt>.** <dd>^
2aef0 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  An SQLITE_TRACE_
2af00 50 52 4f 46 49 4c 45 20 63 61 6c 6c 62 61 63 6b  PROFILE callback
2af10 20 70 72 6f 76 69 64 65 73 20 61 70 70 72 6f 78   provides approx
2af20 69 6d 61 74 65 6c 79 20 74 68 65 20 73 61 6d 65  imately the same
2af30 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  .** information 
2af40 61 73 20 69 73 20 70 72 6f 76 69 64 65 64 20 62  as is provided b
2af50 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70  y the [sqlite3_p
2af60 72 6f 66 69 6c 65 28 29 5d 20 63 61 6c 6c 62 61  rofile()] callba
2af70 63 6b 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72  ck..** ^The P ar
2af80 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e  gument is a poin
2af90 74 65 72 20 74 6f 20 74 68 65 20 5b 70 72 65 70  ter to the [prep
2afa0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
2afb0 61 6e 64 20 74 68 65 0a 2a 2a 20 58 20 61 72 67  and the.** X arg
2afc0 75 6d 65 6e 74 20 70 6f 69 6e 74 73 20 74 6f 20  ument points to 
2afd0 61 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72  a 64-bit integer
2afe0 20 77 68 69 63 68 20 69 73 20 74 68 65 20 65 73   which is the es
2aff0 74 69 6d 61 74 65 64 20 6f 66 0a 2a 2a 20 74 68  timated of.** th
2b000 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e 61 6e 6f  e number of nano
2b010 73 65 63 6f 6e 64 20 74 68 61 74 20 74 68 65 20  second that the 
2b020 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2b030 6e 74 20 74 6f 6f 6b 20 74 6f 20 72 75 6e 2e 0a  nt took to run..
2b040 2a 2a 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 54  ** ^The SQLITE_T
2b050 52 41 43 45 5f 50 52 4f 46 49 4c 45 20 63 61 6c  RACE_PROFILE cal
2b060 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
2b070 20 77 68 65 6e 20 74 68 65 20 73 74 61 74 65 6d   when the statem
2b080 65 6e 74 20 66 69 6e 69 73 68 65 73 2e 0a 2a 2a  ent finishes..**
2b090 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41  .** [[SQLITE_TRA
2b0a0 43 45 5f 52 4f 57 5d 5d 20 3c 64 74 3e 53 51 4c  CE_ROW]] <dt>SQL
2b0b0 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 3c 2f 64  ITE_TRACE_ROW</d
2b0c0 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51  t>.** <dd>^An SQ
2b0d0 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 20 63  LITE_TRACE_ROW c
2b0e0 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
2b0f0 65 64 20 77 68 65 6e 65 76 65 72 20 61 20 70 72  ed whenever a pr
2b100 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d  epared.** statem
2b110 65 6e 74 20 67 65 6e 65 72 61 74 65 73 20 61 20  ent generates a 
2b120 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 72 65  single row of re
2b130 73 75 6c 74 2e 20 20 0a 2a 2a 20 5e 54 68 65 20  sult.  .** ^The 
2b140 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  P argument is a 
2b150 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b  pointer to the [
2b160 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2b170 6e 74 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 58  nt] and the.** X
2b180 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 75   argument is unu
2b190 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  sed..**.** [[SQL
2b1a0 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 5d  ITE_TRACE_CLOSE]
2b1b0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41  ] <dt>SQLITE_TRA
2b1c0 43 45 5f 43 4c 4f 53 45 3c 2f 64 74 3e 0a 2a 2a  CE_CLOSE</dt>.**
2b1d0 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f   <dd>^An SQLITE_
2b1e0 54 52 41 43 45 5f 43 4c 4f 53 45 20 63 61 6c 6c  TRACE_CLOSE call
2b1f0 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
2b200 77 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 0a  when a database.
2b210 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c  ** connection cl
2b220 6f 73 65 73 2e 0a 2a 2a 20 5e 54 68 65 20 50 20  oses..** ^The P 
2b230 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
2b240 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b 64 61  inter to the [da
2b250 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2b260 6e 5d 20 6f 62 6a 65 63 74 0a 2a 2a 20 61 6e 64  n] object.** and
2b270 20 74 68 65 20 58 20 61 72 67 75 6d 65 6e 74 20   the X argument 
2b280 69 73 20 75 6e 75 73 65 64 2e 0a 2a 2a 20 3c 2f  is unused..** </
2b290 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  dl>.*/.#define S
2b2a0 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54  QLITE_TRACE_STMT
2b2b0 20 20 20 20 20 20 20 30 78 30 31 0a 23 64 65 66         0x01.#def
2b2c0 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ine SQLITE_TRACE
2b2d0 5f 50 52 4f 46 49 4c 45 20 20 20 20 30 78 30 32  _PROFILE    0x02
2b2e0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b2f0 54 52 41 43 45 5f 52 4f 57 20 20 20 20 20 20 20  TRACE_ROW       
2b300 20 30 78 30 34 0a 23 64 65 66 69 6e 65 20 53 51   0x04.#define SQ
2b310 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45  LITE_TRACE_CLOSE
2b320 20 20 20 20 20 20 30 78 30 38 0a 0a 2f 2a 0a 2a        0x08../*.*
2b330 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20  * CAPI3REF: SQL 
2b340 54 72 61 63 65 20 48 6f 6f 6b 0a 2a 2a 20 4d 45  Trace Hook.** ME
2b350 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
2b360 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
2b370 5f 74 72 61 63 65 5f 76 32 28 44 2c 4d 2c 58 2c  _trace_v2(D,M,X,
2b380 50 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 67  P) interface reg
2b390 69 73 74 65 72 73 20 61 20 74 72 61 63 65 20 63  isters a trace c
2b3a0 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74  allback.** funct
2b3b0 69 6f 6e 20 58 20 61 67 61 69 6e 73 74 20 5b 64  ion X against [d
2b3c0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2b3d0 6f 6e 5d 20 44 2c 20 75 73 69 6e 67 20 70 72 6f  on] D, using pro
2b3e0 70 65 72 74 79 20 6d 61 73 6b 20 4d 0a 2a 2a 20  perty mask M.** 
2b3f0 61 6e 64 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e  and context poin
2b400 74 65 72 20 50 2e 20 20 5e 49 66 20 74 68 65 20  ter P.  ^If the 
2b410 58 20 63 61 6c 6c 62 61 63 6b 20 69 73 0a 2a 2a  X callback is.**
2b420 20 4e 55 4c 4c 20 6f 72 20 69 66 20 74 68 65 20   NULL or if the 
2b430 4d 20 6d 61 73 6b 20 69 73 20 7a 65 72 6f 2c 20  M mask is zero, 
2b440 74 68 65 6e 20 74 72 61 63 69 6e 67 20 69 73 20  then tracing is 
2b450 64 69 73 61 62 6c 65 64 2e 20 20 54 68 65 0a 2a  disabled.  The.*
2b460 2a 20 4d 20 61 72 67 75 6d 65 6e 74 20 73 68 6f  * M argument sho
2b470 75 6c 64 20 62 65 20 74 68 65 20 62 69 74 77 69  uld be the bitwi
2b480 73 65 20 4f 52 2d 65 64 20 63 6f 6d 62 69 6e 61  se OR-ed combina
2b490 74 69 6f 6e 20 6f 66 0a 2a 2a 20 7a 65 72 6f 20  tion of.** zero 
2b4a0 6f 72 20 6d 6f 72 65 20 5b 53 51 4c 49 54 45 5f  or more [SQLITE_
2b4b0 54 52 41 43 45 5d 20 63 6f 6e 73 74 61 6e 74 73  TRACE] constants
2b4c0 2e 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68 20 63 61  ..**.** ^Each ca
2b4d0 6c 6c 20 74 6f 20 65 69 74 68 65 72 20 73 71 6c  ll to either sql
2b4e0 69 74 65 33 5f 74 72 61 63 65 28 29 20 6f 72 20  ite3_trace() or 
2b4f0 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2b500 28 29 20 6f 76 65 72 72 69 64 65 73 20 0a 2a 2a  () overrides .**
2b510 20 28 63 61 6e 63 65 6c 73 29 20 61 6e 79 20 70   (cancels) any p
2b520 72 69 6f 72 20 63 61 6c 6c 73 20 74 6f 20 73 71  rior calls to sq
2b530 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 6f 72  lite3_trace() or
2b540 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76   sqlite3_trace_v
2b550 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  2()..**.** ^The 
2b560 58 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  X callback is in
2b570 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72 20 61  voked whenever a
2b580 6e 79 20 6f 66 20 74 68 65 20 65 76 65 6e 74 73  ny of the events
2b590 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 0a   identified by .
2b5a0 2a 2a 20 6d 61 73 6b 20 4d 20 6f 63 63 75 72 2e  ** mask M occur.
2b5b0 20 20 5e 54 68 65 20 69 6e 74 65 67 65 72 20 72    ^The integer r
2b5c0 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d  eturn value from
2b5d0 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73   the callback is
2b5e0 20 63 75 72 72 65 6e 74 6c 79 0a 2a 2a 20 69 67   currently.** ig
2b5f0 6e 6f 72 65 64 2c 20 74 68 6f 75 67 68 20 74 68  nored, though th
2b600 69 73 20 6d 61 79 20 63 68 61 6e 67 65 20 69 6e  is may change in
2b610 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
2b620 2e 20 20 43 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69  .  Callback.** i
2b630 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73  mplementations s
2b640 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 7a 65 72  hould return zer
2b650 6f 20 74 6f 20 65 6e 73 75 72 65 20 66 75 74 75  o to ensure futu
2b660 72 65 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  re compatibility
2b670 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74 72 61 63 65  ..**.** ^A trace
2b680 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
2b690 6f 6b 65 64 20 77 69 74 68 20 66 6f 75 72 20 61  oked with four a
2b6a0 72 67 75 6d 65 6e 74 73 3a 20 63 61 6c 6c 62 61  rguments: callba
2b6b0 63 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20  ck(T,C,P,X)..** 
2b6c0 5e 54 68 65 20 54 20 61 72 67 75 6d 65 6e 74 20  ^The T argument 
2b6d0 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 53  is one of the [S
2b6e0 51 4c 49 54 45 5f 54 52 41 43 45 5d 0a 2a 2a 20  QLITE_TRACE].** 
2b6f0 63 6f 6e 73 74 61 6e 74 73 20 74 6f 20 69 6e 64  constants to ind
2b700 69 63 61 74 65 20 77 68 79 20 74 68 65 20 63 61  icate why the ca
2b710 6c 6c 62 61 63 6b 20 77 61 73 20 69 6e 76 6f 6b  llback was invok
2b720 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 43 20 61 72  ed..** ^The C ar
2b730 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 70 79  gument is a copy
2b740 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 78 74 20   of the context 
2b750 70 6f 69 6e 74 65 72 2e 0a 2a 2a 20 54 68 65 20  pointer..** The 
2b760 50 20 61 6e 64 20 58 20 61 72 67 75 6d 65 6e 74  P and X argument
2b770 73 20 61 72 65 20 70 6f 69 6e 74 65 72 73 20 77  s are pointers w
2b780 68 6f 73 65 20 6d 65 61 6e 69 6e 67 73 20 64 65  hose meanings de
2b790 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a  pend on T..**.**
2b7a0 20 54 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61   The sqlite3_tra
2b7b0 63 65 5f 76 32 28 29 20 69 6e 74 65 72 66 61 63  ce_v2() interfac
2b7c0 65 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f  e is intended to
2b7d0 20 72 65 70 6c 61 63 65 20 74 68 65 20 6c 65 67   replace the leg
2b7e0 61 63 79 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  acy.** interface
2b7f0 73 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  s [sqlite3_trace
2b800 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
2b810 5f 70 72 6f 66 69 6c 65 28 29 5d 2c 20 62 6f 74  _profile()], bot
2b820 68 20 6f 66 20 77 68 69 63 68 0a 2a 2a 20 61 72  h of which.** ar
2b830 65 20 64 65 70 72 65 63 61 74 65 64 2e 0a 2a 2f  e deprecated..*/
2b840 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
2b850 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2b860 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20 20  (.  sqlite3*,.  
2b870 75 6e 73 69 67 6e 65 64 20 75 4d 61 73 6b 2c 0a  unsigned uMask,.
2b880 20 20 69 6e 74 28 2a 78 43 61 6c 6c 62 61 63 6b    int(*xCallback
2b890 29 28 75 6e 73 69 67 6e 65 64 2c 76 6f 69 64 2a  )(unsigned,void*
2b8a0 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a 29 2c 0a 20  ,void*,void*),. 
2b8b0 20 76 6f 69 64 20 2a 70 43 74 78 0a 29 3b 0a 0a   void *pCtx.);..
2b8c0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2b8d0 51 75 65 72 79 20 50 72 6f 67 72 65 73 73 20 43  Query Progress C
2b8e0 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d 45 54 48  allbacks.** METH
2b8f0 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
2b900 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 70  * ^The sqlite3_p
2b910 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
2b920 44 2c 4e 2c 58 2c 50 29 20 69 6e 74 65 72 66 61  D,N,X,P) interfa
2b930 63 65 20 63 61 75 73 65 73 20 74 68 65 20 63 61  ce causes the ca
2b940 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74 69  llback.** functi
2b950 6f 6e 20 58 20 74 6f 20 62 65 20 69 6e 76 6f 6b  on X to be invok
2b960 65 64 20 70 65 72 69 6f 64 69 63 61 6c 6c 79 20  ed periodically 
2b970 64 75 72 69 6e 67 20 6c 6f 6e 67 20 72 75 6e 6e  during long runn
2b980 69 6e 67 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20  ing calls to.** 
2b990 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d  [sqlite3_exec()]
2b9a0 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  , [sqlite3_step(
2b9b0 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
2b9c0 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 66 6f 72  get_table()] for
2b9d0 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e  .** database con
2b9e0 6e 65 63 74 69 6f 6e 20 44 2e 20 20 41 6e 20 65  nection D.  An e
2b9f0 78 61 6d 70 6c 65 20 75 73 65 20 66 6f 72 20 74  xample use for t
2ba00 68 69 73 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  his.** interface
2ba10 20 69 73 20 74 6f 20 6b 65 65 70 20 61 20 47 55   is to keep a GU
2ba20 49 20 75 70 64 61 74 65 64 20 64 75 72 69 6e 67  I updated during
2ba30 20 61 20 6c 61 72 67 65 20 71 75 65 72 79 2e 0a   a large query..
2ba40 2a 2a 0a 2a 2a 20 5e 54 68 65 20 70 61 72 61 6d  **.** ^The param
2ba50 65 74 65 72 20 50 20 69 73 20 70 61 73 73 65 64  eter P is passed
2ba60 20 74 68 72 6f 75 67 68 20 61 73 20 74 68 65 20   through as the 
2ba70 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 20 74  only parameter t
2ba80 6f 20 74 68 65 20 0a 2a 2a 20 63 61 6c 6c 62 61  o the .** callba
2ba90 63 6b 20 66 75 6e 63 74 69 6f 6e 20 58 2e 20 20  ck function X.  
2baa0 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 4e  ^The parameter N
2bab0 20 69 73 20 74 68 65 20 61 70 70 72 6f 78 69 6d   is the approxim
2bac0 61 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 0a 2a  ate number of .*
2bad0 2a 20 5b 76 69 72 74 75 61 6c 20 6d 61 63 68 69  * [virtual machi
2bae0 6e 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 5d  ne instructions]
2baf0 20 74 68 61 74 20 61 72 65 20 65 76 61 6c 75 61   that are evalua
2bb00 74 65 64 20 62 65 74 77 65 65 6e 20 73 75 63 63  ted between succ
2bb10 65 73 73 69 76 65 0a 2a 2a 20 69 6e 76 6f 63 61  essive.** invoca
2bb20 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 63 61 6c  tions of the cal
2bb30 6c 62 61 63 6b 20 58 2e 20 20 5e 49 66 20 4e 20  lback X.  ^If N 
2bb40 69 73 20 6c 65 73 73 20 74 68 61 6e 20 6f 6e 65  is less than one
2bb50 20 74 68 65 6e 20 74 68 65 20 70 72 6f 67 72 65   then the progre
2bb60 73 73 0a 2a 2a 20 68 61 6e 64 6c 65 72 20 69 73  ss.** handler is
2bb70 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a   disabled..**.**
2bb80 20 5e 4f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20   ^Only a single 
2bb90 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
2bba0 20 6d 61 79 20 62 65 20 64 65 66 69 6e 65 64 20   may be defined 
2bbb0 61 74 20 6f 6e 65 20 74 69 6d 65 20 70 65 72 0a  at one time per.
2bbc0 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
2bbd0 6e 65 63 74 69 6f 6e 5d 3b 20 73 65 74 74 69 6e  nection]; settin
2bbe0 67 20 61 20 6e 65 77 20 70 72 6f 67 72 65 73 73  g a new progress
2bbf0 20 68 61 6e 64 6c 65 72 20 63 61 6e 63 65 6c 73   handler cancels
2bc00 20 74 68 65 0a 2a 2a 20 6f 6c 64 20 6f 6e 65 2e   the.** old one.
2bc10 20 20 5e 53 65 74 74 69 6e 67 20 70 61 72 61 6d    ^Setting param
2bc20 65 74 65 72 20 58 20 74 6f 20 4e 55 4c 4c 20 64  eter X to NULL d
2bc30 69 73 61 62 6c 65 73 20 74 68 65 20 70 72 6f 67  isables the prog
2bc40 72 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a  ress handler..**
2bc50 20 5e 54 68 65 20 70 72 6f 67 72 65 73 73 20 68   ^The progress h
2bc60 61 6e 64 6c 65 72 20 69 73 20 61 6c 73 6f 20 64  andler is also d
2bc70 69 73 61 62 6c 65 64 20 62 79 20 73 65 74 74 69  isabled by setti
2bc80 6e 67 20 4e 20 74 6f 20 61 20 76 61 6c 75 65 20  ng N to a value 
2bc90 6c 65 73 73 0a 2a 2a 20 74 68 61 6e 20 31 2e 0a  less.** than 1..
2bca0 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 70 72  **.** ^If the pr
2bcb0 6f 67 72 65 73 73 20 63 61 6c 6c 62 61 63 6b 20  ogress callback 
2bcc0 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f  returns non-zero
2bcd0 2c 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  , the operation 
2bce0 69 73 0a 2a 2a 20 69 6e 74 65 72 72 75 70 74 65  is.** interrupte
2bcf0 64 2e 20 20 54 68 69 73 20 66 65 61 74 75 72 65  d.  This feature
2bd00 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
2bd10 69 6d 70 6c 65 6d 65 6e 74 20 61 0a 2a 2a 20 22  implement a.** "
2bd20 43 61 6e 63 65 6c 22 20 62 75 74 74 6f 6e 20 6f  Cancel" button o
2bd30 6e 20 61 20 47 55 49 20 70 72 6f 67 72 65 73 73  n a GUI progress
2bd40 20 64 69 61 6c 6f 67 20 62 6f 78 2e 0a 2a 2a 0a   dialog box..**.
2bd50 2a 2a 20 54 68 65 20 70 72 6f 67 72 65 73 73 20  ** The progress 
2bd60 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b  handler callback
2bd70 20 6d 75 73 74 20 6e 6f 74 20 64 6f 20 61 6e 79   must not do any
2bd80 74 68 69 6e 67 20 74 68 61 74 20 77 69 6c 6c 20  thing that will 
2bd90 6d 6f 64 69 66 79 0a 2a 2a 20 74 68 65 20 64 61  modify.** the da
2bda0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2bdb0 6e 20 74 68 61 74 20 69 6e 76 6f 6b 65 64 20 74  n that invoked t
2bdc0 68 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64  he progress hand
2bdd0 6c 65 72 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61  ler..** Note tha
2bde0 74 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  t [sqlite3_prepa
2bdf0 72 65 5f 76 32 28 29 5d 20 61 6e 64 20 5b 73 71  re_v2()] and [sq
2be00 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 62 6f  lite3_step()] bo
2be10 74 68 20 6d 6f 64 69 66 79 20 74 68 65 69 72 0a  th modify their.
2be20 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ** database conn
2be30 65 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20  ections for the 
2be40 6d 65 61 6e 69 6e 67 20 6f 66 20 22 6d 6f 64 69  meaning of "modi
2be50 66 79 22 20 69 6e 20 74 68 69 73 20 70 61 72 61  fy" in this para
2be60 67 72 61 70 68 2e 0a 2a 2a 0a 2a 2f 0a 53 51 4c  graph..**.*/.SQL
2be70 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c  ITE_API void sql
2be80 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
2be90 6e 64 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c 20  ndler(sqlite3*, 
2bea0 69 6e 74 2c 20 69 6e 74 28 2a 29 28 76 6f 69 64  int, int(*)(void
2beb0 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a  *), void*);../*.
2bec0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 70 65  ** CAPI3REF: Ope
2bed0 6e 69 6e 67 20 41 20 4e 65 77 20 44 61 74 61 62  ning A New Datab
2bee0 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase Connection.*
2bef0 2a 20 43 4f 4e 53 54 52 55 43 54 4f 52 3a 20 73  * CONSTRUCTOR: s
2bf00 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
2bf10 65 73 65 20 72 6f 75 74 69 6e 65 73 20 6f 70 65  ese routines ope
2bf20 6e 20 61 6e 20 53 51 4c 69 74 65 20 64 61 74 61  n an SQLite data
2bf30 62 61 73 65 20 66 69 6c 65 20 61 73 20 73 70 65  base file as spe
2bf40 63 69 66 69 65 64 20 62 79 20 74 68 65 20 0a 2a  cified by the .*
2bf50 2a 20 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d  * filename argum
2bf60 65 6e 74 2e 20 5e 54 68 65 20 66 69 6c 65 6e 61  ent. ^The filena
2bf70 6d 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 69  me argument is i
2bf80 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 55 54  nterpreted as UT
2bf90 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74  F-8 for.** sqlit
2bfa0 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 73 71  e3_open() and sq
2bfb0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2bfc0 61 6e 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e  and as UTF-16 in
2bfd0 20 74 68 65 20 6e 61 74 69 76 65 20 62 79 74 65   the native byte
2bfe0 0a 2a 2a 20 6f 72 64 65 72 20 66 6f 72 20 73 71  .** order for sq
2bff0 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 20  lite3_open16(). 
2c000 5e 28 41 20 5b 64 61 74 61 62 61 73 65 20 63 6f  ^(A [database co
2c010 6e 6e 65 63 74 69 6f 6e 5d 20 68 61 6e 64 6c 65  nnection] handle
2c020 20 69 73 20 75 73 75 61 6c 6c 79 0a 2a 2a 20 72   is usually.** r
2c030 65 74 75 72 6e 65 64 20 69 6e 20 2a 70 70 44 62  eturned in *ppDb
2c040 2c 20 65 76 65 6e 20 69 66 20 61 6e 20 65 72 72  , even if an err
2c050 6f 72 20 6f 63 63 75 72 73 2e 20 20 54 68 65 20  or occurs.  The 
2c060 6f 6e 6c 79 20 65 78 63 65 70 74 69 6f 6e 20 69  only exception i
2c070 73 20 74 68 61 74 0a 2a 2a 20 69 66 20 53 51 4c  s that.** if SQL
2c080 69 74 65 20 69 73 20 75 6e 61 62 6c 65 20 74 6f  ite is unable to
2c090 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d 6f 72 79   allocate memory
2c0a0 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 5b 73 71   to hold the [sq
2c0b0 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 2c 0a 2a  lite3] object,.*
2c0c0 2a 20 61 20 4e 55 4c 4c 20 77 69 6c 6c 20 62 65  * a NULL will be
2c0d0 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 2a 70   written into *p
2c0e0 70 44 62 20 69 6e 73 74 65 61 64 20 6f 66 20 61  pDb instead of a
2c0f0 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
2c100 5b 73 71 6c 69 74 65 33 5d 0a 2a 2a 20 6f 62 6a  [sqlite3].** obj
2c110 65 63 74 2e 29 5e 20 5e 28 49 66 20 74 68 65 20  ect.)^ ^(If the 
2c120 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
2c130 65 64 20 28 61 6e 64 2f 6f 72 20 63 72 65 61 74  ed (and/or creat
2c140 65 64 29 20 73 75 63 63 65 73 73 66 75 6c 6c 79  ed) successfully
2c150 2c 20 74 68 65 6e 0a 2a 2a 20 5b 53 51 4c 49 54  , then.** [SQLIT
2c160 45 5f 4f 4b 5d 20 69 73 20 72 65 74 75 72 6e 65  E_OK] is returne
2c170 64 2e 20 20 4f 74 68 65 72 77 69 73 65 20 61 6e  d.  Otherwise an
2c180 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 73   [error code] is
2c190 20 72 65 74 75 72 6e 65 64 2e 29 5e 20 5e 54 68   returned.)^ ^Th
2c1a0 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 72  e.** [sqlite3_er
2c1b0 72 6d 73 67 28 29 5d 20 6f 72 20 5b 73 71 6c 69  rmsg()] or [sqli
2c1c0 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 5d 20  te3_errmsg16()] 
2c1d0 72 6f 75 74 69 6e 65 73 20 63 61 6e 20 62 65 20  routines can be 
2c1e0 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 0a 2a  used to obtain.*
2c1f0 2a 20 61 6e 20 45 6e 67 6c 69 73 68 20 6c 61 6e  * an English lan
2c200 67 75 61 67 65 20 64 65 73 63 72 69 70 74 69 6f  guage descriptio
2c210 6e 20 6f 66 20 74 68 65 20 65 72 72 6f 72 20 66  n of the error f
2c220 6f 6c 6c 6f 77 69 6e 67 20 61 20 66 61 69 6c 75  ollowing a failu
2c230 72 65 20 6f 66 20 61 6e 79 0a 2a 2a 20 6f 66 20  re of any.** of 
2c240 74 68 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  the sqlite3_open
2c250 28 29 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a  () routines..**.
2c260 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20  ** ^The default 
2c270 65 6e 63 6f 64 69 6e 67 20 77 69 6c 6c 20 62 65  encoding will be
2c280 20 55 54 46 2d 38 20 66 6f 72 20 64 61 74 61 62   UTF-8 for datab
2c290 61 73 65 73 20 63 72 65 61 74 65 64 20 75 73 69  ases created usi
2c2a0 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70  ng.** sqlite3_op
2c2b0 65 6e 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  en() or sqlite3_
2c2c0 6f 70 65 6e 5f 76 32 28 29 2e 20 20 5e 54 68 65  open_v2().  ^The
2c2d0 20 64 65 66 61 75 6c 74 20 65 6e 63 6f 64 69 6e   default encodin
2c2e0 67 20 66 6f 72 20 64 61 74 61 62 61 73 65 73 0a  g for databases.
2c2f0 2a 2a 20 63 72 65 61 74 65 64 20 75 73 69 6e 67  ** created using
2c300 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
2c310 29 20 77 69 6c 6c 20 62 65 20 55 54 46 2d 31 36  ) will be UTF-16
2c320 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 62   in the native b
2c330 79 74 65 20 6f 72 64 65 72 2e 0a 2a 2a 0a 2a 2a  yte order..**.**
2c340 20 57 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   Whether or not 
2c350 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20  an error occurs 
2c360 77 68 65 6e 20 69 74 20 69 73 20 6f 70 65 6e 65  when it is opene
2c370 64 2c 20 72 65 73 6f 75 72 63 65 73 0a 2a 2a 20  d, resources.** 
2c380 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
2c390 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f  the [database co
2c3a0 6e 6e 65 63 74 69 6f 6e 5d 20 68 61 6e 64 6c 65  nnection] handle
2c3b0 20 73 68 6f 75 6c 64 20 62 65 20 72 65 6c 65 61   should be relea
2c3c0 73 65 64 20 62 79 0a 2a 2a 20 70 61 73 73 69 6e  sed by.** passin
2c3d0 67 20 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  g it to [sqlite3
2c3e0 5f 63 6c 6f 73 65 28 29 5d 20 77 68 65 6e 20 69  _close()] when i
2c3f0 74 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 72  t is no longer r
2c400 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  equired..**.** T
2c410 68 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  he sqlite3_open_
2c420 76 32 28 29 20 69 6e 74 65 72 66 61 63 65 20 77  v2() interface w
2c430 6f 72 6b 73 20 6c 69 6b 65 20 73 71 6c 69 74 65  orks like sqlite
2c440 33 5f 6f 70 65 6e 28 29 0a 2a 2a 20 65 78 63 65  3_open().** exce
2c450 70 74 20 74 68 61 74 20 69 74 20 61 63 63 65 70  pt that it accep
2c460 74 73 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61  ts two additiona
2c470 6c 20 70 61 72 61 6d 65 74 65 72 73 20 66 6f 72  l parameters for
2c480 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 6f 6e 74   additional cont
2c490 72 6f 6c 0a 2a 2a 20 6f 76 65 72 20 74 68 65 20  rol.** over the 
2c4a0 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e  new database con
2c4b0 6e 65 63 74 69 6f 6e 2e 20 20 5e 28 54 68 65 20  nection.  ^(The 
2c4c0 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20  flags parameter 
2c4d0 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70  to.** sqlite3_op
2c4e0 65 6e 5f 76 32 28 29 20 63 61 6e 20 74 61 6b 65  en_v2() can take
2c4f0 20 6f 6e 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66   one of.** the f
2c500 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65 20 76  ollowing three v
2c510 61 6c 75 65 73 2c 20 6f 70 74 69 6f 6e 61 6c 6c  alues, optionall
2c520 79 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20  y combined with 
2c530 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  the .** [SQLITE_
2c540 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 2c 20 5b  OPEN_NOMUTEX], [
2c550 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c  SQLITE_OPEN_FULL
2c560 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49 54 45 5f  MUTEX], [SQLITE_
2c570 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45  OPEN_SHAREDCACHE
2c580 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  ],.** [SQLITE_OP
2c590 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45 5d  EN_PRIVATECACHE]
2c5a0 2c 20 61 6e 64 2f 6f 72 20 5b 53 51 4c 49 54 45  , and/or [SQLITE
2c5b0 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 73  _OPEN_URI] flags
2c5c0 3a 29 5e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a  :)^.**.** <dl>.*
2c5d0 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f  * ^(<dt>[SQLITE_
2c5e0 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 3c 2f  OPEN_READONLY]</
2c5f0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64  dt>.** <dd>The d
2c600 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
2c610 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c 79 20 6d  d in read-only m
2c620 6f 64 65 2e 20 20 49 66 20 74 68 65 20 64 61 74  ode.  If the dat
2c630 61 62 61 73 65 20 64 6f 65 73 20 6e 6f 74 0a 2a  abase does not.*
2c640 2a 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 2c  * already exist,
2c650 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72 65 74   an error is ret
2c660 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  urned.</dd>)^.**
2c670 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54  .** ^(<dt>[SQLIT
2c680 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
2c690 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  ]</dt>.** <dd>Th
2c6a0 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
2c6b0 65 6e 65 64 20 66 6f 72 20 72 65 61 64 69 6e 67  ened for reading
2c6c0 20 61 6e 64 20 77 72 69 74 69 6e 67 20 69 66 20   and writing if 
2c6d0 70 6f 73 73 69 62 6c 65 2c 20 6f 72 20 72 65 61  possible, or rea
2c6e0 64 69 6e 67 0a 2a 2a 20 6f 6e 6c 79 20 69 66 20  ding.** only if 
2c6f0 74 68 65 20 66 69 6c 65 20 69 73 20 77 72 69 74  the file is writ
2c700 65 20 70 72 6f 74 65 63 74 65 64 20 62 79 20 74  e protected by t
2c710 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
2c720 74 65 6d 2e 20 20 49 6e 20 65 69 74 68 65 72 0a  tem.  In either.
2c730 2a 2a 20 63 61 73 65 20 74 68 65 20 64 61 74 61  ** case the data
2c740 62 61 73 65 20 6d 75 73 74 20 61 6c 72 65 61 64  base must alread
2c750 79 20 65 78 69 73 74 2c 20 6f 74 68 65 72 77 69  y exist, otherwi
2c760 73 65 20 61 6e 20 65 72 72 6f 72 20 69 73 20 72  se an error is r
2c770 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a  eturned.</dd>)^.
2c780 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c  **.** ^(<dt>[SQL
2c790 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49  ITE_OPEN_READWRI
2c7a0 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45 5f 4f 50  TE] | [SQLITE_OP
2c7b0 45 4e 5f 43 52 45 41 54 45 5d 3c 2f 64 74 3e 0a  EN_CREATE]</dt>.
2c7c0 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62  ** <dd>The datab
2c7d0 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f  ase is opened fo
2c7e0 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72  r reading and wr
2c7f0 69 74 69 6e 67 2c 20 61 6e 64 20 69 73 20 63 72  iting, and is cr
2c800 65 61 74 65 64 20 69 66 0a 2a 2a 20 69 74 20 64  eated if.** it d
2c810 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20  oes not already 
2c820 65 78 69 73 74 2e 20 54 68 69 73 20 69 73 20 74  exist. This is t
2c830 68 65 20 62 65 68 61 76 69 6f 72 20 74 68 61 74  he behavior that
2c840 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20   is always used 
2c850 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f  for.** sqlite3_o
2c860 70 65 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65  pen() and sqlite
2c870 33 5f 6f 70 65 6e 31 36 28 29 2e 3c 2f 64 64 3e  3_open16().</dd>
2c880 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2a 0a 2a  )^.** </dl>.**.*
2c890 2a 20 49 66 20 74 68 65 20 33 72 64 20 70 61 72  * If the 3rd par
2c8a0 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65  ameter to sqlite
2c8b0 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 6e  3_open_v2() is n
2c8c0 6f 74 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a  ot one of the.**
2c8d0 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 73 68   combinations sh
2c8e0 6f 77 6e 20 61 62 6f 76 65 20 6f 70 74 69 6f 6e  own above option
2c8f0 61 6c 6c 79 20 63 6f 6d 62 69 6e 65 64 20 77 69  ally combined wi
2c900 74 68 20 6f 74 68 65 72 0a 2a 2a 20 5b 53 51 4c  th other.** [SQL
2c910 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c  ITE_OPEN_READONL
2c920 59 20 7c 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  Y | SQLITE_OPEN_
2c930 2a 20 62 69 74 73 5d 0a 2a 2a 20 74 68 65 6e 20  * bits].** then 
2c940 74 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20  the behavior is 
2c950 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a  undefined..**.**
2c960 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49 54 45   ^If the [SQLITE
2c970 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d 20 66  _OPEN_NOMUTEX] f
2c980 6c 61 67 20 69 73 20 73 65 74 2c 20 74 68 65 6e  lag is set, then
2c990 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
2c9a0 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 6f 70 65 6e  nnection.** open
2c9b0 73 20 69 6e 20 74 68 65 20 6d 75 6c 74 69 2d 74  s in the multi-t
2c9c0 68 72 65 61 64 20 5b 74 68 72 65 61 64 69 6e 67  hread [threading
2c9d0 20 6d 6f 64 65 5d 20 61 73 20 6c 6f 6e 67 20 61   mode] as long a
2c9e0 73 20 74 68 65 20 73 69 6e 67 6c 65 2d 74 68 72  s the single-thr
2c9f0 65 61 64 0a 2a 2a 20 6d 6f 64 65 20 68 61 73 20  ead.** mode has 
2ca00 6e 6f 74 20 62 65 65 6e 20 73 65 74 20 61 74 20  not been set at 
2ca10 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20  compile-time or 
2ca20 73 74 61 72 74 2d 74 69 6d 65 2e 20 20 5e 49 66  start-time.  ^If
2ca30 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
2ca40 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 20  OPEN_FULLMUTEX] 
2ca50 66 6c 61 67 20 69 73 20 73 65 74 20 74 68 65 6e  flag is set then
2ca60 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
2ca70 6e 6e 65 63 74 69 6f 6e 20 6f 70 65 6e 73 0a 2a  nnection opens.*
2ca80 2a 20 69 6e 20 74 68 65 20 73 65 72 69 61 6c 69  * in the seriali
2ca90 7a 65 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  zed [threading m
2caa0 6f 64 65 5d 20 75 6e 6c 65 73 73 20 73 69 6e 67  ode] unless sing
2cab0 6c 65 2d 74 68 72 65 61 64 20 77 61 73 0a 2a 2a  le-thread was.**
2cac0 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 6c 65   previously sele
2cad0 63 74 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d  cted at compile-
2cae0 74 69 6d 65 20 6f 72 20 73 74 61 72 74 2d 74 69  time or start-ti
2caf0 6d 65 2e 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  me..** ^The [SQL
2cb00 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43  ITE_OPEN_SHAREDC
2cb10 41 43 48 45 5d 20 66 6c 61 67 20 63 61 75 73 65  ACHE] flag cause
2cb20 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  s the database c
2cb30 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 62 65 0a  onnection to be.
2cb40 2a 2a 20 65 6c 69 67 69 62 6c 65 20 74 6f 20 75  ** eligible to u
2cb50 73 65 20 5b 73 68 61 72 65 64 20 63 61 63 68 65  se [shared cache
2cb60 20 6d 6f 64 65 5d 2c 20 72 65 67 61 72 64 6c 65   mode], regardle
2cb70 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ss of whether or
2cb80 20 6e 6f 74 20 73 68 61 72 65 64 0a 2a 2a 20 63   not shared.** c
2cb90 61 63 68 65 20 69 73 20 65 6e 61 62 6c 65 64 20  ache is enabled 
2cba0 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 65  using [sqlite3_e
2cbb0 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f 63 61 63  nable_shared_cac
2cbc0 68 65 28 29 5d 2e 20 20 5e 54 68 65 0a 2a 2a 20  he()].  ^The.** 
2cbd0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49  [SQLITE_OPEN_PRI
2cbe0 56 41 54 45 43 41 43 48 45 5d 20 66 6c 61 67 20  VATECACHE] flag 
2cbf0 63 61 75 73 65 73 20 74 68 65 20 64 61 74 61 62  causes the datab
2cc00 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  ase connection t
2cc10 6f 20 6e 6f 74 0a 2a 2a 20 70 61 72 74 69 63 69  o not.** partici
2cc20 70 61 74 65 20 69 6e 20 5b 73 68 61 72 65 64 20  pate in [shared 
2cc30 63 61 63 68 65 20 6d 6f 64 65 5d 20 65 76 65 6e  cache mode] even
2cc40 20 69 66 20 69 74 20 69 73 20 65 6e 61 62 6c 65   if it is enable
2cc50 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 6f  d..**.** ^The fo
2cc60 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74  urth parameter t
2cc70 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  o sqlite3_open_v
2cc80 32 28 29 20 69 73 20 74 68 65 20 6e 61 6d 65 20  2() is the name 
2cc90 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  of the.** [sqlit
2cca0 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20 74  e3_vfs] object t
2ccb0 68 61 74 20 64 65 66 69 6e 65 73 20 74 68 65 20  hat defines the 
2ccc0 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
2ccd0 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 0a   interface that.
2cce0 2a 2a 20 74 68 65 20 6e 65 77 20 64 61 74 61 62  ** the new datab
2ccf0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ase connection s
2cd00 68 6f 75 6c 64 20 75 73 65 2e 20 20 5e 49 66 20  hould use.  ^If 
2cd10 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  the fourth param
2cd20 65 74 65 72 20 69 73 0a 2a 2a 20 61 20 4e 55 4c  eter is.** a NUL
2cd30 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 74  L pointer then t
2cd40 68 65 20 64 65 66 61 75 6c 74 20 5b 73 71 6c 69  he default [sqli
2cd50 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 20  te3_vfs] object 
2cd60 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  is used..**.** ^
2cd70 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20  If the filename 
2cd80 69 73 20 22 3a 6d 65 6d 6f 72 79 3a 22 2c 20 74  is ":memory:", t
2cd90 68 65 6e 20 61 20 70 72 69 76 61 74 65 2c 20 74  hen a private, t
2cda0 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d 65 6d 6f  emporary in-memo
2cdb0 72 79 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 69  ry database.** i
2cdc0 73 20 63 72 65 61 74 65 64 20 66 6f 72 20 74 68  s created for th
2cdd0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 5e  e connection.  ^
2cde0 54 68 69 73 20 69 6e 2d 6d 65 6d 6f 72 79 20 64  This in-memory d
2cdf0 61 74 61 62 61 73 65 20 77 69 6c 6c 20 76 61 6e  atabase will van
2ce00 69 73 68 20 77 68 65 6e 0a 2a 2a 20 74 68 65 20  ish when.** the 
2ce10 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2ce20 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64 2e 20 20  ion is closed.  
2ce30 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
2ce40 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 0a  of SQLite might.
2ce50 2a 2a 20 6d 61 6b 65 20 75 73 65 20 6f 66 20 61  ** make use of a
2ce60 64 64 69 74 69 6f 6e 61 6c 20 73 70 65 63 69 61  dditional specia
2ce70 6c 20 66 69 6c 65 6e 61 6d 65 73 20 74 68 61 74  l filenames that
2ce80 20 62 65 67 69 6e 20 77 69 74 68 20 74 68 65 20   begin with the 
2ce90 22 3a 22 20 63 68 61 72 61 63 74 65 72 2e 0a 2a  ":" character..*
2cea0 2a 20 49 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  * It is recommen
2ceb0 64 65 64 20 74 68 61 74 20 77 68 65 6e 20 61 20  ded that when a 
2cec0 64 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d  database filenam
2ced0 65 20 61 63 74 75 61 6c 6c 79 20 64 6f 65 73 20  e actually does 
2cee0 62 65 67 69 6e 20 77 69 74 68 0a 2a 2a 20 61 20  begin with.** a 
2cef0 22 3a 22 20 63 68 61 72 61 63 74 65 72 20 79 6f  ":" character yo
2cf00 75 20 73 68 6f 75 6c 64 20 70 72 65 66 69 78 20  u should prefix 
2cf10 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 77 69 74  the filename wit
2cf20 68 20 61 20 70 61 74 68 6e 61 6d 65 20 73 75 63  h a pathname suc
2cf30 68 20 61 73 0a 2a 2a 20 22 2e 2f 22 20 74 6f 20  h as.** "./" to 
2cf40 61 76 6f 69 64 20 61 6d 62 69 67 75 69 74 79 2e  avoid ambiguity.
2cf50 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66  .**.** ^If the f
2cf60 69 6c 65 6e 61 6d 65 20 69 73 20 61 6e 20 65 6d  ilename is an em
2cf70 70 74 79 20 73 74 72 69 6e 67 2c 20 74 68 65 6e  pty string, then
2cf80 20 61 20 70 72 69 76 61 74 65 2c 20 74 65 6d 70   a private, temp
2cf90 6f 72 61 72 79 0a 2a 2a 20 6f 6e 2d 64 69 73 6b  orary.** on-disk
2cfa0 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62   database will b
2cfb0 65 20 63 72 65 61 74 65 64 2e 20 20 5e 54 68 69  e created.  ^Thi
2cfc0 73 20 70 72 69 76 61 74 65 20 64 61 74 61 62 61  s private databa
2cfd0 73 65 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 61 75  se will be.** au
2cfe0 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65  tomatically dele
2cff0 74 65 64 20 61 73 20 73 6f 6f 6e 20 61 73 20 74  ted as soon as t
2d000 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
2d010 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64  ection is closed
2d020 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20 66 69  ..**.** [[URI fi
2d030 6c 65 6e 61 6d 65 73 20 69 6e 20 73 71 6c 69 74  lenames in sqlit
2d040 65 33 5f 6f 70 65 6e 28 29 5d 5d 20 3c 68 33 3e  e3_open()]] <h3>
2d050 55 52 49 20 46 69 6c 65 6e 61 6d 65 73 3c 2f 68  URI Filenames</h
2d060 33 3e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 5b 55 52  3>.**.** ^If [UR
2d070 49 20 66 69 6c 65 6e 61 6d 65 5d 20 69 6e 74 65  I filename] inte
2d080 72 70 72 65 74 61 74 69 6f 6e 20 69 73 20 65 6e  rpretation is en
2d090 61 62 6c 65 64 2c 20 61 6e 64 20 74 68 65 20 66  abled, and the f
2d0a0 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74  ilename argument
2d0b0 0a 2a 2a 20 62 65 67 69 6e 73 20 77 69 74 68 20  .** begins with 
2d0c0 22 66 69 6c 65 3a 22 2c 20 74 68 65 6e 20 74 68  "file:", then th
2d0d0 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 69 6e  e filename is in
2d0e0 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 55  terpreted as a U
2d0f0 52 49 2e 20 5e 55 52 49 0a 2a 2a 20 66 69 6c 65  RI. ^URI.** file
2d100 6e 61 6d 65 20 69 6e 74 65 72 70 72 65 74 61 74  name interpretat
2d110 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 20 69  ion is enabled i
2d120 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50  f the [SQLITE_OP
2d130 45 4e 5f 55 52 49 5d 20 66 6c 61 67 20 69 73 0a  EN_URI] flag is.
2d140 2a 2a 20 73 65 74 20 69 6e 20 74 68 65 20 74 68  ** set in the th
2d150 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ird argument to 
2d160 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2d170 29 2c 20 6f 72 20 69 66 20 69 74 20 68 61 73 0a  ), or if it has.
2d180 2a 2a 20 62 65 65 6e 20 65 6e 61 62 6c 65 64 20  ** been enabled 
2d190 67 6c 6f 62 61 6c 6c 79 20 75 73 69 6e 67 20 74  globally using t
2d1a0 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  he [SQLITE_CONFI
2d1b0 47 5f 55 52 49 5d 20 6f 70 74 69 6f 6e 20 77 69  G_URI] option wi
2d1c0 74 68 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  th the.** [sqlit
2d1d0 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 6d 65 74  e3_config()] met
2d1e0 68 6f 64 20 6f 72 20 62 79 20 74 68 65 20 5b 53  hod or by the [S
2d1f0 51 4c 49 54 45 5f 55 53 45 5f 55 52 49 5d 20 63  QLITE_USE_URI] c
2d200 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
2d210 6f 6e 2e 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e  on..** URI filen
2d220 61 6d 65 20 69 6e 74 65 72 70 72 65 74 61 74 69  ame interpretati
2d230 6f 6e 20 69 73 20 74 75 72 6e 65 64 20 6f 66 66  on is turned off
2d240 0a 2a 2a 20 62 79 20 64 65 66 61 75 6c 74 2c 20  .** by default, 
2d250 62 75 74 20 66 75 74 75 72 65 20 72 65 6c 65 61  but future relea
2d260 73 65 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69  ses of SQLite mi
2d270 67 68 74 20 65 6e 61 62 6c 65 20 55 52 49 20 66  ght enable URI f
2d280 69 6c 65 6e 61 6d 65 0a 2a 2a 20 69 6e 74 65 72  ilename.** inter
2d290 70 72 65 74 61 74 69 6f 6e 20 62 79 20 64 65 66  pretation by def
2d2a0 61 75 6c 74 2e 20 20 53 65 65 20 22 5b 55 52 49  ault.  See "[URI
2d2b0 20 66 69 6c 65 6e 61 6d 65 73 5d 22 20 66 6f 72   filenames]" for
2d2c0 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 69   additional.** i
2d2d0 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a  nformation..**.*
2d2e0 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20  * URI filenames 
2d2f0 61 72 65 20 70 61 72 73 65 64 20 61 63 63 6f 72  are parsed accor
2d300 64 69 6e 67 20 74 6f 20 52 46 43 20 33 39 38 36  ding to RFC 3986
2d310 2e 20 5e 49 66 20 74 68 65 20 55 52 49 20 63 6f  . ^If the URI co
2d320 6e 74 61 69 6e 73 20 61 6e 0a 2a 2a 20 61 75 74  ntains an.** aut
2d330 68 6f 72 69 74 79 2c 20 74 68 65 6e 20 69 74 20  hority, then it 
2d340 6d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 61  must be either a
2d350 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f  n empty string o
2d360 72 20 74 68 65 20 73 74 72 69 6e 67 20 0a 2a 2a  r the string .**
2d370 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e 20 5e 49   "localhost". ^I
2d380 66 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20  f the authority 
2d390 69 73 20 6e 6f 74 20 61 6e 20 65 6d 70 74 79 20  is not an empty 
2d3a0 73 74 72 69 6e 67 20 6f 72 20 22 6c 6f 63 61 6c  string or "local
2d3b0 68 6f 73 74 22 2c 20 61 6e 20 0a 2a 2a 20 65 72  host", an .** er
2d3c0 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 20  ror is returned 
2d3d0 74 6f 20 74 68 65 20 63 61 6c 6c 65 72 2e 20 5e  to the caller. ^
2d3e0 54 68 65 20 66 72 61 67 6d 65 6e 74 20 63 6f 6d  The fragment com
2d3f0 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 2c  ponent of a URI,
2d400 20 69 66 20 0a 2a 2a 20 70 72 65 73 65 6e 74 2c   if .** present,
2d410 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a   is ignored..**.
2d420 2a 2a 20 5e 53 51 4c 69 74 65 20 75 73 65 73 20  ** ^SQLite uses 
2d430 74 68 65 20 70 61 74 68 20 63 6f 6d 70 6f 6e 65  the path compone
2d440 6e 74 20 6f 66 20 74 68 65 20 55 52 49 20 61 73  nt of the URI as
2d450 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2d460 20 64 69 73 6b 20 66 69 6c 65 0a 2a 2a 20 77 68   disk file.** wh
2d470 69 63 68 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  ich contains the
2d480 20 64 61 74 61 62 61 73 65 2e 20 5e 49 66 20 74   database. ^If t
2d490 68 65 20 70 61 74 68 20 62 65 67 69 6e 73 20 77  he path begins w
2d4a0 69 74 68 20 61 20 27 2f 27 20 63 68 61 72 61 63  ith a '/' charac
2d4b0 74 65 72 2c 20 0a 2a 2a 20 74 68 65 6e 20 69 74  ter, .** then it
2d4c0 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20   is interpreted 
2d4d0 61 73 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 70  as an absolute p
2d4e0 61 74 68 2e 20 5e 49 66 20 74 68 65 20 70 61 74  ath. ^If the pat
2d4f0 68 20 64 6f 65 73 20 6e 6f 74 20 62 65 67 69 6e  h does not begin
2d500 20 0a 2a 2a 20 77 69 74 68 20 61 20 27 2f 27 20   .** with a '/' 
2d510 28 6d 65 61 6e 69 6e 67 20 74 68 61 74 20 74 68  (meaning that th
2d520 65 20 61 75 74 68 6f 72 69 74 79 20 73 65 63 74  e authority sect
2d530 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 20 66  ion is omitted f
2d540 72 6f 6d 20 74 68 65 20 55 52 49 29 0a 2a 2a 20  rom the URI).** 
2d550 74 68 65 6e 20 74 68 65 20 70 61 74 68 20 69 73  then the path is
2d560 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
2d570 61 20 72 65 6c 61 74 69 76 65 20 70 61 74 68 2e  a relative path.
2d580 20 0a 2a 2a 20 5e 28 4f 6e 20 77 69 6e 64 6f 77   .** ^(On window
2d590 73 2c 20 74 68 65 20 66 69 72 73 74 20 63 6f 6d  s, the first com
2d5a0 70 6f 6e 65 6e 74 20 6f 66 20 61 6e 20 61 62 73  ponent of an abs
2d5b0 6f 6c 75 74 65 20 70 61 74 68 20 0a 2a 2a 20 69  olute path .** i
2d5c0 73 20 61 20 64 72 69 76 65 20 73 70 65 63 69 66  s a drive specif
2d5d0 69 63 61 74 69 6f 6e 20 28 65 2e 67 2e 20 22 43  ication (e.g. "C
2d5e0 3a 22 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 63  :").)^.**.** [[c
2d5f0 6f 72 65 20 55 52 49 20 71 75 65 72 79 20 70 61  ore URI query pa
2d600 72 61 6d 65 74 65 72 73 5d 5d 0a 2a 2a 20 54 68  rameters]].** Th
2d610 65 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e  e query componen
2d620 74 20 6f 66 20 61 20 55 52 49 20 6d 61 79 20 63  t of a URI may c
2d630 6f 6e 74 61 69 6e 20 70 61 72 61 6d 65 74 65 72  ontain parameter
2d640 73 20 74 68 61 74 20 61 72 65 20 69 6e 74 65 72  s that are inter
2d650 70 72 65 74 65 64 0a 2a 2a 20 65 69 74 68 65 72  preted.** either
2d660 20 62 79 20 53 51 4c 69 74 65 20 69 74 73 65 6c   by SQLite itsel
2d670 66 2c 20 6f 72 20 62 79 20 61 20 5b 56 46 53 20  f, or by a [VFS 
2d680 7c 20 63 75 73 74 6f 6d 20 56 46 53 20 69 6d 70  | custom VFS imp
2d690 6c 65 6d 65 6e 74 61 74 69 6f 6e 5d 2e 0a 2a 2a  lementation]..**
2d6a0 20 53 51 4c 69 74 65 20 61 6e 64 20 69 74 73 20   SQLite and its 
2d6b0 62 75 69 6c 74 2d 69 6e 20 5b 56 46 53 65 73 5d  built-in [VFSes]
2d6c0 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 0a 2a   interpret the.*
2d6d0 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72  * following quer
2d6e0 79 20 70 61 72 61 6d 65 74 65 72 73 3a 0a 2a 2a  y parameters:.**
2d6f0 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c  .** <ul>.**   <l
2d700 69 3e 20 3c 62 3e 76 66 73 3c 2f 62 3e 3a 20 5e  i> <b>vfs</b>: ^
2d710 54 68 65 20 22 76 66 73 22 20 70 61 72 61 6d 65  The "vfs" parame
2d720 74 65 72 20 6d 61 79 20 62 65 20 75 73 65 64 20  ter may be used 
2d730 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 6e  to specify the n
2d740 61 6d 65 20 6f 66 0a 2a 2a 20 20 20 20 20 61 20  ame of.**     a 
2d750 56 46 53 20 6f 62 6a 65 63 74 20 74 68 61 74 20  VFS object that 
2d760 70 72 6f 76 69 64 65 73 20 74 68 65 20 6f 70 65  provides the ope
2d770 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e  rating system in
2d780 74 65 72 66 61 63 65 20 74 68 61 74 20 73 68 6f  terface that sho
2d790 75 6c 64 0a 2a 2a 20 20 20 20 20 62 65 20 75 73  uld.**     be us
2d7a0 65 64 20 74 6f 20 61 63 63 65 73 73 20 74 68 65  ed to access the
2d7b0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6f   database file o
2d7c0 6e 20 64 69 73 6b 2e 20 5e 49 66 20 74 68 69 73  n disk. ^If this
2d7d0 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 20 74   option is set t
2d7e0 6f 0a 2a 2a 20 20 20 20 20 61 6e 20 65 6d 70 74  o.**     an empt
2d7f0 79 20 73 74 72 69 6e 67 20 74 68 65 20 64 65 66  y string the def
2d800 61 75 6c 74 20 56 46 53 20 6f 62 6a 65 63 74 20  ault VFS object 
2d810 69 73 20 75 73 65 64 2e 20 5e 53 70 65 63 69 66  is used. ^Specif
2d820 79 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77 6e 0a  ying an unknown.
2d830 2a 2a 20 20 20 20 20 56 46 53 20 69 73 20 61 6e  **     VFS is an
2d840 20 65 72 72 6f 72 2e 20 5e 49 66 20 73 71 6c 69   error. ^If sqli
2d850 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73  te3_open_v2() is
2d860 20 75 73 65 64 20 61 6e 64 20 74 68 65 20 76 66   used and the vf
2d870 73 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 20  s option is.**  
2d880 20 20 20 70 72 65 73 65 6e 74 2c 20 74 68 65 6e     present, then
2d890 20 74 68 65 20 56 46 53 20 73 70 65 63 69 66 69   the VFS specifi
2d8a0 65 64 20 62 79 20 74 68 65 20 6f 70 74 69 6f 6e  ed by the option
2d8b0 20 74 61 6b 65 73 20 70 72 65 63 65 64 65 6e 63   takes precedenc
2d8c0 65 20 6f 76 65 72 0a 2a 2a 20 20 20 20 20 74 68  e over.**     th
2d8d0 65 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 61  e value passed a
2d8e0 73 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72  s the fourth par
2d8f0 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65  ameter to sqlite
2d900 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a  3_open_v2()..**.
2d910 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 6d 6f 64  **   <li> <b>mod
2d920 65 3c 2f 62 3e 3a 20 5e 28 54 68 65 20 6d 6f 64  e</b>: ^(The mod
2d930 65 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  e parameter may 
2d940 62 65 20 73 65 74 20 74 6f 20 65 69 74 68 65 72  be set to either
2d950 20 22 72 6f 22 2c 20 22 72 77 22 2c 0a 2a 2a 20   "ro", "rw",.** 
2d960 20 20 20 20 22 72 77 63 22 2c 20 6f 72 20 22 6d      "rwc", or "m
2d970 65 6d 6f 72 79 22 2e 20 41 74 74 65 6d 70 74 69  emory". Attempti
2d980 6e 67 20 74 6f 20 73 65 74 20 69 74 20 74 6f 20  ng to set it to 
2d990 61 6e 79 20 6f 74 68 65 72 20 76 61 6c 75 65 20  any other value 
2d9a0 69 73 0a 2a 2a 20 20 20 20 20 61 6e 20 65 72 72  is.**     an err
2d9b0 6f 72 29 5e 2e 20 0a 2a 2a 20 20 20 20 20 5e 49  or)^. .**     ^I
2d9c0 66 20 22 72 6f 22 20 69 73 20 73 70 65 63 69 66  f "ro" is specif
2d9d0 69 65 64 2c 20 74 68 65 6e 20 74 68 65 20 64 61  ied, then the da
2d9e0 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
2d9f0 20 66 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20 0a   for read-only .
2da00 2a 2a 20 20 20 20 20 61 63 63 65 73 73 2c 20 6a  **     access, j
2da10 75 73 74 20 61 73 20 69 66 20 74 68 65 20 5b 53  ust as if the [S
2da20 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f  QLITE_OPEN_READO
2da30 4e 4c 59 5d 20 66 6c 61 67 20 68 61 64 20 62 65  NLY] flag had be
2da40 65 6e 20 73 65 74 20 69 6e 20 74 68 65 20 0a 2a  en set in the .*
2da50 2a 20 20 20 20 20 74 68 69 72 64 20 61 72 67 75  *     third argu
2da60 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
2da70 6f 70 65 6e 5f 76 32 28 29 2e 20 5e 49 66 20 74  open_v2(). ^If t
2da80 68 65 20 6d 6f 64 65 20 6f 70 74 69 6f 6e 20 69  he mode option i
2da90 73 20 73 65 74 20 74 6f 20 0a 2a 2a 20 20 20 20  s set to .**    
2daa0 20 22 72 77 22 2c 20 74 68 65 6e 20 74 68 65 20   "rw", then the 
2dab0 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e  database is open
2dac0 65 64 20 66 6f 72 20 72 65 61 64 2d 77 72 69 74  ed for read-writ
2dad0 65 20 28 62 75 74 20 6e 6f 74 20 63 72 65 61 74  e (but not creat
2dae0 65 29 20 0a 2a 2a 20 20 20 20 20 61 63 63 65 73  e) .**     acces
2daf0 73 2c 20 61 73 20 69 66 20 53 51 4c 49 54 45 5f  s, as if SQLITE_
2db00 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45 20 28  OPEN_READWRITE (
2db10 62 75 74 20 6e 6f 74 20 53 51 4c 49 54 45 5f 4f  but not SQLITE_O
2db20 50 45 4e 5f 43 52 45 41 54 45 29 20 68 61 64 20  PEN_CREATE) had 
2db30 0a 2a 2a 20 20 20 20 20 62 65 65 6e 20 73 65 74  .**     been set
2db40 2e 20 5e 56 61 6c 75 65 20 22 72 77 63 22 20 69  . ^Value "rwc" i
2db50 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20  s equivalent to 
2db60 73 65 74 74 69 6e 67 20 62 6f 74 68 20 0a 2a 2a  setting both .**
2db70 20 20 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e       SQLITE_OPEN
2db80 5f 52 45 41 44 57 52 49 54 45 20 61 6e 64 20 53  _READWRITE and S
2db90 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54  QLITE_OPEN_CREAT
2dba0 45 2e 20 20 5e 49 66 20 74 68 65 20 6d 6f 64 65  E.  ^If the mode
2dbb0 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 20 20   option is.**   
2dbc0 20 20 73 65 74 20 74 6f 20 22 6d 65 6d 6f 72 79    set to "memory
2dbd0 22 20 74 68 65 6e 20 61 20 70 75 72 65 20 5b 69  " then a pure [i
2dbe0 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
2dbf0 65 5d 20 74 68 61 74 20 6e 65 76 65 72 20 72 65  e] that never re
2dc00 61 64 73 0a 2a 2a 20 20 20 20 20 6f 72 20 77 72  ads.**     or wr
2dc10 69 74 65 73 20 66 72 6f 6d 20 64 69 73 6b 20 69  ites from disk i
2dc20 73 20 75 73 65 64 2e 20 5e 49 74 20 69 73 20 61  s used. ^It is a
2dc30 6e 20 65 72 72 6f 72 20 74 6f 20 73 70 65 63 69  n error to speci
2dc40 66 79 20 61 20 76 61 6c 75 65 20 66 6f 72 0a 2a  fy a value for.*
2dc50 2a 20 20 20 20 20 74 68 65 20 6d 6f 64 65 20 70  *     the mode p
2dc60 61 72 61 6d 65 74 65 72 20 74 68 61 74 20 69 73  arameter that is
2dc70 20 6c 65 73 73 20 72 65 73 74 72 69 63 74 69 76   less restrictiv
2dc80 65 20 74 68 61 6e 20 74 68 61 74 20 73 70 65 63  e than that spec
2dc90 69 66 69 65 64 20 62 79 0a 2a 2a 20 20 20 20 20  ified by.**     
2dca0 74 68 65 20 66 6c 61 67 73 20 70 61 73 73 65 64  the flags passed
2dcb0 20 69 6e 20 74 68 65 20 74 68 69 72 64 20 70 61   in the third pa
2dcc0 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
2dcd0 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a  e3_open_v2()..**
2dce0 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 63 61  .**   <li> <b>ca
2dcf0 63 68 65 3c 2f 62 3e 3a 20 5e 54 68 65 20 63 61  che</b>: ^The ca
2dd00 63 68 65 20 70 61 72 61 6d 65 74 65 72 20 6d 61  che parameter ma
2dd10 79 20 62 65 20 73 65 74 20 74 6f 20 65 69 74 68  y be set to eith
2dd20 65 72 20 22 73 68 61 72 65 64 22 20 6f 72 0a 2a  er "shared" or.*
2dd30 2a 20 20 20 20 20 22 70 72 69 76 61 74 65 22 2e  *     "private".
2dd40 20 5e 53 65 74 74 69 6e 67 20 69 74 20 74 6f 20   ^Setting it to 
2dd50 22 73 68 61 72 65 64 22 20 69 73 20 65 71 75 69  "shared" is equi
2dd60 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e  valent to settin
2dd70 67 20 74 68 65 0a 2a 2a 20 20 20 20 20 53 51 4c  g the.**     SQL
2dd80 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43  ITE_OPEN_SHAREDC
2dd90 41 43 48 45 20 62 69 74 20 69 6e 20 74 68 65 20  ACHE bit in the 
2dda0 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 70  flags argument p
2ddb0 61 73 73 65 64 20 74 6f 0a 2a 2a 20 20 20 20 20  assed to.**     
2ddc0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2ddd0 29 2e 20 5e 53 65 74 74 69 6e 67 20 74 68 65 20  ). ^Setting the 
2dde0 63 61 63 68 65 20 70 61 72 61 6d 65 74 65 72 20  cache parameter 
2ddf0 74 6f 20 22 70 72 69 76 61 74 65 22 20 69 73 20  to "private" is 
2de00 0a 2a 2a 20 20 20 20 20 65 71 75 69 76 61 6c 65  .**     equivale
2de10 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68  nt to setting th
2de20 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52  e SQLITE_OPEN_PR
2de30 49 56 41 54 45 43 41 43 48 45 20 62 69 74 2e 0a  IVATECACHE bit..
2de40 2a 2a 20 20 20 20 20 5e 49 66 20 73 71 6c 69 74  **     ^If sqlit
2de50 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73 20  e3_open_v2() is 
2de60 75 73 65 64 20 61 6e 64 20 74 68 65 20 22 63 61  used and the "ca
2de70 63 68 65 22 20 70 61 72 61 6d 65 74 65 72 20 69  che" parameter i
2de80 73 20 70 72 65 73 65 6e 74 20 69 6e 0a 2a 2a 20  s present in.** 
2de90 20 20 20 20 61 20 55 52 49 20 66 69 6c 65 6e 61      a URI filena
2dea0 6d 65 2c 20 69 74 73 20 76 61 6c 75 65 20 6f 76  me, its value ov
2deb0 65 72 72 69 64 65 73 20 61 6e 79 20 62 65 68 61  errides any beha
2dec0 76 69 6f 72 20 72 65 71 75 65 73 74 65 64 20 62  vior requested b
2ded0 79 20 73 65 74 74 69 6e 67 0a 2a 2a 20 20 20 20  y setting.**    
2dee0 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49   SQLITE_OPEN_PRI
2def0 56 41 54 45 43 41 43 48 45 20 6f 72 20 53 51 4c  VATECACHE or SQL
2df00 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43  ITE_OPEN_SHAREDC
2df10 41 43 48 45 20 66 6c 61 67 2e 0a 2a 2a 0a 2a 2a  ACHE flag..**.**
2df20 20 20 3c 6c 69 3e 20 3c 62 3e 70 73 6f 77 3c 2f    <li> <b>psow</
2df30 62 3e 3a 20 5e 54 68 65 20 70 73 6f 77 20 70 61  b>: ^The psow pa
2df40 72 61 6d 65 74 65 72 20 69 6e 64 69 63 61 74 65  rameter indicate
2df50 73 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  s whether or not
2df60 20 74 68 65 0a 2a 2a 20 20 20 20 20 5b 70 6f 77   the.**     [pow
2df70 65 72 73 61 66 65 20 6f 76 65 72 77 72 69 74 65  ersafe overwrite
2df80 5d 20 70 72 6f 70 65 72 74 79 20 64 6f 65 73 20  ] property does 
2df90 6f 72 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 6c  or does not appl
2dfa0 79 20 74 6f 20 74 68 65 0a 2a 2a 20 20 20 20 20  y to the.**     
2dfb0 73 74 6f 72 61 67 65 20 6d 65 64 69 61 20 6f 6e  storage media on
2dfc0 20 77 68 69 63 68 20 74 68 65 20 64 61 74 61 62   which the datab
2dfd0 61 73 65 20 66 69 6c 65 20 72 65 73 69 64 65 73  ase file resides
2dfe0 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62  ..**.**  <li> <b
2dff0 3e 6e 6f 6c 6f 63 6b 3c 2f 62 3e 3a 20 5e 54 68  >nolock</b>: ^Th
2e000 65 20 6e 6f 6c 6f 63 6b 20 70 61 72 61 6d 65 74  e nolock paramet
2e010 65 72 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20  er is a boolean 
2e020 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 0a  query parameter.
2e030 2a 2a 20 20 20 20 20 77 68 69 63 68 20 69 66 20  **     which if 
2e040 73 65 74 20 64 69 73 61 62 6c 65 73 20 66 69 6c  set disables fil
2e050 65 20 6c 6f 63 6b 69 6e 67 20 69 6e 20 72 6f 6c  e locking in rol
2e060 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 20 6d 6f  lback journal mo
2e070 64 65 73 2e 20 20 54 68 69 73 0a 2a 2a 20 20 20  des.  This.**   
2e080 20 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20    is useful for 
2e090 61 63 63 65 73 73 69 6e 67 20 61 20 64 61 74 61  accessing a data
2e0a0 62 61 73 65 20 6f 6e 20 61 20 66 69 6c 65 73 79  base on a filesy
2e0b0 73 74 65 6d 20 74 68 61 74 20 64 6f 65 73 20 6e  stem that does n
2e0c0 6f 74 0a 2a 2a 20 20 20 20 20 73 75 70 70 6f 72  ot.**     suppor
2e0d0 74 20 6c 6f 63 6b 69 6e 67 2e 20 20 43 61 75 74  t locking.  Caut
2e0e0 69 6f 6e 3a 20 20 44 61 74 61 62 61 73 65 20 63  ion:  Database c
2e0f0 6f 72 72 75 70 74 69 6f 6e 20 6d 69 67 68 74 20  orruption might 
2e100 72 65 73 75 6c 74 20 69 66 20 74 77 6f 0a 2a 2a  result if two.**
2e110 20 20 20 20 20 6f 72 20 6d 6f 72 65 20 70 72 6f       or more pro
2e120 63 65 73 73 65 73 20 77 72 69 74 65 20 74 6f 20  cesses write to 
2e130 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
2e140 65 20 61 6e 64 20 61 6e 79 20 6f 6e 65 20 6f 66  e and any one of
2e150 20 74 68 6f 73 65 0a 2a 2a 20 20 20 20 20 70 72   those.**     pr
2e160 6f 63 65 73 73 65 73 20 75 73 65 73 20 6e 6f 6c  ocesses uses nol
2e170 6f 63 6b 3d 31 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c  ock=1..**.**  <l
2e180 69 3e 20 3c 62 3e 69 6d 6d 75 74 61 62 6c 65 3c  i> <b>immutable<
2e190 2f 62 3e 3a 20 5e 54 68 65 20 69 6d 6d 75 74 61  /b>: ^The immuta
2e1a0 62 6c 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  ble parameter is
2e1b0 20 61 20 62 6f 6f 6c 65 61 6e 20 71 75 65 72 79   a boolean query
2e1c0 0a 2a 2a 20 20 20 20 20 70 61 72 61 6d 65 74 65  .**     paramete
2e1d0 72 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73  r that indicates
2e1e0 20 74 68 61 74 20 74 68 65 20 64 61 74 61 62 61   that the databa
2e1f0 73 65 20 66 69 6c 65 20 69 73 20 73 74 6f 72 65  se file is store
2e200 64 20 6f 6e 0a 2a 2a 20 20 20 20 20 72 65 61 64  d on.**     read
2e210 2d 6f 6e 6c 79 20 6d 65 64 69 61 2e 20 20 5e 57  -only media.  ^W
2e220 68 65 6e 20 69 6d 6d 75 74 61 62 6c 65 20 69 73  hen immutable is
2e230 20 73 65 74 2c 20 53 51 4c 69 74 65 20 61 73 73   set, SQLite ass
2e240 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a  umes that the.**
2e250 20 20 20 20 20 64 61 74 61 62 61 73 65 20 66 69       database fi
2e260 6c 65 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61  le cannot be cha
2e270 6e 67 65 64 2c 20 65 76 65 6e 20 62 79 20 61 20  nged, even by a 
2e280 70 72 6f 63 65 73 73 20 77 69 74 68 20 68 69 67  process with hig
2e290 68 65 72 0a 2a 2a 20 20 20 20 20 70 72 69 76 69  her.**     privi
2e2a0 6c 65 67 65 2c 20 61 6e 64 20 73 6f 20 74 68 65  lege, and so the
2e2b0 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
2e2c0 6e 65 64 20 72 65 61 64 2d 6f 6e 6c 79 20 61 6e  ned read-only an
2e2d0 64 20 61 6c 6c 20 6c 6f 63 6b 69 6e 67 0a 2a 2a  d all locking.**
2e2e0 20 20 20 20 20 61 6e 64 20 63 68 61 6e 67 65 20       and change 
2e2f0 64 65 74 65 63 74 69 6f 6e 20 69 73 20 64 69 73  detection is dis
2e300 61 62 6c 65 64 2e 20 20 43 61 75 74 69 6f 6e 3a  abled.  Caution:
2e310 20 53 65 74 74 69 6e 67 20 74 68 65 20 69 6d 6d   Setting the imm
2e320 75 74 61 62 6c 65 0a 2a 2a 20 20 20 20 20 70 72  utable.**     pr
2e330 6f 70 65 72 74 79 20 6f 6e 20 61 20 64 61 74 61  operty on a data
2e340 62 61 73 65 20 66 69 6c 65 20 74 68 61 74 20 64  base file that d
2e350 6f 65 73 20 69 6e 20 66 61 63 74 20 63 68 61 6e  oes in fact chan
2e360 67 65 20 63 61 6e 20 72 65 73 75 6c 74 0a 2a 2a  ge can result.**
2e370 20 20 20 20 20 69 6e 20 69 6e 63 6f 72 72 65 63       in incorrec
2e380 74 20 71 75 65 72 79 20 72 65 73 75 6c 74 73 20  t query results 
2e390 61 6e 64 2f 6f 72 20 5b 53 51 4c 49 54 45 5f 43  and/or [SQLITE_C
2e3a0 4f 52 52 55 50 54 5d 20 65 72 72 6f 72 73 2e 0a  ORRUPT] errors..
2e3b0 2a 2a 20 20 20 20 20 53 65 65 20 61 6c 73 6f 3a  **     See also:
2e3c0 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49   [SQLITE_IOCAP_I
2e3d0 4d 4d 55 54 41 42 4c 45 5d 2e 0a 2a 2a 20 20 20  MMUTABLE]..**   
2e3e0 20 20 20 20 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a      .** </ul>.**
2e3f0 0a 2a 2a 20 5e 53 70 65 63 69 66 79 69 6e 67 20  .** ^Specifying 
2e400 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70 61 72 61 6d  an unknown param
2e410 65 74 65 72 20 69 6e 20 74 68 65 20 71 75 65 72  eter in the quer
2e420 79 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61  y component of a
2e430 20 55 52 49 20 69 73 20 6e 6f 74 20 61 6e 0a 2a   URI is not an.*
2e440 2a 20 65 72 72 6f 72 2e 20 20 46 75 74 75 72 65  * error.  Future
2e450 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2e460 69 74 65 20 6d 69 67 68 74 20 75 6e 64 65 72 73  ite might unders
2e470 74 61 6e 64 20 61 64 64 69 74 69 6f 6e 61 6c 20  tand additional 
2e480 71 75 65 72 79 0a 2a 2a 20 70 61 72 61 6d 65 74  query.** paramet
2e490 65 72 73 2e 20 20 53 65 65 20 22 5b 71 75 65 72  ers.  See "[quer
2e4a0 79 20 70 61 72 61 6d 65 74 65 72 73 20 77 69 74  y parameters wit
2e4b0 68 20 73 70 65 63 69 61 6c 20 6d 65 61 6e 69 6e  h special meanin
2e4c0 67 20 74 6f 20 53 51 4c 69 74 65 5d 22 20 66 6f  g to SQLite]" fo
2e4d0 72 0a 2a 2a 20 61 64 64 69 74 69 6f 6e 61 6c 20  r.** additional 
2e4e0 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a  information..**.
2e4f0 2a 2a 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d  ** [[URI filenam
2e500 65 20 65 78 61 6d 70 6c 65 73 5d 5d 20 3c 68 33  e examples]] <h3
2e510 3e 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 65 78  >URI filename ex
2e520 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a  amples</h3>.**.*
2e530 2a 20 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d  * <table border=
2e540 22 31 22 20 61 6c 69 67 6e 3d 63 65 6e 74 65 72  "1" align=center
2e550 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 35 3e 0a   cellpadding=5>.
2e560 2a 2a 20 3c 74 72 3e 3c 74 68 3e 20 55 52 49 20  ** <tr><th> URI 
2e570 66 69 6c 65 6e 61 6d 65 73 20 3c 74 68 3e 20 52  filenames <th> R
2e580 65 73 75 6c 74 73 0a 2a 2a 20 3c 74 72 3e 3c 74  esults.** <tr><t
2e590 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e 64 62 20  d> file:data.db 
2e5a0 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20  <td> .**        
2e5b0 20 20 4f 70 65 6e 20 74 68 65 20 66 69 6c 65 20    Open the file 
2e5c0 22 64 61 74 61 2e 64 62 22 20 69 6e 20 74 68 65  "data.db" in the
2e5d0 20 63 75 72 72 65 6e 74 20 64 69 72 65 63 74 6f   current directo
2e5e0 72 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20  ry..** <tr><td> 
2e5f0 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f  file:/home/fred/
2e600 64 61 74 61 2e 64 62 3c 62 72 3e 0a 2a 2a 20 20  data.db<br>.**  
2e610 20 20 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 2f          file:///
2e620 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64  home/fred/data.d
2e630 62 20 3c 62 72 3e 20 0a 2a 2a 20 20 20 20 20 20  b <br> .**      
2e640 20 20 20 20 66 69 6c 65 3a 2f 2f 6c 6f 63 61 6c      file://local
2e650 68 6f 73 74 2f 68 6f 6d 65 2f 66 72 65 64 2f 64  host/home/fred/d
2e660 61 74 61 2e 64 62 20 3c 62 72 3e 20 3c 74 64 3e  ata.db <br> <td>
2e670 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70   .**          Op
2e680 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
2e690 66 69 6c 65 20 22 2f 68 6f 6d 65 2f 66 72 65 64  file "/home/fred
2e6a0 2f 64 61 74 61 2e 64 62 22 2e 0a 2a 2a 20 3c 74  /data.db"..** <t
2e6b0 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f 2f 64 61  r><td> file://da
2e6c0 72 6b 73 74 61 72 2f 68 6f 6d 65 2f 66 72 65 64  rkstar/home/fred
2e6d0 2f 64 61 74 61 2e 64 62 20 3c 74 64 3e 20 0a 2a  /data.db <td> .*
2e6e0 2a 20 20 20 20 20 20 20 20 20 20 41 6e 20 65 72  *          An er
2e6f0 72 6f 72 2e 20 22 64 61 72 6b 73 74 61 72 22 20  ror. "darkstar" 
2e700 69 73 20 6e 6f 74 20 61 20 72 65 63 6f 67 6e 69  is not a recogni
2e710 7a 65 64 20 61 75 74 68 6f 72 69 74 79 2e 0a 2a  zed authority..*
2e720 2a 20 3c 74 72 3e 3c 74 64 20 73 74 79 6c 65 3d  * <tr><td style=
2e730 22 77 68 69 74 65 2d 73 70 61 63 65 3a 6e 6f 77  "white-space:now
2e740 72 61 70 22 3e 20 0a 2a 2a 20 20 20 20 20 20 20  rap"> .**       
2e750 20 20 20 66 69 6c 65 3a 2f 2f 2f 43 3a 2f 44 6f     file:///C:/Do
2e760 63 75 6d 65 6e 74 73 25 32 30 61 6e 64 25 32 30  cuments%20and%20
2e770 53 65 74 74 69 6e 67 73 2f 66 72 65 64 2f 44 65  Settings/fred/De
2e780 73 6b 74 6f 70 2f 64 61 74 61 2e 64 62 0a 2a 2a  sktop/data.db.**
2e790 20 20 20 20 20 3c 74 64 3e 20 57 69 6e 64 6f 77       <td> Window
2e7a0 73 20 6f 6e 6c 79 3a 20 4f 70 65 6e 20 74 68 65  s only: Open the
2e7b0 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20   file "data.db" 
2e7c0 6f 6e 20 66 72 65 64 27 73 20 64 65 73 6b 74 6f  on fred's deskto
2e7d0 70 20 6f 6e 20 64 72 69 76 65 0a 2a 2a 20 20 20  p on drive.**   
2e7e0 20 20 20 20 20 20 20 43 3a 2e 20 4e 6f 74 65 20         C:. Note 
2e7f0 74 68 61 74 20 74 68 65 20 25 32 30 20 65 73 63  that the %20 esc
2e800 61 70 69 6e 67 20 69 6e 20 74 68 69 73 20 65 78  aping in this ex
2e810 61 6d 70 6c 65 20 69 73 20 6e 6f 74 20 73 74 72  ample is not str
2e820 69 63 74 6c 79 20 0a 2a 2a 20 20 20 20 20 20 20  ictly .**       
2e830 20 20 20 6e 65 63 65 73 73 61 72 79 20 2d 20 73     necessary - s
2e840 70 61 63 65 20 63 68 61 72 61 63 74 65 72 73 20  pace characters 
2e850 63 61 6e 20 62 65 20 75 73 65 64 20 6c 69 74 65  can be used lite
2e860 72 61 6c 6c 79 0a 2a 2a 20 20 20 20 20 20 20 20  rally.**        
2e870 20 20 69 6e 20 55 52 49 20 66 69 6c 65 6e 61 6d    in URI filenam
2e880 65 73 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20  es..** <tr><td> 
2e890 66 69 6c 65 3a 64 61 74 61 2e 64 62 3f 6d 6f 64  file:data.db?mod
2e8a0 65 3d 72 6f 26 63 61 63 68 65 3d 70 72 69 76 61  e=ro&cache=priva
2e8b0 74 65 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20  te <td> .**     
2e8c0 20 20 20 20 20 4f 70 65 6e 20 66 69 6c 65 20 22       Open file "
2e8d0 64 61 74 61 2e 64 62 22 20 69 6e 20 74 68 65 20  data.db" in the 
2e8e0 63 75 72 72 65 6e 74 20 64 69 72 65 63 74 6f 72  current director
2e8f0 79 20 66 6f 72 20 72 65 61 64 2d 6f 6e 6c 79 20  y for read-only 
2e900 61 63 63 65 73 73 2e 0a 2a 2a 20 20 20 20 20 20  access..**      
2e910 20 20 20 20 52 65 67 61 72 64 6c 65 73 73 20 6f      Regardless o
2e920 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
2e930 20 73 68 61 72 65 64 2d 63 61 63 68 65 20 6d 6f   shared-cache mo
2e940 64 65 20 69 73 20 65 6e 61 62 6c 65 64 20 62 79  de is enabled by
2e950 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 64 65 66  .**          def
2e960 61 75 6c 74 2c 20 75 73 65 20 61 20 70 72 69 76  ault, use a priv
2e970 61 74 65 20 63 61 63 68 65 2e 0a 2a 2a 20 3c 74  ate cache..** <t
2e980 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d  r><td> file:/hom
2e990 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 3f 76  e/fred/data.db?v
2e9a0 66 73 3d 75 6e 69 78 2d 64 6f 74 66 69 6c 65 20  fs=unix-dotfile 
2e9b0 3c 74 64 3e 0a 2a 2a 20 20 20 20 20 20 20 20 20  <td>.**         
2e9c0 20 4f 70 65 6e 20 66 69 6c 65 20 22 2f 68 6f 6d   Open file "/hom
2e9d0 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 22 2e  e/fred/data.db".
2e9e0 20 55 73 65 20 74 68 65 20 73 70 65 63 69 61 6c   Use the special
2e9f0 20 56 46 53 20 22 75 6e 69 78 2d 64 6f 74 66 69   VFS "unix-dotfi
2ea00 6c 65 22 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  le".**          
2ea10 74 68 61 74 20 75 73 65 73 20 64 6f 74 2d 66 69  that uses dot-fi
2ea20 6c 65 73 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  les in place of 
2ea30 70 6f 73 69 78 20 61 64 76 69 73 6f 72 79 20 6c  posix advisory l
2ea40 6f 63 6b 69 6e 67 2e 0a 2a 2a 20 3c 74 72 3e 3c  ocking..** <tr><
2ea50 74 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e 64 62  td> file:data.db
2ea60 3f 6d 6f 64 65 3d 72 65 61 64 6f 6e 6c 79 20 3c  ?mode=readonly <
2ea70 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  td> .**         
2ea80 20 41 6e 20 65 72 72 6f 72 2e 20 22 72 65 61 64   An error. "read
2ea90 6f 6e 6c 79 22 20 69 73 20 6e 6f 74 20 61 20 76  only" is not a v
2eaa0 61 6c 69 64 20 6f 70 74 69 6f 6e 20 66 6f 72 20  alid option for 
2eab0 74 68 65 20 22 6d 6f 64 65 22 20 70 61 72 61 6d  the "mode" param
2eac0 65 74 65 72 2e 0a 2a 2a 20 3c 2f 74 61 62 6c 65  eter..** </table
2ead0 3e 0a 2a 2a 0a 2a 2a 20 5e 55 52 49 20 68 65 78  >.**.** ^URI hex
2eae0 61 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20  adecimal escape 
2eaf0 73 65 71 75 65 6e 63 65 73 20 28 25 48 48 29 20  sequences (%HH) 
2eb00 61 72 65 20 73 75 70 70 6f 72 74 65 64 20 77 69  are supported wi
2eb10 74 68 69 6e 20 74 68 65 20 70 61 74 68 20 61 6e  thin the path an
2eb20 64 0a 2a 2a 20 71 75 65 72 79 20 63 6f 6d 70 6f  d.** query compo
2eb30 6e 65 6e 74 73 20 6f 66 20 61 20 55 52 49 2e 20  nents of a URI. 
2eb40 41 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73  A hexadecimal es
2eb50 63 61 70 65 20 73 65 71 75 65 6e 63 65 20 63 6f  cape sequence co
2eb60 6e 73 69 73 74 73 20 6f 66 20 61 0a 2a 2a 20 70  nsists of a.** p
2eb70 65 72 63 65 6e 74 20 73 69 67 6e 20 2d 20 22 25  ercent sign - "%
2eb80 22 20 2d 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  " - followed by 
2eb90 65 78 61 63 74 6c 79 20 74 77 6f 20 68 65 78 61  exactly two hexa
2eba0 64 65 63 69 6d 61 6c 20 64 69 67 69 74 73 20 0a  decimal digits .
2ebb0 2a 2a 20 73 70 65 63 69 66 79 69 6e 67 20 61 6e  ** specifying an
2ebc0 20 6f 63 74 65 74 20 76 61 6c 75 65 2e 20 5e 42   octet value. ^B
2ebd0 65 66 6f 72 65 20 74 68 65 20 70 61 74 68 20 6f  efore the path o
2ebe0 72 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e  r query componen
2ebf0 74 73 20 6f 66 20 61 0a 2a 2a 20 55 52 49 20 66  ts of a.** URI f
2ec00 69 6c 65 6e 61 6d 65 20 61 72 65 20 69 6e 74 65  ilename are inte
2ec10 72 70 72 65 74 65 64 2c 20 74 68 65 79 20 61 72  rpreted, they ar
2ec20 65 20 65 6e 63 6f 64 65 64 20 75 73 69 6e 67 20  e encoded using 
2ec30 55 54 46 2d 38 20 61 6e 64 20 61 6c 6c 20 0a 2a  UTF-8 and all .*
2ec40 2a 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73  * hexadecimal es
2ec50 63 61 70 65 20 73 65 71 75 65 6e 63 65 73 20 72  cape sequences r
2ec60 65 70 6c 61 63 65 64 20 62 79 20 61 20 73 69 6e  eplaced by a sin
2ec70 67 6c 65 20 62 79 74 65 20 63 6f 6e 74 61 69 6e  gle byte contain
2ec80 69 6e 67 20 74 68 65 0a 2a 2a 20 63 6f 72 72 65  ing the.** corre
2ec90 73 70 6f 6e 64 69 6e 67 20 6f 63 74 65 74 2e 20  sponding octet. 
2eca0 49 66 20 74 68 69 73 20 70 72 6f 63 65 73 73 20  If this process 
2ecb0 67 65 6e 65 72 61 74 65 73 20 61 6e 20 69 6e 76  generates an inv
2ecc0 61 6c 69 64 20 55 54 46 2d 38 20 65 6e 63 6f 64  alid UTF-8 encod
2ecd0 69 6e 67 2c 0a 2a 2a 20 74 68 65 20 72 65 73 75  ing,.** the resu
2ece0 6c 74 73 20 61 72 65 20 75 6e 64 65 66 69 6e 65  lts are undefine
2ecf0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65  d..**.** <b>Note
2ed00 20 74 6f 20 57 69 6e 64 6f 77 73 20 75 73 65 72   to Windows user
2ed10 73 3a 3c 2f 62 3e 20 20 54 68 65 20 65 6e 63 6f  s:</b>  The enco
2ed20 64 69 6e 67 20 75 73 65 64 20 66 6f 72 20 74 68  ding used for th
2ed30 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d  e filename argum
2ed40 65 6e 74 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65  ent.** of sqlite
2ed50 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 73 71 6c  3_open() and sql
2ed60 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 6d  ite3_open_v2() m
2ed70 75 73 74 20 62 65 20 55 54 46 2d 38 2c 20 6e 6f  ust be UTF-8, no
2ed80 74 20 77 68 61 74 65 76 65 72 0a 2a 2a 20 63 6f  t whatever.** co
2ed90 64 65 70 61 67 65 20 69 73 20 63 75 72 72 65 6e  depage is curren
2eda0 74 6c 79 20 64 65 66 69 6e 65 64 2e 20 20 46 69  tly defined.  Fi
2edb0 6c 65 6e 61 6d 65 73 20 63 6f 6e 74 61 69 6e 69  lenames containi
2edc0 6e 67 20 69 6e 74 65 72 6e 61 74 69 6f 6e 61 6c  ng international
2edd0 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 73 20 6d  .** characters m
2ede0 75 73 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64  ust be converted
2edf0 20 74 6f 20 55 54 46 2d 38 20 70 72 69 6f 72 20   to UTF-8 prior 
2ee00 74 6f 20 70 61 73 73 69 6e 67 20 74 68 65 6d 20  to passing them 
2ee10 69 6e 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  into.** sqlite3_
2ee20 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69 74 65  open() or sqlite
2ee30 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a  3_open_v2()..**.
2ee40 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74 6f 20 57 69  ** <b>Note to Wi
2ee50 6e 64 6f 77 73 20 52 75 6e 74 69 6d 65 20 75 73  ndows Runtime us
2ee60 65 72 73 3a 3c 2f 62 3e 20 20 54 68 65 20 74 65  ers:</b>  The te
2ee70 6d 70 6f 72 61 72 79 20 64 69 72 65 63 74 6f 72  mporary director
2ee80 79 20 6d 75 73 74 20 62 65 20 73 65 74 0a 2a 2a  y must be set.**
2ee90 20 70 72 69 6f 72 20 74 6f 20 63 61 6c 6c 69 6e   prior to callin
2eea0 67 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  g sqlite3_open()
2eeb0 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   or sqlite3_open
2eec0 5f 76 32 28 29 2e 20 20 4f 74 68 65 72 77 69 73  _v2().  Otherwis
2eed0 65 2c 20 76 61 72 69 6f 75 73 0a 2a 2a 20 66 65  e, various.** fe
2eee0 61 74 75 72 65 73 20 74 68 61 74 20 72 65 71 75  atures that requ
2eef0 69 72 65 20 74 68 65 20 75 73 65 20 6f 66 20 74  ire the use of t
2ef00 65 6d 70 6f 72 61 72 79 20 66 69 6c 65 73 20 6d  emporary files m
2ef10 61 79 20 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 53  ay fail..**.** S
2ef20 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65  ee also: [sqlite
2ef30 33 5f 74 65 6d 70 5f 64 69 72 65 63 74 6f 72 79  3_temp_directory
2ef40 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ].*/.SQLITE_API 
2ef50 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  int sqlite3_open
2ef60 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  (.  const char *
2ef70 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44  filename,   /* D
2ef80 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65  atabase filename
2ef90 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20 20 73 71   (UTF-8) */.  sq
2efa0 6c 69 74 65 33 20 2a 2a 70 70 44 62 20 20 20 20  lite3 **ppDb    
2efb0 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51        /* OUT: SQ
2efc0 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a  Lite db handle *
2efd0 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
2efe0 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  int sqlite3_open
2eff0 31 36 28 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64  16(.  const void
2f000 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a   *filename,   /*
2f010 20 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61   Database filena
2f020 6d 65 20 28 55 54 46 2d 31 36 29 20 2a 2f 0a 20  me (UTF-16) */. 
2f030 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 20   sqlite3 **ppDb 
2f040 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a           /* OUT:
2f050 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c   SQLite db handl
2f060 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  e */.);.SQLITE_A
2f070 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  PI int sqlite3_o
2f080 70 65 6e 5f 76 32 28 0a 20 20 63 6f 6e 73 74 20  pen_v2(.  const 
2f090 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20  char *filename, 
2f0a0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69    /* Database fi
2f0b0 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a  lename (UTF-8) *
2f0c0 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70  /.  sqlite3 **pp
2f0d0 44 62 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 4f  Db,         /* O
2f0e0 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61  UT: SQLite db ha
2f0f0 6e 64 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 66 6c  ndle */.  int fl
2f100 61 67 73 2c 20 20 20 20 20 20 20 20 20 20 20 20  ags,            
2f110 20 20 2f 2a 20 46 6c 61 67 73 20 2a 2f 0a 20 20    /* Flags */.  
2f120 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 56 66 73  const char *zVfs
2f130 20 20 20 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20          /* Name 
2f140 6f 66 20 56 46 53 20 6d 6f 64 75 6c 65 20 74 6f  of VFS module to
2f150 20 75 73 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a   use */.);../*.*
2f160 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 62 74 61  * CAPI3REF: Obta
2f170 69 6e 20 56 61 6c 75 65 73 20 46 6f 72 20 55 52  in Values For UR
2f180 49 20 50 61 72 61 6d 65 74 65 72 73 0a 2a 2a 0a  I Parameters.**.
2f190 2a 2a 20 54 68 65 73 65 20 61 72 65 20 75 74 69  ** These are uti
2f1a0 6c 69 74 79 20 72 6f 75 74 69 6e 65 73 2c 20 75  lity routines, u
2f1b0 73 65 66 75 6c 20 74 6f 20 56 46 53 20 69 6d 70  seful to VFS imp
2f1c0 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2c 20 74 68  lementations, th
2f1d0 61 74 20 63 68 65 63 6b 0a 2a 2a 20 74 6f 20 73  at check.** to s
2f1e0 65 65 20 69 66 20 61 20 64 61 74 61 62 61 73 65  ee if a database
2f1f0 20 66 69 6c 65 20 77 61 73 20 61 20 55 52 49 20   file was a URI 
2f200 74 68 61 74 20 63 6f 6e 74 61 69 6e 65 64 20 61  that contained a
2f210 20 73 70 65 63 69 66 69 63 20 71 75 65 72 79 20   specific query 
2f220 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 2c 20 61  .** parameter, a
2f230 6e 64 20 69 66 20 73 6f 20 6f 62 74 61 69 6e 73  nd if so obtains
2f240 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
2f250 61 74 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  at query paramet
2f260 65 72 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 46 20 69  er..**.** If F i
2f270 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  s the database f
2f280 69 6c 65 6e 61 6d 65 20 70 6f 69 6e 74 65 72 20  ilename pointer 
2f290 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20  passed into the 
2f2a0 78 4f 70 65 6e 28 29 20 6d 65 74 68 6f 64 20 6f  xOpen() method o
2f2b0 66 20 0a 2a 2a 20 61 20 56 46 53 20 69 6d 70 6c  f .** a VFS impl
2f2c0 65 6d 65 6e 74 61 74 69 6f 6e 20 77 68 65 6e 20  ementation when 
2f2d0 74 68 65 20 66 6c 61 67 73 20 70 61 72 61 6d 65  the flags parame
2f2e0 74 65 72 20 74 6f 20 78 4f 70 65 6e 28 29 20 68  ter to xOpen() h
2f2f0 61 73 20 6f 6e 65 20 6f 72 20 0a 2a 2a 20 6d 6f  as one or .** mo
2f300 72 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54  re of the [SQLIT
2f310 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 6f 72 20 5b  E_OPEN_URI] or [
2f320 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e  SQLITE_OPEN_MAIN
2f330 5f 44 42 5d 20 62 69 74 73 20 73 65 74 20 61 6e  _DB] bits set an
2f340 64 0a 2a 2a 20 50 20 69 73 20 74 68 65 20 6e 61  d.** P is the na
2f350 6d 65 20 6f 66 20 74 68 65 20 71 75 65 72 79 20  me of the query 
2f360 70 61 72 61 6d 65 74 65 72 2c 20 74 68 65 6e 0a  parameter, then.
2f370 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 70  ** sqlite3_uri_p
2f380 61 72 61 6d 65 74 65 72 28 46 2c 50 29 20 72 65  arameter(F,P) re
2f390 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20  turns the value 
2f3a0 6f 66 20 74 68 65 20 50 0a 2a 2a 20 70 61 72 61  of the P.** para
2f3b0 6d 65 74 65 72 20 69 66 20 69 74 20 65 78 69 73  meter if it exis
2f3c0 74 73 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69  ts or a NULL poi
2f3d0 6e 74 65 72 20 69 66 20 50 20 64 6f 65 73 20 6e  nter if P does n
2f3e0 6f 74 20 61 70 70 65 61 72 20 61 73 20 61 20 0a  ot appear as a .
2f3f0 2a 2a 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  ** query paramet
2f400 65 72 20 6f 6e 20 46 2e 20 20 49 66 20 50 20 69  er on F.  If P i
2f410 73 20 61 20 71 75 65 72 79 20 70 61 72 61 6d 65  s a query parame
2f420 74 65 72 20 6f 66 20 46 0a 2a 2a 20 68 61 73 20  ter of F.** has 
2f430 6e 6f 20 65 78 70 6c 69 63 69 74 20 76 61 6c 75  no explicit valu
2f440 65 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  e, then sqlite3_
2f450 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28 46 2c  uri_parameter(F,
2f460 50 29 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 20  P) returns.** a 
2f470 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 65 6d  pointer to an em
2f480 70 74 79 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a  pty string..**.*
2f490 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72  * The sqlite3_ur
2f4a0 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29  i_boolean(F,P,B)
2f4b0 20 72 6f 75 74 69 6e 65 20 61 73 73 75 6d 65 73   routine assumes
2f4c0 20 74 68 61 74 20 50 20 69 73 20 61 20 62 6f 6f   that P is a boo
2f4d0 6c 65 61 6e 0a 2a 2a 20 70 61 72 61 6d 65 74 65  lean.** paramete
2f4e0 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 72  r and returns tr
2f4f0 75 65 20 28 31 29 20 6f 72 20 66 61 6c 73 65 20  ue (1) or false 
2f500 28 30 29 20 61 63 63 6f 72 64 69 6e 67 20 74 6f  (0) according to
2f510 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a 20 6f 66   the value.** of
2f520 20 50 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33   P.  The sqlite3
2f530 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50  _uri_boolean(F,P
2f540 2c 42 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75  ,B) routine retu
2f550 72 6e 73 20 74 72 75 65 20 28 31 29 20 69 66 20  rns true (1) if 
2f560 74 68 65 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20  the.** value of 
2f570 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20  query parameter 
2f580 50 20 69 73 20 6f 6e 65 20 6f 66 20 22 79 65 73  P is one of "yes
2f590 22 2c 20 22 74 72 75 65 22 2c 20 6f 72 20 22 6f  ", "true", or "o
2f5a0 6e 22 20 69 6e 20 61 6e 79 0a 2a 2a 20 63 61 73  n" in any.** cas
2f5b0 65 20 6f 72 20 69 66 20 74 68 65 20 76 61 6c 75  e or if the valu
2f5c0 65 20 62 65 67 69 6e 73 20 77 69 74 68 20 61 20  e begins with a 
2f5d0 6e 6f 6e 2d 7a 65 72 6f 20 6e 75 6d 62 65 72 2e  non-zero number.
2f5e0 20 20 54 68 65 20 0a 2a 2a 20 73 71 6c 69 74 65    The .** sqlite
2f5f0 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c  3_uri_boolean(F,
2f600 50 2c 42 29 20 72 6f 75 74 69 6e 65 73 20 72 65  P,B) routines re
2f610 74 75 72 6e 73 20 66 61 6c 73 65 20 28 30 29 20  turns false (0) 
2f620 69 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a  if the value of.
2f630 2a 2a 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  ** query paramet
2f640 65 72 20 50 20 69 73 20 6f 6e 65 20 6f 66 20 22  er P is one of "
2f650 6e 6f 22 2c 20 22 66 61 6c 73 65 22 2c 20 6f 72  no", "false", or
2f660 20 22 6f 66 66 22 20 69 6e 20 61 6e 79 20 63 61   "off" in any ca
2f670 73 65 20 6f 72 0a 2a 2a 20 69 66 20 74 68 65 20  se or.** if the 
2f680 76 61 6c 75 65 20 62 65 67 69 6e 73 20 77 69 74  value begins wit
2f690 68 20 61 20 6e 75 6d 65 72 69 63 20 7a 65 72 6f  h a numeric zero
2f6a0 2e 20 20 49 66 20 50 20 69 73 20 6e 6f 74 20 61  .  If P is not a
2f6b0 20 71 75 65 72 79 0a 2a 2a 20 70 61 72 61 6d 65   query.** parame
2f6c0 74 65 72 20 6f 6e 20 46 20 6f 72 20 69 66 20 74  ter on F or if t
2f6d0 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69 73  he value of P is
2f6e0 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20   does not match 
2f6f0 61 6e 79 20 6f 66 20 74 68 65 0a 2a 2a 20 61 62  any of the.** ab
2f700 6f 76 65 2c 20 74 68 65 6e 20 73 71 6c 69 74 65  ove, then sqlite
2f710 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c  3_uri_boolean(F,
2f720 50 2c 42 29 20 72 65 74 75 72 6e 73 20 28 42 21  P,B) returns (B!
2f730 3d 30 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  =0)..**.** The s
2f740 71 6c 69 74 65 33 5f 75 72 69 5f 69 6e 74 36 34  qlite3_uri_int64
2f750 28 46 2c 50 2c 44 29 20 72 6f 75 74 69 6e 65 20  (F,P,D) routine 
2f760 63 6f 6e 76 65 72 74 73 20 74 68 65 20 76 61 6c  converts the val
2f770 75 65 20 6f 66 20 50 20 69 6e 74 6f 20 61 0a 2a  ue of P into a.*
2f780 2a 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64 20  * 64-bit signed 
2f790 69 6e 74 65 67 65 72 20 61 6e 64 20 72 65 74 75  integer and retu
2f7a0 72 6e 73 20 74 68 61 74 20 69 6e 74 65 67 65 72  rns that integer
2f7b0 2c 20 6f 72 20 44 20 69 66 20 50 20 64 6f 65 73  , or D if P does
2f7c0 20 6e 6f 74 0a 2a 2a 20 65 78 69 73 74 2e 20 20   not.** exist.  
2f7d0 49 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20  If the value of 
2f7e0 50 20 69 73 20 73 6f 6d 65 74 68 69 6e 67 20 6f  P is something o
2f7f0 74 68 65 72 20 74 68 61 6e 20 61 6e 20 69 6e 74  ther than an int
2f800 65 67 65 72 2c 20 74 68 65 6e 0a 2a 2a 20 7a 65  eger, then.** ze
2f810 72 6f 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a  ro is returned..
2f820 2a 2a 20 0a 2a 2a 20 49 66 20 46 20 69 73 20 61  ** .** If F is a
2f830 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 74   NULL pointer, t
2f840 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f  hen sqlite3_uri_
2f850 70 61 72 61 6d 65 74 65 72 28 46 2c 50 29 20 72  parameter(F,P) r
2f860 65 74 75 72 6e 73 20 4e 55 4c 4c 20 61 6e 64 0a  eturns NULL and.
2f870 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62  ** sqlite3_uri_b
2f880 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 65  oolean(F,P,B) re
2f890 74 75 72 6e 73 20 42 2e 20 20 49 66 20 46 20 69  turns B.  If F i
2f8a0 73 20 6e 6f 74 20 61 20 4e 55 4c 4c 20 70 6f 69  s not a NULL poi
2f8b0 6e 74 65 72 20 61 6e 64 0a 2a 2a 20 69 73 20 6e  nter and.** is n
2f8c0 6f 74 20 61 20 64 61 74 61 62 61 73 65 20 66 69  ot a database fi
2f8d0 6c 65 20 70 61 74 68 6e 61 6d 65 20 70 6f 69 6e  le pathname poin
2f8e0 74 65 72 20 74 68 61 74 20 53 51 4c 69 74 65 20  ter that SQLite 
2f8f0 70 61 73 73 65 64 20 69 6e 74 6f 20 74 68 65 20  passed into the 
2f900 78 4f 70 65 6e 0a 2a 2a 20 56 46 53 20 6d 65 74  xOpen.** VFS met
2f910 68 6f 64 2c 20 74 68 65 6e 20 74 68 65 20 62 65  hod, then the be
2f920 68 61 76 69 6f 72 20 6f 66 20 74 68 69 73 20 72  havior of this r
2f930 6f 75 74 69 6e 65 20 69 73 20 75 6e 64 65 66 69  outine is undefi
2f940 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79  ned and probably
2f950 0a 2a 2a 20 75 6e 64 65 73 69 72 61 62 6c 65 2e  .** undesirable.
2f960 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  .*/.SQLITE_API c
2f970 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
2f980 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72  e3_uri_parameter
2f990 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69  (const char *zFi
2f9a0 6c 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68  lename, const ch
2f9b0 61 72 20 2a 7a 50 61 72 61 6d 29 3b 0a 53 51 4c  ar *zParam);.SQL
2f9c0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
2f9d0 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28  te3_uri_boolean(
2f9e0 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69 6c  const char *zFil
2f9f0 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  e, const char *z
2fa00 50 61 72 61 6d 2c 20 69 6e 74 20 62 44 65 66 61  Param, int bDefa
2fa10 75 6c 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  ult);.SQLITE_API
2fa20 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73   sqlite3_int64 s
2fa30 71 6c 69 74 65 33 5f 75 72 69 5f 69 6e 74 36 34  qlite3_uri_int64
2fa40 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 63 6f  (const char*, co
2fa50 6e 73 74 20 63 68 61 72 2a 2c 20 73 71 6c 69 74  nst char*, sqlit
2fa60 65 33 5f 69 6e 74 36 34 29 3b 0a 0a 0a 2f 2a 0a  e3_int64);.../*.
2fa70 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 72 72  ** CAPI3REF: Err
2fa80 6f 72 20 43 6f 64 65 73 20 41 6e 64 20 4d 65 73  or Codes And Mes
2fa90 73 61 67 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  sages.** METHOD:
2faa0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
2fab0 49 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  If the most rece
2fac0 6e 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49  nt sqlite3_* API
2fad0 20 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64   call associated
2fae0 20 77 69 74 68 20 0a 2a 2a 20 5b 64 61 74 61 62   with .** [datab
2faf0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
2fb00 44 20 66 61 69 6c 65 64 2c 20 74 68 65 6e 20 74  D failed, then t
2fb10 68 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f  he sqlite3_errco
2fb20 64 65 28 44 29 20 69 6e 74 65 72 66 61 63 65 0a  de(D) interface.
2fb30 2a 2a 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  ** returns the n
2fb40 75 6d 65 72 69 63 20 5b 72 65 73 75 6c 74 20 63  umeric [result c
2fb50 6f 64 65 5d 20 6f 72 20 5b 65 78 74 65 6e 64 65  ode] or [extende
2fb60 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 66  d result code] f
2fb70 6f 72 20 74 68 61 74 0a 2a 2a 20 41 50 49 20 63  or that.** API c
2fb80 61 6c 6c 2e 0a 2a 2a 20 49 66 20 74 68 65 20 6d  all..** If the m
2fb90 6f 73 74 20 72 65 63 65 6e 74 20 41 50 49 20 63  ost recent API c
2fba0 61 6c 6c 20 77 61 73 20 73 75 63 63 65 73 73 66  all was successf
2fbb0 75 6c 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  ul,.** then the 
2fbc0 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f  return value fro
2fbd0 6d 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  m sqlite3_errcod
2fbe0 65 28 29 20 69 73 20 75 6e 64 65 66 69 6e 65 64  e() is undefined
2fbf0 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  ..** ^The sqlite
2fc00 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f  3_extended_errco
2fc10 64 65 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63  de().** interfac
2fc20 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 65 78  e is the same ex
2fc30 63 65 70 74 20 74 68 61 74 20 69 74 20 61 6c 77  cept that it alw
2fc40 61 79 73 20 72 65 74 75 72 6e 73 20 74 68 65 20  ays returns the 
2fc50 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65  .** [extended re
2fc60 73 75 6c 74 20 63 6f 64 65 5d 20 65 76 65 6e 20  sult code] even 
2fc70 77 68 65 6e 20 65 78 74 65 6e 64 65 64 20 72 65  when extended re
2fc80 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65 0a 2a  sult codes are.*
2fc90 2a 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a 0a 2a  * disabled..**.*
2fca0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
2fcb0 72 72 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69  rrmsg() and sqli
2fcc0 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29 20 72  te3_errmsg16() r
2fcd0 65 74 75 72 6e 20 45 6e 67 6c 69 73 68 2d 6c 61  eturn English-la
2fce0 6e 67 75 61 67 65 0a 2a 2a 20 74 65 78 74 20 74  nguage.** text t
2fcf0 68 61 74 20 64 65 73 63 72 69 62 65 73 20 74 68  hat describes th
2fd00 65 20 65 72 72 6f 72 2c 20 61 73 20 65 69 74 68  e error, as eith
2fd10 65 72 20 55 54 46 2d 38 20 6f 72 20 55 54 46 2d  er UTF-8 or UTF-
2fd20 31 36 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e  16 respectively.
2fd30 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f 20  .** ^(Memory to 
2fd40 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d  hold the error m
2fd50 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69 73  essage string is
2fd60 20 6d 61 6e 61 67 65 64 20 69 6e 74 65 72 6e 61   managed interna
2fd70 6c 6c 79 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c  lly..** The appl
2fd80 69 63 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74  ication does not
2fd90 20 6e 65 65 64 20 74 6f 20 77 6f 72 72 79 20 61   need to worry a
2fda0 62 6f 75 74 20 66 72 65 65 69 6e 67 20 74 68 65  bout freeing the
2fdb0 20 72 65 73 75 6c 74 2e 0a 2a 2a 20 48 6f 77 65   result..** Howe
2fdc0 76 65 72 2c 20 74 68 65 20 65 72 72 6f 72 20 73  ver, the error s
2fdd0 74 72 69 6e 67 20 6d 69 67 68 74 20 62 65 20 6f  tring might be o
2fde0 76 65 72 77 72 69 74 74 65 6e 20 6f 72 20 64 65  verwritten or de
2fdf0 61 6c 6c 6f 63 61 74 65 64 20 62 79 0a 2a 2a 20  allocated by.** 
2fe00 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73  subsequent calls
2fe10 20 74 6f 20 6f 74 68 65 72 20 53 51 4c 69 74 65   to other SQLite
2fe20 20 69 6e 74 65 72 66 61 63 65 20 66 75 6e 63 74   interface funct
2fe30 69 6f 6e 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54  ions.)^.**.** ^T
2fe40 68 65 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74  he sqlite3_errst
2fe50 72 28 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  r() interface re
2fe60 74 75 72 6e 73 20 74 68 65 20 45 6e 67 6c 69 73  turns the Englis
2fe70 68 2d 6c 61 6e 67 75 61 67 65 20 74 65 78 74 0a  h-language text.
2fe80 2a 2a 20 74 68 61 74 20 64 65 73 63 72 69 62 65  ** that describe
2fe90 73 20 74 68 65 20 5b 72 65 73 75 6c 74 20 63 6f  s the [result co
2fea0 64 65 5d 2c 20 61 73 20 55 54 46 2d 38 2e 0a 2a  de], as UTF-8..*
2feb0 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f 20 68 6f  * ^(Memory to ho
2fec0 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ld the error mes
2fed0 73 61 67 65 20 73 74 72 69 6e 67 20 69 73 20 6d  sage string is m
2fee0 61 6e 61 67 65 64 20 69 6e 74 65 72 6e 61 6c 6c  anaged internall
2fef0 79 0a 2a 2a 20 61 6e 64 20 6d 75 73 74 20 6e 6f  y.** and must no
2ff00 74 20 62 65 20 66 72 65 65 64 20 62 79 20 74 68  t be freed by th
2ff10 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 29 5e 2e  e application)^.
2ff20 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20  .**.** When the 
2ff30 73 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65  serialized [thre
2ff40 61 64 69 6e 67 20 6d 6f 64 65 5d 20 69 73 20 69  ading mode] is i
2ff50 6e 20 75 73 65 2c 20 69 74 20 6d 69 67 68 74 20  n use, it might 
2ff60 62 65 20 74 68 65 0a 2a 2a 20 63 61 73 65 20 74  be the.** case t
2ff70 68 61 74 20 61 20 73 65 63 6f 6e 64 20 65 72 72  hat a second err
2ff80 6f 72 20 6f 63 63 75 72 73 20 6f 6e 20 61 20 73  or occurs on a s
2ff90 65 70 61 72 61 74 65 20 74 68 72 65 61 64 20 69  eparate thread i
2ffa0 6e 20 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68 65  n between.** the
2ffb0 20 74 69 6d 65 20 6f 66 20 74 68 65 20 66 69 72   time of the fir
2ffc0 73 74 20 65 72 72 6f 72 20 61 6e 64 20 74 68 65  st error and the
2ffd0 20 63 61 6c 6c 20 74 6f 20 74 68 65 73 65 20 69   call to these i
2ffe0 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a 20 57 68  nterfaces..** Wh
2fff0 65 6e 20 74 68 61 74 20 68 61 70 70 65 6e 73 2c  en that happens,
30000 20 74 68 65 20 73 65 63 6f 6e 64 20 65 72 72 6f   the second erro
30010 72 20 77 69 6c 6c 20 62 65 20 72 65 70 6f 72 74  r will be report
30020 65 64 20 73 69 6e 63 65 20 74 68 65 73 65 0a 2a  ed since these.*
30030 2a 20 69 6e 74 65 72 66 61 63 65 73 20 61 6c 77  * interfaces alw
30040 61 79 73 20 72 65 70 6f 72 74 20 74 68 65 20 6d  ays report the m
30050 6f 73 74 20 72 65 63 65 6e 74 20 72 65 73 75 6c  ost recent resul
30060 74 2e 20 20 54 6f 20 61 76 6f 69 64 0a 2a 2a 20  t.  To avoid.** 
30070 74 68 69 73 2c 20 65 61 63 68 20 74 68 72 65 61  this, each threa
30080 64 20 63 61 6e 20 6f 62 74 61 69 6e 20 65 78 63  d can obtain exc
30090 6c 75 73 69 76 65 20 75 73 65 20 6f 66 20 74 68  lusive use of th
300a0 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
300b0 65 63 74 69 6f 6e 5d 20 44 0a 2a 2a 20 62 79 20  ection] D.** by 
300c0 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65  invoking [sqlite
300d0 33 5f 6d 75 74 65 78 5f 65 6e 74 65 72 5d 28 5b  3_mutex_enter]([
300e0 73 71 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65 78  sqlite3_db_mutex
300f0 5d 28 44 29 29 20 62 65 66 6f 72 65 20 62 65 67  ](D)) before beg
30100 69 6e 6e 69 6e 67 0a 2a 2a 20 74 6f 20 75 73 65  inning.** to use
30110 20 44 20 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 20   D and invoking 
30120 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6c  [sqlite3_mutex_l
30130 65 61 76 65 5d 28 5b 73 71 6c 69 74 65 33 5f 64  eave]([sqlite3_d
30140 62 5f 6d 75 74 65 78 5d 28 44 29 29 20 61 66 74  b_mutex](D)) aft
30150 65 72 0a 2a 2a 20 61 6c 6c 20 63 61 6c 6c 73 20  er.** all calls 
30160 74 6f 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  to the interface
30170 73 20 6c 69 73 74 65 64 20 68 65 72 65 20 61 72  s listed here ar
30180 65 20 63 6f 6d 70 6c 65 74 65 64 2e 0a 2a 2a 0a  e completed..**.
30190 2a 2a 20 49 66 20 61 6e 20 69 6e 74 65 72 66 61  ** If an interfa
301a0 63 65 20 66 61 69 6c 73 20 77 69 74 68 20 53 51  ce fails with SQ
301b0 4c 49 54 45 5f 4d 49 53 55 53 45 2c 20 74 68 61  LITE_MISUSE, tha
301c0 74 20 6d 65 61 6e 73 20 74 68 65 20 69 6e 74 65  t means the inte
301d0 72 66 61 63 65 0a 2a 2a 20 77 61 73 20 69 6e 76  rface.** was inv
301e0 6f 6b 65 64 20 69 6e 63 6f 72 72 65 63 74 6c 79  oked incorrectly
301f0 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74   by the applicat
30200 69 6f 6e 2e 20 20 49 6e 20 74 68 61 74 20 63 61  ion.  In that ca
30210 73 65 2c 20 74 68 65 0a 2a 2a 20 65 72 72 6f 72  se, the.** error
30220 20 63 6f 64 65 20 61 6e 64 20 6d 65 73 73 61 67   code and messag
30230 65 20 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74  e may or may not
30240 20 62 65 20 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49   be set..*/.SQLI
30250 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
30260 65 33 5f 65 72 72 63 6f 64 65 28 73 71 6c 69 74  e3_errcode(sqlit
30270 65 33 20 2a 64 62 29 3b 0a 53 51 4c 49 54 45 5f  e3 *db);.SQLITE_
30280 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
30290 65 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65  extended_errcode
302a0 28 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a 53  (sqlite3 *db);.S
302b0 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20  QLITE_API const 
302c0 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72  char *sqlite3_er
302d0 72 6d 73 67 28 73 71 6c 69 74 65 33 2a 29 3b 0a  rmsg(sqlite3*);.
302e0 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74  SQLITE_API const
302f0 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 65   void *sqlite3_e
30300 72 72 6d 73 67 31 36 28 73 71 6c 69 74 65 33 2a  rrmsg16(sqlite3*
30310 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  );.SQLITE_API co
30320 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
30330 33 5f 65 72 72 73 74 72 28 69 6e 74 29 3b 0a 0a  3_errstr(int);..
30340 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
30350 50 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65  Prepared Stateme
30360 6e 74 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b 45 59  nt Object.** KEY
30370 57 4f 52 44 53 3a 20 7b 70 72 65 70 61 72 65 64  WORDS: {prepared
30380 20 73 74 61 74 65 6d 65 6e 74 7d 20 7b 70 72 65   statement} {pre
30390 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
303a0 7d 0a 2a 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61  }.**.** An insta
303b0 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  nce of this obje
303c0 63 74 20 72 65 70 72 65 73 65 6e 74 73 20 61 20  ct represents a 
303d0 73 69 6e 67 6c 65 20 53 51 4c 20 73 74 61 74 65  single SQL state
303e0 6d 65 6e 74 20 74 68 61 74 0a 2a 2a 20 68 61 73  ment that.** has
303f0 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69   been compiled i
30400 6e 74 6f 20 62 69 6e 61 72 79 20 66 6f 72 6d 20  nto binary form 
30410 61 6e 64 20 69 73 20 72 65 61 64 79 20 74 6f 20  and is ready to 
30420 62 65 20 65 76 61 6c 75 61 74 65 64 2e 0a 2a 2a  be evaluated..**
30430 0a 2a 2a 20 54 68 69 6e 6b 20 6f 66 20 65 61 63  .** Think of eac
30440 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  h SQL statement 
30450 61 73 20 61 20 73 65 70 61 72 61 74 65 20 63 6f  as a separate co
30460 6d 70 75 74 65 72 20 70 72 6f 67 72 61 6d 2e 20  mputer program. 
30470 20 54 68 65 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c   The.** original
30480 20 53 51 4c 20 74 65 78 74 20 69 73 20 73 6f 75   SQL text is sou
30490 72 63 65 20 63 6f 64 65 2e 20 20 41 20 70 72 65  rce code.  A pre
304a0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
304b0 6f 62 6a 65 63 74 20 0a 2a 2a 20 69 73 20 74 68  object .** is th
304c0 65 20 63 6f 6d 70 69 6c 65 64 20 6f 62 6a 65 63  e compiled objec
304d0 74 20 63 6f 64 65 2e 20 20 41 6c 6c 20 53 51 4c  t code.  All SQL
304e0 20 6d 75 73 74 20 62 65 20 63 6f 6e 76 65 72 74   must be convert
304f0 65 64 20 69 6e 74 6f 20 61 0a 2a 2a 20 70 72 65  ed into a.** pre
30500 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
30510 62 65 66 6f 72 65 20 69 74 20 63 61 6e 20 62 65  before it can be
30520 20 72 75 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20   run..**.** The 
30530 6c 69 66 65 2d 63 79 63 6c 65 20 6f 66 20 61 20  life-cycle of a 
30540 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
30550 6e 74 20 6f 62 6a 65 63 74 20 75 73 75 61 6c 6c  nt object usuall
30560 79 20 67 6f 65 73 20 6c 69 6b 65 20 74 68 69 73  y goes like this
30570 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20  :.**.** <ol>.** 
30580 3c 6c 69 3e 20 43 72 65 61 74 65 20 74 68 65 20  <li> Create the 
30590 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
305a0 6e 74 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20  nt object using 
305b0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
305c0 5f 76 32 28 29 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20  _v2()]..** <li> 
305d0 42 69 6e 64 20 76 61 6c 75 65 73 20 74 6f 20 5b  Bind values to [
305e0 70 61 72 61 6d 65 74 65 72 73 5d 20 75 73 69 6e  parameters] usin
305f0 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69  g the sqlite3_bi
30600 6e 64 5f 2a 28 29 0a 2a 2a 20 20 20 20 20 20 69  nd_*().**      i
30610 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a 20 3c 6c  nterfaces..** <l
30620 69 3e 20 52 75 6e 20 74 68 65 20 53 51 4c 20 62  i> Run the SQL b
30630 79 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74  y calling [sqlit
30640 65 33 5f 73 74 65 70 28 29 5d 20 6f 6e 65 20 6f  e3_step()] one o
30650 72 20 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a 2a  r more times..**
30660 20 3c 6c 69 3e 20 52 65 73 65 74 20 74 68 65 20   <li> Reset the 
30670 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
30680 6e 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  nt using [sqlite
30690 33 5f 72 65 73 65 74 28 29 5d 20 74 68 65 6e 20  3_reset()] then 
306a0 67 6f 20 62 61 63 6b 0a 2a 2a 20 20 20 20 20 20  go back.**      
306b0 74 6f 20 73 74 65 70 20 32 2e 20 20 44 6f 20 74  to step 2.  Do t
306c0 68 69 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65  his zero or more
306d0 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20   times..** <li> 
306e0 44 65 73 74 72 6f 79 20 74 68 65 20 6f 62 6a 65  Destroy the obje
306f0 63 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ct using [sqlite
30700 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 2e 0a 2a  3_finalize()]..*
30710 2a 20 3c 2f 6f 6c 3e 0a 2a 2f 0a 74 79 70 65 64  * </ol>.*/.typed
30720 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
30730 33 5f 73 74 6d 74 20 73 71 6c 69 74 65 33 5f 73  3_stmt sqlite3_s
30740 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  tmt;../*.** CAPI
30750 33 52 45 46 3a 20 52 75 6e 2d 74 69 6d 65 20 4c  3REF: Run-time L
30760 69 6d 69 74 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  imits.** METHOD:
30770 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
30780 28 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20  (This interface 
30790 61 6c 6c 6f 77 73 20 74 68 65 20 73 69 7a 65 20  allows the size 
307a0 6f 66 20 76 61 72 69 6f 75 73 20 63 6f 6e 73 74  of various const
307b0 72 75 63 74 73 20 74 6f 20 62 65 20 6c 69 6d 69  ructs to be limi
307c0 74 65 64 0a 2a 2a 20 6f 6e 20 61 20 63 6f 6e 6e  ted.** on a conn
307d0 65 63 74 69 6f 6e 20 62 79 20 63 6f 6e 6e 65 63  ection by connec
307e0 74 69 6f 6e 20 62 61 73 69 73 2e 20 20 54 68 65  tion basis.  The
307f0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
30800 20 69 73 20 74 68 65 0a 2a 2a 20 5b 64 61 74 61   is the.** [data
30810 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
30820 20 77 68 6f 73 65 20 6c 69 6d 69 74 20 69 73 20   whose limit is 
30830 74 6f 20 62 65 20 73 65 74 20 6f 72 20 71 75 65  to be set or que
30840 72 69 65 64 2e 20 20 54 68 65 0a 2a 2a 20 73 65  ried.  The.** se
30850 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
30860 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 5b 6c 69  s one of the [li
30870 6d 69 74 20 63 61 74 65 67 6f 72 69 65 73 5d 20  mit categories] 
30880 74 68 61 74 20 64 65 66 69 6e 65 20 61 0a 2a 2a  that define a.**
30890 20 63 6c 61 73 73 20 6f 66 20 63 6f 6e 73 74 72   class of constr
308a0 75 63 74 73 20 74 6f 20 62 65 20 73 69 7a 65 20  ucts to be size 
308b0 6c 69 6d 69 74 65 64 2e 20 20 54 68 65 20 74 68  limited.  The th
308c0 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ird parameter is
308d0 20 74 68 65 0a 2a 2a 20 6e 65 77 20 6c 69 6d 69   the.** new limi
308e0 74 20 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74  t for that const
308f0 72 75 63 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 49  ruct.)^.**.** ^I
30900 66 20 74 68 65 20 6e 65 77 20 6c 69 6d 69 74 20  f the new limit 
30910 69 73 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75  is a negative nu
30920 6d 62 65 72 2c 20 74 68 65 20 6c 69 6d 69 74 20  mber, the limit 
30930 69 73 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  is unchanged..**
30940 20 5e 28 46 6f 72 20 65 61 63 68 20 6c 69 6d 69   ^(For each limi
30950 74 20 63 61 74 65 67 6f 72 79 20 53 51 4c 49 54  t category SQLIT
30960 45 5f 4c 49 4d 49 54 5f 3c 69 3e 4e 41 4d 45 3c  E_LIMIT_<i>NAME<
30970 2f 69 3e 20 74 68 65 72 65 20 69 73 20 61 20 0a  /i> there is a .
30980 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c 20 68 61 72  ** [limits | har
30990 64 20 75 70 70 65 72 20 62 6f 75 6e 64 5d 0a 2a  d upper bound].*
309a0 2a 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c 65  * set at compile
309b0 2d 74 69 6d 65 20 62 79 20 61 20 43 20 70 72 65  -time by a C pre
309c0 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
309d0 63 61 6c 6c 65 64 0a 2a 2a 20 5b 6c 69 6d 69 74  called.** [limit
309e0 73 20 7c 20 53 51 4c 49 54 45 5f 4d 41 58 5f 3c  s | SQLITE_MAX_<
309f0 69 3e 4e 41 4d 45 3c 2f 69 3e 5d 2e 0a 2a 2a 20  i>NAME</i>]..** 
30a00 28 54 68 65 20 22 5f 4c 49 4d 49 54 5f 22 20 69  (The "_LIMIT_" i
30a10 6e 20 74 68 65 20 6e 61 6d 65 20 69 73 20 63 68  n the name is ch
30a20 61 6e 67 65 64 20 74 6f 20 22 5f 4d 41 58 5f 22  anged to "_MAX_"
30a30 2e 29 29 5e 0a 2a 2a 20 5e 41 74 74 65 6d 70 74  .))^.** ^Attempt
30a40 73 20 74 6f 20 69 6e 63 72 65 61 73 65 20 61 20  s to increase a 
30a50 6c 69 6d 69 74 20 61 62 6f 76 65 20 69 74 73 20  limit above its 
30a60 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64  hard upper bound
30a70 20 61 72 65 0a 2a 2a 20 73 69 6c 65 6e 74 6c 79   are.** silently
30a80 20 74 72 75 6e 63 61 74 65 64 20 74 6f 20 74 68   truncated to th
30a90 65 20 68 61 72 64 20 75 70 70 65 72 20 62 6f 75  e hard upper bou
30aa0 6e 64 2e 0a 2a 2a 0a 2a 2a 20 5e 52 65 67 61 72  nd..**.** ^Regar
30ab0 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72  dless of whether
30ac0 20 6f 72 20 6e 6f 74 20 74 68 65 20 6c 69 6d 69   or not the limi
30ad0 74 20 77 61 73 20 63 68 61 6e 67 65 64 2c 20 74  t was changed, t
30ae0 68 65 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  he .** [sqlite3_
30af0 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61  limit()] interfa
30b00 63 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 70  ce returns the p
30b10 72 69 6f 72 20 76 61 6c 75 65 20 6f 66 20 74 68  rior value of th
30b20 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20 5e 48 65 6e  e limit..** ^Hen
30b30 63 65 2c 20 74 6f 20 66 69 6e 64 20 74 68 65 20  ce, to find the 
30b40 63 75 72 72 65 6e 74 20 76 61 6c 75 65 20 6f 66  current value of
30b50 20 61 20 6c 69 6d 69 74 20 77 69 74 68 6f 75 74   a limit without
30b60 20 63 68 61 6e 67 69 6e 67 20 69 74 2c 0a 2a 2a   changing it,.**
30b70 20 73 69 6d 70 6c 79 20 69 6e 76 6f 6b 65 20 74   simply invoke t
30b80 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 77 69  his interface wi
30b90 74 68 20 74 68 65 20 74 68 69 72 64 20 70 61 72  th the third par
30ba0 61 6d 65 74 65 72 20 73 65 74 20 74 6f 20 2d 31  ameter set to -1
30bb0 2e 0a 2a 2a 0a 2a 2a 20 52 75 6e 2d 74 69 6d 65  ..**.** Run-time
30bc0 20 6c 69 6d 69 74 73 20 61 72 65 20 69 6e 74 65   limits are inte
30bd0 6e 64 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20  nded for use in 
30be0 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61  applications tha
30bf0 74 20 6d 61 6e 61 67 65 0a 2a 2a 20 62 6f 74 68  t manage.** both
30c00 20 74 68 65 69 72 20 6f 77 6e 20 69 6e 74 65 72   their own inter
30c10 6e 61 6c 20 64 61 74 61 62 61 73 65 20 61 6e 64  nal database and
30c20 20 61 6c 73 6f 20 64 61 74 61 62 61 73 65 73 20   also databases 
30c30 74 68 61 74 20 61 72 65 20 63 6f 6e 74 72 6f 6c  that are control
30c40 6c 65 64 0a 2a 2a 20 62 79 20 75 6e 74 72 75 73  led.** by untrus
30c50 74 65 64 20 65 78 74 65 72 6e 61 6c 20 73 6f 75  ted external sou
30c60 72 63 65 73 2e 20 20 41 6e 20 65 78 61 6d 70 6c  rces.  An exampl
30c70 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 69  e application mi
30c80 67 68 74 20 62 65 20 61 0a 2a 2a 20 77 65 62 20  ght be a.** web 
30c90 62 72 6f 77 73 65 72 20 74 68 61 74 20 68 61 73  browser that has
30ca0 20 69 74 73 20 6f 77 6e 20 64 61 74 61 62 61 73   its own databas
30cb0 65 73 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 68  es for storing h
30cc0 69 73 74 6f 72 79 20 61 6e 64 0a 2a 2a 20 73 65  istory and.** se
30cd0 70 61 72 61 74 65 20 64 61 74 61 62 61 73 65 73  parate databases
30ce0 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 4a   controlled by J
30cf0 61 76 61 53 63 72 69 70 74 20 61 70 70 6c 69 63  avaScript applic
30d00 61 74 69 6f 6e 73 20 64 6f 77 6e 6c 6f 61 64 65  ations downloade
30d10 64 0a 2a 2a 20 6f 66 66 20 74 68 65 20 49 6e 74  d.** off the Int
30d20 65 72 6e 65 74 2e 20 20 54 68 65 20 69 6e 74 65  ernet.  The inte
30d30 72 6e 61 6c 20 64 61 74 61 62 61 73 65 73 20 63  rnal databases c
30d40 61 6e 20 62 65 20 67 69 76 65 6e 20 74 68 65 0a  an be given the.
30d50 2a 2a 20 6c 61 72 67 65 2c 20 64 65 66 61 75 6c  ** large, defaul
30d60 74 20 6c 69 6d 69 74 73 2e 20 20 44 61 74 61 62  t limits.  Datab
30d70 61 73 65 73 20 6d 61 6e 61 67 65 64 20 62 79 20  ases managed by 
30d80 65 78 74 65 72 6e 61 6c 20 73 6f 75 72 63 65 73  external sources
30d90 20 63 61 6e 0a 2a 2a 20 62 65 20 67 69 76 65 6e   can.** be given
30da0 20 6d 75 63 68 20 73 6d 61 6c 6c 65 72 20 6c 69   much smaller li
30db0 6d 69 74 73 20 64 65 73 69 67 6e 65 64 20 74 6f  mits designed to
30dc0 20 70 72 65 76 65 6e 74 20 61 20 64 65 6e 69 61   prevent a denia
30dd0 6c 20 6f 66 20 73 65 72 76 69 63 65 0a 2a 2a 20  l of service.** 
30de0 61 74 74 61 63 6b 2e 20 20 44 65 76 65 6c 6f 70  attack.  Develop
30df0 65 72 73 20 6d 69 67 68 74 20 61 6c 73 6f 20 77  ers might also w
30e00 61 6e 74 20 74 6f 20 75 73 65 20 74 68 65 20 5b  ant to use the [
30e10 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
30e20 6f 72 69 7a 65 72 28 29 5d 0a 2a 2a 20 69 6e 74  orizer()].** int
30e30 65 72 66 61 63 65 20 74 6f 20 66 75 72 74 68 65  erface to furthe
30e40 72 20 63 6f 6e 74 72 6f 6c 20 75 6e 74 72 75 73  r control untrus
30e50 74 65 64 20 53 51 4c 2e 20 20 54 68 65 20 73 69  ted SQL.  The si
30e60 7a 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  ze of the databa
30e70 73 65 0a 2a 2a 20 63 72 65 61 74 65 64 20 62 79  se.** created by
30e80 20 61 6e 20 75 6e 74 72 75 73 74 65 64 20 73 63   an untrusted sc
30e90 72 69 70 74 20 63 61 6e 20 62 65 20 63 6f 6e 74  ript can be cont
30ea0 61 69 6e 65 64 20 75 73 69 6e 67 20 74 68 65 0a  ained using the.
30eb0 2a 2a 20 5b 6d 61 78 5f 70 61 67 65 5f 63 6f 75  ** [max_page_cou
30ec0 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 2e 0a 2a 2a  nt] [PRAGMA]..**
30ed0 0a 2a 2a 20 4e 65 77 20 72 75 6e 2d 74 69 6d 65  .** New run-time
30ee0 20 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69 65   limit categorie
30ef0 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69  s may be added i
30f00 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  n future release
30f10 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  s..*/.SQLITE_API
30f20 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 6d   int sqlite3_lim
30f30 69 74 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74  it(sqlite3*, int
30f40 20 69 64 2c 20 69 6e 74 20 6e 65 77 56 61 6c 29   id, int newVal)
30f50 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
30f60 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69 6d 69  F: Run-Time Limi
30f70 74 20 43 61 74 65 67 6f 72 69 65 73 0a 2a 2a 20  t Categories.** 
30f80 4b 45 59 57 4f 52 44 53 3a 20 7b 6c 69 6d 69 74  KEYWORDS: {limit
30f90 20 63 61 74 65 67 6f 72 79 7d 20 7b 2a 6c 69 6d   category} {*lim
30fa0 69 74 20 63 61 74 65 67 6f 72 69 65 73 7d 0a 2a  it categories}.*
30fb0 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74  *.** These const
30fc0 61 6e 74 73 20 64 65 66 69 6e 65 20 76 61 72 69  ants define vari
30fd0 6f 75 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  ous performance 
30fe0 6c 69 6d 69 74 73 0a 2a 2a 20 74 68 61 74 20 63  limits.** that c
30ff0 61 6e 20 62 65 20 6c 6f 77 65 72 65 64 20 61 74  an be lowered at
31000 20 72 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20   run-time using 
31010 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29  [sqlite3_limit()
31020 5d 2e 0a 2a 2a 20 54 68 65 20 73 79 6e 6f 70 73  ]..** The synops
31030 69 73 20 6f 66 20 74 68 65 20 6d 65 61 6e 69 6e  is of the meanin
31040 67 73 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75  gs of the variou
31050 73 20 6c 69 6d 69 74 73 20 69 73 20 73 68 6f 77  s limits is show
31060 6e 20 62 65 6c 6f 77 2e 0a 2a 2a 20 41 64 64 69  n below..** Addi
31070 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
31080 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  on is available 
31090 61 74 20 5b 6c 69 6d 69 74 73 20 7c 20 4c 69 6d  at [limits | Lim
310a0 69 74 73 20 69 6e 20 53 51 4c 69 74 65 5d 2e 0a  its in SQLite]..
310b0 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b  **.** <dl>.** [[
310c0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e  SQLITE_LIMIT_LEN
310d0 47 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  GTH]] ^(<dt>SQLI
310e0 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 3c  TE_LIMIT_LENGTH<
310f0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
31100 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20  maximum size of 
31110 61 6e 79 20 73 74 72 69 6e 67 20 6f 72 20 42 4c  any string or BL
31120 4f 42 20 6f 72 20 74 61 62 6c 65 20 72 6f 77 2c  OB or table row,
31130 20 69 6e 20 62 79 74 65 73 2e 3c 64 64 3e 29 5e   in bytes.<dd>)^
31140 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
31150 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48  LIMIT_SQL_LENGTH
31160 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ]] ^(<dt>SQLITE_
31170 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48  LIMIT_SQL_LENGTH
31180 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
31190 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   maximum length 
311a0 6f 66 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  of an SQL statem
311b0 65 6e 74 2c 20 69 6e 20 62 79 74 65 73 2e 3c 2f  ent, in bytes.</
311c0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
311d0 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d  LITE_LIMIT_COLUM
311e0 4e 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  N]] ^(<dt>SQLITE
311f0 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 3c 2f 64  _LIMIT_COLUMN</d
31200 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
31210 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
31220 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62  columns in a tab
31230 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 72  le definition or
31240 20 69 6e 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c   in the.** resul
31250 74 20 73 65 74 20 6f 66 20 61 20 5b 53 45 4c 45  t set of a [SELE
31260 43 54 5d 20 6f 72 20 74 68 65 20 6d 61 78 69 6d  CT] or the maxim
31270 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  um number of col
31280 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78  umns in an index
31290 0a 2a 2a 20 6f 72 20 69 6e 20 61 6e 20 4f 52 44  .** or in an ORD
312a0 45 52 20 42 59 20 6f 72 20 47 52 4f 55 50 20 42  ER BY or GROUP B
312b0 59 20 63 6c 61 75 73 65 2e 3c 2f 64 64 3e 29 5e  Y clause.</dd>)^
312c0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
312d0 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48  LIMIT_EXPR_DEPTH
312e0 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ]] ^(<dt>SQLITE_
312f0 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48  LIMIT_EXPR_DEPTH
31300 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
31310 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f   maximum depth o
31320 66 20 74 68 65 20 70 61 72 73 65 20 74 72 65 65  f the parse tree
31330 20 6f 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69   on any expressi
31340 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  on.</dd>)^.**.**
31350 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
31360 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d  COMPOUND_SELECT]
31370 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c  ] ^(<dt>SQLITE_L
31380 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  IMIT_COMPOUND_SE
31390 4c 45 43 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LECT</dt>.** <dd
313a0 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
313b0 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20  ber of terms in 
313c0 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43  a compound SELEC
313d0 54 20 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 64 64  T statement.</dd
313e0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
313f0 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50  TE_LIMIT_VDBE_OP
31400 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ]] ^(<dt>SQLITE_
31410 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50 3c 2f 64  LIMIT_VDBE_OP</d
31420 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
31430 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
31440 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 69 6e 20  instructions in 
31450 61 20 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e  a virtual machin
31460 65 20 70 72 6f 67 72 61 6d 0a 2a 2a 20 75 73 65  e program.** use
31470 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61  d to implement a
31480 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  n SQL statement.
31490 20 20 49 66 20 5b 73 71 6c 69 74 65 33 5f 70 72    If [sqlite3_pr
314a0 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 0a 2a  epare_v2()] or.*
314b0 2a 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74  * the equivalent
314c0 20 74 72 69 65 73 20 74 6f 20 61 6c 6c 6f 63 61   tries to alloca
314d0 74 65 20 73 70 61 63 65 20 66 6f 72 20 6d 6f 72  te space for mor
314e0 65 20 74 68 61 6e 20 74 68 69 73 20 6d 61 6e 79  e than this many
314f0 20 6f 70 63 6f 64 65 73 0a 2a 2a 20 69 6e 20 61   opcodes.** in a
31500 20 73 69 6e 67 6c 65 20 70 72 65 70 61 72 65 64   single prepared
31510 20 73 74 61 74 65 6d 65 6e 74 2c 20 61 6e 20 53   statement, an S
31520 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 65 72 72 6f  QLITE_NOMEM erro
31530 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f  r is returned.</
31540 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
31550 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54  LITE_LIMIT_FUNCT
31560 49 4f 4e 5f 41 52 47 5d 5d 20 5e 28 3c 64 74 3e  ION_ARG]] ^(<dt>
31570 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e  SQLITE_LIMIT_FUN
31580 43 54 49 4f 4e 5f 41 52 47 3c 2f 64 74 3e 0a 2a  CTION_ARG</dt>.*
31590 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
315a0 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  m number of argu
315b0 6d 65 6e 74 73 20 6f 6e 20 61 20 66 75 6e 63 74  ments on a funct
315c0 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a  ion.</dd>)^.**.*
315d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
315e0 5f 41 54 54 41 43 48 45 44 5d 5d 20 5e 28 3c 64  _ATTACHED]] ^(<d
315f0 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41  t>SQLITE_LIMIT_A
31600 54 54 41 43 48 45 44 3c 2f 64 74 3e 0a 2a 2a 20  TTACHED</dt>.** 
31610 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
31620 6e 75 6d 62 65 72 20 6f 66 20 5b 41 54 54 41 43  number of [ATTAC
31630 48 20 7c 20 61 74 74 61 63 68 65 64 20 64 61 74  H | attached dat
31640 61 62 61 73 65 73 5d 2e 29 5e 3c 2f 64 64 3e 0a  abases].)^</dd>.
31650 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
31660 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52  IMIT_LIKE_PATTER
31670 4e 5f 4c 45 4e 47 54 48 5d 5d 0a 2a 2a 20 5e 28  N_LENGTH]].** ^(
31680 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31690 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45  _LIKE_PATTERN_LE
316a0 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  NGTH</dt>.** <dd
316b0 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e  >The maximum len
316c0 67 74 68 20 6f 66 20 74 68 65 20 70 61 74 74 65  gth of the patte
316d0 72 6e 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rn argument to t
316e0 68 65 20 5b 4c 49 4b 45 5d 20 6f 72 0a 2a 2a 20  he [LIKE] or.** 
316f0 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73  [GLOB] operators
31700 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
31710 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41  [SQLITE_LIMIT_VA
31720 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 5d 0a  RIABLE_NUMBER]].
31730 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ** ^(<dt>SQLITE_
31740 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e  LIMIT_VARIABLE_N
31750 55 4d 42 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  UMBER</dt>.** <d
31760 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 69 6e  d>The maximum in
31770 64 65 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 6e  dex number of an
31780 79 20 5b 70 61 72 61 6d 65 74 65 72 5d 20 69 6e  y [parameter] in
31790 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
317a0 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  t.)^.**.** [[SQL
317b0 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45  ITE_LIMIT_TRIGGE
317c0 52 5f 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e  R_DEPTH]] ^(<dt>
317d0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49  SQLITE_LIMIT_TRI
317e0 47 47 45 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a  GGER_DEPTH</dt>.
317f0 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
31800 75 6d 20 64 65 70 74 68 20 6f 66 20 72 65 63 75  um depth of recu
31810 72 73 69 6f 6e 20 66 6f 72 20 74 72 69 67 67 65  rsion for trigge
31820 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  rs.</dd>)^.**.**
31830 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
31840 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 5d  WORKER_THREADS]]
31850 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
31860 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MIT_WORKER_THREA
31870 44 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  DS</dt>.** <dd>T
31880 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
31890 72 20 6f 66 20 61 75 78 69 6c 69 61 72 79 20 77  r of auxiliary w
318a0 6f 72 6b 65 72 20 74 68 72 65 61 64 73 20 74 68  orker threads th
318b0 61 74 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 5b  at a single.** [
318c0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
318d0 6e 74 5d 20 6d 61 79 20 73 74 61 72 74 2e 3c 2f  nt] may start.</
318e0 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a  dd>)^.** </dl>.*
318f0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
31900 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 20 20 20  _LIMIT_LENGTH   
31910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31920 20 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   0.#define SQLIT
31930 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47  E_LIMIT_SQL_LENG
31940 54 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20  TH              
31950 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    1.#define SQLI
31960 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 20  TE_LIMIT_COLUMN 
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31980 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c     2.#define SQL
31990 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44  ITE_LIMIT_EXPR_D
319a0 45 50 54 48 20 20 20 20 20 20 20 20 20 20 20 20  EPTH            
319b0 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51      3.#define SQ
319c0 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f  LITE_LIMIT_COMPO
319d0 55 4e 44 5f 53 45 4c 45 43 54 20 20 20 20 20 20  UND_SELECT      
319e0 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53       4.#define S
319f0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45  QLITE_LIMIT_VDBE
31a00 5f 4f 50 20 20 20 20 20 20 20 20 20 20 20 20 20  _OP             
31a10 20 20 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20        5.#define 
31a20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e  SQLITE_LIMIT_FUN
31a30 43 54 49 4f 4e 5f 41 52 47 20 20 20 20 20 20 20  CTION_ARG       
31a40 20 20 20 20 20 20 20 36 0a 23 64 65 66 69 6e 65         6.#define
31a50 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54   SQLITE_LIMIT_AT
31a60 54 41 43 48 45 44 20 20 20 20 20 20 20 20 20 20  TACHED          
31a70 20 20 20 20 20 20 20 20 37 0a 23 64 65 66 69 6e          7.#defin
31a80 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c  e SQLITE_LIMIT_L
31a90 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47  IKE_PATTERN_LENG
31aa0 54 48 20 20 20 20 20 20 20 38 0a 23 64 65 66 69  TH       8.#defi
31ab0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
31ac0 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 20  VARIABLE_NUMBER 
31ad0 20 20 20 20 20 20 20 20 20 20 39 0a 23 64 65 66            9.#def
31ae0 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
31af0 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 20 20  _TRIGGER_DEPTH  
31b00 20 20 20 20 20 20 20 20 20 20 31 30 0a 23 64 65            10.#de
31b10 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
31b20 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
31b30 20 20 20 20 20 20 20 20 20 20 20 31 31 0a 0a 2f             11../
31b40 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 50  *.** CAPI3REF: P
31b50 72 65 70 61 72 65 20 46 6c 61 67 73 0a 2a 2a 0a  repare Flags.**.
31b60 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e  ** These constan
31b70 74 73 20 64 65 66 69 6e 65 20 76 61 72 69 6f 75  ts define variou
31b80 73 20 66 6c 61 67 73 20 74 68 61 74 20 63 61 6e  s flags that can
31b90 20 62 65 20 70 61 73 73 65 64 20 69 6e 74 6f 0a   be passed into.
31ba0 2a 2a 20 22 70 72 65 70 46 6c 61 67 73 22 20 70  ** "prepFlags" p
31bb0 61 72 61 6d 65 74 65 72 20 6f 66 20 74 68 65 20  arameter of the 
31bc0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
31bd0 5f 76 33 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73  _v3()] and.** [s
31be0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
31bf0 5f 76 33 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v3()] interface
31c00 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 66 6c 61  s..**.** New fla
31c10 67 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20  gs may be added 
31c20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
31c30 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a  es of SQLite..**
31c40 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
31c50 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52  LITE_PREPARE_PER
31c60 53 49 53 54 45 4e 54 5d 5d 20 5e 28 3c 64 74 3e  SISTENT]] ^(<dt>
31c70 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50  SQLITE_PREPARE_P
31c80 45 52 53 49 53 54 45 4e 54 3c 2f 64 74 3e 0a 2a  ERSISTENT</dt>.*
31c90 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45  * <dd>The SQLITE
31ca0 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49 53 54  _PREPARE_PERSIST
31cb0 45 4e 54 20 66 6c 61 67 20 69 73 20 61 20 68 69  ENT flag is a hi
31cc0 6e 74 20 74 6f 20 74 68 65 20 71 75 65 72 79 20  nt to the query 
31cd0 70 6c 61 6e 6e 65 72 0a 2a 2a 20 74 68 61 74 20  planner.** that 
31ce0 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
31cf0 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 72  tement will be r
31d00 65 74 61 69 6e 65 64 20 66 6f 72 20 61 20 6c 6f  etained for a lo
31d10 6e 67 20 74 69 6d 65 20 61 6e 64 0a 2a 2a 20 70  ng time and.** p
31d20 72 6f 62 61 62 6c 79 20 72 65 75 73 65 64 20 6d  robably reused m
31d30 61 6e 79 20 74 69 6d 65 73 2e 29 5e 20 5e 57 69  any times.)^ ^Wi
31d40 74 68 6f 75 74 20 74 68 69 73 20 66 6c 61 67 2c  thout this flag,
31d50 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
31d60 65 5f 76 33 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b  e_v3()].** and [
31d70 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
31d80 36 5f 76 33 28 29 5d 20 61 73 73 75 6d 65 20 74  6_v3()] assume t
31d90 68 61 74 20 74 68 65 20 70 72 65 70 61 72 65 64  hat the prepared
31da0 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
31db0 0a 2a 2a 20 62 65 20 75 73 65 64 20 6a 75 73 74  .** be used just
31dc0 20 6f 6e 63 65 20 6f 72 20 61 74 20 6d 6f 73 74   once or at most
31dd0 20 61 20 66 65 77 20 74 69 6d 65 73 20 61 6e 64   a few times and
31de0 20 74 68 65 6e 20 64 65 73 74 72 6f 79 65 64 20   then destroyed 
31df0 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  using.** [sqlite
31e00 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 20 72 65  3_finalize()] re
31e10 6c 61 74 69 76 65 6c 79 20 73 6f 6f 6e 2e 20 54  latively soon. T
31e20 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65  he current imple
31e30 6d 65 6e 74 61 74 69 6f 6e 20 61 63 74 73 0a 2a  mentation acts.*
31e40 2a 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 62  * on this hint b
31e50 79 20 61 76 6f 69 64 69 6e 67 20 74 68 65 20 75  y avoiding the u
31e60 73 65 20 6f 66 20 5b 6c 6f 6f 6b 61 73 69 64 65  se of [lookaside
31e70 20 6d 65 6d 6f 72 79 5d 20 73 6f 20 61 73 20 6e   memory] so as n
31e80 6f 74 20 74 6f 0a 2a 2a 20 64 65 70 6c 65 74 65  ot to.** deplete
31e90 20 74 68 65 20 6c 69 6d 69 74 65 64 20 73 74 6f   the limited sto
31ea0 72 65 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20  re of lookaside 
31eb0 6d 65 6d 6f 72 79 2e 20 46 75 74 75 72 65 20 76  memory. Future v
31ec0 65 72 73 69 6f 6e 73 20 6f 66 0a 2a 2a 20 53 51  ersions of.** SQ
31ed0 4c 69 74 65 20 6d 61 79 20 61 63 74 20 6f 6e 20  Lite may act on 
31ee0 74 68 69 73 20 68 69 6e 74 20 64 69 66 66 65 72  this hint differ
31ef0 65 6e 74 6c 79 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a  ently..** </dl>.
31f00 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
31f10 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49 53  E_PREPARE_PERSIS
31f20 54 45 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  TENT            
31f30 20 20 30 78 30 31 0a 0a 2f 2a 0a 2a 2a 20 43 41    0x01../*.** CA
31f40 50 49 33 52 45 46 3a 20 43 6f 6d 70 69 6c 69 6e  PI3REF: Compilin
31f50 67 20 41 6e 20 53 51 4c 20 53 74 61 74 65 6d 65  g An SQL Stateme
31f60 6e 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  nt.** KEYWORDS: 
31f70 7b 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63  {SQL statement c
31f80 6f 6d 70 69 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48  ompiler}.** METH
31f90 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 20 43  OD: sqlite3.** C
31fa0 4f 4e 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69  ONSTRUCTOR: sqli
31fb0 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 54  te3_stmt.**.** T
31fc0 6f 20 65 78 65 63 75 74 65 20 61 6e 20 53 51 4c  o execute an SQL
31fd0 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 74 20 6d   statement, it m
31fe0 75 73 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d  ust first be com
31ff0 70 69 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74  piled into a byt
32000 65 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61  e-code.** progra
32010 6d 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74  m using one of t
32020 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e 20 20  hese routines.  
32030 4f 72 2c 20 69 6e 20 6f 74 68 65 72 20 77 6f 72  Or, in other wor
32040 64 73 2c 20 74 68 65 73 65 20 72 6f 75 74 69 6e  ds, these routin
32050 65 73 0a 2a 2a 20 61 72 65 20 63 6f 6e 73 74 72  es.** are constr
32060 75 63 74 6f 72 73 20 66 6f 72 20 74 68 65 20 5b  uctors for the [
32070 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
32080 6e 74 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a  nt] object..**.*
32090 2a 20 54 68 65 20 70 72 65 66 65 72 72 65 64 20  * The preferred 
320a0 72 6f 75 74 69 6e 65 20 74 6f 20 75 73 65 20 69  routine to use i
320b0 73 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  s [sqlite3_prepa
320c0 72 65 5f 76 32 28 29 5d 2e 20 20 54 68 65 0a 2a  re_v2()].  The.*
320d0 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
320e0 72 65 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  re()] interface 
320f0 69 73 20 6c 65 67 61 63 79 20 61 6e 64 20 73 68  is legacy and sh
32100 6f 75 6c 64 20 62 65 20 61 76 6f 69 64 65 64 2e  ould be avoided.
32110 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  .** [sqlite3_pre
32120 70 61 72 65 5f 76 33 28 29 5d 20 68 61 73 20 61  pare_v3()] has a
32130 6e 20 65 78 74 72 61 20 22 70 72 65 70 46 6c 61  n extra "prepFla
32140 67 73 22 20 6f 70 74 69 6f 6e 20 74 68 61 74 20  gs" option that 
32150 69 73 20 75 73 65 64 0a 2a 2a 20 66 6f 72 20 73  is used.** for s
32160 70 65 63 69 61 6c 20 70 75 72 70 6f 73 65 73 2e  pecial purposes.
32170 0a 2a 2a 0a 2a 2a 20 54 68 65 20 75 73 65 20 6f  .**.** The use o
32180 66 20 74 68 65 20 55 54 46 2d 38 20 69 6e 74 65  f the UTF-8 inte
32190 72 66 61 63 65 73 20 69 73 20 70 72 65 66 65 72  rfaces is prefer
321a0 72 65 64 2c 20 61 73 20 53 51 4c 69 74 65 20 63  red, as SQLite c
321b0 75 72 72 65 6e 74 6c 79 0a 2a 2a 20 64 6f 65 73  urrently.** does
321c0 20 61 6c 6c 20 70 61 72 73 69 6e 67 20 75 73 69   all parsing usi
321d0 6e 67 20 55 54 46 2d 38 2e 20 20 54 68 65 20 55  ng UTF-8.  The U
321e0 54 46 2d 31 36 20 69 6e 74 65 72 66 61 63 65 73  TF-16 interfaces
321f0 20 61 72 65 20 70 72 6f 76 69 64 65 64 0a 2a 2a   are provided.**
32200 20 61 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63   as a convenienc
32210 65 2e 20 20 54 68 65 20 55 54 46 2d 31 36 20 69  e.  The UTF-16 i
32220 6e 74 65 72 66 61 63 65 73 20 77 6f 72 6b 20 62  nterfaces work b
32230 79 20 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65  y converting the
32240 0a 2a 2a 20 69 6e 70 75 74 20 74 65 78 74 20 69  .** input text i
32250 6e 74 6f 20 55 54 46 2d 38 2c 20 74 68 65 6e 20  nto UTF-8, then 
32260 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 63 6f 72  invoking the cor
32270 72 65 73 70 6f 6e 64 69 6e 67 20 55 54 46 2d 38  responding UTF-8
32280 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a   interface..**.*
32290 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  * The first argu
322a0 6d 65 6e 74 2c 20 22 64 62 22 2c 20 69 73 20 61  ment, "db", is a
322b0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
322c0 63 74 69 6f 6e 5d 20 6f 62 74 61 69 6e 65 64 20  ction] obtained 
322d0 66 72 6f 6d 20 61 0a 2a 2a 20 70 72 69 6f 72 20  from a.** prior 
322e0 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20  successful call 
322f0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  to [sqlite3_open
32300 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
32310 65 6e 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 5b  en_v2()] or.** [
32320 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
32330 5d 2e 20 20 54 68 65 20 64 61 74 61 62 61 73 65  ].  The database
32340 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 75 73 74   connection must
32350 20 6e 6f 74 20 68 61 76 65 20 62 65 65 6e 20 63   not have been c
32360 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  losed..**.** The
32370 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
32380 2c 20 22 7a 53 71 6c 22 2c 20 69 73 20 74 68 65  , "zSql", is the
32390 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65   statement to be
323a0 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f 64   compiled, encod
323b0 65 64 0a 2a 2a 20 61 73 20 65 69 74 68 65 72 20  ed.** as either 
323c0 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 2e  UTF-8 or UTF-16.
323d0 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72    The sqlite3_pr
323e0 65 70 61 72 65 28 29 2c 20 73 71 6c 69 74 65 33  epare(), sqlite3
323f0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 2c 0a 2a  _prepare_v2(),.*
32400 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  * and sqlite3_pr
32410 65 70 61 72 65 5f 76 33 28 29 0a 2a 2a 20 69 6e  epare_v3().** in
32420 74 65 72 66 61 63 65 73 20 75 73 65 20 55 54 46  terfaces use UTF
32430 2d 38 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  -8, and sqlite3_
32440 70 72 65 70 61 72 65 31 36 28 29 2c 20 73 71 6c  prepare16(), sql
32450 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
32460 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69  2(),.** and sqli
32470 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
32480 28 29 20 75 73 65 20 55 54 46 2d 31 36 2e 0a 2a  () use UTF-16..*
32490 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6e 42 79  *.** ^If the nBy
324a0 74 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e  te argument is n
324b0 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 7a 53  egative, then zS
324c0 71 6c 20 69 73 20 72 65 61 64 20 75 70 20 74 6f  ql is read up to
324d0 20 74 68 65 0a 2a 2a 20 66 69 72 73 74 20 7a 65   the.** first ze
324e0 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 5e  ro terminator. ^
324f0 49 66 20 6e 42 79 74 65 20 69 73 20 70 6f 73 69  If nByte is posi
32500 74 69 76 65 2c 20 74 68 65 6e 20 69 74 20 69 73  tive, then it is
32510 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
32520 66 20 62 79 74 65 73 20 72 65 61 64 20 66 72 6f  f bytes read fro
32530 6d 20 7a 53 71 6c 2e 20 20 5e 49 66 20 6e 42 79  m zSql.  ^If nBy
32540 74 65 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e  te is zero, then
32550 20 6e 6f 20 70 72 65 70 61 72 65 64 0a 2a 2a 20   no prepared.** 
32560 73 74 61 74 65 6d 65 6e 74 20 69 73 20 67 65 6e  statement is gen
32570 65 72 61 74 65 64 2e 0a 2a 2a 20 49 66 20 74 68  erated..** If th
32580 65 20 63 61 6c 6c 65 72 20 6b 6e 6f 77 73 20 74  e caller knows t
32590 68 61 74 20 74 68 65 20 73 75 70 70 6c 69 65 64  hat the supplied
325a0 20 73 74 72 69 6e 67 20 69 73 20 6e 75 6c 2d 74   string is nul-t
325b0 65 72 6d 69 6e 61 74 65 64 2c 20 74 68 65 6e 0a  erminated, then.
325c0 2a 2a 20 74 68 65 72 65 20 69 73 20 61 20 73 6d  ** there is a sm
325d0 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20  all performance 
325e0 61 64 76 61 6e 74 61 67 65 20 74 6f 20 70 61 73  advantage to pas
325f0 73 69 6e 67 20 61 6e 20 6e 42 79 74 65 20 70 61  sing an nByte pa
32600 72 61 6d 65 74 65 72 20 74 68 61 74 0a 2a 2a 20  rameter that.** 
32610 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
32620 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 69 6e   bytes in the in
32630 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 69 6e  put string <i>in
32640 63 6c 75 64 69 6e 67 3c 2f 69 3e 0a 2a 2a 20 74  cluding</i>.** t
32650 68 65 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 6f  he nul-terminato
32660 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 70 7a 54  r..**.** ^If pzT
32670 61 69 6c 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20  ail is not NULL 
32680 74 68 65 6e 20 2a 70 7a 54 61 69 6c 20 69 73 20  then *pzTail is 
32690 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f  made to point to
326a0 20 74 68 65 20 66 69 72 73 74 20 62 79 74 65 0a   the first byte.
326b0 2a 2a 20 70 61 73 74 20 74 68 65 20 65 6e 64 20  ** past the end 
326c0 6f 66 20 74 68 65 20 66 69 72 73 74 20 53 51 4c  of the first SQL
326d0 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53   statement in zS
326e0 71 6c 2e 20 20 54 68 65 73 65 20 72 6f 75 74 69  ql.  These routi
326f0 6e 65 73 20 6f 6e 6c 79 0a 2a 2a 20 63 6f 6d 70  nes only.** comp
32700 69 6c 65 20 74 68 65 20 66 69 72 73 74 20 73 74  ile the first st
32710 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2c  atement in zSql,
32720 20 73 6f 20 2a 70 7a 54 61 69 6c 20 69 73 20 6c   so *pzTail is l
32730 65 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 0a  eft pointing to.
32740 2a 2a 20 77 68 61 74 20 72 65 6d 61 69 6e 73 20  ** what remains 
32750 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a 0a 2a  uncompiled..**.*
32760 2a 20 5e 2a 70 70 53 74 6d 74 20 69 73 20 6c 65  * ^*ppStmt is le
32770 66 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 61  ft pointing to a
32780 20 63 6f 6d 70 69 6c 65 64 20 5b 70 72 65 70 61   compiled [prepa
32790 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74  red statement] t
327a0 68 61 74 20 63 61 6e 20 62 65 0a 2a 2a 20 65 78  hat can be.** ex
327b0 65 63 75 74 65 64 20 75 73 69 6e 67 20 5b 73 71  ecuted using [sq
327c0 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 20 20  lite3_step()].  
327d0 5e 49 66 20 74 68 65 72 65 20 69 73 20 61 6e 20  ^If there is an 
327e0 65 72 72 6f 72 2c 20 2a 70 70 53 74 6d 74 20 69  error, *ppStmt i
327f0 73 20 73 65 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c  s set.** to NULL
32800 2e 20 20 5e 49 66 20 74 68 65 20 69 6e 70 75 74  .  ^If the input
32810 20 74 65 78 74 20 63 6f 6e 74 61 69 6e 73 20 6e   text contains n
32820 6f 20 53 51 4c 20 28 69 66 20 74 68 65 20 69 6e  o SQL (if the in
32830 70 75 74 20 69 73 20 61 6e 20 65 6d 70 74 79 0a  put is an empty.
32840 2a 2a 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63  ** string or a c
32850 6f 6d 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70  omment) then *pp
32860 53 74 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e  Stmt is set to N
32870 55 4c 4c 2e 0a 2a 2a 20 54 68 65 20 63 61 6c 6c  ULL..** The call
32880 69 6e 67 20 70 72 6f 63 65 64 75 72 65 20 69 73  ing procedure is
32890 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72   responsible for
328a0 20 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f   deleting the co
328b0 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74  mpiled.** SQL st
328c0 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73  atement using [s
328d0 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28  qlite3_finalize(
328e0 29 5d 20 61 66 74 65 72 20 69 74 20 68 61 73 20  )] after it has 
328f0 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 69 74  finished with it
32900 2e 0a 2a 2a 20 70 70 53 74 6d 74 20 6d 61 79 20  ..** ppStmt may 
32910 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e 0a 2a 2a 0a  not be NULL..**.
32920 2a 2a 20 5e 4f 6e 20 73 75 63 63 65 73 73 2c 20  ** ^On success, 
32930 74 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  the sqlite3_prep
32940 61 72 65 28 29 20 66 61 6d 69 6c 79 20 6f 66 20  are() family of 
32950 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
32960 5b 53 51 4c 49 54 45 5f 4f 4b 5d 3b 0a 2a 2a 20  [SQLITE_OK];.** 
32970 6f 74 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72  otherwise an [er
32980 72 6f 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74  ror code] is ret
32990 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  urned..**.** The
329a0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
329b0 5f 76 32 28 29 2c 20 73 71 6c 69 74 65 33 5f 70  _v2(), sqlite3_p
329c0 72 65 70 61 72 65 5f 76 33 28 29 2c 20 73 71 6c  repare_v3(), sql
329d0 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
329e0 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69  2(),.** and sqli
329f0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
32a00 28 29 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  () interfaces ar
32a10 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f  e recommended fo
32a20 72 20 61 6c 6c 20 6e 65 77 20 70 72 6f 67 72 61  r all new progra
32a30 6d 73 2e 0a 2a 2a 20 54 68 65 20 6f 6c 64 65 72  ms..** The older
32a40 20 69 6e 74 65 72 66 61 63 65 73 20 28 73 71 6c   interfaces (sql
32a50 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 61  ite3_prepare() a
32a60 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
32a70 72 65 31 36 28 29 29 0a 2a 2a 20 61 72 65 20 72  re16()).** are r
32a80 65 74 61 69 6e 65 64 20 66 6f 72 20 62 61 63 6b  etained for back
32a90 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c  wards compatibil
32aa0 69 74 79 2c 20 62 75 74 20 74 68 65 69 72 20 75  ity, but their u
32ab0 73 65 20 69 73 20 64 69 73 63 6f 75 72 61 67 65  se is discourage
32ac0 64 2e 0a 2a 2a 20 5e 49 6e 20 74 68 65 20 22 76  d..** ^In the "v
32ad0 58 22 20 69 6e 74 65 72 66 61 63 65 73 2c 20 74  X" interfaces, t
32ae0 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
32af0 65 6d 65 6e 74 0a 2a 2a 20 74 68 61 74 20 69 73  ement.** that is
32b00 20 72 65 74 75 72 6e 65 64 20 28 74 68 65 20 5b   returned (the [
32b10 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d 20 6f 62  sqlite3_stmt] ob
32b20 6a 65 63 74 29 20 63 6f 6e 74 61 69 6e 73 20 61  ject) contains a
32b30 20 63 6f 70 79 20 6f 66 20 74 68 65 0a 2a 2a 20   copy of the.** 
32b40 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20 74 65 78  original SQL tex
32b50 74 2e 20 54 68 69 73 20 63 61 75 73 65 73 20 74  t. This causes t
32b60 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  he [sqlite3_step
32b70 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ()] interface to
32b80 0a 2a 2a 20 62 65 68 61 76 65 20 64 69 66 66 65  .** behave diffe
32b90 72 65 6e 74 6c 79 20 69 6e 20 74 68 72 65 65 20  rently in three 
32ba0 77 61 79 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e  ways:.**.** <ol>
32bb0 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20  .** <li>.** ^If 
32bc0 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
32bd0 65 6d 61 20 63 68 61 6e 67 65 73 2c 20 69 6e 73  ema changes, ins
32be0 74 65 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e  tead of returnin
32bf0 67 20 5b 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  g [SQLITE_SCHEMA
32c00 5d 20 61 73 20 69 74 0a 2a 2a 20 61 6c 77 61 79  ] as it.** alway
32c10 73 20 75 73 65 64 20 74 6f 20 64 6f 2c 20 5b 73  s used to do, [s
32c20 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
32c30 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  ill automaticall
32c40 79 20 72 65 63 6f 6d 70 69 6c 65 20 74 68 65 20  y recompile the 
32c50 53 51 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  SQL.** statement
32c60 20 61 6e 64 20 74 72 79 20 74 6f 20 72 75 6e 20   and try to run 
32c70 69 74 20 61 67 61 69 6e 2e 20 41 73 20 6d 61 6e  it again. As man
32c80 79 20 61 73 20 5b 53 51 4c 49 54 45 5f 4d 41 58  y as [SQLITE_MAX
32c90 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 5d 0a 2a  _SCHEMA_RETRY].*
32ca0 2a 20 72 65 74 72 69 65 73 20 77 69 6c 6c 20 6f  * retries will o
32cb0 63 63 75 72 20 62 65 66 6f 72 65 20 73 71 6c 69  ccur before sqli
32cc0 74 65 33 5f 73 74 65 70 28 29 20 67 69 76 65 73  te3_step() gives
32cd0 20 75 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20   up and returns 
32ce0 61 6e 20 65 72 72 6f 72 2e 0a 2a 2a 20 3c 2f 6c  an error..** </l
32cf0 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a  i>.**.** <li>.**
32d00 20 5e 57 68 65 6e 20 61 6e 20 65 72 72 6f 72 20   ^When an error 
32d10 6f 63 63 75 72 73 2c 20 5b 73 71 6c 69 74 65 33  occurs, [sqlite3
32d20 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 20 72 65  _step()] will re
32d30 74 75 72 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  turn one of the 
32d40 64 65 74 61 69 6c 65 64 0a 2a 2a 20 5b 65 72 72  detailed.** [err
32d50 6f 72 20 63 6f 64 65 73 5d 20 6f 72 20 5b 65 78  or codes] or [ex
32d60 74 65 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64  tended error cod
32d70 65 73 5d 2e 20 20 5e 54 68 65 20 6c 65 67 61 63  es].  ^The legac
32d80 79 20 62 65 68 61 76 69 6f 72 20 77 61 73 20 74  y behavior was t
32d90 68 61 74 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  hat.** [sqlite3_
32da0 73 74 65 70 28 29 5d 20 77 6f 75 6c 64 20 6f 6e  step()] would on
32db0 6c 79 20 72 65 74 75 72 6e 20 61 20 67 65 6e 65  ly return a gene
32dc0 72 69 63 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  ric [SQLITE_ERRO
32dd0 52 5d 20 72 65 73 75 6c 74 20 63 6f 64 65 0a 2a  R] result code.*
32de0 2a 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63  * and the applic
32df0 61 74 69 6f 6e 20 77 6f 75 6c 64 20 68 61 76 65  ation would have
32e00 20 74 6f 20 6d 61 6b 65 20 61 20 73 65 63 6f 6e   to make a secon
32e10 64 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  d call to [sqlit
32e20 65 33 5f 72 65 73 65 74 28 29 5d 0a 2a 2a 20 69  e3_reset()].** i
32e30 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 6e 64 20  n order to find 
32e40 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 63  the underlying c
32e50 61 75 73 65 20 6f 66 20 74 68 65 20 70 72 6f 62  ause of the prob
32e60 6c 65 6d 2e 20 57 69 74 68 20 74 68 65 20 22 76  lem. With the "v
32e70 32 22 20 70 72 65 70 61 72 65 0a 2a 2a 20 69 6e  2" prepare.** in
32e80 74 65 72 66 61 63 65 73 2c 20 74 68 65 20 75 6e  terfaces, the un
32e90 64 65 72 6c 79 69 6e 67 20 72 65 61 73 6f 6e 20  derlying reason 
32ea0 66 6f 72 20 74 68 65 20 65 72 72 6f 72 20 69 73  for the error is
32eb0 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69   returned immedi
32ec0 61 74 65 6c 79 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a  ately..** </li>.
32ed0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49  **.** <li>.** ^I
32ee0 66 20 74 68 65 20 73 70 65 63 69 66 69 63 20 76  f the specific v
32ef0 61 6c 75 65 20 62 6f 75 6e 64 20 74 6f 20 5b 70  alue bound to [p
32f00 61 72 61 6d 65 74 65 72 20 7c 20 68 6f 73 74 20  arameter | host 
32f10 70 61 72 61 6d 65 74 65 72 5d 20 69 6e 20 74 68  parameter] in th
32f20 65 20 0a 2a 2a 20 57 48 45 52 45 20 63 6c 61 75  e .** WHERE clau
32f30 73 65 20 6d 69 67 68 74 20 69 6e 66 6c 75 65 6e  se might influen
32f40 63 65 20 74 68 65 20 63 68 6f 69 63 65 20 6f 66  ce the choice of
32f50 20 71 75 65 72 79 20 70 6c 61 6e 20 66 6f 72 20   query plan for 
32f60 61 20 73 74 61 74 65 6d 65 6e 74 2c 0a 2a 2a 20  a statement,.** 
32f70 74 68 65 6e 20 74 68 65 20 73 74 61 74 65 6d 65  then the stateme
32f80 6e 74 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d  nt will be autom
32f90 61 74 69 63 61 6c 6c 79 20 72 65 63 6f 6d 70 69  atically recompi
32fa0 6c 65 64 2c 20 61 73 20 69 66 20 74 68 65 72 65  led, as if there
32fb0 20 68 61 64 20 62 65 65 6e 20 0a 2a 2a 20 61 20   had been .** a 
32fc0 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2c 20 6f  schema change, o
32fd0 6e 20 74 68 65 20 66 69 72 73 74 20 20 5b 73 71  n the first  [sq
32fe0 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 63 61  lite3_step()] ca
32ff0 6c 6c 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 6e 79  ll following any
33000 20 63 68 61 6e 67 65 0a 2a 2a 20 74 6f 20 74 68   change.** to th
33010 65 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  e [sqlite3_bind_
33020 74 65 78 74 20 7c 20 62 69 6e 64 69 6e 67 73 5d  text | bindings]
33030 20 6f 66 20 74 68 61 74 20 5b 70 61 72 61 6d 65   of that [parame
33040 74 65 72 5d 2e 20 0a 2a 2a 20 5e 54 68 65 20 73  ter]. .** ^The s
33050 70 65 63 69 66 69 63 20 76 61 6c 75 65 20 6f 66  pecific value of
33060 20 57 48 45 52 45 2d 63 6c 61 75 73 65 20 5b 70   WHERE-clause [p
33070 61 72 61 6d 65 74 65 72 5d 20 6d 69 67 68 74 20  arameter] might 
33080 69 6e 66 6c 75 65 6e 63 65 20 74 68 65 20 0a 2a  influence the .*
33090 2a 20 63 68 6f 69 63 65 20 6f 66 20 71 75 65 72  * choice of quer
330a0 79 20 70 6c 61 6e 20 69 66 20 74 68 65 20 70 61  y plan if the pa
330b0 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 20 6c  rameter is the l
330c0 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66  eft-hand side of
330d0 20 61 20 5b 4c 49 4b 45 5d 0a 2a 2a 20 6f 72 20   a [LIKE].** or 
330e0 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20  [GLOB] operator 
330f0 6f 72 20 69 66 20 74 68 65 20 70 61 72 61 6d 65  or if the parame
33100 74 65 72 20 69 73 20 63 6f 6d 70 61 72 65 64 20  ter is compared 
33110 74 6f 20 61 6e 20 69 6e 64 65 78 65 64 20 63 6f  to an indexed co
33120 6c 75 6d 6e 0a 2a 2a 20 61 6e 64 20 74 68 65 20  lumn.** and the 
33130 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53  [SQLITE_ENABLE_S
33140 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  TAT3] compile-ti
33150 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61  me option is ena
33160 62 6c 65 64 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a  bled..** </li>.*
33170 2a 0a 2a 2a 20 3c 70 3e 5e 73 71 6c 69 74 65 33  *.** <p>^sqlite3
33180 5f 70 72 65 70 61 72 65 5f 76 33 28 29 20 64 69  _prepare_v3() di
33190 66 66 65 72 73 20 66 72 6f 6d 20 73 71 6c 69 74  ffers from sqlit
331a0 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 20  e3_prepare_v2() 
331b0 6f 6e 6c 79 20 69 6e 20 68 61 76 69 6e 67 0a 2a  only in having.*
331c0 2a 20 74 68 65 20 65 78 74 72 61 20 70 72 65 70  * the extra prep
331d0 46 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 2c  Flags parameter,
331e0 20 77 68 69 63 68 20 69 73 20 61 20 62 69 74 20   which is a bit 
331f0 61 72 72 61 79 20 63 6f 6e 73 69 73 74 69 6e 67  array consisting
33200 20 6f 66 20 7a 65 72 6f 20 6f 72 0a 2a 2a 20 6d   of zero or.** m
33210 6f 72 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49  ore of the [SQLI
33220 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49  TE_PREPARE_PERSI
33230 53 54 45 4e 54 7c 53 51 4c 49 54 45 5f 50 52 45  STENT|SQLITE_PRE
33240 50 41 52 45 5f 2a 5d 20 66 6c 61 67 73 2e 20 20  PARE_*] flags.  
33250 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ^The.** sqlite3_
33260 70 72 65 70 61 72 65 5f 76 32 28 29 20 69 6e 74  prepare_v2() int
33270 65 72 66 61 63 65 20 77 6f 72 6b 73 20 65 78 61  erface works exa
33280 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61 73  ctly the same as
33290 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70  .** sqlite3_prep
332a0 61 72 65 5f 76 33 28 29 20 77 69 74 68 20 61 20  are_v3() with a 
332b0 7a 65 72 6f 20 70 72 65 70 46 6c 61 67 73 20 70  zero prepFlags p
332c0 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 3c 2f 6f  arameter..** </o
332d0 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  l>.*/.SQLITE_API
332e0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65   int sqlite3_pre
332f0 70 61 72 65 28 0a 20 20 73 71 6c 69 74 65 33 20  pare(.  sqlite3 
33300 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
33310 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
33320 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
33330 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  ar *zSql,       
33340 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
33350 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  , UTF-8 encoded 
33360 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20  */.  int nByte, 
33370 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
33380 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  Maximum length o
33390 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e  f zSql in bytes.
333a0 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74   */.  sqlite3_st
333b0 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a  mt **ppStmt,  /*
333c0 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20   OUT: Statement 
333d0 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
333e0 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20  t char **pzTail 
333f0 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e      /* OUT: Poin
33400 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f  ter to unused po
33410 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f  rtion of zSql */
33420 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .);.SQLITE_API i
33430 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
33440 72 65 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33  re_v2(.  sqlite3
33450 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
33460 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
33470 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  dle */.  const c
33480 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  har *zSql,      
33490 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
334a0 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64  t, UTF-8 encoded
334b0 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c   */.  int nByte,
334c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
334d0 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   Maximum length 
334e0 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
334f0 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  . */.  sqlite3_s
33500 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
33510 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
33520 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33530 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c  st char **pzTail
33540 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
33550 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
33560 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
33570 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
33580 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
33590 61 72 65 5f 76 33 28 0a 20 20 73 71 6c 69 74 65  are_v3(.  sqlite
335a0 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20  3 *db,          
335b0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61    /* Database ha
335c0 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
335d0 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20  char *zSql,     
335e0 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65    /* SQL stateme
335f0 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65  nt, UTF-8 encode
33600 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
33610 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
33620 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68  * Maximum length
33630 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65   of zSql in byte
33640 73 2e 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64  s. */.  unsigned
33650 20 69 6e 74 20 70 72 65 70 46 6c 61 67 73 2c 20   int prepFlags, 
33660 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  /* Zero or more 
33670 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 20  SQLITE_PREPARE_ 
33680 66 6c 61 67 73 20 2a 2f 0a 20 20 73 71 6c 69 74  flags */.  sqlit
33690 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74  e3_stmt **ppStmt
336a0 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65  ,  /* OUT: State
336b0 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  ment handle */. 
336c0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a   const char **pz
336d0 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a  Tail     /* OUT:
336e0 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73   Pointer to unus
336f0 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53  ed portion of zS
33700 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f  ql */.);.SQLITE_
33710 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
33720 70 72 65 70 61 72 65 31 36 28 0a 20 20 73 71 6c  prepare16(.  sql
33730 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
33740 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
33750 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33760 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20  st void *zSql,  
33770 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
33780 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e  ement, UTF-16 en
33790 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e  coded */.  int n
337a0 42 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20  Byte,           
337b0 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65     /* Maximum le
337c0 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20  ngth of zSql in 
337d0 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69  bytes. */.  sqli
337e0 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d  te3_stmt **ppStm
337f0 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74  t,  /* OUT: Stat
33800 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a  ement handle */.
33810 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70    const void **p
33820 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54  zTail     /* OUT
33830 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75  : Pointer to unu
33840 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a  sed portion of z
33850 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45  Sql */.);.SQLITE
33860 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
33870 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 0a 20  _prepare16_v2(. 
33880 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
33890 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
338a0 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
338b0 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71   const void *zSq
338c0 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
338d0 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31  statement, UTF-1
338e0 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  6 encoded */.  i
338f0 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
33900 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
33910 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
33920 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
33930 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70  sqlite3_stmt **p
33940 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20  pStmt,  /* OUT: 
33950 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65  Statement handle
33960 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64   */.  const void
33970 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a   **pzTail     /*
33980 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f   OUT: Pointer to
33990 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20   unused portion 
339a0 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51  of zSql */.);.SQ
339b0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
339c0 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
339d0 33 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  3(.  sqlite3 *db
339e0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
339f0 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  Database handle 
33a00 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
33a10 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20  *zSql,       /* 
33a20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55  SQL statement, U
33a30 54 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f  TF-16 encoded */
33a40 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20  .  int nByte,   
33a50 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61             /* Ma
33a60 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
33a70 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
33a80 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  /.  unsigned int
33a90 20 70 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a   prepFlags, /* Z
33aa0 65 72 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49  ero or more SQLI
33ab0 54 45 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67  TE_PREPARE_ flag
33ac0 73 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  s */.  sqlite3_s
33ad0 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
33ae0 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
33af0 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33b00 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c  st void **pzTail
33b10 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
33b20 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
33b30 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
33b40 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  /.);../*.** CAPI
33b50 33 52 45 46 3a 20 52 65 74 72 69 65 76 69 6e 67  3REF: Retrieving
33b60 20 53 74 61 74 65 6d 65 6e 74 20 53 51 4c 0a 2a   Statement SQL.*
33b70 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
33b80 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68  3_stmt.**.** ^Th
33b90 65 20 73 71 6c 69 74 65 33 5f 73 71 6c 28 50 29  e sqlite3_sql(P)
33ba0 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
33bb0 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ns a pointer to 
33bc0 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 55 54  a copy of the UT
33bd0 46 2d 38 0a 2a 2a 20 53 51 4c 20 74 65 78 74 20  F-8.** SQL text 
33be0 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 5b  used to create [
33bf0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
33c00 6e 74 5d 20 50 20 69 66 20 50 20 77 61 73 0a 2a  nt] P if P was.*
33c10 2a 20 63 72 65 61 74 65 64 20 62 79 20 5b 73 71  * created by [sq
33c20 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
33c30 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72  ()], [sqlite3_pr
33c40 65 70 61 72 65 5f 76 33 28 29 5d 2c 0a 2a 2a 20  epare_v3()],.** 
33c50 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
33c60 31 36 5f 76 32 28 29 5d 2c 20 6f 72 20 5b 73 71  16_v2()], or [sq
33c70 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
33c80 76 33 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73  v3()]..** ^The s
33c90 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
33ca0 73 71 6c 28 50 29 20 69 6e 74 65 72 66 61 63 65  sql(P) interface
33cb0 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
33cc0 65 72 20 74 6f 20 61 20 55 54 46 2d 38 0a 2a 2a  er to a UTF-8.**
33cd0 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
33ce0 6e 67 20 74 68 65 20 53 51 4c 20 74 65 78 74 20  ng the SQL text 
33cf0 6f 66 20 70 72 65 70 61 72 65 64 20 73 74 61 74  of prepared stat
33d00 65 6d 65 6e 74 20 50 20 77 69 74 68 0a 2a 2a 20  ement P with.** 
33d10 5b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72  [bound parameter
33d20 73 5d 20 65 78 70 61 6e 64 65 64 2e 0a 2a 2a 0a  s] expanded..**.
33d30 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65  ** ^(For example
33d40 2c 20 69 66 20 61 20 70 72 65 70 61 72 65 64 20  , if a prepared 
33d50 73 74 61 74 65 6d 65 6e 74 20 69 73 20 63 72 65  statement is cre
33d60 61 74 65 64 20 75 73 69 6e 67 20 74 68 65 20 53  ated using the S
33d70 51 4c 0a 2a 2a 20 74 65 78 74 20 22 53 45 4c 45  QL.** text "SELE
33d80 43 54 20 24 61 62 63 2c 3a 78 79 7a 22 20 61 6e  CT $abc,:xyz" an
33d90 64 20 69 66 20 70 61 72 61 6d 65 74 65 72 20 24  d if parameter $
33da0 61 62 63 20 69 73 20 62 6f 75 6e 64 20 74 6f 20  abc is bound to 
33db0 69 6e 74 65 67 65 72 20 32 33 34 35 0a 2a 2a 20  integer 2345.** 
33dc0 61 6e 64 20 70 61 72 61 6d 65 74 65 72 20 3a 78  and parameter :x
33dd0 79 7a 20 69 73 20 75 6e 62 6f 75 6e 64 2c 20 74  yz is unbound, t
33de0 68 65 6e 20 73 71 6c 69 74 65 33 5f 73 71 6c 28  hen sqlite3_sql(
33df0 29 20 77 69 6c 6c 20 72 65 74 75 72 6e 0a 2a 2a  ) will return.**
33e00 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74   the original st
33e10 72 69 6e 67 2c 20 22 53 45 4c 45 43 54 20 24 61  ring, "SELECT $a
33e20 62 63 2c 3a 78 79 7a 22 20 62 75 74 20 73 71 6c  bc,:xyz" but sql
33e30 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
33e40 6c 28 29 0a 2a 2a 20 77 69 6c 6c 20 72 65 74 75  l().** will retu
33e50 72 6e 20 22 53 45 4c 45 43 54 20 32 33 34 35 2c  rn "SELECT 2345,
33e60 4e 55 4c 4c 22 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  NULL".)^.**.** ^
33e70 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 70 61  The sqlite3_expa
33e80 6e 64 65 64 5f 73 71 6c 28 29 20 69 6e 74 65 72  nded_sql() inter
33e90 66 61 63 65 20 72 65 74 75 72 6e 73 20 4e 55 4c  face returns NUL
33ea0 4c 20 69 66 20 69 6e 73 75 66 66 69 63 69 65 6e  L if insufficien
33eb0 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20 69 73 20 61  t memory.** is a
33ec0 76 61 69 6c 61 62 6c 65 20 74 6f 20 68 6f 6c 64  vailable to hold
33ed0 20 74 68 65 20 72 65 73 75 6c 74 2c 20 6f 72 20   the result, or 
33ee0 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 77 6f  if the result wo
33ef0 75 6c 64 20 65 78 63 65 65 64 20 74 68 65 0a 2a  uld exceed the.*
33f00 2a 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 73 74  * the maximum st
33f10 72 69 6e 67 20 6c 65 6e 67 74 68 20 64 65 74 65  ring length dete
33f20 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 5b 53  rmined by the [S
33f30 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47  QLITE_LIMIT_LENG
33f40 54 48 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  TH]..**.** ^The 
33f50 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 49  [SQLITE_TRACE_SI
33f60 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d 70 69 6c  ZE_LIMIT] compil
33f70 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6c 69  e-time option li
33f80 6d 69 74 73 20 74 68 65 20 73 69 7a 65 20 6f 66  mits the size of
33f90 0a 2a 2a 20 62 6f 75 6e 64 20 70 61 72 61 6d 65  .** bound parame
33fa0 74 65 72 20 65 78 70 61 6e 73 69 6f 6e 73 2e 20  ter expansions. 
33fb0 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d   ^The [SQLITE_OM
33fc0 49 54 5f 54 52 41 43 45 5d 20 63 6f 6d 70 69 6c  IT_TRACE] compil
33fd0 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e  e-time.** option
33fe0 20 63 61 75 73 65 73 20 73 71 6c 69 74 65 33 5f   causes sqlite3_
33ff0 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 29 20 74  expanded_sql() t
34000 6f 20 61 6c 77 61 79 73 20 72 65 74 75 72 6e 20  o always return 
34010 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  NULL..**.** ^The
34020 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e 65 64   string returned
34030 20 62 79 20 73 71 6c 69 74 65 33 5f 73 71 6c 28   by sqlite3_sql(
34040 50 29 20 69 73 20 6d 61 6e 61 67 65 64 20 62 79  P) is managed by
34050 20 53 51 4c 69 74 65 20 61 6e 64 20 69 73 0a 2a   SQLite and is.*
34060 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  * automatically 
34070 66 72 65 65 64 20 77 68 65 6e 20 74 68 65 20 70  freed when the p
34080 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
34090 74 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 2e 0a  t is finalized..
340a0 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67 20 72  ** ^The string r
340b0 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
340c0 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
340d0 50 29 2c 20 6f 6e 20 74 68 65 20 6f 74 68 65 72  P), on the other
340e0 20 68 61 6e 64 2c 0a 2a 2a 20 69 73 20 6f 62 74   hand,.** is obt
340f0 61 69 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69  ained from [sqli
34100 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61 6e  te3_malloc()] an
34110 64 20 6d 75 73 74 20 62 65 20 66 72 65 65 20 62  d must be free b
34120 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
34130 6e 0a 2a 2a 20 62 79 20 70 61 73 73 69 6e 67 20  n.** by passing 
34140 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66  it to [sqlite3_f
34150 72 65 65 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  ree()]..*/.SQLIT
34160 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
34170 20 2a 73 71 6c 69 74 65 33 5f 73 71 6c 28 73 71   *sqlite3_sql(sq
34180 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d  lite3_stmt *pStm
34190 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  t);.SQLITE_API c
341a0 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 78 70  har *sqlite3_exp
341b0 61 6e 64 65 64 5f 73 71 6c 28 73 71 6c 69 74 65  anded_sql(sqlite
341c0 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a  3_stmt *pStmt);.
341d0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
341e0 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41 6e   Determine If An
341f0 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20 57   SQL Statement W
34200 72 69 74 65 73 20 54 68 65 20 44 61 74 61 62 61  rites The Databa
34210 73 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  se.** METHOD: sq
34220 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a  lite3_stmt.**.**
34230 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74   ^The sqlite3_st
34240 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 58 29 20 69  mt_readonly(X) i
34250 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
34260 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29   true (non-zero)
34270 20 69 66 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79 20   if.** and only 
34280 69 66 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  if the [prepared
34290 20 73 74 61 74 65 6d 65 6e 74 5d 20 58 20 6d 61   statement] X ma
342a0 6b 65 73 20 6e 6f 20 64 69 72 65 63 74 20 63 68  kes no direct ch
342b0 61 6e 67 65 73 20 74 6f 0a 2a 2a 20 74 68 65 20  anges to.** the 
342c0 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64  content of the d
342d0 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 2a 2a  atabase file..**
342e0 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 61  .** Note that [a
342f0 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
34300 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  ed SQL functions
34310 5d 20 6f 72 0a 2a 2a 20 5b 76 69 72 74 75 61 6c  ] or.** [virtual
34320 20 74 61 62 6c 65 73 5d 20 6d 69 67 68 74 20 63   tables] might c
34330 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 62 61  hange the databa
34340 73 65 20 69 6e 64 69 72 65 63 74 6c 79 20 61 73  se indirectly as
34350 20 61 20 73 69 64 65 20 65 66 66 65 63 74 2e 20   a side effect. 
34360 20 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d 70   .** ^(For examp
34370 6c 65 2c 20 69 66 20 61 6e 20 61 70 70 6c 69 63  le, if an applic
34380 61 74 69 6f 6e 20 64 65 66 69 6e 65 73 20 61 20  ation defines a 
34390 66 75 6e 63 74 69 6f 6e 20 22 65 76 61 6c 28 29  function "eval()
343a0 22 20 74 68 61 74 20 0a 2a 2a 20 63 61 6c 6c 73  " that .** calls
343b0 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29   [sqlite3_exec()
343c0 5d 2c 20 74 68 65 6e 20 74 68 65 20 66 6f 6c 6c  ], then the foll
343d0 6f 77 69 6e 67 20 53 51 4c 20 73 74 61 74 65 6d  owing SQL statem
343e0 65 6e 74 20 77 6f 75 6c 64 0a 2a 2a 20 63 68 61  ent would.** cha
343f0 6e 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65  nge the database
34400 20 66 69 6c 65 20 74 68 72 6f 75 67 68 20 73 69   file through si
34410 64 65 2d 65 66 66 65 63 74 73 3a 0a 2a 2a 0a 2a  de-effects:.**.*
34420 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  * <blockquote><p
34430 72 65 3e 0a 2a 2a 20 20 20 20 53 45 4c 45 43 54  re>.**    SELECT
34440 20 65 76 61 6c 28 27 44 45 4c 45 54 45 20 46 52   eval('DELETE FR
34450 4f 4d 20 74 31 27 29 20 46 52 4f 4d 20 74 32 3b  OM t1') FROM t2;
34460 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  .** </pre></bloc
34470 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 42 75  kquote>.**.** Bu
34480 74 20 62 65 63 61 75 73 65 20 74 68 65 20 5b 53  t because the [S
34490 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74  ELECT] statement
344a0 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65   does not change
344b0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
344c0 6c 65 0a 2a 2a 20 64 69 72 65 63 74 6c 79 2c 20  le.** directly, 
344d0 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
344e0 64 6f 6e 6c 79 28 29 20 77 6f 75 6c 64 20 73 74  donly() would st
344f0 69 6c 6c 20 72 65 74 75 72 6e 20 74 72 75 65 2e  ill return true.
34500 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 72 61 6e 73 61  )^.**.** ^Transa
34510 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 74  ction control st
34520 61 74 65 6d 65 6e 74 73 20 73 75 63 68 20 61 73  atements such as
34530 20 5b 42 45 47 49 4e 5d 2c 20 5b 43 4f 4d 4d 49   [BEGIN], [COMMI
34540 54 5d 2c 20 5b 52 4f 4c 4c 42 41 43 4b 5d 2c 0a  T], [ROLLBACK],.
34550 2a 2a 20 5b 53 41 56 45 50 4f 49 4e 54 5d 2c 20  ** [SAVEPOINT], 
34560 61 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20 63 61  and [RELEASE] ca
34570 75 73 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  use sqlite3_stmt
34580 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72  _readonly() to r
34590 65 74 75 72 6e 20 74 72 75 65 2c 0a 2a 2a 20 73  eturn true,.** s
345a0 69 6e 63 65 20 74 68 65 20 73 74 61 74 65 6d 65  ince the stateme
345b0 6e 74 73 20 74 68 65 6d 73 65 6c 76 65 73 20 64  nts themselves d
345c0 6f 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 6d  o not actually m
345d0 6f 64 69 66 79 20 74 68 65 20 64 61 74 61 62 61  odify the databa
345e0 73 65 20 62 75 74 0a 2a 2a 20 72 61 74 68 65 72  se but.** rather
345f0 20 74 68 65 79 20 63 6f 6e 74 72 6f 6c 20 74 68   they control th
34600 65 20 74 69 6d 69 6e 67 20 6f 66 20 77 68 65 6e  e timing of when
34610 20 6f 74 68 65 72 20 73 74 61 74 65 6d 65 6e 74   other statement
34620 73 20 6d 6f 64 69 66 79 20 74 68 65 20 0a 2a 2a  s modify the .**
34630 20 64 61 74 61 62 61 73 65 2e 20 20 5e 54 68 65   database.  ^The
34640 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b 44   [ATTACH] and [D
34650 45 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e 74  ETACH] statement
34660 73 20 61 6c 73 6f 20 63 61 75 73 65 0a 2a 2a 20  s also cause.** 
34670 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
34680 64 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75 72  donly() to retur
34690 6e 20 74 72 75 65 20 73 69 6e 63 65 2c 20 77 68  n true since, wh
346a0 69 6c 65 20 74 68 6f 73 65 20 73 74 61 74 65 6d  ile those statem
346b0 65 6e 74 73 0a 2a 2a 20 63 68 61 6e 67 65 20 74  ents.** change t
346c0 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  he configuration
346d0 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 63   of a database c
346e0 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 79 20  onnection, they 
346f0 64 6f 20 6e 6f 74 20 6d 61 6b 65 20 0a 2a 2a 20  do not make .** 
34700 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20 63  changes to the c
34710 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64 61  ontent of the da
34720 74 61 62 61 73 65 20 66 69 6c 65 73 20 6f 6e 20  tabase files on 
34730 64 69 73 6b 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  disk..** ^The sq
34740 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
34750 6e 6c 79 28 29 20 69 6e 74 65 72 66 61 63 65 20  nly() interface 
34760 72 65 74 75 72 6e 73 20 74 72 75 65 20 66 6f 72  returns true for
34770 20 5b 42 45 47 49 4e 5d 20 73 69 6e 63 65 0a 2a   [BEGIN] since.*
34780 2a 20 5b 42 45 47 49 4e 5d 20 6d 65 72 65 6c 79  * [BEGIN] merely
34790 20 73 65 74 73 20 69 6e 74 65 72 6e 61 6c 20 66   sets internal f
347a0 6c 61 67 73 2c 20 62 75 74 20 74 68 65 20 5b 42  lags, but the [B
347b0 45 47 49 4e 7c 42 45 47 49 4e 20 49 4d 4d 45 44  EGIN|BEGIN IMMED
347c0 49 41 54 45 5d 20 61 6e 64 0a 2a 2a 20 5b 42 45  IATE] and.** [BE
347d0 47 49 4e 7c 42 45 47 49 4e 20 45 58 43 4c 55 53  GIN|BEGIN EXCLUS
347e0 49 56 45 5d 20 63 6f 6d 6d 61 6e 64 73 20 64 6f  IVE] commands do
347f0 20 74 6f 75 63 68 20 74 68 65 20 64 61 74 61 62   touch the datab
34800 61 73 65 20 61 6e 64 20 73 6f 0a 2a 2a 20 73 71  ase and so.** sq
34810 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f  lite3_stmt_reado
34820 6e 6c 79 28 29 20 72 65 74 75 72 6e 73 20 66 61  nly() returns fa
34830 6c 73 65 20 66 6f 72 20 74 68 6f 73 65 20 63 6f  lse for those co
34840 6d 6d 61 6e 64 73 2e 0a 2a 2f 0a 53 51 4c 49 54  mmands..*/.SQLIT
34850 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
34860 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
34870 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
34880 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  tmt);../*.** CAP
34890 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65  I3REF: Determine
348a0 20 49 66 20 41 20 50 72 65 70 61 72 65 64 20 53   If A Prepared S
348b0 74 61 74 65 6d 65 6e 74 20 48 61 73 20 42 65 65  tatement Has Bee
348c0 6e 20 52 65 73 65 74 0a 2a 2a 20 4d 45 54 48 4f  n Reset.** METHO
348d0 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a  D: sqlite3_stmt.
348e0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
348f0 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29 20  e3_stmt_busy(S) 
34900 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e  interface return
34910 73 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f  s true (non-zero
34920 29 20 69 66 20 74 68 65 0a 2a 2a 20 5b 70 72 65  ) if the.** [pre
34930 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
34940 20 53 20 68 61 73 20 62 65 65 6e 20 73 74 65 70   S has been step
34950 70 65 64 20 61 74 20 6c 65 61 73 74 20 6f 6e 63  ped at least onc
34960 65 20 75 73 69 6e 67 20 0a 2a 2a 20 5b 73 71 6c  e using .** [sql
34970 69 74 65 33 5f 73 74 65 70 28 53 29 5d 20 62 75  ite3_step(S)] bu
34980 74 20 68 61 73 20 6e 65 69 74 68 65 72 20 72 75  t has neither ru
34990 6e 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f 6e 20  n to completion 
349a0 28 72 65 74 75 72 6e 65 64 0a 2a 2a 20 5b 53 51  (returned.** [SQ
349b0 4c 49 54 45 5f 44 4f 4e 45 5d 20 66 72 6f 6d 20  LITE_DONE] from 
349c0 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 53 29  [sqlite3_step(S)
349d0 5d 29 20 6e 6f 72 0a 2a 2a 20 62 65 65 6e 20 72  ]) nor.** been r
349e0 65 73 65 74 20 75 73 69 6e 67 20 5b 73 71 6c 69  eset using [sqli
349f0 74 65 33 5f 72 65 73 65 74 28 53 29 5d 2e 20 20  te3_reset(S)].  
34a00 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d  ^The sqlite3_stm
34a10 74 5f 62 75 73 79 28 53 29 0a 2a 2a 20 69 6e 74  t_busy(S).** int
34a20 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 66  erface returns f
34a30 61 6c 73 65 20 69 66 20 53 20 69 73 20 61 20 4e  alse if S is a N
34a40 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 49 66  ULL pointer.  If
34a50 20 53 20 69 73 20 6e 6f 74 20 61 20 0a 2a 2a 20   S is not a .** 
34a60 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 61 6e 64  NULL pointer and
34a70 20 69 73 20 6e 6f 74 20 61 20 70 6f 69 6e 74 65   is not a pointe
34a80 72 20 74 6f 20 61 20 76 61 6c 69 64 20 5b 70 72  r to a valid [pr
34a90 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
34aa0 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2c 20 74 68 65  ].** object, the
34ab0 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 69  n the behavior i
34ac0 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20  s undefined and 
34ad0 70 72 6f 62 61 62 6c 79 20 75 6e 64 65 73 69 72  probably undesir
34ae0 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  able..**.** This
34af0 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62   interface can b
34b00 65 20 75 73 65 64 20 69 6e 20 63 6f 6d 62 69 6e  e used in combin
34b10 61 74 69 6f 6e 20 5b 73 71 6c 69 74 65 33 5f 6e  ation [sqlite3_n
34b20 65 78 74 5f 73 74 6d 74 28 29 5d 0a 2a 2a 20 74  ext_stmt()].** t
34b30 6f 20 6c 6f 63 61 74 65 20 61 6c 6c 20 70 72 65  o locate all pre
34b40 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
34b50 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
34b60 20 61 20 64 61 74 61 62 61 73 65 20 0a 2a 2a 20   a database .** 
34b70 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
34b80 61 72 65 20 69 6e 20 6e 65 65 64 20 6f 66 20 62  are in need of b
34b90 65 69 6e 67 20 72 65 73 65 74 2e 20 20 54 68 69  eing reset.  Thi
34ba0 73 20 63 61 6e 20 62 65 20 75 73 65 64 2c 0a 2a  s can be used,.*
34bb0 2a 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  * for example, i
34bc0 6e 20 64 69 61 67 6e 6f 73 74 69 63 20 72 6f 75  n diagnostic rou
34bd0 74 69 6e 65 73 20 74 6f 20 73 65 61 72 63 68 20  tines to search 
34be0 66 6f 72 20 70 72 65 70 61 72 65 64 20 0a 2a 2a  for prepared .**
34bf0 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 74   statements that
34c00 20 61 72 65 20 68 6f 6c 64 69 6e 67 20 61 20 74   are holding a t
34c10 72 61 6e 73 61 63 74 69 6f 6e 20 6f 70 65 6e 2e  ransaction open.
34c20 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
34c30 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f  nt sqlite3_stmt_
34c40 62 75 73 79 28 73 71 6c 69 74 65 33 5f 73 74 6d  busy(sqlite3_stm
34c50 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  t*);../*.** CAPI
34c60 33 52 45 46 3a 20 44 79 6e 61 6d 69 63 61 6c 6c  3REF: Dynamicall
34c70 79 20 54 79 70 65 64 20 56 61 6c 75 65 20 4f 62  y Typed Value Ob
34c80 6a 65 63 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  ject.** KEYWORDS
34c90 3a 20 7b 70 72 6f 74 65 63 74 65 64 20 73 71 6c  : {protected sql
34ca0 69 74 65 33 5f 76 61 6c 75 65 7d 20 7b 75 6e 70  ite3_value} {unp
34cb0 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33  rotected sqlite3
34cc0 5f 76 61 6c 75 65 7d 0a 2a 2a 0a 2a 2a 20 53 51  _value}.**.** SQ
34cd0 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 73 71  Lite uses the sq
34ce0 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65  lite3_value obje
34cf0 63 74 20 74 6f 20 72 65 70 72 65 73 65 6e 74 20  ct to represent 
34d00 61 6c 6c 20 76 61 6c 75 65 73 0a 2a 2a 20 74 68  all values.** th
34d10 61 74 20 63 61 6e 20 62 65 20 73 74 6f 72 65 64  at can be stored
34d20 20 69 6e 20 61 20 64 61 74 61 62 61 73 65 20 74   in a database t
34d30 61 62 6c 65 2e 20 53 51 4c 69 74 65 20 75 73 65  able. SQLite use
34d40 73 20 64 79 6e 61 6d 69 63 20 74 79 70 69 6e 67  s dynamic typing
34d50 0a 2a 2a 20 66 6f 72 20 74 68 65 20 76 61 6c 75  .** for the valu
34d60 65 73 20 69 74 20 73 74 6f 72 65 73 2e 20 20 5e  es it stores.  ^
34d70 56 61 6c 75 65 73 20 73 74 6f 72 65 64 20 69 6e  Values stored in
34d80 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
34d90 62 6a 65 63 74 73 0a 2a 2a 20 63 61 6e 20 62 65  bjects.** can be
34da0 20 69 6e 74 65 67 65 72 73 2c 20 66 6c 6f 61 74   integers, float
34db0 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 73  ing point values
34dc0 2c 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42 73  , strings, BLOBs
34dd0 2c 20 6f 72 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a  , or NULL..**.**
34de0 20 41 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75   An sqlite3_valu
34df0 65 20 6f 62 6a 65 63 74 20 6d 61 79 20 62 65 20  e object may be 
34e00 65 69 74 68 65 72 20 22 70 72 6f 74 65 63 74 65  either "protecte
34e10 64 22 20 6f 72 20 22 75 6e 70 72 6f 74 65 63 74  d" or "unprotect
34e20 65 64 22 2e 0a 2a 2a 20 53 6f 6d 65 20 69 6e 74  ed"..** Some int
34e30 65 72 66 61 63 65 73 20 72 65 71 75 69 72 65 20  erfaces require 
34e40 61 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  a protected sqli
34e50 74 65 33 5f 76 61 6c 75 65 2e 20 20 4f 74 68 65  te3_value.  Othe
34e60 72 20 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20  r interfaces.** 
34e70 77 69 6c 6c 20 61 63 63 65 70 74 20 65 69 74 68  will accept eith
34e80 65 72 20 61 20 70 72 6f 74 65 63 74 65 64 20 6f  er a protected o
34e90 72 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65 64  r an unprotected
34ea0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e 0a   sqlite3_value..
34eb0 2a 2a 20 45 76 65 72 79 20 69 6e 74 65 72 66 61  ** Every interfa
34ec0 63 65 20 74 68 61 74 20 61 63 63 65 70 74 73 20  ce that accepts 
34ed0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 61 72  sqlite3_value ar
34ee0 67 75 6d 65 6e 74 73 20 73 70 65 63 69 66 69 65  guments specifie
34ef0 73 0a 2a 2a 20 77 68 65 74 68 65 72 20 6f 72 20  s.** whether or 
34f00 6e 6f 74 20 69 74 20 72 65 71 75 69 72 65 73 20  not it requires 
34f10 61 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  a protected sqli
34f20 74 65 33 5f 76 61 6c 75 65 2e 20 20 54 68 65 0a  te3_value.  The.
34f30 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  ** [sqlite3_valu
34f40 65 5f 64 75 70 28 29 5d 20 69 6e 74 65 72 66 61  e_dup()] interfa
34f50 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ce can be used t
34f60 6f 20 63 6f 6e 73 74 72 75 63 74 20 61 20 6e 65  o construct a ne
34f70 77 20 0a 2a 2a 20 70 72 6f 74 65 63 74 65 64 20  w .** protected 
34f80 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 66 72  sqlite3_value fr
34f90 6f 6d 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65  om an unprotecte
34fa0 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
34fb0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 65 72 6d 73  .**.** The terms
34fc0 20 22 70 72 6f 74 65 63 74 65 64 22 20 61 6e 64   "protected" and
34fd0 20 22 75 6e 70 72 6f 74 65 63 74 65 64 22 20 72   "unprotected" r
34fe0 65 66 65 72 20 74 6f 20 77 68 65 74 68 65 72 20  efer to whether 
34ff0 6f 72 20 6e 6f 74 0a 2a 2a 20 61 20 6d 75 74 65  or not.** a mute
35000 78 20 69 73 20 68 65 6c 64 2e 20 20 41 6e 20 69  x is held.  An i
35010 6e 74 65 72 6e 61 6c 20 6d 75 74 65 78 20 69 73  nternal mutex is
35020 20 68 65 6c 64 20 66 6f 72 20 61 20 70 72 6f 74   held for a prot
35030 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33  ected.** sqlite3
35040 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 62 75  _value object bu
35050 74 20 6e 6f 20 6d 75 74 65 78 20 69 73 20 68 65  t no mutex is he
35060 6c 64 20 66 6f 72 20 61 6e 20 75 6e 70 72 6f 74  ld for an unprot
35070 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33  ected.** sqlite3
35080 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 2e 20 20  _value object.  
35090 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
350a0 70 69 6c 65 64 20 74 6f 20 62 65 20 73 69 6e 67  piled to be sing
350b0 6c 65 2d 74 68 72 65 61 64 65 64 0a 2a 2a 20 28  le-threaded.** (
350c0 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 54 48 52  with [SQLITE_THR
350d0 45 41 44 53 41 46 45 3d 30 5d 20 61 6e 64 20 77  EADSAFE=0] and w
350e0 69 74 68 20 5b 73 71 6c 69 74 65 33 5f 74 68 72  ith [sqlite3_thr
350f0 65 61 64 73 61 66 65 28 29 5d 20 72 65 74 75 72  eadsafe()] retur
35100 6e 69 6e 67 20 30 29 0a 2a 2a 20 6f 72 20 69 66  ning 0).** or if
35110 20 53 51 4c 69 74 65 20 69 73 20 72 75 6e 20 69   SQLite is run i
35120 6e 20 6f 6e 65 20 6f 66 20 72 65 64 75 63 65 64  n one of reduced
35130 20 6d 75 74 65 78 20 6d 6f 64 65 73 20 0a 2a 2a   mutex modes .**
35140 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
35150 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 20 6f 72  SINGLETHREAD] or
35160 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
35170 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 2a 2a 20  MULTITHREAD].** 
35180 74 68 65 6e 20 74 68 65 72 65 20 69 73 20 6e 6f  then there is no
35190 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62 65 74   distinction bet
351a0 77 65 65 6e 20 70 72 6f 74 65 63 74 65 64 20 61  ween protected a
351b0 6e 64 20 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a  nd unprotected.*
351c0 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  * sqlite3_value 
351d0 6f 62 6a 65 63 74 73 20 61 6e 64 20 74 68 65 79  objects and they
351e0 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 74   can be used int
351f0 65 72 63 68 61 6e 67 65 61 62 6c 79 2e 20 20 48  erchangeably.  H
35200 6f 77 65 76 65 72 2c 0a 2a 2a 20 66 6f 72 20 6d  owever,.** for m
35210 61 78 69 6d 75 6d 20 63 6f 64 65 20 70 6f 72 74  aximum code port
35220 61 62 69 6c 69 74 79 20 69 74 20 69 73 20 72 65  ability it is re
35230 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20 61  commended that a
35240 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73  pplications.** s
35250 74 69 6c 6c 20 6d 61 6b 65 20 74 68 65 20 64 69  till make the di
35260 73 74 69 6e 63 74 69 6f 6e 20 62 65 74 77 65 65  stinction betwee
35270 6e 20 70 72 6f 74 65 63 74 65 64 20 61 6e 64 20  n protected and 
35280 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73  unprotected.** s
35290 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
352a0 65 63 74 73 20 65 76 65 6e 20 77 68 65 6e 20 6e  ects even when n
352b0 6f 74 20 73 74 72 69 63 74 6c 79 20 72 65 71 75  ot strictly requ
352c0 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ired..**.** ^The
352d0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
352e0 62 6a 65 63 74 73 20 74 68 61 74 20 61 72 65 20  bjects that are 
352f0 70 61 73 73 65 64 20 61 73 20 70 61 72 61 6d 65  passed as parame
35300 74 65 72 73 20 69 6e 74 6f 20 74 68 65 0a 2a 2a  ters into the.**
35310 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
35320 6f 66 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d  of [application-
35330 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63  defined SQL func
35340 74 69 6f 6e 73 5d 20 61 72 65 20 70 72 6f 74 65  tions] are prote
35350 63 74 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  cted..** ^The sq
35360 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65  lite3_value obje
35370 63 74 20 72 65 74 75 72 6e 65 64 20 62 79 0a 2a  ct returned by.*
35380 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  * [sqlite3_colum
35390 6e 5f 76 61 6c 75 65 28 29 5d 20 69 73 20 75 6e  n_value()] is un
353a0 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20 55 6e  protected..** Un
353b0 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65  protected sqlite
353c0 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20  3_value objects 
353d0 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  may only be used
353e0 20 61 73 20 61 72 67 75 6d 65 6e 74 73 0a 2a 2a   as arguments.**
353f0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73   to [sqlite3_res
35400 75 6c 74 5f 76 61 6c 75 65 28 29 5d 2c 20 5b 73  ult_value()], [s
35410 71 6c 69 74 65 33 5f 62 69 6e 64 5f 76 61 6c 75  qlite3_bind_valu
35420 65 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71  e()], and.** [sq
35430 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 75 70 28  lite3_value_dup(
35440 29 5d 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69  )]..** The [sqli
35450 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 20 7c  te3_value_blob |
35460 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 74   sqlite3_value_t
35470 79 70 65 28 29 5d 20 66 61 6d 69 6c 79 20 6f 66  ype()] family of
35480 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 72  .** interfaces r
35490 65 71 75 69 72 65 20 70 72 6f 74 65 63 74 65 64  equire protected
354a0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
354b0 62 6a 65 63 74 73 2e 0a 2a 2f 0a 74 79 70 65 64  bjects..*/.typed
354c0 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
354d0 33 5f 76 61 6c 75 65 20 73 71 6c 69 74 65 33 5f  3_value sqlite3_
354e0 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  value;../*.** CA
354f0 50 49 33 52 45 46 3a 20 53 51 4c 20 46 75 6e 63  PI3REF: SQL Func
35500 74 69 6f 6e 20 43 6f 6e 74 65 78 74 20 4f 62 6a  tion Context Obj
35510 65 63 74 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63 6f  ect.**.** The co
35520 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20 61  ntext in which a
35530 6e 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 65  n SQL function e
35540 78 65 63 75 74 65 73 20 69 73 20 73 74 6f 72 65  xecutes is store
35550 64 20 69 6e 20 61 6e 0a 2a 2a 20 73 71 6c 69 74  d in an.** sqlit
35560 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65 63  e3_context objec
35570 74 2e 20 20 5e 41 20 70 6f 69 6e 74 65 72 20 74  t.  ^A pointer t
35580 6f 20 61 6e 20 73 71 6c 69 74 65 33 5f 63 6f 6e  o an sqlite3_con
35590 74 65 78 74 20 6f 62 6a 65 63 74 0a 2a 2a 20 69  text object.** i
355a0 73 20 61 6c 77 61 79 73 20 66 69 72 73 74 20 70  s always first p
355b0 61 72 61 6d 65 74 65 72 20 74 6f 20 5b 61 70 70  arameter to [app
355c0 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
355d0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 2e   SQL functions].
355e0 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74  .** The applicat
355f0 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20  ion-defined SQL 
35600 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d 65  function impleme
35610 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20 70 61 73  ntation will pas
35620 73 20 74 68 69 73 0a 2a 2a 20 70 6f 69 6e 74 65  s this.** pointe
35630 72 20 74 68 72 6f 75 67 68 20 69 6e 74 6f 20 63  r through into c
35640 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65 33  alls to [sqlite3
35650 5f 72 65 73 75 6c 74 5f 69 6e 74 20 7c 20 73 71  _result_int | sq
35660 6c 69 74 65 33 5f 72 65 73 75 6c 74 28 29 5d 2c  lite3_result()],
35670 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 61 67 67  .** [sqlite3_agg
35680 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28 29  regate_context()
35690 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 75 73 65 72  ], [sqlite3_user
356a0 5f 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 5b 73 71  _data()],.** [sq
356b0 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 64 62  lite3_context_db
356c0 5f 68 61 6e 64 6c 65 28 29 5d 2c 20 5b 73 71 6c  _handle()], [sql
356d0 69 74 65 33 5f 67 65 74 5f 61 75 78 64 61 74 61  ite3_get_auxdata
356e0 28 29 5d 2c 0a 2a 2a 20 61 6e 64 2f 6f 72 20 5b  ()],.** and/or [
356f0 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 78 64  sqlite3_set_auxd
35700 61 74 61 28 29 5d 2e 0a 2a 2f 0a 74 79 70 65 64  ata()]..*/.typed
35710 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
35720 33 5f 63 6f 6e 74 65 78 74 20 73 71 6c 69 74 65  3_context sqlite
35730 33 5f 63 6f 6e 74 65 78 74 3b 0a 0a 2f 2a 0a 2a  3_context;../*.*
35740 2a 20 43 41 50 49 33 52 45 46 3a 20 42 69 6e 64  * CAPI3REF: Bind
35750 69 6e 67 20 56 61 6c 75 65 73 20 54 6f 20 50 72  ing Values To Pr
35760 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74  epared Statement
35770 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b  s.** KEYWORDS: {
35780 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 7d 20  host parameter} 
35790 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 73  {host parameters
357a0 7d 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65  } {host paramete
357b0 72 20 6e 61 6d 65 7d 0a 2a 2a 20 4b 45 59 57 4f  r name}.** KEYWO
357c0 52 44 53 3a 20 7b 53 51 4c 20 70 61 72 61 6d 65  RDS: {SQL parame
357d0 74 65 72 7d 20 7b 53 51 4c 20 70 61 72 61 6d 65  ter} {SQL parame
357e0 74 65 72 73 7d 20 7b 70 61 72 61 6d 65 74 65 72  ters} {parameter
357f0 20 62 69 6e 64 69 6e 67 7d 0a 2a 2a 20 4d 45 54   binding}.** MET
35800 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
35810 74 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68 65  t.**.** ^(In the
35820 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74   SQL statement t
35830 65 78 74 20 69 6e 70 75 74 20 74 6f 20 5b 73 71  ext input to [sq
35840 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
35850 28 29 5d 20 61 6e 64 20 69 74 73 20 76 61 72 69  ()] and its vari
35860 61 6e 74 73 2c 0a 2a 2a 20 6c 69 74 65 72 61 6c  ants,.** literal
35870 73 20 6d 61 79 20 62 65 20 72 65 70 6c 61 63 65  s may be replace
35880 64 20 62 79 20 61 20 5b 70 61 72 61 6d 65 74 65  d by a [paramete
35890 72 5d 20 74 68 61 74 20 6d 61 74 63 68 65 73 20  r] that matches 
358a0 6f 6e 65 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e 67  one of following
358b0 0a 2a 2a 20 74 65 6d 70 6c 61 74 65 73 3a 0a 2a  .** templates:.*
358c0 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
358d0 3e 20 20 3f 0a 2a 2a 20 3c 6c 69 3e 20 20 3f 4e  >  ?.** <li>  ?N
358e0 4e 4e 0a 2a 2a 20 3c 6c 69 3e 20 20 3a 56 56 56  NN.** <li>  :VVV
358f0 0a 2a 2a 20 3c 6c 69 3e 20 20 40 56 56 56 0a 2a  .** <li>  @VVV.*
35900 2a 20 3c 6c 69 3e 20 20 24 56 56 56 0a 2a 2a 20  * <li>  $VVV.** 
35910 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 49 6e 20 74  </ul>.**.** In t
35920 68 65 20 74 65 6d 70 6c 61 74 65 73 20 61 62 6f  he templates abo
35930 76 65 2c 20 4e 4e 4e 20 72 65 70 72 65 73 65 6e  ve, NNN represen
35940 74 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6c 69  ts an integer li
35950 74 65 72 61 6c 2c 0a 2a 2a 20 61 6e 64 20 56 56  teral,.** and VV
35960 56 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e 20  V represents an 
35970 61 6c 70 68 61 6e 75 6d 65 72 69 63 20 69 64 65  alphanumeric ide
35980 6e 74 69 66 69 65 72 2e 29 5e 20 20 5e 54 68 65  ntifier.)^  ^The
35990 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 73 65   values of these
359a0 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 20 28  .** parameters (
359b0 61 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f 73  also called "hos
359c0 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65  t parameter name
359d0 73 22 20 6f 72 20 22 53 51 4c 20 70 61 72 61 6d  s" or "SQL param
359e0 65 74 65 72 73 22 29 0a 2a 2a 20 63 61 6e 20 62  eters").** can b
359f0 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65 20  e set using the 
35a00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29  sqlite3_bind_*()
35a10 20 72 6f 75 74 69 6e 65 73 20 64 65 66 69 6e 65   routines define
35a20 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54  d here..**.** ^T
35a30 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
35a40 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  t to the sqlite3
35a50 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e  _bind_*() routin
35a60 65 73 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a 20  es is always.** 
35a70 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
35a80 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d 20   [sqlite3_stmt] 
35a90 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 20  object returned 
35aa0 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  from.** [sqlite3
35ab0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f  _prepare_v2()] o
35ac0 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 2e 0a  r its variants..
35ad0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 65 63 6f 6e  **.** ^The secon
35ae0 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68  d argument is th
35af0 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 53  e index of the S
35b00 51 4c 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  QL parameter to 
35b10 62 65 20 73 65 74 2e 0a 2a 2a 20 5e 54 68 65 20  be set..** ^The 
35b20 6c 65 66 74 6d 6f 73 74 20 53 51 4c 20 70 61 72  leftmost SQL par
35b30 61 6d 65 74 65 72 20 68 61 73 20 61 6e 20 69 6e  ameter has an in
35b40 64 65 78 20 6f 66 20 31 2e 20 20 5e 57 68 65 6e  dex of 1.  ^When
35b50 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 64 0a   the same named.
35b60 2a 2a 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72  ** SQL parameter
35b70 20 69 73 20 75 73 65 64 20 6d 6f 72 65 20 74 68   is used more th
35b80 61 6e 20 6f 6e 63 65 2c 20 73 65 63 6f 6e 64 20  an once, second 
35b90 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0a 2a  and subsequent.*
35ba0 2a 20 6f 63 63 75 72 72 65 6e 63 65 73 20 68 61  * occurrences ha
35bb0 76 65 20 74 68 65 20 73 61 6d 65 20 69 6e 64 65  ve the same inde
35bc0 78 20 61 73 20 74 68 65 20 66 69 72 73 74 20 6f  x as the first o
35bd0 63 63 75 72 72 65 6e 63 65 2e 0a 2a 2a 20 5e 54  ccurrence..** ^T
35be0 68 65 20 69 6e 64 65 78 20 66 6f 72 20 6e 61 6d  he index for nam
35bf0 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 63 61  ed parameters ca
35c00 6e 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20 75  n be looked up u
35c10 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71 6c  sing the.** [sql
35c20 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
35c30 74 65 72 5f 69 6e 64 65 78 28 29 5d 20 41 50 49  ter_index()] API
35c40 20 69 66 20 64 65 73 69 72 65 64 2e 20 20 5e 54   if desired.  ^T
35c50 68 65 20 69 6e 64 65 78 0a 2a 2a 20 66 6f 72 20  he index.** for 
35c60 22 3f 4e 4e 4e 22 20 70 61 72 61 6d 65 74 65 72  "?NNN" parameter
35c70 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f  s is the value o
35c80 66 20 4e 4e 4e 2e 0a 2a 2a 20 5e 54 68 65 20 4e  f NNN..** ^The N
35c90 4e 4e 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65  NN value must be
35ca0 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20 74   between 1 and t
35cb0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  he [sqlite3_limi
35cc0 74 28 29 5d 0a 2a 2a 20 70 61 72 61 6d 65 74 65  t()].** paramete
35cd0 72 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  r [SQLITE_LIMIT_
35ce0 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 5d  VARIABLE_NUMBER]
35cf0 20 28 64 65 66 61 75 6c 74 20 76 61 6c 75 65 3a   (default value:
35d00 20 39 39 39 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68   999)..**.** ^Th
35d10 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
35d20 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 6f   is the value to
35d30 20 62 69 6e 64 20 74 6f 20 74 68 65 20 70 61 72   bind to the par
35d40 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66 20 74  ameter..** ^If t
35d50 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
35d60 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69  er to sqlite3_bi
35d70 6e 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71 6c  nd_text() or sql
35d80 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36  ite3_bind_text16
35d90 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33  ().** or sqlite3
35da0 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69 73 20  _bind_blob() is 
35db0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74  a NULL pointer t
35dc0 68 65 6e 20 74 68 65 20 66 6f 75 72 74 68 20 70  hen the fourth p
35dd0 61 72 61 6d 65 74 65 72 0a 2a 2a 20 69 73 20 69  arameter.** is i
35de0 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20 65  gnored and the e
35df0 6e 64 20 72 65 73 75 6c 74 20 69 73 20 74 68 65  nd result is the
35e00 20 73 61 6d 65 20 61 73 20 73 71 6c 69 74 65 33   same as sqlite3
35e10 5f 62 69 6e 64 5f 6e 75 6c 6c 28 29 2e 0a 2a 2a  _bind_null()..**
35e20 0a 2a 2a 20 5e 28 49 6e 20 74 68 6f 73 65 20 72  .** ^(In those r
35e30 6f 75 74 69 6e 65 73 20 74 68 61 74 20 68 61 76  outines that hav
35e40 65 20 61 20 66 6f 75 72 74 68 20 61 72 67 75 6d  e a fourth argum
35e50 65 6e 74 2c 20 69 74 73 20 76 61 6c 75 65 20 69  ent, its value i
35e60 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20  s the.** number 
35e70 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65 20  of bytes in the 
35e80 70 61 72 61 6d 65 74 65 72 2e 20 20 54 6f 20 62  parameter.  To b
35e90 65 20 63 6c 65 61 72 3a 20 74 68 65 20 76 61 6c  e clear: the val
35ea0 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d  ue is the.** num
35eb0 62 65 72 20 6f 66 20 3c 75 3e 62 79 74 65 73 3c  ber of <u>bytes<
35ec0 2f 75 3e 20 69 6e 20 74 68 65 20 76 61 6c 75 65  /u> in the value
35ed0 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65 72  , not the number
35ee0 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 2e 29   of characters.)
35ef0 5e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 6f 75  ^.** ^If the fou
35f00 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rth parameter to
35f10 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
35f20 78 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  xt() or sqlite3_
35f30 62 69 6e 64 5f 74 65 78 74 31 36 28 29 0a 2a 2a  bind_text16().**
35f40 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68   is negative, th
35f50 65 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  en the length of
35f60 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 0a 2a   the string is.*
35f70 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  * the number of 
35f80 62 79 74 65 73 20 75 70 20 74 6f 20 74 68 65 20  bytes up to the 
35f90 66 69 72 73 74 20 7a 65 72 6f 20 74 65 72 6d 69  first zero termi
35fa0 6e 61 74 6f 72 2e 0a 2a 2a 20 49 66 20 74 68 65  nator..** If the
35fb0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
35fc0 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e  r to sqlite3_bin
35fd0 64 5f 62 6c 6f 62 28 29 20 69 73 20 6e 65 67 61  d_blob() is nega
35fe0 74 69 76 65 2c 20 74 68 65 6e 0a 2a 2a 20 74 68  tive, then.** th
35ff0 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e  e behavior is un
36000 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 49 66 20 61  defined..** If a
36010 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 66 6f   non-negative fo
36020 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
36030 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 73 71  s provided to sq
36040 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28  lite3_bind_text(
36050 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33 5f  ).** or sqlite3_
36060 62 69 6e 64 5f 74 65 78 74 31 36 28 29 20 6f 72  bind_text16() or
36070 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
36080 78 74 36 34 28 29 20 74 68 65 6e 0a 2a 2a 20 74  xt64() then.** t
36090 68 61 74 20 70 61 72 61 6d 65 74 65 72 20 6d 75  hat parameter mu
360a0 73 74 20 62 65 20 74 68 65 20 62 79 74 65 20 6f  st be the byte o
360b0 66 66 73 65 74 0a 2a 2a 20 77 68 65 72 65 20 74  ffset.** where t
360c0 68 65 20 4e 55 4c 20 74 65 72 6d 69 6e 61 74 6f  he NUL terminato
360d0 72 20 77 6f 75 6c 64 20 6f 63 63 75 72 20 61 73  r would occur as
360e0 73 75 6d 69 6e 67 20 74 68 65 20 73 74 72 69 6e  suming the strin
360f0 67 20 77 65 72 65 20 4e 55 4c 0a 2a 2a 20 74 65  g were NUL.** te
36100 72 6d 69 6e 61 74 65 64 2e 20 20 49 66 20 61 6e  rminated.  If an
36110 79 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72 73  y NUL characters
36120 20 6f 63 63 75 72 20 61 74 20 62 79 74 65 20 6f   occur at byte o
36130 66 66 73 65 74 73 20 6c 65 73 73 20 74 68 61 6e  ffsets less than
36140 20 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20 6f   .** the value o
36150 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72  f the fourth par
36160 61 6d 65 74 65 72 20 74 68 65 6e 20 74 68 65 20  ameter then the 
36170 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67  resulting string
36180 20 76 61 6c 75 65 20 77 69 6c 6c 0a 2a 2a 20 63   value will.** c
36190 6f 6e 74 61 69 6e 20 65 6d 62 65 64 64 65 64 20  ontain embedded 
361a0 4e 55 4c 73 2e 20 20 54 68 65 20 72 65 73 75 6c  NULs.  The resul
361b0 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73  t of expressions
361c0 20 69 6e 76 6f 6c 76 69 6e 67 20 73 74 72 69 6e   involving strin
361d0 67 73 0a 2a 2a 20 77 69 74 68 20 65 6d 62 65 64  gs.** with embed
361e0 64 65 64 20 4e 55 4c 73 20 69 73 20 75 6e 64 65  ded NULs is unde
361f0 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  fined..**.** ^Th
36200 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e 74  e fifth argument
36210 20 74 6f 20 74 68 65 20 42 4c 4f 42 20 61 6e 64   to the BLOB and
36220 20 73 74 72 69 6e 67 20 62 69 6e 64 69 6e 67 20   string binding 
36230 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20 69 73  interfaces.** is
36240 20 61 20 64 65 73 74 72 75 63 74 6f 72 20 75 73   a destructor us
36250 65 64 20 74 6f 20 64 69 73 70 6f 73 65 20 6f 66  ed to dispose of
36260 20 74 68 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a 20   the BLOB or.** 
36270 73 74 72 69 6e 67 20 61 66 74 65 72 20 53 51 4c  string after SQL
36280 69 74 65 20 68 61 73 20 66 69 6e 69 73 68 65 64  ite has finished
36290 20 77 69 74 68 20 69 74 2e 20 20 5e 54 68 65 20   with it.  ^The 
362a0 64 65 73 74 72 75 63 74 6f 72 20 69 73 20 63 61  destructor is ca
362b0 6c 6c 65 64 0a 2a 2a 20 74 6f 20 64 69 73 70 6f  lled.** to dispo
362c0 73 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20 6f  se of the BLOB o
362d0 72 20 73 74 72 69 6e 67 20 65 76 65 6e 20 69 66  r string even if
362e0 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 62 69 6e   the call to bin
362f0 64 20 41 50 49 20 66 61 69 6c 73 2e 0a 2a 2a 20  d API fails..** 
36300 5e 49 66 20 74 68 65 20 66 69 66 74 68 20 61 72  ^If the fifth ar
36310 67 75 6d 65 6e 74 20 69 73 0a 2a 2a 20 74 68 65  gument is.** the
36320 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20 5b   special value [
36330 53 51 4c 49 54 45 5f 53 54 41 54 49 43 5d 2c 20  SQLITE_STATIC], 
36340 74 68 65 6e 20 53 51 4c 69 74 65 20 61 73 73 75  then SQLite assu
36350 6d 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  mes that the.** 
36360 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 69  information is i
36370 6e 20 73 74 61 74 69 63 2c 20 75 6e 6d 61 6e 61  n static, unmana
36380 67 65 64 20 73 70 61 63 65 20 61 6e 64 20 64 6f  ged space and do
36390 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 62  es not need to b
363a0 65 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66 20  e freed..** ^If 
363b0 74 68 65 20 66 69 66 74 68 20 61 72 67 75 6d 65  the fifth argume
363c0 6e 74 20 68 61 73 20 74 68 65 20 76 61 6c 75 65  nt has the value
363d0 20 5b 53 51 4c 49 54 45 5f 54 52 41 4e 53 49 45   [SQLITE_TRANSIE
363e0 4e 54 5d 2c 20 74 68 65 6e 0a 2a 2a 20 53 51 4c  NT], then.** SQL
363f0 69 74 65 20 6d 61 6b 65 73 20 69 74 73 20 6f 77  ite makes its ow
36400 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20 6f  n private copy o
36410 66 20 74 68 65 20 64 61 74 61 20 69 6d 6d 65 64  f the data immed
36420 69 61 74 65 6c 79 2c 20 62 65 66 6f 72 65 0a 2a  iately, before.*
36430 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69  * the sqlite3_bi
36440 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 20 72  nd_*() routine r
36450 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  eturns..**.** ^T
36460 68 65 20 73 69 78 74 68 20 61 72 67 75 6d 65 6e  he sixth argumen
36470 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e  t to sqlite3_bin
36480 64 5f 74 65 78 74 36 34 28 29 20 6d 75 73 74 20  d_text64() must 
36490 62 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 5b 53 51  be one of.** [SQ
364a0 4c 49 54 45 5f 55 54 46 38 5d 2c 20 5b 53 51 4c  LITE_UTF8], [SQL
364b0 49 54 45 5f 55 54 46 31 36 5d 2c 20 5b 53 51 4c  ITE_UTF16], [SQL
364c0 49 54 45 5f 55 54 46 31 36 42 45 5d 2c 20 6f 72  ITE_UTF16BE], or
364d0 20 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 4c 45   [SQLITE_UTF16LE
364e0 5d 0a 2a 2a 20 74 6f 20 73 70 65 63 69 66 79 20  ].** to specify 
364f0 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 6f 66 20  the encoding of 
36500 74 68 65 20 74 65 78 74 20 69 6e 20 74 68 65 20  the text in the 
36510 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 2e  third parameter.
36520 20 20 49 66 0a 2a 2a 20 74 68 65 20 73 69 78 74    If.** the sixt
36530 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  h argument to sq
36540 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 36  lite3_bind_text6
36550 34 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65 20 6f  4() is not one o
36560 66 20 74 68 65 0a 2a 2a 20 61 6c 6c 6f 77 65 64  f the.** allowed
36570 20 76 61 6c 75 65 73 20 73 68 6f 77 6e 20 61 62   values shown ab
36580 6f 76 65 2c 20 6f 72 20 69 66 20 74 68 65 20 74  ove, or if the t
36590 65 78 74 20 65 6e 63 6f 64 69 6e 67 20 69 73 20  ext encoding is 
365a0 64 69 66 66 65 72 65 6e 74 0a 2a 2a 20 66 72 6f  different.** fro
365b0 6d 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 73  m the encoding s
365c0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
365d0 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72 2c  sixth parameter,
365e0 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69   then the behavi
365f0 6f 72 0a 2a 2a 20 69 73 20 75 6e 64 65 66 69 6e  or.** is undefin
36600 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ed..**.** ^The s
36610 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72 6f  qlite3_bind_zero
36620 62 6c 6f 62 28 29 20 72 6f 75 74 69 6e 65 20 62  blob() routine b
36630 69 6e 64 73 20 61 20 42 4c 4f 42 20 6f 66 20 6c  inds a BLOB of l
36640 65 6e 67 74 68 20 4e 20 74 68 61 74 0a 2a 2a 20  ength N that.** 
36650 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20 7a  is filled with z
36660 65 72 6f 65 73 2e 20 20 5e 41 20 7a 65 72 6f 62  eroes.  ^A zerob
36670 6c 6f 62 20 75 73 65 73 20 61 20 66 69 78 65 64  lob uses a fixed
36680 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f 72   amount of memor
36690 79 0a 2a 2a 20 28 6a 75 73 74 20 61 6e 20 69 6e  y.** (just an in
366a0 74 65 67 65 72 20 74 6f 20 68 6f 6c 64 20 69 74  teger to hold it
366b0 73 20 73 69 7a 65 29 20 77 68 69 6c 65 20 69 74  s size) while it
366c0 20 69 73 20 62 65 69 6e 67 20 70 72 6f 63 65 73   is being proces
366d0 73 65 64 2e 0a 2a 2a 20 5a 65 72 6f 62 6c 6f 62  sed..** Zeroblob
366e0 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20 74  s are intended t
366f0 6f 20 73 65 72 76 65 20 61 73 20 70 6c 61 63 65  o serve as place
36700 68 6f 6c 64 65 72 73 20 66 6f 72 20 42 4c 4f 42  holders for BLOB
36710 73 20 77 68 6f 73 65 0a 2a 2a 20 63 6f 6e 74 65  s whose.** conte
36720 6e 74 20 69 73 20 6c 61 74 65 72 20 77 72 69 74  nt is later writ
36730 74 65 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71  ten using.** [sq
36740 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e 20  lite3_blob_open 
36750 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42 4c  | incremental BL
36760 4f 42 20 49 2f 4f 5d 20 72 6f 75 74 69 6e 65 73  OB I/O] routines
36770 2e 0a 2a 2a 20 5e 41 20 6e 65 67 61 74 69 76 65  ..** ^A negative
36780 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20 7a   value for the z
36790 65 72 6f 62 6c 6f 62 20 72 65 73 75 6c 74 73 20  eroblob results 
367a0 69 6e 20 61 20 7a 65 72 6f 2d 6c 65 6e 67 74 68  in a zero-length
367b0 20 42 4c 4f 42 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68   BLOB..**.** ^Th
367c0 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70  e sqlite3_bind_p
367d0 6f 69 6e 74 65 72 28 53 2c 49 2c 50 2c 54 2c 44  ointer(S,I,P,T,D
367e0 29 20 72 6f 75 74 69 6e 65 20 63 61 75 73 65 73  ) routine causes
367f0 20 74 68 65 20 49 2d 74 68 20 70 61 72 61 6d 65   the I-th parame
36800 74 65 72 20 69 6e 0a 2a 2a 20 5b 70 72 65 70 61  ter in.** [prepa
36810 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 53  red statement] S
36820 20 74 6f 20 68 61 76 65 20 61 6e 20 53 51 4c 20   to have an SQL 
36830 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2c 20 62  value of NULL, b
36840 75 74 20 74 6f 20 61 6c 73 6f 20 62 65 0a 2a 2a  ut to also be.**
36850 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
36860 20 74 68 65 20 70 6f 69 6e 74 65 72 20 50 20 6f   the pointer P o
36870 66 20 74 79 70 65 20 54 2e 20 20 5e 44 20 69 73  f type T.  ^D is
36880 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c 20 70   either a NULL p
36890 6f 69 6e 74 65 72 20 6f 72 0a 2a 2a 20 61 20 70  ointer or.** a p
368a0 6f 69 6e 74 65 72 20 74 6f 20 61 20 64 65 73 74  ointer to a dest
368b0 72 75 63 74 6f 72 20 66 75 6e 63 74 69 6f 6e 20  ructor function 
368c0 66 6f 72 20 50 2e 20 5e 53 51 4c 69 74 65 20 77  for P. ^SQLite w
368d0 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 0a 2a  ill invoke the.*
368e0 2a 20 64 65 73 74 72 75 63 74 6f 72 20 44 20 77  * destructor D w
368f0 69 74 68 20 61 20 73 69 6e 67 6c 65 20 61 72 67  ith a single arg
36900 75 6d 65 6e 74 20 6f 66 20 50 20 77 68 65 6e 20  ument of P when 
36910 69 74 20 69 73 20 66 69 6e 69 73 68 65 64 20 75  it is finished u
36920 73 69 6e 67 0a 2a 2a 20 50 2e 20 20 54 68 65 20  sing.** P.  The 
36930 54 20 70 61 72 61 6d 65 74 65 72 20 73 68 6f 75  T parameter shou
36940 6c 64 20 62 65 20 61 20 73 74 61 74 69 63 20 73  ld be a static s
36950 74 72 69 6e 67 2c 20 70 72 65 66 65 72 61 62 6c  tring, preferabl
36960 79 20 61 20 73 74 72 69 6e 67 0a 2a 2a 20 6c 69  y a string.** li
36970 74 65 72 61 6c 2e 20 54 68 65 20 73 71 6c 69 74  teral. The sqlit
36980 65 33 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72 28  e3_bind_pointer(
36990 29 20 72 6f 75 74 69 6e 65 20 69 73 20 70 61 72  ) routine is par
369a0 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 70 6f 69  t of the.** [poi
369b0 6e 74 65 72 20 70 61 73 73 69 6e 67 20 69 6e 74  nter passing int
369c0 65 72 66 61 63 65 5d 20 61 64 64 65 64 20 66 6f  erface] added fo
369d0 72 20 53 51 4c 69 74 65 20 33 2e 32 30 2e 30 2e  r SQLite 3.20.0.
369e0 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 79 20 6f  .**.** ^If any o
369f0 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69  f the sqlite3_bi
36a00 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73 20  nd_*() routines 
36a10 61 72 65 20 63 61 6c 6c 65 64 20 77 69 74 68 20  are called with 
36a20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a  a NULL pointer.*
36a30 2a 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70 61  * for the [prepa
36a40 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f  red statement] o
36a50 72 20 77 69 74 68 20 61 20 70 72 65 70 61 72 65  r with a prepare
36a60 64 20 73 74 61 74 65 6d 65 6e 74 20 66 6f 72 20  d statement for 
36a70 77 68 69 63 68 0a 2a 2a 20 5b 73 71 6c 69 74 65  which.** [sqlite
36a80 33 5f 73 74 65 70 28 29 5d 20 68 61 73 20 62 65  3_step()] has be
36a90 65 6e 20 63 61 6c 6c 65 64 20 6d 6f 72 65 20 72  en called more r
36aa0 65 63 65 6e 74 6c 79 20 74 68 61 6e 20 5b 73 71  ecently than [sq
36ab0 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2c 0a  lite3_reset()],.
36ac0 2a 2a 20 74 68 65 6e 20 74 68 65 20 63 61 6c 6c  ** then the call
36ad0 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51   will return [SQ
36ae0 4c 49 54 45 5f 4d 49 53 55 53 45 5d 2e 20 20 49  LITE_MISUSE].  I
36af0 66 20 61 6e 79 20 73 71 6c 69 74 65 33 5f 62 69  f any sqlite3_bi
36b00 6e 64 5f 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65  nd_().** routine
36b10 20 69 73 20 70 61 73 73 65 64 20 61 20 5b 70 72   is passed a [pr
36b20 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
36b30 5d 20 74 68 61 74 20 68 61 73 20 62 65 65 6e 20  ] that has been 
36b40 66 69 6e 61 6c 69 7a 65 64 2c 20 74 68 65 0a 2a  finalized, the.*
36b50 2a 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64 65  * result is unde
36b60 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61 62  fined and probab
36b70 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a  ly harmful..**.*
36b80 2a 20 5e 42 69 6e 64 69 6e 67 73 20 61 72 65 20  * ^Bindings are 
36b90 6e 6f 74 20 63 6c 65 61 72 65 64 20 62 79 20 74  not cleared by t
36ba0 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  he [sqlite3_rese
36bb0 74 28 29 5d 20 72 6f 75 74 69 6e 65 2e 0a 2a 2a  t()] routine..**
36bc0 20 5e 55 6e 62 6f 75 6e 64 20 70 61 72 61 6d 65   ^Unbound parame
36bd0 74 65 72 73 20 61 72 65 20 69 6e 74 65 72 70 72  ters are interpr
36be0 65 74 65 64 20 61 73 20 4e 55 4c 4c 2e 0a 2a 2a  eted as NULL..**
36bf0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
36c00 5f 62 69 6e 64 5f 2a 20 72 6f 75 74 69 6e 65 73  _bind_* routines
36c10 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
36c20 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 20 6f  OK] on success o
36c30 72 20 61 6e 0a 2a 2a 20 5b 65 72 72 6f 72 20 63  r an.** [error c
36c40 6f 64 65 5d 20 69 66 20 61 6e 79 74 68 69 6e 67  ode] if anything
36c50 20 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2a 2a 20   goes wrong..** 
36c60 5e 5b 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47 5d  ^[SQLITE_TOOBIG]
36c70 20 6d 69 67 68 74 20 62 65 20 72 65 74 75 72 6e   might be return
36c80 65 64 20 69 66 20 74 68 65 20 73 69 7a 65 20 6f  ed if the size o
36c90 66 20 61 20 73 74 72 69 6e 67 20 6f 72 20 42 4c  f a string or BL
36ca0 4f 42 0a 2a 2a 20 65 78 63 65 65 64 73 20 6c 69  OB.** exceeds li
36cb0 6d 69 74 73 20 69 6d 70 6f 73 65 64 20 62 79 20  mits imposed by 
36cc0 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d 28  [sqlite3_limit](
36cd0 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45  [SQLITE_LIMIT_LE
36ce0 4e 47 54 48 5d 29 20 6f 72 0a 2a 2a 20 5b 53 51  NGTH]) or.** [SQ
36cf0 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 5d  LITE_MAX_LENGTH]
36d00 2e 0a 2a 2a 20 5e 5b 53 51 4c 49 54 45 5f 52 41  ..** ^[SQLITE_RA
36d10 4e 47 45 5d 20 69 73 20 72 65 74 75 72 6e 65 64  NGE] is returned
36d20 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74 65   if the paramete
36d30 72 0a 2a 2a 20 69 6e 64 65 78 20 69 73 20 6f 75  r.** index is ou
36d40 74 20 6f 66 20 72 61 6e 67 65 2e 20 20 5e 5b 53  t of range.  ^[S
36d50 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 20 69 73 20  QLITE_NOMEM] is 
36d60 72 65 74 75 72 6e 65 64 20 69 66 20 6d 61 6c 6c  returned if mall
36d70 6f 63 28 29 20 66 61 69 6c 73 2e 0a 2a 2a 0a 2a  oc() fails..**.*
36d80 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
36d90 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
36da0 74 65 72 5f 63 6f 75 6e 74 28 29 5d 2c 0a 2a 2a  ter_count()],.**
36db0 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70   [sqlite3_bind_p
36dc0 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 29 5d  arameter_name()]
36dd0 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62  , and [sqlite3_b
36de0 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
36df0 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  dex()]..*/.SQLIT
36e00 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
36e10 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 73 71 6c 69  3_bind_blob(sqli
36e20 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20  te3_stmt*, int, 
36e30 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74  const void*, int
36e40 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   n, void(*)(void
36e50 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  *));.SQLITE_API 
36e60 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
36e70 5f 62 6c 6f 62 36 34 28 73 71 6c 69 74 65 33 5f  _blob64(sqlite3_
36e80 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73  stmt*, int, cons
36e90 74 20 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65 33  t void*, sqlite3
36ea0 5f 75 69 6e 74 36 34 2c 0a 20 20 20 20 20 20 20  _uint64,.       
36eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36ec0 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29   void(*)(void*))
36ed0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
36ee0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f   sqlite3_bind_do
36ef0 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  uble(sqlite3_stm
36f00 74 2a 2c 20 69 6e 74 2c 20 64 6f 75 62 6c 65 29  t*, int, double)
36f10 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
36f20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
36f30 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  t(sqlite3_stmt*,
36f40 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 53 51 4c 49   int, int);.SQLI
36f50 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
36f60 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 73 71  e3_bind_int64(sq
36f70 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
36f80 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 29  , sqlite3_int64)
36f90 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
36fa0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75   sqlite3_bind_nu
36fb0 6c 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ll(sqlite3_stmt*
36fc0 2c 20 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41  , int);.SQLITE_A
36fd0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  PI int sqlite3_b
36fe0 69 6e 64 5f 74 65 78 74 28 73 71 6c 69 74 65 33  ind_text(sqlite3
36ff0 5f 73 74 6d 74 2a 2c 69 6e 74 2c 63 6f 6e 73 74  _stmt*,int,const
37000 20 63 68 61 72 2a 2c 69 6e 74 2c 76 6f 69 64 28   char*,int,void(
37010 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 53 51 4c 49  *)(void*));.SQLI
37020 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
37030 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 73  e3_bind_text16(s
37040 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
37050 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20  t, const void*, 
37060 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69  int, void(*)(voi
37070 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  d*));.SQLITE_API
37080 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
37090 64 5f 74 65 78 74 36 34 28 73 71 6c 69 74 65 33  d_text64(sqlite3
370a0 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e  _stmt*, int, con
370b0 73 74 20 63 68 61 72 2a 2c 20 73 71 6c 69 74 65  st char*, sqlite
370c0 33 5f 75 69 6e 74 36 34 2c 0a 20 20 20 20 20 20  3_uint64,.      
370d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
370e0 20 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a     void(*)(void*
370f0 29 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72  ), unsigned char
37100 20 65 6e 63 6f 64 69 6e 67 29 3b 0a 53 51 4c 49   encoding);.SQLI
37110 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
37120 65 33 5f 62 69 6e 64 5f 76 61 6c 75 65 28 73 71  e3_bind_value(sq
37130 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
37140 2c 20 63 6f 6e 73 74 20 73 71 6c 69 74 65 33 5f  , const sqlite3_
37150 76 61 6c 75 65 2a 29 3b 0a 53 51 4c 49 54 45 5f  value*);.SQLITE_
37160 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
37170 62 69 6e 64 5f 70 6f 69 6e 74 65 72 28 73 71 6c  bind_pointer(sql
37180 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
37190 20 76 6f 69 64 2a 2c 20 63 6f 6e 73 74 20 63 68   void*, const ch
371a0 61 72 2a 2c 76 6f 69 64 28 2a 29 28 76 6f 69 64  ar*,void(*)(void
371b0 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  *));.SQLITE_API 
371c0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
371d0 5f 7a 65 72 6f 62 6c 6f 62 28 73 71 6c 69 74 65  _zeroblob(sqlite
371e0 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 69 6e  3_stmt*, int, in
371f0 74 20 6e 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  t n);.SQLITE_API
37200 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
37210 64 5f 7a 65 72 6f 62 6c 6f 62 36 34 28 73 71 6c  d_zeroblob64(sql
37220 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
37230 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29   sqlite3_uint64)
37240 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
37250 46 3a 20 4e 75 6d 62 65 72 20 4f 66 20 53 51 4c  F: Number Of SQL
37260 20 50 61 72 61 6d 65 74 65 72 73 0a 2a 2a 20 4d   Parameters.** M
37270 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
37280 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20  tmt.**.** ^This 
37290 72 6f 75 74 69 6e 65 20 63 61 6e 20 62 65 20 75  routine can be u
372a0 73 65 64 20 74 6f 20 66 69 6e 64 20 74 68 65 20  sed to find the 
372b0 6e 75 6d 62 65 72 20 6f 66 20 5b 53 51 4c 20 70  number of [SQL p
372c0 61 72 61 6d 65 74 65 72 73 5d 0a 2a 2a 20 69 6e  arameters].** in
372d0 20 61 20 5b 70 72 65 70 61 72 65 64 20 73 74 61   a [prepared sta
372e0 74 65 6d 65 6e 74 5d 2e 20 20 53 51 4c 20 70 61  tement].  SQL pa
372f0 72 61 6d 65 74 65 72 73 20 61 72 65 20 74 6f 6b  rameters are tok
37300 65 6e 73 20 6f 66 20 74 68 65 0a 2a 2a 20 66 6f  ens of the.** fo
37310 72 6d 20 22 3f 22 2c 20 22 3f 4e 4e 4e 22 2c 20  rm "?", "?NNN", 
37320 22 3a 41 41 41 22 2c 20 22 24 41 41 41 22 2c 20  ":AAA", "$AAA", 
37330 6f 72 20 22 40 41 41 41 22 20 74 68 61 74 20 73  or "@AAA" that s
37340 65 72 76 65 20 61 73 0a 2a 2a 20 70 6c 61 63 65  erve as.** place
37350 68 6f 6c 64 65 72 73 20 66 6f 72 20 76 61 6c 75  holders for valu
37360 65 73 20 74 68 61 74 20 61 72 65 20 5b 73 71 6c  es that are [sql
37370 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 20 7c  ite3_bind_blob |
37380 20 62 6f 75 6e 64 5d 0a 2a 2a 20 74 6f 20 74 68   bound].** to th
37390 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 74 20  e parameters at 
373a0 61 20 6c 61 74 65 72 20 74 69 6d 65 2e 0a 2a 2a  a later time..**
373b0 0a 2a 2a 20 5e 28 54 68 69 73 20 72 6f 75 74 69  .** ^(This routi
373c0 6e 65 20 61 63 74 75 61 6c 6c 79 20 72 65 74 75  ne actually retu
373d0 72 6e 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66  rns the index of
373e0 20 74 68 65 20 6c 61 72 67 65 73 74 20 28 72 69   the largest (ri
373f0 67 68 74 6d 6f 73 74 29 0a 2a 2a 20 70 61 72 61  ghtmost).** para
37400 6d 65 74 65 72 2e 20 46 6f 72 20 61 6c 6c 20 66  meter. For all f
37410 6f 72 6d 73 20 65 78 63 65 70 74 20 3f 4e 4e 4e  orms except ?NNN
37420 2c 20 74 68 69 73 20 77 69 6c 6c 20 63 6f 72 72  , this will corr
37430 65 73 70 6f 6e 64 20 74 6f 20 74 68 65 0a 2a 2a  espond to the.**
37440 20 6e 75 6d 62 65 72 20 6f 66 20 75 6e 69 71 75   number of uniqu
37450 65 20 70 61 72 61 6d 65 74 65 72 73 2e 20 20 49  e parameters.  I
37460 66 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20  f parameters of 
37470 74 68 65 20 3f 4e 4e 4e 20 66 6f 72 6d 20 61 72  the ?NNN form ar
37480 65 20 75 73 65 64 2c 0a 2a 2a 20 74 68 65 72 65  e used,.** there
37490 20 6d 61 79 20 62 65 20 67 61 70 73 20 69 6e 20   may be gaps in 
374a0 74 68 65 20 6c 69 73 74 2e 29 5e 0a 2a 2a 0a 2a  the list.)^.**.*
374b0 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
374c0 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c 73  ite3_bind_blob|s
374d0 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2c 0a  qlite3_bind()],.
374e0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  ** [sqlite3_bind
374f0 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28  _parameter_name(
37500 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  )], and.** [sqli
37510 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
37520 65 72 5f 69 6e 64 65 78 28 29 5d 2e 0a 2a 2f 0a  er_index()]..*/.
37530 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
37540 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
37550 6d 65 74 65 72 5f 63 6f 75 6e 74 28 73 71 6c 69  meter_count(sqli
37560 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
37570 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e 61 6d  ** CAPI3REF: Nam
37580 65 20 4f 66 20 41 20 48 6f 73 74 20 50 61 72 61  e Of A Host Para
37590 6d 65 74 65 72 0a 2a 2a 20 4d 45 54 48 4f 44 3a  meter.** METHOD:
375a0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
375b0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
375c0 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
375d0 6e 61 6d 65 28 50 2c 4e 29 20 69 6e 74 65 72 66  name(P,N) interf
375e0 61 63 65 20 72 65 74 75 72 6e 73 0a 2a 2a 20 74  ace returns.** t
375f0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 4e  he name of the N
37600 2d 74 68 20 5b 53 51 4c 20 70 61 72 61 6d 65 74  -th [SQL paramet
37610 65 72 5d 20 69 6e 20 74 68 65 20 5b 70 72 65 70  er] in the [prep
37620 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
37630 50 2e 0a 2a 2a 20 5e 28 53 51 4c 20 70 61 72 61  P..** ^(SQL para
37640 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 66 6f  meters of the fo
37650 72 6d 20 22 3f 4e 4e 4e 22 20 6f 72 20 22 3a 41  rm "?NNN" or ":A
37660 41 41 22 20 6f 72 20 22 40 41 41 41 22 20 6f 72  AA" or "@AAA" or
37670 20 22 24 41 41 41 22 0a 2a 2a 20 68 61 76 65 20   "$AAA".** have 
37680 61 20 6e 61 6d 65 20 77 68 69 63 68 20 69 73 20  a name which is 
37690 74 68 65 20 73 74 72 69 6e 67 20 22 3f 4e 4e 4e  the string "?NNN
376a0 22 20 6f 72 20 22 3a 41 41 41 22 20 6f 72 20 22  " or ":AAA" or "
376b0 40 41 41 41 22 20 6f 72 20 22 24 41 41 41 22 0a  @AAA" or "$AAA".
376c0 2a 2a 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e  ** respectively.
376d0 0a 2a 2a 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  .** In other wor
376e0 64 73 2c 20 74 68 65 20 69 6e 69 74 69 61 6c 20  ds, the initial 
376f0 22 3a 22 20 6f 72 20 22 24 22 20 6f 72 20 22 40  ":" or "$" or "@
37700 22 20 6f 72 20 22 3f 22 0a 2a 2a 20 69 73 20 69  " or "?".** is i
37710 6e 63 6c 75 64 65 64 20 61 73 20 70 61 72 74 20  ncluded as part 
37720 6f 66 20 74 68 65 20 6e 61 6d 65 2e 29 5e 0a 2a  of the name.)^.*
37730 2a 20 5e 50 61 72 61 6d 65 74 65 72 73 20 6f 66  * ^Parameters of
37740 20 74 68 65 20 66 6f 72 6d 20 22 3f 22 20 77 69   the form "?" wi
37750 74 68 6f 75 74 20 61 20 66 6f 6c 6c 6f 77 69 6e  thout a followin
37760 67 20 69 6e 74 65 67 65 72 20 68 61 76 65 20 6e  g integer have n
37770 6f 20 6e 61 6d 65 0a 2a 2a 20 61 6e 64 20 61 72  o name.** and ar
37780 65 20 72 65 66 65 72 72 65 64 20 74 6f 20 61 73  e referred to as
37790 20 22 6e 61 6d 65 6c 65 73 73 22 20 6f 72 20 22   "nameless" or "
377a0 61 6e 6f 6e 79 6d 6f 75 73 20 70 61 72 61 6d 65  anonymous parame
377b0 74 65 72 73 22 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ters"..**.** ^Th
377c0 65 20 66 69 72 73 74 20 68 6f 73 74 20 70 61 72  e first host par
377d0 61 6d 65 74 65 72 20 68 61 73 20 61 6e 20 69 6e  ameter has an in
377e0 64 65 78 20 6f 66 20 31 2c 20 6e 6f 74 20 30 2e  dex of 1, not 0.
377f0 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 76  .**.** ^If the v
37800 61 6c 75 65 20 4e 20 69 73 20 6f 75 74 20 6f 66  alue N is out of
37810 20 72 61 6e 67 65 20 6f 72 20 69 66 20 74 68 65   range or if the
37820 20 4e 2d 74 68 20 70 61 72 61 6d 65 74 65 72 20   N-th parameter 
37830 69 73 0a 2a 2a 20 6e 61 6d 65 6c 65 73 73 2c 20  is.** nameless, 
37840 74 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74  then NULL is ret
37850 75 72 6e 65 64 2e 20 20 5e 54 68 65 20 72 65 74  urned.  ^The ret
37860 75 72 6e 65 64 20 73 74 72 69 6e 67 20 69 73 0a  urned string is.
37870 2a 2a 20 61 6c 77 61 79 73 20 69 6e 20 55 54 46  ** always in UTF
37880 2d 38 20 65 6e 63 6f 64 69 6e 67 20 65 76 65 6e  -8 encoding even
37890 20 69 66 20 74 68 65 20 6e 61 6d 65 64 20 70 61   if the named pa
378a0 72 61 6d 65 74 65 72 20 77 61 73 0a 2a 2a 20 6f  rameter was.** o
378b0 72 69 67 69 6e 61 6c 6c 79 20 73 70 65 63 69 66  riginally specif
378c0 69 65 64 20 61 73 20 55 54 46 2d 31 36 20 69 6e  ied as UTF-16 in
378d0 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
378e0 65 31 36 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  e16()],.** [sqli
378f0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32  te3_prepare16_v2
37900 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69 74 65 33  ()], or [sqlite3
37910 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d  _prepare16_v3()]
37920 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
37930 3a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  : [sqlite3_bind_
37940 62 6c 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e  blob|sqlite3_bin
37950 64 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65  d()],.** [sqlite
37960 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
37970 5f 63 6f 75 6e 74 28 29 5d 2c 20 61 6e 64 0a 2a  _count()], and.*
37980 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  * [sqlite3_bind_
37990 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
379a0 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  )]..*/.SQLITE_AP
379b0 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  I const char *sq
379c0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
379d0 65 74 65 72 5f 6e 61 6d 65 28 73 71 6c 69 74 65  eter_name(sqlite
379e0 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 29 3b 0a 0a  3_stmt*, int);..
379f0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
37a00 49 6e 64 65 78 20 4f 66 20 41 20 50 61 72 61 6d  Index Of A Param
37a10 65 74 65 72 20 57 69 74 68 20 41 20 47 69 76 65  eter With A Give
37a20 6e 20 4e 61 6d 65 0a 2a 2a 20 4d 45 54 48 4f 44  n Name.** METHOD
37a30 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
37a40 2a 0a 2a 2a 20 5e 52 65 74 75 72 6e 20 74 68 65  *.** ^Return the
37a50 20 69 6e 64 65 78 20 6f 66 20 61 6e 20 53 51 4c   index of an SQL
37a60 20 70 61 72 61 6d 65 74 65 72 20 67 69 76 65 6e   parameter given
37a70 20 69 74 73 20 6e 61 6d 65 2e 20 20 5e 54 68 65   its name.  ^The
37a80 0a 2a 2a 20 69 6e 64 65 78 20 76 61 6c 75 65 20  .** index value 
37a90 72 65 74 75 72 6e 65 64 20 69 73 20 73 75 69 74  returned is suit
37aa0 61 62 6c 65 20 66 6f 72 20 75 73 65 20 61 73 20  able for use as 
37ab0 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 70 61  the second.** pa
37ac0 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
37ad0 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c 73 71  te3_bind_blob|sq
37ae0 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2e 20 20  lite3_bind()].  
37af0 5e 41 20 7a 65 72 6f 0a 2a 2a 20 69 73 20 72 65  ^A zero.** is re
37b00 74 75 72 6e 65 64 20 69 66 20 6e 6f 20 6d 61 74  turned if no mat
37b10 63 68 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  ching parameter 
37b20 69 73 20 66 6f 75 6e 64 2e 20 20 5e 54 68 65 20  is found.  ^The 
37b30 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 6e 61 6d  parameter.** nam
37b40 65 20 6d 75 73 74 20 62 65 20 67 69 76 65 6e 20  e must be given 
37b50 69 6e 20 55 54 46 2d 38 20 65 76 65 6e 20 69 66  in UTF-8 even if
37b60 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74   the original st
37b70 61 74 65 6d 65 6e 74 0a 2a 2a 20 77 61 73 20 70  atement.** was p
37b80 72 65 70 61 72 65 64 20 66 72 6f 6d 20 55 54 46  repared from UTF
37b90 2d 31 36 20 74 65 78 74 20 75 73 69 6e 67 20 5b  -16 text using [
37ba0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
37bb0 36 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73  6_v2()] or.** [s
37bc0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
37bd0 5f 76 33 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 53 65  _v3()]..**.** Se
37be0 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33  e also: [sqlite3
37bf0 5f 62 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74  _bind_blob|sqlit
37c00 65 33 5f 62 69 6e 64 28 29 5d 2c 0a 2a 2a 20 5b  e3_bind()],.** [
37c10 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
37c20 61 6d 65 74 65 72 5f 63 6f 75 6e 74 28 29 5d 2c  ameter_count()],
37c30 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
37c40 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
37c50 6e 61 6d 65 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49  name()]..*/.SQLI
37c60 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
37c70 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
37c80 72 5f 69 6e 64 65 78 28 73 71 6c 69 74 65 33 5f  r_index(sqlite3_
37c90 73 74 6d 74 2a 2c 20 63 6f 6e 73 74 20 63 68 61  stmt*, const cha
37ca0 72 20 2a 7a 4e 61 6d 65 29 3b 0a 0a 2f 2a 0a 2a  r *zName);../*.*
37cb0 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 73 65  * CAPI3REF: Rese
37cc0 74 20 41 6c 6c 20 42 69 6e 64 69 6e 67 73 20 4f  t All Bindings O
37cd0 6e 20 41 20 50 72 65 70 61 72 65 64 20 53 74 61  n A Prepared Sta
37ce0 74 65 6d 65 6e 74 0a 2a 2a 20 4d 45 54 48 4f 44  tement.** METHOD
37cf0 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
37d00 2a 0a 2a 2a 20 5e 43 6f 6e 74 72 61 72 79 20 74  *.** ^Contrary t
37d10 6f 20 74 68 65 20 69 6e 74 75 69 74 69 6f 6e 20  o the intuition 
37d20 6f 66 20 6d 61 6e 79 2c 20 5b 73 71 6c 69 74 65  of many, [sqlite
37d30 33 5f 72 65 73 65 74 28 29 5d 20 64 6f 65 73 20  3_reset()] does 
37d40 6e 6f 74 20 72 65 73 65 74 0a 2a 2a 20 74 68 65  not reset.** the
37d50 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62   [sqlite3_bind_b
37d60 6c 6f 62 20 7c 20 62 69 6e 64 69 6e 67 73 5d 20  lob | bindings] 
37d70 6f 6e 20 61 20 5b 70 72 65 70 61 72 65 64 20 73  on a [prepared s
37d80 74 61 74 65 6d 65 6e 74 5d 2e 0a 2a 2a 20 5e 55  tatement]..** ^U
37d90 73 65 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  se this routine 
37da0 74 6f 20 72 65 73 65 74 20 61 6c 6c 20 68 6f 73  to reset all hos
37db0 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20  t parameters to 
37dc0 4e 55 4c 4c 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  NULL..*/.SQLITE_
37dd0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
37de0 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73 28 73  clear_bindings(s
37df0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a  qlite3_stmt*);..
37e00 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
37e10 4e 75 6d 62 65 72 20 4f 66 20 43 6f 6c 75 6d 6e  Number Of Column
37e20 73 20 49 6e 20 41 20 52 65 73 75 6c 74 20 53 65  s In A Result Se
37e30 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  t.** METHOD: sql
37e40 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
37e50 5e 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62  ^Return the numb
37e60 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e  er of columns in
37e70 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
37e80 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 0a  returned by the.
37e90 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
37ea0 74 65 6d 65 6e 74 5d 2e 20 5e 49 66 20 74 68 69  tement]. ^If thi
37eb0 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
37ec0 73 20 30 2c 20 74 68 61 74 20 6d 65 61 6e 73 20  s 0, that means 
37ed0 74 68 65 20 0a 2a 2a 20 5b 70 72 65 70 61 72 65  the .** [prepare
37ee0 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 72 65 74  d statement] ret
37ef0 75 72 6e 73 20 6e 6f 20 64 61 74 61 20 28 66 6f  urns no data (fo
37f00 72 20 65 78 61 6d 70 6c 65 20 61 6e 20 5b 55 50  r example an [UP
37f10 44 41 54 45 5d 29 2e 0a 2a 2a 20 5e 48 6f 77 65  DATE])..** ^Howe
37f20 76 65 72 2c 20 6a 75 73 74 20 62 65 63 61 75 73  ver, just becaus
37f30 65 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72  e this routine r
37f40 65 74 75 72 6e 73 20 61 20 70 6f 73 69 74 69 76  eturns a positiv
37f50 65 20 6e 75 6d 62 65 72 20 64 6f 65 73 20 6e 6f  e number does no
37f60 74 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 6f  t.** mean that o
37f70 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20  ne or more rows 
37f80 6f 66 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  of data will be 
37f90 72 65 74 75 72 6e 65 64 2e 20 20 5e 41 20 53 45  returned.  ^A SE
37fa0 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 0a 2a  LECT statement.*
37fb0 2a 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 68 61  * will always ha
37fc0 76 65 20 61 20 70 6f 73 69 74 69 76 65 20 73 71  ve a positive sq
37fd0 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75  lite3_column_cou
37fe0 6e 74 28 29 20 62 75 74 20 64 65 70 65 6e 64 69  nt() but dependi
37ff0 6e 67 20 6f 6e 20 74 68 65 0a 2a 2a 20 57 48 45  ng on the.** WHE
38000 52 45 20 63 6c 61 75 73 65 20 63 6f 6e 73 74 72  RE clause constr
38010 61 69 6e 74 73 20 61 6e 64 20 74 68 65 20 74 61  aints and the ta
38020 62 6c 65 20 63 6f 6e 74 65 6e 74 2c 20 69 74 20  ble content, it 
38030 6d 69 67 68 74 20 72 65 74 75 72 6e 20 6e 6f 20  might return no 
38040 72 6f 77 73 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  rows..**.** See 
38050 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 64  also: [sqlite3_d
38060 61 74 61 5f 63 6f 75 6e 74 28 29 5d 0a 2a 2f 0a  ata_count()].*/.
38070 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
38080 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f  qlite3_column_co
38090 75 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  unt(sqlite3_stmt
380a0 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a   *pStmt);../*.**
380b0 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6c 75 6d   CAPI3REF: Colum
380c0 6e 20 4e 61 6d 65 73 20 49 6e 20 41 20 52 65 73  n Names In A Res
380d0 75 6c 74 20 53 65 74 0a 2a 2a 20 4d 45 54 48 4f  ult Set.** METHO
380e0 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a  D: sqlite3_stmt.
380f0 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75  **.** ^These rou
38100 74 69 6e 65 73 20 72 65 74 75 72 6e 20 74 68 65  tines return the
38110 20 6e 61 6d 65 20 61 73 73 69 67 6e 65 64 20 74   name assigned t
38120 6f 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 63  o a particular c
38130 6f 6c 75 6d 6e 0a 2a 2a 20 69 6e 20 74 68 65 20  olumn.** in the 
38140 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20  result set of a 
38150 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65  [SELECT] stateme
38160 6e 74 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65  nt.  ^The sqlite
38170 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 0a  3_column_name().
38180 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  ** interface ret
38190 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74  urns a pointer t
381a0 6f 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  o a zero-termina
381b0 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
381c0 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  .** and sqlite3_
381d0 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31 36 28 29 20  column_name16() 
381e0 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65  returns a pointe
381f0 72 20 74 6f 20 61 20 7a 65 72 6f 2d 74 65 72 6d  r to a zero-term
38200 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 31 36  inated.** UTF-16
38210 20 73 74 72 69 6e 67 2e 20 20 5e 54 68 65 20 66   string.  ^The f
38220 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
38230 73 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  s the [prepared 
38240 73 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 74 68  statement].** th
38250 61 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68  at implements th
38260 65 20 5b 53 45 4c 45 43 54 5d 20 73 74 61 74 65  e [SELECT] state
38270 6d 65 6e 74 2e 20 5e 54 68 65 20 73 65 63 6f 6e  ment. ^The secon
38280 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  d parameter is t
38290 68 65 0a 2a 2a 20 63 6f 6c 75 6d 6e 20 6e 75 6d  he.** column num
382a0 62 65 72 2e 20 20 5e 54 68 65 20 6c 65 66 74 6d  ber.  ^The leftm
382b0 6f 73 74 20 63 6f 6c 75 6d 6e 20 69 73 20 6e 75  ost column is nu
382c0 6d 62 65 72 20 30 2e 0a 2a 2a 0a 2a 2a 20 5e 54  mber 0..**.** ^T
382d0 68 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 69  he returned stri
382e0 6e 67 20 70 6f 69 6e 74 65 72 20 69 73 20 76 61  ng pointer is va
382f0 6c 69 64 20 75 6e 74 69 6c 20 65 69 74 68 65 72  lid until either
38300 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73   the [prepared s
38310 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 69 73 20  tatement].** is 
38320 64 65 73 74 72 6f 79 65 64 20 62 79 20 5b 73 71  destroyed by [sq
38330 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29  lite3_finalize()
38340 5d 20 6f 72 20 75 6e 74 69 6c 20 74 68 65 20 73  ] or until the s
38350 74 61 74 65 6d 65 6e 74 20 69 73 20 61 75 74 6f  tatement is auto
38360 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 72 65 70  matically.** rep
38370 72 65 70 61 72 65 64 20 62 79 20 74 68 65 20 66  repared by the f
38380 69 72 73 74 20 63 61 6c 6c 20 74 6f 20 5b 73 71  irst call to [sq
38390 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 66 6f  lite3_step()] fo
383a0 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 72  r a particular r
383b0 75 6e 0a 2a 2a 20 6f 72 20 75 6e 74 69 6c 20 74  un.** or until t
383c0 68 65 20 6e 65 78 74 20 63 61 6c 6c 20 74 6f 0a  he next call to.
383d0 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ** sqlite3_colum
383e0 6e 5f 6e 61 6d 65 28 29 20 6f 72 20 73 71 6c 69  n_name() or sqli
383f0 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 31  te3_column_name1
38400 36 28 29 20 6f 6e 20 74 68 65 20 73 61 6d 65 20  6() on the same 
38410 63 6f 6c 75 6d 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 49  column..**.** ^I
38420 66 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  f sqlite3_malloc
38430 28 29 20 66 61 69 6c 73 20 64 75 72 69 6e 67 20  () fails during 
38440 74 68 65 20 70 72 6f 63 65 73 73 69 6e 67 20 6f  the processing o
38450 66 20 65 69 74 68 65 72 20 72 6f 75 74 69 6e 65  f either routine
38460 0a 2a 2a 20 28 66 6f 72 20 65 78 61 6d 70 6c 65  .** (for example
38470 20 64 75 72 69 6e 67 20 61 20 63 6f 6e 76 65 72   during a conver
38480 73 69 6f 6e 20 66 72 6f 6d 20 55 54 46 2d 38 20  sion from UTF-8 
38490 74 6f 20 55 54 46 2d 31 36 29 20 74 68 65 6e 20  to UTF-16) then 
384a0 61 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  a.** NULL pointe
384b0 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  r is returned..*
384c0 2a 0a 2a 2a 20 5e 54 68 65 20 6e 61 6d 65 20 6f  *.** ^The name o
384d0 66 20 61 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d  f a result colum
384e0 6e 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 6f  n is the value o
384f0 66 20 74 68 65 20 22 41 53 22 20 63 6c 61 75 73  f the "AS" claus
38500 65 20 66 6f 72 0a 2a 2a 20 74 68 61 74 20 63 6f  e for.** that co
38510 6c 75 6d 6e 2c 20 69 66 20 74 68 65 72 65 20 69  lumn, if there i
38520 73 20 61 6e 20 41 53 20 63 6c 61 75 73 65 2e 20  s an AS clause. 
38530 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20   If there is no 
38540 41 53 20 63 6c 61 75 73 65 0a 2a 2a 20 74 68 65  AS clause.** the
38550 6e 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  n the name of th
38560 65 20 63 6f 6c 75 6d 6e 20 69 73 20 75 6e 73 70  e column is unsp
38570 65 63 69 66 69 65 64 20 61 6e 64 20 6d 61 79 20  ecified and may 
38580 63 68 61 6e 67 65 20 66 72 6f 6d 0a 2a 2a 20 6f  change from.** o
38590 6e 65 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51  ne release of SQ
3