System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 60edcc983f9cfbbd41919317ecb66390c483e04f:


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 30 2e 30 2e 20 20  ersion 3.20.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 43 45 52 4f 44 0a 20 20 22 45 4e 41 42 4c 45  _CEROD.  "ENABLE
1a80: 5f 43 45 52 4f 44 22 2c 0a 23 65 6e 64 69 66 0a  _CEROD",.#endif.
1a90: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1aa0: 45 5f 43 4f 4c 55 4d 4e 5f 4d 45 54 41 44 41 54  E_COLUMN_METADAT
1ab0: 41 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 4c 55  A.  "ENABLE_COLU
1ac0: 4d 4e 5f 4d 45 54 41 44 41 54 41 22 2c 0a 23 65  MN_METADATA",.#e
1ad0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1ae0: 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 55 53  ENABLE_COLUMN_US
1af0: 45 44 5f 4d 41 53 4b 0a 20 20 22 45 4e 41 42 4c  ED_MASK.  "ENABL
1b00: 45 5f 43 4f 4c 55 4d 4e 5f 55 53 45 44 5f 4d 41  E_COLUMN_USED_MA
1b10: 53 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  SK",.#endif.#if 
1b20: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
1b30: 53 54 4d 55 4c 54 0a 20 20 22 45 4e 41 42 4c 45  STMULT.  "ENABLE
1b40: 5f 43 4f 53 54 4d 55 4c 54 22 2c 0a 23 65 6e 64  _COSTMULT",.#end
1b50: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
1b60: 41 42 4c 45 5f 43 55 52 53 4f 52 5f 48 49 4e 54  ABLE_CURSOR_HINT
1b70: 53 0a 20 20 22 45 4e 41 42 4c 45 5f 43 55 52 53  S.  "ENABLE_CURS
1b80: 4f 52 5f 48 49 4e 54 53 22 2c 0a 23 65 6e 64 69  OR_HINTS",.#endi
1b90: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
1ba0: 42 4c 45 5f 44 42 53 54 41 54 5f 56 54 41 42 0a  BLE_DBSTAT_VTAB.
1bb0: 20 20 22 45 4e 41 42 4c 45 5f 44 42 53 54 41 54    "ENABLE_DBSTAT
1bc0: 5f 56 54 41 42 22 2c 0a 23 65 6e 64 69 66 0a 23  _VTAB",.#endif.#
1bd0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1be0: 5f 45 58 50 45 4e 53 49 56 45 5f 41 53 53 45 52  _EXPENSIVE_ASSER
1bf0: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 45 58 50 45  T.  "ENABLE_EXPE
1c00: 4e 53 49 56 45 5f 41 53 53 45 52 54 22 2c 0a 23  NSIVE_ASSERT",.#
1c10: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1c20: 5f 45 4e 41 42 4c 45 5f 46 54 53 31 0a 20 20 22  _ENABLE_FTS1.  "
1c30: 45 4e 41 42 4c 45 5f 46 54 53 31 22 2c 0a 23 65  ENABLE_FTS1",.#e
1c40: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1c50: 45 4e 41 42 4c 45 5f 46 54 53 32 0a 20 20 22 45  ENABLE_FTS2.  "E
1c60: 4e 41 42 4c 45 5f 46 54 53 32 22 2c 0a 23 65 6e  NABLE_FTS2",.#en
1c70: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
1c80: 4e 41 42 4c 45 5f 46 54 53 33 0a 20 20 22 45 4e  NABLE_FTS3.  "EN
1c90: 41 42 4c 45 5f 46 54 53 33 22 2c 0a 23 65 6e 64  ABLE_FTS3",.#end
1ca0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
1cb0: 41 42 4c 45 5f 46 54 53 33 5f 50 41 52 45 4e 54  ABLE_FTS3_PARENT
1cc0: 48 45 53 49 53 0a 20 20 22 45 4e 41 42 4c 45 5f  HESIS.  "ENABLE_
1cd0: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
1ce0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1cf0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33  LITE_ENABLE_FTS3
1d00: 5f 54 4f 4b 45 4e 49 5a 45 52 0a 20 20 22 45 4e  _TOKENIZER.  "EN
1d10: 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49  ABLE_FTS3_TOKENI
1d20: 5a 45 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ZER",.#endif.#if
1d30: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46   SQLITE_ENABLE_F
1d40: 54 53 34 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54  TS4.  "ENABLE_FT
1d50: 53 34 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  S4",.#endif.#if 
1d60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54  SQLITE_ENABLE_FT
1d70: 53 35 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53  S5.  "ENABLE_FTS
1d80: 35 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  5",.#endif.#if S
1d90: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 48 49 44  QLITE_ENABLE_HID
1da0: 44 45 4e 5f 43 4f 4c 55 4d 4e 53 0a 20 20 22 45  DEN_COLUMNS.  "E
1db0: 4e 41 42 4c 45 5f 48 49 44 44 45 4e 5f 43 4f 4c  NABLE_HIDDEN_COL
1dc0: 55 4d 4e 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  UMNS",.#endif.#i
1dd0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1de0: 49 43 55 0a 20 20 22 45 4e 41 42 4c 45 5f 49 43  ICU.  "ENABLE_IC
1df0: 55 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  U",.#endif.#if S
1e00: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f 54  QLITE_ENABLE_IOT
1e10: 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 49  RACE.  "ENABLE_I
1e20: 4f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a  OTRACE",.#endif.
1e30: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1e40: 45 5f 4a 53 4f 4e 31 0a 20 20 22 45 4e 41 42 4c  E_JSON1.  "ENABL
1e50: 45 5f 4a 53 4f 4e 31 22 2c 0a 23 65 6e 64 69 66  E_JSON1",.#endif
1e60: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1e70: 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  LE_LOAD_EXTENSIO
1e80: 4e 0a 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 41 44  N.  "ENABLE_LOAD
1e90: 5f 45 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65 6e  _EXTENSION",.#en
1ea0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
1eb0: 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47  E_ENABLE_LOCKING
1ec0: 5f 53 54 59 4c 45 0a 20 20 22 45 4e 41 42 4c 45  _STYLE.  "ENABLE
1ed0: 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 3d 22  _LOCKING_STYLE="
1ee0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
1ef0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b  LITE_ENABLE_LOCK
1f00: 49 4e 47 5f 53 54 59 4c 45 29 2c 0a 23 65 6e 64  ING_STYLE),.#end
1f10: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
1f20: 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41  ABLE_MEMORY_MANA
1f30: 47 45 4d 45 4e 54 0a 20 20 22 45 4e 41 42 4c 45  GEMENT.  "ENABLE
1f40: 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45  _MEMORY_MANAGEME
1f50: 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  NT",.#endif.#if 
1f60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
1f70: 4d 53 59 53 33 0a 20 20 22 45 4e 41 42 4c 45 5f  MSYS3.  "ENABLE_
1f80: 4d 45 4d 53 59 53 33 22 2c 0a 23 65 6e 64 69 66  MEMSYS3",.#endif
1f90: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1fa0: 4c 45 5f 4d 45 4d 53 59 53 35 0a 20 20 22 45 4e  LE_MEMSYS5.  "EN
1fb0: 41 42 4c 45 5f 4d 45 4d 53 59 53 35 22 2c 0a 23  ABLE_MEMSYS5",.#
1fc0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1fd0: 5f 45 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c 45  _ENABLE_MULTIPLE
1fe0: 58 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 55 4c 54  X.  "ENABLE_MULT
1ff0: 49 50 4c 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23  IPLEX",.#endif.#
2000: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2010: 5f 4e 55 4c 4c 5f 54 52 49 4d 0a 20 20 22 45 4e  _NULL_TRIM.  "EN
2020: 41 42 4c 45 5f 4e 55 4c 4c 5f 54 52 49 4d 22 2c  ABLE_NULL_TRIM",
2030: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2040: 54 45 5f 45 4e 41 42 4c 45 5f 4f 56 45 52 53 49  TE_ENABLE_OVERSI
2050: 5a 45 5f 43 45 4c 4c 5f 43 48 45 43 4b 0a 20 20  ZE_CELL_CHECK.  
2060: 22 45 4e 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45  "ENABLE_OVERSIZE
2070: 5f 43 45 4c 4c 5f 43 48 45 43 4b 22 2c 0a 23 65  _CELL_CHECK",.#e
2080: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2090: 45 4e 41 42 4c 45 5f 50 52 45 55 50 44 41 54 45  ENABLE_PREUPDATE
20a0: 5f 48 4f 4f 4b 0a 20 20 22 45 4e 41 42 4c 45 5f  _HOOK.  "ENABLE_
20b0: 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 22 2c  PREUPDATE_HOOK",
20c0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
20d0: 54 45 5f 45 4e 41 42 4c 45 5f 51 50 53 47 0a 20  TE_ENABLE_QPSG. 
20e0: 20 22 45 4e 41 42 4c 45 5f 51 50 53 47 22 2c 0a   "ENABLE_QPSG",.
20f0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2100: 45 5f 45 4e 41 42 4c 45 5f 52 42 55 0a 20 20 22  E_ENABLE_RBU.  "
2110: 45 4e 41 42 4c 45 5f 52 42 55 22 2c 0a 23 65 6e  ENABLE_RBU",.#en
2120: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
2130: 4e 41 42 4c 45 5f 52 54 52 45 45 0a 20 20 22 45  NABLE_RTREE.  "E
2140: 4e 41 42 4c 45 5f 52 54 52 45 45 22 2c 0a 23 65  NABLE_RTREE",.#e
2150: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2160: 45 4e 41 42 4c 45 5f 53 45 4c 45 43 54 54 52 41  ENABLE_SELECTTRA
2170: 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 53 45 4c  CE.  "ENABLE_SEL
2180: 45 43 54 54 52 41 43 45 22 2c 0a 23 65 6e 64 69  ECTTRACE",.#endi
2190: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
21a0: 42 4c 45 5f 53 45 53 53 49 4f 4e 0a 20 20 22 45  BLE_SESSION.  "E
21b0: 4e 41 42 4c 45 5f 53 45 53 53 49 4f 4e 22 2c 0a  NABLE_SESSION",.
21c0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
21d0: 45 5f 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f  E_ENABLE_SNAPSHO
21e0: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 53 4e 41 50  T.  "ENABLE_SNAP
21f0: 53 48 4f 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SHOT",.#endif.#i
2200: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
2210: 53 51 4c 4c 4f 47 0a 20 20 22 45 4e 41 42 4c 45  SQLLOG.  "ENABLE
2220: 5f 53 51 4c 4c 4f 47 22 2c 0a 23 65 6e 64 69 66  _SQLLOG",.#endif
2230: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c  .#if defined(SQL
2240: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 34  ITE_ENABLE_STAT4
2250: 29 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 41 54  ).  "ENABLE_STAT
2260: 34 22 2c 0a 23 65 6c 69 66 20 64 65 66 69 6e 65  4",.#elif define
2270: 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  d(SQLITE_ENABLE_
2280: 53 54 41 54 33 29 0a 20 20 22 45 4e 41 42 4c 45  STAT3).  "ENABLE
2290: 5f 53 54 41 54 33 22 2c 0a 23 65 6e 64 69 66 0a  _STAT3",.#endif.
22a0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
22b0: 45 5f 53 54 4d 54 56 54 41 42 0a 20 20 22 45 4e  E_STMTVTAB.  "EN
22c0: 41 42 4c 45 5f 53 54 4d 54 56 54 41 42 22 2c 0a  ABLE_STMTVTAB",.
22d0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
22e0: 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43  E_ENABLE_STMT_SC
22f0: 41 4e 53 54 41 54 55 53 0a 20 20 22 45 4e 41 42  ANSTATUS.  "ENAB
2300: 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41 54  LE_STMT_SCANSTAT
2310: 55 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  US",.#endif.#if 
2320: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e  SQLITE_ENABLE_UN
2330: 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49  KNOWN_SQL_FUNCTI
2340: 4f 4e 0a 20 20 22 45 4e 41 42 4c 45 5f 55 4e 4b  ON.  "ENABLE_UNK
2350: 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43 54 49 4f  NOWN_SQL_FUNCTIO
2360: 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  N",.#endif.#if S
2370: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 4e 4c  QLITE_ENABLE_UNL
2380: 4f 43 4b 5f 4e 4f 54 49 46 59 0a 20 20 22 45 4e  OCK_NOTIFY.  "EN
2390: 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e 4f 54 49  ABLE_UNLOCK_NOTI
23a0: 46 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  FY",.#endif.#if 
23b0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 50  SQLITE_ENABLE_UP
23c0: 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49  DATE_DELETE_LIMI
23d0: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 55 50 44 41  T.  "ENABLE_UPDA
23e0: 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d 49 54 22  TE_DELETE_LIMIT"
23f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2400: 49 54 45 5f 45 4e 41 42 4c 45 5f 55 52 49 5f 30  ITE_ENABLE_URI_0
2410: 30 5f 45 52 52 4f 52 0a 20 20 22 45 4e 41 42 4c  0_ERROR.  "ENABL
2420: 45 5f 55 52 49 5f 30 30 5f 45 52 52 4f 52 22 2c  E_URI_00_ERROR",
2430: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2440: 54 45 5f 45 4e 41 42 4c 45 5f 56 46 53 54 52 41  TE_ENABLE_VFSTRA
2450: 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f 56 46 53  CE.  "ENABLE_VFS
2460: 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23  TRACE",.#endif.#
2470: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2480: 5f 57 48 45 52 45 54 52 41 43 45 0a 20 20 22 45  _WHERETRACE.  "E
2490: 4e 41 42 4c 45 5f 57 48 45 52 45 54 52 41 43 45  NABLE_WHERETRACE
24a0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
24b0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 5a 49 50 56  LITE_ENABLE_ZIPV
24c0: 46 53 0a 20 20 22 45 4e 41 42 4c 45 5f 5a 49 50  FS.  "ENABLE_ZIP
24d0: 56 46 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  VFS",.#endif.#if
24e0: 20 53 51 4c 49 54 45 5f 45 58 50 4c 41 49 4e 5f   SQLITE_EXPLAIN_
24f0: 45 53 54 49 4d 41 54 45 44 5f 52 4f 57 53 0a 20  ESTIMATED_ROWS. 
2500: 20 22 45 58 50 4c 41 49 4e 5f 45 53 54 49 4d 41   "EXPLAIN_ESTIMA
2510: 54 45 44 5f 52 4f 57 53 22 2c 0a 23 65 6e 64 69  TED_ROWS",.#endi
2520: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 58 54  f.#if SQLITE_EXT
2530: 52 41 5f 49 46 4e 55 4c 4c 52 4f 57 0a 20 20 22  RA_IFNULLROW.  "
2540: 45 58 54 52 41 5f 49 46 4e 55 4c 4c 52 4f 57 22  EXTRA_IFNULLROW"
2550: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2560: 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 49 4e 49  SQLITE_EXTRA_INI
2570: 54 0a 20 20 22 45 58 54 52 41 5f 49 4e 49 54 3d  T.  "EXTRA_INIT=
2580: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2590: 51 4c 49 54 45 5f 45 58 54 52 41 5f 49 4e 49 54  QLITE_EXTRA_INIT
25a0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
25b0: 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 53 48   SQLITE_EXTRA_SH
25c0: 55 54 44 4f 57 4e 0a 20 20 22 45 58 54 52 41 5f  UTDOWN.  "EXTRA_
25d0: 53 48 55 54 44 4f 57 4e 3d 22 20 43 54 49 4d 45  SHUTDOWN=" CTIME
25e0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45  OPT_VAL(SQLITE_E
25f0: 58 54 52 41 5f 53 48 55 54 44 4f 57 4e 29 2c 0a  XTRA_SHUTDOWN),.
2600: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
2610: 4c 49 54 45 5f 46 54 53 33 5f 4d 41 58 5f 45 58  LITE_FTS3_MAX_EX
2620: 50 52 5f 44 45 50 54 48 0a 20 20 22 46 54 53 33  PR_DEPTH.  "FTS3
2630: 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 3d  _MAX_EXPR_DEPTH=
2640: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2650: 51 4c 49 54 45 5f 46 54 53 33 5f 4d 41 58 5f 45  QLITE_FTS3_MAX_E
2660: 58 50 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64  XPR_DEPTH),.#end
2670: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 46 54  if.#if SQLITE_FT
2680: 53 35 5f 45 4e 41 42 4c 45 5f 54 45 53 54 5f 4d  S5_ENABLE_TEST_M
2690: 49 0a 20 20 22 46 54 53 35 5f 45 4e 41 42 4c 45  I.  "FTS5_ENABLE
26a0: 5f 54 45 53 54 5f 4d 49 22 2c 0a 23 65 6e 64 69  _TEST_MI",.#endi
26b0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 46 54 53  f.#if SQLITE_FTS
26c0: 35 5f 4e 4f 5f 57 49 54 48 4f 55 54 5f 52 4f 57  5_NO_WITHOUT_ROW
26d0: 49 44 0a 20 20 22 46 54 53 35 5f 4e 4f 5f 57 49  ID.  "FTS5_NO_WI
26e0: 54 48 4f 55 54 5f 52 4f 57 49 44 22 2c 0a 23 65  THOUT_ROWID",.#e
26f0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2700: 48 41 53 5f 43 4f 44 45 43 0a 20 20 22 48 41 53  HAS_CODEC.  "HAS
2710: 5f 43 4f 44 45 43 22 2c 0a 23 65 6e 64 69 66 0a  _CODEC",.#endif.
2720: 23 69 66 20 48 41 56 45 5f 49 53 4e 41 4e 20 7c  #if HAVE_ISNAN |
2730: 7c 20 53 51 4c 49 54 45 5f 48 41 56 45 5f 49 53  | SQLITE_HAVE_IS
2740: 4e 41 4e 0a 20 20 22 48 41 56 45 5f 49 53 4e 41  NAN.  "HAVE_ISNA
2750: 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  N",.#endif.#if S
2760: 51 4c 49 54 45 5f 48 4f 4d 45 47 52 4f 57 4e 5f  QLITE_HOMEGROWN_
2770: 52 45 43 55 52 53 49 56 45 5f 4d 55 54 45 58 0a  RECURSIVE_MUTEX.
2780: 20 20 22 48 4f 4d 45 47 52 4f 57 4e 5f 52 45 43    "HOMEGROWN_REC
2790: 55 52 53 49 56 45 5f 4d 55 54 45 58 22 2c 0a 23  URSIVE_MUTEX",.#
27a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
27b0: 5f 49 47 4e 4f 52 45 5f 41 46 50 5f 4c 4f 43 4b  _IGNORE_AFP_LOCK
27c0: 5f 45 52 52 4f 52 53 0a 20 20 22 49 47 4e 4f 52  _ERRORS.  "IGNOR
27d0: 45 5f 41 46 50 5f 4c 4f 43 4b 5f 45 52 52 4f 52  E_AFP_LOCK_ERROR
27e0: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
27f0: 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5f 46 4c 4f  QLITE_IGNORE_FLO
2800: 43 4b 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 0a 20  CK_LOCK_ERRORS. 
2810: 20 22 49 47 4e 4f 52 45 5f 46 4c 4f 43 4b 5f 4c   "IGNORE_FLOCK_L
2820: 4f 43 4b 5f 45 52 52 4f 52 53 22 2c 0a 23 65 6e  OCK_ERRORS",.#en
2830: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49  dif.#if SQLITE_I
2840: 4e 4c 49 4e 45 5f 4d 45 4d 43 50 59 0a 20 20 22  NLINE_MEMCPY.  "
2850: 49 4e 4c 49 4e 45 5f 4d 45 4d 43 50 59 22 2c 0a  INLINE_MEMCPY",.
2860: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2870: 45 5f 49 4e 54 36 34 5f 54 59 50 45 0a 20 20 22  E_INT64_TYPE.  "
2880: 49 4e 54 36 34 5f 54 59 50 45 22 2c 0a 23 65 6e  INT64_TYPE",.#en
2890: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
28a0: 45 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  E_INTEGRITY_CHEC
28b0: 4b 5f 45 52 52 4f 52 5f 4d 41 58 0a 20 20 22 49  K_ERROR_MAX.  "I
28c0: 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b 5f 45  NTEGRITY_CHECK_E
28d0: 52 52 4f 52 5f 4d 41 58 3d 22 20 43 54 49 4d 45  RROR_MAX=" CTIME
28e0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 49  OPT_VAL(SQLITE_I
28f0: 4e 54 45 47 52 49 54 59 5f 43 48 45 43 4b 5f 45  NTEGRITY_CHECK_E
2900: 52 52 4f 52 5f 4d 41 58 29 2c 0a 23 65 6e 64 69  RROR_MAX),.#endi
2910: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c 49 4b  f.#if SQLITE_LIK
2920: 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43 48 5f 42  E_DOESNT_MATCH_B
2930: 4c 4f 42 53 0a 20 20 22 4c 49 4b 45 5f 44 4f 45  LOBS.  "LIKE_DOE
2940: 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 22  SNT_MATCH_BLOBS"
2950: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2960: 49 54 45 5f 4c 4f 43 4b 5f 54 52 41 43 45 0a 20  ITE_LOCK_TRACE. 
2970: 20 22 4c 4f 43 4b 5f 54 52 41 43 45 22 2c 0a 23   "LOCK_TRACE",.#
2980: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2990: 5f 4c 4f 47 5f 43 41 43 48 45 5f 53 50 49 4c 4c  _LOG_CACHE_SPILL
29a0: 0a 20 20 22 4c 4f 47 5f 43 41 43 48 45 5f 53 50  .  "LOG_CACHE_SP
29b0: 49 4c 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ILL",.#endif.#if
29c0: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 4c 4c 4f  def SQLITE_MALLO
29d0: 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 0a 20 20 22  C_SOFT_LIMIT.  "
29e0: 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49 4d 49  MALLOC_SOFT_LIMI
29f0: 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  T=" CTIMEOPT_VAL
2a00: 28 53 51 4c 49 54 45 5f 4d 41 4c 4c 4f 43 5f 53  (SQLITE_MALLOC_S
2a10: 4f 46 54 5f 4c 49 4d 49 54 29 2c 0a 23 65 6e 64  OFT_LIMIT),.#end
2a20: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
2a30: 5f 4d 41 58 5f 41 54 54 41 43 48 45 44 0a 20 20  _MAX_ATTACHED.  
2a40: 22 4d 41 58 5f 41 54 54 41 43 48 45 44 3d 22 20  "MAX_ATTACHED=" 
2a50: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
2a60: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
2a70: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2a80: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55   SQLITE_MAX_COLU
2a90: 4d 4e 0a 20 20 22 4d 41 58 5f 43 4f 4c 55 4d 4e  MN.  "MAX_COLUMN
2aa0: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
2ab0: 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d  SQLITE_MAX_COLUM
2ac0: 4e 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  N),.#endif.#ifde
2ad0: 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d  f SQLITE_MAX_COM
2ae0: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 0a 20 20 22  POUND_SELECT.  "
2af0: 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c  MAX_COMPOUND_SEL
2b00: 45 43 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ECT=" CTIMEOPT_V
2b10: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f  AL(SQLITE_MAX_CO
2b20: 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 29 2c 0a  MPOUND_SELECT),.
2b30: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
2b40: 4c 49 54 45 5f 4d 41 58 5f 44 45 46 41 55 4c 54  LITE_MAX_DEFAULT
2b50: 5f 50 41 47 45 5f 53 49 5a 45 0a 20 20 22 4d 41  _PAGE_SIZE.  "MA
2b60: 58 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53  X_DEFAULT_PAGE_S
2b70: 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  IZE=" CTIMEOPT_V
2b80: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 44 45  AL(SQLITE_MAX_DE
2b90: 46 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 29  FAULT_PAGE_SIZE)
2ba0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2bb0: 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50 52 5f  SQLITE_MAX_EXPR_
2bc0: 44 45 50 54 48 0a 20 20 22 4d 41 58 5f 45 58 50  DEPTH.  "MAX_EXP
2bd0: 52 5f 44 45 50 54 48 3d 22 20 43 54 49 4d 45 4f  R_DEPTH=" CTIMEO
2be0: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41  PT_VAL(SQLITE_MA
2bf0: 58 5f 45 58 50 52 5f 44 45 50 54 48 29 2c 0a 23  X_EXPR_DEPTH),.#
2c00: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2c10: 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e  ITE_MAX_FUNCTION
2c20: 5f 41 52 47 0a 20 20 22 4d 41 58 5f 46 55 4e 43  _ARG.  "MAX_FUNC
2c30: 54 49 4f 4e 5f 41 52 47 3d 22 20 43 54 49 4d 45  TION_ARG=" CTIME
2c40: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2c50: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 29  AX_FUNCTION_ARG)
2c60: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2c70: 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54  SQLITE_MAX_LENGT
2c80: 48 0a 20 20 22 4d 41 58 5f 4c 45 4e 47 54 48 3d  H.  "MAX_LENGTH=
2c90: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2ca0: 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48  QLITE_MAX_LENGTH
2cb0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2cc0: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 49 4b 45   SQLITE_MAX_LIKE
2cd0: 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 0a  _PATTERN_LENGTH.
2ce0: 20 20 22 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54    "MAX_LIKE_PATT
2cf0: 45 52 4e 5f 4c 45 4e 47 54 48 3d 22 20 43 54 49  ERN_LENGTH=" CTI
2d00: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2d10: 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52  _MAX_LIKE_PATTER
2d20: 4e 5f 4c 45 4e 47 54 48 29 2c 0a 23 65 6e 64 69  N_LENGTH),.#endi
2d30: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2d40: 4d 41 58 5f 4d 45 4d 4f 52 59 0a 20 20 22 4d 41  MAX_MEMORY.  "MA
2d50: 58 5f 4d 45 4d 4f 52 59 3d 22 20 43 54 49 4d 45  X_MEMORY=" CTIME
2d60: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2d70: 41 58 5f 4d 45 4d 4f 52 59 29 2c 0a 23 65 6e 64  AX_MEMORY),.#end
2d80: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
2d90: 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 0a 20  _MAX_MMAP_SIZE. 
2da0: 20 22 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 3d   "MAX_MMAP_SIZE=
2db0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
2dc0: 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53  QLITE_MAX_MMAP_S
2dd0: 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  IZE),.#endif.#if
2de0: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  def SQLITE_MAX_M
2df0: 4d 41 50 5f 53 49 5a 45 5f 0a 20 20 22 4d 41 58  MAP_SIZE_.  "MAX
2e00: 5f 4d 4d 41 50 5f 53 49 5a 45 5f 3d 22 20 43 54  _MMAP_SIZE_=" CT
2e10: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2e20: 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f  E_MAX_MMAP_SIZE_
2e30: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2e40: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45   SQLITE_MAX_PAGE
2e50: 5f 43 4f 55 4e 54 0a 20 20 22 4d 41 58 5f 50 41  _COUNT.  "MAX_PA
2e60: 47 45 5f 43 4f 55 4e 54 3d 22 20 43 54 49 4d 45  GE_COUNT=" CTIME
2e70: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2e80: 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54 29 2c 0a  AX_PAGE_COUNT),.
2e90: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
2ea0: 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53 49  LITE_MAX_PAGE_SI
2eb0: 5a 45 0a 20 20 22 4d 41 58 5f 50 41 47 45 5f 53  ZE.  "MAX_PAGE_S
2ec0: 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  IZE=" CTIMEOPT_V
2ed0: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41  AL(SQLITE_MAX_PA
2ee0: 47 45 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66  GE_SIZE),.#endif
2ef0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2f00: 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 0a  AX_SCHEMA_RETRY.
2f10: 20 20 22 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45    "MAX_SCHEMA_RE
2f20: 54 52 59 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  TRY=" CTIMEOPT_V
2f30: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43  AL(SQLITE_MAX_SC
2f40: 48 45 4d 41 5f 52 45 54 52 59 29 2c 0a 23 65 6e  HEMA_RETRY),.#en
2f50: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2f60: 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48  E_MAX_SQL_LENGTH
2f70: 0a 20 20 22 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47  .  "MAX_SQL_LENG
2f80: 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  TH=" CTIMEOPT_VA
2f90: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 53 51 4c  L(SQLITE_MAX_SQL
2fa0: 5f 4c 45 4e 47 54 48 29 2c 0a 23 65 6e 64 69 66  _LENGTH),.#endif
2fb0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2fc0: 41 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48  AX_TRIGGER_DEPTH
2fd0: 0a 20 20 22 4d 41 58 5f 54 52 49 47 47 45 52 5f  .  "MAX_TRIGGER_
2fe0: 44 45 50 54 48 3d 22 20 43 54 49 4d 45 4f 50 54  DEPTH=" CTIMEOPT
2ff0: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f  _VAL(SQLITE_MAX_
3000: 54 52 49 47 47 45 52 5f 44 45 50 54 48 29 2c 0a  TRIGGER_DEPTH),.
3010: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
3020: 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42 4c  LITE_MAX_VARIABL
3030: 45 5f 4e 55 4d 42 45 52 0a 20 20 22 4d 41 58 5f  E_NUMBER.  "MAX_
3040: 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 3d  VARIABLE_NUMBER=
3050: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
3060: 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49 41 42  QLITE_MAX_VARIAB
3070: 4c 45 5f 4e 55 4d 42 45 52 29 2c 0a 23 65 6e 64  LE_NUMBER),.#end
3080: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
3090: 5f 4d 41 58 5f 56 44 42 45 5f 4f 50 0a 20 20 22  _MAX_VDBE_OP.  "
30a0: 4d 41 58 5f 56 44 42 45 5f 4f 50 3d 22 20 43 54  MAX_VDBE_OP=" CT
30b0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
30c0: 45 5f 4d 41 58 5f 56 44 42 45 5f 4f 50 29 2c 0a  E_MAX_VDBE_OP),.
30d0: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
30e0: 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f  LITE_MAX_WORKER_
30f0: 54 48 52 45 41 44 53 0a 20 20 22 4d 41 58 5f 57  THREADS.  "MAX_W
3100: 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d 22 20  ORKER_THREADS=" 
3110: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
3120: 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45 52 5f 54  ITE_MAX_WORKER_T
3130: 48 52 45 41 44 53 29 2c 0a 23 65 6e 64 69 66 0a  HREADS),.#endif.
3140: 23 69 66 20 53 51 4c 49 54 45 5f 4d 45 4d 44 45  #if SQLITE_MEMDE
3150: 42 55 47 0a 20 20 22 4d 45 4d 44 45 42 55 47 22  BUG.  "MEMDEBUG"
3160: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3170: 49 54 45 5f 4d 49 58 45 44 5f 45 4e 44 49 41 4e  ITE_MIXED_ENDIAN
3180: 5f 36 34 42 49 54 5f 46 4c 4f 41 54 0a 20 20 22  _64BIT_FLOAT.  "
3190: 4d 49 58 45 44 5f 45 4e 44 49 41 4e 5f 36 34 42  MIXED_ENDIAN_64B
31a0: 49 54 5f 46 4c 4f 41 54 22 2c 0a 23 65 6e 64 69  IT_FLOAT",.#endi
31b0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 4d 41  f.#if SQLITE_MMA
31c0: 50 5f 52 45 41 44 57 52 49 54 45 0a 20 20 22 4d  P_READWRITE.  "M
31d0: 4d 41 50 5f 52 45 41 44 57 52 49 54 45 22 2c 0a  MAP_READWRITE",.
31e0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
31f0: 45 5f 4d 55 54 45 58 5f 4e 4f 4f 50 0a 20 20 22  E_MUTEX_NOOP.  "
3200: 4d 55 54 45 58 5f 4e 4f 4f 50 22 2c 0a 23 65 6e  MUTEX_NOOP",.#en
3210: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d  dif.#if SQLITE_M
3220: 55 54 45 58 5f 4e 52 45 46 0a 20 20 22 4d 55 54  UTEX_NREF.  "MUT
3230: 45 58 5f 4e 52 45 46 22 2c 0a 23 65 6e 64 69 66  EX_NREF",.#endif
3240: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45  .#if SQLITE_MUTE
3250: 58 5f 4f 4d 49 54 0a 20 20 22 4d 55 54 45 58 5f  X_OMIT.  "MUTEX_
3260: 4f 4d 49 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  OMIT",.#endif.#i
3270: 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 50  f SQLITE_MUTEX_P
3280: 54 48 52 45 41 44 53 0a 20 20 22 4d 55 54 45 58  THREADS.  "MUTEX
3290: 5f 50 54 48 52 45 41 44 53 22 2c 0a 23 65 6e 64  _PTHREADS",.#end
32a0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55  if.#if SQLITE_MU
32b0: 54 45 58 5f 57 33 32 0a 20 20 22 4d 55 54 45 58  TEX_W32.  "MUTEX
32c0: 5f 57 33 32 22 2c 0a 23 65 6e 64 69 66 0a 23 69  _W32",.#endif.#i
32d0: 66 20 53 51 4c 49 54 45 5f 4e 45 45 44 5f 45 52  f SQLITE_NEED_ER
32e0: 52 5f 4e 41 4d 45 0a 20 20 22 4e 45 45 44 5f 45  R_NAME.  "NEED_E
32f0: 52 52 5f 4e 41 4d 45 22 2c 0a 23 65 6e 64 69 66  RR_NAME",.#endif
3300: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4e 4f 49 4e  .#if SQLITE_NOIN
3310: 4c 49 4e 45 0a 20 20 22 4e 4f 49 4e 4c 49 4e 45  LINE.  "NOINLINE
3320: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3330: 4c 49 54 45 5f 4e 4f 5f 53 59 4e 43 0a 20 20 22  LITE_NO_SYNC.  "
3340: 4e 4f 5f 53 59 4e 43 22 2c 0a 23 65 6e 64 69 66  NO_SYNC",.#endif
3350: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3360: 5f 41 4c 54 45 52 54 41 42 4c 45 0a 20 20 22 4f  _ALTERTABLE.  "O
3370: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 22 2c  MIT_ALTERTABLE",
3380: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3390: 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 0a  TE_OMIT_ANALYZE.
33a0: 20 20 22 4f 4d 49 54 5f 41 4e 41 4c 59 5a 45 22    "OMIT_ANALYZE"
33b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
33c0: 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41 43 48 0a  ITE_OMIT_ATTACH.
33d0: 20 20 22 4f 4d 49 54 5f 41 54 54 41 43 48 22 2c    "OMIT_ATTACH",
33e0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
33f0: 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f 52 49 5a  TE_OMIT_AUTHORIZ
3400: 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 41 55  ATION.  "OMIT_AU
3410: 54 48 4f 52 49 5a 41 54 49 4f 4e 22 2c 0a 23 65  THORIZATION",.#e
3420: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3430: 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d 45  OMIT_AUTOINCREME
3440: 4e 54 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 49  NT.  "OMIT_AUTOI
3450: 4e 43 52 45 4d 45 4e 54 22 2c 0a 23 65 6e 64 69  NCREMENT",.#endi
3460: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3470: 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20 22 4f 4d  T_AUTOINIT.  "OM
3480: 49 54 5f 41 55 54 4f 49 4e 49 54 22 2c 0a 23 65  IT_AUTOINIT",.#e
3490: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
34a0: 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  OMIT_AUTOMATIC_I
34b0: 4e 44 45 58 0a 20 20 22 4f 4d 49 54 5f 41 55 54  NDEX.  "OMIT_AUT
34c0: 4f 4d 41 54 49 43 5f 49 4e 44 45 58 22 2c 0a 23  OMATIC_INDEX",.#
34d0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
34e0: 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45 54 0a  _OMIT_AUTORESET.
34f0: 20 20 22 4f 4d 49 54 5f 41 55 54 4f 52 45 53 45    "OMIT_AUTORESE
3500: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
3510: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 56  QLITE_OMIT_AUTOV
3520: 41 43 55 55 4d 0a 20 20 22 4f 4d 49 54 5f 41 55  ACUUM.  "OMIT_AU
3530: 54 4f 56 41 43 55 55 4d 22 2c 0a 23 65 6e 64 69  TOVACUUM",.#endi
3540: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3550: 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49  T_BETWEEN_OPTIMI
3560: 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 42  ZATION.  "OMIT_B
3570: 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54  ETWEEN_OPTIMIZAT
3580: 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ION",.#endif.#if
3590: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 4c 4f   SQLITE_OMIT_BLO
35a0: 42 5f 4c 49 54 45 52 41 4c 0a 20 20 22 4f 4d 49  B_LITERAL.  "OMI
35b0: 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 22 2c  T_BLOB_LITERAL",
35c0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
35d0: 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55  TE_OMIT_BTREECOU
35e0: 4e 54 0a 20 20 22 4f 4d 49 54 5f 42 54 52 45 45  NT.  "OMIT_BTREE
35f0: 43 4f 55 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23  COUNT",.#endif.#
3600: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  if SQLITE_OMIT_C
3610: 41 53 54 0a 20 20 22 4f 4d 49 54 5f 43 41 53 54  AST.  "OMIT_CAST
3620: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3630: 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 0a  LITE_OMIT_CHECK.
3640: 20 20 22 4f 4d 49 54 5f 43 48 45 43 4b 22 2c 0a    "OMIT_CHECK",.
3650: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3660: 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45 0a  E_OMIT_COMPLETE.
3670: 20 20 22 4f 4d 49 54 5f 43 4f 4d 50 4c 45 54 45    "OMIT_COMPLETE
3680: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3690: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4f 55  LITE_OMIT_COMPOU
36a0: 4e 44 5f 53 45 4c 45 43 54 0a 20 20 22 4f 4d 49  ND_SELECT.  "OMI
36b0: 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
36c0: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
36d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4e 46 4c  QLITE_OMIT_CONFL
36e0: 49 43 54 5f 43 4c 41 55 53 45 0a 20 20 22 4f 4d  ICT_CLAUSE.  "OM
36f0: 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43 4c 41 55  IT_CONFLICT_CLAU
3700: 53 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  SE",.#endif.#if 
3710: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 54 45 0a  SQLITE_OMIT_CTE.
3720: 20 20 22 4f 4d 49 54 5f 43 54 45 22 2c 0a 23 65    "OMIT_CTE",.#e
3730: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3740: 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f 46 55  OMIT_DATETIME_FU
3750: 4e 43 53 0a 20 20 22 4f 4d 49 54 5f 44 41 54 45  NCS.  "OMIT_DATE
3760: 54 49 4d 45 5f 46 55 4e 43 53 22 2c 0a 23 65 6e  TIME_FUNCS",.#en
3770: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3780: 4d 49 54 5f 44 45 43 4c 54 59 50 45 0a 20 20 22  MIT_DECLTYPE.  "
3790: 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 22 2c 0a  OMIT_DECLTYPE",.
37a0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
37b0: 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45  E_OMIT_DEPRECATE
37c0: 44 0a 20 20 22 4f 4d 49 54 5f 44 45 50 52 45 43  D.  "OMIT_DEPREC
37d0: 41 54 45 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ATED",.#endif.#i
37e0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 49  f SQLITE_OMIT_DI
37f0: 53 4b 49 4f 0a 20 20 22 4f 4d 49 54 5f 44 49 53  SKIO.  "OMIT_DIS
3800: 4b 49 4f 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  KIO",.#endif.#if
3810: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 45 58 50   SQLITE_OMIT_EXP
3820: 4c 41 49 4e 0a 20 20 22 4f 4d 49 54 5f 45 58 50  LAIN.  "OMIT_EXP
3830: 4c 41 49 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LAIN",.#endif.#i
3840: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c  f SQLITE_OMIT_FL
3850: 41 47 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d  AG_PRAGMAS.  "OM
3860: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 22  IT_FLAG_PRAGMAS"
3870: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3880: 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41 54 49 4e  ITE_OMIT_FLOATIN
3890: 47 5f 50 4f 49 4e 54 0a 20 20 22 4f 4d 49 54 5f  G_POINT.  "OMIT_
38a0: 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e 54 22 2c  FLOATING_POINT",
38b0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
38c0: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
38d0: 4b 45 59 0a 20 20 22 4f 4d 49 54 5f 46 4f 52 45  KEY.  "OMIT_FORE
38e0: 49 47 4e 5f 4b 45 59 22 2c 0a 23 65 6e 64 69 66  IGN_KEY",.#endif
38f0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3900: 5f 47 45 54 5f 54 41 42 4c 45 0a 20 20 22 4f 4d  _GET_TABLE.  "OM
3910: 49 54 5f 47 45 54 5f 54 41 42 4c 45 22 2c 0a 23  IT_GET_TABLE",.#
3920: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3930: 5f 4f 4d 49 54 5f 48 45 58 5f 49 4e 54 45 47 45  _OMIT_HEX_INTEGE
3940: 52 0a 20 20 22 4f 4d 49 54 5f 48 45 58 5f 49 4e  R.  "OMIT_HEX_IN
3950: 54 45 47 45 52 22 2c 0a 23 65 6e 64 69 66 0a 23  TEGER",.#endif.#
3960: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49  if SQLITE_OMIT_I
3970: 4e 43 52 42 4c 4f 42 0a 20 20 22 4f 4d 49 54 5f  NCRBLOB.  "OMIT_
3980: 49 4e 43 52 42 4c 4f 42 22 2c 0a 23 65 6e 64 69  INCRBLOB",.#endi
3990: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
39a0: 54 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  T_INTEGRITY_CHEC
39b0: 4b 0a 20 20 22 4f 4d 49 54 5f 49 4e 54 45 47 52  K.  "OMIT_INTEGR
39c0: 49 54 59 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64  ITY_CHECK",.#end
39d0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
39e0: 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41  IT_LIKE_OPTIMIZA
39f0: 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 4c 49 4b  TION.  "OMIT_LIK
3a00: 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  E_OPTIMIZATION",
3a10: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3a20: 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54  TE_OMIT_LOAD_EXT
3a30: 45 4e 53 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 4c  ENSION.  "OMIT_L
3a40: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 22 2c 0a  OAD_EXTENSION",.
3a50: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3a60: 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45  E_OMIT_LOCALTIME
3a70: 0a 20 20 22 4f 4d 49 54 5f 4c 4f 43 41 4c 54 49  .  "OMIT_LOCALTI
3a80: 4d 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ME",.#endif.#if 
3a90: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b  SQLITE_OMIT_LOOK
3aa0: 41 53 49 44 45 0a 20 20 22 4f 4d 49 54 5f 4c 4f  ASIDE.  "OMIT_LO
3ab0: 4f 4b 41 53 49 44 45 22 2c 0a 23 65 6e 64 69 66  OKASIDE",.#endif
3ac0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3ad0: 5f 4d 45 4d 4f 52 59 44 42 0a 20 20 22 4f 4d 49  _MEMORYDB.  "OMI
3ae0: 54 5f 4d 45 4d 4f 52 59 44 42 22 2c 0a 23 65 6e  T_MEMORYDB",.#en
3af0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3b00: 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49 5a 41 54  MIT_OR_OPTIMIZAT
3b10: 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 4f 52 5f 4f  ION.  "OMIT_OR_O
3b20: 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65  PTIMIZATION",.#e
3b30: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3b40: 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d  OMIT_PAGER_PRAGM
3b50: 41 53 0a 20 20 22 4f 4d 49 54 5f 50 41 47 45 52  AS.  "OMIT_PAGER
3b60: 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64 69  _PRAGMAS",.#endi
3b70: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3b80: 54 5f 50 41 52 53 45 52 5f 54 52 41 43 45 0a 20  T_PARSER_TRACE. 
3b90: 20 22 4f 4d 49 54 5f 50 41 52 53 45 52 5f 54 52   "OMIT_PARSER_TR
3ba0: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
3bb0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 4f 50   SQLITE_OMIT_POP
3bc0: 45 4e 0a 20 20 22 4f 4d 49 54 5f 50 4f 50 45 4e  EN.  "OMIT_POPEN
3bd0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3be0: 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41 47 4d 41  LITE_OMIT_PRAGMA
3bf0: 0a 20 20 22 4f 4d 49 54 5f 50 52 41 47 4d 41 22  .  "OMIT_PRAGMA"
3c00: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3c10: 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47 52 45 53  ITE_OMIT_PROGRES
3c20: 53 5f 43 41 4c 4c 42 41 43 4b 0a 20 20 22 4f 4d  S_CALLBACK.  "OM
3c30: 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c 4c  IT_PROGRESS_CALL
3c40: 42 41 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69  BACK",.#endif.#i
3c50: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 51 55  f SQLITE_OMIT_QU
3c60: 49 43 4b 42 41 4c 41 4e 43 45 0a 20 20 22 4f 4d  ICKBALANCE.  "OM
3c70: 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 22  IT_QUICKBALANCE"
3c80: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3c90: 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e 44 45 58  ITE_OMIT_REINDEX
3ca0: 0a 20 20 22 4f 4d 49 54 5f 52 45 49 4e 44 45 58  .  "OMIT_REINDEX
3cb0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3cc0: 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41  LITE_OMIT_SCHEMA
3cd0: 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54  _PRAGMAS.  "OMIT
3ce0: 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 22  _SCHEMA_PRAGMAS"
3cf0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3d00: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
3d10: 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 0a  VERSION_PRAGMAS.
3d20: 20 20 22 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56    "OMIT_SCHEMA_V
3d30: 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 22 2c  ERSION_PRAGMAS",
3d40: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3d50: 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43  TE_OMIT_SHARED_C
3d60: 41 43 48 45 0a 20 20 22 4f 4d 49 54 5f 53 48 41  ACHE.  "OMIT_SHA
3d70: 52 45 44 5f 43 41 43 48 45 22 2c 0a 23 65 6e 64  RED_CACHE",.#end
3d80: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3d90: 49 54 5f 53 48 55 54 44 4f 57 4e 5f 44 49 52 45  IT_SHUTDOWN_DIRE
3da0: 43 54 4f 52 49 45 53 0a 20 20 22 4f 4d 49 54 5f  CTORIES.  "OMIT_
3db0: 53 48 55 54 44 4f 57 4e 5f 44 49 52 45 43 54 4f  SHUTDOWN_DIRECTO
3dc0: 52 49 45 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RIES",.#endif.#i
3dd0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 55  f SQLITE_OMIT_SU
3de0: 42 51 55 45 52 59 0a 20 20 22 4f 4d 49 54 5f 53  BQUERY.  "OMIT_S
3df0: 55 42 51 55 45 52 59 22 2c 0a 23 65 6e 64 69 66  UBQUERY",.#endif
3e00: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3e10: 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 0a 20 20  _TCL_VARIABLE.  
3e20: 22 4f 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42  "OMIT_TCL_VARIAB
3e30: 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  LE",.#endif.#if 
3e40: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 4d 50  SQLITE_OMIT_TEMP
3e50: 44 42 0a 20 20 22 4f 4d 49 54 5f 54 45 4d 50 44  DB.  "OMIT_TEMPD
3e60: 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  B",.#endif.#if S
3e70: 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45 53 54 5f  QLITE_OMIT_TEST_
3e80: 43 4f 4e 54 52 4f 4c 0a 20 20 22 4f 4d 49 54 5f  CONTROL.  "OMIT_
3e90: 54 45 53 54 5f 43 4f 4e 54 52 4f 4c 22 2c 0a 23  TEST_CONTROL",.#
3ea0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3eb0: 5f 4f 4d 49 54 5f 54 52 41 43 45 0a 20 20 22 4f  _OMIT_TRACE.  "O
3ec0: 4d 49 54 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64  MIT_TRACE",.#end
3ed0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3ee0: 49 54 5f 54 52 49 47 47 45 52 0a 20 20 22 4f 4d  IT_TRIGGER.  "OM
3ef0: 49 54 5f 54 52 49 47 47 45 52 22 2c 0a 23 65 6e  IT_TRIGGER",.#en
3f00: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3f10: 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54  MIT_TRUNCATE_OPT
3f20: 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49  IMIZATION.  "OMI
3f30: 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d  T_TRUNCATE_OPTIM
3f40: 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66  IZATION",.#endif
3f50: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3f60: 5f 55 54 46 31 36 0a 20 20 22 4f 4d 49 54 5f 55  _UTF16.  "OMIT_U
3f70: 54 46 31 36 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TF16",.#endif.#i
3f80: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 41  f SQLITE_OMIT_VA
3f90: 43 55 55 4d 0a 20 20 22 4f 4d 49 54 5f 56 41 43  CUUM.  "OMIT_VAC
3fa0: 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  UUM",.#endif.#if
3fb0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 45   SQLITE_OMIT_VIE
3fc0: 57 0a 20 20 22 4f 4d 49 54 5f 56 49 45 57 22 2c  W.  "OMIT_VIEW",
3fd0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3fe0: 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54  TE_OMIT_VIRTUALT
3ff0: 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 56 49 52  ABLE.  "OMIT_VIR
4000: 54 55 41 4c 54 41 42 4c 45 22 2c 0a 23 65 6e 64  TUALTABLE",.#end
4010: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4020: 49 54 5f 57 41 4c 0a 20 20 22 4f 4d 49 54 5f 57  IT_WAL.  "OMIT_W
4030: 41 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  AL",.#endif.#if 
4040: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 53 44 0a  SQLITE_OMIT_WSD.
4050: 20 20 22 4f 4d 49 54 5f 57 53 44 22 2c 0a 23 65    "OMIT_WSD",.#e
4060: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4070: 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 0a 20 20  OMIT_XFER_OPT.  
4080: 22 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54 22 2c  "OMIT_XFER_OPT",
4090: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
40a0: 54 45 5f 50 43 41 43 48 45 5f 53 45 50 41 52 41  TE_PCACHE_SEPARA
40b0: 54 45 5f 48 45 41 44 45 52 0a 20 20 22 50 43 41  TE_HEADER.  "PCA
40c0: 43 48 45 5f 53 45 50 41 52 41 54 45 5f 48 45 41  CHE_SEPARATE_HEA
40d0: 44 45 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  DER",.#endif.#if
40e0: 20 53 51 4c 49 54 45 5f 50 45 52 46 4f 52 4d 41   SQLITE_PERFORMA
40f0: 4e 43 45 5f 54 52 41 43 45 0a 20 20 22 50 45 52  NCE_TRACE.  "PER
4100: 46 4f 52 4d 41 4e 43 45 5f 54 52 41 43 45 22 2c  FORMANCE_TRACE",
4110: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4120: 54 45 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TE_POWERSAFE_OVE
4130: 52 57 52 49 54 45 0a 20 20 22 50 4f 57 45 52 53  RWRITE.  "POWERS
4140: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 22 2c 0a  AFE_OVERWRITE",.
4150: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4160: 45 5f 50 52 45 46 45 52 5f 50 52 4f 58 59 5f 4c  E_PREFER_PROXY_L
4170: 4f 43 4b 49 4e 47 0a 20 20 22 50 52 45 46 45 52  OCKING.  "PREFER
4180: 5f 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e 47 22 2c  _PROXY_LOCKING",
4190: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
41a0: 54 45 5f 50 52 4f 58 59 5f 44 45 42 55 47 0a 20  TE_PROXY_DEBUG. 
41b0: 20 22 50 52 4f 58 59 5f 44 45 42 55 47 22 2c 0a   "PROXY_DEBUG",.
41c0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
41d0: 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f 52 44 45  E_REVERSE_UNORDE
41e0: 52 45 44 5f 53 45 4c 45 43 54 53 0a 20 20 22 52  RED_SELECTS.  "R
41f0: 45 56 45 52 53 45 5f 55 4e 4f 52 44 45 52 45 44  EVERSE_UNORDERED
4200: 5f 53 45 4c 45 43 54 53 22 2c 0a 23 65 6e 64 69  _SELECTS",.#endi
4210: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 52 54 52  f.#if SQLITE_RTR
4220: 45 45 5f 49 4e 54 5f 4f 4e 4c 59 0a 20 20 22 52  EE_INT_ONLY.  "R
4230: 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59 22 2c 0a  TREE_INT_ONLY",.
4240: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4250: 45 5f 53 45 43 55 52 45 5f 44 45 4c 45 54 45 0a  E_SECURE_DELETE.
4260: 20 20 22 53 45 43 55 52 45 5f 44 45 4c 45 54 45    "SECURE_DELETE
4270: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4280: 4c 49 54 45 5f 53 4d 41 4c 4c 5f 53 54 41 43 4b  LITE_SMALL_STACK
4290: 0a 20 20 22 53 4d 41 4c 4c 5f 53 54 41 43 4b 22  .  "SMALL_STACK"
42a0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
42b0: 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d  SQLITE_SORTER_PM
42c0: 41 53 5a 0a 20 20 22 53 4f 52 54 45 52 5f 50 4d  ASZ.  "SORTER_PM
42d0: 41 53 5a 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ASZ=" CTIMEOPT_V
42e0: 41 4c 28 53 51 4c 49 54 45 5f 53 4f 52 54 45 52  AL(SQLITE_SORTER
42f0: 5f 50 4d 41 53 5a 29 2c 0a 23 65 6e 64 69 66 0a  _PMASZ),.#endif.
4300: 23 69 66 20 53 51 4c 49 54 45 5f 53 4f 55 4e 44  #if SQLITE_SOUND
4310: 45 58 0a 20 20 22 53 4f 55 4e 44 45 58 22 2c 0a  EX.  "SOUNDEX",.
4320: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
4330: 4c 49 54 45 5f 53 54 41 54 34 5f 53 41 4d 50 4c  LITE_STAT4_SAMPL
4340: 45 53 0a 20 20 22 53 54 41 54 34 5f 53 41 4d 50  ES.  "STAT4_SAMP
4350: 4c 45 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  LES=" CTIMEOPT_V
4360: 41 4c 28 53 51 4c 49 54 45 5f 53 54 41 54 34 5f  AL(SQLITE_STAT4_
4370: 53 41 4d 50 4c 45 53 29 2c 0a 23 65 6e 64 69 66  SAMPLES),.#endif
4380: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 53  .#ifdef SQLITE_S
4390: 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 0a 20 20  TMTJRNL_SPILL.  
43a0: 22 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 3d  "STMTJRNL_SPILL=
43b0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
43c0: 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53  QLITE_STMTJRNL_S
43d0: 50 49 4c 4c 29 2c 0a 23 65 6e 64 69 66 0a 23 69  PILL),.#endif.#i
43e0: 66 20 53 51 4c 49 54 45 5f 53 55 42 53 54 52 5f  f SQLITE_SUBSTR_
43f0: 43 4f 4d 50 41 54 49 42 49 4c 49 54 59 0a 20 20  COMPATIBILITY.  
4400: 22 53 55 42 53 54 52 5f 43 4f 4d 50 41 54 49 42  "SUBSTR_COMPATIB
4410: 49 4c 49 54 59 22 2c 0a 23 65 6e 64 69 66 0a 23  ILITY",.#endif.#
4420: 69 66 20 53 51 4c 49 54 45 5f 53 59 53 54 45 4d  if SQLITE_SYSTEM
4430: 5f 4d 41 4c 4c 4f 43 0a 20 20 22 53 59 53 54 45  _MALLOC.  "SYSTE
4440: 4d 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69  M_MALLOC",.#endi
4450: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 54 43 4c  f.#if SQLITE_TCL
4460: 0a 20 20 22 54 43 4c 22 2c 0a 23 65 6e 64 69 66  .  "TCL",.#endif
4470: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 54  .#ifdef SQLITE_T
4480: 45 4d 50 5f 53 54 4f 52 45 0a 20 20 22 54 45 4d  EMP_STORE.  "TEM
4490: 50 5f 53 54 4f 52 45 3d 22 20 43 54 49 4d 45 4f  P_STORE=" CTIMEO
44a0: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 54 45  PT_VAL(SQLITE_TE
44b0: 4d 50 5f 53 54 4f 52 45 29 2c 0a 23 65 6e 64 69  MP_STORE),.#endi
44c0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 54 45 53  f.#if SQLITE_TES
44d0: 54 0a 20 20 22 54 45 53 54 22 2c 0a 23 65 6e 64  T.  "TEST",.#end
44e0: 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 53  if.#if defined(S
44f0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
4500: 29 0a 20 20 22 54 48 52 45 41 44 53 41 46 45 3d  ).  "THREADSAFE=
4510: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
4520: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
4530: 29 2c 0a 23 65 6c 69 66 20 64 65 66 69 6e 65 64  ),.#elif defined
4540: 28 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 54 48 52 45 41 44  MEOPT_VAL(THREAD
4570: 53 41 46 45 29 2c 0a 23 65 6c 73 65 0a 20 20 22  SAFE),.#else.  "
4580: 54 48 52 45 41 44 53 41 46 45 3d 31 22 2c 0a 23  THREADSAFE=1",.#
4590: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
45a0: 5f 55 4e 4c 49 4e 4b 5f 41 46 54 45 52 5f 43 4c  _UNLINK_AFTER_CL
45b0: 4f 53 45 0a 20 20 22 55 4e 4c 49 4e 4b 5f 41 46  OSE.  "UNLINK_AF
45c0: 54 45 52 5f 43 4c 4f 53 45 22 2c 0a 23 65 6e 64  TER_CLOSE",.#end
45d0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 4e  if.#if SQLITE_UN
45e0: 54 45 53 54 41 42 4c 45 0a 20 20 22 55 4e 54 45  TESTABLE.  "UNTE
45f0: 53 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a  STABLE",.#endif.
4600: 23 69 66 20 53 51 4c 49 54 45 5f 55 53 45 52 5f  #if SQLITE_USER_
4610: 41 55 54 48 45 4e 54 49 43 41 54 49 4f 4e 0a 20  AUTHENTICATION. 
4620: 20 22 55 53 45 52 5f 41 55 54 48 45 4e 54 49 43   "USER_AUTHENTIC
4630: 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  ATION",.#endif.#
4640: 69 66 20 53 51 4c 49 54 45 5f 55 53 45 5f 41 4c  if SQLITE_USE_AL
4650: 4c 4f 43 41 0a 20 20 22 55 53 45 5f 41 4c 4c 4f  LOCA.  "USE_ALLO
4660: 43 41 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  CA",.#endif.#if 
4670: 53 51 4c 49 54 45 5f 55 53 45 5f 46 43 4e 54 4c  SQLITE_USE_FCNTL
4680: 5f 54 52 41 43 45 0a 20 20 22 55 53 45 5f 46 43  _TRACE.  "USE_FC
4690: 4e 54 4c 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64  NTL_TRACE",.#end
46a0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 53  if.#if SQLITE_US
46b0: 45 5f 55 52 49 0a 20 20 22 55 53 45 5f 55 52 49  E_URI.  "USE_URI
46c0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
46d0: 4c 49 54 45 5f 56 44 42 45 5f 43 4f 56 45 52 41  LITE_VDBE_COVERA
46e0: 47 45 0a 20 20 22 56 44 42 45 5f 43 4f 56 45 52  GE.  "VDBE_COVER
46f0: 41 47 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  AGE",.#endif.#if
4700: 20 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41   SQLITE_WIN32_MA
4710: 4c 4c 4f 43 0a 20 20 22 57 49 4e 33 32 5f 4d 41  LLOC.  "WIN32_MA
4720: 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LLOC",.#endif.#i
4730: 66 20 53 51 4c 49 54 45 5f 5a 45 52 4f 5f 4d 41  f SQLITE_ZERO_MA
4740: 4c 4c 4f 43 0a 20 20 22 5a 45 52 4f 5f 4d 41 4c  LLOC.  "ZERO_MAL
4750: 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 2f 2a 20  LOC",.#endif./* 
4760: 0a 2a 2a 20 45 4e 44 20 43 4f 44 45 20 47 45 4e  .** END CODE GEN
4770: 45 52 41 54 45 44 20 42 59 20 74 6f 6f 6c 2f 6d  ERATED BY tool/m
4780: 6b 63 74 69 6d 65 2e 74 63 6c 20 0a 2a 2f 0a 7d  kctime.tcl .*/.}
4790: 3b 0a 0a 53 51 4c 49 54 45 5f 50 52 49 56 41 54  ;..SQLITE_PRIVAT
47a0: 45 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 73  E const char **s
47b0: 71 6c 69 74 65 33 43 6f 6d 70 69 6c 65 4f 70 74  qlite3CompileOpt
47c0: 69 6f 6e 73 28 69 6e 74 20 2a 70 6e 4f 70 74 29  ions(int *pnOpt)
47d0: 7b 0a 20 20 2a 70 6e 4f 70 74 20 3d 20 73 69 7a  {.  *pnOpt = siz
47e0: 65 6f 66 28 73 71 6c 69 74 65 33 61 7a 43 6f 6d  eof(sqlite3azCom
47f0: 70 69 6c 65 4f 70 74 29 20 2f 20 73 69 7a 65 6f  pileOpt) / sizeo
4800: 66 28 73 71 6c 69 74 65 33 61 7a 43 6f 6d 70 69  f(sqlite3azCompi
4810: 6c 65 4f 70 74 5b 30 5d 29 3b 0a 20 20 72 65 74  leOpt[0]);.  ret
4820: 75 72 6e 20 28 63 6f 6e 73 74 20 63 68 61 72 2a  urn (const char*
4830: 2a 29 73 71 6c 69 74 65 33 61 7a 43 6f 6d 70 69  *)sqlite3azCompi
4840: 6c 65 4f 70 74 3b 0a 7d 0a 0a 23 65 6e 64 69 66  leOpt;.}..#endif
4850: 20 2f 2a 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f   /* SQLITE_OMIT_
4860: 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49  COMPILEOPTION_DI
4870: 41 47 53 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a  AGS */../*******
4880: 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66 20 63  ******* End of c
4890: 74 69 6d 65 2e 63 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  time.c *********
48a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
48b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
48c0: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  ******/./*******
48d0: 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69  ******* Begin fi
48e0: 6c 65 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a  le sqliteInt.h *
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 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30  ******/./*.** 20
4920: 30 31 20 53 65 70 74 65 6d 62 65 72 20 31 35 0a  01 September 15.
4930: 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72  **.** The author
4940: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
4950: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
4960: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
4970: 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61  ace of.** a lega
4980: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
4990: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a  s a blessing:.**
49a0: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64  .**    May you d
49b0: 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65  o good and not e
49c0: 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79  vil..**    May y
49d0: 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e  ou find forgiven
49e0: 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66  ess for yourself
49f0: 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68   and forgive oth
4a00: 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79  ers..**    May y
4a10: 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c  ou share freely,
4a20: 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f   never taking mo
4a30: 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65  re than you give
4a40: 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..**.***********
4a50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4a60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4a70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4a80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a  **************.*
4a90: 2a 20 49 6e 74 65 72 6e 61 6c 20 69 6e 74 65 72  * Internal inter
4aa0: 66 61 63 65 20 64 65 66 69 6e 69 74 69 6f 6e 73  face definitions
4ab0: 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a   for SQLite..**.
4ac0: 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54  */.#ifndef SQLIT
4ad0: 45 49 4e 54 5f 48 0a 23 64 65 66 69 6e 65 20 53  EINT_H.#define S
4ae0: 51 4c 49 54 45 49 4e 54 5f 48 0a 0a 2f 2a 20 53  QLITEINT_H../* S
4af0: 70 65 63 69 61 6c 20 43 6f 6d 6d 65 6e 74 73 3a  pecial Comments:
4b00: 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 63 6f 6d 6d  .**.** Some comm
4b10: 65 6e 74 73 20 68 61 76 65 20 73 70 65 63 69 61  ents have specia
4b20: 6c 20 6d 65 61 6e 69 6e 67 20 74 6f 20 74 68 65  l meaning to the
4b30: 20 74 6f 6f 6c 73 20 74 68 61 74 20 6d 65 61 73   tools that meas
4b40: 75 72 65 20 74 65 73 74 0a 2a 2a 20 63 6f 76 65  ure test.** cove
4b50: 72 61 67 65 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4e  rage:.**.**    N
4b60: 4f 5f 54 45 53 54 20 20 20 20 20 20 20 20 20 20  O_TEST          
4b70: 20 20 20 20 20 20 20 20 20 20 20 2d 20 54 68 65             - The
4b80: 20 62 72 61 6e 63 68 65 73 20 6f 6e 20 74 68 69   branches on thi
4b90: 73 20 6c 69 6e 65 20 61 72 65 20 6e 6f 74 0a 2a  s line are not.*
4ba0: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4bc0: 20 20 20 6d 65 61 73 75 72 65 64 20 62 79 20 62     measured by b
4bd0: 72 61 6e 63 68 20 63 6f 76 65 72 61 67 65 2e 20  ranch coverage. 
4be0: 20 54 68 69 73 20 69 73 0a 2a 2a 20 20 20 20 20   This is.**     
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 75 73 65               use
4c10: 64 20 6f 6e 20 6c 69 6e 65 73 20 6f 66 20 63 6f  d on lines of co
4c20: 64 65 20 74 68 61 74 20 61 63 74 75 61 6c 6c 79  de that actually
4c30: 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  .**             
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c50: 20 20 20 20 20 69 6d 70 6c 65 6d 65 6e 74 20 70       implement p
4c60: 61 72 74 73 20 6f 66 20 63 6f 76 65 72 61 67 65  arts of coverage
4c70: 20 74 65 73 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20   testing..**.** 
4c80: 20 20 20 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 2d     OPTIMIZATION-
4c90: 49 46 2d 54 52 55 45 20 20 20 20 20 20 20 20 2d  IF-TRUE        -
4ca0: 20 54 68 69 73 20 62 72 61 6e 63 68 20 69 73 20   This branch is 
4cb0: 61 6c 6c 6f 77 65 64 20 74 6f 20 61 6c 77 61 79  allowed to alway
4cc0: 20 62 65 20 66 61 6c 73 65 0a 2a 2a 20 20 20 20   be false.**    
4cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e                an
4cf0: 64 20 74 68 65 20 63 6f 72 72 65 63 74 20 61 6e  d the correct an
4d00: 73 77 65 72 20 69 73 20 73 74 69 6c 6c 20 6f 62  swer is still ob
4d10: 74 61 69 6e 65 64 2c 0a 2a 2a 20 20 20 20 20 20  tained,.**      
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 20 20 20 74 68 6f 75              thou
4d40: 67 68 20 70 65 72 68 61 70 73 20 6d 6f 72 65 20  gh perhaps more 
4d50: 73 6c 6f 77 6c 79 2e 0a 2a 2a 0a 2a 2a 20 20 20  slowly..**.**   
4d60: 20 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 2d 49 46   OPTIMIZATION-IF
4d70: 2d 46 41 4c 53 45 20 20 20 20 20 20 20 2d 20 54  -FALSE       - T
4d80: 68 69 73 20 62 72 61 6e 63 68 20 69 73 20 61 6c  his branch is al
4d90: 6c 6f 77 65 64 20 74 6f 20 61 6c 77 61 79 20 62  lowed to alway b
4da0: 65 20 74 72 75 65 0a 2a 2a 20 20 20 20 20 20 20  e true.**       
4db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4dc0: 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 20 74             and t
4dd0: 68 65 20 63 6f 72 72 65 63 74 20 61 6e 73 77 65  he correct answe
4de0: 72 20 69 73 20 73 74 69 6c 6c 20 6f 62 74 61 69  r is still obtai
4df0: 6e 65 64 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20  ned,.**         
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e10: 20 20 20 20 20 20 20 20 20 74 68 6f 75 67 68 20           though 
4e20: 70 65 72 68 61 70 73 20 6d 6f 72 65 20 73 6c 6f  perhaps more slo
4e30: 77 6c 79 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 50 52  wly..**.**    PR
4e40: 45 56 45 4e 54 53 2d 48 41 52 4d 4c 45 53 53 2d  EVENTS-HARMLESS-
4e50: 4f 56 45 52 52 45 41 44 20 20 2d 20 54 68 69 73  OVERREAD  - This
4e60: 20 62 72 61 6e 63 68 20 70 72 65 76 65 6e 74 73   branch prevents
4e70: 20 61 20 62 75 66 66 65 72 20 6f 76 65 72 72 65   a buffer overre
4e80: 61 64 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20  ad.**           
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ea0: 20 20 20 20 20 20 20 74 68 61 74 20 77 6f 75 6c         that woul
4eb0: 64 20 62 65 20 68 61 72 6d 6c 65 73 73 20 61 6e  d be harmless an
4ec0: 64 20 75 6e 64 65 74 65 63 74 61 62 6c 65 0a 2a  d undetectable.*
4ed0: 2a 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 20 69 66 20 69 74 20 64 69 64 20 6f 63 63     if it did occ
4f00: 75 72 2e 20 20 0a 2a 2a 0a 2a 2a 20 49 6e 20 61  ur.  .**.** In a
4f10: 6c 6c 20 63 61 73 65 73 2c 20 74 68 65 20 73 70  ll cases, the sp
4f20: 65 63 69 61 6c 20 63 6f 6d 6d 65 6e 74 20 6d 75  ecial comment mu
4f30: 73 74 20 62 65 20 65 6e 63 6c 6f 73 65 64 20 69  st be enclosed i
4f40: 6e 20 74 68 65 20 75 73 75 61 6c 0a 2a 2a 20 73  n the usual.** s
4f50: 6c 61 73 68 2d 61 73 74 65 72 69 73 6b 2e 2e 2e  lash-asterisk...
4f60: 61 73 74 65 72 69 73 6b 2d 73 6c 61 73 68 20 63  asterisk-slash c
4f70: 6f 6d 6d 65 6e 74 20 6d 61 72 6b 73 2c 20 77 69  omment marks, wi
4f80: 74 68 20 6e 6f 20 73 70 61 63 65 73 20 62 65 74  th no spaces bet
4f90: 77 65 65 6e 20 74 68 65 20 0a 2a 2a 20 61 73 74  ween the .** ast
4fa0: 65 72 69 73 6b 73 20 61 6e 64 20 74 68 65 20 63  erisks and the c
4fb0: 6f 6d 6d 65 6e 74 20 74 65 78 74 2e 0a 2a 2f 0a  omment text..*/.
4fc0: 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73 75 72 65  ./*.** Make sure
4fd0: 20 74 68 65 20 54 63 6c 20 63 61 6c 6c 69 6e 67   the Tcl calling
4fe0: 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 6d 61 63 72   convention macr
4ff0: 6f 20 69 73 20 64 65 66 69 6e 65 64 2e 20 20 54  o is defined.  T
5000: 68 69 73 20 6d 61 63 72 6f 20 69 73 0a 2a 2a 20  his macro is.** 
5010: 6f 6e 6c 79 20 75 73 65 64 20 62 79 20 74 65 73  only used by tes
5020: 74 20 63 6f 64 65 20 61 6e 64 20 54 63 6c 20 69  t code and Tcl i
5030: 6e 74 65 67 72 61 74 69 6f 6e 20 63 6f 64 65 2e  ntegration code.
5040: 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c 49  .*/.#ifndef SQLI
5050: 54 45 5f 54 43 4c 41 50 49 0a 23 20 20 64 65 66  TE_TCLAPI.#  def
5060: 69 6e 65 20 53 51 4c 49 54 45 5f 54 43 4c 41 50  ine SQLITE_TCLAP
5070: 49 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20  I.#endif../*.** 
5080: 4d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 72  Make sure that r
5090: 61 6e 64 5f 73 28 29 20 69 73 20 61 76 61 69 6c  and_s() is avail
50a0: 61 62 6c 65 20 6f 6e 20 57 69 6e 64 6f 77 73 20  able on Windows 
50b0: 73 79 73 74 65 6d 73 20 77 69 74 68 20 4d 53 56  systems with MSV
50c0: 43 20 32 30 30 35 0a 2a 2a 20 6f 72 20 68 69 67  C 2005.** or hig
50d0: 68 65 72 2e 0a 2a 2f 0a 23 69 66 20 64 65 66 69  her..*/.#if defi
50e0: 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 26 26  ned(_MSC_VER) &&
50f0: 20 5f 4d 53 43 5f 56 45 52 3e 3d 31 34 30 30 0a   _MSC_VER>=1400.
5100: 23 20 20 64 65 66 69 6e 65 20 5f 43 52 54 5f 52  #  define _CRT_R
5110: 41 4e 44 5f 53 0a 23 65 6e 64 69 66 0a 0a 2f 2a  AND_S.#endif../*
5120: 0a 2a 2a 20 49 6e 63 6c 75 64 65 20 74 68 65 20  .** Include the 
5130: 68 65 61 64 65 72 20 66 69 6c 65 20 75 73 65 64  header file used
5140: 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20 74 68   to customize th
5150: 65 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f  e compiler optio
5160: 6e 73 20 66 6f 72 20 4d 53 56 43 2e 0a 2a 2a 20  ns for MSVC..** 
5170: 54 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64  This should be d
5180: 6f 6e 65 20 66 69 72 73 74 20 73 6f 20 74 68 61  one first so tha
5190: 74 20 69 74 20 63 61 6e 20 73 75 63 63 65 73 73  t it can success
51a0: 66 75 6c 6c 79 20 70 72 65 76 65 6e 74 20 73 70  fully prevent sp
51b0: 75 72 69 6f 75 73 0a 2a 2a 20 63 6f 6d 70 69 6c  urious.** compil
51c0: 65 72 20 77 61 72 6e 69 6e 67 73 20 64 75 65 20  er warnings due 
51d0: 74 6f 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f  to subsequent co
51e0: 6e 74 65 6e 74 20 69 6e 20 74 68 69 73 20 66 69  ntent in this fi
51f0: 6c 65 20 61 6e 64 20 6f 74 68 65 72 20 66 69 6c  le and other fil
5200: 65 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 69  es.** that are i
5210: 6e 63 6c 75 64 65 64 20 62 79 20 74 68 69 73 20  ncluded by this 
5220: 66 69 6c 65 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a  file..*/./******
5230: 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65  ******** Include
5240: 20 6d 73 76 63 2e 68 20 69 6e 20 74 68 65 20 6d   msvc.h in the m
5250: 69 64 64 6c 65 20 6f 66 20 73 71 6c 69 74 65 49  iddle of sqliteI
5260: 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  nt.h ***********
5270: 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a  *******/./******
5280: 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66  ******** Begin f
5290: 69 6c 65 20 6d 73 76 63 2e 68 20 2a 2a 2a 2a 2a  ile msvc.h *****
52a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
52b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
52c0: 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32  *******/./*.** 2
52d0: 30 31 35 20 4a 61 6e 75 61 72 79 20 31 32 0a 2a  015 January 12.*
52e0: 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 20  *.** The author 
52f0: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
5300: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
5310: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
5320: 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c  ce of.** a legal
5330: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
5340: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a   a blessing:.**.
5350: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  **    May you do
5360: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
5370: 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  il..**    May yo
5380: 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65  u find forgivene
5390: 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20  ss for yourself 
53a0: 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65  and forgive othe
53b0: 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  rs..**    May yo
53c0: 75 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20  u share freely, 
53d0: 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72  never taking mor
53e0: 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e  e than you give.
53f0: 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .**.************
5400: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5410: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5420: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5430: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5440: 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69  **.**.** This fi
5450: 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65  le contains code
5460: 20 74 68 61 74 20 69 73 20 73 70 65 63 69 66 69   that is specifi
5470: 63 20 74 6f 20 4d 53 56 43 2e 0a 2a 2f 0a 23 69  c to MSVC..*/.#i
5480: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 4d 53 56  fndef SQLITE_MSV
5490: 43 5f 48 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  C_H.#define SQLI
54a0: 54 45 5f 4d 53 56 43 5f 48 0a 0a 23 69 66 20 64  TE_MSVC_H..#if d
54b0: 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29  efined(_MSC_VER)
54c0: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
54d0: 28 64 69 73 61 62 6c 65 20 3a 20 34 30 35 34 29  (disable : 4054)
54e0: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
54f0: 28 64 69 73 61 62 6c 65 20 3a 20 34 30 35 35 29  (disable : 4055)
5500: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5510: 28 64 69 73 61 62 6c 65 20 3a 20 34 31 30 30 29  (disable : 4100)
5520: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5530: 28 64 69 73 61 62 6c 65 20 3a 20 34 31 32 37 29  (disable : 4127)
5540: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5550: 28 64 69 73 61 62 6c 65 20 3a 20 34 31 33 30 29  (disable : 4130)
5560: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5570: 28 64 69 73 61 62 6c 65 20 3a 20 34 31 35 32 29  (disable : 4152)
5580: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5590: 28 64 69 73 61 62 6c 65 20 3a 20 34 31 38 39 29  (disable : 4189)
55a0: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
55b0: 28 64 69 73 61 62 6c 65 20 3a 20 34 32 30 36 29  (disable : 4206)
55c0: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
55d0: 28 64 69 73 61 62 6c 65 20 3a 20 34 32 31 30 29  (disable : 4210)
55e0: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
55f0: 28 64 69 73 61 62 6c 65 20 3a 20 34 32 33 32 29  (disable : 4232)
5600: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5610: 28 64 69 73 61 62 6c 65 20 3a 20 34 32 34 34 29  (disable : 4244)
5620: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5630: 28 64 69 73 61 62 6c 65 20 3a 20 34 33 30 35 29  (disable : 4305)
5640: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5650: 28 64 69 73 61 62 6c 65 20 3a 20 34 33 30 36 29  (disable : 4306)
5660: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5670: 28 64 69 73 61 62 6c 65 20 3a 20 34 37 30 32 29  (disable : 4702)
5680: 0a 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67  .#pragma warning
5690: 28 64 69 73 61 62 6c 65 20 3a 20 34 37 30 36 29  (disable : 4706)
56a0: 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e  .#endif /* defin
56b0: 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 2a 2f 0a  ed(_MSC_VER) */.
56c0: 0a 23 65 6e 64 69 66 20 2f 2a 20 53 51 4c 49 54  .#endif /* SQLIT
56d0: 45 5f 4d 53 56 43 5f 48 20 2a 2f 0a 0a 2f 2a 2a  E_MSVC_H */../**
56e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64  ************ End
56f0: 20 6f 66 20 6d 73 76 63 2e 68 20 2a 2a 2a 2a 2a   of msvc.h *****
5700: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5710: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5720: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a  ***********/./**
5730: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f 6e  ************ Con
5740: 74 69 6e 75 69 6e 67 20 77 68 65 72 65 20 77 65  tinuing where we
5750: 20 6c 65 66 74 20 6f 66 66 20 69 6e 20 73 71 6c   left off in sql
5760: 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a  iteInt.h *******
5770: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a  ***********/../*
5780: 0a 2a 2a 20 53 70 65 63 69 61 6c 20 73 65 74 75  .** Special setu
5790: 70 20 66 6f 72 20 56 78 57 6f 72 6b 73 0a 2a 2f  p for VxWorks.*/
57a0: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
57b0: 20 49 6e 63 6c 75 64 65 20 76 78 77 6f 72 6b 73   Include vxworks
57c0: 2e 68 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65  .h in the middle
57d0: 20 6f 66 20 73 71 6c 69 74 65 49 6e 74 2e 68 20   of sqliteInt.h 
57e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
57f0: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ./**************
5800: 20 42 65 67 69 6e 20 66 69 6c 65 20 76 78 77 6f   Begin file vxwo
5810: 72 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  rks.h **********
5820: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f  ***************/
5840: 0a 2f 2a 0a 2a 2a 20 32 30 31 35 2d 30 33 2d 30  ./*.** 2015-03-0
5850: 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  2.**.** The auth
5860: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
5870: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
5880: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
5890: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
58a0: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
58b0: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
58c0: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
58d0: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
58e0: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
58f0: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
5900: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
5910: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
5920: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
5930: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
5940: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
5950: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
5960: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
5970: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5980: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5990: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59b0: 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73  *****.**.** This
59c0: 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63   file contains c
59d0: 6f 64 65 20 74 68 61 74 20 69 73 20 73 70 65 63  ode that is spec
59e0: 69 66 69 63 20 74 6f 20 57 69 6e 64 20 52 69 76  ific to Wind Riv
59f0: 65 72 27 73 20 56 78 57 6f 72 6b 73 0a 2a 2f 0a  er's VxWorks.*/.
5a00: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 52 54  #if defined(__RT
5a10: 50 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  P__) || defined(
5a20: 5f 57 52 53 5f 4b 45 52 4e 45 4c 29 0a 2f 2a 20  _WRS_KERNEL)./* 
5a30: 54 68 69 73 20 69 73 20 56 78 57 6f 72 6b 73 2e  This is VxWorks.
5a40: 20 20 53 65 74 20 75 70 20 74 68 69 6e 67 73 20    Set up things 
5a50: 73 70 65 63 69 61 6c 6c 79 20 66 6f 72 20 74 68  specially for th
5a60: 61 74 20 4f 53 0a 2a 2f 0a 23 69 6e 63 6c 75 64  at OS.*/.#includ
5a70: 65 20 3c 76 78 57 6f 72 6b 73 2e 68 3e 0a 23 69  e <vxWorks.h>.#i
5a80: 6e 63 6c 75 64 65 20 3c 70 74 68 72 65 61 64 2e  nclude <pthread.
5a90: 68 3e 20 20 2f 2a 20 61 6d 61 6c 67 61 6d 61 74  h>  /* amalgamat
5aa0: 6f 72 3a 20 64 6f 6e 74 63 61 63 68 65 20 2a 2f  or: dontcache */
5ab0: 0a 23 64 65 66 69 6e 65 20 4f 53 5f 56 58 57 4f  .#define OS_VXWO
5ac0: 52 4b 53 20 31 0a 23 64 65 66 69 6e 65 20 53 51  RKS 1.#define SQ
5ad0: 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 20 30 0a  LITE_OS_OTHER 0.
5ae0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 48  #define SQLITE_H
5af0: 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49  OMEGROWN_RECURSI
5b00: 56 45 5f 4d 55 54 45 58 20 31 0a 23 64 65 66 69  VE_MUTEX 1.#defi
5b10: 6e 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  ne SQLITE_OMIT_L
5b20: 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20 31 0a  OAD_EXTENSION 1.
5b30: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45  #define SQLITE_E
5b40: 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54  NABLE_LOCKING_ST
5b50: 59 4c 45 20 30 0a 23 64 65 66 69 6e 65 20 48 41  YLE 0.#define HA
5b60: 56 45 5f 55 54 49 4d 45 20 31 0a 23 65 6c 73 65  VE_UTIME 1.#else
5b70: 0a 2f 2a 20 54 68 69 73 20 69 73 20 6e 6f 74 20  ./* This is not 
5b80: 56 78 57 6f 72 6b 73 2e 20 2a 2f 0a 23 64 65 66  VxWorks. */.#def
5b90: 69 6e 65 20 4f 53 5f 56 58 57 4f 52 4b 53 20 30  ine OS_VXWORKS 0
5ba0: 0a 23 64 65 66 69 6e 65 20 48 41 56 45 5f 46 43  .#define HAVE_FC
5bb0: 48 4f 57 4e 20 31 0a 23 64 65 66 69 6e 65 20 48  HOWN 1.#define H
5bc0: 41 56 45 5f 52 45 41 44 4c 49 4e 4b 20 31 0a 23  AVE_READLINK 1.#
5bd0: 64 65 66 69 6e 65 20 48 41 56 45 5f 4c 53 54 41  define HAVE_LSTA
5be0: 54 20 31 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65  T 1.#endif /* de
5bf0: 66 69 6e 65 64 28 5f 57 52 53 5f 4b 45 52 4e 45  fined(_WRS_KERNE
5c00: 4c 29 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a  L) */../********
5c10: 2a 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66 20 76 78  ****** End of vx
5c20: 77 6f 72 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  works.h ********
5c30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5c50: 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a  *****/./********
5c60: 2a 2a 2a 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e  ****** Continuin
5c70: 67 20 77 68 65 72 65 20 77 65 20 6c 65 66 74 20  g where we left 
5c80: 6f 66 66 20 69 6e 20 73 71 6c 69 74 65 49 6e 74  off in sqliteInt
5c90: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
5ca0: 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68  *****/../*.** Th
5cb0: 65 73 65 20 23 64 65 66 69 6e 65 73 20 73 68 6f  ese #defines sho
5cc0: 75 6c 64 20 65 6e 61 62 6c 65 20 3e 32 47 42 20  uld enable >2GB 
5cd0: 66 69 6c 65 20 73 75 70 70 6f 72 74 20 6f 6e 20  file support on 
5ce0: 50 4f 53 49 58 20 69 66 20 74 68 65 0a 2a 2a 20  POSIX if the.** 
5cf0: 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
5d00: 74 69 6e 67 20 73 79 73 74 65 6d 20 73 75 70 70  ting system supp
5d10: 6f 72 74 73 20 69 74 2e 20 20 49 66 20 74 68 65  orts it.  If the
5d20: 20 4f 53 20 6c 61 63 6b 73 0a 2a 2a 20 6c 61 72   OS lacks.** lar
5d30: 67 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74 2c  ge file support,
5d40: 20 6f 72 20 69 66 20 74 68 65 20 4f 53 20 69 73   or if the OS is
5d50: 20 77 69 6e 64 6f 77 73 2c 20 74 68 65 73 65 20   windows, these 
5d60: 73 68 6f 75 6c 64 20 62 65 20 6e 6f 2d 6f 70 73  should be no-ops
5d70: 2e 0a 2a 2a 0a 2a 2a 20 54 69 63 6b 65 74 20 23  ..**.** Ticket #
5d80: 32 37 33 39 3a 20 20 54 68 65 20 5f 4c 41 52 47  2739:  The _LARG
5d90: 45 46 49 4c 45 5f 53 4f 55 52 43 45 20 6d 61 63  EFILE_SOURCE mac
5da0: 72 6f 20 6d 75 73 74 20 61 70 70 65 61 72 20 62  ro must appear b
5db0: 65 66 6f 72 65 20 61 6e 79 0a 2a 2a 20 73 79 73  efore any.** sys
5dc0: 74 65 6d 20 23 69 6e 63 6c 75 64 65 73 2e 20 20  tem #includes.  
5dd0: 48 65 6e 63 65 2c 20 74 68 69 73 20 62 6c 6f 63  Hence, this bloc
5de0: 6b 20 6f 66 20 63 6f 64 65 20 6d 75 73 74 20 62  k of code must b
5df0: 65 20 74 68 65 20 76 65 72 79 20 66 69 72 73 74  e the very first
5e00: 0a 2a 2a 20 63 6f 64 65 20 69 6e 20 61 6c 6c 20  .** code in all 
5e10: 73 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 2a 2a  source files..**
5e20: 0a 2a 2a 20 4c 61 72 67 65 20 66 69 6c 65 20 73  .** Large file s
5e30: 75 70 70 6f 72 74 20 63 61 6e 20 62 65 20 64 69  upport can be di
5e40: 73 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65  sabled using the
5e50: 20 2d 44 53 51 4c 49 54 45 5f 44 49 53 41 42 4c   -DSQLITE_DISABL
5e60: 45 5f 4c 46 53 20 73 77 69 74 63 68 0a 2a 2a 20  E_LFS switch.** 
5e70: 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20  on the compiler 
5e80: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 54  command line.  T
5e90: 68 69 73 20 69 73 20 6e 65 63 65 73 73 61 72 79  his is necessary
5ea0: 20 69 66 20 79 6f 75 20 61 72 65 20 63 6f 6d 70   if you are comp
5eb0: 69 6c 69 6e 67 0a 2a 2a 20 6f 6e 20 61 20 72 65  iling.** on a re
5ec0: 63 65 6e 74 20 6d 61 63 68 69 6e 65 20 28 65 78  cent machine (ex
5ed0: 3a 20 52 65 64 20 48 61 74 20 37 2e 32 29 20 62  : Red Hat 7.2) b
5ee0: 75 74 20 79 6f 75 20 77 61 6e 74 20 79 6f 75 72  ut you want your
5ef0: 20 63 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a   code to work.**
5f00: 20 6f 6e 20 61 6e 20 6f 6c 64 65 72 20 6d 61 63   on an older mac
5f10: 68 69 6e 65 20 28 65 78 3a 20 52 65 64 20 48 61  hine (ex: Red Ha
5f20: 74 20 36 2e 30 29 2e 20 20 49 66 20 79 6f 75 20  t 6.0).  If you 
5f30: 63 6f 6d 70 69 6c 65 20 6f 6e 20 52 65 64 20 48  compile on Red H
5f40: 61 74 20 37 2e 32 0a 2a 2a 20 77 69 74 68 6f 75  at 7.2.** withou
5f50: 74 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 4c  t this option, L
5f60: 46 53 20 69 73 20 65 6e 61 62 6c 65 2e 20 20 42  FS is enable.  B
5f70: 75 74 20 4c 46 53 20 64 6f 65 73 20 6e 6f 74 20  ut LFS does not 
5f80: 65 78 69 73 74 20 69 6e 20 74 68 65 20 6b 65 72  exist in the ker
5f90: 6e 65 6c 0a 2a 2a 20 69 6e 20 52 65 64 20 48 61  nel.** in Red Ha
5fa0: 74 20 36 2e 30 2c 20 73 6f 20 74 68 65 20 63 6f  t 6.0, so the co
5fb0: 64 65 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20 20  de won't work.  
5fc0: 48 65 6e 63 65 2c 20 66 6f 72 20 6d 61 78 69 6d  Hence, for maxim
5fd0: 75 6d 20 62 69 6e 61 72 79 0a 2a 2a 20 70 6f 72  um binary.** por
5fe0: 74 61 62 69 6c 69 74 79 20 79 6f 75 20 73 68 6f  tability you sho
5ff0: 75 6c 64 20 6f 6d 69 74 20 4c 46 53 2e 0a 2a 2a  uld omit LFS..**
6000: 0a 2a 2a 20 54 68 65 20 70 72 65 76 69 6f 75 73  .** The previous
6010: 20 70 61 72 61 67 72 61 70 68 20 77 61 73 20 77   paragraph was w
6020: 72 69 74 74 65 6e 20 69 6e 20 32 30 30 35 2e 20  ritten in 2005. 
6030: 20 28 54 68 69 73 20 70 61 72 61 67 72 61 70 68   (This paragraph
6040: 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 6f   is written.** o
6050: 6e 20 32 30 30 38 2d 31 31 2d 32 38 2e 29 20 54  n 2008-11-28.) T
6060: 68 65 73 65 20 64 61 79 73 2c 20 61 6c 6c 20 4c  hese days, all L
6070: 69 6e 75 78 20 6b 65 72 6e 65 6c 73 20 73 75 70  inux kernels sup
6080: 70 6f 72 74 20 6c 61 72 67 65 20 66 69 6c 65 73  port large files
6090: 2c 20 73 6f 0a 2a 2a 20 79 6f 75 20 73 68 6f 75  , so.** you shou
60a0: 6c 64 20 70 72 6f 62 61 62 6c 79 20 6c 65 61 76  ld probably leav
60b0: 65 20 4c 46 53 20 65 6e 61 62 6c 65 64 2e 20 20  e LFS enabled.  
60c0: 42 75 74 20 73 6f 6d 65 20 65 6d 62 65 64 64 65  But some embedde
60d0: 64 20 70 6c 61 74 66 6f 72 6d 73 20 6d 69 67 68  d platforms migh
60e0: 74 0a 2a 2a 20 6c 61 63 6b 20 4c 46 53 20 69 6e  t.** lack LFS in
60f0: 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20   which case the 
6100: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c  SQLITE_DISABLE_L
6110: 46 53 20 6d 61 63 72 6f 20 6d 69 67 68 74 20 73  FS macro might s
6120: 74 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2e 0a  till be useful..
6130: 2a 2a 0a 2a 2a 20 53 69 6d 69 6c 61 72 20 69 73  **.** Similar is
6140: 20 74 72 75 65 20 66 6f 72 20 4d 61 63 20 4f 53   true for Mac OS
6150: 20 58 2e 20 20 4c 46 53 20 69 73 20 6f 6e 6c 79   X.  LFS is only
6160: 20 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 4d 61   supported on Ma
6170: 63 20 4f 53 20 58 20 39 20 61 6e 64 20 6c 61 74  c OS X 9 and lat
6180: 65 72 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53  er..*/.#ifndef S
6190: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46  QLITE_DISABLE_LF
61a0: 53 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47  S.# define _LARG
61b0: 45 5f 46 49 4c 45 20 20 20 20 20 20 20 31 0a 23  E_FILE       1.#
61c0: 20 69 66 6e 64 65 66 20 5f 46 49 4c 45 5f 4f 46   ifndef _FILE_OF
61d0: 46 53 45 54 5f 42 49 54 53 0a 23 20 20 20 64 65  FSET_BITS.#   de
61e0: 66 69 6e 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45  fine _FILE_OFFSE
61f0: 54 5f 42 49 54 53 20 36 34 0a 23 20 65 6e 64 69  T_BITS 64.# endi
6200: 66 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47  f.# define _LARG
6210: 45 46 49 4c 45 5f 53 4f 55 52 43 45 20 31 0a 23  EFILE_SOURCE 1.#
6220: 65 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20 47 43  endif../* The GC
6230: 43 5f 56 45 52 53 49 4f 4e 20 61 6e 64 20 4d 53  C_VERSION and MS
6240: 56 43 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f  VC_VERSION macro
6250: 73 20 61 72 65 20 75 73 65 64 20 74 6f 0a 2a 2a  s are used to.**
6260: 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 69   conditionally i
6270: 6e 63 6c 75 64 65 20 6f 70 74 69 6d 69 7a 61 74  nclude optimizat
6280: 69 6f 6e 73 20 66 6f 72 20 65 61 63 68 20 6f 66  ions for each of
6290: 20 74 68 65 73 65 20 63 6f 6d 70 69 6c 65 72 73   these compilers
62a0: 2e 20 20 41 0a 2a 2a 20 76 61 6c 75 65 20 6f 66  .  A.** value of
62b0: 20 30 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f   0 means that co
62c0: 6d 70 69 6c 65 72 20 69 73 20 6e 6f 74 20 62 65  mpiler is not be
62d0: 69 6e 67 20 75 73 65 64 2e 20 20 54 68 65 0a 2a  ing used.  The.*
62e0: 2a 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  * SQLITE_DISABLE
62f0: 5f 49 4e 54 52 49 4e 53 49 43 20 6d 61 63 72 6f  _INTRINSIC macro
6300: 20 6d 65 61 6e 73 20 64 6f 20 6e 6f 74 20 75 73   means do not us
6310: 65 20 61 6e 79 20 63 6f 6d 70 69 6c 65 72 2d 73  e any compiler-s
6320: 70 65 63 69 66 69 63 0a 2a 2a 20 6f 70 74 69 6d  pecific.** optim
6330: 69 7a 61 74 69 6f 6e 73 2c 20 61 6e 64 20 68 65  izations, and he
6340: 6e 63 65 20 73 65 74 20 61 6c 6c 20 63 6f 6d 70  nce set all comp
6350: 69 6c 65 72 20 6d 61 63 72 6f 73 20 74 6f 20 30  iler macros to 0
6360: 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 77 61 73  .**.** There was
6370: 20 6f 6e 63 65 20 61 6c 73 6f 20 61 20 43 4c 41   once also a CLA
6380: 4e 47 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f  NG_VERSION macro
6390: 2e 20 20 48 6f 77 65 76 65 72 2c 20 77 65 20 6c  .  However, we l
63a0: 65 61 72 6e 20 74 68 61 74 20 74 68 65 0a 2a 2a  earn that the.**
63b0: 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73   version numbers
63c0: 20 69 6e 20 63 6c 61 6e 67 20 61 72 65 20 66 6f   in clang are fo
63d0: 72 20 22 6d 61 72 6b 65 74 69 6e 67 22 20 6f 6e  r "marketing" on
63e0: 6c 79 20 61 6e 64 20 61 72 65 20 69 6e 63 6f 6e  ly and are incon
63f0: 73 69 73 74 65 6e 74 0a 2a 2a 20 61 6e 64 20 75  sistent.** and u
6400: 6e 72 65 6c 69 61 62 6c 65 2e 20 20 46 6f 72 74  nreliable.  Fort
6410: 75 6e 61 74 65 6c 79 2c 20 61 6c 6c 20 76 65 72  unately, all ver
6420: 73 69 6f 6e 73 20 6f 66 20 63 6c 61 6e 67 20 61  sions of clang a
6430: 6c 73 6f 20 72 65 63 6f 67 6e 69 7a 65 20 74 68  lso recognize th
6440: 65 0a 2a 2a 20 67 63 63 20 76 65 72 73 69 6f 6e  e.** gcc version
6450: 20 6e 75 6d 62 65 72 73 20 61 6e 64 20 68 61 76   numbers and hav
6460: 65 20 72 65 61 73 6f 6e 61 62 6c 65 20 73 65 74  e reasonable set
6470: 74 69 6e 67 73 20 66 6f 72 20 67 63 63 20 76 65  tings for gcc ve
6480: 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 2c 0a 2a  rsion numbers,.*
6490: 2a 20 73 6f 20 74 68 65 20 47 43 43 5f 56 45 52  * so the GCC_VER
64a0: 53 49 4f 4e 20 6d 61 63 72 6f 20 77 69 6c 6c 20  SION macro will 
64b0: 62 65 20 73 65 74 20 74 6f 20 61 20 63 6f 72 72  be set to a corr
64c0: 65 63 74 20 6e 6f 6e 2d 7a 65 72 6f 20 76 61 6c  ect non-zero val
64d0: 75 65 20 65 76 65 6e 0a 2a 2a 20 77 68 65 6e 20  ue even.** when 
64e0: 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 63  compiling with c
64f0: 6c 61 6e 67 2e 0a 2a 2f 0a 23 69 66 20 64 65 66  lang..*/.#if def
6500: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26  ined(__GNUC__) &
6510: 26 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54  & !defined(SQLIT
6520: 45 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e  E_DISABLE_INTRIN
6530: 53 49 43 29 0a 23 20 64 65 66 69 6e 65 20 47 43  SIC).# define GC
6540: 43 5f 56 45 52 53 49 4f 4e 20 28 5f 5f 47 4e 55  C_VERSION (__GNU
6550: 43 5f 5f 2a 31 30 30 30 30 30 30 2b 5f 5f 47 4e  C__*1000000+__GN
6560: 55 43 5f 4d 49 4e 4f 52 5f 5f 2a 31 30 30 30 2b  UC_MINOR__*1000+
6570: 5f 5f 47 4e 55 43 5f 50 41 54 43 48 4c 45 56 45  __GNUC_PATCHLEVE
6580: 4c 5f 5f 29 0a 23 65 6c 73 65 0a 23 20 64 65 66  L__).#else.# def
6590: 69 6e 65 20 47 43 43 5f 56 45 52 53 49 4f 4e 20  ine GCC_VERSION 
65a0: 30 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66  0.#endif.#if def
65b0: 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 26  ined(_MSC_VER) &
65c0: 26 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54  & !defined(SQLIT
65d0: 45 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e  E_DISABLE_INTRIN
65e0: 53 49 43 29 0a 23 20 64 65 66 69 6e 65 20 4d 53  SIC).# define MS
65f0: 56 43 5f 56 45 52 53 49 4f 4e 20 5f 4d 53 43 5f  VC_VERSION _MSC_
6600: 56 45 52 0a 23 65 6c 73 65 0a 23 20 64 65 66 69  VER.#else.# defi
6610: 6e 65 20 4d 53 56 43 5f 56 45 52 53 49 4f 4e 20  ne MSVC_VERSION 
6620: 30 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 4e 65 65  0.#endif../* Nee
6630: 64 65 64 20 66 6f 72 20 76 61 72 69 6f 75 73 20  ded for various 
6640: 64 65 66 69 6e 69 74 69 6f 6e 73 2e 2e 2e 20 2a  definitions... *
6650: 2f 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f  /.#if defined(__
6660: 47 4e 55 43 5f 5f 29 20 26 26 20 21 64 65 66 69  GNUC__) && !defi
6670: 6e 65 64 28 5f 47 4e 55 5f 53 4f 55 52 43 45 29  ned(_GNU_SOURCE)
6680: 0a 23 20 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53  .# define _GNU_S
6690: 4f 55 52 43 45 0a 23 65 6e 64 69 66 0a 0a 23 69  OURCE.#endif..#i
66a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 4f 70 65 6e  f defined(__Open
66b0: 42 53 44 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  BSD__) && !defin
66c0: 65 64 28 5f 42 53 44 5f 53 4f 55 52 43 45 29 0a  ed(_BSD_SOURCE).
66d0: 23 20 64 65 66 69 6e 65 20 5f 42 53 44 5f 53 4f  # define _BSD_SO
66e0: 55 52 43 45 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  URCE.#endif../*.
66f0: 2a 2a 20 46 6f 72 20 4d 69 6e 47 57 2c 20 63 68  ** For MinGW, ch
6700: 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 77 65  eck to see if we
6710: 20 63 61 6e 20 69 6e 63 6c 75 64 65 20 74 68 65   can include the
6720: 20 68 65 61 64 65 72 20 66 69 6c 65 20 63 6f 6e   header file con
6730: 74 61 69 6e 69 6e 67 20 69 74 73 0a 2a 2a 20 76  taining its.** v
6740: 65 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69  ersion informati
6750: 6f 6e 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 20  on, among other 
6760: 74 68 69 6e 67 73 2e 20 20 4e 6f 72 6d 61 6c 6c  things.  Normall
6770: 79 2c 20 74 68 69 73 20 69 6e 74 65 72 6e 61 6c  y, this internal
6780: 20 4d 69 6e 47 57 0a 2a 2a 20 68 65 61 64 65 72   MinGW.** header
6790: 20 66 69 6c 65 20 77 6f 75 6c 64 20 5b 6f 6e 6c   file would [onl
67a0: 79 5d 20 62 65 20 69 6e 63 6c 75 64 65 64 20 61  y] be included a
67b0: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
67c0: 6f 74 68 65 72 20 4d 69 6e 47 57 20 68 65 61 64  other MinGW head
67d0: 65 72 0a 2a 2a 20 66 69 6c 65 73 3b 20 68 6f 77  er.** files; how
67e0: 65 76 65 72 2c 20 74 68 65 20 63 6f 6e 74 61 69  ever, the contai
67f0: 6e 65 64 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f  ned version info
6800: 72 6d 61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 72  rmation is now r
6810: 65 71 75 69 72 65 64 20 62 79 20 74 68 69 73 0a  equired by this.
6820: 2a 2a 20 68 65 61 64 65 72 20 66 69 6c 65 20 74  ** header file t
6830: 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 62 69  o work around bi
6840: 6e 61 72 79 20 63 6f 6d 70 61 74 69 62 69 6c 69  nary compatibili
6850: 74 79 20 69 73 73 75 65 73 20 28 73 65 65 20 62  ty issues (see b
6860: 65 6c 6f 77 29 20 61 6e 64 0a 2a 2a 20 74 68 69  elow) and.** thi
6870: 73 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6b 6e  s is the only kn
6880: 6f 77 6e 20 77 61 79 20 74 6f 20 72 65 6c 69 61  own way to relia
6890: 62 6c 79 20 6f 62 74 61 69 6e 20 69 74 2e 20 20  bly obtain it.  
68a0: 54 68 69 73 20 65 6e 74 69 72 65 20 23 69 66 20  This entire #if 
68b0: 62 6c 6f 63 6b 0a 2a 2a 20 77 6f 75 6c 64 20 62  block.** would b
68c0: 65 20 63 6f 6d 70 6c 65 74 65 6c 79 20 75 6e 6e  e completely unn
68d0: 65 63 65 73 73 61 72 79 20 69 66 20 74 68 65 72  ecessary if ther
68e0: 65 20 77 61 73 20 61 6e 79 20 6f 74 68 65 72 20  e was any other 
68f0: 77 61 79 20 6f 66 20 64 65 74 65 63 74 69 6e 67  way of detecting
6900: 0a 2a 2a 20 4d 69 6e 47 57 20 76 69 61 20 74 68  .** MinGW via th
6910: 65 69 72 20 70 72 65 70 72 6f 63 65 73 73 6f 72  eir preprocessor
6920: 20 28 65 2e 67 2e 20 69 66 20 74 68 65 79 20 63   (e.g. if they c
6930: 75 73 74 6f 6d 69 7a 65 64 20 74 68 65 69 72 20  ustomized their 
6940: 47 43 43 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a  GCC to define.**
6950: 20 73 6f 6d 65 20 4d 69 6e 47 57 2d 73 70 65 63   some MinGW-spec
6960: 69 66 69 63 20 6d 61 63 72 6f 73 29 2e 20 20 57  ific macros).  W
6970: 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f  hen compiling fo
6980: 72 20 4d 69 6e 47 57 2c 20 65 69 74 68 65 72 20  r MinGW, either 
6990: 74 68 65 0a 2a 2a 20 5f 48 41 56 45 5f 4d 49 4e  the.** _HAVE_MIN
69a0: 47 57 5f 48 20 6f 72 20 5f 48 41 56 45 5f 5f 4d  GW_H or _HAVE__M
69b0: 49 4e 47 57 5f 48 20 28 6e 6f 74 65 20 74 68 65  INGW_H (note the
69c0: 20 65 78 74 72 61 20 75 6e 64 65 72 73 63 6f 72   extra underscor
69d0: 65 29 20 6d 61 63 72 6f 20 6d 75 73 74 20 62 65  e) macro must be
69e0: 0a 2a 2a 20 64 65 66 69 6e 65 64 3b 20 6f 74 68  .** defined; oth
69f0: 65 72 77 69 73 65 2c 20 64 65 74 65 63 74 69 6f  erwise, detectio
6a00: 6e 20 6f 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20  n of conditions 
6a10: 73 70 65 63 69 66 69 63 20 74 6f 20 4d 69 6e 47  specific to MinG
6a20: 57 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 64 69 73  W will be.** dis
6a30: 61 62 6c 65 64 2e 0a 2a 2f 0a 23 69 66 20 64 65  abled..*/.#if de
6a40: 66 69 6e 65 64 28 5f 48 41 56 45 5f 4d 49 4e 47  fined(_HAVE_MING
6a50: 57 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65 20 22  W_H).# include "
6a60: 6d 69 6e 67 77 2e 68 22 0a 23 65 6c 69 66 20 64  mingw.h".#elif d
6a70: 65 66 69 6e 65 64 28 5f 48 41 56 45 5f 5f 4d 49  efined(_HAVE__MI
6a80: 4e 47 57 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65  NGW_H).# include
6a90: 20 22 5f 6d 69 6e 67 77 2e 68 22 0a 23 65 6e 64   "_mingw.h".#end
6aa0: 69 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69  if../*.** For Mi
6ab0: 6e 47 57 20 76 65 72 73 69 6f 6e 20 34 2e 78 20  nGW version 4.x 
6ac0: 28 61 6e 64 20 68 69 67 68 65 72 29 2c 20 63 68  (and higher), ch
6ad0: 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68  eck to see if th
6ae0: 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54 49 4d  e _USE_32BIT_TIM
6af0: 45 5f 54 0a 2a 2a 20 64 65 66 69 6e 65 20 69 73  E_T.** define is
6b00: 20 72 65 71 75 69 72 65 64 20 74 6f 20 6d 61 69   required to mai
6b10: 6e 74 61 69 6e 20 62 69 6e 61 72 79 20 63 6f 6d  ntain binary com
6b20: 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20  patibility with 
6b30: 74 68 65 20 4d 53 56 43 20 72 75 6e 74 69 6d 65  the MSVC runtime
6b40: 0a 2a 2a 20 6c 69 62 72 61 72 79 20 69 6e 20 75  .** library in u
6b50: 73 65 20 28 65 2e 67 2e 20 66 6f 72 20 57 69 6e  se (e.g. for Win
6b60: 64 6f 77 73 20 58 50 29 2e 0a 2a 2f 0a 23 69 66  dows XP)..*/.#if
6b70: 20 21 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 33   !defined(_USE_3
6b80: 32 42 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20  2BIT_TIME_T) && 
6b90: 21 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 36 34  !defined(_USE_64
6ba0: 42 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20 5c  BIT_TIME_T) && \
6bb0: 0a 20 20 20 20 64 65 66 69 6e 65 64 28 5f 57 49  .    defined(_WI
6bc0: 4e 33 32 29 20 26 26 20 21 64 65 66 69 6e 65 64  N32) && !defined
6bd0: 28 5f 57 49 4e 36 34 29 20 26 26 20 5c 0a 20 20  (_WIN64) && \.  
6be0: 20 20 64 65 66 69 6e 65 64 28 5f 5f 4d 49 4e 47    defined(__MING
6bf0: 57 5f 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 29  W_MAJOR_VERSION)
6c00: 20 26 26 20 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f   && __MINGW_MAJO
6c10: 52 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 34 20 26  R_VERSION >= 4 &
6c20: 26 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64 28  & \.    defined(
6c30: 5f 5f 4d 53 56 43 52 54 5f 5f 29 0a 23 20 64 65  __MSVCRT__).# de
6c40: 66 69 6e 65 20 5f 55 53 45 5f 33 32 42 49 54 5f  fine _USE_32BIT_
6c50: 54 49 4d 45 5f 54 0a 23 65 6e 64 69 66 0a 0a 2f  TIME_T.#endif../
6c60: 2a 20 54 68 65 20 70 75 62 6c 69 63 20 53 51 4c  * The public SQL
6c70: 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ite interface.  
6c80: 54 68 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54  The _FILE_OFFSET
6c90: 5f 42 49 54 53 20 6d 61 63 72 6f 20 6d 75 73 74  _BITS macro must
6ca0: 20 61 70 70 65 61 72 0a 2a 2a 20 66 69 72 73 74   appear.** first
6cb0: 20 69 6e 20 51 4e 58 2e 20 20 41 6c 73 6f 2c 20   in QNX.  Also, 
6cc0: 74 68 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54  the _USE_32BIT_T
6cd0: 49 4d 45 5f 54 20 6d 61 63 72 6f 20 6d 75 73 74  IME_T macro must
6ce0: 20 61 70 70 65 61 72 20 66 69 72 73 74 20 66 6f   appear first fo
6cf0: 72 0a 2a 2a 20 4d 69 6e 47 57 2e 0a 2a 2f 0a 2f  r.** MinGW..*/./
6d00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49  ************** I
6d10: 6e 63 6c 75 64 65 20 73 71 6c 69 74 65 33 2e 68  nclude sqlite3.h
6d20: 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f   in the middle o
6d30: 66 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a  f sqliteInt.h **
6d40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
6d50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42  ************** B
6d60: 65 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65  egin file sqlite
6d70: 33 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  3.h ************
6d80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6d90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f  *************/./
6da0: 2a 0a 2a 2a 20 32 30 30 31 2d 30 39 2d 31 35 0a  *.** 2001-09-15.
6db0: 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72  **.** The author
6dc0: 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72   disclaims copyr
6dd0: 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75  ight to this sou
6de0: 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c  rce code.  In pl
6df0: 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61  ace of.** a lega
6e00: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
6e10: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a  s a blessing:.**
6e20: 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64  .**    May you d
6e30: 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65  o good and not e
6e40: 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79  vil..**    May y
6e50: 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e  ou find forgiven
6e60: 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66  ess for yourself
6e70: 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68   and forgive oth
6e80: 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79  ers..**    May y
6e90: 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c  ou share freely,
6ea0: 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f   never taking mo
6eb0: 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65  re than you give
6ec0: 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..**.***********
6ed0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6ee0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6ef0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6f00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a  **************.*
6f10: 2a 20 54 68 69 73 20 68 65 61 64 65 72 20 66 69  * This header fi
6f20: 6c 65 20 64 65 66 69 6e 65 73 20 74 68 65 20 69  le defines the i
6f30: 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 74 68  nterface that th
6f40: 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
6f50: 0a 2a 2a 20 70 72 65 73 65 6e 74 73 20 74 6f 20  .** presents to 
6f60: 63 6c 69 65 6e 74 20 70 72 6f 67 72 61 6d 73 2e  client programs.
6f70: 20 20 49 66 20 61 20 43 2d 66 75 6e 63 74 69 6f    If a C-functio
6f80: 6e 2c 20 73 74 72 75 63 74 75 72 65 2c 20 64 61  n, structure, da
6f90: 74 61 74 79 70 65 2c 0a 2a 2a 20 6f 72 20 63 6f  tatype,.** or co
6fa0: 6e 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f  nstant definitio
6fb0: 6e 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61  n does not appea
6fc0: 72 20 69 6e 20 74 68 69 73 20 66 69 6c 65 2c 20  r in this file, 
6fd0: 74 68 65 6e 20 69 74 20 69 73 0a 2a 2a 20 6e 6f  then it is.** no
6fe0: 74 20 61 20 70 75 62 6c 69 73 68 65 64 20 41 50  t a published AP
6ff0: 49 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 73 20  I of SQLite, is 
7000: 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67  subject to chang
7010: 65 20 77 69 74 68 6f 75 74 0a 2a 2a 20 6e 6f 74  e without.** not
7020: 69 63 65 2c 20 61 6e 64 20 73 68 6f 75 6c 64 20  ice, and should 
7030: 6e 6f 74 20 62 65 20 72 65 66 65 72 65 6e 63 65  not be reference
7040: 64 20 62 79 20 70 72 6f 67 72 61 6d 73 20 74 68  d by programs th
7050: 61 74 20 75 73 65 20 53 51 4c 69 74 65 2e 0a 2a  at use SQLite..*
7060: 2a 0a 2a 2a 20 53 6f 6d 65 20 6f 66 20 74 68 65  *.** Some of the
7070: 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 74 68 61   definitions tha
7080: 74 20 61 72 65 20 69 6e 20 74 68 69 73 20 66 69  t are in this fi
7090: 6c 65 20 61 72 65 20 6d 61 72 6b 65 64 20 61 73  le are marked as
70a0: 0a 2a 2a 20 22 65 78 70 65 72 69 6d 65 6e 74 61  .** "experimenta
70b0: 6c 22 2e 20 20 45 78 70 65 72 69 6d 65 6e 74 61  l".  Experimenta
70c0: 6c 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  l interfaces are
70d0: 20 6e 6f 72 6d 61 6c 6c 79 20 6e 65 77 0a 2a 2a   normally new.**
70e0: 20 66 65 61 74 75 72 65 73 20 72 65 63 65 6e 74   features recent
70f0: 6c 79 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69  ly added to SQLi
7100: 74 65 2e 20 20 57 65 20 64 6f 20 6e 6f 74 20 61  te.  We do not a
7110: 6e 74 69 63 69 70 61 74 65 20 63 68 61 6e 67 65  nticipate change
7120: 73 0a 2a 2a 20 74 6f 20 65 78 70 65 72 69 6d 65  s.** to experime
7130: 6e 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20  ntal interfaces 
7140: 62 75 74 20 72 65 73 65 72 76 65 20 74 68 65 20  but reserve the 
7150: 72 69 67 68 74 20 74 6f 20 6d 61 6b 65 20 6d 69  right to make mi
7160: 6e 6f 72 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69  nor changes.** i
7170: 66 20 65 78 70 65 72 69 65 6e 63 65 20 66 72 6f  f experience fro
7180: 6d 20 75 73 65 20 22 69 6e 20 74 68 65 20 77 69  m use "in the wi
7190: 6c 64 22 20 73 75 67 67 65 73 74 20 73 75 63 68  ld" suggest such
71a0: 20 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 75   changes are pru
71b0: 64 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  dent..**.** The 
71c0: 6f 66 66 69 63 69 61 6c 20 43 2d 6c 61 6e 67 75  official C-langu
71d0: 61 67 65 20 41 50 49 20 64 6f 63 75 6d 65 6e 74  age API document
71e0: 61 74 69 6f 6e 20 66 6f 72 20 53 51 4c 69 74 65  ation for SQLite
71f0: 20 69 73 20 64 65 72 69 76 65 64 0a 2a 2a 20 66   is derived.** f
7200: 72 6f 6d 20 63 6f 6d 6d 65 6e 74 73 20 69 6e 20  rom comments in 
7210: 74 68 69 73 20 66 69 6c 65 2e 20 20 54 68 69 73  this file.  This
7220: 20 66 69 6c 65 20 69 73 20 74 68 65 20 61 75 74   file is the aut
7230: 68 6f 72 69 74 61 74 69 76 65 20 73 6f 75 72 63  horitative sourc
7240: 65 0a 2a 2a 20 6f 6e 20 68 6f 77 20 53 51 4c 69  e.** on how SQLi
7250: 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  te interfaces ar
7260: 65 20 73 75 70 70 6f 73 65 64 20 74 6f 20 6f 70  e supposed to op
7270: 65 72 61 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  erate..**.** The
7280: 20 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 66 69   name of this fi
7290: 6c 65 20 75 6e 64 65 72 20 63 6f 6e 66 69 67 75  le under configu
72a0: 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e  ration managemen
72b0: 74 20 69 73 20 22 73 71 6c 69 74 65 2e 68 2e 69  t is "sqlite.h.i
72c0: 6e 22 2e 0a 2a 2a 20 54 68 65 20 6d 61 6b 65 66  n"..** The makef
72d0: 69 6c 65 20 6d 61 6b 65 73 20 73 6f 6d 65 20 6d  ile makes some m
72e0: 69 6e 6f 72 20 63 68 61 6e 67 65 73 20 74 6f 20  inor changes to 
72f0: 74 68 69 73 20 66 69 6c 65 20 28 73 75 63 68 20  this file (such 
7300: 61 73 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a 20  as inserting.** 
7310: 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  the version numb
7320: 65 72 29 20 61 6e 64 20 63 68 61 6e 67 65 73 20  er) and changes 
7330: 69 74 73 20 6e 61 6d 65 20 74 6f 20 22 73 71 6c  its name to "sql
7340: 69 74 65 33 2e 68 22 20 61 73 0a 2a 2a 20 70 61  ite3.h" as.** pa
7350: 72 74 20 6f 66 20 74 68 65 20 62 75 69 6c 64 20  rt of the build 
7360: 70 72 6f 63 65 73 73 2e 0a 2a 2f 0a 23 69 66 6e  process..*/.#ifn
7370: 64 65 66 20 53 51 4c 49 54 45 33 5f 48 0a 23 64  def SQLITE3_H.#d
7380: 65 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 48 0a  efine SQLITE3_H.
7390: 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67  #include <stdarg
73a0: 2e 68 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64 65  .h>     /* Neede
73b0: 64 20 66 6f 72 20 74 68 65 20 64 65 66 69 6e 69  d for the defini
73c0: 74 69 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74 20  tion of va_list 
73d0: 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73  */../*.** Make s
73e0: 75 72 65 20 77 65 20 63 61 6e 20 63 61 6c 6c 20  ure we can call 
73f0: 74 68 69 73 20 73 74 75 66 66 20 66 72 6f 6d 20  this stuff from 
7400: 43 2b 2b 2e 0a 2a 2f 0a 23 69 66 20 30 0a 65 78  C++..*/.#if 0.ex
7410: 74 65 72 6e 20 22 43 22 20 7b 0a 23 65 6e 64 69  tern "C" {.#endi
7420: 66 0a 0a 0a 2f 2a 0a 2a 2a 20 50 72 6f 76 69 64  f.../*.** Provid
7430: 65 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f  e the ability to
7440: 20 6f 76 65 72 72 69 64 65 20 6c 69 6e 6b 61 67   override linkag
7450: 65 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68  e features of th
7460: 65 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a  e interface..*/.
7470: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 45  #ifndef SQLITE_E
7480: 58 54 45 52 4e 0a 23 20 64 65 66 69 6e 65 20 53  XTERN.# define S
7490: 51 4c 49 54 45 5f 45 58 54 45 52 4e 20 65 78 74  QLITE_EXTERN ext
74a0: 65 72 6e 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  ern.#endif.#ifnd
74b0: 65 66 20 53 51 4c 49 54 45 5f 41 50 49 0a 23 20  ef SQLITE_API.# 
74c0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 50  define SQLITE_AP
74d0: 49 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66  I.#endif.#ifndef
74e0: 20 53 51 4c 49 54 45 5f 43 44 45 43 4c 0a 23 20   SQLITE_CDECL.# 
74f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 44  define SQLITE_CD
7500: 45 43 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64  ECL.#endif.#ifnd
7510: 65 66 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c  ef SQLITE_APICAL
7520: 4c 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54  L.# define SQLIT
7530: 45 5f 41 50 49 43 41 4c 4c 0a 23 65 6e 64 69 66  E_APICALL.#endif
7540: 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f  .#ifndef SQLITE_
7550: 53 54 44 43 41 4c 4c 0a 23 20 64 65 66 69 6e 65  STDCALL.# define
7560: 20 53 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 20   SQLITE_STDCALL 
7570: 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23  SQLITE_APICALL.#
7580: 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51  endif.#ifndef SQ
7590: 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 20  LITE_CALLBACK.# 
75a0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41  define SQLITE_CA
75b0: 4c 4c 42 41 43 4b 0a 23 65 6e 64 69 66 0a 23 69  LLBACK.#endif.#i
75c0: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 53 59 53  fndef SQLITE_SYS
75d0: 41 50 49 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  API.# define SQL
75e0: 49 54 45 5f 53 59 53 41 50 49 0a 23 65 6e 64 69  ITE_SYSAPI.#endi
75f0: 66 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 6e  f../*.** These n
7600: 6f 2d 6f 70 20 6d 61 63 72 6f 73 20 61 72 65 20  o-op macros are 
7610: 75 73 65 64 20 69 6e 20 66 72 6f 6e 74 20 6f 66  used in front of
7620: 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 6d   interfaces to m
7630: 61 72 6b 20 74 68 6f 73 65 0a 2a 2a 20 69 6e 74  ark those.** int
7640: 65 72 66 61 63 65 73 20 61 73 20 65 69 74 68 65  erfaces as eithe
7650: 72 20 64 65 70 72 65 63 61 74 65 64 20 6f 72 20  r deprecated or 
7660: 65 78 70 65 72 69 6d 65 6e 74 61 6c 2e 20 20 4e  experimental.  N
7670: 65 77 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  ew applications.
7680: 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73  ** should not us
7690: 65 20 64 65 70 72 65 63 61 74 65 64 20 69 6e 74  e deprecated int
76a0: 65 72 66 61 63 65 73 20 2d 20 74 68 65 79 20 61  erfaces - they a
76b0: 72 65 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72  re supported for
76c0: 20 62 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f   backwards.** co
76d0: 6d 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79  mpatibility only
76e0: 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 77  .  Application w
76f0: 72 69 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65  riters should be
7700: 20 61 77 61 72 65 20 74 68 61 74 0a 2a 2a 20 65   aware that.** e
7710: 78 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65  xperimental inte
7720: 72 66 61 63 65 73 20 61 72 65 20 73 75 62 6a 65  rfaces are subje
7730: 63 74 20 74 6f 20 63 68 61 6e 67 65 20 69 6e 20  ct to change in 
7740: 70 6f 69 6e 74 20 72 65 6c 65 61 73 65 73 2e 0a  point releases..
7750: 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 6d 61 63 72  **.** These macr
7760: 6f 73 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c  os used to resol
7770: 76 65 20 74 6f 20 76 61 72 69 6f 75 73 20 6b 69  ve to various ki
7780: 6e 64 73 20 6f 66 20 63 6f 6d 70 69 6c 65 72 20  nds of compiler 
7790: 6d 61 67 69 63 20 74 68 61 74 0a 2a 2a 20 77 6f  magic that.** wo
77a0: 75 6c 64 20 67 65 6e 65 72 61 74 65 20 77 61 72  uld generate war
77b0: 6e 69 6e 67 20 6d 65 73 73 61 67 65 73 20 77 68  ning messages wh
77c0: 65 6e 20 74 68 65 79 20 77 65 72 65 20 75 73 65  en they were use
77d0: 64 2e 20 20 42 75 74 20 74 68 61 74 0a 2a 2a 20  d.  But that.** 
77e0: 63 6f 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 65  compiler magic e
77f0: 6e 64 65 64 20 75 70 20 67 65 6e 65 72 61 74 69  nded up generati
7800: 6e 67 20 73 75 63 68 20 61 20 66 6c 75 72 72 79  ng such a flurry
7810: 20 6f 66 20 62 75 67 20 72 65 70 6f 72 74 73 0a   of bug reports.
7820: 2a 2a 20 74 68 61 74 20 77 65 20 68 61 76 65 20  ** that we have 
7830: 74 61 6b 65 6e 20 69 74 20 61 6c 6c 20 6f 75 74  taken it all out
7840: 20 61 6e 64 20 67 6f 6e 65 20 62 61 63 6b 20 74   and gone back t
7850: 6f 20 75 73 69 6e 67 20 73 69 6d 70 6c 65 0a 2a  o using simple.*
7860: 2a 20 6e 6f 6f 70 20 6d 61 63 72 6f 73 2e 0a 2a  * noop macros..*
7870: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
7880: 5f 44 45 50 52 45 43 41 54 45 44 0a 23 64 65 66  _DEPRECATED.#def
7890: 69 6e 65 20 53 51 4c 49 54 45 5f 45 58 50 45 52  ine SQLITE_EXPER
78a0: 49 4d 45 4e 54 41 4c 0a 0a 2f 2a 0a 2a 2a 20 45  IMENTAL../*.** E
78b0: 6e 73 75 72 65 20 74 68 65 73 65 20 73 79 6d 62  nsure these symb
78c0: 6f 6c 73 20 77 65 72 65 20 6e 6f 74 20 64 65 66  ols were not def
78d0: 69 6e 65 64 20 62 79 20 73 6f 6d 65 20 70 72 65  ined by some pre
78e0: 76 69 6f 75 73 20 68 65 61 64 65 72 20 66 69 6c  vious header fil
78f0: 65 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c  e..*/.#ifdef SQL
7900: 49 54 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e  ITE_VERSION.# un
7910: 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49  def SQLITE_VERSI
7920: 4f 4e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ON.#endif.#ifdef
7930: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f   SQLITE_VERSION_
7940: 4e 55 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53  NUMBER.# undef S
7950: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55  QLITE_VERSION_NU
7960: 4d 42 45 52 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  MBER.#endif../*.
7970: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d  ** CAPI3REF: Com
7980: 70 69 6c 65 2d 54 69 6d 65 20 4c 69 62 72 61 72  pile-Time Librar
7990: 79 20 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72  y Version Number
79a0: 73 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 5b 53  s.**.** ^(The [S
79b0: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 20 43  QLITE_VERSION] C
79c0: 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61   preprocessor ma
79d0: 63 72 6f 20 69 6e 20 74 68 65 20 73 71 6c 69 74  cro in the sqlit
79e0: 65 33 2e 68 20 68 65 61 64 65 72 0a 2a 2a 20 65  e3.h header.** e
79f0: 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 73 74  valuates to a st
7a00: 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 74 68 61  ring literal tha
7a10: 74 20 69 73 20 74 68 65 20 53 51 4c 69 74 65 20  t is the SQLite 
7a20: 76 65 72 73 69 6f 6e 20 69 6e 20 74 68 65 0a 2a  version in the.*
7a30: 2a 20 66 6f 72 6d 61 74 20 22 58 2e 59 2e 5a 22  * format "X.Y.Z"
7a40: 20 77 68 65 72 65 20 58 20 69 73 20 74 68 65 20   where X is the 
7a50: 6d 61 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75  major version nu
7a60: 6d 62 65 72 20 28 61 6c 77 61 79 73 20 33 20 66  mber (always 3 f
7a70: 6f 72 0a 2a 2a 20 53 51 4c 69 74 65 33 29 20 61  or.** SQLite3) a
7a80: 6e 64 20 59 20 69 73 20 74 68 65 20 6d 69 6e 6f  nd Y is the mino
7a90: 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72  r version number
7aa0: 20 61 6e 64 20 5a 20 69 73 20 74 68 65 20 72 65   and Z is the re
7ab0: 6c 65 61 73 65 20 6e 75 6d 62 65 72 2e 29 5e 0a  lease number.)^.
7ac0: 2a 2a 20 5e 28 54 68 65 20 5b 53 51 4c 49 54 45  ** ^(The [SQLITE
7ad0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d  _VERSION_NUMBER]
7ae0: 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C preprocessor 
7af0: 6d 61 63 72 6f 20 72 65 73 6f 6c 76 65 73 20 74  macro resolves t
7b00: 6f 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20  o an integer.** 
7b10: 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 28  with the value (
7b20: 58 2a 31 30 30 30 30 30 30 20 2b 20 59 2a 31 30  X*1000000 + Y*10
7b30: 30 30 20 2b 20 5a 29 20 77 68 65 72 65 20 58 2c  00 + Z) where X,
7b40: 20 59 2c 20 61 6e 64 20 5a 20 61 72 65 20 74 68   Y, and Z are th
7b50: 65 20 73 61 6d 65 0a 2a 2a 20 6e 75 6d 62 65 72  e same.** number
7b60: 73 20 75 73 65 64 20 69 6e 20 5b 53 51 4c 49 54  s used in [SQLIT
7b70: 45 5f 56 45 52 53 49 4f 4e 5d 2e 29 5e 0a 2a 2a  E_VERSION].)^.**
7b80: 20 54 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53   The SQLITE_VERS
7b90: 49 4f 4e 5f 4e 55 4d 42 45 52 20 66 6f 72 20 61  ION_NUMBER for a
7ba0: 6e 79 20 67 69 76 65 6e 20 72 65 6c 65 61 73 65  ny given release
7bb0: 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20   of SQLite will 
7bc0: 61 6c 73 6f 0a 2a 2a 20 62 65 20 6c 61 72 67 65  also.** be large
7bd0: 72 20 74 68 61 6e 20 74 68 65 20 72 65 6c 65 61  r than the relea
7be0: 73 65 20 66 72 6f 6d 20 77 68 69 63 68 20 69 74  se from which it
7bf0: 20 69 73 20 64 65 72 69 76 65 64 2e 20 20 45 69   is derived.  Ei
7c00: 74 68 65 72 20 59 20 77 69 6c 6c 0a 2a 2a 20 62  ther Y will.** b
7c10: 65 20 68 65 6c 64 20 63 6f 6e 73 74 61 6e 74 20  e held constant 
7c20: 61 6e 64 20 5a 20 77 69 6c 6c 20 62 65 20 69 6e  and Z will be in
7c30: 63 72 65 6d 65 6e 74 65 64 20 6f 72 20 65 6c 73  cremented or els
7c40: 65 20 59 20 77 69 6c 6c 20 62 65 20 69 6e 63 72  e Y will be incr
7c50: 65 6d 65 6e 74 65 64 0a 2a 2a 20 61 6e 64 20 5a  emented.** and Z
7c60: 20 77 69 6c 6c 20 62 65 20 72 65 73 65 74 20 74   will be reset t
7c70: 6f 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 53 69  o zero..**.** Si
7c80: 6e 63 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36  nce [version 3.6
7c90: 2e 31 38 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e  .18] ([dateof:3.
7ca0: 36 2e 31 38 5d 29 2c 20 0a 2a 2a 20 53 51 4c 69  6.18]), .** SQLi
7cb0: 74 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 68  te source code h
7cc0: 61 73 20 62 65 65 6e 20 73 74 6f 72 65 64 20 69  as been stored i
7cd0: 6e 20 74 68 65 0a 2a 2a 20 3c 61 20 68 72 65 66  n the.** <a href
7ce0: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 66 6f 73  ="http://www.fos
7cf0: 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 22 3e 46 6f  sil-scm.org/">Fo
7d00: 73 73 69 6c 20 63 6f 6e 66 69 67 75 72 61 74 69  ssil configurati
7d10: 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 2a 2a  on management.**
7d20: 20 73 79 73 74 65 6d 3c 2f 61 3e 2e 20 20 5e 54   system</a>.  ^T
7d30: 68 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  he SQLITE_SOURCE
7d40: 5f 49 44 20 6d 61 63 72 6f 20 65 76 61 6c 75 61  _ID macro evalua
7d50: 74 65 73 20 74 6f 0a 2a 2a 20 61 20 73 74 72 69  tes to.** a stri
7d60: 6e 67 20 77 68 69 63 68 20 69 64 65 6e 74 69 66  ng which identif
7d70: 69 65 73 20 61 20 70 61 72 74 69 63 75 6c 61 72  ies a particular
7d80: 20 63 68 65 63 6b 2d 69 6e 20 6f 66 20 53 51 4c   check-in of SQL
7d90: 69 74 65 0a 2a 2a 20 77 69 74 68 69 6e 20 69 74  ite.** within it
7da0: 73 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  s configuration 
7db0: 6d 61 6e 61 67 65 6d 65 6e 74 20 73 79 73 74 65  management syste
7dc0: 6d 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f  m.  ^The SQLITE_
7dd0: 53 4f 55 52 43 45 5f 49 44 0a 2a 2a 20 73 74 72  SOURCE_ID.** str
7de0: 69 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65  ing contains the
7df0: 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6f   date and time o
7e00: 66 20 74 68 65 20 63 68 65 63 6b 2d 69 6e 20 28  f the check-in (
7e10: 55 54 43 29 20 61 6e 64 20 61 20 53 48 41 31 0a  UTC) and a SHA1.
7e20: 2a 2a 20 6f 72 20 53 48 41 33 2d 32 35 36 20 68  ** or SHA3-256 h
7e30: 61 73 68 20 6f 66 20 74 68 65 20 65 6e 74 69 72  ash of the entir
7e40: 65 20 73 6f 75 72 63 65 20 74 72 65 65 2e 0a 2a  e source tree..*
7e50: 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b  *.** See also: [
7e60: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
7e70: 6f 6e 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  on()],.** [sqlit
7e80: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
7e90: 6d 62 65 72 28 29 5d 2c 20 5b 73 71 6c 69 74 65  mber()], [sqlite
7ea0: 33 5f 73 6f 75 72 63 65 69 64 28 29 5d 2c 0a 2a  3_sourceid()],.*
7eb0: 2a 20 5b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f  * [sqlite_versio
7ec0: 6e 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  n()] and [sqlite
7ed0: 5f 73 6f 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a  _source_id()]..*
7ee0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
7ef0: 5f 56 45 52 53 49 4f 4e 20 20 20 20 20 20 20 20  _VERSION        
7f00: 22 33 2e 32 30 2e 30 22 0a 23 64 65 66 69 6e 65  "3.20.0".#define
7f10: 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f   SQLITE_VERSION_
7f20: 4e 55 4d 42 45 52 20 33 30 32 30 30 30 30 0a 23  NUMBER 3020000.#
7f30: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 4f  define SQLITE_SO
7f40: 55 52 43 45 5f 49 44 20 20 20 20 20 20 22 32 30  URCE_ID      "20
7f50: 31 37 2d 30 37 2d 31 35 20 31 33 3a 34 39 3a 35  17-07-15 13:49:5
7f60: 36 20 34 37 63 66 38 33 61 30 36 38 32 62 37 62  6 47cf83a0682b7b
7f70: 33 32 31 39 63 66 32 35 35 34 35 37 66 35 66 62  3219cf255457f5fb
7f80: 65 30 35 66 33 63 31 66 34 36 62 65 34 32 66 36  e05f3c1f46be42f6
7f90: 62 62 61 62 33 33 62 37 38 61 35 37 61 32 35 32  bbab33b78a57a252
7fa0: 66 36 22 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  f6"../*.** CAPI3
7fb0: 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69  REF: Run-Time Li
7fc0: 62 72 61 72 79 20 56 65 72 73 69 6f 6e 20 4e 75  brary Version Nu
7fd0: 6d 62 65 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  mbers.** KEYWORD
7fe0: 53 3a 20 73 71 6c 69 74 65 33 5f 76 65 72 73 69  S: sqlite3_versi
7ff0: 6f 6e 20 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  on sqlite3_sourc
8000: 65 69 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  eid.**.** These 
8010: 69 6e 74 65 72 66 61 63 65 73 20 70 72 6f 76 69  interfaces provi
8020: 64 65 20 74 68 65 20 73 61 6d 65 20 69 6e 66 6f  de the same info
8030: 72 6d 61 74 69 6f 6e 20 61 73 20 74 68 65 20 5b  rmation as the [
8040: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 2c  SQLITE_VERSION],
8050: 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 56 45 52 53  .** [SQLITE_VERS
8060: 49 4f 4e 5f 4e 55 4d 42 45 52 5d 2c 20 61 6e 64  ION_NUMBER], and
8070: 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f   [SQLITE_SOURCE_
8080: 49 44 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73  ID] C preprocess
8090: 6f 72 20 6d 61 63 72 6f 73 0a 2a 2a 20 62 75 74  or macros.** but
80a0: 20 61 72 65 20 61 73 73 6f 63 69 61 74 65 64 20   are associated 
80b0: 77 69 74 68 20 74 68 65 20 6c 69 62 72 61 72 79  with the library
80c0: 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20   instead of the 
80d0: 68 65 61 64 65 72 20 66 69 6c 65 2e 20 20 5e 28  header file.  ^(
80e0: 43 61 75 74 69 6f 75 73 0a 2a 2a 20 70 72 6f 67  Cautious.** prog
80f0: 72 61 6d 6d 65 72 73 20 6d 69 67 68 74 20 69 6e  rammers might in
8100: 63 6c 75 64 65 20 61 73 73 65 72 74 28 29 20 73  clude assert() s
8110: 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74 68 65  tatements in the
8120: 69 72 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74  ir application t
8130: 6f 0a 2a 2a 20 76 65 72 69 66 79 20 74 68 61 74  o.** verify that
8140: 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64   values returned
8150: 20 62 79 20 74 68 65 73 65 20 69 6e 74 65 72 66   by these interf
8160: 61 63 65 73 20 6d 61 74 63 68 20 74 68 65 20 6d  aces match the m
8170: 61 63 72 6f 73 20 69 6e 0a 2a 2a 20 74 68 65 20  acros in.** the 
8180: 68 65 61 64 65 72 2c 20 61 6e 64 20 74 68 75 73  header, and thus
8190: 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65   ensure that the
81a0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a   application is.
81b0: 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  ** compiled with
81c0: 20 6d 61 74 63 68 69 6e 67 20 6c 69 62 72 61 72   matching librar
81d0: 79 20 61 6e 64 20 68 65 61 64 65 72 20 66 69 6c  y and header fil
81e0: 65 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b  es..**.** <block
81f0: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 61  quote><pre>.** a
8200: 73 73 65 72 74 28 20 73 71 6c 69 74 65 33 5f 6c  ssert( sqlite3_l
8210: 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72  ibversion_number
8220: 28 29 3d 3d 53 51 4c 49 54 45 5f 56 45 52 53 49  ()==SQLITE_VERSI
8230: 4f 4e 5f 4e 55 4d 42 45 52 20 29 3b 0a 2a 2a 20  ON_NUMBER );.** 
8240: 61 73 73 65 72 74 28 20 73 74 72 63 6d 70 28 73  assert( strcmp(s
8250: 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
8260: 29 2c 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f  ),SQLITE_SOURCE_
8270: 49 44 29 3d 3d 30 20 29 3b 0a 2a 2a 20 61 73 73  ID)==0 );.** ass
8280: 65 72 74 28 20 73 74 72 63 6d 70 28 73 71 6c 69  ert( strcmp(sqli
8290: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
82a0: 2c 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 29  ,SQLITE_VERSION)
82b0: 3d 3d 30 20 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e  ==0 );.** </pre>
82c0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a  </blockquote>)^.
82d0: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
82e0: 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 73 74 72  e3_version[] str
82f0: 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 63 6f 6e  ing constant con
8300: 74 61 69 6e 73 20 74 68 65 20 74 65 78 74 20 6f  tains the text o
8310: 66 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  f [SQLITE_VERSIO
8320: 4e 5d 0a 2a 2a 20 6d 61 63 72 6f 2e 20 20 5e 54  N].** macro.  ^T
8330: 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  he sqlite3_libve
8340: 72 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e  rsion() function
8350: 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
8360: 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 74 6f 20  er to the.** to 
8370: 74 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72 73  the sqlite3_vers
8380: 69 6f 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f 6e  ion[] string con
8390: 73 74 61 6e 74 2e 20 20 54 68 65 20 73 71 6c 69  stant.  The sqli
83a0: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
83b0: 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  .** function is 
83c0: 70 72 6f 76 69 64 65 64 20 66 6f 72 20 75 73 65  provided for use
83d0: 20 69 6e 20 44 4c 4c 73 20 73 69 6e 63 65 20 44   in DLLs since D
83e0: 4c 4c 20 75 73 65 72 73 20 75 73 75 61 6c 6c 79  LL users usually
83f0: 20 64 6f 20 6e 6f 74 20 68 61 76 65 0a 2a 2a 20   do not have.** 
8400: 64 69 72 65 63 74 20 61 63 63 65 73 73 20 74 6f  direct access to
8410: 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74   string constant
8420: 73 20 77 69 74 68 69 6e 20 74 68 65 20 44 4c 4c  s within the DLL
8430: 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74  .  ^The.** sqlit
8440: 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75  e3_libversion_nu
8450: 6d 62 65 72 28 29 20 66 75 6e 63 74 69 6f 6e 20  mber() function 
8460: 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67  returns an integ
8470: 65 72 20 65 71 75 61 6c 20 74 6f 0a 2a 2a 20 5b  er equal to.** [
8480: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
8490: 55 4d 42 45 52 5d 2e 20 20 5e 54 68 65 20 73 71  UMBER].  ^The sq
84a0: 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29  lite3_sourceid()
84b0: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
84c0: 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20  s .** a pointer 
84d0: 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f 6e 73  to a string cons
84e0: 74 61 6e 74 20 77 68 6f 73 65 20 76 61 6c 75 65  tant whose value
84f0: 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20   is the same as 
8500: 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  the .** [SQLITE_
8510: 53 4f 55 52 43 45 5f 49 44 5d 20 43 20 70 72 65  SOURCE_ID] C pre
8520: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 2e  processor macro.
8530: 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
8540: 20 5b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e   [sqlite_version
8550: 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f  ()] and [sqlite_
8560: 73 6f 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a 2f  source_id()]..*/
8570: 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73  .SQLITE_API cons
8580: 74 20 63 68 61 72 20 73 71 6c 69 74 65 33 5f 76  t char sqlite3_v
8590: 65 72 73 69 6f 6e 5b 5d 20 3d 20 53 51 4c 49 54  ersion[] = SQLIT
85a0: 45 5f 56 45 52 53 49 4f 4e 3b 0a 53 51 4c 49 54  E_VERSION;.SQLIT
85b0: 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
85c0: 20 2a 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72   *sqlite3_libver
85d0: 73 69 6f 6e 28 76 6f 69 64 29 3b 0a 53 51 4c 49  sion(void);.SQLI
85e0: 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61  TE_API const cha
85f0: 72 20 2a 73 71 6c 69 74 65 33 5f 73 6f 75 72 63  r *sqlite3_sourc
8600: 65 69 64 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54  eid(void);.SQLIT
8610: 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
8620: 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d  3_libversion_num
8630: 62 65 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a  ber(void);../*.*
8640: 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d  * CAPI3REF: Run-
8650: 54 69 6d 65 20 4c 69 62 72 61 72 79 20 43 6f 6d  Time Library Com
8660: 70 69 6c 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73  pilation Options
8670: 20 44 69 61 67 6e 6f 73 74 69 63 73 0a 2a 2a 0a   Diagnostics.**.
8680: 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
8690: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
86a0: 65 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  ed() function re
86b0: 74 75 72 6e 73 20 30 20 6f 72 20 31 20 0a 2a 2a  turns 0 or 1 .**
86c0: 20 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74   indicating whet
86d0: 68 65 72 20 74 68 65 20 73 70 65 63 69 66 69 65  her the specifie
86e0: 64 20 6f 70 74 69 6f 6e 20 77 61 73 20 64 65 66  d option was def
86f0: 69 6e 65 64 20 61 74 20 0a 2a 2a 20 63 6f 6d 70  ined at .** comp
8700: 69 6c 65 20 74 69 6d 65 2e 20 20 5e 54 68 65 20  ile time.  ^The 
8710: 53 51 4c 49 54 45 5f 20 70 72 65 66 69 78 20 6d  SQLITE_ prefix m
8720: 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72  ay be omitted fr
8730: 6f 6d 20 74 68 65 20 0a 2a 2a 20 6f 70 74 69 6f  om the .** optio
8740: 6e 20 6e 61 6d 65 20 70 61 73 73 65 64 20 74 6f  n name passed to
8750: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
8760: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 2e 20 20  option_used().  
8770: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
8780: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
8790: 6e 5f 67 65 74 28 29 20 66 75 6e 63 74 69 6f 6e  n_get() function
87a0: 20 61 6c 6c 6f 77 73 20 69 74 65 72 61 74 69 6e   allows iteratin
87b0: 67 0a 2a 2a 20 6f 76 65 72 20 74 68 65 20 6c 69  g.** over the li
87c0: 73 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 74 68  st of options th
87d0: 61 74 20 77 65 72 65 20 64 65 66 69 6e 65 64 20  at were defined 
87e0: 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20  at compile time 
87f0: 62 79 0a 2a 2a 20 72 65 74 75 72 6e 69 6e 67 20  by.** returning 
8800: 74 68 65 20 4e 2d 74 68 20 63 6f 6d 70 69 6c 65  the N-th compile
8810: 20 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 74 72   time option str
8820: 69 6e 67 2e 20 20 5e 49 66 20 4e 20 69 73 20 6f  ing.  ^If N is o
8830: 75 74 20 6f 66 20 72 61 6e 67 65 2c 0a 2a 2a 20  ut of range,.** 
8840: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8850: 70 74 69 6f 6e 5f 67 65 74 28 29 20 72 65 74 75  ption_get() retu
8860: 72 6e 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  rns a NULL point
8870: 65 72 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45  er.  ^The SQLITE
8880: 5f 20 0a 2a 2a 20 70 72 65 66 69 78 20 69 73 20  _ .** prefix is 
8890: 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 6e 79  omitted from any
88a0: 20 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65   strings returne
88b0: 64 20 62 79 20 0a 2a 2a 20 73 71 6c 69 74 65 33  d by .** sqlite3
88c0: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67  _compileoption_g
88d0: 65 74 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 53 75 70  et()..**.** ^Sup
88e0: 70 6f 72 74 20 66 6f 72 20 74 68 65 20 64 69 61  port for the dia
88f0: 67 6e 6f 73 74 69 63 20 66 75 6e 63 74 69 6f 6e  gnostic function
8900: 73 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c  s sqlite3_compil
8910: 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 0a 2a  eoption_used().*
8920: 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6f  * and sqlite3_co
8930: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
8940: 29 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  ) may be omitted
8950: 20 62 79 20 73 70 65 63 69 66 79 69 6e 67 20 74   by specifying t
8960: 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f  he .** [SQLITE_O
8970: 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f  MIT_COMPILEOPTIO
8980: 4e 5f 44 49 41 47 53 5d 20 6f 70 74 69 6f 6e 20  N_DIAGS] option 
8990: 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e  at compile time.
89a0: 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
89b0: 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 5b   SQL functions [
89c0: 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70  sqlite_compileop
89d0: 74 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64  tion_used()] and
89e0: 0a 2a 2a 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70  .** [sqlite_comp
89f0: 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d  ileoption_get()]
8a00: 20 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c   and the [compil
8a10: 65 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61  e_options pragma
8a20: 5d 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  ]..*/.#ifndef SQ
8a30: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c  LITE_OMIT_COMPIL
8a40: 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 0a 53 51  EOPTION_DIAGS.SQ
8a50: 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
8a60: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
8a70: 6f 6e 5f 75 73 65 64 28 63 6f 6e 73 74 20 63 68  on_used(const ch
8a80: 61 72 20 2a 7a 4f 70 74 4e 61 6d 65 29 3b 0a 53  ar *zOptName);.S
8a90: 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20  QLITE_API const 
8aa0: 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f  char *sqlite3_co
8ab0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28  mpileoption_get(
8ac0: 69 6e 74 20 4e 29 3b 0a 23 65 6e 64 69 66 0a 0a  int N);.#endif..
8ad0: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
8ae0: 54 65 73 74 20 54 6f 20 53 65 65 20 49 66 20 54  Test To See If T
8af0: 68 65 20 4c 69 62 72 61 72 79 20 49 73 20 54 68  he Library Is Th
8b00: 72 65 61 64 73 61 66 65 0a 2a 2a 0a 2a 2a 20 5e  readsafe.**.** ^
8b10: 54 68 65 20 73 71 6c 69 74 65 33 5f 74 68 72 65  The sqlite3_thre
8b20: 61 64 73 61 66 65 28 29 20 66 75 6e 63 74 69 6f  adsafe() functio
8b30: 6e 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 20 69  n returns zero i
8b40: 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a  f and only if.**
8b50: 20 53 51 4c 69 74 65 20 77 61 73 20 63 6f 6d 70   SQLite was comp
8b60: 69 6c 65 64 20 77 69 74 68 20 6d 75 74 65 78 69  iled with mutexi
8b70: 6e 67 20 63 6f 64 65 20 6f 6d 69 74 74 65 64 20  ng code omitted 
8b80: 64 75 65 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 53  due to the.** [S
8b90: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
8ba0: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
8bb0: 70 74 69 6f 6e 20 62 65 69 6e 67 20 73 65 74 20  ption being set 
8bc0: 74 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  to 0..**.** SQLi
8bd0: 74 65 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c  te can be compil
8be0: 65 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f  ed with or witho
8bf0: 75 74 20 6d 75 74 65 78 65 73 2e 20 20 57 68 65  ut mutexes.  Whe
8c00: 6e 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  n.** the [SQLITE
8c10: 5f 54 48 52 45 41 44 53 41 46 45 5d 20 43 20 70  _THREADSAFE] C p
8c20: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8c30: 6f 20 69 73 20 31 20 6f 72 20 32 2c 20 6d 75 74  o is 1 or 2, mut
8c40: 65 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62  exes.** are enab
8c50: 6c 65 64 20 61 6e 64 20 53 51 4c 69 74 65 20 69  led and SQLite i
8c60: 73 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 57  s threadsafe.  W
8c70: 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  hen the.** [SQLI
8c80: 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d  TE_THREADSAFE] m
8c90: 61 63 72 6f 20 69 73 20 30 2c 20 0a 2a 2a 20 74  acro is 0, .** t
8ca0: 68 65 20 6d 75 74 65 78 65 73 20 61 72 65 20 6f  he mutexes are o
8cb0: 6d 69 74 74 65 64 2e 20 20 57 69 74 68 6f 75 74  mitted.  Without
8cc0: 20 74 68 65 20 6d 75 74 65 78 65 73 2c 20 69 74   the mutexes, it
8cd0: 20 69 73 20 6e 6f 74 20 73 61 66 65 0a 2a 2a 20   is not safe.** 
8ce0: 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 63 6f  to use SQLite co
8cf0: 6e 63 75 72 72 65 6e 74 6c 79 20 66 72 6f 6d 20  ncurrently from 
8d00: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68  more than one th
8d10: 72 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45 6e 61 62  read..**.** Enab
8d20: 6c 69 6e 67 20 6d 75 74 65 78 65 73 20 69 6e 63  ling mutexes inc
8d30: 75 72 73 20 61 20 6d 65 61 73 75 72 61 62 6c 65  urs a measurable
8d40: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
8d50: 61 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69 66 20 73  alty..** So if s
8d60: 70 65 65 64 20 69 73 20 6f 66 20 75 74 6d 6f 73  peed is of utmos
8d70: 74 20 69 6d 70 6f 72 74 61 6e 63 65 2c 20 69 74  t importance, it
8d80: 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20   makes sense to 
8d90: 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 6d  disable.** the m
8da0: 75 74 65 78 65 73 2e 20 20 42 75 74 20 66 6f 72  utexes.  But for
8db0: 20 6d 61 78 69 6d 75 6d 20 73 61 66 65 74 79 2c   maximum safety,
8dc0: 20 6d 75 74 65 78 65 73 20 73 68 6f 75 6c 64 20   mutexes should 
8dd0: 62 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 5e  be enabled..** ^
8de0: 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  The default beha
8df0: 76 69 6f 72 20 69 73 20 66 6f 72 20 6d 75 74 65  vior is for mute
8e00: 78 65 73 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  xes to be enable
8e10: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e  d..**.** This in
8e20: 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75  terface can be u
8e30: 73 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63  sed by an applic
8e40: 61 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75  ation to make su
8e50: 72 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 76  re that the.** v
8e60: 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  ersion of SQLite
8e70: 20 74 68 61 74 20 69 74 20 69 73 20 6c 69 6e 6b   that it is link
8e80: 69 6e 67 20 61 67 61 69 6e 73 74 20 77 61 73 20  ing against was 
8e90: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
8ea0: 20 74 68 65 20 64 65 73 69 72 65 64 20 73 65 74   the desired set
8eb0: 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c  ting of the [SQL
8ec0: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
8ed0: 6d 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  macro..**.** Thi
8ee0: 73 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79  s interface only
8ef0: 20 72 65 70 6f 72 74 73 20 6f 6e 20 74 68 65 20   reports on the 
8f00: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 75 74  compile-time mut
8f10: 65 78 20 73 65 74 74 69 6e 67 0a 2a 2a 20 6f 66  ex setting.** of
8f20: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52   the [SQLITE_THR
8f30: 45 41 44 53 41 46 45 5d 20 66 6c 61 67 2e 20 20  EADSAFE] flag.  
8f40: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
8f50: 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 53 51  piled with.** SQ
8f60: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
8f70: 31 20 6f 72 20 3d 32 20 74 68 65 6e 20 6d 75 74  1 or =2 then mut
8f80: 65 78 65 73 20 61 72 65 20 65 6e 61 62 6c 65 64  exes are enabled
8f90: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 0a   by default but.
8fa0: 2a 2a 20 63 61 6e 20 62 65 20 66 75 6c 6c 79 20  ** can be fully 
8fb0: 6f 72 20 70 61 72 74 69 61 6c 6c 79 20 64 69 73  or partially dis
8fc0: 61 62 6c 65 64 20 75 73 69 6e 67 20 61 20 63 61  abled using a ca
8fd0: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ll to [sqlite3_c
8fe0: 6f 6e 66 69 67 28 29 5d 0a 2a 2a 20 77 69 74 68  onfig()].** with
8ff0: 20 74 68 65 20 76 65 72 62 73 20 5b 53 51 4c 49   the verbs [SQLI
9000: 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
9010: 54 48 52 45 41 44 5d 2c 20 5b 53 51 4c 49 54 45  THREAD], [SQLITE
9020: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
9030: 45 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b 53 51 4c  EAD],.** or [SQL
9040: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
9050: 4c 49 5a 45 44 5d 2e 20 20 5e 28 54 68 65 20 72  LIZED].  ^(The r
9060: 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74  eturn value of t
9070: 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 74 68  he.** sqlite3_th
9080: 72 65 61 64 73 61 66 65 28 29 20 66 75 6e 63 74  readsafe() funct
9090: 69 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c 79 20 74  ion shows only t
90a0: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
90b0: 73 65 74 74 69 6e 67 20 6f 66 0a 2a 2a 20 74 68  setting of.** th
90c0: 72 65 61 64 20 73 61 66 65 74 79 2c 20 6e 6f 74  read safety, not
90d0: 20 61 6e 79 20 72 75 6e 2d 74 69 6d 65 20 63 68   any run-time ch
90e0: 61 6e 67 65 73 20 74 6f 20 74 68 61 74 20 73 65  anges to that se
90f0: 74 74 69 6e 67 20 6d 61 64 65 20 62 79 0a 2a 2a  tting made by.**
9100: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
9110: 29 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  ). In other word
9120: 73 2c 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  s, the return va
9130: 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  lue from sqlite3
9140: 5f 74 68 72 65 61 64 73 61 66 65 28 29 0a 2a 2a  _threadsafe().**
9150: 20 69 73 20 75 6e 63 68 61 6e 67 65 64 20 62 79   is unchanged by
9160: 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65   calls to sqlite
9170: 33 5f 63 6f 6e 66 69 67 28 29 2e 29 5e 0a 2a 2a  3_config().)^.**
9180: 0a 2a 2a 20 53 65 65 20 74 68 65 20 5b 74 68 72  .** See the [thr
9190: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
91a0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
91b0: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
91c0: 61 74 69 6f 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ation..*/.SQLITE
91d0: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
91e0: 5f 74 68 72 65 61 64 73 61 66 65 28 76 6f 69 64  _threadsafe(void
91f0: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
9200: 45 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e  EF: Database Con
9210: 6e 65 63 74 69 6f 6e 20 48 61 6e 64 6c 65 0a 2a  nection Handle.*
9220: 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 64 61 74  * KEYWORDS: {dat
9230: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
9240: 7d 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  } {database conn
9250: 65 63 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 45  ections}.**.** E
9260: 61 63 68 20 6f 70 65 6e 20 53 51 4c 69 74 65 20  ach open SQLite 
9270: 64 61 74 61 62 61 73 65 20 69 73 20 72 65 70 72  database is repr
9280: 65 73 65 6e 74 65 64 20 62 79 20 61 20 70 6f 69  esented by a poi
9290: 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61  nter to an insta
92a0: 6e 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6f 70  nce of.** the op
92b0: 61 71 75 65 20 73 74 72 75 63 74 75 72 65 20 6e  aque structure n
92c0: 61 6d 65 64 20 22 73 71 6c 69 74 65 33 22 2e 20  amed "sqlite3". 
92d0: 20 49 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   It is useful to
92e0: 20 74 68 69 6e 6b 20 6f 66 20 61 6e 20 73 71 6c   think of an sql
92f0: 69 74 65 33 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  ite3.** pointer 
9300: 61 73 20 61 6e 20 6f 62 6a 65 63 74 2e 20 20 54  as an object.  T
9310: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
9320: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
9330: 65 6e 31 36 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20  en16()], and.** 
9340: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
9350: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61  ()] interfaces a
9360: 72 65 20 69 74 73 20 63 6f 6e 73 74 72 75 63 74  re its construct
9370: 6f 72 73 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ors, and [sqlite
9380: 33 5f 63 6c 6f 73 65 28 29 5d 0a 2a 2a 20 61 6e  3_close()].** an
9390: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
93a0: 5f 76 32 28 29 5d 20 61 72 65 20 69 74 73 20 64  _v2()] are its d
93b0: 65 73 74 72 75 63 74 6f 72 73 2e 20 20 54 68 65  estructors.  The
93c0: 72 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68 65  re are many othe
93d0: 72 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  r.** interfaces 
93e0: 28 73 75 63 68 20 61 73 0a 2a 2a 20 5b 73 71 6c  (such as.** [sql
93f0: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
9400: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  )], [sqlite3_cre
9410: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 2c  ate_function()],
9420: 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
9430: 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d  _busy_timeout()]
9440: 20 74 6f 20 6e 61 6d 65 20 62 75 74 20 74 68 72   to name but thr
9450: 65 65 29 20 74 68 61 74 20 61 72 65 20 6d 65 74  ee) that are met
9460: 68 6f 64 73 20 6f 6e 20 61 6e 0a 2a 2a 20 73 71  hods on an.** sq
9470: 6c 69 74 65 33 20 6f 62 6a 65 63 74 2e 0a 2a 2f  lite3 object..*/
9480: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
9490: 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 3b  sqlite3 sqlite3;
94a0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
94b0: 3a 20 36 34 2d 42 69 74 20 49 6e 74 65 67 65 72  : 64-Bit Integer
94c0: 20 54 79 70 65 73 0a 2a 2a 20 4b 45 59 57 4f 52   Types.** KEYWOR
94d0: 44 53 3a 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  DS: sqlite_int64
94e0: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 0a 2a   sqlite_uint64.*
94f0: 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65  *.** Because the
9500: 72 65 20 69 73 20 6e 6f 20 63 72 6f 73 73 2d 70  re is no cross-p
9510: 6c 61 74 66 6f 72 6d 20 77 61 79 20 74 6f 20 73  latform way to s
9520: 70 65 63 69 66 79 20 36 34 2d 62 69 74 20 69 6e  pecify 64-bit in
9530: 74 65 67 65 72 20 74 79 70 65 73 0a 2a 2a 20 53  teger types.** S
9540: 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 74  QLite includes t
9550: 79 70 65 64 65 66 73 20 66 6f 72 20 36 34 2d 62  ypedefs for 64-b
9560: 69 74 20 73 69 67 6e 65 64 20 61 6e 64 20 75 6e  it signed and un
9570: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2e  signed integers.
9580: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
9590: 65 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c  e3_int64 and sql
95a0: 69 74 65 33 5f 75 69 6e 74 36 34 20 61 72 65 20  ite3_uint64 are 
95b0: 74 68 65 20 70 72 65 66 65 72 72 65 64 20 74 79  the preferred ty
95c0: 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 0a  pe definitions..
95d0: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 5f 69 6e  ** The sqlite_in
95e0: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
95f0: 69 6e 74 36 34 20 74 79 70 65 73 20 61 72 65 20  int64 types are 
9600: 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 62 61  supported for ba
9610: 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d 70 61  ckwards.** compa
9620: 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 0a 2a  tibility only..*
9630: 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
9640: 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  3_int64 and sqli
9650: 74 65 5f 69 6e 74 36 34 20 74 79 70 65 73 20 63  te_int64 types c
9660: 61 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65 72  an store integer
9670: 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65   values.** betwe
9680: 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  en -922337203685
9690: 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32  4775808 and +922
96a0: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
96b0: 20 69 6e 63 6c 75 73 69 76 65 2e 20 20 5e 54 68   inclusive.  ^Th
96c0: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 69 6e  e.** sqlite3_uin
96d0: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
96e0: 69 6e 74 36 34 20 74 79 70 65 73 20 63 61 6e 20  int64 types can 
96f0: 73 74 6f 72 65 20 69 6e 74 65 67 65 72 20 76 61  store integer va
9700: 6c 75 65 73 20 0a 2a 2a 20 62 65 74 77 65 65 6e  lues .** between
9710: 20 30 20 61 6e 64 20 2b 31 38 34 34 36 37 34 34   0 and +18446744
9720: 30 37 33 37 30 39 35 35 31 36 31 35 20 69 6e 63  073709551615 inc
9730: 6c 75 73 69 76 65 2e 0a 2a 2f 0a 23 69 66 64 65  lusive..*/.#ifde
9740: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
9750: 59 50 45 0a 20 20 74 79 70 65 64 65 66 20 53 51  YPE.  typedef SQ
9760: 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20  LITE_INT64_TYPE 
9770: 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 23 20  sqlite_int64;.# 
9780: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e  ifdef SQLITE_UIN
9790: 54 36 34 5f 54 59 50 45 0a 20 20 20 20 74 79 70  T64_TYPE.    typ
97a0: 65 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e 54  edef SQLITE_UINT
97b0: 36 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75  64_TYPE sqlite_u
97c0: 69 6e 74 36 34 3b 0a 23 20 65 6c 73 65 20 20 0a  int64;.# else  .
97d0: 20 20 20 20 74 79 70 65 64 65 66 20 75 6e 73 69      typedef unsi
97e0: 67 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e 54 36  gned SQLITE_INT6
97f0: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69  4_TYPE sqlite_ui
9800: 6e 74 36 34 3b 0a 23 20 65 6e 64 69 66 0a 23 65  nt64;.# endif.#e
9810: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  lif defined(_MSC
9820: 5f 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65 64  _VER) || defined
9830: 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20  (__BORLANDC__). 
9840: 20 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36 34   typedef __int64
9850: 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20   sqlite_int64;. 
9860: 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65   typedef unsigne
9870: 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  d __int64 sqlite
9880: 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a 20  _uint64;.#else. 
9890: 20 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f   typedef long lo
98a0: 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69 6e  ng int sqlite_in
98b0: 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75  t64;.  typedef u
98c0: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e  nsigned long lon
98d0: 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69 6e  g int sqlite_uin
98e0: 74 36 34 3b 0a 23 65 6e 64 69 66 0a 74 79 70 65  t64;.#endif.type
98f0: 64 65 66 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  def sqlite_int64
9900: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 3b 0a   sqlite3_int64;.
9910: 74 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 75  typedef sqlite_u
9920: 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 69  int64 sqlite3_ui
9930: 6e 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20  nt64;../*.** If 
9940: 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20 61 20  compiling for a 
9950: 70 72 6f 63 65 73 73 6f 72 20 74 68 61 74 20 6c  processor that l
9960: 61 63 6b 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f  acks floating po
9970: 69 6e 74 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20  int support,.** 
9980: 73 75 62 73 74 69 74 75 74 65 20 69 6e 74 65 67  substitute integ
9990: 65 72 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d  er for floating-
99a0: 70 6f 69 6e 74 2e 0a 2a 2f 0a 23 69 66 64 65 66  point..*/.#ifdef
99b0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f   SQLITE_OMIT_FLO
99c0: 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 23 20 64 65  ATING_POINT.# de
99d0: 66 69 6e 65 20 64 6f 75 62 6c 65 20 73 71 6c 69  fine double sqli
99e0: 74 65 33 5f 69 6e 74 36 34 0a 23 65 6e 64 69 66  te3_int64.#endif
99f0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
9a00: 3a 20 43 6c 6f 73 69 6e 67 20 41 20 44 61 74 61  : Closing A Data
9a10: 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a  base Connection.
9a20: 2a 2a 20 44 45 53 54 52 55 43 54 4f 52 3a 20 73  ** DESTRUCTOR: s
9a30: 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
9a40: 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  e sqlite3_close(
9a50: 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c  ) and sqlite3_cl
9a60: 6f 73 65 5f 76 32 28 29 20 72 6f 75 74 69 6e 65  ose_v2() routine
9a70: 73 20 61 72 65 20 64 65 73 74 72 75 63 74 6f 72  s are destructor
9a80: 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20 5b 73 71  s.** for the [sq
9a90: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 2e 0a 2a  lite3] object..*
9aa0: 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69  * ^Calls to sqli
9ab0: 74 65 33 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20  te3_close() and 
9ac0: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
9ad0: 28 29 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  () return [SQLIT
9ae0: 45 5f 4f 4b 5d 20 69 66 0a 2a 2a 20 74 68 65 20  E_OK] if.** the 
9af0: 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
9b00: 20 69 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79   is successfully
9b10: 20 64 65 73 74 72 6f 79 65 64 20 61 6e 64 20 61   destroyed and a
9b20: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a  ll associated.**
9b30: 20 72 65 73 6f 75 72 63 65 73 20 61 72 65 20 64   resources are d
9b40: 65 61 6c 6c 6f 63 61 74 65 64 2e 0a 2a 2a 0a 2a  eallocated..**.*
9b50: 2a 20 5e 49 66 20 74 68 65 20 64 61 74 61 62 61  * ^If the databa
9b60: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
9b70: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
9b80: 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65   unfinalized pre
9b90: 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65  pared.** stateme
9ba0: 6e 74 73 20 6f 72 20 75 6e 66 69 6e 69 73 68 65  nts or unfinishe
9bb0: 64 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  d sqlite3_backup
9bc0: 20 6f 62 6a 65 63 74 73 20 74 68 65 6e 20 73 71   objects then sq
9bd0: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 0a 2a 2a  lite3_close().**
9be0: 20 77 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20   will leave the 
9bf0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
9c00: 69 6f 6e 20 6f 70 65 6e 20 61 6e 64 20 72 65 74  ion open and ret
9c10: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  urn [SQLITE_BUSY
9c20: 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  ]..** ^If sqlite
9c30: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73 20  3_close_v2() is 
9c40: 63 61 6c 6c 65 64 20 77 69 74 68 20 75 6e 66 69  called with unfi
9c50: 6e 61 6c 69 7a 65 64 20 70 72 65 70 61 72 65 64  nalized prepared
9c60: 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 61   statements.** a
9c70: 6e 64 2f 6f 72 20 75 6e 66 69 6e 69 73 68 65 64  nd/or unfinished
9c80: 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 73   sqlite3_backups
9c90: 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  , then the datab
9ca0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ase connection b
9cb0: 65 63 6f 6d 65 73 0a 2a 2a 20 61 6e 20 75 6e 75  ecomes.** an unu
9cc0: 73 61 62 6c 65 20 22 7a 6f 6d 62 69 65 22 20 77  sable "zombie" w
9cd0: 68 69 63 68 20 77 69 6c 6c 20 61 75 74 6f 6d 61  hich will automa
9ce0: 74 69 63 61 6c 6c 79 20 62 65 20 64 65 61 6c 6c  tically be deall
9cf0: 6f 63 61 74 65 64 20 77 68 65 6e 20 74 68 65 0a  ocated when the.
9d00: 2a 2a 20 6c 61 73 74 20 70 72 65 70 61 72 65 64  ** last prepared
9d10: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69   statement is fi
9d20: 6e 61 6c 69 7a 65 64 20 6f 72 20 74 68 65 20 6c  nalized or the l
9d30: 61 73 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ast sqlite3_back
9d40: 75 70 20 69 73 0a 2a 2a 20 66 69 6e 69 73 68 65  up is.** finishe
9d50: 64 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  d.  The sqlite3_
9d60: 63 6c 6f 73 65 5f 76 32 28 29 20 69 6e 74 65 72  close_v2() inter
9d70: 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65 64  face is intended
9d80: 20 66 6f 72 20 75 73 65 20 77 69 74 68 0a 2a 2a   for use with.**
9d90: 20 68 6f 73 74 20 6c 61 6e 67 75 61 67 65 73 20   host languages 
9da0: 74 68 61 74 20 61 72 65 20 67 61 72 62 61 67 65  that are garbage
9db0: 20 63 6f 6c 6c 65 63 74 65 64 2c 20 61 6e 64 20   collected, and 
9dc0: 77 68 65 72 65 20 74 68 65 20 6f 72 64 65 72 20  where the order 
9dd0: 69 6e 20 77 68 69 63 68 0a 2a 2a 20 64 65 73 74  in which.** dest
9de0: 72 75 63 74 6f 72 73 20 61 72 65 20 63 61 6c 6c  ructors are call
9df0: 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79 2e  ed is arbitrary.
9e00: 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  .**.** Applicati
9e10: 6f 6e 73 20 73 68 6f 75 6c 64 20 5b 73 71 6c 69  ons should [sqli
9e20: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 7c 20 66  te3_finalize | f
9e30: 69 6e 61 6c 69 7a 65 5d 20 61 6c 6c 20 5b 70 72  inalize] all [pr
9e40: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
9e50: 73 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  s],.** [sqlite3_
9e60: 62 6c 6f 62 5f 63 6c 6f 73 65 20 7c 20 63 6c 6f  blob_close | clo
9e70: 73 65 5d 20 61 6c 6c 20 5b 42 4c 4f 42 20 68 61  se] all [BLOB ha
9e80: 6e 64 6c 65 73 5d 2c 20 61 6e 64 20 0a 2a 2a 20  ndles], and .** 
9e90: 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f  [sqlite3_backup_
9ea0: 66 69 6e 69 73 68 20 7c 20 66 69 6e 69 73 68 5d  finish | finish]
9eb0: 20 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 62 61   all [sqlite3_ba
9ec0: 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 73  ckup] objects as
9ed0: 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74 68  sociated.** with
9ee0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f   the [sqlite3] o
9ef0: 62 6a 65 63 74 20 70 72 69 6f 72 20 74 6f 20 61  bject prior to a
9f00: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 6c 6f  ttempting to clo
9f10: 73 65 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 20  se the object.  
9f20: 5e 49 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  ^If.** sqlite3_c
9f30: 6c 6f 73 65 5f 76 32 28 29 20 69 73 20 63 61 6c  lose_v2() is cal
9f40: 6c 65 64 20 6f 6e 20 61 20 5b 64 61 74 61 62 61  led on a [databa
9f50: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74  se connection] t
9f60: 68 61 74 20 73 74 69 6c 6c 20 68 61 73 0a 2a 2a  hat still has.**
9f70: 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 5b 70 72   outstanding [pr
9f80: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
9f90: 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65  s], [BLOB handle
9fa0: 73 5d 2c 20 61 6e 64 2f 6f 72 0a 2a 2a 20 5b 73  s], and/or.** [s
9fb0: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f  qlite3_backup] o
9fc0: 62 6a 65 63 74 73 20 74 68 65 6e 20 69 74 20 72  bjects then it r
9fd0: 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f  eturns [SQLITE_O
9fe0: 4b 5d 20 61 6e 64 20 74 68 65 20 64 65 61 6c 6c  K] and the deall
9ff0: 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 72 65  ocation.** of re
a000: 73 6f 75 72 63 65 73 20 69 73 20 64 65 66 65 72  sources is defer
a010: 72 65 64 20 75 6e 74 69 6c 20 61 6c 6c 20 5b 70  red until all [p
a020: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
a030: 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c  ts], [BLOB handl
a040: 65 73 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c  es],.** and [sql
a050: 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a  ite3_backup] obj
a060: 65 63 74 73 20 61 72 65 20 61 6c 73 6f 20 64 65  ects are also de
a070: 73 74 72 6f 79 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  stroyed..**.** ^
a080: 49 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20  If an [sqlite3] 
a090: 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72 6f  object is destro
a0a0: 79 65 64 20 77 68 69 6c 65 20 61 20 74 72 61 6e  yed while a tran
a0b0: 73 61 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 2c  saction is open,
a0c0: 0a 2a 2a 20 74 68 65 20 74 72 61 6e 73 61 63 74  .** the transact
a0d0: 69 6f 6e 20 69 73 20 61 75 74 6f 6d 61 74 69 63  ion is automatic
a0e0: 61 6c 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b  ally rolled back
a0f0: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 43 20 70 61  ..**.** The C pa
a100: 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
a110: 74 65 33 5f 63 6c 6f 73 65 28 43 29 5d 20 61 6e  te3_close(C)] an
a120: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
a130: 5f 76 32 28 43 29 5d 0a 2a 2a 20 6d 75 73 74 20  _v2(C)].** must 
a140: 62 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c  be either a NULL
a150: 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 6f 72 20 61  .** pointer or a
a160: 6e 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65  n [sqlite3] obje
a170: 63 74 20 70 6f 69 6e 74 65 72 20 6f 62 74 61 69  ct pointer obtai
a180: 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
a190: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
a1a0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d  qlite3_open16()]
a1b0: 2c 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  , or.** [sqlite3
a1c0: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 64  _open_v2()], and
a1d0: 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 20   not previously 
a1e0: 63 6c 6f 73 65 64 2e 0a 2a 2a 20 5e 43 61 6c 6c  closed..** ^Call
a1f0: 69 6e 67 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ing sqlite3_clos
a200: 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63  e() or sqlite3_c
a210: 6c 6f 73 65 5f 76 32 28 29 20 77 69 74 68 20 61  lose_v2() with a
a220: 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a   NULL pointer.**
a230: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 68   argument is a h
a240: 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 2e 0a 2a  armless no-op..*
a250: 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
a260: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 73   sqlite3_close(s
a270: 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
a280: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
a290: 5f 63 6c 6f 73 65 5f 76 32 28 73 71 6c 69 74 65  _close_v2(sqlite
a2a0: 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  3*);../*.** The 
a2b0: 74 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62  type for a callb
a2c0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a  ack function..**
a2d0: 20 54 68 69 73 20 69 73 20 6c 65 67 61 63 79 20   This is legacy 
a2e0: 61 6e 64 20 64 65 70 72 65 63 61 74 65 64 2e 20  and deprecated. 
a2f0: 20 49 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20   It is included 
a300: 66 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 0a 2a  for historical.*
a310: 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  * compatibility 
a320: 61 6e 64 20 69 73 20 6e 6f 74 20 64 6f 63 75 6d  and is not docum
a330: 65 6e 74 65 64 2e 0a 2a 2f 0a 74 79 70 65 64 65  ented..*/.typede
a340: 66 20 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f  f int (*sqlite3_
a350: 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c  callback)(void*,
a360: 69 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72  int,char**, char
a370: 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  **);../*.** CAPI
a380: 33 52 45 46 3a 20 4f 6e 65 2d 53 74 65 70 20 51  3REF: One-Step Q
a390: 75 65 72 79 20 45 78 65 63 75 74 69 6f 6e 20 49  uery Execution I
a3a0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 4d 45 54 48  nterface.** METH
a3b0: 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
a3c0: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78  * The sqlite3_ex
a3d0: 65 63 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ec() interface i
a3e0: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
a3f0: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a  wrapper around.*
a400: 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
a410: 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74  re_v2()], [sqlit
a420: 65 33 5f 73 74 65 70 28 29 5d 2c 20 61 6e 64 20  e3_step()], and 
a430: 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
a440: 65 28 29 5d 2c 0a 2a 2a 20 74 68 61 74 20 61 6c  e()],.** that al
a450: 6c 6f 77 73 20 61 6e 20 61 70 70 6c 69 63 61 74  lows an applicat
a460: 69 6f 6e 20 74 6f 20 72 75 6e 20 6d 75 6c 74 69  ion to run multi
a470: 70 6c 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ple statements o
a480: 66 20 53 51 4c 0a 2a 2a 20 77 69 74 68 6f 75 74  f SQL.** without
a490: 20 68 61 76 69 6e 67 20 74 6f 20 75 73 65 20 61   having to use a
a4a0: 20 6c 6f 74 20 6f 66 20 43 20 63 6f 64 65 2e 20   lot of C code. 
a4b0: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
a4c0: 74 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65 72  te3_exec() inter
a4d0: 66 61 63 65 20 72 75 6e 73 20 7a 65 72 6f 20 6f  face runs zero o
a4e0: 72 20 6d 6f 72 65 20 55 54 46 2d 38 20 65 6e 63  r more UTF-8 enc
a4f0: 6f 64 65 64 2c 0a 2a 2a 20 73 65 6d 69 63 6f 6c  oded,.** semicol
a500: 6f 6e 2d 73 65 70 61 72 61 74 65 20 53 51 4c 20  on-separate SQL 
a510: 73 74 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65  statements passe
a520: 64 20 69 6e 74 6f 20 69 74 73 20 32 6e 64 20 61  d into its 2nd a
a530: 72 67 75 6d 65 6e 74 2c 0a 2a 2a 20 69 6e 20 74  rgument,.** in t
a540: 68 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68  he context of th
a550: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
a560: 65 63 74 69 6f 6e 5d 20 70 61 73 73 65 64 20 69  ection] passed i
a570: 6e 20 61 73 20 69 74 73 20 31 73 74 0a 2a 2a 20  n as its 1st.** 
a580: 61 72 67 75 6d 65 6e 74 2e 20 20 5e 49 66 20 74  argument.  ^If t
a590: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
a5a0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 33 72 64 20  tion of the 3rd 
a5b0: 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73  argument to.** s
a5c0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
a5d0: 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   not NULL, then 
a5e0: 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 66 6f  it is invoked fo
a5f0: 72 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  r each result ro
a600: 77 0a 2a 2a 20 63 6f 6d 69 6e 67 20 6f 75 74 20  w.** coming out 
a610: 6f 66 20 74 68 65 20 65 76 61 6c 75 61 74 65 64  of the evaluated
a620: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
a630: 20 20 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d    ^The 4th argum
a640: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
a650: 33 5f 65 78 65 63 28 29 20 69 73 20 72 65 6c 61  3_exec() is rela
a660: 79 65 64 20 74 68 72 6f 75 67 68 20 74 6f 20 74  yed through to t
a670: 68 65 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  he 1st argument 
a680: 6f 66 20 65 61 63 68 0a 2a 2a 20 63 61 6c 6c 62  of each.** callb
a690: 61 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20  ack invocation. 
a6a0: 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63   ^If the callbac
a6b0: 6b 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c  k pointer to sql
a6c0: 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69  ite3_exec().** i
a6d0: 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20  s NULL, then no 
a6e0: 63 61 6c 6c 62 61 63 6b 20 69 73 20 65 76 65 72  callback is ever
a6f0: 20 69 6e 76 6f 6b 65 64 20 61 6e 64 20 72 65 73   invoked and res
a700: 75 6c 74 20 72 6f 77 73 20 61 72 65 0a 2a 2a 20  ult rows are.** 
a710: 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  ignored..**.** ^
a720: 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  If an error occu
a730: 72 73 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74  rs while evaluat
a740: 69 6e 67 20 74 68 65 20 53 51 4c 20 73 74 61 74  ing the SQL stat
a750: 65 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e  ements passed in
a760: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78  to.** sqlite3_ex
a770: 65 63 28 29 2c 20 74 68 65 6e 20 65 78 65 63 75  ec(), then execu
a780: 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72  tion of the curr
a790: 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 20 73 74  ent statement st
a7a0: 6f 70 73 20 61 6e 64 0a 2a 2a 20 73 75 62 73 65  ops and.** subse
a7b0: 71 75 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 73  quent statements
a7c0: 20 61 72 65 20 73 6b 69 70 70 65 64 2e 20 20 5e   are skipped.  ^
a7d0: 49 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d  If the 5th param
a7e0: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
a7f0: 65 78 65 63 28 29 0a 2a 2a 20 69 73 20 6e 6f 74  exec().** is not
a800: 20 4e 55 4c 4c 20 74 68 65 6e 20 61 6e 79 20 65   NULL then any e
a810: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20  rror message is 
a820: 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d  written into mem
a830: 6f 72 79 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20  ory obtained.** 
a840: 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61  from [sqlite3_ma
a850: 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 70 61 73 73  lloc()] and pass
a860: 65 64 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20  ed back through 
a870: 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65  the 5th paramete
a880: 72 2e 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 6d  r..** To avoid m
a890: 65 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 74 68 65  emory leaks, the
a8a0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f   application sho
a8b0: 75 6c 64 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69  uld invoke [sqli
a8c0: 74 65 33 5f 66 72 65 65 28 29 5d 0a 2a 2a 20 6f  te3_free()].** o
a8d0: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
a8e0: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
a8f0: 20 74 68 72 6f 75 67 68 20 74 68 65 20 35 74 68   through the 5th
a900: 20 70 61 72 61 6d 65 74 65 72 20 6f 66 0a 2a 2a   parameter of.**
a910: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
a920: 61 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20  after the error 
a930: 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69  message string i
a940: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6e 65 65 64  s no longer need
a950: 65 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 35  ed..** ^If the 5
a960: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
a970: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69  sqlite3_exec() i
a980: 73 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e 64 20 6e  s not NULL and n
a990: 6f 20 65 72 72 6f 72 73 0a 2a 2a 20 6f 63 63 75  o errors.** occu
a9a0: 72 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  r, then sqlite3_
a9b0: 65 78 65 63 28 29 20 73 65 74 73 20 74 68 65 20  exec() sets the 
a9c0: 70 6f 69 6e 74 65 72 20 69 6e 20 69 74 73 20 35  pointer in its 5
a9d0: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  th parameter to.
a9e0: 2a 2a 20 4e 55 4c 4c 20 62 65 66 6f 72 65 20 72  ** NULL before r
a9f0: 65 74 75 72 6e 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20  eturning..**.** 
aa00: 5e 49 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 65  ^If an sqlite3_e
aa10: 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 72  xec() callback r
aa20: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
aa30: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65   the sqlite3_exe
aa40: 63 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72  c().** routine r
aa50: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42  eturns SQLITE_AB
aa60: 4f 52 54 20 77 69 74 68 6f 75 74 20 69 6e 76 6f  ORT without invo
aa70: 6b 69 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63  king the callbac
aa80: 6b 20 61 67 61 69 6e 20 61 6e 64 0a 2a 2a 20 77  k again and.** w
aa90: 69 74 68 6f 75 74 20 72 75 6e 6e 69 6e 67 20 61  ithout running a
aaa0: 6e 79 20 73 75 62 73 65 71 75 65 6e 74 20 53 51  ny subsequent SQ
aab0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a  L statements..**
aac0: 0a 2a 2a 20 5e 54 68 65 20 32 6e 64 20 61 72 67  .** ^The 2nd arg
aad0: 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c  ument to the sql
aae0: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
aaf0: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73  back function is
ab00: 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
ab10: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
ab20: 20 72 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 33   result.  ^The 3
ab30: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rd argument to t
ab40: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
ab50: 29 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73  ).** callback is
ab60: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69   an array of poi
ab70: 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73  nters to strings
ab80: 20 6f 62 74 61 69 6e 65 64 20 61 73 20 69 66 20   obtained as if 
ab90: 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  from.** [sqlite3
aba0: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c  _column_text()],
abb0: 20 6f 6e 65 20 66 6f 72 20 65 61 63 68 20 63 6f   one for each co
abc0: 6c 75 6d 6e 2e 20 20 5e 49 66 20 61 6e 20 65 6c  lumn.  ^If an el
abd0: 65 6d 65 6e 74 20 6f 66 20 61 0a 2a 2a 20 72 65  ement of a.** re
abe0: 73 75 6c 74 20 72 6f 77 20 69 73 20 4e 55 4c 4c  sult row is NULL
abf0: 20 74 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73   then the corres
ac00: 70 6f 6e 64 69 6e 67 20 73 74 72 69 6e 67 20 70  ponding string p
ac10: 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65 0a 2a  ointer for the.*
ac20: 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  * sqlite3_exec()
ac30: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 20 4e   callback is a N
ac40: 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54  ULL pointer.  ^T
ac50: 68 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20  he 4th argument 
ac60: 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65  to the.** sqlite
ac70: 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63  3_exec() callbac
ac80: 6b 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66  k is an array of
ac90: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72   pointers to str
aca0: 69 6e 67 73 20 77 68 65 72 65 20 65 61 63 68 0a  ings where each.
acb0: 2a 2a 20 65 6e 74 72 79 20 72 65 70 72 65 73 65  ** entry represe
acc0: 6e 74 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nts the name of 
acd0: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 72 65  corresponding re
ace0: 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 61 73 20 6f  sult column as o
acf0: 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
ad00: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
ad10: 6e 61 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e  name()]..**.** ^
ad20: 49 66 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d  If the 2nd param
ad30: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
ad40: 65 78 65 63 28 29 20 69 73 20 61 20 4e 55 4c 4c  exec() is a NULL
ad50: 20 70 6f 69 6e 74 65 72 2c 20 61 20 70 6f 69 6e   pointer, a poin
ad60: 74 65 72 0a 2a 2a 20 74 6f 20 61 6e 20 65 6d 70  ter.** to an emp
ad70: 74 79 20 73 74 72 69 6e 67 2c 20 6f 72 20 61 20  ty string, or a 
ad80: 70 6f 69 6e 74 65 72 20 74 68 61 74 20 63 6f 6e  pointer that con
ad90: 74 61 69 6e 73 20 6f 6e 6c 79 20 77 68 69 74 65  tains only white
ada0: 73 70 61 63 65 20 61 6e 64 2f 6f 72 20 0a 2a 2a  space and/or .**
adb0: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 2c 20 74   SQL comments, t
adc0: 68 65 6e 20 6e 6f 20 53 51 4c 20 73 74 61 74 65  hen no SQL state
add0: 6d 65 6e 74 73 20 61 72 65 20 65 76 61 6c 75 61  ments are evalua
ade0: 74 65 64 20 61 6e 64 20 74 68 65 20 64 61 74 61  ted and the data
adf0: 62 61 73 65 0a 2a 2a 20 69 73 20 6e 6f 74 20 63  base.** is not c
ae00: 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65  hanged..**.** Re
ae10: 73 74 72 69 63 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a  strictions:.**.*
ae20: 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54  * <ul>.** <li> T
ae30: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
ae40: 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20  ust ensure that 
ae50: 74 68 65 20 31 73 74 20 70 61 72 61 6d 65 74 65  the 1st paramete
ae60: 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  r to sqlite3_exe
ae70: 63 28 29 0a 2a 2a 20 20 20 20 20 20 69 73 20 61  c().**      is a
ae80: 20 76 61 6c 69 64 20 61 6e 64 20 6f 70 65 6e 20   valid and open 
ae90: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
aea0: 74 69 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 54  tion]..** <li> T
aeb0: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
aec0: 75 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68  ust not close th
aed0: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
aee0: 65 63 74 69 6f 6e 5d 20 73 70 65 63 69 66 69 65  ection] specifie
aef0: 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 74 68 65  d by.**      the
af00: 20 31 73 74 20 70 61 72 61 6d 65 74 65 72 20 74   1st parameter t
af10: 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  o sqlite3_exec()
af20: 20 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65   while sqlite3_e
af30: 78 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67  xec() is running
af40: 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70  ..** <li> The ap
af50: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
af60: 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 53 51  ot modify the SQ
af70: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74  L statement text
af80: 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20   passed into.** 
af90: 20 20 20 20 20 74 68 65 20 32 6e 64 20 70 61 72       the 2nd par
afa0: 61 6d 65 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ameter of sqlite
afb0: 33 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73  3_exec() while s
afc0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
afd0: 20 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 2f 75   running..** </u
afe0: 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  l>.*/.SQLITE_API
aff0: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 65   int sqlite3_exe
b000: 63 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20  c(.  sqlite3*,  
b010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b030: 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62  /* An open datab
b040: 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ase */.  const c
b050: 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20  har *sql,       
b060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b070: 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65      /* SQL to be
b080: 20 65 76 61 6c 75 61 74 65 64 20 2a 2f 0a 20 20   evaluated */.  
b090: 69 6e 74 20 28 2a 63 61 6c 6c 62 61 63 6b 29 28  int (*callback)(
b0a0: 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a  void*,int,char**
b0b0: 2c 63 68 61 72 2a 2a 29 2c 20 20 2f 2a 20 43 61  ,char**),  /* Ca
b0c0: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
b0d0: 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20 20  */.  void *,    
b0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b100: 2f 2a 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  /* 1st argument 
b110: 74 6f 20 63 61 6c 6c 62 61 63 6b 20 2a 2f 0a 20  to callback */. 
b120: 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20 20   char **errmsg  
b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b140: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45              /* E
b150: 72 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e  rror msg written
b160: 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a   here */.);../*.
b170: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 73  ** CAPI3REF: Res
b180: 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59  ult Codes.** KEY
b190: 57 4f 52 44 53 3a 20 7b 72 65 73 75 6c 74 20 63  WORDS: {result c
b1a0: 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7d  ode definitions}
b1b0: 0a 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53 51 4c 69  .**.** Many SQLi
b1c0: 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  te functions ret
b1d0: 75 72 6e 20 61 6e 20 69 6e 74 65 67 65 72 20 72  urn an integer r
b1e0: 65 73 75 6c 74 20 63 6f 64 65 20 66 72 6f 6d 20  esult code from 
b1f0: 74 68 65 20 73 65 74 20 73 68 6f 77 6e 0a 2a 2a  the set shown.**
b200: 20 68 65 72 65 20 69 6e 20 6f 72 64 65 72 20 74   here in order t
b210: 6f 20 69 6e 64 69 63 61 74 65 20 73 75 63 63 65  o indicate succe
b220: 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 2a  ss or failure..*
b230: 2a 0a 2a 2a 20 4e 65 77 20 65 72 72 6f 72 20 63  *.** New error c
b240: 6f 64 65 73 20 6d 61 79 20 62 65 20 61 64 64 65  odes may be adde
b250: 64 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  d in future vers
b260: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
b270: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
b280: 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  [extended result
b290: 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e   code definition
b2a0: 73 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s].*/.#define SQ
b2b0: 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20  LITE_OK         
b2c0: 20 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73 73    0   /* Success
b2d0: 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 2f 2a  ful result */./*
b2e0: 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 65 72   beginning-of-er
b2f0: 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 23 64 65  ror-codes */.#de
b300: 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f  fine SQLITE_ERRO
b310: 52 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20  R        1   /* 
b320: 47 65 6e 65 72 69 63 20 65 72 72 6f 72 20 2a 2f  Generic error */
b330: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b340: 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20  INTERNAL     2  
b350: 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 6c 6f 67   /* Internal log
b360: 69 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69  ic error in SQLi
b370: 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  te */.#define SQ
b380: 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20  LITE_PERM       
b390: 20 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73 20    3   /* Access 
b3a0: 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65  permission denie
b3b0: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
b3c0: 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20  ITE_ABORT       
b3d0: 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b   4   /* Callback
b3e0: 20 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73 74   routine request
b3f0: 65 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a 23  ed an abort */.#
b400: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55  define SQLITE_BU
b410: 53 59 20 20 20 20 20 20 20 20 20 35 20 20 20 2f  SY         5   /
b420: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 66  * The database f
b430: 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f  ile is locked */
b440: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b450: 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20  LOCKED       6  
b460: 20 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20 74   /* A table in t
b470: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6c  he database is l
b480: 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  ocked */.#define
b490: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20   SQLITE_NOMEM   
b4a0: 20 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d 61       7   /* A ma
b4b0: 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a 2f  lloc() failed */
b4c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b4d0: 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20 20  READONLY     8  
b4e0: 20 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 77   /* Attempt to w
b4f0: 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20  rite a readonly 
b500: 64 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66  database */.#def
b510: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52  ine SQLITE_INTER
b520: 52 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20 4f  RUPT    9   /* O
b530: 70 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61  peration termina
b540: 74 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69  ted by sqlite3_i
b550: 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64 65  nterrupt()*/.#de
b560: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
b570: 52 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20  R       10   /* 
b580: 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69 73  Some kind of dis
b590: 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75  k I/O error occu
b5a0: 72 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rred */.#define 
b5b0: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20  SQLITE_CORRUPT  
b5c0: 20 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20 64     11   /* The d
b5d0: 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61  atabase disk ima
b5e0: 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 20  ge is malformed 
b5f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b600: 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32  E_NOTFOUND    12
b610: 20 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e 20 6f 70     /* Unknown op
b620: 63 6f 64 65 20 69 6e 20 73 71 6c 69 74 65 33 5f  code in sqlite3_
b630: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 20 2a  file_control() *
b640: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b650: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 31 33 20  _FULL        13 
b660: 20 20 2f 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66    /* Insertion f
b670: 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 64 61  ailed because da
b680: 74 61 62 61 73 65 20 69 73 20 66 75 6c 6c 20 2a  tabase is full *
b690: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b6a0: 5f 43 41 4e 54 4f 50 45 4e 20 20 20 20 31 34 20  _CANTOPEN    14 
b6b0: 20 20 2f 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f    /* Unable to o
b6c0: 70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  pen the database
b6d0: 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65   file */.#define
b6e0: 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c   SQLITE_PROTOCOL
b6f0: 20 20 20 20 31 35 20 20 20 2f 2a 20 44 61 74 61      15   /* Data
b700: 62 61 73 65 20 6c 6f 63 6b 20 70 72 6f 74 6f 63  base lock protoc
b710: 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  ol error */.#def
b720: 69 6e 65 20 53 51 4c 49 54 45 5f 45 4d 50 54 59  ine SQLITE_EMPTY
b730: 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 4e         16   /* N
b740: 6f 74 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69  ot used */.#defi
b750: 6e 65 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  ne SQLITE_SCHEMA
b760: 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20 54 68        17   /* Th
b770: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
b780: 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23 64 65  a changed */.#de
b790: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42  fine SQLITE_TOOB
b7a0: 49 47 20 20 20 20 20 20 31 38 20 20 20 2f 2a 20  IG      18   /* 
b7b0: 53 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 65  String or BLOB e
b7c0: 78 63 65 65 64 73 20 73 69 7a 65 20 6c 69 6d 69  xceeds size limi
b7d0: 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  t */.#define SQL
b7e0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 20  ITE_CONSTRAINT  
b7f0: 31 39 20 20 20 2f 2a 20 41 62 6f 72 74 20 64 75  19   /* Abort du
b800: 65 20 74 6f 20 63 6f 6e 73 74 72 61 69 6e 74 20  e to constraint 
b810: 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f 0a 23 64 65  violation */.#de
b820: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53 4d  fine SQLITE_MISM
b830: 41 54 43 48 20 20 20 20 32 30 20 20 20 2f 2a 20  ATCH    20   /* 
b840: 44 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74  Data type mismat
b850: 63 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ch */.#define SQ
b860: 4c 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20 20  LITE_MISUSE     
b870: 20 32 31 20 20 20 2f 2a 20 4c 69 62 72 61 72 79   21   /* Library
b880: 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74 6c   used incorrectl
b890: 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
b8a0: 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 20  ITE_NOLFS       
b8b0: 32 32 20 20 20 2f 2a 20 55 73 65 73 20 4f 53 20  22   /* Uses OS 
b8c0: 66 65 61 74 75 72 65 73 20 6e 6f 74 20 73 75 70  features not sup
b8d0: 70 6f 72 74 65 64 20 6f 6e 20 68 6f 73 74 20 2a  ported on host *
b8e0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b8f0: 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33 20  _AUTH        23 
b900: 20 20 2f 2a 20 41 75 74 68 6f 72 69 7a 61 74 69    /* Authorizati
b910: 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65  on denied */.#de
b920: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4f 52 4d  fine SQLITE_FORM
b930: 41 54 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20  AT      24   /* 
b940: 4e 6f 74 20 75 73 65 64 20 2a 2f 0a 23 64 65 66  Not used */.#def
b950: 69 6e 65 20 53 51 4c 49 54 45 5f 52 41 4e 47 45  ine SQLITE_RANGE
b960: 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 32         25   /* 2
b970: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
b980: 73 71 6c 69 74 65 33 5f 62 69 6e 64 20 6f 75 74  sqlite3_bind out
b990: 20 6f 66 20 72 61 6e 67 65 20 2a 2f 0a 23 64 65   of range */.#de
b9a0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 41  fine SQLITE_NOTA
b9b0: 44 42 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20  DB      26   /* 
b9c0: 46 69 6c 65 20 6f 70 65 6e 65 64 20 74 68 61 74  File opened that
b9d0: 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61   is not a databa
b9e0: 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69  se file */.#defi
b9f0: 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45  ne SQLITE_NOTICE
ba00: 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 4e 6f        27   /* No
ba10: 74 69 66 69 63 61 74 69 6f 6e 73 20 66 72 6f 6d  tifications from
ba20: 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 2a   sqlite3_log() *
ba30: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
ba40: 5f 57 41 52 4e 49 4e 47 20 20 20 20 20 32 38 20  _WARNING     28 
ba50: 20 20 2f 2a 20 57 61 72 6e 69 6e 67 73 20 66 72    /* Warnings fr
ba60: 6f 6d 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  om sqlite3_log()
ba70: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
ba80: 54 45 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31  TE_ROW         1
ba90: 30 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73  00  /* sqlite3_s
baa0: 74 65 70 28 29 20 68 61 73 20 61 6e 6f 74 68 65  tep() has anothe
bab0: 72 20 72 6f 77 20 72 65 61 64 79 20 2a 2f 0a 23  r row ready */.#
bac0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 4f  define SQLITE_DO
bad0: 4e 45 20 20 20 20 20 20 20 20 31 30 31 20 20 2f  NE        101  /
bae0: 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  * sqlite3_step()
baf0: 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 65 78   has finished ex
bb00: 65 63 75 74 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e  ecuting */./* en
bb10: 64 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  d-of-error-codes
bb20: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
bb30: 52 45 46 3a 20 45 78 74 65 6e 64 65 64 20 52 65  REF: Extended Re
bb40: 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45  sult Codes.** KE
bb50: 59 57 4f 52 44 53 3a 20 7b 65 78 74 65 6e 64 65  YWORDS: {extende
bb60: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65  d result code de
bb70: 66 69 6e 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a  finitions}.**.**
bb80: 20 49 6e 20 69 74 73 20 64 65 66 61 75 6c 74 20   In its default 
bb90: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 53  configuration, S
bba0: 51 4c 69 74 65 20 41 50 49 20 72 6f 75 74 69 6e  QLite API routin
bbb0: 65 73 20 72 65 74 75 72 6e 20 6f 6e 65 20 6f 66  es return one of
bbc0: 20 33 30 20 69 6e 74 65 67 65 72 0a 2a 2a 20 5b   30 integer.** [
bbd0: 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 2e 20 20  result codes].  
bbe0: 48 6f 77 65 76 65 72 2c 20 65 78 70 65 72 69 65  However, experie
bbf0: 6e 63 65 20 68 61 73 20 73 68 6f 77 6e 20 74 68  nce has shown th
bc00: 61 74 20 6d 61 6e 79 20 6f 66 0a 2a 2a 20 74 68  at many of.** th
bc10: 65 73 65 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ese result codes
bc20: 20 61 72 65 20 74 6f 6f 20 63 6f 61 72 73 65 2d   are too coarse-
bc30: 67 72 61 69 6e 65 64 2e 20 20 54 68 65 79 20 64  grained.  They d
bc40: 6f 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 73  o not provide as
bc50: 0a 2a 2a 20 6d 75 63 68 20 69 6e 66 6f 72 6d 61  .** much informa
bc60: 74 69 6f 6e 20 61 62 6f 75 74 20 70 72 6f 62 6c  tion about probl
bc70: 65 6d 73 20 61 73 20 70 72 6f 67 72 61 6d 6d 65  ems as programme
bc80: 72 73 20 6d 69 67 68 74 20 6c 69 6b 65 2e 20 20  rs might like.  
bc90: 49 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 0a  In an effort to.
bca0: 2a 2a 20 61 64 64 72 65 73 73 20 74 68 69 73 2c  ** address this,
bcb0: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20   newer versions 
bcc0: 6f 66 20 53 51 4c 69 74 65 20 28 76 65 72 73 69  of SQLite (versi
bcd0: 6f 6e 20 33 2e 33 2e 38 20 5b 64 61 74 65 6f 66  on 3.3.8 [dateof
bce0: 3a 33 2e 33 2e 38 5d 0a 2a 2a 20 61 6e 64 20 6c  :3.3.8].** and l
bcf0: 61 74 65 72 29 20 69 6e 63 6c 75 64 65 0a 2a 2a  ater) include.**
bd00: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 64 64   support for add
bd10: 69 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 20 63  itional result c
bd20: 6f 64 65 73 20 74 68 61 74 20 70 72 6f 76 69 64  odes that provid
bd30: 65 20 6d 6f 72 65 20 64 65 74 61 69 6c 65 64 20  e more detailed 
bd40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 61  information.** a
bd50: 62 6f 75 74 20 65 72 72 6f 72 73 2e 20 54 68 65  bout errors. The
bd60: 73 65 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  se [extended res
bd70: 75 6c 74 20 63 6f 64 65 73 5d 20 61 72 65 20 65  ult codes] are e
bd80: 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61 62 6c  nabled or disabl
bd90: 65 64 0a 2a 2a 20 6f 6e 20 61 20 70 65 72 20 64  ed.** on a per d
bda0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
bdb0: 6f 6e 20 62 61 73 69 73 20 75 73 69 6e 67 20 74  on basis using t
bdc0: 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  he.** [sqlite3_e
bdd0: 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
bde0: 6f 64 65 73 28 29 5d 20 41 50 49 2e 20 20 4f 72  odes()] API.  Or
bdf0: 2c 20 74 68 65 20 65 78 74 65 6e 64 65 64 20 63  , the extended c
be00: 6f 64 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 6d  ode for.** the m
be10: 6f 73 74 20 72 65 63 65 6e 74 20 65 72 72 6f 72  ost recent error
be20: 20 63 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64   can be obtained
be30: 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74   using.** [sqlit
be40: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
be50: 6f 64 65 28 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69  ode()]..*/.#defi
be60: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
be70: 52 45 41 44 20 20 20 20 20 20 20 20 20 20 20 20  READ            
be80: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
be90: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
bea0: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53  e SQLITE_IOERR_S
beb0: 48 4f 52 54 5f 52 45 41 44 20 20 20 20 20 20 20  HORT_READ       
bec0: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
bed0: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
bee0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57 52   SQLITE_IOERR_WR
bef0: 49 54 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ITE             
bf00: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
bf10: 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (3<<8)).#define 
bf20: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 59  SQLITE_IOERR_FSY
bf30: 4e 43 20 20 20 20 20 20 20 20 20 20 20 20 20 28  NC             (
bf40: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
bf50: 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  4<<8)).#define S
bf60: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52 5f  QLITE_IOERR_DIR_
bf70: 46 53 59 4e 43 20 20 20 20 20 20 20 20 20 28 53  FSYNC         (S
bf80: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 35  QLITE_IOERR | (5
bf90: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
bfa0: 4c 49 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43  LITE_IOERR_TRUNC
bfb0: 41 54 45 20 20 20 20 20 20 20 20 20 20 28 53 51  ATE          (SQ
bfc0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 36 3c  LITE_IOERR | (6<
bfd0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
bfe0: 49 54 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20  ITE_IOERR_FSTAT 
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
c000: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c  ITE_IOERR | (7<<
c010: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c020: 54 45 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20  TE_IOERR_UNLOCK 
c030: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
c040: 54 45 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c 38  TE_IOERR | (8<<8
c050: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c060: 45 5f 49 4f 45 52 52 5f 52 44 4c 4f 43 4b 20 20  E_IOERR_RDLOCK  
c070: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c080: 45 5f 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38 29  E_IOERR | (9<<8)
c090: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c0a0: 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 20 20 20  _IOERR_DELETE   
c0b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c0c0: 5f 49 4f 45 52 52 20 7c 20 28 31 30 3c 3c 38 29  _IOERR | (10<<8)
c0d0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c0e0: 5f 49 4f 45 52 52 5f 42 4c 4f 43 4b 45 44 20 20  _IOERR_BLOCKED  
c0f0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c100: 5f 49 4f 45 52 52 20 7c 20 28 31 31 3c 3c 38 29  _IOERR | (11<<8)
c110: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c120: 5f 49 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20 20 20  _IOERR_NOMEM    
c130: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c140: 5f 49 4f 45 52 52 20 7c 20 28 31 32 3c 3c 38 29  _IOERR | (12<<8)
c150: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c160: 5f 49 4f 45 52 52 5f 41 43 43 45 53 53 20 20 20  _IOERR_ACCESS   
c170: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c180: 5f 49 4f 45 52 52 20 7c 20 28 31 33 3c 3c 38 29  _IOERR | (13<<8)
c190: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c1a0: 5f 49 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45  _IOERR_CHECKRESE
c1b0: 52 56 45 44 4c 4f 43 4b 20 28 53 51 4c 49 54 45  RVEDLOCK (SQLITE
c1c0: 5f 49 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38 29  _IOERR | (14<<8)
c1d0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c1e0: 5f 49 4f 45 52 52 5f 4c 4f 43 4b 20 20 20 20 20  _IOERR_LOCK     
c1f0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c200: 5f 49 4f 45 52 52 20 7c 20 28 31 35 3c 3c 38 29  _IOERR | (15<<8)
c210: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c220: 5f 49 4f 45 52 52 5f 43 4c 4f 53 45 20 20 20 20  _IOERR_CLOSE    
c230: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c240: 5f 49 4f 45 52 52 20 7c 20 28 31 36 3c 3c 38 29  _IOERR | (16<<8)
c250: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c260: 5f 49 4f 45 52 52 5f 44 49 52 5f 43 4c 4f 53 45  _IOERR_DIR_CLOSE
c270: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c280: 5f 49 4f 45 52 52 20 7c 20 28 31 37 3c 3c 38 29  _IOERR | (17<<8)
c290: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c2a0: 5f 49 4f 45 52 52 5f 53 48 4d 4f 50 45 4e 20 20  _IOERR_SHMOPEN  
c2b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c2c0: 5f 49 4f 45 52 52 20 7c 20 28 31 38 3c 3c 38 29  _IOERR | (18<<8)
c2d0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c2e0: 5f 49 4f 45 52 52 5f 53 48 4d 53 49 5a 45 20 20  _IOERR_SHMSIZE  
c2f0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c300: 5f 49 4f 45 52 52 20 7c 20 28 31 39 3c 3c 38 29  _IOERR | (19<<8)
c310: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c320: 5f 49 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 20  _IOERR_SHMLOCK  
c330: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c340: 5f 49 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38 29  _IOERR | (20<<8)
c350: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c360: 5f 49 4f 45 52 52 5f 53 48 4d 4d 41 50 20 20 20  _IOERR_SHMMAP   
c370: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c380: 5f 49 4f 45 52 52 20 7c 20 28 32 31 3c 3c 38 29  _IOERR | (21<<8)
c390: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c3a0: 5f 49 4f 45 52 52 5f 53 45 45 4b 20 20 20 20 20  _IOERR_SEEK     
c3b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c3c0: 5f 49 4f 45 52 52 20 7c 20 28 32 32 3c 3c 38 29  _IOERR | (22<<8)
c3d0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c3e0: 5f 49 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e 4f  _IOERR_DELETE_NO
c3f0: 45 4e 54 20 20 20 20 20 20 28 53 51 4c 49 54 45  ENT      (SQLITE
c400: 5f 49 4f 45 52 52 20 7c 20 28 32 33 3c 3c 38 29  _IOERR | (23<<8)
c410: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c420: 5f 49 4f 45 52 52 5f 4d 4d 41 50 20 20 20 20 20  _IOERR_MMAP     
c430: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c440: 5f 49 4f 45 52 52 20 7c 20 28 32 34 3c 3c 38 29  _IOERR | (24<<8)
c450: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c460: 5f 49 4f 45 52 52 5f 47 45 54 54 45 4d 50 50 41  _IOERR_GETTEMPPA
c470: 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  TH       (SQLITE
c480: 5f 49 4f 45 52 52 20 7c 20 28 32 35 3c 3c 38 29  _IOERR | (25<<8)
c490: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c4a0: 5f 49 4f 45 52 52 5f 43 4f 4e 56 50 41 54 48 20  _IOERR_CONVPATH 
c4b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c4c0: 5f 49 4f 45 52 52 20 7c 20 28 32 36 3c 3c 38 29  _IOERR | (26<<8)
c4d0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c4e0: 5f 49 4f 45 52 52 5f 56 4e 4f 44 45 20 20 20 20  _IOERR_VNODE    
c4f0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c500: 5f 49 4f 45 52 52 20 7c 20 28 32 37 3c 3c 38 29  _IOERR | (27<<8)
c510: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c520: 5f 49 4f 45 52 52 5f 41 55 54 48 20 20 20 20 20  _IOERR_AUTH     
c530: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c540: 5f 49 4f 45 52 52 20 7c 20 28 32 38 3c 3c 38 29  _IOERR | (28<<8)
c550: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c560: 5f 4c 4f 43 4b 45 44 5f 53 48 41 52 45 44 43 41  _LOCKED_SHAREDCA
c570: 43 48 45 20 20 20 20 20 20 28 53 51 4c 49 54 45  CHE      (SQLITE
c580: 5f 4c 4f 43 4b 45 44 20 7c 20 20 28 31 3c 3c 38  _LOCKED |  (1<<8
c590: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c5a0: 45 5f 42 55 53 59 5f 52 45 43 4f 56 45 52 59 20  E_BUSY_RECOVERY 
c5b0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c5c0: 45 5f 42 55 53 59 20 20 20 7c 20 20 28 31 3c 3c  E_BUSY   |  (1<<
c5d0: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c5e0: 54 45 5f 42 55 53 59 5f 53 4e 41 50 53 48 4f 54  TE_BUSY_SNAPSHOT
c5f0: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
c600: 54 45 5f 42 55 53 59 20 20 20 7c 20 20 28 32 3c  TE_BUSY   |  (2<
c610: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c620: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e 4f 54  ITE_CANTOPEN_NOT
c630: 45 4d 50 44 49 52 20 20 20 20 20 20 28 53 51 4c  EMPDIR      (SQL
c640: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28  ITE_CANTOPEN | (
c650: 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  1<<8)).#define S
c660: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 49  QLITE_CANTOPEN_I
c670: 53 44 49 52 20 20 20 20 20 20 20 20 20 20 28 53  SDIR          (S
c680: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c  QLITE_CANTOPEN |
c690: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
c6a0: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
c6b0: 5f 46 55 4c 4c 50 41 54 48 20 20 20 20 20 20 20  _FULLPATH       
c6c0: 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  (SQLITE_CANTOPEN
c6d0: 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65 66 69   | (3<<8)).#defi
c6e0: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
c6f0: 45 4e 5f 43 4f 4e 56 50 41 54 48 20 20 20 20 20  EN_CONVPATH     
c700: 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    (SQLITE_CANTOP
c710: 45 4e 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65  EN | (4<<8)).#de
c720: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52  fine SQLITE_CORR
c730: 55 50 54 5f 56 54 41 42 20 20 20 20 20 20 20 20  UPT_VTAB        
c740: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 52 52      (SQLITE_CORR
c750: 55 50 54 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  UPT | (1<<8)).#d
c760: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
c770: 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 20  DONLY_RECOVERY  
c780: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
c790: 44 4f 4e 4c 59 20 7c 20 28 31 3c 3c 38 29 29 0a  DONLY | (1<<8)).
c7a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
c7b0: 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b  EADONLY_CANTLOCK
c7c0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52         (SQLITE_R
c7d0: 45 41 44 4f 4e 4c 59 20 7c 20 28 32 3c 3c 38 29  EADONLY | (2<<8)
c7e0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c7f0: 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41  _READONLY_ROLLBA
c800: 43 4b 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  CK       (SQLITE
c810: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c  _READONLY | (3<<
c820: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c830: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f  TE_READONLY_DBMO
c840: 56 45 44 20 20 20 20 20 20 20 20 28 53 51 4c 49  VED        (SQLI
c850: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 34  TE_READONLY | (4
c860: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c870: 4c 49 54 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42  LITE_ABORT_ROLLB
c880: 41 43 4b 20 20 20 20 20 20 20 20 20 20 28 53 51  ACK          (SQ
c890: 4c 49 54 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c  LITE_ABORT | (2<
c8a0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c8b0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43  ITE_CONSTRAINT_C
c8c0: 48 45 43 4b 20 20 20 20 20 20 20 20 28 53 51 4c  HECK        (SQL
c8d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
c8e0: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
c8f0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
c900: 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20  NT_COMMITHOOK   
c910: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
c920: 4e 54 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  NT | (2<<8)).#de
c930: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
c940: 54 52 41 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45  TRAINT_FOREIGNKE
c950: 59 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  Y   (SQLITE_CONS
c960: 54 52 41 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29  TRAINT | (3<<8))
c970: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c980: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 55 4e 43 54  CONSTRAINT_FUNCT
c990: 49 4f 4e 20 20 20 20 20 28 53 51 4c 49 54 45 5f  ION     (SQLITE_
c9a0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 34 3c  CONSTRAINT | (4<
c9b0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c9c0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e  ITE_CONSTRAINT_N
c9d0: 4f 54 4e 55 4c 4c 20 20 20 20 20 20 28 53 51 4c  OTNULL      (SQL
c9e0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
c9f0: 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (5<<8)).#define
ca00: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
ca10: 4e 54 5f 50 52 49 4d 41 52 59 4b 45 59 20 20 20  NT_PRIMARYKEY   
ca20: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
ca30: 4e 54 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65  NT | (6<<8)).#de
ca40: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
ca50: 54 52 41 49 4e 54 5f 54 52 49 47 47 45 52 20 20  TRAINT_TRIGGER  
ca60: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
ca70: 54 52 41 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29  TRAINT | (7<<8))
ca80: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ca90: 43 4f 4e 53 54 52 41 49 4e 54 5f 55 4e 49 51 55  CONSTRAINT_UNIQU
caa0: 45 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  E       (SQLITE_
cab0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 38 3c  CONSTRAINT | (8<
cac0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cad0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56  ITE_CONSTRAINT_V
cae0: 54 41 42 20 20 20 20 20 20 20 20 20 28 53 51 4c  TAB         (SQL
caf0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cb00: 20 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (9<<8)).#define
cb10: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cb20: 4e 54 5f 52 4f 57 49 44 20 20 20 20 20 20 20 20  NT_ROWID        
cb30: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cb40: 4e 54 20 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65  NT |(10<<8)).#de
cb50: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cb60: 43 45 5f 52 45 43 4f 56 45 52 5f 57 41 4c 20 20  CE_RECOVER_WAL  
cb70: 20 20 20 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49      (SQLITE_NOTI
cb80: 43 45 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  CE | (1<<8)).#de
cb90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49  fine SQLITE_NOTI
cba0: 43 45 5f 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42  CE_RECOVER_ROLLB
cbb0: 41 43 4b 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49  ACK (SQLITE_NOTI
cbc0: 43 45 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65  CE | (2<<8)).#de
cbd0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e  fine SQLITE_WARN
cbe0: 49 4e 47 5f 41 55 54 4f 49 4e 44 45 58 20 20 20  ING_AUTOINDEX   
cbf0: 20 20 20 20 28 53 51 4c 49 54 45 5f 57 41 52 4e      (SQLITE_WARN
cc00: 49 4e 47 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  ING | (1<<8)).#d
cc10: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 55 54  efine SQLITE_AUT
cc20: 48 5f 55 53 45 52 20 20 20 20 20 20 20 20 20 20  H_USER          
cc30: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 41 55 54       (SQLITE_AUT
cc40: 48 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66  H | (1<<8)).#def
cc50: 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f  ine SQLITE_OK_LO
cc60: 41 44 5f 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20  AD_PERMANENTLY  
cc70: 20 20 20 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20     (SQLITE_OK | 
cc80: 28 31 3c 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43  (1<<8))../*.** C
cc90: 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 46  API3REF: Flags F
cca0: 6f 72 20 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65  or File Open Ope
ccb0: 72 61 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68  rations.**.** Th
ccc0: 65 73 65 20 62 69 74 20 76 61 6c 75 65 73 20 61  ese bit values a
ccd0: 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
cce0: 75 73 65 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72  use in the.** 3r
ccf0: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  d parameter to t
cd00: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
cd10: 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
cd20: 20 61 6e 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34   and.** in the 4
cd30: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
cd40: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
cd50: 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a  .xOpen] method..
cd60: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cd70: 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20  E_OPEN_READONLY 
cd80: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cd90: 30 31 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  01  /* Ok for sq
cda0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
cdb0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cdc0: 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
cdd0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cde0: 30 32 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  02  /* Ok for sq
cdf0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
ce00: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
ce10: 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 20 20 20  E_OPEN_CREATE   
ce20: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
ce30: 30 34 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  04  /* Ok for sq
ce40: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
ce50: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
ce60: 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
ce70: 4c 4f 53 45 20 20 20 20 30 78 30 30 30 30 30 30  LOSE    0x000000
ce80: 30 38 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  08  /* VFS only 
ce90: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cea0: 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45  E_OPEN_EXCLUSIVE
ceb0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cec0: 31 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  10  /* VFS only 
ced0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
cee0: 45 5f 4f 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59  E_OPEN_AUTOPROXY
cef0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cf00: 32 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  20  /* VFS only 
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 55 52 49 20 20 20 20 20 20  E_OPEN_URI      
cf30: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cf40: 34 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  40  /* 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 4d 45 4d 4f 52 59 20 20 20  E_OPEN_MEMORY   
cf80: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
cf90: 38 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  80  /* 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 4d 41 49 4e 5f 44 42 20 20  E_OPEN_MAIN_DB  
cfd0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 31          0x000001
cfe0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
cff0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d000: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42 20 20  E_OPEN_TEMP_DB  
d010: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32          0x000002
d020: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d030: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d040: 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54  E_OPEN_TRANSIENT
d050: 5f 44 42 20 20 20 20 20 30 78 30 30 30 30 30 34  _DB     0x000004
d060: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d070: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d080: 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52  E_OPEN_MAIN_JOUR
d090: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 30 38  NAL     0x000008
d0a0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d0b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d0c0: 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52  E_OPEN_TEMP_JOUR
d0d0: 4e 41 4c 20 20 20 20 20 30 78 30 30 30 30 31 30  NAL     0x000010
d0e0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d0f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d100: 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41  E_OPEN_SUBJOURNA
d110: 4c 20 20 20 20 20 20 20 30 78 30 30 30 30 32 30  L       0x000020
d120: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d130: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d140: 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f  E_OPEN_MASTER_JO
d150: 55 52 4e 41 4c 20 20 20 30 78 30 30 30 30 34 30  URNAL   0x000040
d160: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d170: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d180: 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20  E_OPEN_NOMUTEX  
d190: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 38 30          0x000080
d1a0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d1b0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d1c0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d1d0: 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
d1e0: 20 20 20 20 20 20 20 20 30 78 30 30 30 31 30 30          0x000100
d1f0: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d200: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d210: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d220: 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41 43  E_OPEN_SHAREDCAC
d230: 48 45 20 20 20 20 20 20 30 78 30 30 30 32 30 30  HE      0x000200
d240: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d250: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
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 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
d280: 43 48 45 20 20 20 20 20 30 78 30 30 30 34 30 30  CHE     0x000400
d290: 30 30 20 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71  00  /* Ok for sq
d2a0: 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
d2b0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
d2c0: 45 5f 4f 50 45 4e 5f 57 41 4c 20 20 20 20 20 20  E_OPEN_WAL      
d2d0: 20 20 20 20 20 20 20 20 30 78 30 30 30 38 30 30          0x000800
d2e0: 30 30 20 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20  00  /* VFS only 
d2f0: 2a 2f 0a 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a  */../* Reserved:
d300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d310: 20 20 20 20 20 20 20 20 20 30 78 30 30 46 30 30           0x00F00
d320: 30 30 30 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41  000 */../*.** CA
d330: 50 49 33 52 45 46 3a 20 44 65 76 69 63 65 20 43  PI3REF: Device C
d340: 68 61 72 61 63 74 65 72 69 73 74 69 63 73 0a 2a  haracteristics.*
d350: 2a 0a 2a 2a 20 54 68 65 20 78 44 65 76 69 63 65  *.** The xDevice
d360: 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
d370: 6d 65 74 68 6f 64 20 6f 66 20 74 68 65 20 5b 73  method of the [s
d380: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
d390: 73 5d 0a 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74  s].** object ret
d3a0: 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20  urns an integer 
d3b0: 77 68 69 63 68 20 69 73 20 61 20 76 65 63 74 6f  which is a vecto
d3c0: 72 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 62 69  r of these.** bi
d3d0: 74 20 76 61 6c 75 65 73 20 65 78 70 72 65 73 73  t values express
d3e0: 69 6e 67 20 49 2f 4f 20 63 68 61 72 61 63 74 65  ing I/O characte
d3f0: 72 69 73 74 69 63 73 20 6f 66 20 74 68 65 20 6d  ristics of the m
d400: 61 73 73 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64  ass storage.** d
d410: 65 76 69 63 65 20 74 68 61 74 20 68 6f 6c 64 73  evice that holds
d420: 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 74   the file that t
d430: 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
d440: 65 74 68 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72  ethods].** refer
d450: 73 20 74 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  s to..**.** The 
d460: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
d470: 4d 49 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61  MIC property mea
d480: 6e 73 20 74 68 61 74 20 61 6c 6c 20 77 72 69 74  ns that all writ
d490: 65 73 20 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a  es of.** any siz
d4a0: 65 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  e are atomic.  T
d4b0: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d4c0: 41 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73  ATOMICnnn values
d4d0: 0a 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 77 72  .** mean that wr
d4e0: 69 74 65 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74  ites of blocks t
d4f0: 68 61 74 20 61 72 65 20 6e 6e 6e 20 62 79 74 65  hat are nnn byte
d500: 73 20 69 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a  s in size and.**
d510: 20 61 72 65 20 61 6c 69 67 6e 65 64 20 74 6f 20   are aligned to 
d520: 61 6e 20 61 64 64 72 65 73 73 20 77 68 69 63 68  an address which
d530: 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6d   is an integer m
d540: 75 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e  ultiple of.** nn
d550: 6e 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54  n are atomic.  T
d560: 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  he SQLITE_IOCAP_
d570: 53 41 46 45 5f 41 50 50 45 4e 44 20 76 61 6c 75  SAFE_APPEND valu
d580: 65 20 6d 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20  e means.** that 
d590: 77 68 65 6e 20 64 61 74 61 20 69 73 20 61 70 70  when data is app
d5a0: 65 6e 64 65 64 20 74 6f 20 61 20 66 69 6c 65 2c  ended to a file,
d5b0: 20 74 68 65 20 64 61 74 61 20 69 73 20 61 70 70   the data is app
d5c0: 65 6e 64 65 64 0a 2a 2a 20 66 69 72 73 74 20 74  ended.** first t
d5d0: 68 65 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20  hen the size of 
d5e0: 74 68 65 20 66 69 6c 65 20 69 73 20 65 78 74 65  the file is exte
d5f0: 6e 64 65 64 2c 20 6e 65 76 65 72 20 74 68 65 20  nded, never the 
d600: 6f 74 68 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f  other.** way aro
d610: 75 6e 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45  und.  The SQLITE
d620: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
d630: 4c 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73  L property means
d640: 20 74 68 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61   that.** informa
d650: 74 69 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20  tion is written 
d660: 74 6f 20 64 69 73 6b 20 69 6e 20 74 68 65 20 73  to disk in the s
d670: 61 6d 65 20 6f 72 64 65 72 20 61 73 20 63 61 6c  ame order as cal
d680: 6c 73 0a 2a 2a 20 74 6f 20 78 57 72 69 74 65 28  ls.** to xWrite(
d690: 29 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49  ).  The SQLITE_I
d6a0: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
d6b0: 56 45 52 57 52 49 54 45 20 70 72 6f 70 65 72 74  VERWRITE propert
d6c0: 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20  y means that.** 
d6d0: 61 66 74 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c  after reboot fol
d6e0: 6c 6f 77 69 6e 67 20 61 20 63 72 61 73 68 20 6f  lowing a crash o
d6f0: 72 20 70 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68  r power loss, th
d700: 65 20 6f 6e 6c 79 20 62 79 74 65 73 20 69 6e 20  e only bytes in 
d710: 61 0a 2a 2a 20 66 69 6c 65 20 74 68 61 74 20 77  a.** file that w
d720: 65 72 65 20 77 72 69 74 74 65 6e 20 61 74 20 74  ere written at t
d730: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c  he application l
d740: 65 76 65 6c 20 6d 69 67 68 74 20 68 61 76 65 20  evel might have 
d750: 63 68 61 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74  changed.** and t
d760: 68 61 74 20 61 64 6a 61 63 65 6e 74 20 62 79 74  hat adjacent byt
d770: 65 73 2c 20 65 76 65 6e 20 62 79 74 65 73 20 77  es, even bytes w
d780: 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 73  ithin the same s
d790: 65 63 74 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61  ector are.** gua
d7a0: 72 61 6e 74 65 65 64 20 74 6f 20 62 65 20 75 6e  ranteed to be un
d7b0: 63 68 61 6e 67 65 64 2e 20 20 54 68 65 20 53 51  changed.  The SQ
d7c0: 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c  LITE_IOCAP_UNDEL
d7d0: 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e  ETABLE_WHEN_OPEN
d7e0: 0a 2a 2a 20 66 6c 61 67 20 69 6e 64 69 63 61 74  .** flag indicat
d7f0: 65 73 20 74 68 61 74 20 61 20 66 69 6c 65 20 63  es that a file c
d800: 61 6e 6e 6f 74 20 62 65 20 64 65 6c 65 74 65 64  annot be deleted
d810: 20 77 68 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65   when open.  The
d820: 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  .** SQLITE_IOCAP
d830: 5f 49 4d 4d 55 54 41 42 4c 45 20 66 6c 61 67 20  _IMMUTABLE flag 
d840: 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74  indicates that t
d850: 68 65 20 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a  he file is on.**
d860: 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61   read-only media
d870: 20 61 6e 64 20 63 61 6e 6e 6f 74 20 62 65 20 63   and cannot be c
d880: 68 61 6e 67 65 64 20 65 76 65 6e 20 62 79 20 70  hanged even by p
d890: 72 6f 63 65 73 73 65 73 20 77 69 74 68 0a 2a 2a  rocesses with.**
d8a0: 20 65 6c 65 76 61 74 65 64 20 70 72 69 76 69 6c   elevated privil
d8b0: 65 67 65 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  eges..*/.#define
d8c0: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54   SQLITE_IOCAP_AT
d8d0: 4f 4d 49 43 20 20 20 20 20 20 20 20 20 20 20 20  OMIC            
d8e0: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 31 0a       0x00000001.
d8f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
d900: 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31 32 20 20  OCAP_ATOMIC512  
d910: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
d920: 30 30 30 30 30 32 0a 23 64 65 66 69 6e 65 20 53  000002.#define S
d930: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
d940: 49 43 31 4b 20 20 20 20 20 20 20 20 20 20 20 20  IC1K            
d950: 20 20 20 30 78 30 30 30 30 30 30 30 34 0a 23 64     0x00000004.#d
d960: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
d970: 41 50 5f 41 54 4f 4d 49 43 32 4b 20 20 20 20 20  AP_ATOMIC2K     
d980: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
d990: 30 30 30 38 0a 23 64 65 66 69 6e 65 20 53 51 4c  0008.#define SQL
d9a0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
d9b0: 34 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  4K              
d9c0: 20 30 78 30 30 30 30 30 30 31 30 0a 23 64 65 66   0x00000010.#def
d9d0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
d9e0: 5f 41 54 4f 4d 49 43 38 4b 20 20 20 20 20 20 20  _ATOMIC8K       
d9f0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
da00: 32 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  20.#define SQLIT
da10: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 36  E_IOCAP_ATOMIC16
da20: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30  K              0
da30: 78 30 30 30 30 30 30 34 30 0a 23 64 65 66 69 6e  x00000040.#defin
da40: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
da50: 54 4f 4d 49 43 33 32 4b 20 20 20 20 20 20 20 20  TOMIC32K        
da60: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 38 30        0x00000080
da70: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
da80: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36 34 4b 20  IOCAP_ATOMIC64K 
da90: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
daa0: 30 30 30 30 31 30 30 0a 23 64 65 66 69 6e 65 20  0000100.#define 
dab0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46  SQLITE_IOCAP_SAF
dac0: 45 5f 41 50 50 45 4e 44 20 20 20 20 20 20 20 20  E_APPEND        
dad0: 20 20 20 20 30 78 30 30 30 30 30 32 30 30 0a 23      0x00000200.#
dae0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
daf0: 43 41 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 20  CAP_SEQUENTIAL  
db00: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
db10: 30 30 34 30 30 0a 23 64 65 66 69 6e 65 20 53 51  00400.#define SQ
db20: 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c  LITE_IOCAP_UNDEL
db30: 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e  ETABLE_WHEN_OPEN
db40: 20 20 30 78 30 30 30 30 30 38 30 30 0a 23 64 65    0x00000800.#de
db50: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
db60: 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52  P_POWERSAFE_OVER
db70: 57 52 49 54 45 20 20 20 20 30 78 30 30 30 30 31  WRITE    0x00001
db80: 30 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  000.#define SQLI
db90: 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42  TE_IOCAP_IMMUTAB
dba0: 4c 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  LE              
dbb0: 30 78 30 30 30 30 32 30 30 30 0a 0a 2f 2a 0a 2a  0x00002000../*.*
dbc0: 2a 20 43 41 50 49 33 52 45 46 3a 20 46 69 6c 65  * CAPI3REF: File
dbd0: 20 4c 6f 63 6b 69 6e 67 20 4c 65 76 65 6c 73 0a   Locking Levels.
dbe0: 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65  **.** SQLite use
dbf0: 73 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 69  s one of these i
dc00: 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20 61 73  nteger values as
dc10: 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 61   the second.** a
dc20: 72 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 73  rgument to calls
dc30: 20 69 74 20 6d 61 6b 65 73 20 74 6f 20 74 68 65   it makes to the
dc40: 20 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e   xLock() and xUn
dc50: 6c 6f 63 6b 28 29 20 6d 65 74 68 6f 64 73 0a 2a  lock() methods.*
dc60: 2a 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33  * of an [sqlite3
dc70: 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a  _io_methods] obj
dc80: 65 63 74 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  ect..*/.#define 
dc90: 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45  SQLITE_LOCK_NONE
dca0: 20 20 20 20 20 20 20 20 20 20 30 0a 23 64 65 66            0.#def
dcb0: 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  ine SQLITE_LOCK_
dcc0: 53 48 41 52 45 44 20 20 20 20 20 20 20 20 31 0a  SHARED        1.
dcd0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
dce0: 4f 43 4b 5f 52 45 53 45 52 56 45 44 20 20 20 20  OCK_RESERVED    
dcf0: 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
dd00: 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 20  TE_LOCK_PENDING 
dd10: 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20        3.#define 
dd20: 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c  SQLITE_LOCK_EXCL
dd30: 55 53 49 56 45 20 20 20 20 20 34 0a 0a 2f 2a 0a  USIVE     4../*.
dd40: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 79 6e  ** CAPI3REF: Syn
dd50: 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 20 54 79 70  chronization Typ
dd60: 65 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 57 68  e Flags.**.** Wh
dd70: 65 6e 20 53 51 4c 69 74 65 20 69 6e 76 6f 6b 65  en SQLite invoke
dd80: 73 20 74 68 65 20 78 53 79 6e 63 28 29 20 6d 65  s the xSync() me
dd90: 74 68 6f 64 20 6f 66 20 61 6e 0a 2a 2a 20 5b 73  thod of an.** [s
dda0: 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
ddb0: 73 5d 20 6f 62 6a 65 63 74 20 69 74 20 75 73 65  s] object it use
ddc0: 73 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20  s a combination 
ddd0: 6f 66 0a 2a 2a 20 74 68 65 73 65 20 69 6e 74 65  of.** these inte
dde0: 67 65 72 20 76 61 6c 75 65 73 20 61 73 20 74 68  ger values as th
ddf0: 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
de00: 74 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68  t..**.** When th
de10: 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41  e SQLITE_SYNC_DA
de20: 54 41 4f 4e 4c 59 20 66 6c 61 67 20 69 73 20 75  TAONLY flag is u
de30: 73 65 64 2c 20 69 74 20 6d 65 61 6e 73 20 74 68  sed, it means th
de40: 61 74 20 74 68 65 0a 2a 2a 20 73 79 6e 63 20 6f  at the.** sync o
de50: 70 65 72 61 74 69 6f 6e 20 6f 6e 6c 79 20 6e 65  peration only ne
de60: 65 64 73 20 74 6f 20 66 6c 75 73 68 20 64 61 74  eds to flush dat
de70: 61 20 74 6f 20 6d 61 73 73 20 73 74 6f 72 61 67  a to mass storag
de80: 65 2e 20 20 49 6e 6f 64 65 0a 2a 2a 20 69 6e 66  e.  Inode.** inf
de90: 6f 72 6d 61 74 69 6f 6e 20 6e 65 65 64 20 6e 6f  ormation need no
dea0: 74 20 62 65 20 66 6c 75 73 68 65 64 2e 20 49 66  t be flushed. If
deb0: 20 74 68 65 20 6c 6f 77 65 72 20 66 6f 75 72 20   the lower four 
dec0: 62 69 74 73 20 6f 66 20 74 68 65 20 66 6c 61 67  bits of the flag
ded0: 0a 2a 2a 20 65 71 75 61 6c 20 53 51 4c 49 54 45  .** equal SQLITE
dee0: 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 2c 20 74 68  _SYNC_NORMAL, th
def0: 61 74 20 6d 65 61 6e 73 20 74 6f 20 75 73 65 20  at means to use 
df00: 6e 6f 72 6d 61 6c 20 66 73 79 6e 63 28 29 20 73  normal fsync() s
df10: 65 6d 61 6e 74 69 63 73 2e 0a 2a 2a 20 49 66 20  emantics..** If 
df20: 74 68 65 20 6c 6f 77 65 72 20 66 6f 75 72 20 62  the lower four b
df30: 69 74 73 20 65 71 75 61 6c 20 53 51 4c 49 54 45  its equal SQLITE
df40: 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 74 68 61 74  _SYNC_FULL, that
df50: 20 6d 65 61 6e 73 0a 2a 2a 20 74 6f 20 75 73 65   means.** to use
df60: 20 4d 61 63 20 4f 53 20 58 20 73 74 79 6c 65 20   Mac OS X style 
df70: 66 75 6c 6c 73 79 6e 63 20 69 6e 73 74 65 61 64  fullsync instead
df80: 20 6f 66 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 0a   of fsync()..**.
df90: 2a 2a 20 44 6f 20 6e 6f 74 20 63 6f 6e 66 75 73  ** Do not confus
dfa0: 65 20 74 68 65 20 53 51 4c 49 54 45 5f 53 59 4e  e the SQLITE_SYN
dfb0: 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c  C_NORMAL and SQL
dfc0: 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c  ITE_SYNC_FULL fl
dfd0: 61 67 73 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ags.** with the 
dfe0: 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e  [PRAGMA synchron
dff0: 6f 75 73 5d 3d 4e 4f 52 4d 41 4c 20 61 6e 64 20  ous]=NORMAL and 
e000: 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e  [PRAGMA synchron
e010: 6f 75 73 5d 3d 46 55 4c 4c 0a 2a 2a 20 73 65 74  ous]=FULL.** set
e020: 74 69 6e 67 73 2e 20 20 54 68 65 20 5b 73 79 6e  tings.  The [syn
e030: 63 68 72 6f 6e 6f 75 73 20 70 72 61 67 6d 61 5d  chronous pragma]
e040: 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65 6e   determines when
e050: 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 0a 2a 2a   calls to the.**
e060: 20 78 53 79 6e 63 20 56 46 53 20 6d 65 74 68 6f   xSync VFS metho
e070: 64 20 6f 63 63 75 72 20 61 6e 64 20 61 70 70 6c  d occur and appl
e080: 69 65 73 20 75 6e 69 66 6f 72 6d 6c 79 20 61 63  ies uniformly ac
e090: 72 6f 73 73 20 61 6c 6c 20 70 6c 61 74 66 6f 72  ross all platfor
e0a0: 6d 73 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54  ms..** The SQLIT
e0b0: 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e  E_SYNC_NORMAL an
e0c0: 64 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55  d SQLITE_SYNC_FU
e0d0: 4c 4c 20 66 6c 61 67 73 20 64 65 74 65 72 6d 69  LL flags determi
e0e0: 6e 65 20 68 6f 77 0a 2a 2a 20 65 6e 65 72 67 65  ne how.** energe
e0f0: 74 69 63 20 6f 72 20 72 69 67 6f 72 6f 75 73 20  tic or rigorous 
e100: 6f 72 20 66 6f 72 63 65 66 75 6c 20 74 68 65 20  or forceful the 
e110: 73 79 6e 63 20 6f 70 65 72 61 74 69 6f 6e 73 20  sync operations 
e120: 61 72 65 20 61 6e 64 0a 2a 2a 20 6f 6e 6c 79 20  are and.** only 
e130: 6d 61 6b 65 20 61 20 64 69 66 66 65 72 65 6e 63  make a differenc
e140: 65 20 6f 6e 20 4d 61 63 20 4f 53 58 20 66 6f 72  e on Mac OSX for
e150: 20 74 68 65 20 64 65 66 61 75 6c 74 20 53 51 4c   the default SQL
e160: 69 74 65 20 63 6f 64 65 2e 0a 2a 2a 20 28 54 68  ite code..** (Th
e170: 69 72 64 2d 70 61 72 74 79 20 56 46 53 20 69 6d  ird-party VFS im
e180: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 69  plementations mi
e190: 67 68 74 20 61 6c 73 6f 20 6d 61 6b 65 20 74 68  ght also make th
e1a0: 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 0a 2a 2a  e distinction.**
e1b0: 20 62 65 74 77 65 65 6e 20 53 51 4c 49 54 45 5f   between SQLITE_
e1c0: 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20  SYNC_NORMAL and 
e1d0: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c  SQLITE_SYNC_FULL
e1e0: 2c 20 62 75 74 20 61 6d 6f 6e 67 20 74 68 65 0a  , but among the.
e1f0: 2a 2a 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  ** operating sys
e200: 74 65 6d 73 20 6e 61 74 69 76 65 6c 79 20 73 75  tems natively su
e210: 70 70 6f 72 74 65 64 20 62 79 20 53 51 4c 69 74  pported by SQLit
e220: 65 2c 20 6f 6e 6c 79 20 4d 61 63 20 4f 53 58 0a  e, only Mac OSX.
e230: 2a 2a 20 63 61 72 65 73 20 61 62 6f 75 74 20 74  ** cares about t
e240: 68 65 20 64 69 66 66 65 72 65 6e 63 65 2e 29 0a  he difference.).
e250: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
e260: 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 20 20  E_SYNC_NORMAL   
e270: 20 20 20 20 20 30 78 30 30 30 30 32 0a 23 64 65       0x00002.#de
e280: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e 43  fine SQLITE_SYNC
e290: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 20 20 30  _FULL          0
e2a0: 78 30 30 30 30 33 0a 23 64 65 66 69 6e 65 20 53  x00003.#define S
e2b0: 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f  QLITE_SYNC_DATAO
e2c0: 4e 4c 59 20 20 20 20 20 20 30 78 30 30 30 31 30  NLY      0x00010
e2d0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
e2e0: 3a 20 4f 53 20 49 6e 74 65 72 66 61 63 65 20 4f  : OS Interface O
e2f0: 70 65 6e 20 46 69 6c 65 20 48 61 6e 64 6c 65 0a  pen File Handle.
e300: 2a 2a 0a 2a 2a 20 41 6e 20 5b 73 71 6c 69 74 65  **.** An [sqlite
e310: 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 72  3_file] object r
e320: 65 70 72 65 73 65 6e 74 73 20 61 6e 20 6f 70 65  epresents an ope
e330: 6e 20 66 69 6c 65 20 69 6e 20 74 68 65 20 0a 2a  n file in the .*
e340: 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20 7c  * [sqlite3_vfs |
e350: 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61   OS interface la
e360: 79 65 72 5d 2e 20 20 49 6e 64 69 76 69 64 75 61  yer].  Individua
e370: 6c 20 4f 53 20 69 6e 74 65 72 66 61 63 65 0a 2a  l OS interface.*
e380: 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  * implementation
e390: 73 20 77 69 6c 6c 0a 2a 2a 20 77 61 6e 74 20 74  s will.** want t
e3a0: 6f 20 73 75 62 63 6c 61 73 73 20 74 68 69 73 20  o subclass this 
e3b0: 6f 62 6a 65 63 74 20 62 79 20 61 70 70 65 6e 64  object by append
e3c0: 69 6e 67 20 61 64 64 69 74 69 6f 6e 61 6c 20 66  ing additional f
e3d0: 69 65 6c 64 73 0a 2a 2a 20 66 6f 72 20 74 68 65  ields.** for the
e3e0: 69 72 20 6f 77 6e 20 75 73 65 2e 20 20 54 68 65  ir own use.  The
e3f0: 20 70 4d 65 74 68 6f 64 73 20 65 6e 74 72 79 20   pMethods entry 
e400: 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
e410: 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69  an.** [sqlite3_i
e420: 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63  o_methods] objec
e430: 74 20 74 68 61 74 20 64 65 66 69 6e 65 73 20 6d  t that defines m
e440: 65 74 68 6f 64 73 20 66 6f 72 20 70 65 72 66 6f  ethods for perfo
e450: 72 6d 69 6e 67 0a 2a 2a 20 49 2f 4f 20 6f 70 65  rming.** I/O ope
e460: 72 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 6f  rations on the o
e470: 70 65 6e 20 66 69 6c 65 2e 0a 2a 2f 0a 74 79 70  pen file..*/.typ
e480: 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
e490: 74 65 33 5f 66 69 6c 65 20 73 71 6c 69 74 65 33  te3_file sqlite3
e4a0: 5f 66 69 6c 65 3b 0a 73 74 72 75 63 74 20 73 71  _file;.struct sq
e4b0: 6c 69 74 65 33 5f 66 69 6c 65 20 7b 0a 20 20 63  lite3_file {.  c
e4c0: 6f 6e 73 74 20 73 74 72 75 63 74 20 73 71 6c 69  onst struct sqli
e4d0: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 2a  te3_io_methods *
e4e0: 70 4d 65 74 68 6f 64 73 3b 20 20 2f 2a 20 4d 65  pMethods;  /* Me
e4f0: 74 68 6f 64 73 20 66 6f 72 20 61 6e 20 6f 70 65  thods for an ope
e500: 6e 20 66 69 6c 65 20 2a 2f 0a 7d 3b 0a 0a 2f 2a  n file */.};../*
e510: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 53  .** CAPI3REF: OS
e520: 20 49 6e 74 65 72 66 61 63 65 20 46 69 6c 65 20   Interface File 
e530: 56 69 72 74 75 61 6c 20 4d 65 74 68 6f 64 73 20  Virtual Methods 
e540: 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 45 76 65  Object.**.** Eve
e550: 72 79 20 66 69 6c 65 20 6f 70 65 6e 65 64 20 62  ry file opened b
e560: 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  y the [sqlite3_v
e570: 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64  fs.xOpen] method
e580: 20 70 6f 70 75 6c 61 74 65 73 20 61 6e 0a 2a 2a   populates an.**
e590: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
e5a0: 6f 62 6a 65 63 74 20 28 6f 72 2c 20 6d 6f 72 65  object (or, more
e5b0: 20 63 6f 6d 6d 6f 6e 6c 79 2c 20 61 20 73 75 62   commonly, a sub
e5c0: 63 6c 61 73 73 20 6f 66 20 74 68 65 0a 2a 2a 20  class of the.** 
e5d0: 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f  [sqlite3_file] o
e5e0: 62 6a 65 63 74 29 20 77 69 74 68 20 61 20 70 6f  bject) with a po
e5f0: 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
e600: 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a  ance of this obj
e610: 65 63 74 2e 0a 2a 2a 20 54 68 69 73 20 6f 62 6a  ect..** This obj
e620: 65 63 74 20 64 65 66 69 6e 65 73 20 74 68 65 20  ect defines the 
e630: 6d 65 74 68 6f 64 73 20 75 73 65 64 20 74 6f 20  methods used to 
e640: 70 65 72 66 6f 72 6d 20 76 61 72 69 6f 75 73 20  perform various 
e650: 6f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 67  operations.** ag
e660: 61 69 6e 73 74 20 74 68 65 20 6f 70 65 6e 20 66  ainst the open f
e670: 69 6c 65 20 72 65 70 72 65 73 65 6e 74 65 64 20  ile represented 
e680: 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  by the [sqlite3_
e690: 66 69 6c 65 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a  file] object..**
e6a0: 0a 2a 2a 20 49 66 20 74 68 65 20 5b 73 71 6c 69  .** If the [sqli
e6b0: 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d  te3_vfs.xOpen] m
e6c0: 65 74 68 6f 64 20 73 65 74 73 20 74 68 65 20 73  ethod sets the s
e6d0: 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
e6e0: 68 6f 64 73 20 65 6c 65 6d 65 6e 74 20 0a 2a 2a  hods element .**
e6f0: 20 74 6f 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70   to a non-NULL p
e700: 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 74 68 65  ointer, then the
e710: 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68   sqlite3_io_meth
e720: 6f 64 73 2e 78 43 6c 6f 73 65 20 6d 65 74 68 6f  ods.xClose metho
e730: 64 0a 2a 2a 20 6d 61 79 20 62 65 20 69 6e 76 6f  d.** may be invo
e740: 6b 65 64 20 65 76 65 6e 20 69 66 20 74 68 65 20  ked even if the 
e750: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
e760: 65 6e 5d 20 72 65 70 6f 72 74 65 64 20 74 68 61  en] reported tha
e770: 74 20 69 74 20 66 61 69 6c 65 64 2e 20 20 54 68  t it failed.  Th
e780: 65 0a 2a 2a 20 6f 6e 6c 79 20 77 61 79 20 74 6f  e.** only way to
e790: 20 70 72 65 76 65 6e 74 20 61 20 63 61 6c 6c 20   prevent a call 
e7a0: 74 6f 20 78 43 6c 6f 73 65 20 66 6f 6c 6c 6f 77  to xClose follow
e7b0: 69 6e 67 20 61 20 66 61 69 6c 65 64 20 5b 73 71  ing a failed [sq
e7c0: 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d  lite3_vfs.xOpen]
e7d0: 0a 2a 2a 20 69 73 20 66 6f 72 20 74 68 65 20 5b  .** is for the [
e7e0: 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65  sqlite3_vfs.xOpe
e7f0: 6e 5d 20 74 6f 20 73 65 74 20 74 68 65 20 73 71  n] to set the sq
e800: 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68  lite3_file.pMeth
e810: 6f 64 73 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 74  ods element.** t
e820: 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 54 68  o NULL..**.** Th
e830: 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74  e flags argument
e840: 20 74 6f 20 78 53 79 6e 63 20 6d 61 79 20 62 65   to xSync may be
e850: 20 6f 6e 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f   one of [SQLITE_
e860: 53 59 4e 43 5f 4e 4f 52 4d 41 4c 5d 20 6f 72 0a  SYNC_NORMAL] or.
e870: 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ** [SQLITE_SYNC_
e880: 46 55 4c 4c 5d 2e 20 20 54 68 65 20 66 69 72 73  FULL].  The firs
e890: 74 20 63 68 6f 69 63 65 20 69 73 20 74 68 65 20  t choice is the 
e8a0: 6e 6f 72 6d 61 6c 20 66 73 79 6e 63 28 29 2e 0a  normal fsync()..
e8b0: 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 63 68  ** The second ch
e8c0: 6f 69 63 65 20 69 73 20 61 20 4d 61 63 20 4f 53  oice is a Mac OS
e8d0: 20 58 20 73 74 79 6c 65 20 66 75 6c 6c 73 79 6e   X style fullsyn
e8e0: 63 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  c.  The [SQLITE_
e8f0: 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 5d 0a 2a  SYNC_DATAONLY].*
e900: 2a 20 66 6c 61 67 20 6d 61 79 20 62 65 20 4f 52  * flag may be OR
e910: 65 64 20 69 6e 20 74 6f 20 69 6e 64 69 63 61 74  ed in to indicat
e920: 65 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65 20  e that only the 
e930: 64 61 74 61 20 6f 66 20 74 68 65 20 66 69 6c 65  data of the file
e940: 0a 2a 2a 20 61 6e 64 20 6e 6f 74 20 69 74 73 20  .** and not its 
e950: 69 6e 6f 64 65 20 6e 65 65 64 73 20 74 6f 20 62  inode needs to b
e960: 65 20 73 79 6e 63 65 64 2e 0a 2a 2a 0a 2a 2a 20  e synced..**.** 
e970: 54 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75  The integer valu
e980: 65 73 20 74 6f 20 78 4c 6f 63 6b 28 29 20 61 6e  es to xLock() an
e990: 64 20 78 55 6e 6c 6f 63 6b 28 29 20 61 72 65 20  d xUnlock() are 
e9a0: 6f 6e 65 20 6f 66 0a 2a 2a 20 3c 75 6c 3e 0a 2a  one of.** <ul>.*
e9b0: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c  * <li> [SQLITE_L
e9c0: 4f 43 4b 5f 4e 4f 4e 45 5d 2c 0a 2a 2a 20 3c 6c  OCK_NONE],.** <l
e9d0: 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  i> [SQLITE_LOCK_
e9e0: 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e  SHARED],.** <li>
e9f0: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45   [SQLITE_LOCK_RE
ea00: 53 45 52 56 45 44 5d 2c 0a 2a 2a 20 3c 6c 69 3e  SERVED],.** <li>
ea10: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50 45   [SQLITE_LOCK_PE
ea20: 4e 44 49 4e 47 5d 2c 20 6f 72 0a 2a 2a 20 3c 6c  NDING], or.** <l
ea30: 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  i> [SQLITE_LOCK_
ea40: 45 58 43 4c 55 53 49 56 45 5d 2e 0a 2a 2a 20 3c  EXCLUSIVE]..** <
ea50: 2f 75 6c 3e 0a 2a 2a 20 78 4c 6f 63 6b 28 29 20  /ul>.** xLock() 
ea60: 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 6c 6f  increases the lo
ea70: 63 6b 2e 20 78 55 6e 6c 6f 63 6b 28 29 20 64 65  ck. xUnlock() de
ea80: 63 72 65 61 73 65 73 20 74 68 65 20 6c 6f 63 6b  creases the lock
ea90: 2e 0a 2a 2a 20 54 68 65 20 78 43 68 65 63 6b 52  ..** The xCheckR
eaa0: 65 73 65 72 76 65 64 4c 6f 63 6b 28 29 20 6d 65  eservedLock() me
eab0: 74 68 6f 64 20 63 68 65 63 6b 73 20 77 68 65 74  thod checks whet
eac0: 68 65 72 20 61 6e 79 20 64 61 74 61 62 61 73 65  her any database
ead0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0a 2a 2a 20   connection,.** 
eae0: 65 69 74 68 65 72 20 69 6e 20 74 68 69 73 20 70  either in this p
eaf0: 72 6f 63 65 73 73 20 6f 72 20 69 6e 20 73 6f 6d  rocess or in som
eb00: 65 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 2c  e other process,
eb10: 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 52 45   is holding a RE
eb20: 53 45 52 56 45 44 2c 0a 2a 2a 20 50 45 4e 44 49  SERVED,.** PENDI
eb30: 4e 47 2c 20 6f 72 20 45 58 43 4c 55 53 49 56 45  NG, or EXCLUSIVE
eb40: 20 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 66 69 6c   lock on the fil
eb50: 65 2e 20 20 49 74 20 72 65 74 75 72 6e 73 20 74  e.  It returns t
eb60: 72 75 65 0a 2a 2a 20 69 66 20 73 75 63 68 20 61  rue.** if such a
eb70: 20 6c 6f 63 6b 20 65 78 69 73 74 73 20 61 6e 64   lock exists and
eb80: 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73 65   false otherwise
eb90: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 46 69 6c  ..**.** The xFil
eba0: 65 43 6f 6e 74 72 6f 6c 28 29 20 6d 65 74 68 6f  eControl() metho
ebb0: 64 20 69 73 20 61 20 67 65 6e 65 72 69 63 20 69  d is a generic i
ebc0: 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 61 6c  nterface that al
ebd0: 6c 6f 77 73 20 63 75 73 74 6f 6d 0a 2a 2a 20 56  lows custom.** V
ebe0: 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
ebf0: 6e 73 20 74 6f 20 64 69 72 65 63 74 6c 79 20 63  ns to directly c
ec00: 6f 6e 74 72 6f 6c 20 61 6e 20 6f 70 65 6e 20 66  ontrol an open f
ec10: 69 6c 65 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a  ile using the.**
ec20: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63   [sqlite3_file_c
ec30: 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72 66  ontrol()] interf
ec40: 61 63 65 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  ace.  The second
ec50: 20 22 6f 70 22 20 61 72 67 75 6d 65 6e 74 20 69   "op" argument i
ec60: 73 20 61 6e 0a 2a 2a 20 69 6e 74 65 67 65 72 20  s an.** integer 
ec70: 6f 70 63 6f 64 65 2e 20 20 54 68 65 20 74 68 69  opcode.  The thi
ec80: 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  rd argument is a
ec90: 20 67 65 6e 65 72 69 63 20 70 6f 69 6e 74 65 72   generic pointer
eca0: 20 69 6e 74 65 6e 64 65 64 20 74 6f 0a 2a 2a 20   intended to.** 
ecb0: 70 6f 69 6e 74 20 74 6f 20 61 20 73 74 72 75 63  point to a struc
ecc0: 74 75 72 65 20 74 68 61 74 20 6d 61 79 20 63 6f  ture that may co
ecd0: 6e 74 61 69 6e 20 61 72 67 75 6d 65 6e 74 73 20  ntain arguments 
ece0: 6f 72 20 73 70 61 63 65 20 69 6e 20 77 68 69 63  or space in whic
ecf0: 68 20 74 6f 0a 2a 2a 20 77 72 69 74 65 20 72 65  h to.** write re
ed00: 74 75 72 6e 20 76 61 6c 75 65 73 2e 20 20 50 6f  turn values.  Po
ed10: 74 65 6e 74 69 61 6c 20 75 73 65 73 20 66 6f 72  tential uses for
ed20: 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 28 29 20   xFileControl() 
ed30: 6d 69 67 68 74 20 62 65 0a 2a 2a 20 66 75 6e 63  might be.** func
ed40: 74 69 6f 6e 73 20 74 6f 20 65 6e 61 62 6c 65 20  tions to enable 
ed50: 62 6c 6f 63 6b 69 6e 67 20 6c 6f 63 6b 73 20 77  blocking locks w
ed60: 69 74 68 20 74 69 6d 65 6f 75 74 73 2c 20 74 6f  ith timeouts, to
ed70: 20 63 68 61 6e 67 65 20 74 68 65 0a 2a 2a 20 6c   change the.** l
ed80: 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79 20  ocking strategy 
ed90: 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 6f 20  (for example to 
eda0: 75 73 65 20 64 6f 74 2d 66 69 6c 65 20 6c 6f 63  use dot-file loc
edb0: 6b 73 29 2c 20 74 6f 20 69 6e 71 75 69 72 65 0a  ks), to inquire.
edc0: 2a 2a 20 61 62 6f 75 74 20 74 68 65 20 73 74 61  ** about the sta
edd0: 74 75 73 20 6f 66 20 61 20 6c 6f 63 6b 2c 20 6f  tus of a lock, o
ede0: 72 20 74 6f 20 62 72 65 61 6b 20 73 74 61 6c 65  r to break stale
edf0: 20 6c 6f 63 6b 73 2e 20 20 54 68 65 20 53 51 4c   locks.  The SQL
ee00: 69 74 65 0a 2a 2a 20 63 6f 72 65 20 72 65 73 65  ite.** core rese
ee10: 72 76 65 73 20 61 6c 6c 20 6f 70 63 6f 64 65 73  rves all opcodes
ee20: 20 6c 65 73 73 20 74 68 61 6e 20 31 30 30 20 66   less than 100 f
ee30: 6f 72 20 69 74 73 20 6f 77 6e 20 75 73 65 2e 0a  or its own use..
ee40: 2a 2a 20 41 20 5b 66 69 6c 65 20 63 6f 6e 74 72  ** A [file contr
ee50: 6f 6c 20 6f 70 63 6f 64 65 73 20 7c 20 6c 69 73  ol opcodes | lis
ee60: 74 20 6f 66 20 6f 70 63 6f 64 65 73 5d 20 6c 65  t of opcodes] le
ee70: 73 73 20 74 68 61 6e 20 31 30 30 20 69 73 20 61  ss than 100 is a
ee80: 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 20 41 70 70  vailable..** App
ee90: 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 64  lications that d
eea0: 65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20 78  efine a custom x
eeb0: 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68  FileControl meth
eec0: 6f 64 20 73 68 6f 75 6c 64 20 75 73 65 20 6f 70  od should use op
eed0: 63 6f 64 65 73 0a 2a 2a 20 67 72 65 61 74 65 72  codes.** greater
eee0: 20 74 68 61 6e 20 31 30 30 20 74 6f 20 61 76 6f   than 100 to avo
eef0: 69 64 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 56  id conflicts.  V
ef00: 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
ef10: 6e 73 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74  ns should.** ret
ef20: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46  urn [SQLITE_NOTF
ef30: 4f 55 4e 44 5d 20 66 6f 72 20 66 69 6c 65 20 63  OUND] for file c
ef40: 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 20 74  ontrol opcodes t
ef50: 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a  hat they do not.
ef60: 2a 2a 20 72 65 63 6f 67 6e 69 7a 65 2e 0a 2a 2a  ** recognize..**
ef70: 0a 2a 2a 20 54 68 65 20 78 53 65 63 74 6f 72 53  .** The xSectorS
ef80: 69 7a 65 28 29 20 6d 65 74 68 6f 64 20 72 65 74  ize() method ret
ef90: 75 72 6e 73 20 74 68 65 20 73 65 63 74 6f 72 20  urns the sector 
efa0: 73 69 7a 65 20 6f 66 20 74 68 65 0a 2a 2a 20 64  size of the.** d
efb0: 65 76 69 63 65 20 74 68 61 74 20 75 6e 64 65 72  evice that under
efc0: 6c 69 65 73 20 74 68 65 20 66 69 6c 65 2e 20 20  lies the file.  
efd0: 54 68 65 20 73 65 63 74 6f 72 20 73 69 7a 65 20  The sector size 
efe0: 69 73 20 74 68 65 0a 2a 2a 20 6d 69 6e 69 6d 75  is the.** minimu
eff0: 6d 20 77 72 69 74 65 20 74 68 61 74 20 63 61 6e  m write that can
f000: 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 77 69   be performed wi
f010: 74 68 6f 75 74 20 64 69 73 74 75 72 62 69 6e 67  thout disturbing
f020: 0a 2a 2a 20 6f 74 68 65 72 20 62 79 74 65 73 20  .** other bytes 
f030: 69 6e 20 74 68 65 20 66 69 6c 65 2e 20 20 54 68  in the file.  Th
f040: 65 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74  e xDeviceCharact
f050: 65 72 69 73 74 69 63 73 28 29 0a 2a 2a 20 6d 65  eristics().** me
f060: 74 68 6f 64 20 72 65 74 75 72 6e 73 20 61 20 62  thod returns a b
f070: 69 74 20 76 65 63 74 6f 72 20 64 65 73 63 72 69  it vector descri
f080: 62 69 6e 67 20 62 65 68 61 76 69 6f 72 73 20 6f  bing behaviors o
f090: 66 20 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79  f the.** underly
f0a0: 69 6e 67 20 64 65 76 69 63 65 3a 0a 2a 2a 0a 2a  ing device:.**.*
f0b0: 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b  * <ul>.** <li> [
f0c0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f0d0: 4d 49 43 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  MIC].** <li> [SQ
f0e0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
f0f0: 43 35 31 32 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  C512].** <li> [S
f100: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f110: 49 43 31 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  IC1K].** <li> [S
f120: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f130: 49 43 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  IC2K].** <li> [S
f140: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f150: 49 43 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  IC4K].** <li> [S
f160: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f170: 49 43 38 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  IC8K].** <li> [S
f180: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f190: 49 43 31 36 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  IC16K].** <li> [
f1a0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f1b0: 4d 49 43 33 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20  MIC32K].** <li> 
f1c0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54  [SQLITE_IOCAP_AT
f1d0: 4f 4d 49 43 36 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e  OMIC64K].** <li>
f1e0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53   [SQLITE_IOCAP_S
f1f0: 41 46 45 5f 41 50 50 45 4e 44 5d 0a 2a 2a 20 3c  AFE_APPEND].** <
f200: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  li> [SQLITE_IOCA
f210: 50 5f 53 45 51 55 45 4e 54 49 41 4c 5d 0a 2a 2a  P_SEQUENTIAL].**
f220: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f   <li> [SQLITE_IO
f230: 43 41 50 5f 55 4e 44 45 4c 45 54 41 42 4c 45 5f  CAP_UNDELETABLE_
f240: 57 48 45 4e 5f 4f 50 45 4e 5d 0a 2a 2a 20 3c 6c  WHEN_OPEN].** <l
f250: 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50  i> [SQLITE_IOCAP
f260: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
f270: 52 49 54 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  RITE].** <li> [S
f280: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55  QLITE_IOCAP_IMMU
f290: 54 41 42 4c 45 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a  TABLE].** </ul>.
f2a0: 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45  **.** The SQLITE
f2b0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70 72  _IOCAP_ATOMIC pr
f2c0: 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61  operty means tha
f2d0: 74 20 61 6c 6c 20 77 72 69 74 65 73 20 6f 66 0a  t all writes of.
f2e0: 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61 72 65 20  ** any size are 
f2f0: 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c  atomic.  The SQL
f300: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
f310: 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d 65  nnn values.** me
f320: 61 6e 20 74 68 61 74 20 77 72 69 74 65 73 20 6f  an that writes o
f330: 66 20 62 6c 6f 63 6b 73 20 74 68 61 74 20 61 72  f blocks that ar
f340: 65 20 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20 73  e nnn bytes in s
f350: 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20 61  ize and.** are a
f360: 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 61 64 64  ligned to an add
f370: 72 65 73 73 20 77 68 69 63 68 20 69 73 20 61 6e  ress which is an
f380: 20 69 6e 74 65 67 65 72 20 6d 75 6c 74 69 70 6c   integer multipl
f390: 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65 20  e of.** nnn are 
f3a0: 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c  atomic.  The SQL
f3b0: 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41  ITE_IOCAP_SAFE_A
f3c0: 50 50 45 4e 44 20 76 61 6c 75 65 20 6d 65 61 6e  PPEND value mean
f3d0: 73 0a 2a 2a 20 74 68 61 74 20 77 68 65 6e 20 64  s.** that when d
f3e0: 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64 20  ata is appended 
f3f0: 74 6f 20 61 20 66 69 6c 65 2c 20 74 68 65 20 64  to a file, the d
f400: 61 74 61 20 69 73 20 61 70 70 65 6e 64 65 64 0a  ata is appended.
f410: 2a 2a 20 66 69 72 73 74 20 74 68 65 6e 20 74 68  ** first then th
f420: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 66 69  e size of the fi
f430: 6c 65 20 69 73 20 65 78 74 65 6e 64 65 64 2c 20  le is extended, 
f440: 6e 65 76 65 72 20 74 68 65 20 6f 74 68 65 72 0a  never the other.
f450: 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64 2e 20 20  ** way around.  
f460: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  The SQLITE_IOCAP
f470: 5f 53 45 51 55 45 4e 54 49 41 4c 20 70 72 6f 70  _SEQUENTIAL prop
f480: 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74 0a  erty means that.
f490: 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  ** information i
f4a0: 73 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73  s written to dis
f4b0: 6b 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72  k in the same or
f4c0: 64 65 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a 20  der as calls.** 
f4d0: 74 6f 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a 0a  to xWrite()..**.
f4e0: 2a 2a 20 49 66 20 78 52 65 61 64 28 29 20 72 65  ** If xRead() re
f4f0: 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f 45  turns SQLITE_IOE
f500: 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 69 74  RR_SHORT_READ it
f510: 20 6d 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c 0a   must also fill.
f520: 2a 2a 20 69 6e 20 74 68 65 20 75 6e 72 65 61 64  ** in the unread
f530: 20 70 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65   portions of the
f540: 20 62 75 66 66 65 72 20 77 69 74 68 20 7a 65 72   buffer with zer
f550: 6f 73 2e 20 20 41 20 56 46 53 20 74 68 61 74 0a  os.  A VFS that.
f560: 2a 2a 20 66 61 69 6c 73 20 74 6f 20 7a 65 72 6f  ** fails to zero
f570: 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64  -fill short read
f580: 73 20 6d 69 67 68 74 20 73 65 65 6d 20 74 6f 20  s might seem to 
f590: 77 6f 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c 0a  work.  However,.
f5a0: 2a 2a 20 66 61 69 6c 75 72 65 20 74 6f 20 7a 65  ** failure to ze
f5b0: 72 6f 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65  ro-fill short re
f5c0: 61 64 73 20 77 69 6c 6c 20 65 76 65 6e 74 75 61  ads will eventua
f5d0: 6c 6c 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20 64  lly lead to.** d
f5e0: 61 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69  atabase corrupti
f5f0: 6f 6e 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  on..*/.typedef s
f600: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f  truct sqlite3_io
f610: 5f 6d 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33  _methods sqlite3
f620: 5f 69 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72  _io_methods;.str
f630: 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  uct sqlite3_io_m
f640: 65 74 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20 69  ethods {.  int i
f650: 56 65 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28  Version;.  int (
f660: 2a 78 43 6c 6f 73 65 29 28 73 71 6c 69 74 65 33  *xClose)(sqlite3
f670: 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28  _file*);.  int (
f680: 2a 78 52 65 61 64 29 28 73 71 6c 69 74 65 33 5f  *xRead)(sqlite3_
f690: 66 69 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69 6e  file*, void*, in
f6a0: 74 20 69 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f  t iAmt, sqlite3_
f6b0: 69 6e 74 36 34 20 69 4f 66 73 74 29 3b 0a 20 20  int64 iOfst);.  
f6c0: 69 6e 74 20 28 2a 78 57 72 69 74 65 29 28 73 71  int (*xWrite)(sq
f6d0: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f 6e  lite3_file*, con
f6e0: 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69 41  st void*, int iA
f6f0: 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36  mt, sqlite3_int6
f700: 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74 20  4 iOfst);.  int 
f710: 28 2a 78 54 72 75 6e 63 61 74 65 29 28 73 71 6c  (*xTruncate)(sql
f720: 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69  ite3_file*, sqli
f730: 74 65 33 5f 69 6e 74 36 34 20 73 69 7a 65 29 3b  te3_int64 size);
f740: 0a 20 20 69 6e 74 20 28 2a 78 53 79 6e 63 29 28  .  int (*xSync)(
f750: 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69  sqlite3_file*, i
f760: 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e 74  nt flags);.  int
f770: 20 28 2a 78 46 69 6c 65 53 69 7a 65 29 28 73 71   (*xFileSize)(sq
f780: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c  lite3_file*, sql
f790: 69 74 65 33 5f 69 6e 74 36 34 20 2a 70 53 69 7a  ite3_int64 *pSiz
f7a0: 65 29 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f 63  e);.  int (*xLoc
f7b0: 6b 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  k)(sqlite3_file*
f7c0: 2c 20 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a  , int);.  int (*
f7d0: 78 55 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65 33  xUnlock)(sqlite3
f7e0: 5f 66 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20 20  _file*, int);.  
f7f0: 69 6e 74 20 28 2a 78 43 68 65 63 6b 52 65 73 65  int (*xCheckRese
f800: 72 76 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74 65  rvedLock)(sqlite
f810: 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70 52  3_file*, int *pR
f820: 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a  esOut);.  int (*
f830: 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73 71  xFileControl)(sq
f840: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74  lite3_file*, int
f850: 20 6f 70 2c 20 76 6f 69 64 20 2a 70 41 72 67 29   op, void *pArg)
f860: 3b 0a 20 20 69 6e 74 20 28 2a 78 53 65 63 74 6f  ;.  int (*xSecto
f870: 72 53 69 7a 65 29 28 73 71 6c 69 74 65 33 5f 66  rSize)(sqlite3_f
f880: 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  ile*);.  int (*x
f890: 44 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69  DeviceCharacteri
f8a0: 73 74 69 63 73 29 28 73 71 6c 69 74 65 33 5f 66  stics)(sqlite3_f
f8b0: 69 6c 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74 68  ile*);.  /* Meth
f8c0: 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 76 61  ods above are va
f8d0: 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20  lid for version 
f8e0: 31 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 68  1 */.  int (*xSh
f8f0: 6d 4d 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69  mMap)(sqlite3_fi
f900: 6c 65 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69 6e  le*, int iPg, in
f910: 74 20 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f 69  t pgsz, int, voi
f920: 64 20 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a 20  d volatile**);. 
f930: 20 69 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b 29   int (*xShmLock)
f940: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
f950: 69 6e 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20  int offset, int 
f960: 6e 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20  n, int flags);. 
f970: 20 76 6f 69 64 20 28 2a 78 53 68 6d 42 61 72 72   void (*xShmBarr
f980: 69 65 72 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ier)(sqlite3_fil
f990: 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 68  e*);.  int (*xSh
f9a0: 6d 55 6e 6d 61 70 29 28 73 71 6c 69 74 65 33 5f  mUnmap)(sqlite3_
f9b0: 66 69 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65 74  file*, int delet
f9c0: 65 46 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65 74  eFlag);.  /* Met
f9d0: 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 76  hods above are v
f9e0: 61 6c 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e  alid for version
f9f0: 20 32 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 46   2 */.  int (*xF
fa00: 65 74 63 68 29 28 73 71 6c 69 74 65 33 5f 66 69  etch)(sqlite3_fi
fa10: 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  le*, sqlite3_int
fa20: 36 34 20 69 4f 66 73 74 2c 20 69 6e 74 20 69 41  64 iOfst, int iA
fa30: 6d 74 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b 0a  mt, void **pp);.
fa40: 20 20 69 6e 74 20 28 2a 78 55 6e 66 65 74 63 68    int (*xUnfetch
fa50: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
fa60: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 69   sqlite3_int64 i
fa70: 4f 66 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b 0a  Ofst, void *p);.
fa80: 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f    /* Methods abo
fa90: 76 65 20 61 72 65 20 76 61 6c 69 64 20 66 6f 72  ve are valid for
faa0: 20 76 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20 20   version 3 */.  
fab0: 2f 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d 65  /* Additional me
fac0: 74 68 6f 64 73 20 6d 61 79 20 62 65 20 61 64 64  thods may be add
fad0: 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
fae0: 65 61 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a  eases */.};../*.
faf0: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 74 61  ** CAPI3REF: Sta
fb00: 6e 64 61 72 64 20 46 69 6c 65 20 43 6f 6e 74 72  ndard File Contr
fb10: 6f 6c 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b 45  ol Opcodes.** KE
fb20: 59 57 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63 6f  YWORDS: {file co
fb30: 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20 7b  ntrol opcodes} {
fb40: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63  file control opc
fb50: 6f 64 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ode}.**.** These
fb60: 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e   integer constan
fb70: 74 73 20 61 72 65 20 6f 70 63 6f 64 65 73 20 66  ts are opcodes f
fb80: 6f 72 20 74 68 65 20 78 46 69 6c 65 43 6f 6e 74  or the xFileCont
fb90: 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f 66  rol method.** of
fba0: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f   the [sqlite3_io
fbb0: 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
fbc0: 20 61 6e 64 20 66 6f 72 20 74 68 65 20 5b 73 71   and for the [sq
fbd0: 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
fbe0: 6f 6c 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61  ol()].** interfa
fbf0: 63 65 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a  ce..**.** <ul>.*
fc00: 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
fc10: 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 5d  CNTL_LOCKSTATE]]
fc20: 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
fc30: 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d  FCNTL_LOCKSTATE]
fc40: 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20   opcode is used 
fc50: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20  for debugging.  
fc60: 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63  This.** opcode c
fc70: 61 75 73 65 73 20 74 68 65 20 78 46 69 6c 65 43  auses the xFileC
fc80: 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f  ontrol method to
fc90: 20 77 72 69 74 65 20 74 68 65 20 63 75 72 72 65   write the curre
fca0: 6e 74 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20 74  nt state of.** t
fcb0: 68 65 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66 20  he lock (one of 
fcc0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e  [SQLITE_LOCK_NON
fcd0: 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  E], [SQLITE_LOCK
fce0: 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53 51  _SHARED],.** [SQ
fcf0: 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56  LITE_LOCK_RESERV
fd00: 45 44 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  ED], [SQLITE_LOC
fd10: 4b 5f 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20 5b  K_PENDING], or [
fd20: 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c  SQLITE_LOCK_EXCL
fd30: 55 53 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f 20  USIVE]).** into 
fd40: 61 6e 20 69 6e 74 65 67 65 72 20 74 68 61 74 20  an integer that 
fd50: 74 68 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e  the pArg argumen
fd60: 74 20 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68 69  t points to. Thi
fd70: 73 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20  s capability.** 
fd80: 69 73 20 75 73 65 64 20 64 75 72 69 6e 67 20 74  is used during t
fd90: 65 73 74 69 6e 67 20 61 6e 64 20 69 73 20 6f 6e  esting and is on
fda0: 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65  ly available whe
fdb0: 6e 20 74 68 65 20 53 51 4c 49 54 45 5f 54 45 53  n the SQLITE_TES
fdc0: 54 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  T.** compile-tim
fdd0: 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  e option is used
fde0: 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51  ..**.** <li>[[SQ
fdf0: 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f  LITE_FCNTL_SIZE_
fe00: 48 49 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  HINT]].** The [S
fe10: 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
fe20: 5f 48 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69 73  _HINT] opcode is
fe30: 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65 20   used by SQLite 
fe40: 74 6f 20 67 69 76 65 20 74 68 65 20 56 46 53 0a  to give the VFS.
fe50: 2a 2a 20 6c 61 79 65 72 20 61 20 68 69 6e 74 20  ** layer a hint 
fe60: 6f 66 20 68 6f 77 20 6c 61 72 67 65 20 74 68 65  of how large the
fe70: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77   database file w
fe80: 69 6c 6c 20 67 72 6f 77 20 74 6f 20 62 65 20 64  ill grow to be d
fe90: 75 72 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75 72  uring the.** cur
fea0: 72 65 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e  rent transaction
feb0: 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73 20  .  This hint is 
fec0: 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 64 20 74  not guaranteed t
fed0: 6f 20 62 65 20 61 63 63 75 72 61 74 65 20 62 75  o be accurate bu
fee0: 74 20 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65 6e  t it.** is often
fef0: 20 63 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e 64   close.  The und
ff00: 65 72 6c 79 69 6e 67 20 56 46 53 20 6d 69 67 68  erlying VFS migh
ff10: 74 20 63 68 6f 6f 73 65 20 74 6f 20 70 72 65 61  t choose to prea
ff20: 6c 6c 6f 63 61 74 65 20 64 61 74 61 62 61 73 65  llocate database
ff30: 0a 2a 2a 20 66 69 6c 65 20 73 70 61 63 65 20 62  .** file space b
ff40: 61 73 65 64 20 6f 6e 20 74 68 69 73 20 68 69 6e  ased on this hin
ff50: 74 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 68 65  t in order to he
ff60: 6c 70 20 77 72 69 74 65 73 20 74 6f 20 74 68 65  lp writes to the
ff70: 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c   database.** fil
ff80: 65 20 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a 2a  e run faster..**
ff90: 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
ffa0: 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a  _FCNTL_CHUNK_SIZ
ffb0: 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
ffc0: 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53  TE_FCNTL_CHUNK_S
ffd0: 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73 20 75  IZE] opcode is u
ffe0: 73 65 64 20 74 6f 20 72 65 71 75 65 73 74 20 74  sed to request t
fff0: 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a 20 65  hat the VFS.** e
10000 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75 6e 63  xtends and trunc
10010 61 74 65 73 20 74 68 65 20 64 61 74 61 62 61 73  ates the databas
10020 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e 6b 73  e file in chunks
10030 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65 63 69   of a size speci
10040 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65 20 75  fied.** by the u
10050 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74 68 20  ser. The fourth 
10060 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c  argument to [sql
10070 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
10080 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a 20  l()] should .** 
10090 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e 74 65  point to an inte
100a0 67 65 72 20 28 74 79 70 65 20 69 6e 74 29 20 63  ger (type int) c
100b0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 65  ontaining the ne
100c0 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74 6f 20  w chunk-size to 
100d0 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65 20 6e  use.** for the n
100e0 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62 61 73  ominated databas
100f0 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20 64 61  e. Allocating da
10100 74 61 62 61 73 65 20 66 69 6c 65 20 73 70 61 63  tabase file spac
10110 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20 63 68  e in large.** ch
10120 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20 61 74  unks (say 1MB at
10130 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20 72 65   a time), may re
10140 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74 65 6d  duce file-system
10150 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61   fragmentation a
10160 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20 70 65  nd.** improve pe
10170 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 6f 6d  rformance on som
10180 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a 2a  e systems..**.**
10190 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
101a0 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52  NTL_FILE_POINTER
101b0 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
101c0 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49  E_FCNTL_FILE_POI
101d0 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73 20  NTER] opcode is 
101e0 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 61  used to obtain a
101f0 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74   pointer.** to t
10200 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  he [sqlite3_file
10210 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69 61  ] object associa
10220 74 65 64 20 77 69 74 68 20 61 20 70 61 72 74 69  ted with a parti
10230 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a 2a  cular database.*
10240 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 53  * connection.  S
10250 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45 5f  ee also [SQLITE_
10260 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f  FCNTL_JOURNAL_PO
10270 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  INTER]..**.** <l
10280 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
10290 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52  _JOURNAL_POINTER
102a0 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
102b0 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f  E_FCNTL_JOURNAL_
102c0 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20  POINTER] opcode 
102d0 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69  is used to obtai
102e0 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74  n a pointer.** t
102f0 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66  o the [sqlite3_f
10300 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f  ile] object asso
10310 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
10320 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28 65 69  journal file (ei
10330 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72 6f 6c  ther.** the [rol
10340 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 6f  lback journal] o
10350 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68 65  r the [write-ahe
10360 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61 20 70  ad log]) for a p
10370 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61  articular databa
10380 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e  se.** connection
10390 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c  .  See also [SQL
103a0 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50  ITE_FCNTL_FILE_P
103b0 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  OINTER]..**.** <
103c0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
103d0 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 5d 5d  L_SYNC_OMITTED]]
103e0 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 69 6e  .** No longer in
103f0 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e   use..**.** <li>
10400 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53  [[SQLITE_FCNTL_S
10410 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  YNC]].** The [SQ
10420 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5d  LITE_FCNTL_SYNC]
10430 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e 65 72   opcode is gener
10440 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  ated internally 
10450 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a 2a 2a  by SQLite and.**
10460 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56 46 53   sent to the VFS
10470 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65 66   immediately bef
10480 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20 6d 65  ore the xSync me
10490 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64 20  thod is invoked 
104a0 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61 73 65  on a.** database
104b0 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
104c0 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78 53 79  . Or, if the xSy
104d0 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f 74  nc method is not
104e0 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62 65 63   invoked .** bec
104f0 61 75 73 65 20 74 68 65 20 75 73 65 72 20 68 61  ause the user ha
10500 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53 51 4c  s configured SQL
10510 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b 50 52  ite with .** [PR
10520 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
10530 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63 68 72   | PRAGMA synchr
10540 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20 69 73  onous=OFF] it is
10550 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c 61 63   invoked in plac
10560 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78 53 79  e .** of the xSy
10570 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20 6d 6f  nc method. In mo
10580 73 74 20 63 61 73 65 73 2c 20 74 68 65 20 70 6f  st cases, the po
10590 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 20 70  inter argument p
105a0 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20 74 68  assed with.** th
105b0 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 20  is file-control 
105c0 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76 65 72  is NULL. However
105d0 2c 20 69 66 20 74 68 65 20 64 61 74 61 62 61 73  , if the databas
105e0 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67 20  e file is being 
105f0 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70 61 72  synced.** as par
10600 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64 61 74  t of a multi-dat
10610 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20 74 68  abase commit, th
10620 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74  e argument point
10630 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72 6d 69  s to a nul-termi
10640 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20  nated.** string 
10650 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 74  containing the t
10660 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61 73 74  ransactions mast
10670 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20  er-journal file 
10680 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68 61 74  name. VFSes that
10690 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65 65 64   .** do not need
106a0 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73 68 6f   this signal sho
106b0 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e  uld silently ign
106c0 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65 2e  ore this opcode.
106d0 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 0a 2a   Applications .*
106e0 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 61 6c  * should not cal
106f0 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  l [sqlite3_file_
10700 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68 20  control()] with 
10710 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73 20 64  this opcode as d
10720 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a 2a 20  oing so may .** 
10730 64 69 73 72 75 70 74 20 74 68 65 20 6f 70 65 72  disrupt the oper
10740 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 70 65  ation of the spe
10750 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73 20 74  cialized VFSes t
10760 68 61 74 20 64 6f 20 72 65 71 75 69 72 65 20 69  hat do require i
10770 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  t.  .**.** <li>[
10780 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f  [SQLITE_FCNTL_CO
10790 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d 5d 0a  MMIT_PHASETWO]].
107a0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
107b0 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41 53  CNTL_COMMIT_PHAS
107c0 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69 73 20  ETWO] opcode is 
107d0 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72 6e  generated intern
107e0 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 0a 2a  ally by SQLite.*
107f0 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20 74 68  * and sent to th
10800 65 20 56 46 53 20 61 66 74 65 72 20 61 20 74 72  e VFS after a tr
10810 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 62 65  ansaction has be
10820 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69 6d 6d  en committed imm
10830 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75 74 20  ediately.** but 
10840 62 65 66 6f 72 65 20 74 68 65 20 64 61 74 61 62  before the datab
10850 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65 64 2e  ase is unlocked.
10860 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20 6e   VFSes that do n
10870 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73 69 67  ot need this sig
10880 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20 73 69  nal.** should si
10890 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20 74 68  lently ignore th
108a0 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70 6c 69  is opcode. Appli
108b0 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e  cations should n
108c0 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c 69  ot call.** [sqli
108d0 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
108e0 28 29 5d 20 77 69 74 68 20 74 68 69 73 20 6f 70  ()] with this op
108f0 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20 73 6f  code as doing so
10900 20 6d 61 79 20 64 69 73 72 75 70 74 20 74 68 65   may disrupt the
10910 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20 6f   .** operation o
10920 66 20 74 68 65 20 73 70 65 63 69 61 6c 69 7a 65  f the specialize
10930 64 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20  d VFSes that do 
10940 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a 2a 2a  require it.  .**
10950 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
10960 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f  _FCNTL_WIN32_AV_
10970 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65 20  RETRY]].** ^The 
10980 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49  [SQLITE_FCNTL_WI
10990 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20 6f 70  N32_AV_RETRY] op
109a0 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
109b0 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f 6d 61  configure automa
109c0 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63 6f 75  tic.** retry cou
109d0 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76 61 6c  nts and interval
109e0 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20 64 69  s for certain di
109f0 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e  sk I/O operation
10a00 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77 69 6e  s for the.** win
10a10 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20 6f 72  dows [VFS] in or
10a20 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 72  der to provide r
10a30 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74 68 65  obustness in the
10a40 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a 2a 20   presence of.** 
10a50 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f 67 72  anti-virus progr
10a60 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75 6c 74  ams.  By default
10a70 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20 56 46  , the windows VF
10a80 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66 69 6c  S will retry fil
10a90 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c 65 20  e read,.** file 
10aa0 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c 65 20  write, and file 
10ab0 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f 6e  delete operation
10ac0 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d 65 73  s up to 10 times
10ad0 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79 0a 2a  , with a delay.*
10ae0 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73 65 63  * of 25 millisec
10af0 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68 65 20  onds before the 
10b00 66 69 72 73 74 20 72 65 74 72 79 20 61 6e 64 20  first retry and 
10b10 77 69 74 68 20 74 68 65 20 64 65 6c 61 79 20 69  with the delay i
10b20 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62 79 20  ncreasing.** by 
10b30 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 32 35  an additional 25
10b40 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 77 69   milliseconds wi
10b50 74 68 20 65 61 63 68 20 73 75 62 73 65 71 75 65  th each subseque
10b60 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69 73 0a  nt retry.  This.
10b70 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f 77 73  ** opcode allows
10b80 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c 75 65   these two value
10b90 73 20 28 31 30 20 72 65 74 72 69 65 73 20 61 6e  s (10 retries an
10ba0 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  d 25 millisecond
10bb0 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a 20 74  s of delay).** t
10bc0 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e 20 20  o be adjusted.  
10bd0 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 63  The values are c
10be0 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c 20 64  hanged for all d
10bf0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
10c00 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68  ons.** within th
10c10 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e 20  e same process. 
10c20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
10c30 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
10c40 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a 2a 2a   array of two.**
10c50 20 69 6e 74 65 67 65 72 73 20 77 68 65 72 65 20   integers where 
10c60 74 68 65 20 66 69 72 73 74 20 69 6e 74 65 67 65  the first intege
10c70 72 20 69 73 20 74 68 65 20 6e 65 77 20 72 65 74  r is the new ret
10c80 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74 68 65  ry count and the
10c90 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65 67   second.** integ
10ca0 65 72 20 69 73 20 74 68 65 20 64 65 6c 61 79 2e  er is the delay.
10cb0 20 20 49 66 20 65 69 74 68 65 72 20 69 6e 74 65    If either inte
10cc0 67 65 72 20 69 73 20 6e 65 67 61 74 69 76 65 2c  ger is negative,
10cd0 20 74 68 65 6e 20 74 68 65 20 73 65 74 74 69 6e   then the settin
10ce0 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61 6e  g.** is not chan
10cf0 67 65 64 20 62 75 74 20 69 6e 73 74 65 61 64 20  ged but instead 
10d00 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65 20  the prior value 
10d10 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e 67 20  of that setting 
10d20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 69 6e  is written.** in
10d30 74 6f 20 74 68 65 20 61 72 72 61 79 20 65 6e 74  to the array ent
10d40 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74 68 65  ry, allowing the
10d50 20 63 75 72 72 65 6e 74 20 72 65 74 72 79 20 73   current retry s
10d60 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a 2a 2a  ettings to be.**
10d70 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e 20 20   interrogated.  
10d80 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61 72 61  The zDbName para
10d90 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65 64  meter is ignored
10da0 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51  ..**.** <li>[[SQ
10db0 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53 49  LITE_FCNTL_PERSI
10dc0 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68 65  ST_WAL]].** ^The
10dd0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50   [SQLITE_FCNTL_P
10de0 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70 63 6f  ERSIST_WAL] opco
10df0 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73 65  de is used to se
10e00 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a 2a  t or query the.*
10e10 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b 57 41  * persistent [WA
10e20 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61 64 20  L | Write Ahead 
10e30 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20 20 42  Log] setting.  B
10e40 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 61  y default, the a
10e50 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72 69 74  uxiliary.** writ
10e60 65 20 61 68 65 61 64 20 6c 6f 67 20 61 6e 64 20  e ahead log and 
10e70 73 68 61 72 65 64 20 6d 65 6d 6f 72 79 20 66 69  shared memory fi
10e80 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74 72 61  les used for tra
10e90 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c  nsaction control
10ea0 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61 74 69  .** are automati
10eb0 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77 68  cally deleted wh
10ec0 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20 63 6f  en the latest co
10ed0 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20  nnection to the 
10ee0 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c 6f 73  database.** clos
10ef0 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70 65 72  es.  Setting per
10f00 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65  sistent WAL mode
10f10 20 63 61 75 73 65 73 20 74 68 6f 73 65 20 66 69   causes those fi
10f20 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74 20 61  les to persist a
10f30 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20 20  fter.** close.  
10f40 50 65 72 73 69 73 74 69 6e 67 20 74 68 65 20 66  Persisting the f
10f50 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c 20 77  iles is useful w
10f60 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63 65 73  hen other proces
10f70 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a  ses that do not.
10f80 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20 70 65  ** have write pe
10f90 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68 65 20  rmission on the 
10fa0 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61 69  directory contai
10fb0 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61 73  ning the databas
10fc0 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a 20 74  e file want.** t
10fd0 6f 20 72 65 61 64 20 74 68 65 20 64 61 74 61 62  o read the datab
10fe0 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74 68 65  ase file, as the
10ff0 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65 64 20   WAL and shared 
11000 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d 75 73  memory files mus
11010 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20 6f 72  t exist.** in or
11020 64 65 72 20 66 6f 72 20 74 68 65 20 64 61 74 61  der for the data
11030 62 61 73 65 20 74 6f 20 62 65 20 72 65 61 64 61  base to be reada
11040 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72 74 68  ble.  The fourth
11050 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a   parameter to.**
11060 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63   [sqlite3_file_c
11070 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20 74 68  ontrol()] for th
11080 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75 6c 64  is opcode should
11090 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   be a pointer to
110a0 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20   an integer..** 
110b0 54 68 61 74 20 69 6e 74 65 67 65 72 20 69 73 20  That integer is 
110c0 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70 65 72  0 to disable per
110d0 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65  sistent WAL mode
110e0 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65 20   or 1 to enable 
110f0 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20 57 41  persistent.** WA
11100 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65 20  L mode.  If the 
11110 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20 74  integer is -1, t
11120 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77 72  hen it is overwr
11130 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 63  itten with the c
11140 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20 70 65  urrent.** WAL pe
11150 72 73 69 73 74 65 6e 63 65 20 73 65 74 74 69 6e  rsistence settin
11160 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  g..**.** <li>[[S
11170 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45  QLITE_FCNTL_POWE
11180 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d  RSAFE_OVERWRITE]
11190 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54  ].** ^The [SQLIT
111a0 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41 46  E_FCNTL_POWERSAF
111b0 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63  E_OVERWRITE] opc
111c0 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  ode is used to s
111d0 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a  et or query the.
111e0 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 22 70  ** persistent "p
111f0 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77 72 69  owersafe-overwri
11200 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20 73 65  te" or "PSOW" se
11210 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53 4f 57  tting.  The PSOW
11220 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65 74 65   setting.** dete
11230 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51 4c 49  rmines the [SQLI
11240 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53 41  TE_IOCAP_POWERSA
11250 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 62 69  FE_OVERWRITE] bi
11260 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44 65 76  t of the.** xDev
11270 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
11280 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68 65 20  cs methods. The 
11290 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72  fourth parameter
112a0 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
112b0 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20  file_control()] 
112c0 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 20  for this opcode 
112d0 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69 6e  should be a poin
112e0 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65  ter to an intege
112f0 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65 67  r..** That integ
11300 65 72 20 69 73 20 30 20 74 6f 20 64 69 73 61 62  er is 0 to disab
11310 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 20 6d  le zero-damage m
11320 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62  ode or 1 to enab
11330 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 0a 2a  le zero-damage.*
11340 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65 20  * mode.  If the 
11350 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20 74  integer is -1, t
11360 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77 72  hen it is overwr
11370 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 63  itten with the c
11380 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d 64  urrent.** zero-d
11390 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74 74 69  amage mode setti
113a0 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ng..**.** <li>[[
113b0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56 45  SQLITE_FCNTL_OVE
113c0 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68 65  RWRITE]].** ^The
113d0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f   [SQLITE_FCNTL_O
113e0 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  VERWRITE] opcode
113f0 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 53   is invoked by S
11400 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70 65 6e  QLite after open
11410 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65 20 74  ing.** a write t
11420 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 69 6e  ransaction to in
11430 64 69 63 61 74 65 20 74 68 61 74 2c 20 75 6e 6c  dicate that, unl
11440 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c 65 64  ess it is rolled
11450 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65 0a 2a   back for some.*
11460 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20 65 6e  * reason, the en
11470 74 69 72 65 20 64 61 74 61 62 61 73 65 20 66 69  tire database fi
11480 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65 72 77  le will be overw
11490 72 69 74 74 65 6e 20 62 79 20 74 68 65 20 63 75  ritten by the cu
114a0 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e 73 61  rrent .** transa
114b0 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20 75  ction. This is u
114c0 73 65 64 20 62 79 20 56 41 43 55 55 4d 20 6f 70  sed by VACUUM op
114d0 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  erations..**.** 
114e0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
114f0 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a 20  TL_VFSNAME]].** 
11500 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e  ^The [SQLITE_FCN
11510 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70 63 6f  TL_VFSNAME] opco
11520 64 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  de can be used t
11530 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e 61 6d  o obtain the nam
11540 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56 46  es of.** all [VF
11550 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46 53 20  Ses] in the VFS 
11560 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61 6d 65  stack.  The name
11570 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56 46 53  s are of all VFS
11580 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65 0a 2a   shims and the.*
11590 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d 6c  * final bottom-l
115a0 65 76 65 6c 20 56 46 53 20 61 72 65 20 77 72 69  evel VFS are wri
115b0 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79  tten into memory
115c0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 0a   obtained from .
115d0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ** [sqlite3_mall
115e0 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20 72 65  oc()] and the re
115f0 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64 20 69  sult is stored i
11600 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61 72 69  n the char* vari
11610 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74 68 65  able.** that the
11620 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
11630 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 66 69  r of [sqlite3_fi
11640 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 70 6f  le_control()] po
11650 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68 65 20  ints to..** The 
11660 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f 6e  caller is respon
11670 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69 6e  sible for freein
11680 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68 65  g the memory whe
11690 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69 74 68  n done.  As with
116a0 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63 6f 6e  .** all file-con
116b0 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20 74 68  trol actions, th
116c0 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61 6e  ere is no guaran
116d0 74 65 65 20 74 68 61 74 20 74 68 69 73 20 77 69  tee that this wi
116e0 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20 64  ll actually.** d
116f0 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43 61 6c  o anything.  Cal
11700 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e 69 74  lers should init
11710 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61 72 2a  ialize the char*
11720 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61 20 4e   variable to a N
11730 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 69  ULL.** pointer i
11740 6e 20 63 61 73 65 20 74 68 69 73 20 66 69 6c 65  n case this file
11750 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74 20  -control is not 
11760 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20 54 68  implemented.  Th
11770 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 0a  is file-control.
11780 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66  ** is intended f
11790 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20 75 73  or diagnostic us
117a0 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  e only..**.** <l
117b0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
117c0 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a 2a  _VFS_POINTER]].*
117d0 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
117e0 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52  CNTL_VFS_POINTER
117f0 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20 61  ] opcode finds a
11800 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
11810 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56 46  top-level.** [VF
11820 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79 20 69  Ses] currently i
11830 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20 61 72  n use.  ^(The ar
11840 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a 20 73  gument X in.** s
11850 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
11860 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f 46 43  rol(db,SQLITE_FC
11870 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 2c  NTL_VFS_POINTER,
11880 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20 6f 66  X) must be.** of
11890 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65 33 5f   type "[sqlite3_
118a0 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69 73 20  vfs] **".  This 
118b0 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73 65 74  opcodes will set
118c0 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f 69 6e   *X.** to a poin
118d0 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70 2d 6c  ter to the top-l
118e0 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20 5e  evel VFS.)^.** ^
118f0 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20 6d  When there are m
11900 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68 69 6d  ultiple VFS shim
11910 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b 2c 20  s in the stack, 
11920 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69 6e 64  this opcode find
11930 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72 2d 6d  s the.** upper-m
11940 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a 2a  ost shim only..*
11950 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
11960 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 5d  E_FCNTL_PRAGMA]]
11970 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20 61 20  .** ^Whenever a 
11980 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d 65  [PRAGMA] stateme
11990 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20 61 6e  nt is parsed, an
119a0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50   [SQLITE_FCNTL_P
119b0 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65 20  RAGMA] .** file 
119c0 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e 74 20  control is sent 
119d0 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73 71 6c  to the open [sql
119e0 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63  ite3_file] objec
119f0 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a  t corresponding.
11a00 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ** to the databa
11a10 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69 63 68  se file to which
11a20 20 74 68 65 20 70 72 61 67 6d 61 20 73 74 61 74   the pragma stat
11a30 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20 5e 54  ement refers. ^T
11a40 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 74  he argument.** t
11a50 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  o the [SQLITE_FC
11a60 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65  NTL_PRAGMA] file
11a70 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e 20 61   control is an a
11a80 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e 74  rray of.** point
11a90 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20 28  ers to strings (
11aa0 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69 63 68  char**) in which
11ab0 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65 6d   the second elem
11ac0 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72 61 79  ent of the array
11ad0 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65 20  .** is the name 
11ae0 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 61 6e  of the pragma an
11af0 64 20 74 68 65 20 74 68 69 72 64 20 65 6c 65 6d  d the third elem
11b00 65 6e 74 20 69 73 20 74 68 65 20 61 72 67 75 6d  ent is the argum
11b10 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 70 72  ent to the.** pr
11b20 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69 66 20  agma or NULL if 
11b30 74 68 65 20 70 72 61 67 6d 61 20 68 61 73 20 6e  the pragma has n
11b40 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 54 68  o argument.  ^Th
11b50 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 6e  e handler for an
11b60 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  .** [SQLITE_FCNT
11b70 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20 63  L_PRAGMA] file c
11b80 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74 69 6f  ontrol can optio
11b90 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65 20 66  nally make the f
11ba0 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20  irst element.** 
11bb0 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20 61 72  of the char** ar
11bc0 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74 6f 20  gument point to 
11bd0 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  a string obtaine
11be0 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  d from [sqlite3_
11bf0 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f 72  mprintf()].** or
11c00 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20   the equivalent 
11c10 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e 67 20  and that string 
11c20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20  will become the 
11c30 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70 72  result of the pr
11c40 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65 20 65  agma or.** the e
11c50 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 66 20  rror message if 
11c60 74 68 65 20 70 72 61 67 6d 61 20 66 61 69 6c 73  the pragma fails
11c70 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53 51  . ^If the.** [SQ
11c80 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d  LITE_FCNTL_PRAGM
11c90 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  A] file control 
11ca0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
11cb0 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65 6e 20  NOTFOUND], then 
11cc0 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41 47  normal .** [PRAG
11cd0 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67 20 63  MA] processing c
11ce0 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66 20 74  ontinues.  ^If t
11cf0 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
11d00 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65  _PRAGMA].** file
11d10 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e 73   control returns
11d20 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68   [SQLITE_OK], th
11d30 65 6e 20 74 68 65 20 70 61 72 73 65 72 20 61 73  en the parser as
11d40 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a 2a  sumes that the.*
11d50 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64 6c 65  * VFS has handle
11d60 64 20 74 68 65 20 50 52 41 47 4d 41 20 69 74 73  d the PRAGMA its
11d70 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61 72 73  elf and the pars
11d80 65 72 20 67 65 6e 65 72 61 74 65 73 20 61 20 6e  er generates a n
11d90 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72 65 64  o-op.** prepared
11da0 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20 72 65   statement if re
11db0 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73 20 4e  sult string is N
11dc0 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72 65 74  ULL, or that ret
11dd0 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a 20 6f  urns a copy.** o
11de0 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 74 72  f the result str
11df0 69 6e 67 20 69 66 20 74 68 65 20 73 74 72 69 6e  ing if the strin
11e00 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a 2a  g is non-NULL..*
11e10 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49 54  * ^If the [SQLIT
11e20 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20  E_FCNTL_PRAGMA] 
11e30 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74  file control ret
11e40 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65 73 75  urns.** any resu
11e50 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20 74 68  lt code other th
11e60 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f  an [SQLITE_OK] o
11e70 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  r [SQLITE_NOTFOU
11e80 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73 0a  ND], that means.
11e90 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46 53 20  ** that the VFS 
11ea0 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20 65  encountered an e
11eb0 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e 64 6c  rror while handl
11ec0 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41 5d  ing the [PRAGMA]
11ed0 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70   and the.** comp
11ee0 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 50  ilation of the P
11ef0 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69 74 68  RAGMA fails with
11f00 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54 68 65   an error.  ^The
11f10 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50   [SQLITE_FCNTL_P
11f20 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20 63  RAGMA].** file c
11f30 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20 61 74  ontrol occurs at
11f40 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f   the beginning o
11f50 66 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65  f pragma stateme
11f60 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e 64 20  nt analysis and 
11f70 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62 6c 65  so.** it is able
11f80 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62 75 69   to override bui
11f90 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d 20 73  lt-in [PRAGMA] s
11fa0 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a  tatements..**.**
11fb0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
11fc0 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52 5d  NTL_BUSYHANDLER]
11fd0 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54  ].** ^The [SQLIT
11fe0 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44  E_FCNTL_BUSYHAND
11ff0 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e  LER].** file-con
12000 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e 76 6f  trol may be invo
12010 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20 6f 6e  ked by SQLite on
12020 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
12030 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73 68 6f  le handle.** sho
12040 72 74 6c 79 20 61 66 74 65 72 20 69 74 20 69 73  rtly after it is
12050 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64 65 72   opened in order
12060 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 63 75   to provide a cu
12070 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20 61 63  stom VFS with ac
12080 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63  cess.** to the c
12090 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73 79 2d  onnections busy-
120a0 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b  handler callback
120b0 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69  . The argument i
120c0 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64 20  s of type (void 
120d0 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72 72 61  **).** - an arra
120e0 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64 20 2a  y of two (void *
120f0 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66 69  ) values. The fi
12100 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61 63 74  rst (void *) act
12110 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a 20  ually points.** 
12120 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66  to a function of
12130 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29 28 76   type (int (*)(v
12140 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72 64 65  oid *)). In orde
12150 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20  r to invoke the 
12160 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 62  connections.** b
12170 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74 68 69  usy-handler, thi
12180 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c  s function shoul
12190 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74  d be invoked wit
121a0 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28 76 6f  h the second (vo
121b0 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68 65 20  id *) in.** the 
121c0 61 72 72 61 79 20 61 73 20 74 68 65 20 6f 6e 6c  array as the onl
121d0 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20 69  y argument. If i
121e0 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65  t returns non-ze
121f0 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f 70 65  ro, then the ope
12200 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c 64  ration.** should
12210 20 62 65 20 72 65 74 72 69 65 64 2e 20 49 66 20   be retried. If 
12220 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 2c  it returns zero,
12230 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46 53 20   the custom VFS 
12240 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e 20 74  should abandon t
12250 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6f 70  he.** current op
12260 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 3c  eration..**.** <
12270 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
12280 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 5d  L_TEMPFILENAME]]
12290 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69 6f 6e  .** ^Application
122a0 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 65 20   can invoke the 
122b0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45  [SQLITE_FCNTL_TE
122c0 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69 6c 65  MPFILENAME] file
122d0 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20 68  -control.** to h
122e0 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e 65 72  ave SQLite gener
122f0 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f 72 61  ate a.** tempora
12300 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73 69 6e  ry filename usin
12310 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72  g the same algor
12320 69 74 68 6d 20 74 68 61 74 20 69 73 20 66 6f 6c  ithm that is fol
12330 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72 61 74  lowed to generat
12340 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20 66  e.** temporary f
12350 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54 45 4d  ilenames for TEM
12360 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74 68  P tables and oth
12370 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65 73  er internal uses
12380 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75 6d 65  .  The.** argume
12390 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20 63  nt should be a c
123a0 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c  har** which will
123b0 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20   be filled with 
123c0 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a 20  the filename.** 
123d0 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d  written into mem
123e0 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ory obtained fro
123f0 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  m [sqlite3_mallo
12400 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c 6c 65  c()].  The calle
12410 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76 6f  r should.** invo
12420 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  ke [sqlite3_free
12430 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73 75 6c  ()] on the resul
12440 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d 65 6d  t to avoid a mem
12450 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a 20  ory leak..**.** 
12460 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12470 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a  TL_MMAP_SIZE]].*
12480 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
12490 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66  NTL_MMAP_SIZE] f
124a0 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 75  ile control is u
124b0 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f 72 20  sed to query or 
124c0 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78 69 6d  set the.** maxim
124d0 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  um number of byt
124e0 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20  es that will be 
124f0 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d  used for memory-
12500 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20 54  mapped I/O..** T
12510 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  he argument is a
12520 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76 61   pointer to a va
12530 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71 6c 69  lue of type sqli
12540 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74 0a 2a  te3_int64 that.*
12550 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f 72 79  * is an advisory
12560 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
12570 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65 20  of bytes in the 
12580 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79 20 6d  file to memory m
12590 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f 69 6e  ap.  The.** poin
125a0 74 65 72 20 69 73 20 6f 76 65 72 77 72 69 74 74  ter is overwritt
125b0 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c 64 20  en with the old 
125c0 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69 6d 69  value.  The limi
125d0 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65 64  t is not changed
125e0 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65   if.** the value
125f0 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f 69 6e   originally poin
12600 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74 69  ted to is negati
12610 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20 63  ve, and so the c
12620 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a 2a 2a  urrent limit .**
12630 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64 20   can be queried 
12640 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20 61 20  by passing in a 
12650 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 65 67  pointer to a neg
12660 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20 20 54  ative number.  T
12670 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e 74  his.** file-cont
12680 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e 74 65  rol is used inte
12690 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c 65 6d  rnally to implem
126a0 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  ent [PRAGMA mmap
126b0 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  _size]..**.** <l
126c0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
126d0 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68 65 20  _TRACE]].** The 
126e0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52  [SQLITE_FCNTL_TR
126f0 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  ACE] file contro
12700 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76 69 73  l provides advis
12710 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  ory information.
12720 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20 61 62  ** to the VFS ab
12730 6f 75 74 20 77 68 61 74 20 74 68 65 20 68 69 67  out what the hig
12740 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20 74 68  her layers of th
12750 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20 61  e SQLite stack a
12760 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68 69  re doing..** Thi
12770 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69  s file control i
12780 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20 56  s used by some V
12790 46 53 20 61 63 74 69 76 69 74 79 20 74 72 61 63  FS activity trac
127a0 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a 20  ing [shims]..** 
127b0 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
127c0 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65  a zero-terminate
127d0 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67 68 65  d string.  Highe
127e0 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65 0a  r layers in the.
127f0 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20  ** SQLite stack 
12800 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69 6e 73  may generate ins
12810 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73 20 66  tances of this f
12820 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66 0a 2a  ile control if.*
12830 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55 53  * the [SQLITE_US
12840 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20 63  E_FCNTL_TRACE] c
12850 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
12860 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a  on is enabled..*
12870 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
12880 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45  E_FCNTL_HAS_MOVE
12890 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  D]].** The [SQLI
128a0 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
128b0 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  ED] file control
128c0 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73 20   interprets its 
128d0 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a 2a 2a  argument as a.**
128e0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
128f0 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20 77 72  nteger and it wr
12900 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69  ites a boolean i
12910 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65 72  nto that integer
12920 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f 6e   depending.** on
12930 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
12940 74 68 65 20 66 69 6c 65 20 68 61 73 20 62 65 65  the file has bee
12950 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76 65 64  n renamed, moved
12960 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73 69 6e  , or deleted sin
12970 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66 69 72  ce it.** was fir
12980 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a 2a  st opened..**.**
12990 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
129a0 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41  NTL_WIN32_GET_HA
129b0 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  NDLE]].** The [S
129c0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
129d0 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70  2_GET_HANDLE] op
129e0 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64  code can be used
129f0 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 0a 2a   to obtain the.*
12a00 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74  * underlying nat
12a10 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20  ive file handle 
12a20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
12a30 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e 20 20  a file handle.  
12a40 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63 6f 6e  This file.** con
12a50 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73 20  trol interprets 
12a60 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20  its argument as 
12a70 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  a pointer to a n
12a80 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c  ative file handl
12a90 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65 73 20  e and.** writes 
12aa0 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76 61  the resulting va
12ab0 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a 2a  lue there..**.**
12ac0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12ad0 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48 41  NTL_WIN32_SET_HA
12ae0 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  NDLE]].** The [S
12af0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
12b00 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70  2_SET_HANDLE] op
12b10 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f 72  code is used for
12b20 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68 69   debugging.  Thi
12b30 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75 73  s.** opcode caus
12b40 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e 74  es the xFileCont
12b50 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 73 77  rol method to sw
12b60 61 70 20 74 68 65 20 66 69 6c 65 20 68 61 6e 64  ap the file hand
12b70 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e 65 0a  le with the one.
12b80 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20 62 79  ** pointed to by
12b90 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d 65   the pArg argume
12ba0 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61 62 69  nt.  This capabi
12bb0 6c 69 74 79 20 69 73 20 75 73 65 64 20 64 75 72  lity is used dur
12bc0 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a 20 61  ing testing.** a
12bd0 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f  nd only needs to
12be0 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 77 68   be supported wh
12bf0 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54 20 69  en SQLITE_TEST i
12c00 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a  s defined..**.**
12c10 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12c20 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d 0a  NTL_WAL_BLOCK]].
12c30 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
12c40 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 20  CNTL_WAL_BLOCK] 
12c50 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 74  is a signal to t
12c60 68 65 20 56 46 53 20 6c 61 79 65 72 20 74 68 61  he VFS layer tha
12c70 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20 62 65  t it might.** be
12c80 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20 74 6f   advantageous to
12c90 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 6e 65   block on the ne
12ca0 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66 20 74  xt WAL lock if t
12cb0 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74 20 69  he lock is not i
12cc0 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 61 76  mmediately.** av
12cd0 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 57 41  ailable.  The WA
12ce0 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73 73 75  L subsystem issu
12cf0 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c 20 64  es this signal d
12d00 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20 63 69  uring rare.** ci
12d10 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e 20 6f  rcumstances in o
12d20 72 64 65 72 20 74 6f 20 66 69 78 20 61 20 70 72  rder to fix a pr
12d30 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69 6f 72  oblem with prior
12d40 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e 0a 2a  ity inversion..*
12d50 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73  * Applications s
12d60 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f 65  hould <em>not</e
12d70 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69 6c 65  m> use this file
12d80 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a 20  -control..**.** 
12d90 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12da0 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20 54  TL_ZIPVFS]].** T
12db0 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12dc0 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64 65 20  _ZIPVFS] opcode 
12dd0 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
12de0 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e 20 41  y zipvfs only. A
12df0 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46 53 20  ll other.** VFS 
12e00 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53 51  should return SQ
12e10 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66 6f  LITE_NOTFOUND fo
12e20 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 0a 2a  r this opcode..*
12e30 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
12e40 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a 2a  E_FCNTL_RBU]].**
12e50 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
12e60 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65 20 69  TL_RBU] opcode i
12e70 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79  s implemented by
12e80 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46 53   the special VFS
12e90 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68 65 20   used by.** the 
12ea0 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20 6f 6e  RBU extension on
12eb0 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 56  ly.  All other V
12ec0 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  FS should return
12ed0 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44   SQLITE_NOTFOUND
12ee0 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f 70 63   for.** this opc
12ef0 6f 64 65 2e 20 20 0a 2a 2a 20 3c 2f 75 6c 3e 0a  ode.  .** </ul>.
12f00 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
12f10 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54  E_FCNTL_LOCKSTAT
12f20 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
12f30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
12f40 5f 46 43 4e 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50  _FCNTL_GET_LOCKP
12f50 52 4f 58 59 46 49 4c 45 20 20 20 20 20 20 20 32  ROXYFILE       2
12f60 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
12f70 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b 50 52  FCNTL_SET_LOCKPR
12f80 4f 58 59 46 49 4c 45 20 20 20 20 20 20 20 33 0a  OXYFILE       3.
12f90 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
12fa0 43 4e 54 4c 5f 4c 41 53 54 5f 45 52 52 4e 4f 20  CNTL_LAST_ERRNO 
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 34 0a 23               4.#
12fc0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
12fd0 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54 20 20 20  NTL_SIZE_HINT   
12fe0 20 20 20 20 20 20 20 20 20 20 20 20 35 0a 23 64              5.#d
12ff0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
13000 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45 20 20 20  TL_CHUNK_SIZE   
13010 20 20 20 20 20 20 20 20 20 20 20 36 0a 23 64 65             6.#de
13020 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13030 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52 20 20  L_FILE_POINTER  
13040 20 20 20 20 20 20 20 20 20 20 37 0a 23 64 65 66            7.#def
13050 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13060 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 20 20 20  _SYNC_OMITTED   
13070 20 20 20 20 20 20 20 20 20 38 0a 23 64 65 66 69           8.#defi
13080 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13090 57 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 20 20  WIN32_AV_RETRY  
130a0 20 20 20 20 20 20 20 20 39 0a 23 64 65 66 69 6e          9.#defin
130b0 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50  e SQLITE_FCNTL_P
130c0 45 52 53 49 53 54 5f 57 41 4c 20 20 20 20 20 20  ERSIST_WAL      
130d0 20 20 20 20 20 20 31 30 0a 23 64 65 66 69 6e 65        10.#define
130e0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56   SQLITE_FCNTL_OV
130f0 45 52 57 52 49 54 45 20 20 20 20 20 20 20 20 20  ERWRITE         
13100 20 20 20 20 20 31 31 0a 23 64 65 66 69 6e 65 20       11.#define 
13110 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 56 46 53  SQLITE_FCNTL_VFS
13120 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20 20 20  NAME            
13130 20 20 20 20 31 32 0a 23 64 65 66 69 6e 65 20 53      12.#define S
13140 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45  QLITE_FCNTL_POWE
13150 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20  RSAFE_OVERWRITE 
13160 20 20 20 31 33 0a 23 64 65 66 69 6e 65 20 53 51     13.#define SQ
13170 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d  LITE_FCNTL_PRAGM
13180 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  A               
13190 20 20 31 34 0a 23 64 65 66 69 6e 65 20 53 51 4c    14.#define SQL
131a0 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41  ITE_FCNTL_BUSYHA
131b0 4e 44 4c 45 52 20 20 20 20 20 20 20 20 20 20 20  NDLER           
131c0 20 31 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   15.#define SQLI
131d0 54 45 5f 46 43 4e 54 4c 5f 54 45 4d 50 46 49 4c  TE_FCNTL_TEMPFIL
131e0 45 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20 20  ENAME           
131f0 31 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  16.#define SQLIT
13200 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a  E_FCNTL_MMAP_SIZ
13210 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31  E              1
13220 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  8.#define SQLITE
13230 5f 46 43 4e 54 4c 5f 54 52 41 43 45 20 20 20 20  _FCNTL_TRACE    
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39                19
13250 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13260 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45 44 20  FCNTL_HAS_MOVED 
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30 0a               20.
13280 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
13290 43 4e 54 4c 5f 53 59 4e 43 20 20 20 20 20 20 20  CNTL_SYNC       
132a0 20 20 20 20 20 20 20 20 20 20 20 20 32 31 0a 23              21.#
132b0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
132c0 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41 53 45  NTL_COMMIT_PHASE
132d0 54 57 4f 20 20 20 20 20 20 20 20 32 32 0a 23 64  TWO        22.#d
132e0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
132f0 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48 41 4e  TL_WIN32_SET_HAN
13300 44 4c 45 20 20 20 20 20 20 20 32 33 0a 23 64 65  DLE       23.#de
13310 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13320 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 20 20 20 20 20  L_WAL_BLOCK     
13330 20 20 20 20 20 20 20 20 20 32 34 0a 23 64 65 66           24.#def
13340 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13350 5f 5a 49 50 56 46 53 20 20 20 20 20 20 20 20 20  _ZIPVFS         
13360 20 20 20 20 20 20 20 20 32 35 0a 23 64 65 66 69          25.#defi
13370 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13380 52 42 55 20 20 20 20 20 20 20 20 20 20 20 20 20  RBU             
13390 20 20 20 20 20 20 20 32 36 0a 23 64 65 66 69 6e         26.#defin
133a0 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 56  e SQLITE_FCNTL_V
133b0 46 53 5f 50 4f 49 4e 54 45 52 20 20 20 20 20 20  FS_POINTER      
133c0 20 20 20 20 20 20 32 37 0a 23 64 65 66 69 6e 65        27.#define
133d0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f   SQLITE_FCNTL_JO
133e0 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52 20 20 20  URNAL_POINTER   
133f0 20 20 20 20 20 32 38 0a 23 64 65 66 69 6e 65 20       28.#define 
13400 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
13410 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 20 20 20  32_GET_HANDLE   
13420 20 20 20 20 32 39 0a 23 64 65 66 69 6e 65 20 53      29.#define S
13430 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 44 42 20  QLITE_FCNTL_PDB 
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13450 20 20 20 33 30 0a 0a 2f 2a 20 64 65 70 72 65 63     30../* deprec
13460 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a 23 64  ated names */.#d
13470 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47 45 54  efine SQLITE_GET
13480 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20  _LOCKPROXYFILE  
13490 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c      SQLITE_FCNTL
134a0 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49  _GET_LOCKPROXYFI
134b0 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  LE.#define SQLIT
134c0 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46  E_SET_LOCKPROXYF
134d0 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54 45 5f  ILE      SQLITE_
134e0 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b 50 52  FCNTL_SET_LOCKPR
134f0 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e 65 20  OXYFILE.#define 
13500 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52 52 4e  SQLITE_LAST_ERRN
13510 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51  O             SQ
13520 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f  LITE_FCNTL_LAST_
13530 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41  ERRNO.../*.** CA
13540 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20 48 61  PI3REF: Mutex Ha
13550 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6d  ndle.**.** The m
13560 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69 74 68  utex module with
13570 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69 6e 65  in SQLite define
13580 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  s [sqlite3_mutex
13590 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20 61 62  ] to be an.** ab
135a0 73 74 72 61 63 74 20 74 79 70 65 20 66 6f 72 20  stract type for 
135b0 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74 2e 20  a mutex object. 
135c0 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   The SQLite core
135d0 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a 2a 20   never looks.** 
135e0 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  at the internal 
135f0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f  representation o
13600 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 6d 75  f an [sqlite3_mu
13610 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79 0a 2a  tex].  It only.*
13620 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70 6f 69  * deals with poi
13630 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b 73 71  nters to the [sq
13640 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f 62 6a  lite3_mutex] obj
13650 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74 65 78  ect..**.** Mutex
13660 65 73 20 61 72 65 20 63 72 65 61 74 65 64 20 75  es are created u
13670 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75  sing [sqlite3_mu
13680 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f  tex_alloc()]..*/
13690 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
136a0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20 73 71  sqlite3_mutex sq
136b0 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a 2f 2a  lite3_mutex;../*
136c0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c 6f  .** CAPI3REF: Lo
136d0 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69 6f 6e  adable Extension
136e0 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41 20 70   Thunk.**.** A p
136f0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6f 70  ointer to the op
13700 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61 70 69  aque sqlite3_api
13710 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75 63 74  _routines struct
13720 75 72 65 20 69 73 20 70 61 73 73 65 64 20 61 73  ure is passed as
13730 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20 70 61  .** the third pa
13740 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74 72 79  rameter to entry
13750 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f 61 64   points of [load
13760 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73 5d  able extensions]
13770 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72 75 63  .  This.** struc
13780 74 75 72 65 20 6d 75 73 74 20 62 65 20 74 79 70  ture must be typ
13790 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65 72 20  edefed in order 
137a0 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 63  to work around c
137b0 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 73  ompiler warnings
137c0 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c 61 74  .** on some plat
137d0 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65 64 65  forms..*/.typede
137e0 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
137f0 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 71  _api_routines sq
13800 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e  lite3_api_routin
13810 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  es;../*.** CAPI3
13820 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66 61 63  REF: OS Interfac
13830 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 41  e Object.**.** A
13840 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
13850 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62  e sqlite3_vfs ob
13860 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74 68 65  ject defines the
13870 20 69 6e 74 65 72 66 61 63 65 20 62 65 74 77 65   interface betwe
13880 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69 74 65  en.** the SQLite
13890 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20 75 6e   core and the un
138a0 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69  derlying operati
138b0 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68 65 20  ng system.  The 
138c0 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68 65 20  "vfs".** in the 
138d0 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62 6a 65  name of the obje
138e0 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20 22 76  ct stands for "v
138f0 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79 73 74  irtual file syst
13900 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74 68 65  em".  See.** the
13910 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f 63 75   [VFS | VFS docu
13920 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72 20 66  mentation] for f
13930 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69  urther informati
13940 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 76 61  on..**.** The va
13950 6c 75 65 20 6f 66 20 74 68 65 20 69 56 65 72 73  lue of the iVers
13960 69 6f 6e 20 66 69 65 6c 64 20 69 73 20 69 6e 69  ion field is ini
13970 74 69 61 6c 6c 79 20 31 20 62 75 74 20 6d 61 79  tially 1 but may
13980 20 62 65 20 6c 61 72 67 65 72 20 69 6e 0a 2a 2a   be larger in.**
13990 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
139a0 20 6f 66 20 53 51 4c 69 74 65 2e 20 20 41 64 64   of SQLite.  Add
139b0 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 20 6d  itional fields m
139c0 61 79 20 62 65 20 61 70 70 65 6e 64 65 64 20 74  ay be appended t
139d0 6f 20 74 68 69 73 0a 2a 2a 20 6f 62 6a 65 63 74  o this.** object
139e0 20 77 68 65 6e 20 74 68 65 20 69 56 65 72 73 69   when the iVersi
139f0 6f 6e 20 76 61 6c 75 65 20 69 73 20 69 6e 63 72  on value is incr
13a00 65 61 73 65 64 2e 20 20 4e 6f 74 65 20 74 68 61  eased.  Note tha
13a10 74 20 74 68 65 20 73 74 72 75 63 74 75 72 65 0a  t the structure.
13a20 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65  ** of the sqlite
13a30 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63 68 61  3_vfs object cha
13a40 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72 61 6e  nges in the tran
13a50 73 61 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 0a  saction between.
13a60 2a 2a 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  ** SQLite versio
13a70 6e 20 33 2e 35 2e 39 20 61 6e 64 20 33 2e 36 2e  n 3.5.9 and 3.6.
13a80 30 20 61 6e 64 20 79 65 74 20 74 68 65 20 69 56  0 and yet the iV
13a90 65 72 73 69 6f 6e 20 66 69 65 6c 64 20 77 61 73  ersion field was
13aa0 20 6e 6f 74 0a 2a 2a 20 6d 6f 64 69 66 69 65 64   not.** modified
13ab0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 7a 4f 73  ..**.** The szOs
13ac0 46 69 6c 65 20 66 69 65 6c 64 20 69 73 20 74 68  File field is th
13ad0 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 75  e size of the su
13ae0 62 63 6c 61 73 73 65 64 20 5b 73 71 6c 69 74 65  bclassed [sqlite
13af0 33 5f 66 69 6c 65 5d 0a 2a 2a 20 73 74 72 75 63  3_file].** struc
13b00 74 75 72 65 20 75 73 65 64 20 62 79 20 74 68 69  ture used by thi
13b10 73 20 56 46 53 2e 20 20 6d 78 50 61 74 68 6e 61  s VFS.  mxPathna
13b20 6d 65 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75  me is the maximu
13b30 6d 20 6c 65 6e 67 74 68 20 6f 66 0a 2a 2a 20 61  m length of.** a
13b40 20 70 61 74 68 6e 61 6d 65 20 69 6e 20 74 68 69   pathname in thi
13b50 73 20 56 46 53 2e 0a 2a 2a 0a 2a 2a 20 52 65 67  s VFS..**.** Reg
13b60 69 73 74 65 72 65 64 20 73 71 6c 69 74 65 33 5f  istered sqlite3_
13b70 76 66 73 20 6f 62 6a 65 63 74 73 20 61 72 65 20  vfs objects are 
13b80 6b 65 70 74 20 6f 6e 20 61 20 6c 69 6e 6b 65 64  kept on a linked
13b90 20 6c 69 73 74 20 66 6f 72 6d 65 64 20 62 79 0a   list formed by.
13ba0 2a 2a 20 74 68 65 20 70 4e 65 78 74 20 70 6f 69  ** the pNext poi
13bb0 6e 74 65 72 2e 20 20 54 68 65 20 5b 73 71 6c 69  nter.  The [sqli
13bc0 74 65 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72  te3_vfs_register
13bd0 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69  ()].** and [sqli
13be0 74 65 33 5f 76 66 73 5f 75 6e 72 65 67 69 73 74  te3_vfs_unregist
13bf0 65 72 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73  er()] interfaces
13c00 20 6d 61 6e 61 67 65 20 74 68 69 73 20 6c 69 73   manage this lis
13c10 74 0a 2a 2a 20 69 6e 20 61 20 74 68 72 65 61 64  t.** in a thread
13c20 2d 73 61 66 65 20 77 61 79 2e 20 20 54 68 65 20  -safe way.  The 
13c30 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 66 69 6e  [sqlite3_vfs_fin
13c40 64 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a  d()] interface.*
13c50 2a 20 73 65 61 72 63 68 65 73 20 74 68 65 20 6c  * searches the l
13c60 69 73 74 2e 20 20 4e 65 69 74 68 65 72 20 74 68  ist.  Neither th
13c70 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f  e application co
13c80 64 65 20 6e 6f 72 20 74 68 65 20 56 46 53 0a 2a  de nor the VFS.*
13c90 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  * implementation
13ca0 20 73 68 6f 75 6c 64 20 75 73 65 20 74 68 65 20   should use the 
13cb0 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a  pNext pointer..*
13cc0 2a 0a 2a 2a 20 54 68 65 20 70 4e 65 78 74 20 66  *.** The pNext f
13cd0 69 65 6c 64 20 69 73 20 74 68 65 20 6f 6e 6c 79  ield is the only
13ce0 20 66 69 65 6c 64 20 69 6e 20 74 68 65 20 73 71   field in the sq
13cf0 6c 69 74 65 33 5f 76 66 73 0a 2a 2a 20 73 74 72  lite3_vfs.** str
13d00 75 63 74 75 72 65 20 74 68 61 74 20 53 51 4c 69  ucture that SQLi
13d10 74 65 20 77 69 6c 6c 20 65 76 65 72 20 6d 6f 64  te will ever mod
13d20 69 66 79 2e 20 20 53 51 4c 69 74 65 20 77 69 6c  ify.  SQLite wil
13d30 6c 20 6f 6e 6c 79 20 61 63 63 65 73 73 0a 2a 2a  l only access.**
13d40 20 6f 72 20 6d 6f 64 69 66 79 20 74 68 69 73 20   or modify this 
13d50 66 69 65 6c 64 20 77 68 69 6c 65 20 68 6f 6c 64  field while hold
13d60 69 6e 67 20 61 20 70 61 72 74 69 63 75 6c 61 72  ing a particular
13d70 20 73 74 61 74 69 63 20 6d 75 74 65 78 2e 0a 2a   static mutex..*
13d80 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  * The applicatio
13d90 6e 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 6d  n should never m
13da0 6f 64 69 66 79 20 61 6e 79 74 68 69 6e 67 20 77  odify anything w
13db0 69 74 68 69 6e 20 74 68 65 20 73 71 6c 69 74 65  ithin the sqlite
13dc0 33 5f 76 66 73 0a 2a 2a 20 6f 62 6a 65 63 74 20  3_vfs.** object 
13dd0 6f 6e 63 65 20 74 68 65 20 6f 62 6a 65 63 74 20  once the object 
13de0 68 61 73 20 62 65 65 6e 20 72 65 67 69 73 74 65  has been registe
13df0 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 7a  red..**.** The z
13e00 4e 61 6d 65 20 66 69 65 6c 64 20 68 6f 6c 64 73  Name field holds
13e10 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
13e20 20 56 46 53 20 6d 6f 64 75 6c 65 2e 20 20 54 68   VFS module.  Th
13e30 65 20 6e 61 6d 65 20 6d 75 73 74 0a 2a 2a 20 62  e name must.** b
13e40 65 20 75 6e 69 71 75 65 20 61 63 72 6f 73 73 20  e unique across 
13e50 61 6c 6c 20 56 46 53 20 6d 6f 64 75 6c 65 73 2e  all VFS modules.
13e60 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74 65 33  .**.** [[sqlite3
13e70 5f 76 66 73 2e 78 4f 70 65 6e 5d 5d 0a 2a 2a 20  _vfs.xOpen]].** 
13e80 5e 53 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65  ^SQLite guarante
13e90 65 73 20 74 68 61 74 20 74 68 65 20 7a 46 69 6c  es that the zFil
13ea0 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20  ename parameter 
13eb0 74 6f 20 78 4f 70 65 6e 0a 2a 2a 20 69 73 20 65  to xOpen.** is e
13ec0 69 74 68 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69  ither a NULL poi
13ed0 6e 74 65 72 20 6f 72 20 73 74 72 69 6e 67 20 6f  nter or string o
13ee0 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
13ef0 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65 28 29 20  xFullPathname() 
13f00 77 69 74 68 20 61 6e 20 6f 70 74 69 6f 6e 61 6c  with an optional
13f10 20 73 75 66 66 69 78 20 61 64 64 65 64 2e 0a 2a   suffix added..*
13f20 2a 20 5e 49 66 20 61 20 73 75 66 66 69 78 20 69  * ^If a suffix i
13f30 73 20 61 64 64 65 64 20 74 6f 20 74 68 65 20 7a  s added to the z
13f40 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74  Filename paramet
13f50 65 72 2c 20 69 74 20 77 69 6c 6c 0a 2a 2a 20 63  er, it will.** c
13f60 6f 6e 73 69 73 74 20 6f 66 20 61 20 73 69 6e 67  onsist of a sing
13f70 6c 65 20 22 2d 22 20 63 68 61 72 61 63 74 65 72  le "-" character
13f80 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6e 6f 20   followed by no 
13f90 6d 6f 72 65 20 74 68 61 6e 0a 2a 2a 20 31 31 20  more than.** 11 
13fa0 61 6c 70 68 61 6e 75 6d 65 72 69 63 20 61 6e 64  alphanumeric and
13fb0 2f 6f 72 20 22 2d 22 20 63 68 61 72 61 63 74 65  /or "-" characte
13fc0 72 73 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 66  rs..** ^SQLite f
13fd0 75 72 74 68 65 72 20 67 75 61 72 61 6e 74 65 65  urther guarantee
13fe0 73 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 73 74  s that.** the st
13ff0 72 69 6e 67 20 77 69 6c 6c 20 62 65 20 76 61 6c  ring will be val
14000 69 64 20 61 6e 64 20 75 6e 63 68 61 6e 67 65 64  id and unchanged
14010 20 75 6e 74 69 6c 20 78 43 6c 6f 73 65 28 29 20   until xClose() 
14020 69 73 0a 2a 2a 20 63 61 6c 6c 65 64 2e 20 42 65  is.** called. Be
14030 63 61 75 73 65 20 6f 66 20 74 68 65 20 70 72 65  cause of the pre
14040 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65 2c 0a  vious sentence,.
14050 2a 2a 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  ** the [sqlite3_
14060 66 69 6c 65 5d 20 63 61 6e 20 73 61 66 65 6c 79  file] can safely
14070 20 73 74 6f 72 65 20 61 20 70 6f 69 6e 74 65 72   store a pointer
14080 20 74 6f 20 74 68 65 0a 2a 2a 20 66 69 6c 65 6e   to the.** filen
14090 61 6d 65 20 69 66 20 69 74 20 6e 65 65 64 73 20  ame if it needs 
140a0 74 6f 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20  to remember the 
140b0 66 69 6c 65 6e 61 6d 65 20 66 6f 72 20 73 6f 6d  filename for som
140c0 65 20 72 65 61 73 6f 6e 2e 0a 2a 2a 20 49 66 20  e reason..** If 
140d0 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61  the zFilename pa
140e0 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70 65 6e  rameter to xOpen
140f0 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
14100 65 72 20 74 68 65 6e 20 78 4f 70 65 6e 0a 2a 2a  er then xOpen.**
14110 20 6d 75 73 74 20 69 6e 76 65 6e 74 20 69 74 73   must invent its
14120 20 6f 77 6e 20 74 65 6d 70 6f 72 61 72 79 20 6e   own temporary n
14130 61 6d 65 20 66 6f 72 20 74 68 65 20 66 69 6c 65  ame for the file
14140 2e 20 20 5e 57 68 65 6e 65 76 65 72 20 74 68 65  .  ^Whenever the
14150 20 0a 2a 2a 20 78 46 69 6c 65 6e 61 6d 65 20 70   .** xFilename p
14160 61 72 61 6d 65 74 65 72 20 69 73 20 4e 55 4c 4c  arameter is NULL
14170 20 69 74 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65   it will also be
14180 20 74 68 65 20 63 61 73 65 20 74 68 61 74 20 74   the case that t
14190 68 65 0a 2a 2a 20 66 6c 61 67 73 20 70 61 72 61  he.** flags para
141a0 6d 65 74 65 72 20 77 69 6c 6c 20 69 6e 63 6c 75  meter will inclu
141b0 64 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  de [SQLITE_OPEN_
141c0 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 2e 0a  DELETEONCLOSE]..
141d0 2a 2a 0a 2a 2a 20 54 68 65 20 66 6c 61 67 73 20  **.** The flags 
141e0 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 4f 70 65  argument to xOpe
141f0 6e 28 29 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c  n() includes all
14200 20 62 69 74 73 20 73 65 74 20 69 6e 0a 2a 2a 20   bits set in.** 
14210 74 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65  the flags argume
14220 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  nt to [sqlite3_o
14230 70 65 6e 5f 76 32 28 29 5d 2e 20 20 4f 72 20 69  pen_v2()].  Or i
14240 66 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  f [sqlite3_open(
14250 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65  )].** or [sqlite
14260 33 5f 6f 70 65 6e 31 36 28 29 5d 20 69 73 20 75  3_open16()] is u
14270 73 65 64 2c 20 74 68 65 6e 20 66 6c 61 67 73 20  sed, then flags 
14280 69 6e 63 6c 75 64 65 73 20 61 74 20 6c 65 61 73  includes at leas
14290 74 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45  t.** [SQLITE_OPE
142a0 4e 5f 52 45 41 44 57 52 49 54 45 5d 20 7c 20 5b  N_READWRITE] | [
142b0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
142c0 54 45 5d 2e 20 0a 2a 2a 20 49 66 20 78 4f 70 65  TE]. .** If xOpe
142d0 6e 28 29 20 6f 70 65 6e 73 20 61 20 66 69 6c 65  n() opens a file
142e0 20 72 65 61 64 2d 6f 6e 6c 79 20 74 68 65 6e 20   read-only then 
142f0 69 74 20 73 65 74 73 20 2a 70 4f 75 74 46 6c 61  it sets *pOutFla
14300 67 73 20 74 6f 0a 2a 2a 20 69 6e 63 6c 75 64 65  gs to.** include
14310 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45   [SQLITE_OPEN_RE
14320 41 44 4f 4e 4c 59 5d 2e 20 20 4f 74 68 65 72 20  ADONLY].  Other 
14330 62 69 74 73 20 69 6e 20 2a 70 4f 75 74 46 6c 61  bits in *pOutFla
14340 67 73 20 6d 61 79 20 62 65 20 73 65 74 2e 0a 2a  gs may be set..*
14350 2a 0a 2a 2a 20 5e 28 53 51 4c 69 74 65 20 77 69  *.** ^(SQLite wi
14360 6c 6c 20 61 6c 73 6f 20 61 64 64 20 6f 6e 65 20  ll also add one 
14370 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  of the following
14380 20 66 6c 61 67 73 20 74 6f 20 74 68 65 20 78 4f   flags to the xO
14390 70 65 6e 28 29 0a 2a 2a 20 63 61 6c 6c 2c 20 64  pen().** call, d
143a0 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
143b0 6f 62 6a 65 63 74 20 62 65 69 6e 67 20 6f 70 65  object being ope
143c0 6e 65 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ned:.**.** <ul>.
143d0 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
143e0 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d 0a 2a  _OPEN_MAIN_DB].*
143f0 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f  * <li>  [SQLITE_
14400 4f 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41  OPEN_MAIN_JOURNA
14410 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c  L].** <li>  [SQL
14420 49 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42  ITE_OPEN_TEMP_DB
14430 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49  ].** <li>  [SQLI
14440 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55  TE_OPEN_TEMP_JOU
14450 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b  RNAL].** <li>  [
14460 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 52 41 4e  SQLITE_OPEN_TRAN
14470 53 49 45 4e 54 5f 44 42 5d 0a 2a 2a 20 3c 6c 69  SIENT_DB].** <li
14480 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  >  [SQLITE_OPEN_
14490 53 55 42 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  SUBJOURNAL].** <
144a0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
144b0 4e 5f 4d 41 53 54 45 52 5f 4a 4f 55 52 4e 41 4c  N_MASTER_JOURNAL
144c0 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49  ].** <li>  [SQLI
144d0 54 45 5f 4f 50 45 4e 5f 57 41 4c 5d 0a 2a 2a 20  TE_OPEN_WAL].** 
144e0 3c 2f 75 6c 3e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68  </ul>)^.**.** Th
144f0 65 20 66 69 6c 65 20 49 2f 4f 20 69 6d 70 6c 65  e file I/O imple
14500 6d 65 6e 74 61 74 69 6f 6e 20 63 61 6e 20 75 73  mentation can us
14510 65 20 74 68 65 20 6f 62 6a 65 63 74 20 74 79 70  e the object typ
14520 65 20 66 6c 61 67 73 20 74 6f 0a 2a 2a 20 63 68  e flags to.** ch
14530 61 6e 67 65 20 74 68 65 20 77 61 79 20 69 74 20  ange the way it 
14540 64 65 61 6c 73 20 77 69 74 68 20 66 69 6c 65 73  deals with files
14550 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  .  For example, 
14560 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a  an application.*
14570 2a 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20  * that does not 
14580 63 61 72 65 20 61 62 6f 75 74 20 63 72 61 73 68  care about crash
14590 20 72 65 63 6f 76 65 72 79 20 6f 72 20 72 6f 6c   recovery or rol
145a0 6c 62 61 63 6b 20 6d 69 67 68 74 20 6d 61 6b 65  lback might make
145b0 0a 2a 2a 20 74 68 65 20 6f 70 65 6e 20 6f 66 20  .** the open of 
145c0 61 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61  a journal file a
145d0 20 6e 6f 2d 6f 70 2e 20 20 57 72 69 74 65 73 20   no-op.  Writes 
145e0 74 6f 20 74 68 69 73 20 6a 6f 75 72 6e 61 6c 20  to this journal 
145f0 77 6f 75 6c 64 0a 2a 2a 20 61 6c 73 6f 20 62 65  would.** also be
14600 20 6e 6f 2d 6f 70 73 2c 20 61 6e 64 20 61 6e 79   no-ops, and any
14610 20 61 74 74 65 6d 70 74 20 74 6f 20 72 65 61 64   attempt to read
14620 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 77 6f 75   the journal wou
14630 6c 64 20 72 65 74 75 72 6e 0a 2a 2a 20 53 51 4c  ld return.** SQL
14640 49 54 45 5f 49 4f 45 52 52 2e 20 20 4f 72 20 74  ITE_IOERR.  Or t
14650 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
14660 6e 20 6d 69 67 68 74 20 72 65 63 6f 67 6e 69 7a  n might recogniz
14670 65 20 74 68 61 74 20 61 20 64 61 74 61 62 61 73  e that a databas
14680 65 0a 2a 2a 20 66 69 6c 65 20 77 69 6c 6c 20 62  e.** file will b
14690 65 20 64 6f 69 6e 67 20 70 61 67 65 2d 61 6c 69  e doing page-ali
146a0 67 6e 65 64 20 73 65 63 74 6f 72 20 72 65 61 64  gned sector read
146b0 73 20 61 6e 64 20 77 72 69 74 65 73 20 69 6e 20  s and writes in 
146c0 61 20 72 61 6e 64 6f 6d 0a 2a 2a 20 6f 72 64 65  a random.** orde
146d0 72 20 61 6e 64 20 73 65 74 20 75 70 20 69 74 73  r and set up its
146e0 20 49 2f 4f 20 73 75 62 73 79 73 74 65 6d 20 61   I/O subsystem a
146f0 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 2a 2a 0a 2a  ccordingly..**.*
14700 2a 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 61  * SQLite might a
14710 6c 73 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20 74  lso add one of t
14720 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61  he following fla
14730 67 73 20 74 6f 20 74 68 65 20 78 4f 70 65 6e 20  gs to the xOpen 
14740 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75  method:.**.** <u
14750 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  l>.** <li> [SQLI
14760 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e  TE_OPEN_DELETEON
14770 43 4c 4f 53 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  CLOSE].** <li> [
14780 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c  SQLITE_OPEN_EXCL
14790 55 53 49 56 45 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a  USIVE].** </ul>.
147a0 2a 2a 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  **.** The [SQLIT
147b0 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43  E_OPEN_DELETEONC
147c0 4c 4f 53 45 5d 20 66 6c 61 67 20 6d 65 61 6e 73  LOSE] flag means
147d0 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64   the file should
147e0 20 62 65 0a 2a 2a 20 64 65 6c 65 74 65 64 20 77   be.** deleted w
147f0 68 65 6e 20 69 74 20 69 73 20 63 6c 6f 73 65 64  hen it is closed
14800 2e 20 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  .  ^The [SQLITE_
14810 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f  OPEN_DELETEONCLO
14820 53 45 5d 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 73  SE].** will be s
14830 65 74 20 66 6f 72 20 54 45 4d 50 20 64 61 74 61  et for TEMP data
14840 62 61 73 65 73 20 61 6e 64 20 74 68 65 69 72 20  bases and their 
14850 6a 6f 75 72 6e 61 6c 73 2c 20 74 72 61 6e 73 69  journals, transi
14860 65 6e 74 0a 2a 2a 20 64 61 74 61 62 61 73 65 73  ent.** databases
14870 2c 20 61 6e 64 20 73 75 62 6a 6f 75 72 6e 61 6c  , and subjournal
14880 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 53  s..**.** ^The [S
14890 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55  QLITE_OPEN_EXCLU
148a0 53 49 56 45 5d 20 66 6c 61 67 20 69 73 20 61 6c  SIVE] flag is al
148b0 77 61 79 73 20 75 73 65 64 20 69 6e 20 63 6f 6e  ways used in con
148c0 6a 75 6e 63 74 69 6f 6e 0a 2a 2a 20 77 69 74 68  junction.** with
148d0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   the [SQLITE_OPE
148e0 4e 5f 43 52 45 41 54 45 5d 20 66 6c 61 67 2c 20  N_CREATE] flag, 
148f0 77 68 69 63 68 20 61 72 65 20 62 6f 74 68 20 64  which are both d
14900 69 72 65 63 74 6c 79 0a 2a 2a 20 61 6e 61 6c 6f  irectly.** analo
14910 67 6f 75 73 20 74 6f 20 74 68 65 20 4f 5f 45 58  gous to the O_EX
14920 43 4c 20 61 6e 64 20 4f 5f 43 52 45 41 54 20 66  CL and O_CREAT f
14930 6c 61 67 73 20 6f 66 20 74 68 65 20 50 4f 53 49  lags of the POSI
14940 58 20 6f 70 65 6e 28 29 0a 2a 2a 20 41 50 49 2e  X open().** API.
14950 20 20 54 68 65 20 53 51 4c 49 54 45 5f 4f 50 45    The SQLITE_OPE
14960 4e 5f 45 58 43 4c 55 53 49 56 45 20 66 6c 61 67  N_EXCLUSIVE flag
14970 2c 20 77 68 65 6e 20 70 61 69 72 65 64 20 77 69  , when paired wi
14980 74 68 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54  th the .** SQLIT
14990 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 2c 20 69  E_OPEN_CREATE, i
149a0 73 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61  s used to indica
149b0 74 65 20 74 68 61 74 20 66 69 6c 65 20 73 68 6f  te that file sho
149c0 75 6c 64 20 61 6c 77 61 79 73 0a 2a 2a 20 62 65  uld always.** be
149d0 20 63 72 65 61 74 65 64 2c 20 61 6e 64 20 74 68   created, and th
149e0 61 74 20 69 74 20 69 73 20 61 6e 20 65 72 72 6f  at it is an erro
149f0 72 20 69 66 20 69 74 20 61 6c 72 65 61 64 79 20  r if it already 
14a00 65 78 69 73 74 73 2e 0a 2a 2a 20 49 74 20 69 73  exists..** It is
14a10 20 3c 69 3e 6e 6f 74 3c 2f 69 3e 20 75 73 65 64   <i>not</i> used
14a20 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65   to indicate the
14a30 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 20   file should be 
14a40 6f 70 65 6e 65 64 20 0a 2a 2a 20 66 6f 72 20 65  opened .** for e
14a50 78 63 6c 75 73 69 76 65 20 61 63 63 65 73 73 2e  xclusive access.
14a60 0a 2a 2a 0a 2a 2a 20 5e 41 74 20 6c 65 61 73 74  .**.** ^At least
14a70 20 73 7a 4f 73 46 69 6c 65 20 62 79 74 65 73 20   szOsFile bytes 
14a80 6f 66 20 6d 65 6d 6f 72 79 20 61 72 65 20 61 6c  of memory are al
14a90 6c 6f 63 61 74 65 64 20 62 79 20 53 51 4c 69 74  located by SQLit
14aa0 65 0a 2a 2a 20 74 6f 20 68 6f 6c 64 20 74 68 65  e.** to hold the
14ab0 20 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d    [sqlite3_file]
14ac0 20 73 74 72 75 63 74 75 72 65 20 70 61 73 73 65   structure passe
14ad0 64 20 61 73 20 74 68 65 20 74 68 69 72 64 0a 2a  d as the third.*
14ae0 2a 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 4f  * argument to xO
14af0 70 65 6e 2e 20 20 54 68 65 20 78 4f 70 65 6e 20  pen.  The xOpen 
14b00 6d 65 74 68 6f 64 20 64 6f 65 73 20 6e 6f 74 20  method does not 
14b10 68 61 76 65 20 74 6f 0a 2a 2a 20 61 6c 6c 6f 63  have to.** alloc
14b20 61 74 65 20 74 68 65 20 73 74 72 75 63 74 75 72  ate the structur
14b30 65 3b 20 69 74 20 73 68 6f 75 6c 64 20 6a 75 73  e; it should jus
14b40 74 20 66 69 6c 6c 20 69 74 20 69 6e 2e 20 20 4e  t fill it in.  N
14b50 6f 74 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20  ote that.** the 
14b60 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 6d 75 73  xOpen method mus
14b70 74 20 73 65 74 20 74 68 65 20 73 71 6c 69 74 65  t set the sqlite
14b80 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20  3_file.pMethods 
14b90 74 6f 20 65 69 74 68 65 72 0a 2a 2a 20 61 20 76  to either.** a v
14ba0 61 6c 69 64 20 5b 73 71 6c 69 74 65 33 5f 69 6f  alid [sqlite3_io
14bb0 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74  _methods] object
14bc0 20 6f 72 20 74 6f 20 4e 55 4c 4c 2e 20 20 78 4f   or to NULL.  xO
14bd0 70 65 6e 20 6d 75 73 74 20 64 6f 0a 2a 2a 20 74  pen must do.** t
14be0 68 69 73 20 65 76 65 6e 20 69 66 20 74 68 65 20  his even if the 
14bf0 6f 70 65 6e 20 66 61 69 6c 73 2e 20 20 53 51 4c  open fails.  SQL
14c00 69 74 65 20 65 78 70 65 63 74 73 20 74 68 61 74  ite expects that
14c10 20 74 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c   the sqlite3_fil
14c20 65 2e 70 4d 65 74 68 6f 64 73 0a 2a 2a 20 65 6c  e.pMethods.** el
14c30 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 76 61  ement will be va
14c40 6c 69 64 20 61 66 74 65 72 20 78 4f 70 65 6e 20  lid after xOpen 
14c50 72 65 74 75 72 6e 73 20 72 65 67 61 72 64 6c 65  returns regardle
14c60 73 73 20 6f 66 20 74 68 65 20 73 75 63 63 65 73  ss of the succes
14c70 73 0a 2a 2a 20 6f 72 20 66 61 69 6c 75 72 65 20  s.** or failure 
14c80 6f 66 20 74 68 65 20 78 4f 70 65 6e 20 63 61 6c  of the xOpen cal
14c90 6c 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74  l..**.** [[sqlit
14ca0 65 33 5f 76 66 73 2e 78 41 63 63 65 73 73 5d 5d  e3_vfs.xAccess]]
14cb0 0a 2a 2a 20 5e 54 68 65 20 66 6c 61 67 73 20 61  .** ^The flags a
14cc0 72 67 75 6d 65 6e 74 20 74 6f 20 78 41 63 63 65  rgument to xAcce
14cd0 73 73 28 29 20 6d 61 79 20 62 65 20 5b 53 51 4c  ss() may be [SQL
14ce0 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54  ITE_ACCESS_EXIST
14cf0 53 5d 0a 2a 2a 20 74 6f 20 74 65 73 74 20 66 6f  S].** to test fo
14d00 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20  r the existence 
14d10 6f 66 20 61 20 66 69 6c 65 2c 20 6f 72 20 5b 53  of a file, or [S
14d20 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41  QLITE_ACCESS_REA
14d30 44 57 52 49 54 45 5d 20 74 6f 0a 2a 2a 20 74 65  DWRITE] to.** te
14d40 73 74 20 77 68 65 74 68 65 72 20 61 20 66 69 6c  st whether a fil
14d50 65 20 69 73 20 72 65 61 64 61 62 6c 65 20 61 6e  e is readable an
14d60 64 20 77 72 69 74 61 62 6c 65 2c 20 6f 72 20 5b  d writable, or [
14d70 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45  SQLITE_ACCESS_RE
14d80 41 44 5d 0a 2a 2a 20 74 6f 20 74 65 73 74 20 77  AD].** to test w
14d90 68 65 74 68 65 72 20 61 20 66 69 6c 65 20 69 73  hether a file is
14da0 20 61 74 20 6c 65 61 73 74 20 72 65 61 64 61 62   at least readab
14db0 6c 65 2e 20 20 20 54 68 65 20 66 69 6c 65 20 63  le.   The file c
14dc0 61 6e 20 62 65 20 61 0a 2a 2a 20 64 69 72 65 63  an be a.** direc
14dd0 74 6f 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c  tory..**.** ^SQL
14de0 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  ite will always 
14df0 61 6c 6c 6f 63 61 74 65 20 61 74 20 6c 65 61 73  allocate at leas
14e00 74 20 6d 78 50 61 74 68 6e 61 6d 65 2b 31 20 62  t mxPathname+1 b
14e10 79 74 65 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20  ytes for the.** 
14e20 6f 75 74 70 75 74 20 62 75 66 66 65 72 20 78 46  output buffer xF
14e30 75 6c 6c 50 61 74 68 6e 61 6d 65 2e 20 20 54 68  ullPathname.  Th
14e40 65 20 65 78 61 63 74 20 73 69 7a 65 20 6f 66 20  e exact size of 
14e50 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66 65  the output buffe
14e60 72 0a 2a 2a 20 69 73 20 61 6c 73 6f 20 70 61 73  r.** is also pas
14e70 73 65 64 20 61 73 20 61 20 70 61 72 61 6d 65 74  sed as a paramet
14e80 65 72 20 74 6f 20 62 6f 74 68 20 20 6d 65 74 68  er to both  meth
14e90 6f 64 73 2e 20 49 66 20 74 68 65 20 6f 75 74 70  ods. If the outp
14ea0 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20  ut buffer.** is 
14eb0 6e 6f 74 20 6c 61 72 67 65 20 65 6e 6f 75 67 68  not large enough
14ec0 2c 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  , [SQLITE_CANTOP
14ed0 45 4e 5d 20 73 68 6f 75 6c 64 20 62 65 20 72 65  EN] should be re
14ee0 74 75 72 6e 65 64 2e 20 53 69 6e 63 65 20 74 68  turned. Since th
14ef0 69 73 20 69 73 0a 2a 2a 20 68 61 6e 64 6c 65 64  is is.** handled
14f00 20 61 73 20 61 20 66 61 74 61 6c 20 65 72 72 6f   as a fatal erro
14f10 72 20 62 79 20 53 51 4c 69 74 65 2c 20 76 66 73  r by SQLite, vfs
14f20 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
14f30 20 73 68 6f 75 6c 64 20 65 6e 64 65 61 76 6f 72   should endeavor
14f40 0a 2a 2a 20 74 6f 20 70 72 65 76 65 6e 74 20 74  .** to prevent t
14f50 68 69 73 20 62 79 20 73 65 74 74 69 6e 67 20 6d  his by setting m
14f60 78 50 61 74 68 6e 61 6d 65 20 74 6f 20 61 20 73  xPathname to a s
14f70 75 66 66 69 63 69 65 6e 74 6c 79 20 6c 61 72 67  ufficiently larg
14f80 65 20 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54  e value..**.** T
14f90 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29  he xRandomness()
14fa0 2c 20 78 53 6c 65 65 70 28 29 2c 20 78 43 75 72  , xSleep(), xCur
14fb0 72 65 6e 74 54 69 6d 65 28 29 2c 20 61 6e 64 20  rentTime(), and 
14fc0 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
14fd0 34 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  4().** interface
14fe0 73 20 61 72 65 20 6e 6f 74 20 73 74 72 69 63 74  s are not strict
14ff0 6c 79 20 61 20 70 61 72 74 20 6f 66 20 74 68 65  ly a part of the
15000 20 66 69 6c 65 73 79 73 74 65 6d 2c 20 62 75 74   filesystem, but
15010 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 69 6e 63   they are.** inc
15020 6c 75 64 65 64 20 69 6e 20 74 68 65 20 56 46 53  luded in the VFS
15030 20 73 74 72 75 63 74 75 72 65 20 66 6f 72 20 63   structure for c
15040 6f 6d 70 6c 65 74 65 6e 65 73 73 2e 0a 2a 2a 20  ompleteness..** 
15050 54 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28  The xRandomness(
15060 29 20 66 75 6e 63 74 69 6f 6e 20 61 74 74 65 6d  ) function attem
15070 70 74 73 20 74 6f 20 72 65 74 75 72 6e 20 6e 42  pts to return nB
15080 79 74 65 73 20 62 79 74 65 73 0a 2a 2a 20 6f 66  ytes bytes.** of
15090 20 67 6f 6f 64 2d 71 75 61 6c 69 74 79 20 72 61   good-quality ra
150a0 6e 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20 7a 4f  ndomness into zO
150b0 75 74 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20  ut.  The return 
150c0 76 61 6c 75 65 20 69 73 0a 2a 2a 20 74 68 65 20  value is.** the 
150d0 61 63 74 75 61 6c 20 6e 75 6d 62 65 72 20 6f 66  actual number of
150e0 20 62 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d   bytes of random
150f0 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 2e 0a 2a  ness obtained..*
15100 2a 20 54 68 65 20 78 53 6c 65 65 70 28 29 20 6d  * The xSleep() m
15110 65 74 68 6f 64 20 63 61 75 73 65 73 20 74 68 65  ethod causes the
15120 20 63 61 6c 6c 69 6e 67 20 74 68 72 65 61 64 20   calling thread 
15130 74 6f 20 73 6c 65 65 70 20 66 6f 72 20 61 74 0a  to sleep for at.
15140 2a 2a 20 6c 65 61 73 74 20 74 68 65 20 6e 75 6d  ** least the num
15150 62 65 72 20 6f 66 20 6d 69 63 72 6f 73 65 63 6f  ber of microseco
15160 6e 64 73 20 67 69 76 65 6e 2e 20 20 5e 54 68 65  nds given.  ^The
15170 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28 29 0a   xCurrentTime().
15180 2a 2a 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  ** method return
15190 73 20 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 4e  s a Julian Day N
151a0 75 6d 62 65 72 20 66 6f 72 20 74 68 65 20 63 75  umber for the cu
151b0 72 72 65 6e 74 20 64 61 74 65 20 61 6e 64 20 74  rrent date and t
151c0 69 6d 65 20 61 73 0a 2a 2a 20 61 20 66 6c 6f 61  ime as.** a floa
151d0 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
151e0 2e 0a 2a 2a 20 5e 54 68 65 20 78 43 75 72 72 65  ..** ^The xCurre
151f0 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65  ntTimeInt64() me
15200 74 68 6f 64 20 72 65 74 75 72 6e 73 2c 20 61 73  thod returns, as
15210 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 74 68 65   an integer, the
15220 20 4a 75 6c 69 61 6e 0a 2a 2a 20 44 61 79 20 4e   Julian.** Day N
15230 75 6d 62 65 72 20 6d 75 6c 74 69 70 6c 69 65 64  umber multiplied
15240 20 62 79 20 38 36 34 30 30 30 30 30 20 28 74 68   by 86400000 (th
15250 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c  e number of mill
15260 69 73 65 63 6f 6e 64 73 20 69 6e 20 0a 2a 2a 20  iseconds in .** 
15270 61 20 32 34 2d 68 6f 75 72 20 64 61 79 29 2e 20  a 24-hour day). 
15280 20 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c   .** ^SQLite wil
15290 6c 20 75 73 65 20 74 68 65 20 78 43 75 72 72 65  l use the xCurre
152a0 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65  ntTimeInt64() me
152b0 74 68 6f 64 20 74 6f 20 67 65 74 20 74 68 65 20  thod to get the 
152c0 63 75 72 72 65 6e 74 0a 2a 2a 20 64 61 74 65 20  current.** date 
152d0 61 6e 64 20 74 69 6d 65 20 69 66 20 74 68 61 74  and time if that
152e0 20 6d 65 74 68 6f 64 20 69 73 20 61 76 61 69 6c   method is avail
152f0 61 62 6c 65 20 28 69 66 20 69 56 65 72 73 69 6f  able (if iVersio
15300 6e 20 69 73 20 32 20 6f 72 20 0a 2a 2a 20 67 72  n is 2 or .** gr
15310 65 61 74 65 72 20 61 6e 64 20 74 68 65 20 66 75  eater and the fu
15320 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69  nction pointer i
15330 73 20 6e 6f 74 20 4e 55 4c 4c 29 20 61 6e 64 20  s not NULL) and 
15340 77 69 6c 6c 20 66 61 6c 6c 20 62 61 63 6b 0a 2a  will fall back.*
15350 2a 20 74 6f 20 78 43 75 72 72 65 6e 74 54 69 6d  * to xCurrentTim
15360 65 28 29 20 69 66 20 78 43 75 72 72 65 6e 74 54  e() if xCurrentT
15370 69 6d 65 49 6e 74 36 34 28 29 20 69 73 20 75 6e  imeInt64() is un
15380 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a  available..**.**
15390 20 5e 54 68 65 20 78 53 65 74 53 79 73 74 65 6d   ^The xSetSystem
153a0 43 61 6c 6c 28 29 2c 20 78 47 65 74 53 79 73 74  Call(), xGetSyst
153b0 65 6d 43 61 6c 6c 28 29 2c 20 61 6e 64 20 78 4e  emCall(), and xN
153c0 65 73 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 20  estSystemCall() 
153d0 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20 61 72  interfaces.** ar
153e0 65 20 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68  e not used by th
153f0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20  e SQLite core.  
15400 54 68 65 73 65 20 6f 70 74 69 6f 6e 61 6c 20 69  These optional i
15410 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 70 72  nterfaces are pr
15420 6f 76 69 64 65 64 0a 2a 2a 20 62 79 20 73 6f 6d  ovided.** by som
15430 65 20 56 46 53 65 73 20 74 6f 20 66 61 63 69 6c  e VFSes to facil
15440 69 74 61 74 65 20 74 65 73 74 69 6e 67 20 6f 66  itate testing of
15450 20 74 68 65 20 56 46 53 20 63 6f 64 65 2e 20 42   the VFS code. B
15460 79 20 6f 76 65 72 72 69 64 69 6e 67 20 0a 2a 2a  y overriding .**
15470 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20 77 69   system calls wi
15480 74 68 20 66 75 6e 63 74 69 6f 6e 73 20 75 6e 64  th functions und
15490 65 72 20 69 74 73 20 63 6f 6e 74 72 6f 6c 2c 20  er its control, 
154a0 61 20 74 65 73 74 20 70 72 6f 67 72 61 6d 20 63  a test program c
154b0 61 6e 0a 2a 2a 20 73 69 6d 75 6c 61 74 65 20 66  an.** simulate f
154c0 61 75 6c 74 73 20 61 6e 64 20 65 72 72 6f 72 20  aults and error 
154d0 63 6f 6e 64 69 74 69 6f 6e 73 20 74 68 61 74 20  conditions that 
154e0 77 6f 75 6c 64 20 6f 74 68 65 72 77 69 73 65 20  would otherwise 
154f0 62 65 20 64 69 66 66 69 63 75 6c 74 0a 2a 2a 20  be difficult.** 
15500 6f 72 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f  or impossible to
15510 20 69 6e 64 75 63 65 2e 20 20 54 68 65 20 73 65   induce.  The se
15520 74 20 6f 66 20 73 79 73 74 65 6d 20 63 61 6c 6c  t of system call
15530 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 6f 76  s that can be ov
15540 65 72 72 69 64 64 65 6e 0a 2a 2a 20 76 61 72 69  erridden.** vari
15550 65 73 20 66 72 6f 6d 20 6f 6e 65 20 56 46 53 20  es from one VFS 
15560 74 6f 20 61 6e 6f 74 68 65 72 2c 20 61 6e 64 20  to another, and 
15570 66 72 6f 6d 20 6f 6e 65 20 76 65 72 73 69 6f 6e  from one version
15580 20 6f 66 20 74 68 65 20 73 61 6d 65 20 56 46 53   of the same VFS
15590 20 74 6f 20 74 68 65 0a 2a 2a 20 6e 65 78 74 2e   to the.** next.
155a0 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74    Applications t
155b0 68 61 74 20 75 73 65 20 74 68 65 73 65 20 69 6e  hat use these in
155c0 74 65 72 66 61 63 65 73 20 6d 75 73 74 20 62 65  terfaces must be
155d0 20 70 72 65 70 61 72 65 64 20 66 6f 72 20 61 6e   prepared for an
155e0 79 0a 2a 2a 20 6f 72 20 61 6c 6c 20 6f 66 20 74  y.** or all of t
155f0 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20  hese interfaces 
15600 74 6f 20 62 65 20 4e 55 4c 4c 20 6f 72 20 66 6f  to be NULL or fo
15610 72 20 74 68 65 69 72 20 62 65 68 61 76 69 6f 72  r their behavior
15620 20 74 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 66 72   to change.** fr
15630 6f 6d 20 6f 6e 65 20 72 65 6c 65 61 73 65 20 74  om one release t
15640 6f 20 74 68 65 20 6e 65 78 74 2e 20 20 41 70 70  o the next.  App
15650 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 6e  lications must n
15660 6f 74 20 61 74 74 65 6d 70 74 20 74 6f 20 61 63  ot attempt to ac
15670 63 65 73 73 0a 2a 2a 20 61 6e 79 20 6f 66 20 74  cess.** any of t
15680 68 65 73 65 20 6d 65 74 68 6f 64 73 20 69 66 20  hese methods if 
15690 74 68 65 20 69 56 65 72 73 69 6f 6e 20 6f 66 20  the iVersion of 
156a0 74 68 65 20 56 46 53 20 69 73 20 6c 65 73 73 20  the VFS is less 
156b0 74 68 61 6e 20 33 2e 0a 2a 2f 0a 74 79 70 65 64  than 3..*/.typed
156c0 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
156d0 33 5f 76 66 73 20 73 71 6c 69 74 65 33 5f 76 66  3_vfs sqlite3_vf
156e0 73 3b 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20  s;.typedef void 
156f0 28 2a 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c  (*sqlite3_syscal
15700 6c 5f 70 74 72 29 28 76 6f 69 64 29 3b 0a 73 74  l_ptr)(void);.st
15710 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73  ruct sqlite3_vfs
15720 20 7b 0a 20 20 69 6e 74 20 69 56 65 72 73 69 6f   {.  int iVersio
15730 6e 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  n;            /*
15740 20 53 74 72 75 63 74 75 72 65 20 76 65 72 73 69   Structure versi
15750 6f 6e 20 6e 75 6d 62 65 72 20 28 63 75 72 72 65  on number (curre
15760 6e 74 6c 79 20 33 29 20 2a 2f 0a 20 20 69 6e 74  ntly 3) */.  int
15770 20 73 7a 4f 73 46 69 6c 65 3b 20 20 20 20 20 20   szOsFile;      
15780 20 20 20 20 20 20 2f 2a 20 53 69 7a 65 20 6f 66        /* Size of
15790 20 73 75 62 63 6c 61 73 73 65 64 20 73 71 6c 69   subclassed sqli
157a0 74 65 33 5f 66 69 6c 65 20 2a 2f 0a 20 20 69 6e  te3_file */.  in
157b0 74 20 6d 78 50 61 74 68 6e 61 6d 65 3b 20 20 20  t mxPathname;   
157c0 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
157d0 6d 20 66 69 6c 65 20 70 61 74 68 6e 61 6d 65 20  m file pathname 
157e0 6c 65 6e 67 74 68 20 2a 2f 0a 20 20 73 71 6c 69  length */.  sqli
157f0 74 65 33 5f 76 66 73 20 2a 70 4e 65 78 74 3b 20  te3_vfs *pNext; 
15800 20 20 20 20 20 2f 2a 20 4e 65 78 74 20 72 65 67       /* Next reg
15810 69 73 74 65 72 65 64 20 56 46 53 20 2a 2f 0a 20  istered VFS */. 
15820 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61   const char *zNa
15830 6d 65 3b 20 20 20 20 20 20 20 2f 2a 20 4e 61 6d  me;       /* Nam
15840 65 20 6f 66 20 74 68 69 73 20 76 69 72 74 75 61  e of this virtua
15850 6c 20 66 69 6c 65 20 73 79 73 74 65 6d 20 2a 2f  l file system */
15860 0a 20 20 76 6f 69 64 20 2a 70 41 70 70 44 61 74  .  void *pAppDat
15870 61 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 50  a;          /* P
15880 6f 69 6e 74 65 72 20 74 6f 20 61 70 70 6c 69 63  ointer to applic
15890 61 74 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 64  ation-specific d
158a0 61 74 61 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ata */.  int (*x
158b0 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 66  Open)(sqlite3_vf
158c0 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  s*, const char *
158d0 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65 33 5f 66  zName, sqlite3_f
158e0 69 6c 65 2a 2c 0a 20 20 20 20 20 20 20 20 20 20  ile*,.          
158f0 20 20 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20       int flags, 
15900 69 6e 74 20 2a 70 4f 75 74 46 6c 61 67 73 29 3b  int *pOutFlags);
15910 0a 20 20 69 6e 74 20 28 2a 78 44 65 6c 65 74 65  .  int (*xDelete
15920 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
15930 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
15940 65 2c 20 69 6e 74 20 73 79 6e 63 44 69 72 29 3b  e, int syncDir);
15950 0a 20 20 69 6e 74 20 28 2a 78 41 63 63 65 73 73  .  int (*xAccess
15960 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
15970 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
15980 65 2c 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e  e, int flags, in
15990 74 20 2a 70 52 65 73 4f 75 74 29 3b 0a 20 20 69  t *pResOut);.  i
159a0 6e 74 20 28 2a 78 46 75 6c 6c 50 61 74 68 6e 61  nt (*xFullPathna
159b0 6d 65 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  me)(sqlite3_vfs*
159c0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
159d0 61 6d 65 2c 20 69 6e 74 20 6e 4f 75 74 2c 20 63  ame, int nOut, c
159e0 68 61 72 20 2a 7a 4f 75 74 29 3b 0a 20 20 76 6f  har *zOut);.  vo
159f0 69 64 20 2a 28 2a 78 44 6c 4f 70 65 6e 29 28 73  id *(*xDlOpen)(s
15a00 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
15a10 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61  st char *zFilena
15a20 6d 65 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44  me);.  void (*xD
15a30 6c 45 72 72 6f 72 29 28 73 71 6c 69 74 65 33 5f  lError)(sqlite3_
15a40 76 66 73 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c  vfs*, int nByte,
15a50 20 63 68 61 72 20 2a 7a 45 72 72 4d 73 67 29 3b   char *zErrMsg);
15a60 0a 20 20 76 6f 69 64 20 28 2a 28 2a 78 44 6c 53  .  void (*(*xDlS
15a70 79 6d 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  ym)(sqlite3_vfs*
15a80 2c 76 6f 69 64 2a 2c 20 63 6f 6e 73 74 20 63 68  ,void*, const ch
15a90 61 72 20 2a 7a 53 79 6d 62 6f 6c 29 29 28 76 6f  ar *zSymbol))(vo
15aa0 69 64 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44  id);.  void (*xD
15ab0 6c 43 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f  lClose)(sqlite3_
15ac0 76 66 73 2a 2c 20 76 6f 69 64 2a 29 3b 0a 20 20  vfs*, void*);.  
15ad0 69 6e 74 20 28 2a 78 52 61 6e 64 6f 6d 6e 65 73  int (*xRandomnes
15ae0 73 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  s)(sqlite3_vfs*,
15af0 20 69 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72   int nByte, char
15b00 20 2a 7a 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28   *zOut);.  int (
15b10 2a 78 53 6c 65 65 70 29 28 73 71 6c 69 74 65 33  *xSleep)(sqlite3
15b20 5f 76 66 73 2a 2c 20 69 6e 74 20 6d 69 63 72 6f  _vfs*, int micro
15b30 73 65 63 6f 6e 64 73 29 3b 0a 20 20 69 6e 74 20  seconds);.  int 
15b40 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65 29 28  (*xCurrentTime)(
15b50 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 64 6f  sqlite3_vfs*, do
15b60 75 62 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  uble*);.  int (*
15b70 78 47 65 74 4c 61 73 74 45 72 72 6f 72 29 28 73  xGetLastError)(s
15b80 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74  qlite3_vfs*, int
15b90 2c 20 63 68 61 72 20 2a 29 3b 0a 20 20 2f 2a 0a  , char *);.  /*.
15ba0 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73    ** The methods
15bb0 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65   above are in ve
15bc0 72 73 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73  rsion 1 of the s
15bd0 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74  qlite_vfs object
15be0 0a 20 20 2a 2a 20 64 65 66 69 6e 69 74 69 6f 6e  .  ** definition
15bf0 2e 20 20 54 68 6f 73 65 20 74 68 61 74 20 66 6f  .  Those that fo
15c00 6c 6c 6f 77 20 61 72 65 20 61 64 64 65 64 20 69  llow are added i
15c10 6e 20 76 65 72 73 69 6f 6e 20 32 20 6f 72 20 6c  n version 2 or l
15c20 61 74 65 72 0a 20 20 2a 2f 0a 20 20 69 6e 74 20  ater.  */.  int 
15c30 28 2a 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e  (*xCurrentTimeIn
15c40 74 36 34 29 28 73 71 6c 69 74 65 33 5f 76 66 73  t64)(sqlite3_vfs
15c50 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  *, sqlite3_int64
15c60 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68  *);.  /*.  ** Th
15c70 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
15c80 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 73 20  are in versions 
15c90 31 20 61 6e 64 20 32 20 6f 66 20 74 68 65 20 73  1 and 2 of the s
15ca0 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74  qlite_vfs object
15cb0 2e 0a 20 20 2a 2a 20 54 68 6f 73 65 20 62 65 6c  ..  ** Those bel
15cc0 6f 77 20 61 72 65 20 66 6f 72 20 76 65 72 73 69  ow are for versi
15cd0 6f 6e 20 33 20 61 6e 64 20 67 72 65 61 74 65 72  on 3 and greater
15ce0 2e 0a 20 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ..  */.  int (*x
15cf0 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73  SetSystemCall)(s
15d00 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
15d10 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20  st char *zName, 
15d20 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f  sqlite3_syscall_
15d30 70 74 72 29 3b 0a 20 20 73 71 6c 69 74 65 33 5f  ptr);.  sqlite3_
15d40 73 79 73 63 61 6c 6c 5f 70 74 72 20 28 2a 78 47  syscall_ptr (*xG
15d50 65 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71  etSystemCall)(sq
15d60 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73  lite3_vfs*, cons
15d70 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a  t char *zName);.
15d80 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 28 2a    const char *(*
15d90 78 4e 65 78 74 53 79 73 74 65 6d 43 61 6c 6c 29  xNextSystemCall)
15da0 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63  (sqlite3_vfs*, c
15db0 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
15dc0 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65  );.  /*.  ** The
15dd0 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   methods above a
15de0 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 73 20 31  re in versions 1
15df0 20 74 68 72 6f 75 67 68 20 33 20 6f 66 20 74 68   through 3 of th
15e00 65 20 73 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a  e sqlite_vfs obj
15e10 65 63 74 2e 0a 20 20 2a 2a 20 4e 65 77 20 66 69  ect..  ** New fi
15e20 65 6c 64 73 20 6d 61 79 20 62 65 20 61 70 70 65  elds may be appe
15e30 6e 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 76  nded in future v
15e40 65 72 73 69 6f 6e 73 2e 20 20 54 68 65 20 69 56  ersions.  The iV
15e50 65 72 73 69 6f 6e 0a 20 20 2a 2a 20 76 61 6c 75  ersion.  ** valu
15e60 65 20 77 69 6c 6c 20 69 6e 63 72 65 6d 65 6e 74  e will increment
15e70 20 77 68 65 6e 65 76 65 72 20 74 68 69 73 20 68   whenever this h
15e80 61 70 70 65 6e 73 2e 20 0a 20 20 2a 2f 0a 7d 3b  appens. .  */.};
15e90 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
15ea0 3a 20 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20  : Flags for the 
15eb0 78 41 63 63 65 73 73 20 56 46 53 20 6d 65 74 68  xAccess VFS meth
15ec0 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  od.**.** These i
15ed0 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
15ee0 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20   can be used as 
15ef0 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
15f00 74 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20 78 41  ter to.** the xA
15f10 63 63 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 20  ccess method of 
15f20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d  an [sqlite3_vfs]
15f30 20 6f 62 6a 65 63 74 2e 20 20 54 68 65 79 20 64   object.  They d
15f40 65 74 65 72 6d 69 6e 65 0a 2a 2a 20 77 68 61 74  etermine.** what
15f50 20 6b 69 6e 64 20 6f 66 20 70 65 72 6d 69 73 73   kind of permiss
15f60 69 6f 6e 73 20 74 68 65 20 78 41 63 63 65 73 73  ions the xAccess
15f70 20 6d 65 74 68 6f 64 20 69 73 20 6c 6f 6f 6b 69   method is looki
15f80 6e 67 20 66 6f 72 2e 0a 2a 2a 20 57 69 74 68 20  ng for..** With 
15f90 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 45 58  SQLITE_ACCESS_EX
15fa0 49 53 54 53 2c 20 74 68 65 20 78 41 63 63 65 73  ISTS, the xAcces
15fb0 73 20 6d 65 74 68 6f 64 0a 2a 2a 20 73 69 6d 70  s method.** simp
15fc0 6c 79 20 63 68 65 63 6b 73 20 77 68 65 74 68 65  ly checks whethe
15fd0 72 20 74 68 65 20 66 69 6c 65 20 65 78 69 73 74  r the file exist
15fe0 73 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54  s..** With SQLIT
15ff0 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52 49  E_ACCESS_READWRI
16000 54 45 2c 20 74 68 65 20 78 41 63 63 65 73 73 20  TE, the xAccess 
16010 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73  method.** checks
16020 20 77 68 65 74 68 65 72 20 74 68 65 20 6e 61 6d   whether the nam
16030 65 64 20 64 69 72 65 63 74 6f 72 79 20 69 73 20  ed directory is 
16040 62 6f 74 68 20 72 65 61 64 61 62 6c 65 20 61 6e  both readable an
16050 64 20 77 72 69 74 61 62 6c 65 0a 2a 2a 20 28 69  d writable.** (i
16060 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69  n other words, i
16070 66 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 61  f files can be a
16080 64 64 65 64 2c 20 72 65 6d 6f 76 65 64 2c 20 61  dded, removed, a
16090 6e 64 20 72 65 6e 61 6d 65 64 20 77 69 74 68 69  nd renamed withi
160a0 6e 0a 2a 2a 20 74 68 65 20 64 69 72 65 63 74 6f  n.** the directo
160b0 72 79 29 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ry)..** The SQLI
160c0 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52  TE_ACCESS_READWR
160d0 49 54 45 20 63 6f 6e 73 74 61 6e 74 20 69 73 20  ITE constant is 
160e0 63 75 72 72 65 6e 74 6c 79 20 75 73 65 64 20 6f  currently used o
160f0 6e 6c 79 20 62 79 20 74 68 65 0a 2a 2a 20 5b 74  nly by the.** [t
16100 65 6d 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74  emp_store_direct
16110 6f 72 79 20 70 72 61 67 6d 61 5d 2c 20 74 68 6f  ory pragma], tho
16120 75 67 68 20 74 68 69 73 20 63 6f 75 6c 64 20 63  ugh this could c
16130 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72  hange in a futur
16140 65 0a 2a 2a 20 72 65 6c 65 61 73 65 20 6f 66 20  e.** release of 
16150 53 51 4c 69 74 65 2e 0a 2a 2a 20 57 69 74 68 20  SQLite..** With 
16160 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45  SQLITE_ACCESS_RE
16170 41 44 2c 20 74 68 65 20 78 41 63 63 65 73 73 20  AD, the xAccess 
16180 6d 65 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73  method.** checks
16190 20 77 68 65 74 68 65 72 20 74 68 65 20 66 69 6c   whether the fil
161a0 65 20 69 73 20 72 65 61 64 61 62 6c 65 2e 20 20  e is readable.  
161b0 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53  The SQLITE_ACCES
161c0 53 5f 52 45 41 44 20 63 6f 6e 73 74 61 6e 74 20  S_READ constant 
161d0 69 73 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20  is.** currently 
161e0 75 6e 75 73 65 64 2c 20 74 68 6f 75 67 68 20 69  unused, though i
161f0 74 20 6d 69 67 68 74 20 62 65 20 75 73 65 64 20  t might be used 
16200 69 6e 20 61 20 66 75 74 75 72 65 20 72 65 6c 65  in a future rele
16210 61 73 65 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65  ase of.** SQLite
16220 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
16230 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54  ITE_ACCESS_EXIST
16240 53 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53  S    0.#define S
16250 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41  QLITE_ACCESS_REA
16260 44 57 52 49 54 45 20 31 20 20 20 2f 2a 20 55 73  DWRITE 1   /* Us
16270 65 64 20 62 79 20 50 52 41 47 4d 41 20 74 65 6d  ed by PRAGMA tem
16280 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
16290 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
162a0 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 20  ITE_ACCESS_READ 
162b0 20 20 20 20 20 32 20 20 20 2f 2a 20 55 6e 75 73       2   /* Unus
162c0 65 64 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ed */../*.** CAP
162d0 49 33 52 45 46 3a 20 46 6c 61 67 73 20 66 6f 72  I3REF: Flags for
162e0 20 74 68 65 20 78 53 68 6d 4c 6f 63 6b 20 56 46   the xShmLock VF
162f0 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54  S method.**.** T
16300 68 65 73 65 20 69 6e 74 65 67 65 72 20 63 6f 6e  hese integer con
16310 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20 74 68  stants define th
16320 65 20 76 61 72 69 6f 75 73 20 6c 6f 63 6b 69 6e  e various lockin
16330 67 20 6f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20  g operations.** 
16340 61 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 78  allowed by the x
16350 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  ShmLock method o
16360 66 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  f [sqlite3_io_me
16370 74 68 6f 64 73 5d 2e 20 20 54 68 65 0a 2a 2a 20  thods].  The.** 
16380 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74 68  following are th
16390 65 20 6f 6e 6c 79 20 6c 65 67 61 6c 20 63 6f 6d  e only legal com
163a0 62 69 6e 61 74 69 6f 6e 73 20 6f 66 20 66 6c 61  binations of fla
163b0 67 73 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53 68  gs to the.** xSh
163c0 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 3a 0a 2a 2a  mLock method:.**
163d0 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
163e0 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43    SQLITE_SHM_LOC
163f0 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53  K | SQLITE_SHM_S
16400 48 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53  HARED.** <li>  S
16410 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c  QLITE_SHM_LOCK |
16420 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c   SQLITE_SHM_EXCL
16430 55 53 49 56 45 0a 2a 2a 20 3c 6c 69 3e 20 20 53  USIVE.** <li>  S
16440 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b  QLITE_SHM_UNLOCK
16450 20 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48   | SQLITE_SHM_SH
16460 41 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51  ARED.** <li>  SQ
16470 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20  LITE_SHM_UNLOCK 
16480 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43  | SQLITE_SHM_EXC
16490 4c 55 53 49 56 45 0a 2a 2a 20 3c 2f 75 6c 3e 0a  LUSIVE.** </ul>.
164a0 2a 2a 0a 2a 2a 20 57 68 65 6e 20 75 6e 6c 6f 63  **.** When unloc
164b0 6b 69 6e 67 2c 20 74 68 65 20 73 61 6d 65 20 53  king, the same S
164c0 48 41 52 45 44 20 6f 72 20 45 58 43 4c 55 53 49  HARED or EXCLUSI
164d0 56 45 20 66 6c 61 67 20 6d 75 73 74 20 62 65 20  VE flag must be 
164e0 73 75 70 70 6c 69 65 64 20 61 73 0a 2a 2a 20 77  supplied as.** w
164f0 61 73 20 67 69 76 65 6e 20 6f 6e 20 74 68 65 20  as given on the 
16500 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6c 6f  corresponding lo
16510 63 6b 2e 20 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ck.  .**.** The 
16520 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20  xShmLock method 
16530 63 61 6e 20 74 72 61 6e 73 69 74 69 6f 6e 20 62  can transition b
16540 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20  etween unlocked 
16550 61 6e 64 20 53 48 41 52 45 44 20 6f 72 0a 2a 2a  and SHARED or.**
16560 20 62 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65   between unlocke
16570 64 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45 2e  d and EXCLUSIVE.
16580 20 20 49 74 20 63 61 6e 6e 6f 74 20 74 72 61 6e    It cannot tran
16590 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 53  sition between S
165a0 48 41 52 45 44 0a 2a 2a 20 61 6e 64 20 45 58 43  HARED.** and EXC
165b0 4c 55 53 49 56 45 2e 0a 2a 2f 0a 23 64 65 66 69  LUSIVE..*/.#defi
165c0 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e  ne SQLITE_SHM_UN
165d0 4c 4f 43 4b 20 20 20 20 20 20 20 31 0a 23 64 65  LOCK       1.#de
165e0 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f  fine SQLITE_SHM_
165f0 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 32 0a 23  LOCK         2.#
16600 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48  define SQLITE_SH
16610 4d 5f 53 48 41 52 45 44 20 20 20 20 20 20 20 34  M_SHARED       4
16620 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
16630 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 20 20 20  SHM_EXCLUSIVE   
16640 20 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52   8../*.** CAPI3R
16650 45 46 3a 20 4d 61 78 69 6d 75 6d 20 78 53 68 6d  EF: Maximum xShm
16660 4c 6f 63 6b 20 69 6e 64 65 78 0a 2a 2a 0a 2a 2a  Lock index.**.**
16670 20 54 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65   The xShmLock me
16680 74 68 6f 64 20 6f 6e 20 5b 73 71 6c 69 74 65 33  thod on [sqlite3
16690 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6d 61 79  _io_methods] may
166a0 20 75 73 65 20 76 61 6c 75 65 73 0a 2a 2a 20 62   use values.** b
166b0 65 74 77 65 65 6e 20 30 20 61 6e 64 20 74 68 69  etween 0 and thi
166c0 73 20 75 70 70 65 72 20 62 6f 75 6e 64 20 61 73  s upper bound as
166d0 20 69 74 73 20 22 6f 66 66 73 65 74 22 20 61 72   its "offset" ar
166e0 67 75 6d 65 6e 74 2e 0a 2a 2a 20 54 68 65 20 53  gument..** The S
166f0 51 4c 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20  QLite core will 
16700 6e 65 76 65 72 20 61 74 74 65 6d 70 74 20 74 6f  never attempt to
16710 20 61 63 71 75 69 72 65 20 6f 72 20 72 65 6c 65   acquire or rele
16720 61 73 65 20 61 0a 2a 2a 20 6c 6f 63 6b 20 6f 75  ase a.** lock ou
16730 74 73 69 64 65 20 6f 66 20 74 68 69 73 20 72 61  tside of this ra
16740 6e 67 65 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nge.*/.#define S
16750 51 4c 49 54 45 5f 53 48 4d 5f 4e 4c 4f 43 4b 20  QLITE_SHM_NLOCK 
16760 20 20 20 20 20 20 20 38 0a 0a 0a 2f 2a 0a 2a 2a         8.../*.**
16770 20 43 41 50 49 33 52 45 46 3a 20 49 6e 69 74 69   CAPI3REF: Initi
16780 61 6c 69 7a 65 20 54 68 65 20 53 51 4c 69 74 65  alize The SQLite
16790 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 5e   Library.**.** ^
167a0 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  The sqlite3_init
167b0 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65  ialize() routine
167c0 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65   initializes the
167d0 0a 2a 2a 20 53 51 4c 69 74 65 20 6c 69 62 72 61  .** SQLite libra
167e0 72 79 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65  ry.  ^The sqlite
167f0 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 72 6f 75  3_shutdown() rou
16800 74 69 6e 65 0a 2a 2a 20 64 65 61 6c 6c 6f 63 61  tine.** dealloca
16810 74 65 73 20 61 6e 79 20 72 65 73 6f 75 72 63 65  tes any resource
16820 73 20 74 68 61 74 20 77 65 72 65 20 61 6c 6c 6f  s that were allo
16830 63 61 74 65 64 20 62 79 20 73 71 6c 69 74 65 33  cated by sqlite3
16840 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e 0a 2a  _initialize()..*
16850 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
16860 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f   are designed to
16870 20 61 69 64 20 69 6e 20 70 72 6f 63 65 73 73 20   aid in process 
16880 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61  initialization a
16890 6e 64 0a 2a 2a 20 73 68 75 74 64 6f 77 6e 20 6f  nd.** shutdown o
168a0 6e 20 65 6d 62 65 64 64 65 64 20 73 79 73 74 65  n embedded syste
168b0 6d 73 2e 20 20 57 6f 72 6b 73 74 61 74 69 6f 6e  ms.  Workstation
168c0 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 75 73   applications us
168d0 69 6e 67 0a 2a 2a 20 53 51 4c 69 74 65 20 6e 6f  ing.** SQLite no
168e0 72 6d 61 6c 6c 79 20 64 6f 20 6e 6f 74 20 6e 65  rmally do not ne
168f0 65 64 20 74 6f 20 69 6e 76 6f 6b 65 20 65 69 74  ed to invoke eit
16900 68 65 72 20 6f 66 20 74 68 65 73 65 20 72 6f 75  her of these rou
16910 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 63  tines..**.** A c
16920 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69  all to sqlite3_i
16930 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 61  nitialize() is a
16940 6e 20 22 65 66 66 65 63 74 69 76 65 22 20 63 61  n "effective" ca
16950 6c 6c 20 69 66 20 69 74 20 69 73 0a 2a 2a 20 74  ll if it is.** t
16960 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 73 71  he first time sq
16970 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
16980 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 20 64 75  () is invoked du
16990 72 69 6e 67 20 74 68 65 20 6c 69 66 65 74 69 6d  ring the lifetim
169a0 65 20 6f 66 0a 2a 2a 20 74 68 65 20 70 72 6f 63  e of.** the proc
169b0 65 73 73 2c 20 6f 72 20 69 66 20 69 74 20 69 73  ess, or if it is
169c0 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20   the first time 
169d0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
169e0 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a  ze() is invoked.
169f0 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 63  ** following a c
16a00 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73  all to sqlite3_s
16a10 68 75 74 64 6f 77 6e 28 29 2e 20 20 5e 28 4f 6e  hutdown().  ^(On
16a20 6c 79 20 61 6e 20 65 66 66 65 63 74 69 76 65 20  ly an effective 
16a30 63 61 6c 6c 0a 2a 2a 20 6f 66 20 73 71 6c 69 74  call.** of sqlit
16a40 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
16a50 64 6f 65 73 20 61 6e 79 20 69 6e 69 74 69 61 6c  does any initial
16a60 69 7a 61 74 69 6f 6e 2e 20 20 41 6c 6c 20 6f 74  ization.  All ot
16a70 68 65 72 20 63 61 6c 6c 73 0a 2a 2a 20 61 72 65  her calls.** are
16a80 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73   harmless no-ops
16a90 2e 29 5e 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c  .)^.**.** A call
16aa0 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
16ab0 64 6f 77 6e 28 29 20 69 73 20 61 6e 20 22 65 66  down() is an "ef
16ac0 66 65 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66  fective" call if
16ad0 20 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74   it is the first
16ae0 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  .** call to sqli
16af0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 73  te3_shutdown() s
16b00 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 73 71  ince the last sq
16b10 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
16b20 28 29 2e 20 20 5e 28 4f 6e 6c 79 0a 2a 2a 20 61  ().  ^(Only.** a
16b30 6e 20 65 66 66 65 63 74 69 76 65 20 63 61 6c 6c  n effective call
16b40 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
16b50 64 6f 77 6e 28 29 20 64 6f 65 73 20 61 6e 79 20  down() does any 
16b60 64 65 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  deinitialization
16b70 2e 0a 2a 2a 20 41 6c 6c 20 6f 74 68 65 72 20 76  ..** All other v
16b80 61 6c 69 64 20 63 61 6c 6c 73 20 74 6f 20 73 71  alid calls to sq
16b90 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
16ba0 20 61 72 65 20 68 61 72 6d 6c 65 73 73 20 6e 6f   are harmless no
16bb0 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68  -ops.)^.**.** Th
16bc0 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
16bd0 6c 69 7a 65 28 29 20 69 6e 74 65 72 66 61 63 65  lize() interface
16be0 20 69 73 20 74 68 72 65 61 64 73 61 66 65 2c 20   is threadsafe, 
16bf0 62 75 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74  but sqlite3_shut
16c00 64 6f 77 6e 28 29 0a 2a 2a 20 69 73 20 6e 6f 74  down().** is not
16c10 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 73  .  The sqlite3_s
16c20 68 75 74 64 6f 77 6e 28 29 20 69 6e 74 65 72 66  hutdown() interf
16c30 61 63 65 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65  ace must only be
16c40 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 61 0a 2a   called from a.*
16c50 2a 20 73 69 6e 67 6c 65 20 74 68 72 65 61 64 2e  * single thread.
16c60 20 20 41 6c 6c 20 6f 70 65 6e 20 5b 64 61 74 61    All open [data
16c70 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
16c80 5d 20 6d 75 73 74 20 62 65 20 63 6c 6f 73 65 64  ] must be closed
16c90 20 61 6e 64 20 61 6c 6c 0a 2a 2a 20 6f 74 68 65   and all.** othe
16ca0 72 20 53 51 4c 69 74 65 20 72 65 73 6f 75 72 63  r SQLite resourc
16cb0 65 73 20 6d 75 73 74 20 62 65 20 64 65 61 6c 6c  es must be deall
16cc0 6f 63 61 74 65 64 20 70 72 69 6f 72 20 74 6f 20  ocated prior to 
16cd0 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 73 71 6c 69  invoking.** sqli
16ce0 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 0a  te3_shutdown()..
16cf0 2a 2a 0a 2a 2a 20 41 6d 6f 6e 67 20 6f 74 68 65  **.** Among othe
16d00 72 20 74 68 69 6e 67 73 2c 20 5e 73 71 6c 69 74  r things, ^sqlit
16d10 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
16d20 77 69 6c 6c 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73  will invoke.** s
16d30 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
16d40 2e 20 20 53 69 6d 69 6c 61 72 6c 79 2c 20 5e 73  .  Similarly, ^s
16d50 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
16d60 29 0a 2a 2a 20 77 69 6c 6c 20 69 6e 76 6f 6b 65  ).** will invoke
16d70 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28   sqlite3_os_end(
16d80 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  )..**.** ^The sq
16d90 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
16da0 28 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72  () routine retur
16db0 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f  ns [SQLITE_OK] o
16dc0 6e 20 73 75 63 63 65 73 73 2e 0a 2a 2a 20 5e 49  n success..** ^I
16dd0 66 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f  f for some reaso
16de0 6e 2c 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  n, sqlite3_initi
16df0 61 6c 69 7a 65 28 29 20 69 73 20 75 6e 61 62 6c  alize() is unabl
16e00 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 0a  e to initialize.
16e10 2a 2a 20 74 68 65 20 6c 69 62 72 61 72 79 20 28  ** the library (
16e20 70 65 72 68 61 70 73 20 69 74 20 69 73 20 75 6e  perhaps it is un
16e30 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65  able to allocate
16e40 20 61 20 6e 65 65 64 65 64 20 72 65 73 6f 75 72   a needed resour
16e50 63 65 20 73 75 63 68 0a 2a 2a 20 61 73 20 61 20  ce such.** as a 
16e60 6d 75 74 65 78 29 20 69 74 20 72 65 74 75 72 6e  mutex) it return
16e70 73 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65  s an [error code
16e80 5d 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51  ] other than [SQ
16e90 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 0a 2a 2a 20  LITE_OK]..**.** 
16ea0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69  ^The sqlite3_ini
16eb0 74 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e  tialize() routin
16ec0 65 20 69 73 20 63 61 6c 6c 65 64 20 69 6e 74 65  e is called inte
16ed0 72 6e 61 6c 6c 79 20 62 79 20 6d 61 6e 79 20 6f  rnally by many o
16ee0 74 68 65 72 0a 2a 2a 20 53 51 4c 69 74 65 20 69  ther.** SQLite i
16ef0 6e 74 65 72 66 61 63 65 73 20 73 6f 20 74 68 61  nterfaces so tha
16f00 74 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  t an application
16f10 20 75 73 75 61 6c 6c 79 20 64 6f 65 73 20 6e 6f   usually does no
16f20 74 20 6e 65 65 64 20 74 6f 0a 2a 2a 20 69 6e 76  t need to.** inv
16f30 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  oke sqlite3_init
16f40 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63 74 6c  ialize() directl
16f50 79 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c  y.  For example,
16f60 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
16f70 5d 0a 2a 2a 20 63 61 6c 6c 73 20 73 71 6c 69 74  ].** calls sqlit
16f80 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
16f90 73 6f 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69  so the SQLite li
16fa0 62 72 61 72 79 20 77 69 6c 6c 20 62 65 20 61 75  brary will be au
16fb0 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 69  tomatically.** i
16fc0 6e 69 74 69 61 6c 69 7a 65 64 20 77 68 65 6e 20  nitialized when 
16fd0 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
16fe0 20 69 73 20 63 61 6c 6c 65 64 20 69 66 20 69 74   is called if it
16ff0 20 68 61 73 20 6e 6f 74 20 62 65 20 69 6e 69 74   has not be init
17000 69 61 6c 69 7a 65 64 0a 2a 2a 20 61 6c 72 65 61  ialized.** alrea
17010 64 79 2e 20 20 5e 48 6f 77 65 76 65 72 2c 20 69  dy.  ^However, i
17020 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
17030 69 6c 65 64 20 77 69 74 68 20 74 68 65 20 5b 53  iled with the [S
17040 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49  QLITE_OMIT_AUTOI
17050 4e 49 54 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d  NIT].** compile-
17060 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65  time option, the
17070 6e 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20  n the automatic 
17080 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
17090 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a  _initialize().**
170a0 20 61 72 65 20 6f 6d 69 74 74 65 64 20 61 6e 64   are omitted and
170b0 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
170c0 20 6d 75 73 74 20 63 61 6c 6c 20 73 71 6c 69 74   must call sqlit
170d0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
170e0 64 69 72 65 63 74 6c 79 0a 2a 2a 20 70 72 69 6f  directly.** prio
170f0 72 20 74 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f  r to using any o
17100 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65  ther SQLite inte
17110 72 66 61 63 65 2e 20 20 46 6f 72 20 6d 61 78 69  rface.  For maxi
17120 6d 75 6d 20 70 6f 72 74 61 62 69 6c 69 74 79 2c  mum portability,
17130 0a 2a 2a 20 69 74 20 69 73 20 72 65 63 6f 6d 6d  .** it is recomm
17140 65 6e 64 65 64 20 74 68 61 74 20 61 70 70 6c 69  ended that appli
17150 63 61 74 69 6f 6e 73 20 61 6c 77 61 79 73 20 69  cations always i
17160 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e  nvoke sqlite3_in
17170 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a 20 64 69  itialize().** di
17180 72 65 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20  rectly prior to 
17190 75 73 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20  using any other 
171a0 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65  SQLite interface
171b0 2e 20 20 46 75 74 75 72 65 20 72 65 6c 65 61 73  .  Future releas
171c0 65 73 0a 2a 2a 20 6f 66 20 53 51 4c 69 74 65 20  es.** of SQLite 
171d0 6d 61 79 20 72 65 71 75 69 72 65 20 74 68 69 73  may require this
171e0 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  .  In other word
171f0 73 2c 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  s, the behavior 
17200 65 78 68 69 62 69 74 65 64 0a 2a 2a 20 77 68 65  exhibited.** whe
17210 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  n SQLite is comp
17220 69 6c 65 64 20 77 69 74 68 20 5b 53 51 4c 49 54  iled with [SQLIT
17230 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d  E_OMIT_AUTOINIT]
17240 20 6d 69 67 68 74 20 62 65 63 6f 6d 65 20 74 68   might become th
17250 65 0a 2a 2a 20 64 65 66 61 75 6c 74 20 62 65 68  e.** default beh
17260 61 76 69 6f 72 20 69 6e 20 73 6f 6d 65 20 66 75  avior in some fu
17270 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66 20  ture release of 
17280 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  SQLite..**.** Th
17290 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  e sqlite3_os_ini
172a0 74 28 29 20 72 6f 75 74 69 6e 65 20 64 6f 65 73  t() routine does
172b0 20 6f 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65   operating-syste
172c0 6d 20 73 70 65 63 69 66 69 63 0a 2a 2a 20 69 6e  m specific.** in
172d0 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20  itialization of 
172e0 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
172f0 72 79 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  ry.  The sqlite3
17300 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 72 6f 75  _os_end().** rou
17310 74 69 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20  tine undoes the 
17320 65 66 66 65 63 74 20 6f 66 20 73 71 6c 69 74 65  effect of sqlite
17330 33 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20 54 79  3_os_init().  Ty
17340 70 69 63 61 6c 20 74 61 73 6b 73 0a 2a 2a 20 70  pical tasks.** p
17350 65 72 66 6f 72 6d 65 64 20 62 79 20 74 68 65 73  erformed by thes
17360 65 20 72 6f 75 74 69 6e 65 73 20 69 6e 63 6c 75  e routines inclu
17370 64 65 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 72  de allocation or
17380 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a   deallocation.**
17390 20 6f 66 20 73 74 61 74 69 63 20 72 65 73 6f 75   of static resou
173a0 72 63 65 73 2c 20 69 6e 69 74 69 61 6c 69 7a 61  rces, initializa
173b0 74 69 6f 6e 20 6f 66 20 67 6c 6f 62 61 6c 20 76  tion of global v
173c0 61 72 69 61 62 6c 65 73 2c 0a 2a 2a 20 73 65 74  ariables,.** set
173d0 74 69 6e 67 20 75 70 20 61 20 64 65 66 61 75 6c  ting up a defaul
173e0 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20  t [sqlite3_vfs] 
173f0 6d 6f 64 75 6c 65 2c 20 6f 72 20 73 65 74 74 69  module, or setti
17400 6e 67 20 75 70 0a 2a 2a 20 61 20 64 65 66 61 75  ng up.** a defau
17410 6c 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  lt configuration
17420 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
17430 63 6f 6e 66 69 67 28 29 5d 2e 0a 2a 2a 0a 2a 2a  config()]..**.**
17440 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
17450 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 69 6e   should never in
17460 76 6f 6b 65 20 65 69 74 68 65 72 20 73 71 6c 69  voke either sqli
17470 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a  te3_os_init().**
17480 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65   or sqlite3_os_e
17490 6e 64 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20  nd() directly.  
174a0 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
174b0 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 69 6e 76 6f  should only invo
174c0 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 69 6e  ke.** sqlite3_in
174d0 69 74 69 61 6c 69 7a 65 28 29 20 61 6e 64 20 73  itialize() and s
174e0 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
174f0 29 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ).  The sqlite3_
17500 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a 20 69 6e 74  os_init().** int
17510 65 72 66 61 63 65 20 69 73 20 63 61 6c 6c 65 64  erface is called
17520 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
17530 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  y sqlite3_initia
17540 6c 69 7a 65 28 29 20 61 6e 64 0a 2a 2a 20 73 71  lize() and.** sq
17550 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 69  lite3_os_end() i
17560 73 20 63 61 6c 6c 65 64 20 62 79 20 73 71 6c 69  s called by sqli
17570 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20  te3_shutdown(). 
17580 20 41 70 70 72 6f 70 72 69 61 74 65 0a 2a 2a 20   Appropriate.** 
17590 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
175a0 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69  for sqlite3_os_i
175b0 6e 69 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65  nit() and sqlite
175c0 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 61 72  3_os_end().** ar
175d0 65 20 62 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c  e built into SQL
175e0 69 74 65 20 77 68 65 6e 20 69 74 20 69 73 20 63  ite when it is c
175f0 6f 6d 70 69 6c 65 64 20 66 6f 72 20 55 6e 69 78  ompiled for Unix
17600 2c 20 57 69 6e 64 6f 77 73 2c 20 6f 72 20 4f 53  , Windows, or OS
17610 2f 32 2e 0a 2a 2a 20 57 68 65 6e 20 5b 63 75 73  /2..** When [cus
17620 74 6f 6d 20 62 75 69 6c 64 73 20 7c 20 62 75 69  tom builds | bui
17630 6c 74 20 66 6f 72 20 6f 74 68 65 72 20 70 6c 61  lt for other pla
17640 74 66 6f 72 6d 73 5d 0a 2a 2a 20 28 75 73 69 6e  tforms].** (usin
17650 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 53  g the [SQLITE_OS
17660 5f 4f 54 48 45 52 3d 31 5d 20 63 6f 6d 70 69 6c  _OTHER=1] compil
17670 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e  e-time.** option
17680 29 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  ) the applicatio
17690 6e 20 6d 75 73 74 20 73 75 70 70 6c 79 20 61 20  n must supply a 
176a0 73 75 69 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65  suitable impleme
176b0 6e 74 61 74 69 6f 6e 20 66 6f 72 0a 2a 2a 20 73  ntation for.** s
176c0 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
176d0 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f   and sqlite3_os_
176e0 65 6e 64 28 29 2e 20 20 41 6e 20 61 70 70 6c 69  end().  An appli
176f0 63 61 74 69 6f 6e 2d 73 75 70 70 6c 69 65 64 0a  cation-supplied.
17700 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
17710 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f  n of sqlite3_os_
17720 69 6e 69 74 28 29 20 6f 72 20 73 71 6c 69 74 65  init() or sqlite
17730 33 5f 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 6d 75  3_os_end().** mu
17740 73 74 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  st return [SQLIT
17750 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73  E_OK] on success
17760 20 61 6e 64 20 73 6f 6d 65 20 6f 74 68 65 72 20   and some other 
17770 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 75 70 6f  [error code] upo
17780 6e 0a 2a 2a 20 66 61 69 6c 75 72 65 2e 0a 2a 2f  n.** failure..*/
17790 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
177a0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
177b0 7a 65 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45  ze(void);.SQLITE
177c0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
177d0 5f 73 68 75 74 64 6f 77 6e 28 76 6f 69 64 29 3b  _shutdown(void);
177e0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
177f0 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
17800 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50  void);.SQLITE_AP
17810 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73  I int sqlite3_os
17820 5f 65 6e 64 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a  _end(void);../*.
17830 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e  ** CAPI3REF: Con
17840 66 69 67 75 72 69 6e 67 20 54 68 65 20 53 51 4c  figuring The SQL
17850 69 74 65 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a  ite Library.**.*
17860 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f  * The sqlite3_co
17870 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63 65  nfig() interface
17880 20 69 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65   is used to make
17890 20 67 6c 6f 62 61 6c 20 63 6f 6e 66 69 67 75 72   global configur
178a0 61 74 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73  ation.** changes
178b0 20 74 6f 20 53 51 4c 69 74 65 20 69 6e 20 6f 72   to SQLite in or
178c0 64 65 72 20 74 6f 20 74 75 6e 65 20 53 51 4c 69  der to tune SQLi
178d0 74 65 20 74 6f 20 74 68 65 20 73 70 65 63 69 66  te to the specif
178e0 69 63 20 6e 65 65 64 73 20 6f 66 0a 2a 2a 20 74  ic needs of.** t
178f0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  he application. 
17900 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e   The default con
17910 66 69 67 75 72 61 74 69 6f 6e 20 69 73 20 72 65  figuration is re
17920 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 6d 6f  commended for mo
17930 73 74 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f  st.** applicatio
17940 6e 73 20 61 6e 64 20 73 6f 20 74 68 69 73 20 72  ns and so this r
17950 6f 75 74 69 6e 65 20 69 73 20 75 73 75 61 6c 6c  outine is usuall
17960 79 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 2e  y not necessary.
17970 20 20 49 74 20 69 73 0a 2a 2a 20 70 72 6f 76 69    It is.** provi
17980 64 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 72  ded to support r
17990 61 72 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  are applications
179a0 20 77 69 74 68 20 75 6e 75 73 75 61 6c 20 6e 65   with unusual ne
179b0 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 54 68  eds..**.** <b>Th
179c0 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  e sqlite3_config
179d0 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
179e0 6e 6f 74 20 74 68 72 65 61 64 73 61 66 65 2e 20  not threadsafe. 
179f0 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a  The application.
17a00 2a 2a 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74  ** must ensure t
17a10 68 61 74 20 6e 6f 20 6f 74 68 65 72 20 53 51 4c  hat no other SQL
17a20 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 61  ite interfaces a
17a30 72 65 20 69 6e 76 6f 6b 65 64 20 62 79 20 6f 74  re invoked by ot
17a40 68 65 72 0a 2a 2a 20 74 68 72 65 61 64 73 20 77  her.** threads w
17a50 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e  hile sqlite3_con
17a60 66 69 67 28 29 20 69 73 20 72 75 6e 6e 69 6e 67  fig() is running
17a70 2e 3c 2f 62 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  .</b>.**.** The 
17a80 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
17a90 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 6d 61   interface.** ma
17aa0 79 20 6f 6e 6c 79 20 62 65 20 69 6e 76 6f 6b 65  y only be invoke
17ab0 64 20 70 72 69 6f 72 20 74 6f 20 6c 69 62 72 61  d prior to libra
17ac0 72 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  ry initializatio
17ad0 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69  n using.** [sqli
17ae0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
17af0 5d 20 6f 72 20 61 66 74 65 72 20 73 68 75 74 64  ] or after shutd
17b00 6f 77 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  own by [sqlite3_
17b10 73 68 75 74 64 6f 77 6e 28 29 5d 2e 0a 2a 2a 20  shutdown()]..** 
17b20 5e 49 66 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ^If sqlite3_conf
17b30 69 67 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61  ig() is called a
17b40 66 74 65 72 20 5b 73 71 6c 69 74 65 33 5f 69 6e  fter [sqlite3_in
17b50 69 74 69 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20  itialize()] and 
17b60 62 65 66 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74  before.** [sqlit
17b70 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 74  e3_shutdown()] t
17b80 68 65 6e 20 69 74 20 77 69 6c 6c 20 72 65 74 75  hen it will retu
17b90 72 6e 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45  rn SQLITE_MISUSE
17ba0 2e 0a 2a 2a 20 4e 6f 74 65 2c 20 68 6f 77 65 76  ..** Note, howev
17bb0 65 72 2c 20 74 68 61 74 20 5e 73 71 6c 69 74 65  er, that ^sqlite
17bc0 33 5f 63 6f 6e 66 69 67 28 29 20 63 61 6e 20 62  3_config() can b
17bd0 65 20 63 61 6c 6c 65 64 20 61 73 20 70 61 72 74  e called as part
17be0 20 6f 66 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65   of the.** imple
17bf0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20  mentation of an 
17c00 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
17c10 6e 65 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f  ned [sqlite3_os_
17c20 69 6e 69 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54  init()]..**.** T
17c30 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
17c40 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e  t to sqlite3_con
17c50 66 69 67 28 29 20 69 73 20 61 6e 20 69 6e 74 65  fig() is an inte
17c60 67 65 72 0a 2a 2a 20 5b 63 6f 6e 66 69 67 75 72  ger.** [configur
17c70 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d 20 74 68  ation option] th
17c80 61 74 20 64 65 74 65 72 6d 69 6e 65 73 0a 2a 2a  at determines.**
17c90 20 77 68 61 74 20 70 72 6f 70 65 72 74 79 20 6f   what property o
17ca0 66 20 53 51 4c 69 74 65 20 69 73 20 74 6f 20 62  f SQLite is to b
17cb0 65 20 63 6f 6e 66 69 67 75 72 65 64 2e 20 20 53  e configured.  S
17cc0 75 62 73 65 71 75 65 6e 74 20 61 72 67 75 6d 65  ubsequent argume
17cd0 6e 74 73 0a 2a 2a 20 76 61 72 79 20 64 65 70 65  nts.** vary depe
17ce0 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 5b 63 6f  nding on the [co
17cf0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
17d00 6f 6e 5d 0a 2a 2a 20 69 6e 20 74 68 65 20 66 69  on].** in the fi
17d10 72 73 74 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  rst argument..**
17d20 0a 2a 2a 20 5e 57 68 65 6e 20 61 20 63 6f 6e 66  .** ^When a conf
17d30 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
17d40 20 69 73 20 73 65 74 2c 20 73 71 6c 69 74 65 33   is set, sqlite3
17d50 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e  _config() return
17d60 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a  s [SQLITE_OK]..*
17d70 2a 20 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e  * ^If the option
17d80 20 69 73 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 53   is unknown or S
17d90 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c 65 20  QLite is unable 
17da0 74 6f 20 73 65 74 20 74 68 65 20 6f 70 74 69 6f  to set the optio
17db0 6e 0a 2a 2a 20 74 68 65 6e 20 74 68 69 73 20 72  n.** then this r
17dc0 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61  outine returns a
17dd0 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72   non-zero [error
17de0 20 63 6f 64 65 5d 2e 0a 2a 2f 0a 53 51 4c 49 54   code]..*/.SQLIT
17df0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
17e00 33 5f 63 6f 6e 66 69 67 28 69 6e 74 2c 20 2e 2e  3_config(int, ..
17e10 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  .);../*.** CAPI3
17e20 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 65 20 64  REF: Configure d
17e30 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
17e40 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ons.** METHOD: s
17e50 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65  qlite3.**.** The
17e60 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66   sqlite3_db_conf
17e70 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ig() interface i
17e80 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 63  s used to make c
17e90 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20  onfiguration.** 
17ea0 63 68 61 6e 67 65 73 20 74 6f 20 61 20 5b 64 61  changes to a [da
17eb0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
17ec0 6e 5d 2e 20 20 54 68 65 20 69 6e 74 65 72 66 61  n].  The interfa
17ed0 63 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  ce is similar to
17ee0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
17ef0 66 69 67 28 29 5d 20 65 78 63 65 70 74 20 74 68  fig()] except th
17f00 61 74 20 74 68 65 20 63 68 61 6e 67 65 73 20 61  at the changes a
17f10 70 70 6c 79 20 74 6f 20 61 20 73 69 6e 67 6c 65  pply to a single
17f20 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
17f30 6e 6e 65 63 74 69 6f 6e 5d 20 28 73 70 65 63 69  nnection] (speci
17f40 66 69 65 64 20 69 6e 20 74 68 65 20 66 69 72 73  fied in the firs
17f50 74 20 61 72 67 75 6d 65 6e 74 29 2e 0a 2a 2a 0a  t argument)..**.
17f60 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72  ** The second ar
17f70 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
17f80 33 5f 64 62 5f 63 6f 6e 66 69 67 28 44 2c 56 2c  3_db_config(D,V,
17f90 2e 2e 2e 29 20 20 69 73 20 74 68 65 0a 2a 2a 20  ...)  is the.** 
17fa0 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  [SQLITE_DBCONFIG
17fb0 5f 4c 4f 4f 4b 41 53 49 44 45 20 7c 20 63 6f 6e  _LOOKASIDE | con
17fc0 66 69 67 75 72 61 74 69 6f 6e 20 76 65 72 62 5d  figuration verb]
17fd0 20 2d 20 61 6e 20 69 6e 74 65 67 65 72 20 63 6f   - an integer co
17fe0 64 65 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69  de .** that indi
17ff0 63 61 74 65 73 20 77 68 61 74 20 61 73 70 65 63  cates what aspec
18000 74 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  t of the [databa
18010 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 69  se connection] i
18020 73 20 62 65 69 6e 67 20 63 6f 6e 66 69 67 75 72  s being configur
18030 65 64 2e 0a 2a 2a 20 53 75 62 73 65 71 75 65 6e  ed..** Subsequen
18040 74 20 61 72 67 75 6d 65 6e 74 73 20 76 61 72 79  t arguments vary
18050 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68   depending on th
18060 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
18070 76 65 72 62 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c  verb..**.** ^Cal
18080 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 62  ls to sqlite3_db
18090 5f 63 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e  _config() return
180a0 20 53 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e   SQLITE_OK if an
180b0 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20 74 68 65  d only if.** the
180c0 20 63 61 6c 6c 20 69 73 20 63 6f 6e 73 69 64 65   call is conside
180d0 72 65 64 20 73 75 63 63 65 73 73 66 75 6c 2e 0a  red successful..
180e0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
180f0 74 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e  t sqlite3_db_con
18100 66 69 67 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e  fig(sqlite3*, in
18110 74 20 6f 70 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a  t op, ...);../*.
18120 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d  ** CAPI3REF: Mem
18130 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 52  ory Allocation R
18140 6f 75 74 69 6e 65 73 0a 2a 2a 0a 2a 2a 20 41 6e  outines.**.** An
18150 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
18160 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73  s object defines
18170 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 62   the interface b
18180 65 74 77 65 65 6e 20 53 51 4c 69 74 65 0a 2a 2a  etween SQLite.**
18190 20 61 6e 64 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d   and low-level m
181a0 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
181b0 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a   routines..**.**
181c0 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   This object is 
181d0 75 73 65 64 20 69 6e 20 6f 6e 6c 79 20 6f 6e 65  used in only one
181e0 20 70 6c 61 63 65 20 69 6e 20 74 68 65 20 53 51   place in the SQ
181f0 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 0a  Lite interface..
18200 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20  ** A pointer to 
18210 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
18220 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 74 68  his object is th
18230 65 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  e argument to.**
18240 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
18250 28 29 5d 20 77 68 65 6e 20 74 68 65 20 63 6f 6e  ()] when the con
18260 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
18270 6e 20 69 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  n is.** [SQLITE_
18280 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 6f  CONFIG_MALLOC] o
18290 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  r [SQLITE_CONFIG
182a0 5f 47 45 54 4d 41 4c 4c 4f 43 5d 2e 20 20 0a 2a  _GETMALLOC].  .*
182b0 2a 20 42 79 20 63 72 65 61 74 69 6e 67 20 61 6e  * By creating an
182c0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
182d0 73 20 6f 62 6a 65 63 74 0a 2a 2a 20 61 6e 64 20  s object.** and 
182e0 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73  passing it to [s
182f0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b  qlite3_config]([
18300 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
18310 4c 4c 4f 43 5d 29 0a 2a 2a 20 64 75 72 69 6e 67  LLOC]).** during
18320 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20   configuration, 
18330 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63  an application c
18340 61 6e 20 73 70 65 63 69 66 79 20 61 6e 20 61 6c  an specify an al
18350 74 65 72 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d  ternative.** mem
18360 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  ory allocation s
18370 75 62 73 79 73 74 65 6d 20 66 6f 72 20 53 51 4c  ubsystem for SQL
18380 69 74 65 20 74 6f 20 75 73 65 20 66 6f 72 20 61  ite to use for a
18390 6c 6c 20 6f 66 20 69 74 73 0a 2a 2a 20 64 79 6e  ll of its.** dyn
183a0 61 6d 69 63 20 6d 65 6d 6f 72 79 20 6e 65 65 64  amic memory need
183b0 73 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68  s..**.** Note th
183c0 61 74 20 53 51 4c 69 74 65 20 63 6f 6d 65 73 20  at SQLite comes 
183d0 77 69 74 68 20 73 65 76 65 72 61 6c 20 5b 62 75  with several [bu
183e0 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c  ilt-in memory al
183f0 6c 6f 63 61 74 6f 72 73 5d 0a 2a 2a 20 74 68 61  locators].** tha
18400 74 20 61 72 65 20 70 65 72 66 65 63 74 6c 79 20  t are perfectly 
18410 61 64 65 71 75 61 74 65 20 66 6f 72 20 74 68 65  adequate for the
18420 20 6f 76 65 72 77 68 65 6c 6d 69 6e 67 20 6d 61   overwhelming ma
18430 6a 6f 72 69 74 79 20 6f 66 20 61 70 70 6c 69 63  jority of applic
18440 61 74 69 6f 6e 73 0a 2a 2a 20 61 6e 64 20 74 68  ations.** and th
18450 61 74 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69  at this object i
18460 73 20 6f 6e 6c 79 20 75 73 65 66 75 6c 20 74 6f  s only useful to
18470 20 61 20 74 69 6e 79 20 6d 69 6e 6f 72 69 74 79   a tiny minority
18480 20 6f 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   of applications
18490 0a 2a 2a 20 77 69 74 68 20 73 70 65 63 69 61 6c  .** with special
184a0 69 7a 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ized memory allo
184b0 63 61 74 69 6f 6e 20 72 65 71 75 69 72 65 6d 65  cation requireme
184c0 6e 74 73 2e 20 20 54 68 69 73 20 6f 62 6a 65 63  nts.  This objec
184d0 74 20 69 73 0a 2a 2a 20 61 6c 73 6f 20 75 73 65  t is.** also use
184e0 64 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67  d during testing
184f0 20 6f 66 20 53 51 4c 69 74 65 20 69 6e 20 6f 72   of SQLite in or
18500 64 65 72 20 74 6f 20 73 70 65 63 69 66 79 20 61  der to specify a
18510 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 2a 2a  n alternative.**
18520 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
18530 72 20 74 68 61 74 20 73 69 6d 75 6c 61 74 65 73  r that simulates
18540 20 6d 65 6d 6f 72 79 20 6f 75 74 2d 6f 66 2d 6d   memory out-of-m
18550 65 6d 6f 72 79 20 63 6f 6e 64 69 74 69 6f 6e 73  emory conditions
18560 20 69 6e 0a 2a 2a 20 6f 72 64 65 72 20 74 6f 20   in.** order to 
18570 76 65 72 69 66 79 20 74 68 61 74 20 53 51 4c 69  verify that SQLi
18580 74 65 20 72 65 63 6f 76 65 72 73 20 67 72 61 63  te recovers grac
18590 65 66 75 6c 6c 79 20 66 72 6f 6d 20 73 75 63 68  efully from such
185a0 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a  .** conditions..
185b0 2a 2a 0a 2a 2a 20 54 68 65 20 78 4d 61 6c 6c 6f  **.** The xMallo
185c0 63 2c 20 78 52 65 61 6c 6c 6f 63 2c 20 61 6e 64  c, xRealloc, and
185d0 20 78 46 72 65 65 20 6d 65 74 68 6f 64 73 20 6d   xFree methods m
185e0 75 73 74 20 77 6f 72 6b 20 6c 69 6b 65 20 74 68  ust work like th
185f0 65 0a 2a 2a 20 6d 61 6c 6c 6f 63 28 29 2c 20 72  e.** malloc(), r
18600 65 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65  ealloc() and fre
18610 65 28 29 20 66 75 6e 63 74 69 6f 6e 73 20 66 72  e() functions fr
18620 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  om the standard 
18630 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 5e 53  C library..** ^S
18640 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65 65 73  QLite guarantees
18650 20 74 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64   that the second
18660 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20   argument to.** 
18670 78 52 65 61 6c 6c 6f 63 20 69 73 20 61 6c 77 61  xRealloc is alwa
18680 79 73 20 61 20 76 61 6c 75 65 20 72 65 74 75 72  ys a value retur
18690 6e 65 64 20 62 79 20 61 20 70 72 69 6f 72 20 63  ned by a prior c
186a0 61 6c 6c 20 74 6f 20 78 52 6f 75 6e 64 75 70 2e  all to xRoundup.
186b0 0a 2a 2a 0a 2a 2a 20 78 53 69 7a 65 20 73 68 6f  .**.** xSize sho
186c0 75 6c 64 20 72 65 74 75 72 6e 20 74 68 65 20 61  uld return the a
186d0 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 20 6f 66  llocated size of
186e0 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61   a memory alloca
186f0 74 69 6f 6e 0a 2a 2a 20 70 72 65 76 69 6f 75 73  tion.** previous
18700 6c 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ly obtained from
18710 20 78 4d 61 6c 6c 6f 63 20 6f 72 20 78 52 65 61   xMalloc or xRea
18720 6c 6c 6f 63 2e 20 20 54 68 65 20 61 6c 6c 6f 63  lloc.  The alloc
18730 61 74 65 64 20 73 69 7a 65 0a 2a 2a 20 69 73 20  ated size.** is 
18740 61 6c 77 61 79 73 20 61 74 20 6c 65 61 73 74 20  always at least 
18750 61 73 20 62 69 67 20 61 73 20 74 68 65 20 72 65  as big as the re
18760 71 75 65 73 74 65 64 20 73 69 7a 65 20 62 75 74  quested size but
18770 20 6d 61 79 20 62 65 20 6c 61 72 67 65 72 2e 0a   may be larger..
18780 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 6f 75 6e 64  **.** The xRound
18790 75 70 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e  up method return
187a0 73 20 77 68 61 74 20 77 6f 75 6c 64 20 62 65 20  s what would be 
187b0 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69  the allocated si
187c0 7a 65 20 6f 66 0a 2a 2a 20 61 20 6d 65 6d 6f 72  ze of.** a memor
187d0 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 67 69 76  y allocation giv
187e0 65 6e 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  en a particular 
187f0 72 65 71 75 65 73 74 65 64 20 73 69 7a 65 2e 20  requested size. 
18800 20 4d 6f 73 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20   Most memory.** 
18810 61 6c 6c 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64  allocators round
18820 20 75 70 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63   up memory alloc
18830 61 74 69 6f 6e 73 20 61 74 20 6c 65 61 73 74 20  ations at least 
18840 74 6f 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74  to the next mult
18850 69 70 6c 65 0a 2a 2a 20 6f 66 20 38 2e 20 20 53  iple.** of 8.  S
18860 6f 6d 65 20 61 6c 6c 6f 63 61 74 6f 72 73 20 72  ome allocators r
18870 6f 75 6e 64 20 75 70 20 74 6f 20 61 20 6c 61 72  ound up to a lar
18880 67 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f 72 20  ger multiple or 
18890 74 6f 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e  to a power of 2.
188a0 0a 2a 2a 20 45 76 65 72 79 20 6d 65 6d 6f 72 79  .** Every memory
188b0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75   allocation requ
188c0 65 73 74 20 63 6f 6d 69 6e 67 20 69 6e 20 74 68  est coming in th
188d0 72 6f 75 67 68 20 5b 73 71 6c 69 74 65 33 5f 6d  rough [sqlite3_m
188e0 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 6f 72 20 5b  alloc()].** or [
188f0 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
18900 29 5d 20 66 69 72 73 74 20 63 61 6c 6c 73 20 78  )] first calls x
18910 52 6f 75 6e 64 75 70 2e 20 20 49 66 20 78 52 6f  Roundup.  If xRo
18920 75 6e 64 75 70 20 72 65 74 75 72 6e 73 20 30 2c  undup returns 0,
18930 20 0a 2a 2a 20 74 68 61 74 20 63 61 75 73 65 73   .** that causes
18940 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
18950 6e 67 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ng memory alloca
18960 74 69 6f 6e 20 74 6f 20 66 61 69 6c 2e 0a 2a 2a  tion to fail..**
18970 0a 2a 2a 20 54 68 65 20 78 49 6e 69 74 20 6d 65  .** The xInit me
18980 74 68 6f 64 20 69 6e 69 74 69 61 6c 69 7a 65 73  thod initializes
18990 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f   the memory allo
189a0 63 61 74 6f 72 2e 20 20 46 6f 72 20 65 78 61 6d  cator.  For exam
189b0 70 6c 65 2c 0a 2a 2a 20 69 74 20 6d 69 67 68 74  ple,.** it might
189c0 20 61 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65   allocate any re
189d0 71 75 69 72 65 20 6d 75 74 65 78 65 73 20 6f 72  quire mutexes or
189e0 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 6e 74 65   initialize inte
189f0 72 6e 61 6c 20 64 61 74 61 0a 2a 2a 20 73 74 72  rnal data.** str
18a00 75 63 74 75 72 65 73 2e 20 20 54 68 65 20 78 53  uctures.  The xS
18a10 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69  hutdown method i
18a20 73 20 69 6e 76 6f 6b 65 64 20 28 69 6e 64 69 72  s invoked (indir
18a30 65 63 74 6c 79 29 20 62 79 0a 2a 2a 20 5b 73 71  ectly) by.** [sq
18a40 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
18a50 5d 20 61 6e 64 20 73 68 6f 75 6c 64 20 64 65 61  ] and should dea
18a60 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65 73 6f  llocate any reso
18a70 75 72 63 65 73 20 61 63 71 75 69 72 65 64 0a 2a  urces acquired.*
18a80 2a 20 62 79 20 78 49 6e 69 74 2e 20 20 54 68 65  * by xInit.  The
18a90 20 70 41 70 70 44 61 74 61 20 70 6f 69 6e 74 65   pAppData pointe
18aa0 72 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65  r is used as the
18ab0 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 20   only parameter 
18ac0 74 6f 0a 2a 2a 20 78 49 6e 69 74 20 61 6e 64 20  to.** xInit and 
18ad0 78 53 68 75 74 64 6f 77 6e 2e 0a 2a 2a 0a 2a 2a  xShutdown..**.**
18ae0 20 53 51 4c 69 74 65 20 68 6f 6c 64 73 20 74 68   SQLite holds th
18af0 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  e [SQLITE_MUTEX_
18b00 53 54 41 54 49 43 5f 4d 41 53 54 45 52 5d 20 6d  STATIC_MASTER] m
18b10 75 74 65 78 20 77 68 65 6e 20 69 74 20 69 6e 76  utex when it inv
18b20 6f 6b 65 73 0a 2a 2a 20 74 68 65 20 78 49 6e 69  okes.** the xIni
18b30 74 20 6d 65 74 68 6f 64 2c 20 73 6f 20 74 68 65  t method, so the
18b40 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 20 6e 65   xInit method ne
18b50 65 64 20 6e 6f 74 20 62 65 20 74 68 72 65 61 64  ed not be thread
18b60 73 61 66 65 2e 20 20 54 68 65 0a 2a 2a 20 78 53  safe.  The.** xS
18b70 68 75 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69  hutdown method i
18b80 73 20 6f 6e 6c 79 20 63 61 6c 6c 65 64 20 66 72  s only called fr
18b90 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74  om [sqlite3_shut
18ba0 64 6f 77 6e 28 29 5d 20 73 6f 20 69 74 20 64 6f  down()] so it do
18bb0 65 73 0a 2a 2a 20 6e 6f 74 20 6e 65 65 64 20 74  es.** not need t
18bc0 6f 20 62 65 20 74 68 72 65 61 64 73 61 66 65 20  o be threadsafe 
18bd0 65 69 74 68 65 72 2e 20 20 46 6f 72 20 61 6c 6c  either.  For all
18be0 20 6f 74 68 65 72 20 6d 65 74 68 6f 64 73 2c 20   other methods, 
18bf0 53 51 4c 69 74 65 0a 2a 2a 20 68 6f 6c 64 73 20  SQLite.** holds 
18c00 74 68 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45  the [SQLITE_MUTE
18c10 58 5f 53 54 41 54 49 43 5f 4d 45 4d 5d 20 6d 75  X_STATIC_MEM] mu
18c20 74 65 78 20 61 73 20 6c 6f 6e 67 20 61 73 20 74  tex as long as t
18c30 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f  he.** [SQLITE_CO
18c40 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20  NFIG_MEMSTATUS] 
18c50 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
18c60 74 69 6f 6e 20 69 73 20 74 75 72 6e 65 64 20 6f  tion is turned o
18c70 6e 20 28 77 68 69 63 68 0a 2a 2a 20 69 74 20 69  n (which.** it i
18c80 73 20 62 79 20 64 65 66 61 75 6c 74 29 20 61 6e  s by default) an
18c90 64 20 73 6f 20 74 68 65 20 6d 65 74 68 6f 64 73  d so the methods
18ca0 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
18cb0 6c 79 20 73 65 72 69 61 6c 69 7a 65 64 2e 0a 2a  ly serialized..*
18cc0 2a 20 48 6f 77 65 76 65 72 2c 20 69 66 20 5b 53  * However, if [S
18cd0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
18ce0 53 54 41 54 55 53 5d 20 69 73 20 64 69 73 61 62  STATUS] is disab
18cf0 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 74  led, then the ot
18d00 68 65 72 0a 2a 2a 20 6d 65 74 68 6f 64 73 20 6d  her.** methods m
18d10 75 73 74 20 62 65 20 74 68 72 65 61 64 73 61 66  ust be threadsaf
18d20 65 20 6f 72 20 65 6c 73 65 20 6d 61 6b 65 20 74  e or else make t
18d30 68 65 69 72 20 6f 77 6e 20 61 72 72 61 6e 67 65  heir own arrange
18d40 6d 65 6e 74 73 20 66 6f 72 0a 2a 2a 20 73 65 72  ments for.** ser
18d50 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a  ialization..**.*
18d60 2a 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 65  * SQLite will ne
18d70 76 65 72 20 69 6e 76 6f 6b 65 20 78 49 6e 69 74  ver invoke xInit
18d80 28 29 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63  () more than onc
18d90 65 20 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74  e without an int
18da0 65 72 76 65 6e 69 6e 67 0a 2a 2a 20 63 61 6c 6c  ervening.** call
18db0 20 74 6f 20 78 53 68 75 74 64 6f 77 6e 28 29 2e   to xShutdown().
18dc0 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
18dd0 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  ct sqlite3_mem_m
18de0 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 6d  ethods sqlite3_m
18df0 65 6d 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75  em_methods;.stru
18e00 63 74 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  ct sqlite3_mem_m
18e10 65 74 68 6f 64 73 20 7b 0a 20 20 76 6f 69 64 20  ethods {.  void 
18e20 2a 28 2a 78 4d 61 6c 6c 6f 63 29 28 69 6e 74 29  *(*xMalloc)(int)
18e30 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 65 6d  ;         /* Mem
18e40 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66  ory allocation f
18e50 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69  unction */.  voi
18e60 64 20 28 2a 78 46 72 65 65 29 28 76 6f 69 64 2a  d (*xFree)(void*
18e70 29 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20 46  );          /* F
18e80 72 65 65 20 61 20 70 72 69 6f 72 20 61 6c 6c 6f  ree a prior allo
18e90 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64  cation */.  void
18ea0 20 2a 28 2a 78 52 65 61 6c 6c 6f 63 29 28 76 6f   *(*xRealloc)(vo
18eb0 69 64 2a 2c 69 6e 74 29 3b 20 20 2f 2a 20 52 65  id*,int);  /* Re
18ec0 73 69 7a 65 20 61 6e 20 61 6c 6c 6f 63 61 74 69  size an allocati
18ed0 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53  on */.  int (*xS
18ee0 69 7a 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20  ize)(void*);    
18ef0 20 20 20 20 20 20 20 2f 2a 20 52 65 74 75 72 6e         /* Return
18f00 20 74 68 65 20 73 69 7a 65 20 6f 66 20 61 6e 20   the size of an 
18f10 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20  allocation */.  
18f20 69 6e 74 20 28 2a 78 52 6f 75 6e 64 75 70 29 28  int (*xRoundup)(
18f30 69 6e 74 29 3b 20 20 20 20 20 20 20 20 20 20 2f  int);          /
18f40 2a 20 52 6f 75 6e 64 20 75 70 20 72 65 71 75 65  * Round up reque
18f50 73 74 20 73 69 7a 65 20 74 6f 20 61 6c 6c 6f 63  st size to alloc
18f60 61 74 69 6f 6e 20 73 69 7a 65 20 2a 2f 0a 20 20  ation size */.  
18f70 69 6e 74 20 28 2a 78 49 6e 69 74 29 28 76 6f 69  int (*xInit)(voi
18f80 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20 20 2f  d*);           /
18f90 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65  * Initialize the
18fa0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
18fb0 72 20 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 53  r */.  void (*xS
18fc0 68 75 74 64 6f 77 6e 29 28 76 6f 69 64 2a 29 3b  hutdown)(void*);
18fd0 20 20 20 20 20 20 2f 2a 20 44 65 69 6e 69 74 69        /* Deiniti
18fe0 61 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79  alize the memory
18ff0 20 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20   allocator */.  
19000 76 6f 69 64 20 2a 70 41 70 70 44 61 74 61 3b 20  void *pAppData; 
19010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19020 2a 20 41 72 67 75 6d 65 6e 74 20 74 6f 20 78 49  * Argument to xI
19030 6e 69 74 28 29 20 61 6e 64 20 78 53 68 75 74 64  nit() and xShutd
19040 6f 77 6e 28 29 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a  own() */.};../*.
19050 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e  ** CAPI3REF: Con
19060 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f  figuration Optio
19070 6e 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  ns.** KEYWORDS: 
19080 7b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f  {configuration o
19090 70 74 69 6f 6e 7d 0a 2a 2a 0a 2a 2a 20 54 68 65  ption}.**.** The
190a0 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65  se constants are
190b0 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69   the available i
190c0 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61  nteger configura
190d0 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61  tion options tha
190e0 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73  t.** can be pass
190f0 65 64 20 61 73 20 74 68 65 20 66 69 72 73 74 20  ed as the first 
19100 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20  argument to the 
19110 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
19120 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a  )] interface..**
19130 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67 75 72  .** New configur
19140 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61  ation options ma
19150 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75  y be added in fu
19160 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
19170 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73   SQLite..** Exis
19180 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69  ting configurati
19190 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74  on options might
191a0 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75 65 64   be discontinued
191b0 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a  .  Applications.
191c0 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63 6b 20  ** should check 
191d0 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20  the return code 
191e0 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 63 6f  from [sqlite3_co
191f0 6e 66 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20  nfig()] to make 
19200 73 75 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65  sure that.** the
19210 20 63 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 54   call worked.  T
19220 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  he [sqlite3_conf
19230 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  ig()] interface 
19240 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a 2a 2a  will return a.**
19250 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72   non-zero [error
19260 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69 73 63   code] if a disc
19270 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e 73 75  ontinued or unsu
19280 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67 75 72  pported configur
19290 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20  ation option.** 
192a0 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a  is invoked..**.*
192b0 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49  * <dl>.** [[SQLI
192c0 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
192d0 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c  THREAD]] <dt>SQL
192e0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
192f0 45 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20  ETHREAD</dt>.** 
19300 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f  <dd>There are no
19310 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68   arguments to th
19320 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69  is option.  ^Thi
19330 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68  s option sets th
19340 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20  e.** [threading 
19350 6d 6f 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d  mode] to Single-
19360 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74 68 65  thread.  In othe
19370 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69 73 61  r words, it disa
19380 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65  bles.** all mute
19390 78 69 6e 67 20 61 6e 64 20 70 75 74 73 20 53 51  xing and puts SQ
193a0 4c 69 74 65 20 69 6e 74 6f 20 61 20 6d 6f 64 65  Lite into a mode
193b0 20 77 68 65 72 65 20 69 74 20 63 61 6e 20 6f 6e   where it can on
193c0 6c 79 20 62 65 20 75 73 65 64 0a 2a 2a 20 62 79  ly be used.** by
193d0 20 61 20 73 69 6e 67 6c 65 20 74 68 72 65 61 64   a single thread
193e0 2e 20 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69  .   ^If SQLite i
193f0 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  s compiled with.
19400 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  ** the [SQLITE_T
19410 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49  HREADSAFE | SQLI
19420 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
19430 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
19440 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20  tion then.** it 
19450 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
19460 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74  to change the [t
19470 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 66  hreading mode] f
19480 72 6f 6d 20 69 74 73 20 64 65 66 61 75 6c 74 0a  rom its default.
19490 2a 2a 20 76 61 6c 75 65 20 6f 66 20 53 69 6e 67  ** value of Sing
194a0 6c 65 2d 74 68 72 65 61 64 20 61 6e 64 20 73 6f  le-thread and so
194b0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
194c0 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ()] will return 
194d0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  .** [SQLITE_ERRO
194e0 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74  R] if called wit
194f0 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  h the SQLITE_CON
19500 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
19510 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  .** configuratio
19520 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a  n option.</dd>.*
19530 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
19540 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44  NFIG_MULTITHREAD
19550 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
19560 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44  NFIG_MULTITHREAD
19570 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
19580 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65  re are no argume
19590 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69  nts to this opti
195a0 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f  on.  ^This optio
195b0 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74  n sets the.** [t
195c0 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
195d0 6f 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 2e 20  o Multi-thread. 
195e0 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
195f0 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20   it disables.** 
19600 6d 75 74 65 78 69 6e 67 20 6f 6e 20 5b 64 61 74  mutexing on [dat
19610 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
19620 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20  ] and [prepared 
19630 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63  statement] objec
19640 74 73 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69  ts..** The appli
19650 63 61 74 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e  cation is respon
19660 73 69 62 6c 65 20 66 6f 72 20 73 65 72 69 61 6c  sible for serial
19670 69 7a 69 6e 67 20 61 63 63 65 73 73 20 74 6f 0a  izing access to.
19680 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
19690 6e 65 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70  nections] and [p
196a0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
196b0 74 73 5d 2e 20 20 42 75 74 20 6f 74 68 65 72 20  ts].  But other 
196c0 6d 75 74 65 78 65 73 0a 2a 2a 20 61 72 65 20 65  mutexes.** are e
196d0 6e 61 62 6c 65 64 20 73 6f 20 74 68 61 74 20 53  nabled so that S
196e0 51 4c 69 74 65 20 77 69 6c 6c 20 62 65 20 73 61  QLite will be sa
196f0 66 65 20 74 6f 20 75 73 65 20 69 6e 20 61 20 6d  fe to use in a m
19700 75 6c 74 69 2d 74 68 72 65 61 64 65 64 0a 2a 2a  ulti-threaded.**
19710 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 73 20   environment as 
19720 6c 6f 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20 74  long as no two t
19730 68 72 65 61 64 73 20 61 74 74 65 6d 70 74 20 74  hreads attempt t
19740 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 0a 2a  o use the same.*
19750 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
19760 65 63 74 69 6f 6e 5d 20 61 74 20 74 68 65 20 73  ection] at the s
19770 61 6d 65 20 74 69 6d 65 2e 20 20 5e 49 66 20 53  ame time.  ^If S
19780 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
19790 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53  d with.** the [S
197a0 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
197b0 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44   | SQLITE_THREAD
197c0 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d  SAFE=0] compile-
197d0 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e  time option then
197e0 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f  .** it is not po
197f0 73 73 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68  ssible to set th
19800 65 20 4d 75 6c 74 69 2d 74 68 72 65 61 64 20 5b  e Multi-thread [
19810 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
19820 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
19830 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72  config()] will r
19840 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52  eturn [SQLITE_ER
19850 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77  ROR] if called w
19860 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c 49 54  ith the.** SQLIT
19870 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48  E_CONFIG_MULTITH
19880 52 45 41 44 20 63 6f 6e 66 69 67 75 72 61 74 69  READ configurati
19890 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a  on option.</dd>.
198a0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
198b0 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44  ONFIG_SERIALIZED
198c0 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
198d0 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 3c  NFIG_SERIALIZED<
198e0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72  /dt>.** <dd>Ther
198f0 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e  e are no argumen
19900 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f  ts to this optio
19910 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e  n.  ^This option
19920 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68   sets the.** [th
19930 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f  reading mode] to
19940 20 53 65 72 69 61 6c 69 7a 65 64 2e 20 49 6e 20   Serialized. In 
19950 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 69  other words, thi
19960 73 20 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73  s option enables
19970 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65 78 65 73 20  .** all mutexes 
19980 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 72 65  including the re
19990 63 75 72 73 69 76 65 0a 2a 2a 20 6d 75 74 65 78  cursive.** mutex
199a0 65 73 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20  es on [database 
199b0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20  connection] and 
199c0 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
199d0 65 6e 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a  ent] objects..**
199e0 20 49 6e 20 74 68 69 73 20 6d 6f 64 65 20 28 77   In this mode (w
199f0 68 69 63 68 20 69 73 20 74 68 65 20 64 65 66 61  hich is the defa
19a00 75 6c 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20  ult when SQLite 
19a10 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
19a20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  .** [SQLITE_THRE
19a30 41 44 53 41 46 45 3d 31 5d 29 20 74 68 65 20 53  ADSAFE=1]) the S
19a40 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77 69  QLite library wi
19a50 6c 6c 20 69 74 73 65 6c 66 20 73 65 72 69 61 6c  ll itself serial
19a60 69 7a 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f  ize access.** to
19a70 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
19a80 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65  ctions] and [pre
19a90 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
19aa0 5d 20 73 6f 20 74 68 61 74 20 74 68 65 0a 2a 2a  ] so that the.**
19ab0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
19ac0 66 72 65 65 20 74 6f 20 75 73 65 20 74 68 65 20  free to use the 
19ad0 73 61 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63  same [database c
19ae0 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 72 20 74 68  onnection] or th
19af0 65 0a 2a 2a 20 73 61 6d 65 20 5b 70 72 65 70 61  e.** same [prepa
19b00 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
19b10 6e 20 64 69 66 66 65 72 65 6e 74 20 74 68 72 65  n different thre
19b20 61 64 73 20 61 74 20 74 68 65 20 73 61 6d 65 20  ads at the same 
19b30 74 69 6d 65 2e 0a 2a 2a 20 5e 49 66 20 53 51 4c  time..** ^If SQL
19b40 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
19b50 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
19b60 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
19b70 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
19b80 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
19b90 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
19ba0 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  * it is not poss
19bb0 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20  ible to set the 
19bc0 53 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65  Serialized [thre
19bd0 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a  ading mode] and.
19be0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ** [sqlite3_conf
19bf0 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72  ig()] will retur
19c00 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  n [SQLITE_ERROR]
19c10 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20   if called with 
19c20 74 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f  the.** SQLITE_CO
19c30 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20  NFIG_SERIALIZED 
19c40 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
19c50 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  tion.</dd>.**.**
19c60 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
19c70 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51  _MALLOC]] <dt>SQ
19c80 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
19c90 4f 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  OC</dt>.** <dd> 
19ca0 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  ^(The SQLITE_CON
19cb0 46 49 47 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f  FIG_MALLOC optio
19cc0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
19cd0 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20   argument which 
19ce0 69 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72  is .** a pointer
19cf0 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20   to an instance 
19d00 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
19d10 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72  mem_methods] str
19d20 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61  ucture..** The a
19d30 72 67 75 6d 65 6e 74 20 73 70 65 63 69 66 69 65  rgument specifie
19d40 73 0a 2a 2a 20 61 6c 74 65 72 6e 61 74 69 76 65  s.** alternative
19d50 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72   low-level memor
19d60 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75  y allocation rou
19d70 74 69 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64  tines to be used
19d80 20 69 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20   in place of.** 
19d90 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  the memory alloc
19da0 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 62  ation routines b
19db0 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65  uilt into SQLite
19dc0 2e 29 5e 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65  .)^ ^SQLite make
19dd0 73 0a 2a 2a 20 69 74 73 20 6f 77 6e 20 70 72 69  s.** its own pri
19de0 76 61 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65  vate copy of the
19df0 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
19e00 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
19e10 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 0a  hods] structure.
19e20 2a 2a 20 62 65 66 6f 72 65 20 74 68 65 20 5b 73  ** before the [s
19e30 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
19e40 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 2e 3c 2f   call returns.</
19e50 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
19e60 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
19e70 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  LOC]] <dt>SQLITE
19e80 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
19e90 43 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  C</dt>.** <dd> ^
19ea0 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
19eb0 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 20 6f 70 74  IG_GETMALLOC opt
19ec0 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
19ed0 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
19ee0 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65  h.** is a pointe
19ef0 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65  r to an instance
19f00 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
19f10 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74  _mem_methods] st
19f20 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20  ructure..** The 
19f30 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
19f40 68 6f 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75  hods].** structu
19f50 72 65 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74  re is filled wit
19f60 68 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20  h the currently 
19f70 64 65 66 69 6e 65 64 20 6d 65 6d 6f 72 79 20 61  defined memory a
19f80 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e  llocation routin
19f90 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70  es.)^.** This op
19fa0 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64  tion can be used
19fb0 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74 68 65   to overload the
19fc0 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20   default memory 
19fd0 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f  allocation.** ro
19fe0 75 74 69 6e 65 73 20 77 69 74 68 20 61 20 77 72  utines with a wr
19ff0 61 70 70 65 72 20 74 68 61 74 20 73 69 6d 75 6c  apper that simul
1a000 61 74 69 6f 6e 73 20 6d 65 6d 6f 72 79 20 61 6c  ations memory al
1a010 6c 6f 63 61 74 69 6f 6e 20 66 61 69 6c 75 72 65  location failure
1a020 20 6f 72 0a 2a 2a 20 74 72 61 63 6b 73 20 6d 65   or.** tracks me
1a030 6d 6f 72 79 20 75 73 61 67 65 2c 20 66 6f 72 20  mory usage, for 
1a040 65 78 61 6d 70 6c 65 2e 20 3c 2f 64 64 3e 0a 2a  example. </dd>.*
1a050 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1a060 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 5d  NFIG_MEMSTATUS]]
1a070 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1a080 49 47 5f 4d 45 4d 53 54 41 54 55 53 3c 2f 64 74  IG_MEMSTATUS</dt
1a090 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53  >.** <dd> ^The S
1a0a0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1a0b0 53 54 41 54 55 53 20 6f 70 74 69 6f 6e 20 74 61  STATUS option ta
1a0c0 6b 65 73 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  kes single argum
1a0d0 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e 74 2c  ent of type int,
1a0e0 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 65 64 20  .** interpreted 
1a0f0 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68  as a boolean, wh
1a100 69 63 68 20 65 6e 61 62 6c 65 73 20 6f 72 20 64  ich enables or d
1a110 69 73 61 62 6c 65 73 20 74 68 65 20 63 6f 6c 6c  isables the coll
1a120 65 63 74 69 6f 6e 20 6f 66 0a 2a 2a 20 6d 65 6d  ection of.** mem
1a130 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  ory allocation s
1a140 74 61 74 69 73 74 69 63 73 2e 20 5e 28 57 68 65  tatistics. ^(Whe
1a150 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  n memory allocat
1a160 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20 61  ion statistics a
1a170 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2c 20  re.** disabled, 
1a180 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51  the following SQ
1a190 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20  Lite interfaces 
1a1a0 62 65 63 6f 6d 65 20 6e 6f 6e 2d 6f 70 65 72 61  become non-opera
1a1b0 74 69 6f 6e 61 6c 3a 0a 2a 2a 20 20 20 3c 75 6c  tional:.**   <ul
1a1c0 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c  >.**   <li> [sql
1a1d0 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
1a1e0 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73  ()].**   <li> [s
1a1f0 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69  qlite3_memory_hi
1a200 67 68 77 61 74 65 72 28 29 5d 0a 2a 2a 20 20 20  ghwater()].**   
1a210 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 6f  <li> [sqlite3_so
1a220 66 74 5f 68 65 61 70 5f 6c 69 6d 69 74 36 34 28  ft_heap_limit64(
1a230 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71  )].**   <li> [sq
1a240 6c 69 74 65 33 5f 73 74 61 74 75 73 36 34 28 29  lite3_status64()
1a250 5d 0a 2a 2a 20 20 20 3c 2f 75 6c 3e 29 5e 0a 2a  ].**   </ul>)^.*
1a260 2a 20 5e 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  * ^Memory alloca
1a270 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20  tion statistics 
1a280 61 72 65 20 65 6e 61 62 6c 65 64 20 62 79 20 64  are enabled by d
1a290 65 66 61 75 6c 74 20 75 6e 6c 65 73 73 20 53 51  efault unless SQ
1a2a0 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69  Lite is.** compi
1a2b0 6c 65 64 20 77 69 74 68 20 5b 53 51 4c 49 54 45  led with [SQLITE
1a2c0 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54  _DEFAULT_MEMSTAT
1a2d0 55 53 5d 3d 30 20 69 6e 20 77 68 69 63 68 20 63  US]=0 in which c
1a2e0 61 73 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c  ase memory.** al
1a2f0 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74  location statist
1a300 69 63 73 20 61 72 65 20 64 69 73 61 62 6c 65 64  ics are disabled
1a310 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 20   by default..** 
1a320 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1a330 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41  LITE_CONFIG_SCRA
1a340 54 43 48 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  TCH]] <dt>SQLITE
1a350 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 3c  _CONFIG_SCRATCH<
1a360 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
1a370 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1a380 53 43 52 41 54 43 48 20 6f 70 74 69 6f 6e 20 73  SCRATCH option s
1a390 70 65 63 69 66 69 65 73 20 61 20 73 74 61 74 69  pecifies a stati
1a3a0 63 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 0a  c memory buffer.
1a3b0 2a 2a 20 74 68 61 74 20 53 51 4c 69 74 65 20 63  ** that SQLite c
1a3c0 61 6e 20 75 73 65 20 66 6f 72 20 73 63 72 61 74  an use for scrat
1a3d0 63 68 20 6d 65 6d 6f 72 79 2e 20 20 5e 28 54 68  ch memory.  ^(Th
1a3e0 65 72 65 20 61 72 65 20 74 68 72 65 65 20 61 72  ere are three ar
1a3f0 67 75 6d 65 6e 74 73 0a 2a 2a 20 74 6f 20 53 51  guments.** to SQ
1a400 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41  LITE_CONFIG_SCRA
1a410 54 43 48 3a 20 20 41 20 70 6f 69 6e 74 65 72 20  TCH:  A pointer 
1a420 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20 61 6c 69  an 8-byte.** ali
1a430 67 6e 65 64 20 6d 65 6d 6f 72 79 20 62 75 66 66  gned memory buff
1a440 65 72 20 66 72 6f 6d 20 77 68 69 63 68 20 74 68  er from which th
1a450 65 20 73 63 72 61 74 63 68 20 61 6c 6c 6f 63 61  e scratch alloca
1a460 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 0a 2a 2a  tions will be.**
1a470 20 64 72 61 77 6e 2c 20 74 68 65 20 73 69 7a 65   drawn, the size
1a480 20 6f 66 20 65 61 63 68 20 73 63 72 61 74 63 68   of each scratch
1a490 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 28 73 7a 29   allocation (sz)
1a4a0 2c 0a 2a 2a 20 61 6e 64 20 74 68 65 20 6d 61 78  ,.** and the max
1a4b0 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 73  imum number of s
1a4c0 63 72 61 74 63 68 20 61 6c 6c 6f 63 61 74 69 6f  cratch allocatio
1a4d0 6e 73 20 28 4e 29 2e 29 5e 0a 2a 2a 20 54 68 65  ns (N).)^.** The
1a4e0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
1a4f0 6d 75 73 74 20 62 65 20 61 20 70 6f 69 6e 74 65  must be a pointe
1a500 72 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20 61  r to an 8-byte a
1a510 6c 69 67 6e 65 64 20 62 75 66 66 65 72 0a 2a 2a  ligned buffer.**
1a520 20 6f 66 20 61 74 20 6c 65 61 73 74 20 73 7a 2a   of at least sz*
1a530 4e 20 62 79 74 65 73 20 6f 66 20 6d 65 6d 6f 72  N bytes of memor
1a540 79 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  y..** ^SQLite wi
1a550 6c 6c 20 6e 6f 74 20 75 73 65 20 6d 6f 72 65 20  ll not use more 
1a560 74 68 61 6e 20 6f 6e 65 20 73 63 72 61 74 63 68  than one scratch
1a570 20 62 75 66 66 65 72 73 20 70 65 72 20 74 68 72   buffers per thr
1a580 65 61 64 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20  ead..** ^SQLite 
1a590 77 69 6c 6c 20 6e 65 76 65 72 20 72 65 71 75 65  will never reque
1a5a0 73 74 20 61 20 73 63 72 61 74 63 68 20 62 75 66  st a scratch buf
1a5b0 66 65 72 20 74 68 61 74 20 69 73 20 6d 6f 72 65  fer that is more
1a5c0 20 74 68 61 6e 20 36 0a 2a 2a 20 74 69 6d 65 73   than 6.** times
1a5d0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 70 61   the database pa
1a5e0 67 65 20 73 69 7a 65 2e 0a 2a 2a 20 5e 49 66 20  ge size..** ^If 
1a5f0 53 51 4c 69 74 65 20 6e 65 65 64 73 20 6e 65 65  SQLite needs nee
1a600 64 73 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a  ds additional.**
1a610 20 73 63 72 61 74 63 68 20 6d 65 6d 6f 72 79 20   scratch memory 
1a620 62 65 79 6f 6e 64 20 77 68 61 74 20 69 73 20 70  beyond what is p
1a630 72 6f 76 69 64 65 64 20 62 79 20 74 68 69 73 20  rovided by this 
1a640 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1a650 74 69 6f 6e 2c 20 74 68 65 6e 20 0a 2a 2a 20 5b  tion, then .** [
1a660 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
1a670 5d 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 74  ] will be used t
1a680 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6d 65 6d  o obtain the mem
1a690 6f 72 79 20 6e 65 65 64 65 64 2e 3c 70 3e 0a 2a  ory needed.<p>.*
1a6a0 2a 20 5e 57 68 65 6e 20 74 68 65 20 61 70 70 6c  * ^When the appl
1a6b0 69 63 61 74 69 6f 6e 20 70 72 6f 76 69 64 65 73  ication provides
1a6c0 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 73   any amount of s
1a6d0 63 72 61 74 63 68 20 6d 65 6d 6f 72 79 20 75 73  cratch memory us
1a6e0 69 6e 67 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f  ing.** SQLITE_CO
1a6f0 4e 46 49 47 5f 53 43 52 41 54 43 48 2c 20 53 51  NFIG_SCRATCH, SQ
1a700 4c 69 74 65 20 61 76 6f 69 64 73 20 75 6e 6e 65  Lite avoids unne
1a710 63 65 73 73 61 72 79 20 6c 61 72 67 65 0a 2a 2a  cessary large.**
1a720 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
1a730 7c 68 65 61 70 20 61 6c 6c 6f 63 61 74 69 6f 6e  |heap allocation
1a740 73 5d 2e 0a 2a 2a 20 54 68 69 73 20 63 61 6e 20  s]..** This can 
1a750 68 65 6c 70 20 5b 52 6f 62 73 6f 6e 20 70 72 6f  help [Robson pro
1a760 6f 66 7c 70 72 65 76 65 6e 74 20 6d 65 6d 6f 72  of|prevent memor
1a770 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69  y allocation fai
1a780 6c 75 72 65 73 5d 20 64 75 65 20 74 6f 20 68 65  lures] due to he
1a790 61 70 0a 2a 2a 20 66 72 61 67 6d 65 6e 74 61 74  ap.** fragmentat
1a7a0 69 6f 6e 20 69 6e 20 6c 6f 77 2d 6d 65 6d 6f 72  ion in low-memor
1a7b0 79 20 65 6d 62 65 64 64 65 64 20 73 79 73 74 65  y embedded syste
1a7c0 6d 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a  ms..** </dd>.**.
1a7d0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1a7e0 49 47 5f 50 41 47 45 43 41 43 48 45 5d 5d 20 3c  IG_PAGECACHE]] <
1a7f0 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1a800 5f 50 41 47 45 43 41 43 48 45 3c 2f 64 74 3e 0a  _PAGECACHE</dt>.
1a810 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c  ** <dd> ^The SQL
1a820 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43  ITE_CONFIG_PAGEC
1a830 41 43 48 45 20 6f 70 74 69 6f 6e 20 73 70 65 63  ACHE option spec
1a840 69 66 69 65 73 20 61 20 6d 65 6d 6f 72 79 20 70  ifies a memory p
1a850 6f 6f 6c 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69  ool.** that SQLi
1a860 74 65 20 63 61 6e 20 75 73 65 20 66 6f 72 20 74  te can use for t
1a870 68 65 20 64 61 74 61 62 61 73 65 20 70 61 67 65  he database page
1a880 20 63 61 63 68 65 20 77 69 74 68 20 74 68 65 20   cache with the 
1a890 64 65 66 61 75 6c 74 20 70 61 67 65 0a 2a 2a 20  default page.** 
1a8a0 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  cache implementa
1a8b0 74 69 6f 6e 2e 20 20 0a 2a 2a 20 54 68 69 73 20  tion.  .** This 
1a8c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1a8d0 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70 20  tion is a no-op 
1a8e0 69 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  if an applicatio
1a8f0 6e 2d 64 65 66 69 6e 65 20 70 61 67 65 0a 2a 2a  n-define page.**
1a900 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74   cache implement
1a910 61 74 69 6f 6e 20 69 73 20 6c 6f 61 64 65 64 20  ation is loaded 
1a920 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54  using the [SQLIT
1a930 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32  E_CONFIG_PCACHE2
1a940 5d 2e 0a 2a 2a 20 5e 54 68 65 72 65 20 61 72 65  ]..** ^There are
1a950 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74 73   three arguments
1a960 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49   to SQLITE_CONFI
1a970 47 5f 50 41 47 45 43 41 43 48 45 3a 20 41 20 70  G_PAGECACHE: A p
1a980 6f 69 6e 74 65 72 20 74 6f 0a 2a 2a 20 38 2d 62  ointer to.** 8-b
1a990 79 74 65 20 61 6c 69 67 6e 65 64 20 6d 65 6d 6f  yte aligned memo
1a9a0 72 79 20 28 70 4d 65 6d 29 2c 20 74 68 65 20 73  ry (pMem), the s
1a9b0 69 7a 65 20 6f 66 20 65 61 63 68 20 70 61 67 65  ize of each page
1a9c0 20 63 61 63 68 65 20 6c 69 6e 65 20 28 73 7a 29   cache line (sz)
1a9d0 2c 0a 2a 2a 20 61 6e 64 20 74 68 65 20 6e 75 6d  ,.** and the num
1a9e0 62 65 72 20 6f 66 20 63 61 63 68 65 20 6c 69 6e  ber of cache lin
1a9f0 65 73 20 28 4e 29 2e 0a 2a 2a 20 54 68 65 20 73  es (N)..** The s
1aa00 7a 20 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c  z argument shoul
1aa10 64 20 62 65 20 74 68 65 20 73 69 7a 65 20 6f 66  d be the size of
1aa20 20 74 68 65 20 6c 61 72 67 65 73 74 20 64 61 74   the largest dat
1aa30 61 62 61 73 65 20 70 61 67 65 0a 2a 2a 20 28 61  abase page.** (a
1aa40 20 70 6f 77 65 72 20 6f 66 20 74 77 6f 20 62 65   power of two be
1aa50 74 77 65 65 6e 20 35 31 32 20 61 6e 64 20 36 35  tween 512 and 65
1aa60 35 33 36 29 20 70 6c 75 73 20 73 6f 6d 65 20 65  536) plus some e
1aa70 78 74 72 61 20 62 79 74 65 73 20 66 6f 72 20 65  xtra bytes for e
1aa80 61 63 68 0a 2a 2a 20 70 61 67 65 20 68 65 61 64  ach.** page head
1aa90 65 72 2e 20 20 5e 54 68 65 20 6e 75 6d 62 65 72  er.  ^The number
1aaa0 20 6f 66 20 65 78 74 72 61 20 62 79 74 65 73 20   of extra bytes 
1aab0 6e 65 65 64 65 64 20 62 79 20 74 68 65 20 70 61  needed by the pa
1aac0 67 65 20 68 65 61 64 65 72 0a 2a 2a 20 63 61 6e  ge header.** can
1aad0 20 62 65 20 64 65 74 65 72 6d 69 6e 65 64 20 75   be determined u
1aae0 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  sing [SQLITE_CON
1aaf0 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a  FIG_PCACHE_HDRSZ
1ab00 5d 2e 0a 2a 2a 20 5e 49 74 20 69 73 20 68 61 72  ]..** ^It is har
1ab10 6d 6c 65 73 73 2c 20 61 70 61 72 74 20 66 72 6f  mless, apart fro
1ab20 6d 20 74 68 65 20 77 61 73 74 65 64 20 6d 65 6d  m the wasted mem
1ab30 6f 72 79 2c 0a 2a 2a 20 66 6f 72 20 74 68 65 20  ory,.** for the 
1ab40 73 7a 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  sz parameter to 
1ab50 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 6e  be larger than n
1ab60 65 63 65 73 73 61 72 79 2e 20 20 54 68 65 20 70  ecessary.  The p
1ab70 4d 65 6d 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  Mem.** argument 
1ab80 6d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 61  must be either a
1ab90 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72   NULL pointer or
1aba0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1abb0 20 38 2d 62 79 74 65 0a 2a 2a 20 61 6c 69 67 6e   8-byte.** align
1abc0 65 64 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f  ed block of memo
1abd0 72 79 20 6f 66 20 61 74 20 6c 65 61 73 74 20 73  ry of at least s
1abe0 7a 2a 4e 20 62 79 74 65 73 2c 20 6f 74 68 65 72  z*N bytes, other
1abf0 77 69 73 65 0a 2a 2a 20 73 75 62 73 65 71 75 65  wise.** subseque
1ac00 6e 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  nt behavior is u
1ac10 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 5e 57 68  ndefined..** ^Wh
1ac20 65 6e 20 70 4d 65 6d 20 69 73 20 6e 6f 74 20 4e  en pMem is not N
1ac30 55 4c 4c 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c  ULL, SQLite will
1ac40 20 73 74 72 69 76 65 20 74 6f 20 75 73 65 20 74   strive to use t
1ac50 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f 76 69 64  he memory provid
1ac60 65 64 0a 2a 2a 20 74 6f 20 73 61 74 69 73 66 79  ed.** to satisfy
1ac70 20 70 61 67 65 20 63 61 63 68 65 20 6e 65 65 64   page cache need
1ac80 73 2c 20 66 61 6c 6c 69 6e 67 20 62 61 63 6b 20  s, falling back 
1ac90 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  to [sqlite3_mall
1aca0 6f 63 28 29 5d 20 69 66 0a 2a 2a 20 61 20 70 61  oc()] if.** a pa
1acb0 67 65 20 63 61 63 68 65 20 6c 69 6e 65 20 69 73  ge cache line is
1acc0 20 6c 61 72 67 65 72 20 74 68 61 6e 20 73 7a 20   larger than sz 
1acd0 62 79 74 65 73 20 6f 72 20 69 66 20 61 6c 6c 20  bytes or if all 
1ace0 6f 66 20 74 68 65 20 70 4d 65 6d 20 62 75 66 66  of the pMem buff
1acf0 65 72 0a 2a 2a 20 69 73 20 65 78 68 61 75 73 74  er.** is exhaust
1ad00 65 64 2e 0a 2a 2a 20 5e 49 66 20 70 4d 65 6d 20  ed..** ^If pMem 
1ad10 69 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20 69 73  is NULL and N is
1ad20 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20   non-zero, then 
1ad30 65 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f  each database co
1ad40 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 64 6f 65 73  nnection.** does
1ad50 20 61 6e 20 69 6e 69 74 69 61 6c 20 62 75 6c 6b   an initial bulk
1ad60 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 6f 72 20   allocation for 
1ad70 70 61 67 65 20 63 61 63 68 65 20 6d 65 6d 6f 72  page cache memor
1ad80 79 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74  y.** from [sqlit
1ad90 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73 75 66  e3_malloc()] suf
1ada0 66 69 63 69 65 6e 74 20 66 6f 72 20 4e 20 63 61  ficient for N ca
1adb0 63 68 65 20 6c 69 6e 65 73 20 69 66 20 4e 20 69  che lines if N i
1adc0 73 20 70 6f 73 69 74 69 76 65 20 6f 72 0a 2a 2a  s positive or.**
1add0 20 6f 66 20 2d 31 30 32 34 2a 4e 20 62 79 74 65   of -1024*N byte
1ade0 73 20 69 66 20 4e 20 69 73 20 6e 65 67 61 74 69  s if N is negati
1adf0 76 65 2c 20 2e 20 5e 49 66 20 61 64 64 69 74 69  ve, . ^If additi
1ae00 6f 6e 61 6c 0a 2a 2a 20 70 61 67 65 20 63 61 63  onal.** page cac
1ae10 68 65 20 6d 65 6d 6f 72 79 20 69 73 20 6e 65 65  he memory is nee
1ae20 64 65 64 20 62 65 79 6f 6e 64 20 77 68 61 74 20  ded beyond what 
1ae30 69 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74  is provided by t
1ae40 68 65 20 69 6e 69 74 69 61 6c 0a 2a 2a 20 61 6c  he initial.** al
1ae50 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e 20 53  location, then S
1ae60 51 4c 69 74 65 20 67 6f 65 73 20 74 6f 20 5b 73  QLite goes to [s
1ae70 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
1ae80 20 73 65 70 61 72 61 74 65 6c 79 20 66 6f 72 20   separately for 
1ae90 65 61 63 68 0a 2a 2a 20 61 64 64 69 74 69 6f 6e  each.** addition
1aea0 61 6c 20 63 61 63 68 65 20 6c 69 6e 65 2e 20 3c  al cache line. <
1aeb0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1aec0 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 5d  ITE_CONFIG_HEAP]
1aed0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1aee0 46 49 47 5f 48 45 41 50 3c 2f 64 74 3e 0a 2a 2a  FIG_HEAP</dt>.**
1aef0 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54   <dd> ^The SQLIT
1af00 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 6f 70  E_CONFIG_HEAP op
1af10 74 69 6f 6e 20 73 70 65 63 69 66 69 65 73 20 61  tion specifies a
1af20 20 73 74 61 74 69 63 20 6d 65 6d 6f 72 79 20 62   static memory b
1af30 75 66 66 65 72 20 0a 2a 2a 20 74 68 61 74 20 53  uffer .** that S
1af40 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20 66  QLite will use f
1af50 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 20 64 79  or all of its dy
1af60 6e 61 6d 69 63 20 6d 65 6d 6f 72 79 20 61 6c 6c  namic memory all
1af70 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 0a 2a 2a  ocation needs.**
1af80 20 62 65 79 6f 6e 64 20 74 68 6f 73 65 20 70 72   beyond those pr
1af90 6f 76 69 64 65 64 20 66 6f 72 20 62 79 20 5b 53  ovided for by [S
1afa0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52  QLITE_CONFIG_SCR
1afb0 41 54 43 48 5d 20 61 6e 64 0a 2a 2a 20 5b 53 51  ATCH] and.** [SQ
1afc0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
1afd0 43 41 43 48 45 5d 2e 0a 2a 2a 20 5e 54 68 65 20  CACHE]..** ^The 
1afe0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
1aff0 41 50 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c  AP option is onl
1b000 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 53  y available if S
1b010 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1b020 64 0a 2a 2a 20 77 69 74 68 20 65 69 74 68 65 72  d.** with either
1b030 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
1b040 4d 45 4d 53 59 53 33 5d 20 6f 72 20 5b 53 51 4c  MEMSYS3] or [SQL
1b050 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  ITE_ENABLE_MEMSY
1b060 53 35 5d 20 61 6e 64 20 72 65 74 75 72 6e 73 0a  S5] and returns.
1b070 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52  ** [SQLITE_ERROR
1b080 5d 20 69 66 20 69 6e 76 6f 6b 65 64 20 6f 74 68  ] if invoked oth
1b090 65 72 77 69 73 65 2e 0a 2a 2a 20 5e 54 68 65 72  erwise..** ^Ther
1b0a0 65 20 61 72 65 20 74 68 72 65 65 20 61 72 67 75  e are three argu
1b0b0 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49 54 45 5f  ments to SQLITE_
1b0c0 43 4f 4e 46 49 47 5f 48 45 41 50 3a 0a 2a 2a 20  CONFIG_HEAP:.** 
1b0d0 41 6e 20 38 2d 62 79 74 65 20 61 6c 69 67 6e 65  An 8-byte aligne
1b0e0 64 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  d pointer to the
1b0f0 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 74 68 65 20   memory,.** the 
1b100 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
1b110 69 6e 20 74 68 65 20 6d 65 6d 6f 72 79 20 62 75  in the memory bu
1b120 66 66 65 72 2c 20 61 6e 64 20 74 68 65 20 6d 69  ffer, and the mi
1b130 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e  nimum allocation
1b140 20 73 69 7a 65 2e 0a 2a 2a 20 5e 49 66 20 74 68   size..** ^If th
1b150 65 20 66 69 72 73 74 20 70 6f 69 6e 74 65 72 20  e first pointer 
1b160 28 74 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69 6e  (the memory poin
1b170 74 65 72 29 20 69 73 20 4e 55 4c 4c 2c 20 74 68  ter) is NULL, th
1b180 65 6e 20 53 51 4c 69 74 65 20 72 65 76 65 72 74  en SQLite revert
1b190 73 0a 2a 2a 20 74 6f 20 75 73 69 6e 67 20 69 74  s.** to using it
1b1a0 73 20 64 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79  s default memory
1b1b0 20 61 6c 6c 6f 63 61 74 6f 72 20 28 74 68 65 20   allocator (the 
1b1c0 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20  system malloc() 
1b1d0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 29 2c  implementation),
1b1e0 0a 2a 2a 20 75 6e 64 6f 69 6e 67 20 61 6e 79 20  .** undoing any 
1b1f0 70 72 69 6f 72 20 69 6e 76 6f 63 61 74 69 6f 6e  prior invocation
1b200 20 6f 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   of [SQLITE_CONF
1b210 49 47 5f 4d 41 4c 4c 4f 43 5d 2e 20 20 5e 49 66  IG_MALLOC].  ^If
1b220 20 74 68 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 70   the.** memory p
1b230 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e 55  ointer is not NU
1b240 4c 4c 20 74 68 65 6e 20 74 68 65 20 61 6c 74 65  LL then the alte
1b250 72 6e 61 74 69 76 65 20 6d 65 6d 6f 72 79 0a 2a  rnative memory.*
1b260 2a 20 61 6c 6c 6f 63 61 74 6f 72 20 69 73 20 65  * allocator is e
1b270 6e 67 61 67 65 64 20 74 6f 20 68 61 6e 64 6c 65  ngaged to handle
1b280 20 61 6c 6c 20 6f 66 20 53 51 4c 69 74 65 73 20   all of SQLites 
1b290 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1b2a0 6e 20 6e 65 65 64 73 2e 0a 2a 2a 20 54 68 65 20  n needs..** The 
1b2b0 66 69 72 73 74 20 70 6f 69 6e 74 65 72 20 28 74  first pointer (t
1b2c0 68 65 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65  he memory pointe
1b2d0 72 29 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e  r) must be align
1b2e0 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a  ed to an 8-byte.
1b2f0 2a 2a 20 62 6f 75 6e 64 61 72 79 20 6f 72 20 73  ** boundary or s
1b300 75 62 73 65 71 75 65 6e 74 20 62 65 68 61 76 69  ubsequent behavi
1b310 6f 72 20 6f 66 20 53 51 4c 69 74 65 20 77 69 6c  or of SQLite wil
1b320 6c 20 62 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a  l be undefined..
1b330 2a 2a 20 54 68 65 20 6d 69 6e 69 6d 75 6d 20 61  ** The minimum a
1b340 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 69  llocation size i
1b350 73 20 63 61 70 70 65 64 20 61 74 20 32 2a 2a 31  s capped at 2**1
1b360 32 2e 20 52 65 61 73 6f 6e 61 62 6c 65 20 76 61  2. Reasonable va
1b370 6c 75 65 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20  lues.** for the 
1b380 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69  minimum allocati
1b390 6f 6e 20 73 69 7a 65 20 61 72 65 20 32 2a 2a 35  on size are 2**5
1b3a0 20 74 68 72 6f 75 67 68 20 32 2a 2a 38 2e 3c 2f   through 2**8.</
1b3b0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1b3c0 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 5d  TE_CONFIG_MUTEX]
1b3d0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1b3e0 46 49 47 5f 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a  FIG_MUTEX</dt>.*
1b3f0 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1b400 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
1b410 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
1b420 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20  single argument 
1b430 77 68 69 63 68 20 69 73 20 61 0a 2a 2a 20 70 6f  which is a.** po
1b440 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
1b450 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71 6c  ance of the [sql
1b460 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1b470 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a  ds] structure..*
1b480 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 73  * The argument s
1b490 70 65 63 69 66 69 65 73 20 61 6c 74 65 72 6e 61  pecifies alterna
1b4a0 74 69 76 65 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d  tive low-level m
1b4b0 75 74 65 78 20 72 6f 75 74 69 6e 65 73 20 74 6f  utex routines to
1b4c0 20 62 65 20 75 73 65 64 0a 2a 2a 20 69 6e 20 70   be used.** in p
1b4d0 6c 61 63 65 20 74 68 65 20 6d 75 74 65 78 20 72  lace the mutex r
1b4e0 6f 75 74 69 6e 65 73 20 62 75 69 6c 74 20 69 6e  outines built in
1b4f0 74 6f 20 53 51 4c 69 74 65 2e 29 5e 20 20 5e 53  to SQLite.)^  ^S
1b500 51 4c 69 74 65 20 6d 61 6b 65 73 20 61 20 63 6f  QLite makes a co
1b510 70 79 20 6f 66 0a 2a 2a 20 74 68 65 20 63 6f 6e  py of.** the con
1b520 74 65 6e 74 20 6f 66 20 74 68 65 20 5b 73 71 6c  tent of the [sql
1b530 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1b540 64 73 5d 20 73 74 72 75 63 74 75 72 65 20 62 65  ds] structure be
1b550 66 6f 72 65 20 74 68 65 20 63 61 6c 6c 20 74 6f  fore the call to
1b560 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
1b570 66 69 67 28 29 5d 20 72 65 74 75 72 6e 73 2e 20  fig()] returns. 
1b580 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1b590 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74  mpiled with.** t
1b5a0 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
1b5b0 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54  DSAFE | SQLITE_T
1b5c0 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d  HREADSAFE=0] com
1b5d0 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1b5e0 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74   then.** the ent
1b5f0 69 72 65 20 6d 75 74 65 78 69 6e 67 20 73 75 62  ire mutexing sub
1b600 73 79 73 74 65 6d 20 69 73 20 6f 6d 69 74 74 65  system is omitte
1b610 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
1b620 20 61 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c 73   and hence calls
1b630 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
1b640 63 6f 6e 66 69 67 28 29 5d 20 77 69 74 68 20 74  config()] with t
1b650 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1b660 5f 4d 55 54 45 58 20 63 6f 6e 66 69 67 75 72 61  _MUTEX configura
1b670 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c  tion option will
1b680 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  .** return [SQLI
1b690 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a  TE_ERROR].</dd>.
1b6a0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1b6b0 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 5d 5d  ONFIG_GETMUTEX]]
1b6c0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1b6d0 49 47 5f 47 45 54 4d 55 54 45 58 3c 2f 64 74 3e  IG_GETMUTEX</dt>
1b6e0 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
1b6f0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1b700 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20 74 61 6b  MUTEX option tak
1b710 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
1b720 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73  ment which.** is
1b730 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1b740 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
1b750 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f   [sqlite3_mutex_
1b760 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75  methods] structu
1b770 72 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c  re.  The.** [sql
1b780 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f  ite3_mutex_metho
1b790 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  ds].** structure
1b7a0 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20   is filled with 
1b7b0 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65  the currently de
1b7c0 66 69 6e 65 64 20 6d 75 74 65 78 20 72 6f 75 74  fined mutex rout
1b7d0 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54 68 69 73 20  ines.)^.** This 
1b7e0 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73  option can be us
1b7f0 65 64 20 74 6f 20 6f 76 65 72 6c 6f 61 64 20 74  ed to overload t
1b800 68 65 20 64 65 66 61 75 6c 74 20 6d 75 74 65 78  he default mutex
1b810 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72   allocation.** r
1b820 6f 75 74 69 6e 65 73 20 77 69 74 68 20 61 20 77  outines with a w
1b830 72 61 70 70 65 72 20 75 73 65 64 20 74 6f 20 74  rapper used to t
1b840 72 61 63 6b 20 6d 75 74 65 78 20 75 73 61 67 65  rack mutex usage
1b850 20 66 6f 72 20 70 65 72 66 6f 72 6d 61 6e 63 65   for performance
1b860 0a 2a 2a 20 70 72 6f 66 69 6c 69 6e 67 20 6f 72  .** profiling or
1b870 20 74 65 73 74 69 6e 67 2c 20 66 6f 72 20 65 78   testing, for ex
1b880 61 6d 70 6c 65 2e 20 20 20 5e 49 66 20 53 51 4c  ample.   ^If SQL
1b890 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
1b8a0 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
1b8b0 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
1b8c0 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1b8d0 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
1b8e0 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
1b8f0 2a 20 74 68 65 20 65 6e 74 69 72 65 20 6d 75 74  * the entire mut
1b900 65 78 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20  exing subsystem 
1b910 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20  is omitted from 
1b920 74 68 65 20 62 75 69 6c 64 20 61 6e 64 20 68 65  the build and he
1b930 6e 63 65 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20  nce calls to.** 
1b940 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1b950 29 5d 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  )] with the SQLI
1b960 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54  TE_CONFIG_GETMUT
1b970 45 58 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  EX configuration
1b980 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20   option will.** 
1b990 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45  return [SQLITE_E
1b9a0 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  RROR].</dd>.**.*
1b9b0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1b9c0 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 5d 20 3c 64  G_LOOKASIDE]] <d
1b9d0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1b9e0 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a 2a  LOOKASIDE</dt>.*
1b9f0 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1ba00 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  ITE_CONFIG_LOOKA
1ba10 53 49 44 45 20 6f 70 74 69 6f 6e 20 74 61 6b 65  SIDE option take
1ba20 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 20  s two arguments 
1ba30 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 0a 2a  that determine.*
1ba40 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 73 69  * the default si
1ba50 7a 65 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20  ze of lookaside 
1ba60 6d 65 6d 6f 72 79 20 6f 6e 20 65 61 63 68 20 5b  memory on each [
1ba70 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1ba80 69 6f 6e 5d 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ion]..** The fir
1ba90 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  st argument is t
1baa0 68 65 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61  he.** size of ea
1bab0 63 68 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66  ch lookaside buf
1bac0 66 65 72 20 73 6c 6f 74 20 61 6e 64 20 74 68 65  fer slot and the
1bad0 20 73 65 63 6f 6e 64 20 69 73 20 74 68 65 20 6e   second is the n
1bae0 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74  umber of.** slot
1baf0 73 20 61 6c 6c 6f 63 61 74 65 64 20 74 6f 20 65  s allocated to e
1bb00 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ach database con
1bb10 6e 65 63 74 69 6f 6e 2e 29 5e 20 20 5e 28 53 51  nection.)^  ^(SQ
1bb20 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b  LITE_CONFIG_LOOK
1bb30 41 53 49 44 45 0a 2a 2a 20 73 65 74 73 20 74 68  ASIDE.** sets th
1bb40 65 20 3c 69 3e 64 65 66 61 75 6c 74 3c 2f 69 3e  e <i>default</i>
1bb50 20 6c 6f 6f 6b 61 73 69 64 65 20 73 69 7a 65 2e   lookaside size.
1bb60 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 44 42 43   The [SQLITE_DBC
1bb70 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d  ONFIG_LOOKASIDE]
1bb80 0a 2a 2a 20 6f 70 74 69 6f 6e 20 74 6f 20 5b 73  .** option to [s
1bb90 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
1bba0 28 29 5d 20 63 61 6e 20 62 65 20 75 73 65 64 20  ()] can be used 
1bbb0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6c 6f  to change the lo
1bbc0 6f 6b 61 73 69 64 65 0a 2a 2a 20 63 6f 6e 66 69  okaside.** confi
1bbd0 67 75 72 61 74 69 6f 6e 20 6f 6e 20 69 6e 64 69  guration on indi
1bbe0 76 69 64 75 61 6c 20 63 6f 6e 6e 65 63 74 69 6f  vidual connectio
1bbf0 6e 73 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  ns.)^ </dd>.**.*
1bc00 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1bc10 47 5f 50 43 41 43 48 45 32 5d 5d 20 3c 64 74 3e  G_PCACHE2]] <dt>
1bc20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1bc30 41 43 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ACHE2</dt>.** <d
1bc40 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  d> ^(The SQLITE_
1bc50 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 20 6f  CONFIG_PCACHE2 o
1bc60 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1bc70 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68  ngle argument wh
1bc80 69 63 68 20 69 73 20 0a 2a 2a 20 61 20 70 6f 69  ich is .** a poi
1bc90 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69  nter to an [sqli
1bca0 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1bcb0 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20 20 54 68  ds2] object.  Th
1bcc0 69 73 20 6f 62 6a 65 63 74 20 73 70 65 63 69 66  is object specif
1bcd0 69 65 73 0a 2a 2a 20 74 68 65 20 69 6e 74 65 72  ies.** the inter
1bce0 66 61 63 65 20 74 6f 20 61 20 63 75 73 74 6f 6d  face to a custom
1bcf0 20 70 61 67 65 20 63 61 63 68 65 20 69 6d 70 6c   page cache impl
1bd00 65 6d 65 6e 74 61 74 69 6f 6e 2e 29 5e 0a 2a 2a  ementation.)^.**
1bd10 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 20 61   ^SQLite makes a
1bd20 20 63 6f 70 79 20 6f 66 20 74 68 65 20 5b 73 71   copy of the [sq
1bd30 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74  lite3_pcache_met
1bd40 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e 3c 2f  hods2] object.</
1bd50 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1bd60 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41  TE_CONFIG_GETPCA
1bd70 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  CHE2]] <dt>SQLIT
1bd80 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1bd90 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  HE2</dt>.** <dd>
1bda0 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f   ^(The SQLITE_CO
1bdb0 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 20  NFIG_GETPCACHE2 
1bdc0 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1bdd0 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77  ingle argument w
1bde0 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69  hich.** is a poi
1bdf0 6e 74 65 72 20 74 6f 20 61 6e 20 5b 73 71 6c 69  nter to an [sqli
1be00 74 65 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f  te3_pcache_metho
1be10 64 73 32 5d 20 6f 62 6a 65 63 74 2e 20 20 53 51  ds2] object.  SQ
1be20 4c 69 74 65 20 63 6f 70 69 65 73 20 6f 66 0a 2a  Lite copies of.*
1be30 2a 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61  * the current pa
1be40 67 65 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65  ge cache impleme
1be50 6e 74 61 74 69 6f 6e 20 69 6e 74 6f 20 74 68 61  ntation into tha
1be60 74 20 6f 62 6a 65 63 74 2e 29 5e 20 3c 2f 64 64  t object.)^ </dd
1be70 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1be80 5f 43 4f 4e 46 49 47 5f 4c 4f 47 5d 5d 20 3c 64  _CONFIG_LOG]] <d
1be90 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1bea0 4c 4f 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  LOG</dt>.** <dd>
1beb0 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46   The SQLITE_CONF
1bec0 49 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 69 73  IG_LOG option is
1bed0 20 75 73 65 64 20 74 6f 20 63 6f 6e 66 69 67 75   used to configu
1bee0 72 65 20 74 68 65 20 53 51 4c 69 74 65 0a 2a 2a  re the SQLite.**
1bef0 20 67 6c 6f 62 61 6c 20 5b 65 72 72 6f 72 20 6c   global [error l
1bf00 6f 67 5d 2e 0a 2a 2a 20 28 5e 54 68 65 20 53 51  og]..** (^The SQ
1bf10 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20  LITE_CONFIG_LOG 
1bf20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 74 77 6f  option takes two
1bf30 20 61 72 67 75 6d 65 6e 74 73 3a 20 61 20 70 6f   arguments: a po
1bf40 69 6e 74 65 72 20 74 6f 20 61 0a 2a 2a 20 66 75  inter to a.** fu
1bf50 6e 63 74 69 6f 6e 20 77 69 74 68 20 61 20 63 61  nction with a ca
1bf60 6c 6c 20 73 69 67 6e 61 74 75 72 65 20 6f 66 20  ll signature of 
1bf70 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 69 6e  void(*)(void*,in
1bf80 74 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c 20  t,const char*), 
1bf90 0a 2a 2a 20 61 6e 64 20 61 20 70 6f 69 6e 74 65  .** and a pointe
1bfa0 72 20 74 6f 20 76 6f 69 64 2e 20 5e 49 66 20 74  r to void. ^If t
1bfb0 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e  he function poin
1bfc0 74 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c  ter is not NULL,
1bfd0 20 69 74 20 69 73 0a 2a 2a 20 69 6e 76 6f 6b 65   it is.** invoke
1bfe0 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  d by [sqlite3_lo
1bff0 67 28 29 5d 20 74 6f 20 70 72 6f 63 65 73 73 20  g()] to process 
1c000 65 61 63 68 20 6c 6f 67 67 69 6e 67 20 65 76 65  each logging eve
1c010 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20  nt.  ^If the.** 
1c020 66 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72  function pointer
1c030 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 20 5b 73   is NULL, the [s
1c040 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 69 6e  qlite3_log()] in
1c050 74 65 72 66 61 63 65 20 62 65 63 6f 6d 65 73 20  terface becomes 
1c060 61 20 6e 6f 2d 6f 70 2e 0a 2a 2a 20 5e 54 68 65  a no-op..** ^The
1c070 20 76 6f 69 64 20 70 6f 69 6e 74 65 72 20 74 68   void pointer th
1c080 61 74 20 69 73 20 74 68 65 20 73 65 63 6f 6e 64  at is the second
1c090 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 53 51 4c   argument to SQL
1c0a0 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 69  ITE_CONFIG_LOG i
1c0b0 73 0a 2a 2a 20 70 61 73 73 65 64 20 74 68 72 6f  s.** passed thro
1c0c0 75 67 68 20 61 73 20 74 68 65 20 66 69 72 73 74  ugh as the first
1c0d0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
1c0e0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65  e application-de
1c0f0 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a 20  fined logger.** 
1c100 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 65 76 65  function wheneve
1c110 72 20 74 68 61 74 20 66 75 6e 63 74 69 6f 6e 20  r that function 
1c120 69 73 20 69 6e 76 6f 6b 65 64 2e 20 20 5e 54 68  is invoked.  ^Th
1c130 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
1c140 65 72 20 74 6f 0a 2a 2a 20 74 68 65 20 6c 6f 67  er to.** the log
1c150 67 65 72 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ger function is 
1c160 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 66 69  a copy of the fi
1c170 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rst parameter to
1c180 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
1c190 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6c  ng.** [sqlite3_l
1c1a0 6f 67 28 29 5d 20 63 61 6c 6c 20 61 6e 64 20 69  og()] call and i
1c1b0 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65  s intended to be
1c1c0 20 61 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d   a [result code]
1c1d0 20 6f 72 20 61 6e 0a 2a 2a 20 5b 65 78 74 65 6e   or an.** [exten
1c1e0 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65 5d  ded result code]
1c1f0 2e 20 20 5e 54 68 65 20 74 68 69 72 64 20 70 61  .  ^The third pa
1c200 72 61 6d 65 74 65 72 20 70 61 73 73 65 64 20 74  rameter passed t
1c210 6f 20 74 68 65 20 6c 6f 67 67 65 72 20 69 73 0a  o the logger is.
1c220 2a 2a 20 6c 6f 67 20 6d 65 73 73 61 67 65 20 61  ** log message a
1c230 66 74 65 72 20 66 6f 72 6d 61 74 74 69 6e 67 20  fter formatting 
1c240 76 69 61 20 5b 73 71 6c 69 74 65 33 5f 73 6e 70  via [sqlite3_snp
1c250 72 69 6e 74 66 28 29 5d 2e 0a 2a 2a 20 54 68 65  rintf()]..** The
1c260 20 53 51 4c 69 74 65 20 6c 6f 67 67 69 6e 67 20   SQLite logging 
1c270 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f 74  interface is not
1c280 20 72 65 65 6e 74 72 61 6e 74 3b 20 74 68 65 20   reentrant; the 
1c290 6c 6f 67 67 65 72 20 66 75 6e 63 74 69 6f 6e 0a  logger function.
1c2a0 2a 2a 20 73 75 70 70 6c 69 65 64 20 62 79 20 74  ** supplied by t
1c2b0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
1c2c0 75 73 74 20 6e 6f 74 20 69 6e 76 6f 6b 65 20 61  ust not invoke a
1c2d0 6e 79 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  ny SQLite interf
1c2e0 61 63 65 2e 0a 2a 2a 20 49 6e 20 61 20 6d 75 6c  ace..** In a mul
1c2f0 74 69 2d 74 68 72 65 61 64 65 64 20 61 70 70 6c  ti-threaded appl
1c300 69 63 61 74 69 6f 6e 2c 20 74 68 65 20 61 70 70  ication, the app
1c310 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64  lication-defined
1c320 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75 6e 63 74   logger.** funct
1c330 69 6f 6e 20 6d 75 73 74 20 62 65 20 74 68 72 65  ion must be thre
1c340 61 64 73 61 66 65 2e 20 3c 2f 64 64 3e 0a 2a 2a  adsafe. </dd>.**
1c350 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1c360 46 49 47 5f 55 52 49 5d 5d 20 3c 64 74 3e 53 51  FIG_URI]] <dt>SQ
1c370 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 0a  LITE_CONFIG_URI.
1c380 2a 2a 20 3c 64 64 3e 5e 28 54 68 65 20 53 51 4c  ** <dd>^(The SQL
1c390 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 6f  ITE_CONFIG_URI o
1c3a0 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1c3b0 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66  ngle argument of
1c3c0 20 74 79 70 65 20 69 6e 74 2e 0a 2a 2a 20 49 66   type int..** If
1c3d0 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20   non-zero, then 
1c3e0 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  URI handling is 
1c3f0 67 6c 6f 62 61 6c 6c 79 20 65 6e 61 62 6c 65 64  globally enabled
1c400 2e 20 49 66 20 74 68 65 20 70 61 72 61 6d 65 74  . If the paramet
1c410 65 72 20 69 73 20 7a 65 72 6f 2c 0a 2a 2a 20 74  er is zero,.** t
1c420 68 65 6e 20 55 52 49 20 68 61 6e 64 6c 69 6e 67  hen URI handling
1c430 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73   is globally dis
1c440 61 62 6c 65 64 2e 29 5e 20 5e 49 66 20 55 52 49  abled.)^ ^If URI
1c450 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f   handling is glo
1c460 62 61 6c 6c 79 0a 2a 2a 20 65 6e 61 62 6c 65 64  bally.** enabled
1c470 2c 20 61 6c 6c 20 66 69 6c 65 6e 61 6d 65 73 20  , all filenames 
1c480 70 61 73 73 65 64 20 74 6f 20 5b 73 71 6c 69 74  passed to [sqlit
1c490 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
1c4a0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c  ite3_open_v2()],
1c4b0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  .** [sqlite3_ope
1c4c0 6e 31 36 28 29 5d 20 6f 72 0a 2a 2a 20 73 70 65  n16()] or.** spe
1c4d0 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
1c4e0 66 20 5b 41 54 54 41 43 48 5d 20 63 6f 6d 6d 61  f [ATTACH] comma
1c4f0 6e 64 73 20 61 72 65 20 69 6e 74 65 72 70 72 65  nds are interpre
1c500 74 65 64 20 61 73 20 55 52 49 73 2c 20 72 65 67  ted as URIs, reg
1c510 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66 20 77 68  ardless.** of wh
1c520 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
1c530 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52   [SQLITE_OPEN_UR
1c540 49 5d 20 66 6c 61 67 20 69 73 20 73 65 74 20 77  I] flag is set w
1c550 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
1c560 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  .** connection i
1c570 73 20 6f 70 65 6e 65 64 2e 20 5e 49 66 20 69 74  s opened. ^If it
1c580 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 64 69 73   is globally dis
1c590 61 62 6c 65 64 2c 20 66 69 6c 65 6e 61 6d 65 73  abled, filenames
1c5a0 20 61 72 65 0a 2a 2a 20 6f 6e 6c 79 20 69 6e 74   are.** only int
1c5b0 65 72 70 72 65 74 65 64 20 61 73 20 55 52 49 73  erpreted as URIs
1c5c0 20 69 66 20 74 68 65 20 53 51 4c 49 54 45 5f 4f   if the SQLITE_O
1c5d0 50 45 4e 5f 55 52 49 20 66 6c 61 67 20 69 73 20  PEN_URI flag is 
1c5e0 73 65 74 20 77 68 65 6e 20 74 68 65 0a 2a 2a 20  set when the.** 
1c5f0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1c600 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20 5e  ion is opened. ^
1c610 28 42 79 20 64 65 66 61 75 6c 74 2c 20 55 52 49  (By default, URI
1c620 20 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f   handling is glo
1c630 62 61 6c 6c 79 0a 2a 2a 20 64 69 73 61 62 6c 65  bally.** disable
1c640 64 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 76  d. The default v
1c650 61 6c 75 65 20 6d 61 79 20 62 65 20 63 68 61 6e  alue may be chan
1c660 67 65 64 20 62 79 20 63 6f 6d 70 69 6c 69 6e 67  ged by compiling
1c670 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51   with the.** [SQ
1c680 4c 49 54 45 5f 55 53 45 5f 55 52 49 5d 20 73 79  LITE_USE_URI] sy
1c690 6d 62 6f 6c 20 64 65 66 69 6e 65 64 2e 29 5e 0a  mbol defined.)^.
1c6a0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1c6b0 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49  ONFIG_COVERING_I
1c6c0 4e 44 45 58 5f 53 43 41 4e 5d 5d 20 3c 64 74 3e  NDEX_SCAN]] <dt>
1c6d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f  SQLITE_CONFIG_CO
1c6e0 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
1c6f0 4e 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  N.** <dd>^The SQ
1c700 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45  LITE_CONFIG_COVE
1c710 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20  RING_INDEX_SCAN 
1c720 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1c730 69 6e 67 6c 65 20 69 6e 74 65 67 65 72 0a 2a 2a  ingle integer.**
1c740 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20   argument which 
1c750 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  is interpreted a
1c760 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69 6e 20 6f  s a boolean in o
1c770 72 64 65 72 20 74 6f 20 65 6e 61 62 6c 65 20 6f  rder to enable o
1c780 72 20 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65  r disable.** the
1c790 20 75 73 65 20 6f 66 20 63 6f 76 65 72 69 6e 67   use of covering
1c7a0 20 69 6e 64 69 63 65 73 20 66 6f 72 20 66 75 6c   indices for ful
1c7b0 6c 20 74 61 62 6c 65 20 73 63 61 6e 73 20 69 6e  l table scans in
1c7c0 20 74 68 65 20 71 75 65 72 79 20 6f 70 74 69 6d   the query optim
1c7d0 69 7a 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 64 65  izer..** ^The de
1c7e0 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 69 73  fault setting is
1c7f0 20 64 65 74 65 72 6d 69 6e 65 64 0a 2a 2a 20 62   determined.** b
1c800 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 41 4c  y the [SQLITE_AL
1c810 4c 4f 57 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  LOW_COVERING_IND
1c820 45 58 5f 53 43 41 4e 5d 20 63 6f 6d 70 69 6c 65  EX_SCAN] compile
1c830 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2c 20 6f 72  -time option, or
1c840 20 69 73 20 22 6f 6e 22 0a 2a 2a 20 69 66 20 74   is "on".** if t
1c850 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  hat compile-time
1c860 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74   option is omitt
1c870 65 64 2e 0a 2a 2a 20 54 68 65 20 61 62 69 6c 69  ed..** The abili
1c880 74 79 20 74 6f 20 64 69 73 61 62 6c 65 20 74 68  ty to disable th
1c890 65 20 75 73 65 20 6f 66 20 63 6f 76 65 72 69 6e  e use of coverin
1c8a0 67 20 69 6e 64 69 63 65 73 20 66 6f 72 20 66 75  g indices for fu
1c8b0 6c 6c 20 74 61 62 6c 65 20 73 63 61 6e 73 0a 2a  ll table scans.*
1c8c0 2a 20 69 73 20 62 65 63 61 75 73 65 20 73 6f 6d  * is because som
1c8d0 65 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 63 6f  e incorrectly co
1c8e0 64 65 64 20 6c 65 67 61 63 79 20 61 70 70 6c 69  ded legacy appli
1c8f0 63 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 6d 61  cations might ma
1c900 6c 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 77 68 65  lfunction.** whe
1c910 6e 20 74 68 65 20 6f 70 74 69 6d 69 7a 61 74 69  n the optimizati
1c920 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 20 20  on is enabled.  
1c930 50 72 6f 76 69 64 69 6e 67 20 74 68 65 20 61 62  Providing the ab
1c940 69 6c 69 74 79 20 74 6f 0a 2a 2a 20 64 69 73 61  ility to.** disa
1c950 62 6c 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 61  ble the optimiza
1c960 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 74 68 65 20  tion allows the 
1c970 6f 6c 64 65 72 2c 20 62 75 67 67 79 20 61 70 70  older, buggy app
1c980 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65 20 74 6f  lication code to
1c990 20 77 6f 72 6b 0a 2a 2a 20 77 69 74 68 6f 75 74   work.** without
1c9a0 20 63 68 61 6e 67 65 20 65 76 65 6e 20 77 69 74   change even wit
1c9b0 68 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73  h newer versions
1c9c0 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a   of SQLite..**.*
1c9d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1c9e0 47 5f 50 43 41 43 48 45 5d 5d 20 5b 5b 53 51 4c  G_PCACHE]] [[SQL
1c9f0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
1ca00 41 43 48 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  ACHE]].** <dt>SQ
1ca10 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1ca20 48 45 20 61 6e 64 20 53 51 4c 49 54 45 5f 43 4f  HE and SQLITE_CO
1ca30 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 0a 2a  NFIG_GETPCACHE.*
1ca40 2a 20 3c 64 64 3e 20 54 68 65 73 65 20 6f 70 74  * <dd> These opt
1ca50 69 6f 6e 73 20 61 72 65 20 6f 62 73 6f 6c 65 74  ions are obsolet
1ca60 65 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e 6f 74  e and should not
1ca70 20 62 65 20 75 73 65 64 20 62 79 20 6e 65 77 20   be used by new 
1ca80 63 6f 64 65 2e 0a 2a 2a 20 54 68 65 79 20 61 72  code..** They ar
1ca90 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 62  e retained for b
1caa0 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
1cab0 62 69 6c 69 74 79 20 62 75 74 20 61 72 65 20 6e  bility but are n
1cac0 6f 77 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 20 3c 2f  ow no-ops..** </
1cad0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1cae0 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47  TE_CONFIG_SQLLOG
1caf0 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
1cb00 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 0a 2a  _CONFIG_SQLLOG.*
1cb10 2a 20 3c 64 64 3e 54 68 69 73 20 6f 70 74 69 6f  * <dd>This optio
1cb20 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  n is only availa
1cb30 62 6c 65 20 69 66 20 73 71 6c 69 74 65 20 69 73  ble if sqlite is
1cb40 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
1cb50 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e  he.** [SQLITE_EN
1cb60 41 42 4c 45 5f 53 51 4c 4c 4f 47 5d 20 70 72 65  ABLE_SQLLOG] pre
1cb70 2d 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  -processor macro
1cb80 20 64 65 66 69 6e 65 64 2e 20 54 68 65 20 66 69   defined. The fi
1cb90 72 73 74 20 61 72 67 75 6d 65 6e 74 20 73 68 6f  rst argument sho
1cba0 75 6c 64 0a 2a 2a 20 62 65 20 61 20 70 6f 69 6e  uld.** be a poin
1cbb0 74 65 72 20 74 6f 20 61 20 66 75 6e 63 74 69 6f  ter to a functio
1cbc0 6e 20 6f 66 20 74 79 70 65 20 76 6f 69 64 28 2a  n of type void(*
1cbd0 29 28 76 6f 69 64 2a 2c 73 71 6c 69 74 65 33 2a  )(void*,sqlite3*
1cbe0 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 69 6e  ,const char*, in
1cbf0 74 29 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  t)..** The secon
1cc00 64 20 73 68 6f 75 6c 64 20 62 65 20 6f 66 20 74  d should be of t
1cc10 79 70 65 20 28 76 6f 69 64 2a 29 2e 20 54 68 65  ype (void*). The
1cc20 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
1cc30 6f 6b 65 64 20 62 79 20 74 68 65 20 6c 69 62 72  oked by the libr
1cc40 61 72 79 0a 2a 2a 20 69 6e 20 74 68 72 65 65 20  ary.** in three 
1cc50 73 65 70 61 72 61 74 65 20 63 69 72 63 75 6d 73  separate circums
1cc60 74 61 6e 63 65 73 2c 20 69 64 65 6e 74 69 66 69  tances, identifi
1cc70 65 64 20 62 79 20 74 68 65 20 76 61 6c 75 65 20  ed by the value 
1cc80 70 61 73 73 65 64 20 61 73 20 74 68 65 0a 2a 2a  passed as the.**
1cc90 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
1cca0 72 2e 20 49 66 20 74 68 65 20 66 6f 75 72 74 68  r. If the fourth
1ccb0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 30 2c   parameter is 0,
1ccc0 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   then the databa
1ccd0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a  se connection.**
1cce0 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 73   passed as the s
1ccf0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 68  econd argument h
1cd00 61 73 20 6a 75 73 74 20 62 65 65 6e 20 6f 70 65  as just been ope
1cd10 6e 65 64 2e 20 54 68 65 20 74 68 69 72 64 20 61  ned. The third a
1cd20 72 67 75 6d 65 6e 74 0a 2a 2a 20 70 6f 69 6e 74  rgument.** point
1cd30 73 20 74 6f 20 61 20 62 75 66 66 65 72 20 63 6f  s to a buffer co
1cd40 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 61 6d  ntaining the nam
1cd50 65 20 6f 66 20 74 68 65 20 6d 61 69 6e 20 64 61  e of the main da
1cd60 74 61 62 61 73 65 20 66 69 6c 65 2e 20 49 66 20  tabase file. If 
1cd70 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61  the.** fourth pa
1cd80 72 61 6d 65 74 65 72 20 69 73 20 31 2c 20 74 68  rameter is 1, th
1cd90 65 6e 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  en the SQL state
1cda0 6d 65 6e 74 20 74 68 61 74 20 74 68 65 20 74 68  ment that the th
1cdb0 69 72 64 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  ird parameter.**
1cdc0 20 70 6f 69 6e 74 73 20 74 6f 20 68 61 73 20 6a   points to has j
1cdd0 75 73 74 20 62 65 65 6e 20 65 78 65 63 75 74 65  ust been execute
1cde0 64 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 66 6f  d. Or, if the fo
1cdf0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
1ce00 73 20 32 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65  s 2, then.** the
1ce10 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e   connection bein
1ce20 67 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  g passed as the 
1ce30 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
1ce40 20 69 73 20 62 65 69 6e 67 20 63 6c 6f 73 65 64   is being closed
1ce50 2e 20 54 68 65 0a 2a 2a 20 74 68 69 72 64 20 70  . The.** third p
1ce60 61 72 61 6d 65 74 65 72 20 69 73 20 70 61 73 73  arameter is pass
1ce70 65 64 20 4e 55 4c 4c 20 49 6e 20 74 68 69 73 20  ed NULL In this 
1ce80 63 61 73 65 2e 20 20 41 6e 20 65 78 61 6d 70 6c  case.  An exampl
1ce90 65 20 6f 66 20 75 73 69 6e 67 20 74 68 69 73 0a  e of using this.
1cea0 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ** configuration
1ceb0 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62 65 20 73   option can be s
1cec0 65 65 6e 20 69 6e 20 74 68 65 20 22 74 65 73 74  een in the "test
1ced0 5f 73 71 6c 6c 6f 67 2e 63 22 20 73 6f 75 72 63  _sqllog.c" sourc
1cee0 65 20 66 69 6c 65 20 69 6e 0a 2a 2a 20 74 68 65  e file in.** the
1cef0 20 63 61 6e 6f 6e 69 63 61 6c 20 53 51 4c 69 74   canonical SQLit
1cf00 65 20 73 6f 75 72 63 65 20 74 72 65 65 2e 3c 2f  e source tree.</
1cf10 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1cf20 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53  TE_CONFIG_MMAP_S
1cf30 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  IZE]].** <dt>SQL
1cf40 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
1cf50 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 53 51 4c  SIZE.** <dd>^SQL
1cf60 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f  ITE_CONFIG_MMAP_
1cf70 53 49 5a 45 20 74 61 6b 65 73 20 74 77 6f 20 36  SIZE takes two 6
1cf80 34 2d 62 69 74 20 69 6e 74 65 67 65 72 20 28 73  4-bit integer (s
1cf90 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 20 76 61  qlite3_int64) va
1cfa0 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20 61 72 65  lues.** that are
1cfb0 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6d 61   the default mma
1cfc0 70 20 73 69 7a 65 20 6c 69 6d 69 74 20 28 74 68  p size limit (th
1cfd0 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
1cfe0 67 20 66 6f 72 0a 2a 2a 20 5b 50 52 41 47 4d 41  g for.** [PRAGMA
1cff0 20 6d 6d 61 70 5f 73 69 7a 65 5d 29 20 61 6e 64   mmap_size]) and
1d000 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c   the maximum all
1d010 6f 77 65 64 20 6d 6d 61 70 20 73 69 7a 65 20 6c  owed mmap size l
1d020 69 6d 69 74 2e 0a 2a 2a 20 5e 54 68 65 20 64 65  imit..** ^The de
1d030 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 63 61  fault setting ca
1d040 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 20  n be overridden 
1d050 62 79 20 65 61 63 68 20 64 61 74 61 62 61 73 65  by each database
1d060 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 75 73 69 6e   connection usin
1d070 67 0a 2a 2a 20 65 69 74 68 65 72 20 74 68 65 20  g.** either the 
1d080 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a  [PRAGMA mmap_siz
1d090 65 5d 20 63 6f 6d 6d 61 6e 64 2c 20 6f 72 20 62  e] command, or b
1d0a0 79 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b  y using the.** [
1d0b0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41  SQLITE_FCNTL_MMA
1d0c0 50 5f 53 49 5a 45 5d 20 66 69 6c 65 20 63 6f 6e  P_SIZE] file con
1d0d0 74 72 6f 6c 2e 20 20 5e 28 54 68 65 20 6d 61 78  trol.  ^(The max
1d0e0 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61  imum allowed mma
1d0f0 70 20 73 69 7a 65 0a 2a 2a 20 77 69 6c 6c 20 62  p size.** will b
1d100 65 20 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63  e silently trunc
1d110 61 74 65 64 20 69 66 20 6e 65 63 65 73 73 61 72  ated if necessar
1d120 79 20 73 6f 20 74 68 61 74 20 69 74 20 64 6f 65  y so that it doe
1d130 73 20 6e 6f 74 20 65 78 63 65 65 64 20 74 68 65  s not exceed the
1d140 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  .** compile-time
1d150 20 6d 61 78 69 6d 75 6d 20 6d 6d 61 70 20 73 69   maximum mmap si
1d160 7a 65 20 73 65 74 20 62 79 20 74 68 65 0a 2a 2a  ze set by the.**
1d170 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41   [SQLITE_MAX_MMA
1d180 50 5f 53 49 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d  P_SIZE] compile-
1d190 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 29 5e 0a 2a  time option.)^.*
1d1a0 2a 20 5e 49 66 20 65 69 74 68 65 72 20 61 72 67  * ^If either arg
1d1b0 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 6f 70  ument to this op
1d1c0 74 69 6f 6e 20 69 73 20 6e 65 67 61 74 69 76 65  tion is negative
1d1d0 2c 20 74 68 65 6e 20 74 68 61 74 20 61 72 67 75  , then that argu
1d1e0 6d 65 6e 74 20 69 73 0a 2a 2a 20 63 68 61 6e 67  ment is.** chang
1d1f0 65 64 20 74 6f 20 69 74 73 20 63 6f 6d 70 69 6c  ed to its compil
1d200 65 2d 74 69 6d 65 20 64 65 66 61 75 6c 74 2e 0a  e-time default..
1d210 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1d220 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
1d230 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SIZE]].** <dt>SQ
1d240 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33  LITE_CONFIG_WIN3
1d250 32 5f 48 45 41 50 53 49 5a 45 0a 2a 2a 20 3c 64  2_HEAPSIZE.** <d
1d260 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  d>^The SQLITE_CO
1d270 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53  NFIG_WIN32_HEAPS
1d280 49 5a 45 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e  IZE option is on
1d290 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20  ly available if 
1d2a0 53 51 4c 69 74 65 20 69 73 0a 2a 2a 20 63 6f 6d  SQLite is.** com
1d2b0 70 69 6c 65 64 20 66 6f 72 20 57 69 6e 64 6f 77  piled for Window
1d2c0 73 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  s with the [SQLI
1d2d0 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5d  TE_WIN32_MALLOC]
1d2e0 20 70 72 65 2d 70 72 6f 63 65 73 73 6f 72 20 6d   pre-processor m
1d2f0 61 63 72 6f 0a 2a 2a 20 64 65 66 69 6e 65 64 2e  acro.** defined.
1d300 20 5e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   ^SQLITE_CONFIG_
1d310 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20 74  WIN32_HEAPSIZE t
1d320 61 6b 65 73 20 61 20 33 32 2d 62 69 74 20 75 6e  akes a 32-bit un
1d330 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 76  signed integer v
1d340 61 6c 75 65 0a 2a 2a 20 74 68 61 74 20 73 70 65  alue.** that spe
1d350 63 69 66 69 65 73 20 74 68 65 20 6d 61 78 69 6d  cifies the maxim
1d360 75 6d 20 73 69 7a 65 20 6f 66 20 74 68 65 20 63  um size of the c
1d370 72 65 61 74 65 64 20 68 65 61 70 2e 0a 2a 2a 0a  reated heap..**.
1d380 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1d390 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 5d  IG_PCACHE_HDRSZ]
1d3a0 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1d3b0 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
1d3c0 52 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20  RSZ.** <dd>^The 
1d3d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1d3e0 41 43 48 45 5f 48 44 52 53 5a 20 6f 70 74 69 6f  ACHE_HDRSZ optio
1d3f0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1d400 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68   parameter which
1d410 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72  .** is a pointer
1d420 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 61   to an integer a
1d430 6e 64 20 77 72 69 74 65 73 20 69 6e 74 6f 20 74  nd writes into t
1d440 68 61 74 20 69 6e 74 65 67 65 72 20 74 68 65 20  hat integer the 
1d450 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 72 61 0a  number of extra.
1d460 2a 2a 20 62 79 74 65 73 20 70 65 72 20 70 61 67  ** bytes per pag
1d470 65 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 65  e required for e
1d480 61 63 68 20 70 61 67 65 20 69 6e 20 5b 53 51 4c  ach page in [SQL
1d490 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43  ITE_CONFIG_PAGEC
1d4a0 41 43 48 45 5d 2e 0a 2a 2a 20 54 68 65 20 61 6d  ACHE]..** The am
1d4b0 6f 75 6e 74 20 6f 66 20 65 78 74 72 61 20 73 70  ount of extra sp
1d4c0 61 63 65 20 72 65 71 75 69 72 65 64 20 63 61 6e  ace required can
1d4d0 20 63 68 61 6e 67 65 20 64 65 70 65 6e 64 69 6e   change dependin
1d4e0 67 20 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65  g on the compile
1d4f0 72 2c 0a 2a 2a 20 74 61 72 67 65 74 20 70 6c 61  r,.** target pla
1d500 74 66 6f 72 6d 2c 20 61 6e 64 20 53 51 4c 69 74  tform, and SQLit
1d510 65 20 76 65 72 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  e version..**.**
1d520 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1d530 5f 50 4d 41 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e  _PMASZ]].** <dt>
1d540 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
1d550 41 53 5a 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20  ASZ.** <dd>^The 
1d560 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d  SQLITE_CONFIG_PM
1d570 41 53 5a 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  ASZ option takes
1d580 20 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65   a single parame
1d590 74 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  ter which.** is 
1d5a0 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65  an unsigned inte
1d5b0 67 65 72 20 61 6e 64 20 73 65 74 73 20 74 68 65  ger and sets the
1d5c0 20 22 4d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69   "Minimum PMA Si
1d5d0 7a 65 22 20 66 6f 72 20 74 68 65 20 6d 75 6c 74  ze" for the mult
1d5e0 69 74 68 72 65 61 64 65 64 0a 2a 2a 20 73 6f 72  ithreaded.** sor
1d5f0 74 65 72 20 74 6f 20 74 68 61 74 20 69 6e 74 65  ter to that inte
1d600 67 65 72 2e 20 20 54 68 65 20 64 65 66 61 75 6c  ger.  The defaul
1d610 74 20 6d 69 6e 69 6d 75 6d 20 50 4d 41 20 53 69  t minimum PMA Si
1d620 7a 65 20 69 73 20 73 65 74 20 62 79 20 74 68 65  ze is set by the
1d630 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 4f 52 54  .** [SQLITE_SORT
1d640 45 52 5f 50 4d 41 53 5a 5d 20 63 6f 6d 70 69 6c  ER_PMASZ] compil
1d650 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 20 20  e-time option.  
1d660 4e 65 77 20 74 68 72 65 61 64 73 20 61 72 65 20  New threads are 
1d670 6c 61 75 6e 63 68 65 64 0a 2a 2a 20 74 6f 20 68  launched.** to h
1d680 65 6c 70 20 77 69 74 68 20 73 6f 72 74 20 6f 70  elp with sort op
1d690 65 72 61 74 69 6f 6e 73 20 77 68 65 6e 20 6d 75  erations when mu
1d6a0 6c 74 69 74 68 72 65 61 64 65 64 20 73 6f 72 74  ltithreaded sort
1d6b0 69 6e 67 0a 2a 2a 20 69 73 20 65 6e 61 62 6c 65  ing.** is enable
1d6c0 64 20 28 75 73 69 6e 67 20 74 68 65 20 5b 50 52  d (using the [PR
1d6d0 41 47 4d 41 20 74 68 72 65 61 64 73 5d 20 63 6f  AGMA threads] co
1d6e0 6d 6d 61 6e 64 29 20 61 6e 64 20 74 68 65 20 61  mmand) and the a
1d6f0 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e 74 65 6e 74  mount of content
1d700 0a 2a 2a 20 74 6f 20 62 65 20 73 6f 72 74 65 64  .** to be sorted
1d710 20 65 78 63 65 65 64 73 20 74 68 65 20 70 61 67   exceeds the pag
1d720 65 20 73 69 7a 65 20 74 69 6d 65 73 20 74 68 65  e size times the
1d730 20 6d 69 6e 69 6d 75 6d 20 6f 66 20 74 68 65 0a   minimum of the.
1d740 2a 2a 20 5b 50 52 41 47 4d 41 20 63 61 63 68 65  ** [PRAGMA cache
1d750 5f 73 69 7a 65 5d 20 73 65 74 74 69 6e 67 20 61  _size] setting a
1d760 6e 64 20 74 68 69 73 20 76 61 6c 75 65 2e 0a 2a  nd this value..*
1d770 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1d780 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50  NFIG_STMTJRNL_SP
1d790 49 4c 4c 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  ILL]].** <dt>SQL
1d7a0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a  ITE_CONFIG_STMTJ
1d7b0 52 4e 4c 5f 53 50 49 4c 4c 0a 2a 2a 20 3c 64 64  RNL_SPILL.** <dd
1d7c0 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  >^The SQLITE_CON
1d7d0 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  FIG_STMTJRNL_SPI
1d7e0 4c 4c 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  LL option takes 
1d7f0 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74  a single paramet
1d800 65 72 20 77 68 69 63 68 0a 2a 2a 20 62 65 63 6f  er which.** beco
1d810 6d 65 73 20 74 68 65 20 5b 73 74 61 74 65 6d 65  mes the [stateme
1d820 6e 74 20 6a 6f 75 72 6e 61 6c 5d 20 73 70 69 6c  nt journal] spil
1d830 6c 2d 74 6f 2d 64 69 73 6b 20 74 68 72 65 73 68  l-to-disk thresh
1d840 6f 6c 64 2e 20 20 0a 2a 2a 20 5b 53 74 61 74 65  old.  .** [State
1d850 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 5d 20 61  ment journals] a
1d860 72 65 20 68 65 6c 64 20 69 6e 20 6d 65 6d 6f 72  re held in memor
1d870 79 20 75 6e 74 69 6c 20 74 68 65 69 72 20 73 69  y until their si
1d880 7a 65 20 28 69 6e 20 62 79 74 65 73 29 0a 2a 2a  ze (in bytes).**
1d890 20 65 78 63 65 65 64 73 20 74 68 69 73 20 74 68   exceeds this th
1d8a0 72 65 73 68 6f 6c 64 2c 20 61 74 20 77 68 69 63  reshold, at whic
1d8b0 68 20 70 6f 69 6e 74 20 74 68 65 79 20 61 72 65  h point they are
1d8c0 20 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b   written to disk
1d8d0 2e 0a 2a 2a 20 4f 72 20 69 66 20 74 68 65 20 74  ..** Or if the t
1d8e0 68 72 65 73 68 6f 6c 64 20 69 73 20 2d 31 2c 20  hreshold is -1, 
1d8f0 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61  statement journa
1d900 6c 73 20 61 72 65 20 61 6c 77 61 79 73 20 68 65  ls are always he
1d910 6c 64 0a 2a 2a 20 65 78 63 6c 75 73 69 76 65 6c  ld.** exclusivel
1d920 79 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20  y in memory..** 
1d930 53 69 6e 63 65 20 6d 61 6e 79 20 73 74 61 74 65  Since many state
1d940 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 6e 65  ment journals ne
1d950 76 65 72 20 62 65 63 6f 6d 65 20 6c 61 72 67 65  ver become large
1d960 2c 20 73 65 74 74 69 6e 67 20 74 68 65 20 73 70  , setting the sp
1d970 69 6c 6c 0a 2a 2a 20 74 68 72 65 73 68 6f 6c 64  ill.** threshold
1d980 20 74 6f 20 61 20 76 61 6c 75 65 20 73 75 63 68   to a value such
1d990 20 61 73 20 36 34 4b 69 42 20 63 61 6e 20 67 72   as 64KiB can gr
1d9a0 65 61 74 6c 79 20 72 65 64 75 63 65 20 74 68 65  eatly reduce the
1d9b0 20 61 6d 6f 75 6e 74 20 6f 66 0a 2a 2a 20 49 2f   amount of.** I/
1d9c0 4f 20 72 65 71 75 69 72 65 64 20 74 6f 20 73 75  O required to su
1d9d0 70 70 6f 72 74 20 73 74 61 74 65 6d 65 6e 74 20  pport statement 
1d9e0 72 6f 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 54 68 65  rollback..** The
1d9f0 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 66   default value f
1da00 6f 72 20 74 68 69 73 20 73 65 74 74 69 6e 67 20  or this setting 
1da10 69 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79  is controlled by
1da20 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1da30 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20  STMTJRNL_SPILL] 
1da40 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1da50 69 6f 6e 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f  ion..** </dl>.*/
1da60 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1da70 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
1da80 45 41 44 20 20 31 20 20 2f 2a 20 6e 69 6c 20 2a  EAD  1  /* nil *
1da90 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1daa0 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
1dab0 45 41 44 20 20 20 32 20 20 2f 2a 20 6e 69 6c 20  EAD   2  /* nil 
1dac0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1dad0 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c 49  E_CONFIG_SERIALI
1dae0 5a 45 44 20 20 20 20 33 20 20 2f 2a 20 6e 69 6c  ZED    3  /* nil
1daf0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1db00 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1db10 20 20 20 20 20 20 20 20 34 20 20 2f 2a 20 73 71          4  /* sq
1db20 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1db30 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s* */.#define SQ
1db40 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
1db50 41 4c 4c 4f 43 20 20 20 20 20 35 20 20 2f 2a 20  ALLOC     5  /* 
1db60 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
1db70 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ods* */.#define 
1db80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43  SQLITE_CONFIG_SC
1db90 52 41 54 43 48 20 20 20 20 20 20 20 36 20 20 2f  RATCH       6  /
1dba0 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c  * void*, int sz,
1dbb0 20 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66 69 6e   int N */.#defin
1dbc0 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1dbd0 50 41 47 45 43 41 43 48 45 20 20 20 20 20 37 20  PAGECACHE     7 
1dbe0 20 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73   /* void*, int s
1dbf0 7a 2c 20 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66  z, int N */.#def
1dc00 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1dc10 47 5f 48 45 41 50 20 20 20 20 20 20 20 20 20 20  G_HEAP          
1dc20 38 20 20 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74  8  /* void*, int
1dc30 20 6e 42 79 74 65 2c 20 69 6e 74 20 6d 69 6e 20   nByte, int min 
1dc40 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1dc50 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54  E_CONFIG_MEMSTAT
1dc60 55 53 20 20 20 20 20 39 20 20 2f 2a 20 62 6f 6f  US     9  /* boo
1dc70 6c 65 61 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20  lean */.#define 
1dc80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1dc90 54 45 58 20 20 20 20 20 20 20 20 31 30 20 20 2f  TEX        10  /
1dca0 2a 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f  * sqlite3_mutex_
1dcb0 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66  methods* */.#def
1dcc0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1dcd0 47 5f 47 45 54 4d 55 54 45 58 20 20 20 20 20 31  G_GETMUTEX     1
1dce0 31 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75  1  /* sqlite3_mu
1dcf0 74 65 78 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a  tex_methods* */.
1dd00 2f 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 53 51  /* previously SQ
1dd10 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 48 55 4e  LITE_CONFIG_CHUN
1dd20 4b 41 4c 4c 4f 43 20 31 32 20 77 68 69 63 68 20  KALLOC 12 which 
1dd30 69 73 20 6e 6f 77 20 75 6e 75 73 65 64 2e 20 2a  is now unused. *
1dd40 2f 20 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  / .#define SQLIT
1dd50 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  E_CONFIG_LOOKASI
1dd60 44 45 20 20 20 20 31 33 20 20 2f 2a 20 69 6e 74  DE    13  /* int
1dd70 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20   int */.#define 
1dd80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1dd90 41 43 48 45 20 20 20 20 20 20 20 31 34 20 20 2f  ACHE       14  /
1dda0 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69  * no-op */.#defi
1ddb0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1ddc0 5f 47 45 54 50 43 41 43 48 45 20 20 20 20 31 35  _GETPCACHE    15
1ddd0 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64    /* no-op */.#d
1dde0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1ddf0 46 49 47 5f 4c 4f 47 20 20 20 20 20 20 20 20 20  FIG_LOG         
1de00 20 31 36 20 20 2f 2a 20 78 46 75 6e 63 2c 20 76   16  /* xFunc, v
1de10 6f 69 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  oid* */.#define 
1de20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52  SQLITE_CONFIG_UR
1de30 49 20 20 20 20 20 20 20 20 20 20 31 37 20 20 2f  I          17  /
1de40 2a 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65  * int */.#define
1de50 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50   SQLITE_CONFIG_P
1de60 43 41 43 48 45 32 20 20 20 20 20 20 31 38 20 20  CACHE2      18  
1de70 2f 2a 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68  /* sqlite3_pcach
1de80 65 5f 6d 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23  e_methods2* */.#
1de90 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1dea0 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 20  NFIG_GETPCACHE2 
1deb0 20 20 31 39 20 20 2f 2a 20 73 71 6c 69 74 65 33    19  /* sqlite3
1dec0 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32  _pcache_methods2
1ded0 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1dee0 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52  ITE_CONFIG_COVER
1def0 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 32  ING_INDEX_SCAN 2
1df00 30 20 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65  0  /* int */.#de
1df10 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1df20 49 47 5f 53 51 4c 4c 4f 47 20 20 20 20 20 20 20  IG_SQLLOG       
1df30 32 31 20 20 2f 2a 20 78 53 71 6c 6c 6f 67 2c 20  21  /* xSqllog, 
1df40 76 6f 69 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  void* */.#define
1df50 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1df60 4d 41 50 5f 53 49 5a 45 20 20 20 20 32 32 20 20  MAP_SIZE    22  
1df70 2f 2a 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  /* sqlite3_int64
1df80 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
1df90 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1dfa0 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48  E_CONFIG_WIN32_H
1dfb0 45 41 50 53 49 5a 45 20 20 20 20 20 20 32 33 20  EAPSIZE      23 
1dfc0 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f   /* int nByte */
1dfd0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1dfe0 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
1dff0 52 53 5a 20 20 20 20 20 20 20 20 32 34 20 20 2f  RSZ        24  /
1e000 2a 20 69 6e 74 20 2a 70 73 7a 20 2a 2f 0a 23 64  * int *psz */.#d
1e010 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1e020 46 49 47 5f 50 4d 41 53 5a 20 20 20 20 20 20 20  FIG_PMASZ       
1e030 20 20 20 20 20 20 20 20 32 35 20 20 2f 2a 20 75          25  /* u
1e040 6e 73 69 67 6e 65 64 20 69 6e 74 20 73 7a 50 6d  nsigned int szPm
1e050 61 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  a */.#define SQL
1e060 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a  ITE_CONFIG_STMTJ
1e070 52 4e 4c 5f 53 50 49 4c 4c 20 20 20 20 20 20 32  RNL_SPILL      2
1e080 36 20 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20  6  /* int nByte 
1e090 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
1e0a0 45 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e  EF: Database Con
1e0b0 6e 65 63 74 69 6f 6e 20 43 6f 6e 66 69 67 75 72  nection Configur
1e0c0 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a  ation Options.**
1e0d0 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61  .** These consta
1e0e0 6e 74 73 20 61 72 65 20 74 68 65 20 61 76 61 69  nts are the avai
1e0f0 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 20 63 6f  lable integer co
1e100 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1e110 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e 20  ons that.** can 
1e120 62 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  be passed as the
1e130 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
1e140 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
1e150 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e  _db_config()] in
1e160 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e  terface..**.** N
1e170 65 77 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ew configuration
1e180 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20   options may be 
1e190 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
1e1a0 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69  releases of SQLi
1e1b0 74 65 2e 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20  te..** Existing 
1e1c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1e1d0 74 69 6f 6e 73 20 6d 69 67 68 74 20 62 65 20 64  tions might be d
1e1e0 69 73 63 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70  iscontinued.  Ap
1e1f0 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68  plications.** sh
1e200 6f 75 6c 64 20 63 68 65 63 6b 20 74 68 65 20 72  ould check the r
1e210 65 74 75 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20  eturn code from 
1e220 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  [sqlite3_db_conf
1e230 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20 73 75  ig()] to make su
1e240 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 63  re that.** the c
1e250 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 5e 54 68  all worked.  ^Th
1e260 65 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  e [sqlite3_db_co
1e270 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
1e280 65 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 61 0a  e will return a.
1e290 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72  ** non-zero [err
1e2a0 6f 72 20 63 6f 64 65 5d 20 69 66 20 61 20 64 69  or code] if a di
1e2b0 73 63 6f 6e 74 69 6e 75 65 64 20 6f 72 20 75 6e  scontinued or un
1e2c0 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 66 69 67  supported config
1e2d0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a  uration option.*
1e2e0 2a 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a  * is invoked..**
1e2f0 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 3c 64 74 3e  .** <dl>.** <dt>
1e300 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1e310 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74 3e 0a 2a  LOOKASIDE</dt>.*
1e320 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74  * <dd> ^This opt
1e330 69 6f 6e 20 74 61 6b 65 73 20 74 68 72 65 65 20  ion takes three 
1e340 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
1e350 65 6e 74 73 20 74 68 61 74 20 64 65 74 65 72 6d  ents that determ
1e360 69 6e 65 20 74 68 65 20 0a 2a 2a 20 5b 6c 6f 6f  ine the .** [loo
1e370 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 61 6c  kaside memory al
1e380 6c 6f 63 61 74 6f 72 5d 20 63 6f 6e 66 69 67 75  locator] configu
1e390 72 61 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 5b  ration for the [
1e3a0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1e3b0 69 6f 6e 5d 2e 0a 2a 2a 20 5e 54 68 65 20 66 69  ion]..** ^The fi
1e3c0 72 73 74 20 61 72 67 75 6d 65 6e 74 20 28 74 68  rst argument (th
1e3d0 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
1e3e0 72 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64 62  r to [sqlite3_db
1e3f0 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20 61 0a  _config()] is a.
1e400 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20  ** pointer to a 
1e410 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20 74 6f  memory buffer to
1e420 20 75 73 65 20 66 6f 72 20 6c 6f 6f 6b 61 73 69   use for lookasi
1e430 64 65 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 5e 54  de memory..** ^T
1e440 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
1e450 74 20 61 66 74 65 72 20 74 68 65 20 53 51 4c 49  t after the SQLI
1e460 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b  TE_DBCONFIG_LOOK
1e470 41 53 49 44 45 20 76 65 72 62 0a 2a 2a 20 6d 61  ASIDE verb.** ma
1e480 79 20 62 65 20 4e 55 4c 4c 20 69 6e 20 77 68 69  y be NULL in whi
1e490 63 68 20 63 61 73 65 20 53 51 4c 69 74 65 20 77  ch case SQLite w
1e4a0 69 6c 6c 20 61 6c 6c 6f 63 61 74 65 20 74 68 65  ill allocate the
1e4b0 0a 2a 2a 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75  .** lookaside bu
1e4c0 66 66 65 72 20 69 74 73 65 6c 66 20 75 73 69 6e  ffer itself usin
1e4d0 67 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  g [sqlite3_mallo
1e4e0 63 28 29 5d 2e 20 5e 54 68 65 20 73 65 63 6f 6e  c()]. ^The secon
1e4f0 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68  d argument is th
1e500 65 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65 61 63  e.** size of eac
1e510 68 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75 66 66  h lookaside buff
1e520 65 72 20 73 6c 6f 74 2e 20 20 5e 54 68 65 20 74  er slot.  ^The t
1e530 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73  hird argument is
1e540 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a   the number of.*
1e550 2a 20 73 6c 6f 74 73 2e 20 20 54 68 65 20 73 69  * slots.  The si
1e560 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66 65 72  ze of the buffer
1e570 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61 72   in the first ar
1e580 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 67  gument must be g
1e590 72 65 61 74 65 72 20 74 68 61 6e 0a 2a 2a 20 6f  reater than.** o
1e5a0 72 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20 70  r equal to the p
1e5b0 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20 73 65  roduct of the se
1e5c0 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64 20 61  cond and third a
1e5d0 72 67 75 6d 65 6e 74 73 2e 20 20 54 68 65 20 62  rguments.  The b
1e5e0 75 66 66 65 72 0a 2a 2a 20 6d 75 73 74 20 62 65  uffer.** must be
1e5f0 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38   aligned to an 8
1e600 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2e 20  -byte boundary. 
1e610 20 5e 49 66 20 74 68 65 20 73 65 63 6f 6e 64 20   ^If the second 
1e620 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 53  argument to.** S
1e630 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c  QLITE_DBCONFIG_L
1e640 4f 4f 4b 41 53 49 44 45 20 69 73 20 6e 6f 74 20  OOKASIDE is not 
1e650 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38 2c  a multiple of 8,
1e660 20 69 74 20 69 73 20 69 6e 74 65 72 6e 61 6c 6c   it is internall
1e670 79 0a 2a 2a 20 72 6f 75 6e 64 65 64 20 64 6f 77  y.** rounded dow
1e680 6e 20 74 6f 20 74 68 65 20 6e 65 78 74 20 73 6d  n to the next sm
1e690 61 6c 6c 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f  aller multiple o
1e6a0 66 20 38 2e 20 20 5e 28 54 68 65 20 6c 6f 6f 6b  f 8.  ^(The look
1e6b0 61 73 69 64 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20  aside memory.** 
1e6c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 6f  configuration fo
1e6d0 72 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e  r a database con
1e6e0 6e 65 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79  nection can only
1e6f0 20 62 65 20 63 68 61 6e 67 65 64 20 77 68 65 6e   be changed when
1e700 20 74 68 61 74 0a 2a 2a 20 63 6f 6e 6e 65 63 74   that.** connect
1e710 69 6f 6e 20 69 73 20 6e 6f 74 20 63 75 72 72 65  ion is not curre
1e720 6e 74 6c 79 20 75 73 69 6e 67 20 6c 6f 6f 6b 61  ntly using looka
1e730 73 69 64 65 20 6d 65 6d 6f 72 79 2c 20 6f 72 20  side memory, or 
1e740 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 0a 2a  in other words.*
1e750 2a 20 77 68 65 6e 20 74 68 65 20 22 63 75 72 72  * when the "curr
1e760 65 6e 74 20 76 61 6c 75 65 22 20 72 65 74 75 72  ent value" retur
1e770 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74  ned by.** [sqlit
1e780 65 33 5f 64 62 5f 73 74 61 74 75 73 5d 28 44 2c  e3_db_status](D,
1e790 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c  [SQLITE_CONFIG_L
1e7a0 4f 4f 4b 41 53 49 44 45 5d 2c 2e 2e 2e 29 20 69  OOKASIDE],...) i
1e7b0 73 20 7a 65 72 6f 2e 0a 2a 2a 20 41 6e 79 20 61  s zero..** Any a
1e7c0 74 74 65 6d 70 74 20 74 6f 20 63 68 61 6e 67 65  ttempt to change
1e7d0 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d   the lookaside m
1e7e0 65 6d 6f 72 79 20 63 6f 6e 66 69 67 75 72 61 74  emory configurat
1e7f0 69 6f 6e 20 77 68 65 6e 20 6c 6f 6f 6b 61 73 69  ion when lookasi
1e800 64 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 69 73 20  de.** memory is 
1e810 69 6e 20 75 73 65 20 6c 65 61 76 65 73 20 74 68  in use leaves th
1e820 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
1e830 75 6e 63 68 61 6e 67 65 64 20 61 6e 64 20 72 65  unchanged and re
1e840 74 75 72 6e 73 20 0a 2a 2a 20 5b 53 51 4c 49 54  turns .** [SQLIT
1e850 45 5f 42 55 53 59 5d 2e 29 5e 3c 2f 64 64 3e 0a  E_BUSY].)^</dd>.
1e860 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  **.** <dt>SQLITE
1e870 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
1e880 5f 46 4b 45 59 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _FKEY</dt>.** <d
1e890 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20  d> ^This option 
1e8a0 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c  is used to enabl
1e8b0 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65  e or disable the
1e8c0 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0a   enforcement of.
1e8d0 2a 2a 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  ** [foreign key 
1e8e0 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2e 20 20 54  constraints].  T
1e8f0 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 74  here should be t
1e900 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72  wo additional ar
1e910 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20  guments..** The 
1e920 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
1e930 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69  s an integer whi
1e940 63 68 20 69 73 20 30 20 74 6f 20 64 69 73 61 62  ch is 0 to disab
1e950 6c 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e  le FK enforcemen
1e960 74 2c 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74  t,.** positive t
1e970 6f 20 65 6e 61 62 6c 65 20 46 4b 20 65 6e 66 6f  o enable FK enfo
1e980 72 63 65 6d 65 6e 74 20 6f 72 20 6e 65 67 61 74  rcement or negat
1e990 69 76 65 20 74 6f 20 6c 65 61 76 65 20 46 4b 20  ive to leave FK 
1e9a0 65 6e 66 6f 72 63 65 6d 65 6e 74 0a 2a 2a 20 75  enforcement.** u
1e9b0 6e 63 68 61 6e 67 65 64 2e 20 20 54 68 65 20 73  nchanged.  The s
1e9c0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
1e9d0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
1e9e0 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
1e9f0 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
1ea00 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
1ea10 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 46  dicate whether F
1ea20 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73  K enforcement is
1ea30 20 6f 66 66 20 6f 72 20 6f 6e 0a 2a 2a 20 66 6f   off or on.** fo
1ea40 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c  llowing this cal
1ea50 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70  l.  The second p
1ea60 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20  arameter may be 
1ea70 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  a NULL pointer, 
1ea80 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65  in.** which case
1ea90 20 74 68 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d   the FK enforcem
1eaa0 65 6e 74 20 73 65 74 74 69 6e 67 20 69 73 20 6e  ent setting is n
1eab0 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b  ot reported back
1eac0 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64  . </dd>.**.** <d
1ead0 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  t>SQLITE_DBCONFI
1eae0 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52  G_ENABLE_TRIGGER
1eaf0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54  </dt>.** <dd> ^T
1eb00 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
1eb10 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20  ed to enable or 
1eb20 64 69 73 61 62 6c 65 20 5b 43 52 45 41 54 45 20  disable [CREATE 
1eb30 54 52 49 47 47 45 52 20 7c 20 74 72 69 67 67 65  TRIGGER | trigge
1eb40 72 73 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68  rs]..** There sh
1eb50 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69  ould be two addi
1eb60 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73  tional arguments
1eb70 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  ..** The first a
1eb80 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e  rgument is an in
1eb90 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30  teger which is 0
1eba0 20 74 6f 20 64 69 73 61 62 6c 65 20 74 72 69 67   to disable trig
1ebb0 67 65 72 73 2c 0a 2a 2a 20 70 6f 73 69 74 69 76  gers,.** positiv
1ebc0 65 20 74 6f 20 65 6e 61 62 6c 65 20 74 72 69 67  e to enable trig
1ebd0 67 65 72 73 20 6f 72 20 6e 65 67 61 74 69 76 65  gers or negative
1ebe0 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20 73 65   to leave the se
1ebf0 74 74 69 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e  tting unchanged.
1ec00 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 70  .** The second p
1ec10 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 70 6f  arameter is a po
1ec20 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
1ec30 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a  ger into which.*
1ec40 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30 20 6f  * is written 0 o
1ec50 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20  r 1 to indicate 
1ec60 77 68 65 74 68 65 72 20 74 72 69 67 67 65 72 73  whether triggers
1ec70 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 6f 72   are disabled or
1ec80 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c   enabled.** foll
1ec90 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e  owing this call.
1eca0 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72    The second par
1ecb0 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20  ameter may be a 
1ecc0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e  NULL pointer, in
1ecd0 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74  .** which case t
1ece0 68 65 20 74 72 69 67 67 65 72 20 73 65 74 74 69  he trigger setti
1ecf0 6e 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74  ng is not report
1ed00 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a  ed back. </dd>.*
1ed10 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  *.** <dt>SQLITE_
1ed20 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
1ed30 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f  FTS3_TOKENIZER</
1ed40 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69  dt>.** <dd> ^Thi
1ed50 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
1ed60 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
1ed70 73 61 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72  sable the two-ar
1ed80 67 75 6d 65 6e 74 0a 2a 2a 20 76 65 72 73 69 6f  gument.** versio
1ed90 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74  n of the [fts3_t
1eda0 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63  okenizer()] func
1edb0 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61  tion which is pa
1edc0 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54  rt of the.** [FT
1edd0 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  S3] full-text se
1ede0 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65  arch engine exte
1edf0 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20  nsion..** There 
1ee00 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
1ee10 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
1ee20 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
1ee30 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
1ee40 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
1ee50 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74   0 to disable ft
1ee60 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
1ee70 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f  r.** positive to
1ee80 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b   enable fts3_tok
1ee90 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61  enizer() or nega
1eea0 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
1eeb0 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63  e setting.** unc
1eec0 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
1eed0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
1eee0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
1eef0 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
1ef00 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
1ef10 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
1ef20 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 66  dicate whether f
1ef30 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73  ts3_tokenizer is
1ef40 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
1ef50 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
1ef60 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
1ef70 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
1ef80 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c  er may be a NULL
1ef90 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20   pointer, in.** 
1efa0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
1efb0 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
1efc0 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
1efd0 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74   </dd>.**.** <dt
1efe0 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
1eff0 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54  _ENABLE_LOAD_EXT
1f000 45 4e 53 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c  ENSION</dt>.** <
1f010 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e  dd> ^This option
1f020 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62   is used to enab
1f030 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74 68  le or disable th
1f040 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f  e [sqlite3_load_
1f050 65 78 74 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20  extension()].** 
1f060 69 6e 74 65 72 66 61 63 65 20 69 6e 64 65 70 65  interface indepe
1f070 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b  ndently of the [
1f080 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
1f090 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a  ] SQL function..
1f0a0 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  ** The [sqlite3_
1f0b0 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65  enable_load_exte
1f0c0 6e 73 69 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61  nsion()] API ena
1f0d0 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73  bles or disables
1f0e0 20 62 6f 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41   both the.** C-A
1f0f0 50 49 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64  PI [sqlite3_load
1f100 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e  _extension()] an
1f110 64 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  d the SQL functi
1f120 6f 6e 20 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69  on [load_extensi
1f130 6f 6e 28 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20  on()]..** There 
1f140 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
1f150 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
1f160 74 73 2e 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20  ts..** When the 
1f170 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74  first argument t
1f180 6f 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65  o this interface
1f190 20 69 73 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79   is 1, then only
1f1a0 20 74 68 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a   the C-API is.**
1f1b0 20 65 6e 61 62 6c 65 64 20 61 6e 64 20 74 68 65   enabled and the
1f1c0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65   SQL function re
1f1d0 6d 61 69 6e 73 20 64 69 73 61 62 6c 65 64 2e 20  mains disabled. 
1f1e0 20 49 66 20 74 68 65 20 66 69 72 73 74 20 61 72   If the first ar
1f1f0 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69  gument to.** thi
1f200 73 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 30  s interface is 0
1f210 2c 20 74 68 65 6e 20 62 6f 74 68 20 74 68 65 20  , then both the 
1f220 43 2d 41 50 49 20 61 6e 64 20 74 68 65 20 53 51  C-API and the SQ
1f230 4c 20 66 75 6e 63 74 69 6f 6e 20 61 72 65 20 64  L function are d
1f240 69 73 61 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74  isabled..** If t
1f250 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
1f260 74 20 69 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f  t is -1, then no
1f270 20 63 68 61 6e 67 65 73 20 61 72 65 20 6d 61 64   changes are mad
1f280 65 20 74 6f 20 73 74 61 74 65 20 6f 66 20 65 69  e to state of ei
1f290 74 68 65 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50  ther the.** C-AP
1f2a0 49 20 6f 72 20 74 68 65 20 53 51 4c 20 66 75 6e  I or the SQL fun
1f2b0 63 74 69 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65  ction..** The se
1f2c0 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69  cond parameter i
1f2d0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1f2e0 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77  n integer into w
1f2f0 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74  hich.** is writt
1f300 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64  en 0 or 1 to ind
1f310 69 63 61 74 65 20 77 68 65 74 68 65 72 20 5b 73  icate whether [s
1f320 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
1f330 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61  nsion()] interfa
1f340 63 65 0a 2a 2a 20 69 73 20 64 69 73 61 62 6c 65  ce.** is disable
1f350 64 20 6f 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c  d or enabled fol
1f360 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c  lowing this call
1f370 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  .  The second pa
1f380 72 61 6d 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62  rameter may.** b
1f390 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  e a NULL pointer
1f3a0 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  , in which case 
1f3b0 74 68 65 20 6e 65 77 20 73 65 74 74 69 6e 67 20  the new setting 
1f3c0 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65 64 20  is not reported 
1f3d0 62 61 63 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a  back..** </dd>.*
1f3e0 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  *.** <dt>SQLITE_
1f3f0 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42 4e  DBCONFIG_MAINDBN
1f400 41 4d 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  AME</dt>.** <dd>
1f410 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
1f420 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20   used to change 
1f430 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
1f440 22 6d 61 69 6e 22 20 64 61 74 61 62 61 73 65 0a  "main" database.
1f450 2a 2a 20 73 63 68 65 6d 61 2e 20 20 5e 54 68 65  ** schema.  ^The
1f460 20 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20 69   sole argument i
1f470 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1f480 20 63 6f 6e 73 74 61 6e 74 20 55 54 46 38 20 73   constant UTF8 s
1f490 74 72 69 6e 67 0a 2a 2a 20 77 68 69 63 68 20 77  tring.** which w
1f4a0 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 6e  ill become the n
1f4b0 65 77 20 73 63 68 65 6d 61 20 6e 61 6d 65 20 69  ew schema name i
1f4c0 6e 20 70 6c 61 63 65 20 6f 66 20 22 6d 61 69 6e  n place of "main
1f4d0 22 2e 20 20 5e 53 51 4c 69 74 65 0a 2a 2a 20 64  ".  ^SQLite.** d
1f4e0 6f 65 73 20 6e 6f 74 20 6d 61 6b 65 20 61 20 63  oes not make a c
1f4f0 6f 70 79 20 6f 66 20 74 68 65 20 6e 65 77 20 6d  opy of the new m
1f500 61 69 6e 20 73 63 68 65 6d 61 20 6e 61 6d 65 20  ain schema name 
1f510 73 74 72 69 6e 67 2c 20 73 6f 20 74 68 65 20 61  string, so the a
1f520 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75  pplication.** mu
1f530 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20 74  st ensure that t
1f540 68 65 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73  he argument pass
1f550 65 64 20 69 6e 74 6f 20 74 68 69 73 20 44 42 43  ed into this DBC
1f560 4f 4e 46 49 47 20 6f 70 74 69 6f 6e 20 69 73 20  ONFIG option is 
1f570 75 6e 63 68 61 6e 67 65 64 0a 2a 2a 20 75 6e 74  unchanged.** unt
1f580 69 6c 20 61 66 74 65 72 20 74 68 65 20 64 61 74  il after the dat
1f590 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1f5a0 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64   closes..** </dd
1f5b0 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  >.**.** <dt>SQLI
1f5c0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43  TE_DBCONFIG_NO_C
1f5d0 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 3c 2f 64 74  KPT_ON_CLOSE</dt
1f5e0 3e 0a 2a 2a 20 3c 64 64 3e 20 55 73 75 61 6c 6c  >.** <dd> Usuall
1f5f0 79 2c 20 77 68 65 6e 20 61 20 64 61 74 61 62 61  y, when a databa
1f600 73 65 20 69 6e 20 77 61 6c 20 6d 6f 64 65 20 69  se in wal mode i
1f610 73 20 63 6c 6f 73 65 64 20 6f 72 20 64 65 74 61  s closed or deta
1f620 63 68 65 64 20 66 72 6f 6d 20 61 20 0a 2a 2a 20  ched from a .** 
1f630 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 2c  database handle,
1f640 20 53 51 4c 69 74 65 20 63 68 65 63 6b 73 20 69   SQLite checks i
1f650 66 20 74 68 69 73 20 77 69 6c 6c 20 6d 65 61 6e  f this will mean
1f660 20 74 68 61 74 20 74 68 65 72 65 20 61 72 65 20   that there are 
1f670 6e 6f 77 20 6e 6f 20 0a 2a 2a 20 63 6f 6e 6e 65  now no .** conne
1f680 63 74 69 6f 6e 73 20 61 74 20 61 6c 6c 20 74 6f  ctions at all to
1f690 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 49   the database. I
1f6a0 66 20 73 6f 2c 20 69 74 20 70 65 72 66 6f 72 6d  f so, it perform
1f6b0 73 20 61 20 63 68 65 63 6b 70 6f 69 6e 74 20 0a  s a checkpoint .
1f6c0 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20 62 65 66  ** operation bef
1f6d0 6f 72 65 20 63 6c 6f 73 69 6e 67 20 74 68 65 20  ore closing the 
1f6e0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 54 68 69 73  connection. This
1f6f0 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65 20 75   option may be u
1f700 73 65 64 20 74 6f 0a 2a 2a 20 6f 76 65 72 72 69  sed to.** overri
1f710 64 65 20 74 68 69 73 20 62 65 68 61 76 69 6f 75  de this behaviou
1f720 72 2e 20 54 68 65 20 66 69 72 73 74 20 70 61 72  r. The first par
1f730 61 6d 65 74 65 72 20 70 61 73 73 65 64 20 74 6f  ameter passed to
1f740 20 74 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 0a   this operation.
1f750 2a 2a 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  ** is an integer
1f760 20 2d 20 6e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 64   - non-zero to d
1f770 69 73 61 62 6c 65 20 63 68 65 63 6b 70 6f 69 6e  isable checkpoin
1f780 74 73 2d 6f 6e 2d 63 6c 6f 73 65 2c 20 6f 72 20  ts-on-close, or 
1f790 7a 65 72 6f 20 28 74 68 65 0a 2a 2a 20 64 65 66  zero (the.** def
1f7a0 61 75 6c 74 29 20 74 6f 20 65 6e 61 62 6c 65 20  ault) to enable 
1f7b0 74 68 65 6d 2e 20 54 68 65 20 73 65 63 6f 6e 64  them. The second
1f7c0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
1f7d0 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
1f7e0 74 65 67 65 72 0a 2a 2a 20 69 6e 74 6f 20 77 68  teger.** into wh
1f7f0 69 63 68 20 69 73 20 77 72 69 74 74 65 6e 20 30  ich is written 0
1f800 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74   or 1 to indicat
1f810 65 20 77 68 65 74 68 65 72 20 63 68 65 63 6b 70  e whether checkp
1f820 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65 0a 2a  oints-on-close.*
1f830 2a 20 68 61 76 65 20 62 65 65 6e 20 64 69 73 61  * have been disa
1f840 62 6c 65 64 20 2d 20 30 20 69 66 20 74 68 65 79  bled - 0 if they
1f850 20 61 72 65 20 6e 6f 74 20 64 69 73 61 62 6c 65   are not disable
1f860 64 2c 20 31 20 69 66 20 74 68 65 79 20 61 72 65  d, 1 if they are
1f870 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ..** </dd>.**.**
1f880 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
1f890 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47  NFIG_ENABLE_QPSG
1f8a0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 28 54  </dt>.** <dd>^(T
1f8b0 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  he SQLITE_DBCONF
1f8c0 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20 6f  IG_ENABLE_QPSG o
1f8d0 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65 73 20  ption activates 
1f8e0 6f 72 20 64 65 61 63 74 69 76 61 74 65 73 0a 2a  or deactivates.*
1f8f0 2a 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61  * the [query pla
1f900 6e 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67  nner stability g
1f910 75 61 72 61 6e 74 65 65 5d 20 28 51 50 53 47 29  uarantee] (QPSG)
1f920 2e 20 20 57 68 65 6e 20 74 68 65 20 51 50 53 47  .  When the QPSG
1f930 20 69 73 20 61 63 74 69 76 65 2c 0a 2a 2a 20 61   is active,.** a
1f940 20 73 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72   single SQL quer
1f950 79 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c  y statement will
1f960 20 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 20   always use the 
1f970 73 61 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 72  same algorithm r
1f980 65 67 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66 20  egardless.** of 
1f990 76 61 6c 75 65 73 20 6f 66 20 5b 62 6f 75 6e 64  values of [bound
1f9a0 20 70 61 72 61 6d 65 74 65 72 73 5d 2e 29 5e 20   parameters].)^ 
1f9b0 54 68 65 20 51 50 53 47 20 64 69 73 61 62 6c 65  The QPSG disable
1f9c0 73 20 73 6f 6d 65 20 71 75 65 72 79 20 6f 70 74  s some query opt
1f9d0 69 6d 69 7a 61 74 69 6f 6e 73 0a 2a 2a 20 74 68  imizations.** th
1f9e0 61 74 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 76  at look at the v
1f9f0 61 6c 75 65 73 20 6f 66 20 62 6f 75 6e 64 20 70  alues of bound p
1fa00 61 72 61 6d 65 74 65 72 73 2c 20 77 68 69 63 68  arameters, which
1fa10 20 63 61 6e 20 6d 61 6b 65 20 73 6f 6d 65 20 71   can make some q
1fa20 75 65 72 69 65 73 0a 2a 2a 20 73 6c 6f 77 65 72  ueries.** slower
1fa30 2e 20 20 42 75 74 20 74 68 65 20 51 50 53 47 20  .  But the QPSG 
1fa40 68 61 73 20 74 68 65 20 61 64 76 61 6e 74 61 67  has the advantag
1fa50 65 20 6f 66 20 6d 6f 72 65 20 70 72 65 64 69 63  e of more predic
1fa60 74 61 62 6c 65 20 62 65 68 61 76 69 6f 72 2e 20  table behavior. 
1fa70 20 57 69 74 68 0a 2a 2a 20 74 68 65 20 51 50 53   With.** the QPS
1fa80 47 20 61 63 74 69 76 65 2c 20 53 51 4c 69 74 65  G active, SQLite
1fa90 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65   will always use
1faa0 20 74 68 65 20 73 61 6d 65 20 71 75 65 72 79 20   the same query 
1fab0 70 6c 61 6e 20 69 6e 20 74 68 65 20 66 69 65 6c  plan in the fiel
1fac0 64 20 61 73 0a 2a 2a 20 77 61 73 20 75 73 65 64  d as.** was used
1fad0 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20   during testing 
1fae0 69 6e 20 74 68 65 20 6c 61 62 2e 0a 2a 2a 20 3c  in the lab..** <
1faf0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 2f 64 6c 3e  /dd>.**.** </dl>
1fb00 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
1fb10 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e  TE_DBCONFIG_MAIN
1fb20 44 42 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20  DBNAME          
1fb30 20 20 31 30 30 30 20 2f 2a 20 63 6f 6e 73 74 20    1000 /* const 
1fb40 63 68 61 72 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  char* */.#define
1fb50 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
1fb60 5f 4c 4f 4f 4b 41 53 49 44 45 20 20 20 20 20 20  _LOOKASIDE      
1fb70 20 20 20 20 20 20 20 31 30 30 31 20 2f 2a 20 76         1001 /* v
1fb80 6f 69 64 2a 20 69 6e 74 20 69 6e 74 20 2a 2f 0a  oid* int int */.
1fb90 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
1fba0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
1fbb0 4b 45 59 20 20 20 20 20 20 20 20 20 20 20 31 30  KEY           10
1fbc0 30 32 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  02 /* int int* *
1fbd0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fbe0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
1fbf0 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20  _TRIGGER        
1fc00 31 30 30 33 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1003 /* int int*
1fc10 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1fc20 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
1fc30 4c 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45  LE_FTS3_TOKENIZE
1fc40 52 20 31 30 30 34 20 2f 2a 20 69 6e 74 20 69 6e  R 1004 /* int in
1fc50 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
1fc60 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
1fc70 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  ABLE_LOAD_EXTENS
1fc80 49 4f 4e 20 31 30 30 35 20 2f 2a 20 69 6e 74 20  ION 1005 /* int 
1fc90 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
1fca0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
1fcb0 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45  NO_CKPT_ON_CLOSE
1fcc0 20 20 20 20 20 20 31 30 30 36 20 2f 2a 20 69 6e        1006 /* in
1fcd0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
1fce0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
1fcf0 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20 20 20  G_ENABLE_QPSG   
1fd00 20 20 20 20 20 20 20 20 31 30 30 37 20 2f 2a 20          1007 /* 
1fd10 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 0a 0a 2f 2a  int int* */.../*
1fd20 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 6e  .** CAPI3REF: En
1fd30 61 62 6c 65 20 4f 72 20 44 69 73 61 62 6c 65 20  able Or Disable 
1fd40 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c 74 20  Extended Result 
1fd50 43 6f 64 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  Codes.** METHOD:
1fd60 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
1fd70 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65  The sqlite3_exte
1fd80 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65  nded_result_code
1fd90 73 28 29 20 72 6f 75 74 69 6e 65 20 65 6e 61 62  s() routine enab
1fda0 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20  les or disables 
1fdb0 74 68 65 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64  the.** [extended
1fdc0 20 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 20 66   result codes] f
1fdd0 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74 65  eature of SQLite
1fde0 2e 20 5e 54 68 65 20 65 78 74 65 6e 64 65 64 20  . ^The extended 
1fdf0 72 65 73 75 6c 74 0a 2a 2a 20 63 6f 64 65 73 20  result.** codes 
1fe00 61 72 65 20 64 69 73 61 62 6c 65 64 20 62 79 20  are disabled by 
1fe10 64 65 66 61 75 6c 74 20 66 6f 72 20 68 69 73 74  default for hist
1fe20 6f 72 69 63 61 6c 20 63 6f 6d 70 61 74 69 62 69  orical compatibi
1fe30 6c 69 74 79 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  lity..*/.SQLITE_
1fe40 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
1fe50 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f  extended_result_
1fe60 63 6f 64 65 73 28 73 71 6c 69 74 65 33 2a 2c 20  codes(sqlite3*, 
1fe70 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a  int onoff);../*.
1fe80 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c 61 73  ** CAPI3REF: Las
1fe90 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 0a 2a  t Insert Rowid.*
1fea0 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
1feb0 33 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68 20 65 6e  3.**.** ^Each en
1fec0 74 72 79 20 69 6e 20 6d 6f 73 74 20 53 51 4c 69  try in most SQLi
1fed0 74 65 20 74 61 62 6c 65 73 20 28 65 78 63 65 70  te tables (excep
1fee0 74 20 66 6f 72 20 5b 57 49 54 48 4f 55 54 20 52  t for [WITHOUT R
1fef0 4f 57 49 44 5d 20 74 61 62 6c 65 73 29 0a 2a 2a  OWID] tables).**
1ff00 20 68 61 73 20 61 20 75 6e 69 71 75 65 20 36 34   has a unique 64
1ff10 2d 62 69 74 20 73 69 67 6e 65 64 0a 2a 2a 20 69  -bit signed.** i
1ff20 6e 74 65 67 65 72 20 6b 65 79 20 63 61 6c 6c 65  nteger key calle
1ff30 64 20 74 68 65 20 5b 52 4f 57 49 44 20 7c 20 22  d the [ROWID | "
1ff40 72 6f 77 69 64 22 5d 2e 20 5e 54 68 65 20 72 6f  rowid"]. ^The ro
1ff50 77 69 64 20 69 73 20 61 6c 77 61 79 73 20 61 76  wid is always av
1ff60 61 69 6c 61 62 6c 65 0a 2a 2a 20 61 73 20 61 6e  ailable.** as an
1ff70 20 75 6e 64 65 63 6c 61 72 65 64 20 63 6f 6c 75   undeclared colu
1ff80 6d 6e 20 6e 61 6d 65 64 20 52 4f 57 49 44 2c 20  mn named ROWID, 
1ff90 4f 49 44 2c 20 6f 72 20 5f 52 4f 57 49 44 5f 20  OID, or _ROWID_ 
1ffa0 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65  as long as those
1ffb0 0a 2a 2a 20 6e 61 6d 65 73 20 61 72 65 20 6e 6f  .** names are no
1ffc0 74 20 61 6c 73 6f 20 75 73 65 64 20 62 79 20 65  t also used by e
1ffd0 78 70 6c 69 63 69 74 6c 79 20 64 65 63 6c 61 72  xplicitly declar
1ffe0 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 5e 49 66 0a  ed columns. ^If.
1fff0 2a 2a 20 74 68 65 20 74 61 62 6c 65 20 68 61 73  ** the table has
20000 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 79 70   a column of typ
20010 65 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d 41  e [INTEGER PRIMA
20020 52 59 20 4b 45 59 5d 20 74 68 65 6e 20 74 68 61  RY KEY] then tha
20030 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 73 20 61  t column.** is a
20040 6e 6f 74 68 65 72 20 61 6c 69 61 73 20 66 6f 72  nother alias for
20050 20 74 68 65 20 72 6f 77 69 64 2e 0a 2a 2a 0a 2a   the rowid..**.*
20060 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6c  * ^The sqlite3_l
20070 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
20080 28 44 29 20 69 6e 74 65 72 66 61 63 65 20 75 73  (D) interface us
20090 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20 74 68  ually returns th
200a0 65 20 5b 72 6f 77 69 64 5d 20 6f 66 0a 2a 2a 20  e [rowid] of.** 
200b0 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
200c0 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53 45  successful [INSE
200d0 52 54 5d 20 69 6e 74 6f 20 61 20 72 6f 77 69 64  RT] into a rowid
200e0 20 74 61 62 6c 65 20 6f 72 20 5b 76 69 72 74 75   table or [virtu
200f0 61 6c 20 74 61 62 6c 65 5d 0a 2a 2a 20 6f 6e 20  al table].** on 
20100 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
20110 69 6f 6e 20 44 2e 20 5e 49 6e 73 65 72 74 73 20  ion D. ^Inserts 
20120 69 6e 74 6f 20 5b 57 49 54 48 4f 55 54 20 52 4f  into [WITHOUT RO
20130 57 49 44 5d 20 74 61 62 6c 65 73 20 61 72 65 20  WID] tables are 
20140 6e 6f 74 0a 2a 2a 20 72 65 63 6f 72 64 65 64 2e  not.** recorded.
20150 20 5e 49 66 20 6e 6f 20 73 75 63 63 65 73 73 66   ^If no successf
20160 75 6c 20 5b 49 4e 53 45 52 54 5d 73 20 69 6e 74  ul [INSERT]s int
20170 6f 20 72 6f 77 69 64 20 74 61 62 6c 65 73 20 68  o rowid tables h
20180 61 76 65 20 65 76 65 72 20 6f 63 63 75 72 72 65  ave ever occurre
20190 64 20 0a 2a 2a 20 6f 6e 20 74 68 65 20 64 61 74  d .** on the dat
201a0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
201b0 20 44 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33   D, then sqlite3
201c0 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
201d0 69 64 28 44 29 20 72 65 74 75 72 6e 73 20 0a 2a  id(D) returns .*
201e0 2a 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 41 73  * zero..**.** As
201f0 20 77 65 6c 6c 20 61 73 20 62 65 69 6e 67 20 73   well as being s
20200 65 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  et automatically
20210 20 61 73 20 72 6f 77 73 20 61 72 65 20 69 6e 73   as rows are ins
20220 65 72 74 65 64 20 69 6e 74 6f 20 64 61 74 61 62  erted into datab
20230 61 73 65 0a 2a 2a 20 74 61 62 6c 65 73 2c 20 74  ase.** tables, t
20240 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
20250 64 20 62 79 20 74 68 69 73 20 66 75 6e 63 74 69  d by this functi
20260 6f 6e 20 6d 61 79 20 62 65 20 73 65 74 20 65 78  on may be set ex
20270 70 6c 69 63 69 74 6c 79 20 62 79 0a 2a 2a 20 5b  plicitly by.** [
20280 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74  sqlite3_set_last
20290 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d  _insert_rowid()]
202a0 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 76 69 72 74  .**.** Some virt
202b0 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d  ual table implem
202c0 65 6e 74 61 74 69 6f 6e 73 20 6d 61 79 20 49 4e  entations may IN
202d0 53 45 52 54 20 72 6f 77 73 20 69 6e 74 6f 20 72  SERT rows into r
202e0 6f 77 69 64 20 74 61 62 6c 65 73 20 61 73 0a 2a  owid tables as.*
202f0 2a 20 70 61 72 74 20 6f 66 20 63 6f 6d 6d 69 74  * part of commit
20300 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69  ting a transacti
20310 6f 6e 20 28 65 2e 67 2e 20 74 6f 20 66 6c 75 73  on (e.g. to flus
20320 68 20 64 61 74 61 20 61 63 63 75 6d 75 6c 61 74  h data accumulat
20330 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a 20  ed in memory.** 
20340 74 6f 20 64 69 73 6b 29 2e 20 49 6e 20 74 68 69  to disk). In thi
20350 73 20 63 61 73 65 20 73 75 62 73 65 71 75 65 6e  s case subsequen
20360 74 20 63 61 6c 6c 73 20 74 6f 20 74 68 69 73 20  t calls to this 
20370 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 20  function return 
20380 74 68 65 20 72 6f 77 69 64 0a 2a 2a 20 61 73 73  the rowid.** ass
20390 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
203a0 73 65 20 69 6e 74 65 72 6e 61 6c 20 49 4e 53 45  se internal INSE
203b0 52 54 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20 77  RT operations, w
203c0 68 69 63 68 20 6c 65 61 64 73 20 74 6f 20 0a 2a  hich leads to .*
203d0 2a 20 75 6e 69 6e 74 75 69 74 69 76 65 20 72 65  * unintuitive re
203e0 73 75 6c 74 73 2e 20 56 69 72 74 75 61 6c 20 74  sults. Virtual t
203f0 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
20400 69 6f 6e 73 20 74 68 61 74 20 64 6f 20 77 72 69  ions that do wri
20410 74 65 20 74 6f 20 72 6f 77 69 64 0a 2a 2a 20 74  te to rowid.** t
20420 61 62 6c 65 73 20 69 6e 20 74 68 69 73 20 77 61  ables in this wa
20430 79 20 63 61 6e 20 61 76 6f 69 64 20 74 68 69 73  y can avoid this
20440 20 70 72 6f 62 6c 65 6d 20 62 79 20 72 65 73 74   problem by rest
20450 6f 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69 6e  oring the origin
20460 61 6c 20 0a 2a 2a 20 72 6f 77 69 64 20 76 61 6c  al .** rowid val
20470 75 65 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ue using [sqlite
20480 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72  3_set_last_inser
20490 74 5f 72 6f 77 69 64 28 29 5d 20 62 65 66 6f 72  t_rowid()] befor
204a0 65 20 72 65 74 75 72 6e 69 6e 67 20 0a 2a 2a 20  e returning .** 
204b0 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20 75  control to the u
204c0 73 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20  ser..**.** ^(If 
204d0 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 63 63 75  an [INSERT] occu
204e0 72 73 20 77 69 74 68 69 6e 20 61 20 74 72 69 67  rs within a trig
204f0 67 65 72 20 74 68 65 6e 20 74 68 69 73 20 72 6f  ger then this ro
20500 75 74 69 6e 65 20 77 69 6c 6c 20 0a 2a 2a 20 72  utine will .** r
20510 65 74 75 72 6e 20 74 68 65 20 5b 72 6f 77 69 64  eturn the [rowid
20520 5d 20 6f 66 20 74 68 65 20 69 6e 73 65 72 74 65  ] of the inserte
20530 64 20 72 6f 77 20 61 73 20 6c 6f 6e 67 20 61 73  d row as long as
20540 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73 20   the trigger is 
20550 0a 2a 2a 20 72 75 6e 6e 69 6e 67 2e 20 4f 6e 63  .** running. Onc
20560 65 20 74 68 65 20 74 72 69 67 67 65 72 20 70 72  e the trigger pr
20570 6f 67 72 61 6d 20 65 6e 64 73 2c 20 74 68 65 20  ogram ends, the 
20580 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 0a  value returned .
20590 2a 2a 20 62 79 20 74 68 69 73 20 72 6f 75 74 69  ** by this routi
205a0 6e 65 20 72 65 76 65 72 74 73 20 74 6f 20 77 68  ne reverts to wh
205b0 61 74 20 69 74 20 77 61 73 20 62 65 66 6f 72 65  at it was before
205c0 20 74 68 65 20 74 72 69 67 67 65 72 20 77 61 73   the trigger was
205d0 20 66 69 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20   fired.)^.**.** 
205e0 5e 41 6e 20 5b 49 4e 53 45 52 54 5d 20 74 68 61  ^An [INSERT] tha
205f0 74 20 66 61 69 6c 73 20 64 75 65 20 74 6f 20 61  t fails due to a
20600 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c   constraint viol
20610 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 0a 2a  ation is not a.*
20620 2a 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e  * successful [IN
20630 53 45 52 54 5d 20 61 6e 64 20 64 6f 65 73 20 6e  SERT] and does n
20640 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  ot change the va
20650 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
20660 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 2e  this.** routine.
20670 20 20 5e 54 68 75 73 20 49 4e 53 45 52 54 20 4f    ^Thus INSERT O
20680 52 20 46 41 49 4c 2c 20 49 4e 53 45 52 54 20 4f  R FAIL, INSERT O
20690 52 20 49 47 4e 4f 52 45 2c 20 49 4e 53 45 52 54  R IGNORE, INSERT
206a0 20 4f 52 20 52 4f 4c 4c 42 41 43 4b 2c 0a 2a 2a   OR ROLLBACK,.**
206b0 20 61 6e 64 20 49 4e 53 45 52 54 20 4f 52 20 41   and INSERT OR A
206c0 42 4f 52 54 20 6d 61 6b 65 20 6e 6f 20 63 68 61  BORT make no cha
206d0 6e 67 65 73 20 74 6f 20 74 68 65 20 72 65 74 75  nges to the retu
206e0 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73  rn value of this
206f0 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 77 68 65 6e  .** routine when
20700 20 74 68 65 69 72 20 69 6e 73 65 72 74 69 6f 6e   their insertion
20710 20 66 61 69 6c 73 2e 20 20 5e 28 57 68 65 6e 20   fails.  ^(When 
20720 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43  INSERT OR REPLAC
20730 45 0a 2a 2a 20 65 6e 63 6f 75 6e 74 65 72 73 20  E.** encounters 
20740 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
20750 6c 61 74 69 6f 6e 2c 20 69 74 20 64 6f 65 73 20  lation, it does 
20760 6e 6f 74 20 66 61 69 6c 2e 20 20 54 68 65 0a 2a  not fail.  The.*
20770 2a 20 49 4e 53 45 52 54 20 63 6f 6e 74 69 6e 75  * INSERT continu
20780 65 73 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f 6e  es to completion
20790 20 61 66 74 65 72 20 64 65 6c 65 74 69 6e 67 20   after deleting 
207a0 72 6f 77 73 20 74 68 61 74 20 63 61 75 73 65 64  rows that caused
207b0 0a 2a 2a 20 74 68 65 20 63 6f 6e 73 74 72 61 69  .** the constrai
207c0 6e 74 20 70 72 6f 62 6c 65 6d 20 73 6f 20 49 4e  nt problem so IN
207d0 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 20  SERT OR REPLACE 
207e0 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 68 61 6e  will always chan
207f0 67 65 0a 2a 2a 20 74 68 65 20 72 65 74 75 72 6e  ge.** the return
20800 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 69   value of this i
20810 6e 74 65 72 66 61 63 65 2e 29 5e 0a 2a 2a 0a 2a  nterface.)^.**.*
20820 2a 20 5e 46 6f 72 20 74 68 65 20 70 75 72 70 6f  * ^For the purpo
20830 73 65 73 20 6f 66 20 74 68 69 73 20 72 6f 75 74  ses of this rout
20840 69 6e 65 2c 20 61 6e 20 5b 49 4e 53 45 52 54 5d  ine, an [INSERT]
20850 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74   is considered t
20860 6f 0a 2a 2a 20 62 65 20 73 75 63 63 65 73 73 66  o.** be successf
20870 75 6c 20 65 76 65 6e 20 69 66 20 69 74 20 69 73  ul even if it is
20880 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 72 6f   subsequently ro
20890 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a  lled back..**.**
208a0 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
208b0 73 20 61 63 63 65 73 73 69 62 6c 65 20 74 6f 20  s accessible to 
208c0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 76  SQL statements v
208d0 69 61 20 74 68 65 0a 2a 2a 20 5b 6c 61 73 74 5f  ia the.** [last_
208e0 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20 53  insert_rowid() S
208f0 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a  QL function]..**
20900 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61 74  .** If a separat
20910 65 20 74 68 72 65 61 64 20 70 65 72 66 6f 72 6d  e thread perform
20920 73 20 61 20 6e 65 77 20 5b 49 4e 53 45 52 54 5d  s a new [INSERT]
20930 20 6f 6e 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20   on the same.** 
20940 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
20950 69 6f 6e 20 77 68 69 6c 65 20 74 68 65 20 5b 73  ion while the [s
20960 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
20970 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 20 66  rt_rowid()].** f
20980 75 6e 63 74 69 6f 6e 20 69 73 20 72 75 6e 6e 69  unction is runni
20990 6e 67 20 61 6e 64 20 74 68 75 73 20 63 68 61 6e  ng and thus chan
209a0 67 65 73 20 74 68 65 20 6c 61 73 74 20 69 6e 73  ges the last ins
209b0 65 72 74 20 5b 72 6f 77 69 64 5d 2c 0a 2a 2a 20  ert [rowid],.** 
209c0 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 72  then the value r
209d0 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c 69  eturned by [sqli
209e0 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
209f0 72 6f 77 69 64 28 29 5d 20 69 73 0a 2a 2a 20 75  rowid()] is.** u
20a00 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64  npredictable and
20a10 20 6d 69 67 68 74 20 6e 6f 74 20 65 71 75 61 6c   might not equal
20a20 20 65 69 74 68 65 72 20 74 68 65 20 6f 6c 64 20   either the old 
20a30 6f 72 20 74 68 65 20 6e 65 77 0a 2a 2a 20 6c 61  or the new.** la
20a40 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77 69 64  st insert [rowid
20a50 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  ]..*/.SQLITE_API
20a60 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73   sqlite3_int64 s
20a70 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65  qlite3_last_inse
20a80 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65 33  rt_rowid(sqlite3
20a90 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
20aa0 52 45 46 3a 20 53 65 74 20 74 68 65 20 4c 61 73  REF: Set the Las
20ab0 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 20 76  t Insert Rowid v
20ac0 61 6c 75 65 2e 0a 2a 2a 20 4d 45 54 48 4f 44 3a  alue..** METHOD:
20ad0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54   sqlite3.**.** T
20ae0 68 65 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c  he sqlite3_set_l
20af0 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
20b00 28 44 2c 20 52 29 20 6d 65 74 68 6f 64 20 61 6c  (D, R) method al
20b10 6c 6f 77 73 20 74 68 65 20 61 70 70 6c 69 63 61  lows the applica
20b20 74 69 6f 6e 20 74 6f 0a 2a 2a 20 73 65 74 20 74  tion to.** set t
20b30 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
20b40 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c  d by calling sql
20b50 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
20b60 5f 72 6f 77 69 64 28 44 29 20 74 6f 20 52 20 0a  _rowid(D) to R .
20b70 2a 2a 20 77 69 74 68 6f 75 74 20 69 6e 73 65 72  ** without inser
20b80 74 69 6e 67 20 61 20 72 6f 77 20 69 6e 74 6f 20  ting a row into 
20b90 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a 2f  the database..*/
20ba0 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
20bb0 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73   sqlite3_set_las
20bc0 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 73  t_insert_rowid(s
20bd0 71 6c 69 74 65 33 2a 2c 73 71 6c 69 74 65 33 5f  qlite3*,sqlite3_
20be0 69 6e 74 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  int64);../*.** C
20bf0 41 50 49 33 52 45 46 3a 20 43 6f 75 6e 74 20 54  API3REF: Count T
20c00 68 65 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f 77  he Number Of Row
20c10 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d 45  s Modified.** ME
20c20 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
20c30 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69  .** ^This functi
20c40 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e  on returns the n
20c50 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d 6f  umber of rows mo
20c60 64 69 66 69 65 64 2c 20 69 6e 73 65 72 74 65 64  dified, inserted
20c70 20 6f 72 0a 2a 2a 20 64 65 6c 65 74 65 64 20 62   or.** deleted b
20c80 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  y the most recen
20c90 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49 4e  tly completed IN
20ca0 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20  SERT, UPDATE or 
20cb0 44 45 4c 45 54 45 0a 2a 2a 20 73 74 61 74 65 6d  DELETE.** statem
20cc0 65 6e 74 20 6f 6e 20 74 68 65 20 64 61 74 61 62  ent on the datab
20cd0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73  ase connection s
20ce0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
20cf0 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 2e 0a  only parameter..
20d00 2a 2a 20 5e 45 78 65 63 75 74 69 6e 67 20 61 6e  ** ^Executing an
20d10 79 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66 20  y other type of 
20d20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 64 6f  SQL statement do
20d30 65 73 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68  es not modify th
20d40 65 20 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75 72  e value.** retur
20d50 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63  ned by this func
20d60 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c  tion..**.** ^Onl
20d70 79 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20 64  y changes made d
20d80 69 72 65 63 74 6c 79 20 62 79 20 74 68 65 20 49  irectly by the I
20d90 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72  NSERT, UPDATE or
20da0 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
20db0 74 20 61 72 65 0a 2a 2a 20 63 6f 6e 73 69 64 65  t are.** conside
20dc0 72 65 64 20 2d 20 61 75 78 69 6c 69 61 72 79 20  red - auxiliary 
20dd0 63 68 61 6e 67 65 73 20 63 61 75 73 65 64 20 62  changes caused b
20de0 79 20 5b 43 52 45 41 54 45 20 54 52 49 47 47 45  y [CREATE TRIGGE
20df0 52 20 7c 20 74 72 69 67 67 65 72 73 5d 2c 20 0a  R | triggers], .
20e00 2a 2a 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  ** [foreign key 
20e10 61 63 74 69 6f 6e 73 5d 20 6f 72 20 5b 52 45 50  actions] or [REP
20e20 4c 41 43 45 5d 20 63 6f 6e 73 74 72 61 69 6e 74  LACE] constraint
20e30 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65 20   resolution are 
20e40 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 20  not counted..** 
20e50 0a 2a 2a 20 43 68 61 6e 67 65 73 20 74 6f 20 61  .** Changes to a
20e60 20 76 69 65 77 20 74 68 61 74 20 61 72 65 20 69   view that are i
20e70 6e 74 65 72 63 65 70 74 65 64 20 62 79 20 0a 2a  ntercepted by .*
20e80 2a 20 5b 49 4e 53 54 45 41 44 20 4f 46 20 74 72  * [INSTEAD OF tr
20e90 69 67 67 65 72 20 7c 20 49 4e 53 54 45 41 44 20  igger | INSTEAD 
20ea0 4f 46 20 74 72 69 67 67 65 72 73 5d 20 61 72 65  OF triggers] are
20eb0 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 20 5e 54   not counted. ^T
20ec0 68 65 20 76 61 6c 75 65 20 0a 2a 2a 20 72 65 74  he value .** ret
20ed0 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33  urned by sqlite3
20ee0 5f 63 68 61 6e 67 65 73 28 29 20 69 6d 6d 65 64  _changes() immed
20ef0 69 61 74 65 6c 79 20 61 66 74 65 72 20 61 6e 20  iately after an 
20f00 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f  INSERT, UPDATE o
20f10 72 20 0a 2a 2a 20 44 45 4c 45 54 45 20 73 74 61  r .** DELETE sta
20f20 74 65 6d 65 6e 74 20 72 75 6e 20 6f 6e 20 61 20  tement run on a 
20f30 76 69 65 77 20 69 73 20 61 6c 77 61 79 73 20 7a  view is always z
20f40 65 72 6f 2e 20 4f 6e 6c 79 20 63 68 61 6e 67 65  ero. Only change
20f50 73 20 6d 61 64 65 20 74 6f 20 72 65 61 6c 20 0a  s made to real .
20f60 2a 2a 20 74 61 62 6c 65 73 20 61 72 65 20 63 6f  ** tables are co
20f70 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  unted..**.** Thi
20f80 6e 67 73 20 61 72 65 20 6d 6f 72 65 20 63 6f 6d  ngs are more com
20f90 70 6c 69 63 61 74 65 64 20 69 66 20 74 68 65 20  plicated if the 
20fa0 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
20fb0 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 2a 2a  ) function is.**
20fc0 20 65 78 65 63 75 74 65 64 20 77 68 69 6c 65 20   executed while 
20fd0 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  a trigger progra
20fe0 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54 68  m is running. Th
20ff0 69 73 20 6d 61 79 20 68 61 70 70 65 6e 20 69 66  is may happen if
21000 20 74 68 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20   the.** program 
21010 75 73 65 73 20 74 68 65 20 5b 63 68 61 6e 67 65  uses the [change
21020 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  s() SQL function
21030 5d 2c 20 6f 72 20 69 66 20 73 6f 6d 65 20 6f 74  ], or if some ot
21040 68 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  her callback.** 
21050 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 6b 65 73  function invokes
21060 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
21070 28 29 20 64 69 72 65 63 74 6c 79 2e 20 45 73 73  () directly. Ess
21080 65 6e 74 69 61 6c 6c 79 3a 0a 2a 2a 20 0a 2a 2a  entially:.** .**
21090 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20   <ul>.**   <li> 
210a0 5e 28 42 65 66 6f 72 65 20 65 6e 74 65 72 69 6e  ^(Before enterin
210b0 67 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67  g a trigger prog
210c0 72 61 6d 20 74 68 65 20 76 61 6c 75 65 20 72 65  ram the value re
210d0 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20 20 20 20  turned by.**    
210e0 20 20 20 20 73 71 6c 69 74 65 33 5f 63 68 61 6e      sqlite3_chan
210f0 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20 69  ges() function i
21100 73 20 73 61 76 65 64 2e 20 41 66 74 65 72 20 74  s saved. After t
21110 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
21120 61 6d 20 0a 2a 2a 20 20 20 20 20 20 20 20 68 61  am .**        ha
21130 73 20 66 69 6e 69 73 68 65 64 2c 20 74 68 65 20  s finished, the 
21140 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 69  original value i
21150 73 20 72 65 73 74 6f 72 65 64 2e 29 5e 0a 2a 2a  s restored.)^.**
21160 20 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 57 69   .**   <li> ^(Wi
21170 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 20 70  thin a trigger p
21180 72 6f 67 72 61 6d 20 65 61 63 68 20 49 4e 53 45  rogram each INSE
21190 52 54 2c 20 55 50 44 41 54 45 20 61 6e 64 20 44  RT, UPDATE and D
211a0 45 4c 45 54 45 20 0a 2a 2a 20 20 20 20 20 20 20  ELETE .**       
211b0 20 73 74 61 74 65 6d 65 6e 74 20 73 65 74 73 20   statement sets 
211c0 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
211d0 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63 68  ed by sqlite3_ch
211e0 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20 20 20 20  anges() .**     
211f0 20 20 20 75 70 6f 6e 20 63 6f 6d 70 6c 65 74 69     upon completi
21200 6f 6e 20 61 73 20 6e 6f 72 6d 61 6c 2e 20 4f 66  on as normal. Of
21210 20 63 6f 75 72 73 65 2c 20 74 68 69 73 20 76 61   course, this va
21220 6c 75 65 20 77 69 6c 6c 20 6e 6f 74 20 69 6e 63  lue will not inc
21230 6c 75 64 65 20 0a 2a 2a 20 20 20 20 20 20 20 20  lude .**        
21240 61 6e 79 20 63 68 61 6e 67 65 73 20 70 65 72 66  any changes perf
21250 6f 72 6d 65 64 20 62 79 20 73 75 62 2d 74 72 69  ormed by sub-tri
21260 67 67 65 72 73 2c 20 61 73 20 74 68 65 20 73 71  ggers, as the sq
21270 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20  lite3_changes() 
21280 0a 2a 2a 20 20 20 20 20 20 20 20 76 61 6c 75 65  .**        value
21290 20 77 69 6c 6c 20 62 65 20 73 61 76 65 64 20 61   will be saved a
212a0 6e 64 20 72 65 73 74 6f 72 65 64 20 61 66 74 65  nd restored afte
212b0 72 20 65 61 63 68 20 73 75 62 2d 74 72 69 67 67  r each sub-trigg
212c0 65 72 20 68 61 73 20 72 75 6e 2e 29 5e 0a 2a 2a  er has run.)^.**
212d0 20 3c 2f 75 6c 3e 0a 2a 2a 20 0a 2a 2a 20 5e 54   </ul>.** .** ^T
212e0 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 69  his means that i
212f0 66 20 74 68 65 20 63 68 61 6e 67 65 73 28 29 20  f the changes() 
21300 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 28 6f 72  SQL function (or
21310 20 73 69 6d 69 6c 61 72 29 20 69 73 20 75 73 65   similar) is use
21320 64 0a 2a 2a 20 62 79 20 74 68 65 20 66 69 72 73  d.** by the firs
21330 74 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45  t INSERT, UPDATE
21340 20 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74 65   or DELETE state
21350 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20 74 72  ment within a tr
21360 69 67 67 65 72 2c 20 69 74 20 0a 2a 2a 20 72 65  igger, it .** re
21370 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65 20  turns the value 
21380 61 73 20 73 65 74 20 77 68 65 6e 20 74 68 65 20  as set when the 
21390 63 61 6c 6c 69 6e 67 20 73 74 61 74 65 6d 65 6e  calling statemen
213a0 74 20 62 65 67 61 6e 20 65 78 65 63 75 74 69 6e  t began executin
213b0 67 2e 0a 2a 2a 20 5e 49 66 20 69 74 20 69 73 20  g..** ^If it is 
213c0 75 73 65 64 20 62 79 20 74 68 65 20 73 65 63 6f  used by the seco
213d0 6e 64 20 6f 72 20 73 75 62 73 65 71 75 65 6e 74  nd or subsequent
213e0 20 73 75 63 68 20 73 74 61 74 65 6d 65 6e 74 20   such statement 
213f0 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
21400 20 0a 2a 2a 20 70 72 6f 67 72 61 6d 2c 20 74 68   .** program, th
21410 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
21420 20 72 65 66 6c 65 63 74 73 20 74 68 65 20 6e 75   reflects the nu
21430 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d 6f 64  mber of rows mod
21440 69 66 69 65 64 20 62 79 20 74 68 65 20 0a 2a 2a  ified by the .**
21450 20 70 72 65 76 69 6f 75 73 20 49 4e 53 45 52 54   previous INSERT
21460 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
21470 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74  TE statement wit
21480 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 69  hin the same tri
21490 67 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  gger..**.** See 
214a0 61 6c 73 6f 20 74 68 65 20 5b 73 71 6c 69 74 65  also the [sqlite
214b0 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
214c0 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74 68  )] interface, th
214d0 65 0a 2a 2a 20 5b 63 6f 75 6e 74 5f 63 68 61 6e  e.** [count_chan
214e0 67 65 73 20 70 72 61 67 6d 61 5d 2c 20 61 6e 64  ges pragma], and
214f0 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20   the [changes() 
21500 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a  SQL function]..*
21510 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61  *.** If a separa
21520 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65 73 20  te thread makes 
21530 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65 20 73  changes on the s
21540 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ame database con
21550 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65  nection.** while
21560 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65   [sqlite3_change
21570 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67 20  s()] is running 
21580 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 72  then the value r
21590 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20 75 6e  eturned.** is un
215a0 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20  predictable and 
215b0 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 0a  not meaningful..
215c0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
215d0 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  t sqlite3_change
215e0 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a  s(sqlite3*);../*
215f0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54 6f  .** CAPI3REF: To
21600 74 61 6c 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f  tal Number Of Ro
21610 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d  ws Modified.** M
21620 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
21630 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74  *.** ^This funct
21640 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
21650 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20  total number of 
21660 72 6f 77 73 20 69 6e 73 65 72 74 65 64 2c 20 6d  rows inserted, m
21670 6f 64 69 66 69 65 64 20 6f 72 0a 2a 2a 20 64 65  odified or.** de
21680 6c 65 74 65 64 20 62 79 20 61 6c 6c 20 5b 49 4e  leted by all [IN
21690 53 45 52 54 5d 2c 20 5b 55 50 44 41 54 45 5d 20  SERT], [UPDATE] 
216a0 6f 72 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74  or [DELETE] stat
216b0 65 6d 65 6e 74 73 20 63 6f 6d 70 6c 65 74 65 64  ements completed
216c0 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 64 61  .** since the da
216d0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
216e0 6e 20 77 61 73 20 6f 70 65 6e 65 64 2c 20 69 6e  n was opened, in
216f0 63 6c 75 64 69 6e 67 20 74 68 6f 73 65 20 65 78  cluding those ex
21700 65 63 75 74 65 64 20 61 73 0a 2a 2a 20 70 61 72  ecuted as.** par
21710 74 20 6f 66 20 74 72 69 67 67 65 72 20 70 72 6f  t of trigger pro
21720 67 72 61 6d 73 2e 20 5e 45 78 65 63 75 74 69 6e  grams. ^Executin
21730 67 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70 65  g any other type
21740 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   of SQL statemen
21750 74 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 61 66  t.** does not af
21760 66 65 63 74 20 74 68 65 20 76 61 6c 75 65 20 72  fect the value r
21770 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
21780 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
21790 28 29 2e 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61 6e  ()..** .** ^Chan
217a0 67 65 73 20 6d 61 64 65 20 61 73 20 70 61 72 74  ges made as part
217b0 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79   of [foreign key
217c0 20 61 63 74 69 6f 6e 73 5d 20 61 72 65 20 69 6e   actions] are in
217d0 63 6c 75 64 65 64 20 69 6e 20 74 68 65 0a 2a 2a  cluded in the.**
217e0 20 63 6f 75 6e 74 2c 20 62 75 74 20 74 68 6f 73   count, but thos
217f0 65 20 6d 61 64 65 20 61 73 20 70 61 72 74 20 6f  e made as part o
21800 66 20 52 45 50 4c 41 43 45 20 63 6f 6e 73 74 72  f REPLACE constr
21810 61 69 6e 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20  aint resolution 
21820 61 72 65 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68 61  are.** not. ^Cha
21830 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77 20 74  nges to a view t
21840 68 61 74 20 61 72 65 20 69 6e 74 65 72 63 65 70  hat are intercep
21850 74 65 64 20 62 79 20 49 4e 53 54 45 41 44 20 4f  ted by INSTEAD O
21860 46 20 74 72 69 67 67 65 72 73 20 0a 2a 2a 20 61  F triggers .** a
21870 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a  re not counted..
21880 2a 2a 20 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 20  ** .** See also 
21890 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61  the [sqlite3_cha
218a0 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63  nges()] interfac
218b0 65 2c 20 74 68 65 0a 2a 2a 20 5b 63 6f 75 6e 74  e, the.** [count
218c0 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d  _changes pragma]
218d0 2c 20 61 6e 64 20 74 68 65 20 5b 74 6f 74 61 6c  , and the [total
218e0 5f 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66  _changes() SQL f
218f0 75 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20  unction]..**.** 
21900 49 66 20 61 20 73 65 70 61 72 61 74 65 20 74 68  If a separate th
21910 72 65 61 64 20 6d 61 6b 65 73 20 63 68 61 6e 67  read makes chang
21920 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64  es on the same d
21930 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
21940 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b 73 71 6c  on.** while [sql
21950 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
21960 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67  es()] is running
21970 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 0a   then the value.
21980 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 73 20 75  ** returned is u
21990 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64  npredictable and
219a0 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e   not meaningful.
219b0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
219c0 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  nt sqlite3_total
219d0 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65 33  _changes(sqlite3
219e0 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
219f0 52 45 46 3a 20 49 6e 74 65 72 72 75 70 74 20 41  REF: Interrupt A
21a00 20 4c 6f 6e 67 2d 52 75 6e 6e 69 6e 67 20 51 75   Long-Running Qu
21a10 65 72 79 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ery.** METHOD: s
21a20 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
21a30 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 75 73  is function caus
21a40 65 73 20 61 6e 79 20 70 65 6e 64 69 6e 67 20 64  es any pending d
21a50 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69 6f  atabase operatio
21a60 6e 20 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a 2a  n to abort and.*
21a70 2a 20 72 65 74 75 72 6e 20 61 74 20 69 74 73 20  * return at its 
21a80 65 61 72 6c 69 65 73 74 20 6f 70 70 6f 72 74 75  earliest opportu
21a90 6e 69 74 79 2e 20 54 68 69 73 20 72 6f 75 74 69  nity. This routi
21aa0 6e 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79 0a  ne is typically.
21ab0 2a 2a 20 63 61 6c 6c 65 64 20 69 6e 20 72 65 73  ** called in res
21ac0 70 6f 6e 73 65 20 74 6f 20 61 20 75 73 65 72 20  ponse to a user 
21ad0 61 63 74 69 6f 6e 20 73 75 63 68 20 61 73 20 70  action such as p
21ae0 72 65 73 73 69 6e 67 20 22 43 61 6e 63 65 6c 22  ressing "Cancel"
21af0 0a 2a 2a 20 6f 72 20 43 74 72 6c 2d 43 20 77 68  .** or Ctrl-C wh
21b00 65 72 65 20 74 68 65 20 75 73 65 72 20 77 61 6e  ere the user wan
21b10 74 73 20 61 20 6c 6f 6e 67 20 71 75 65 72 79 20  ts a long query 
21b20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 68 61 6c  operation to hal
21b30 74 0a 2a 2a 20 69 6d 6d 65 64 69 61 74 65 6c 79  t.** immediately
21b40 2e 0a 2a 2a 0a 2a 2a 20 5e 49 74 20 69 73 20 73  ..**.** ^It is s
21b50 61 66 65 20 74 6f 20 63 61 6c 6c 20 74 68 69 73  afe to call this
21b60 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61 20   routine from a 
21b70 74 68 72 65 61 64 20 64 69 66 66 65 72 65 6e 74  thread different
21b80 20 66 72 6f 6d 20 74 68 65 0a 2a 2a 20 74 68 72   from the.** thr
21b90 65 61 64 20 74 68 61 74 20 69 73 20 63 75 72 72  ead that is curr
21ba0 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 74 68  ently running th
21bb0 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61  e database opera
21bc0 74 69 6f 6e 2e 20 20 42 75 74 20 69 74 0a 2a 2a  tion.  But it.**
21bd0 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20   is not safe to 
21be0 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69 6e  call this routin
21bf0 65 20 77 69 74 68 20 61 20 5b 64 61 74 61 62 61  e with a [databa
21c00 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74  se connection] t
21c10 68 61 74 0a 2a 2a 20 69 73 20 63 6c 6f 73 65 64  hat.** is closed
21c20 20 6f 72 20 6d 69 67 68 74 20 63 6c 6f 73 65 20   or might close 
21c30 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 69  before sqlite3_i
21c40 6e 74 65 72 72 75 70 74 28 29 20 72 65 74 75 72  nterrupt() retur
21c50 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e  ns..**.** ^If an
21c60 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 69   SQL operation i
21c70 73 20 76 65 72 79 20 6e 65 61 72 6c 79 20 66 69  s very nearly fi
21c80 6e 69 73 68 65 64 20 61 74 20 74 68 65 20 74 69  nished at the ti
21c90 6d 65 20 77 68 65 6e 0a 2a 2a 20 73 71 6c 69 74  me when.** sqlit
21ca0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20 69  e3_interrupt() i
21cb0 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20 69  s called, then i
21cc0 74 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76 65  t might not have
21cd0 20 61 6e 20 6f 70 70 6f 72 74 75 6e 69 74 79 0a   an opportunity.
21ce0 2a 2a 20 74 6f 20 62 65 20 69 6e 74 65 72 72 75  ** to be interru
21cf0 70 74 65 64 20 61 6e 64 20 6d 69 67 68 74 20 63  pted and might c
21d00 6f 6e 74 69 6e 75 65 20 74 6f 20 63 6f 6d 70 6c  ontinue to compl
21d10 65 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41 6e  etion..**.** ^An
21d20 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 74   SQL operation t
21d30 68 61 74 20 69 73 20 69 6e 74 65 72 72 75 70 74  hat is interrupt
21d40 65 64 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b  ed will return [
21d50 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50 54  SQLITE_INTERRUPT
21d60 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 69 6e  ]..** ^If the in
21d70 74 65 72 72 75 70 74 65 64 20 53 51 4c 20 6f 70  terrupted SQL op
21d80 65 72 61 74 69 6f 6e 20 69 73 20 61 6e 20 49 4e  eration is an IN
21d90 53 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f 72  SERT, UPDATE, or
21da0 20 44 45 4c 45 54 45 0a 2a 2a 20 74 68 61 74 20   DELETE.** that 
21db0 69 73 20 69 6e 73 69 64 65 20 61 6e 20 65 78 70  is inside an exp
21dc0 6c 69 63 69 74 20 74 72 61 6e 73 61 63 74 69 6f  licit transactio
21dd0 6e 2c 20 74 68 65 6e 20 74 68 65 20 65 6e 74 69  n, then the enti
21de0 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 2a  re transaction.*
21df0 2a 20 77 69 6c 6c 20 62 65 20 72 6f 6c 6c 65 64  * will be rolled
21e00 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63 61   back automatica
21e10 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  lly..**.** ^The 
21e20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
21e30 74 28 44 29 20 63 61 6c 6c 20 69 73 20 69 6e 20  t(D) call is in 
21e40 65 66 66 65 63 74 20 75 6e 74 69 6c 20 61 6c 6c  effect until all
21e50 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69   currently runni
21e60 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d  ng.** SQL statem
21e70 65 6e 74 73 20 6f 6e 20 5b 64 61 74 61 62 61 73  ents on [databas
21e80 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20  e connection] D 
21e90 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 41 6e 79 20  complete.  ^Any 
21ea0 6e 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  new SQL statemen
21eb0 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73  ts.** that are s
21ec0 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68 65  tarted after the
21ed0 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
21ee0 70 74 28 29 20 63 61 6c 6c 20 61 6e 64 20 62 65  pt() call and be
21ef0 66 6f 72 65 20 74 68 65 20 0a 2a 2a 20 72 75 6e  fore the .** run
21f00 6e 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 73 20  ning statements 
21f10 72 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65  reaches zero are
21f20 20 69 6e 74 65 72 72 75 70 74 65 64 20 61 73 20   interrupted as 
21f30 69 66 20 74 68 65 79 20 68 61 64 20 62 65 65 6e  if they had been
21f40 0a 2a 2a 20 72 75 6e 6e 69 6e 67 20 70 72 69 6f  .** running prio
21f50 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33  r to the sqlite3
21f60 5f 69 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c  _interrupt() cal
21f70 6c 2e 20 20 5e 4e 65 77 20 53 51 4c 20 73 74 61  l.  ^New SQL sta
21f80 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20  tements.** that 
21f90 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74 65  are started afte
21fa0 72 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 73 74  r the running st
21fb0 61 74 65 6d 65 6e 74 20 63 6f 75 6e 74 20 72 65  atement count re
21fc0 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65 0a 2a  aches zero are.*
21fd0 2a 20 6e 6f 74 20 65 66 66 65 63 74 65 64 20 62  * not effected b
21fe0 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  y the sqlite3_in
21ff0 74 65 72 72 75 70 74 28 29 2e 0a 2a 2a 20 5e 41  terrupt()..** ^A
22000 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33   call to sqlite3
22010 5f 69 6e 74 65 72 72 75 70 74 28 44 29 20 74 68  _interrupt(D) th
22020 61 74 20 6f 63 63 75 72 73 20 77 68 65 6e 20 74  at occurs when t
22030 68 65 72 65 20 61 72 65 20 6e 6f 20 72 75 6e 6e  here are no runn
22040 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  ing.** SQL state
22050 6d 65 6e 74 73 20 69 73 20 61 20 6e 6f 2d 6f 70  ments is a no-op
22060 20 61 6e 64 20 68 61 73 20 6e 6f 20 65 66 66 65   and has no effe
22070 63 74 20 6f 6e 20 53 51 4c 20 73 74 61 74 65 6d  ct on SQL statem
22080 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65  ents.** that are
22090 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20 74   started after t
220a0 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  he sqlite3_inter
220b0 72 75 70 74 28 29 20 63 61 6c 6c 20 72 65 74 75  rupt() call retu
220c0 72 6e 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  rns..*/.SQLITE_A
220d0 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  PI void sqlite3_
220e0 69 6e 74 65 72 72 75 70 74 28 73 71 6c 69 74 65  interrupt(sqlite
220f0 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  3*);../*.** CAPI
22100 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65 20  3REF: Determine 
22110 49 66 20 41 6e 20 53 51 4c 20 53 74 61 74 65 6d  If An SQL Statem
22120 65 6e 74 20 49 73 20 43 6f 6d 70 6c 65 74 65 0a  ent Is Complete.
22130 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74  **.** These rout
22140 69 6e 65 73 20 61 72 65 20 75 73 65 66 75 6c 20  ines are useful 
22150 64 75 72 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d 6c  during command-l
22160 69 6e 65 20 69 6e 70 75 74 20 74 6f 20 64 65 74  ine input to det
22170 65 72 6d 69 6e 65 20 69 66 20 74 68 65 0a 2a 2a  ermine if the.**
22180 20 63 75 72 72 65 6e 74 6c 79 20 65 6e 74 65 72   currently enter
22190 65 64 20 74 65 78 74 20 73 65 65 6d 73 20 74 6f  ed text seems to
221a0 20 66 6f 72 6d 20 61 20 63 6f 6d 70 6c 65 74 65   form a complete
221b0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 6f   SQL statement o
221c0 72 0a 2a 2a 20 69 66 20 61 64 64 69 74 69 6f 6e  r.** if addition
221d0 61 6c 20 69 6e 70 75 74 20 69 73 20 6e 65 65 64  al input is need
221e0 65 64 20 62 65 66 6f 72 65 20 73 65 6e 64 69 6e  ed before sendin
221f0 67 20 74 68 65 20 74 65 78 74 20 69 6e 74 6f 0a  g the text into.
22200 2a 2a 20 53 51 4c 69 74 65 20 66 6f 72 20 70 61  ** SQLite for pa
22210 72 73 69 6e 67 2e 20 20 5e 54 68 65 73 65 20 72  rsing.  ^These r
22220 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 31  outines return 1
22230 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73 74   if the input st
22240 72 69 6e 67 0a 2a 2a 20 61 70 70 65 61 72 73 20  ring.** appears 
22250 74 6f 20 62 65 20 61 20 63 6f 6d 70 6c 65 74 65  to be a complete
22260 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20   SQL statement. 
22270 20 5e 41 20 73 74 61 74 65 6d 65 6e 74 20 69 73   ^A statement is
22280 20 6a 75 64 67 65 64 20 74 6f 20 62 65 0a 2a 2a   judged to be.**
22290 20 63 6f 6d 70 6c 65 74 65 20 69 66 20 69 74 20   complete if it 
222a0 65 6e 64 73 20 77 69 74 68 20 61 20 73 65 6d 69  ends with a semi
222b0 63 6f 6c 6f 6e 20 74 6f 6b 65 6e 20 61 6e 64 20  colon token and 
222c0 69 73 20 6e 6f 74 20 61 20 70 72 65 66 69 78 20  is not a prefix 
222d0 6f 66 20 61 0a 2a 2a 20 77 65 6c 6c 2d 66 6f 72  of a.** well-for
222e0 6d 65 64 20 43 52 45 41 54 45 20 54 52 49 47 47  med CREATE TRIGG
222f0 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 5e  ER statement.  ^
22300 53 65 6d 69 63 6f 6c 6f 6e 73 20 74 68 61 74 20  Semicolons that 
22310 61 72 65 20 65 6d 62 65 64 64 65 64 20 77 69 74  are embedded wit
22320 68 69 6e 0a 2a 2a 20 73 74 72 69 6e 67 20 6c 69  hin.** string li
22330 74 65 72 61 6c 73 20 6f 72 20 71 75 6f 74 65 64  terals or quoted
22340 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65   identifier name
22350 73 20 6f 72 20 63 6f 6d 6d 65 6e 74 73 20 61 72  s or comments ar
22360 65 20 6e 6f 74 0a 2a 2a 20 69 6e 64 65 70 65 6e  e not.** indepen
22370 64 65 6e 74 20 74 6f 6b 65 6e 73 20 28 74 68 65  dent tokens (the
22380 79 20 61 72 65 20 70 61 72 74 20 6f 66 20 74 68  y are part of th
22390 65 20 74 6f 6b 65 6e 20 69 6e 20 77 68 69 63 68  e token in which
223a0 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 65 6d 62   they are.** emb
223b0 65 64 64 65 64 29 20 61 6e 64 20 74 68 75 73 20  edded) and thus 
223c0 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20 61 73 20  do not count as 
223d0 61 20 73 74 61 74 65 6d 65 6e 74 20 74 65 72 6d  a statement term
223e0 69 6e 61 74 6f 72 2e 20 20 5e 57 68 69 74 65 73  inator.  ^Whites
223f0 70 61 63 65 0a 2a 2a 20 61 6e 64 20 63 6f 6d 6d  pace.** and comm
22400 65 6e 74 73 20 74 68 61 74 20 66 6f 6c 6c 6f 77  ents that follow
22410 20 74 68 65 20 66 69 6e 61 6c 20 73 65 6d 69 63   the final semic
22420 6f 6c 6f 6e 20 61 72 65 20 69 67 6e 6f 72 65 64  olon are ignored
22430 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72  ..**.** ^These r
22440 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 30  outines return 0
22450 20 69 66 20 74 68 65 20 73 74 61 74 65 6d 65 6e   if the statemen
22460 74 20 69 73 20 69 6e 63 6f 6d 70 6c 65 74 65 2e  t is incomplete.
22470 20 20 5e 49 66 20 61 0a 2a 2a 20 6d 65 6d 6f 72    ^If a.** memor
22480 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69  y allocation fai
22490 6c 73 2c 20 74 68 65 6e 20 53 51 4c 49 54 45 5f  ls, then SQLITE_
224a0 4e 4f 4d 45 4d 20 69 73 20 72 65 74 75 72 6e 65  NOMEM is returne
224b0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20  d..**.** ^These 
224c0 72 6f 75 74 69 6e 65 73 20 64 6f 20 6e 6f 74 20  routines do not 
224d0 70 61 72 73 65 20 74 68 65 20 53 51 4c 20 73 74  parse the SQL st
224e0 61 74 65 6d 65 6e 74 73 20 74 68 75 73 0a 2a 2a  atements thus.**
224f0 20 77 69 6c 6c 20 6e 6f 74 20 64 65 74 65 63 74   will not detect
22500 20 73 79 6e 74 61 63 74 69 63 61 6c 6c 79 20 69   syntactically i
22510 6e 63 6f 72 72 65 63 74 20 53 51 4c 2e 0a 2a 2a  ncorrect SQL..**
22520 0a 2a 2a 20 5e 28 49 66 20 53 51 4c 69 74 65 20  .** ^(If SQLite 
22530 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69 6e 69  has not been ini
22540 74 69 61 6c 69 7a 65 64 20 75 73 69 6e 67 20 5b  tialized using [
22550 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
22560 7a 65 28 29 5d 20 70 72 69 6f 72 20 0a 2a 2a 20  ze()] prior .** 
22570 74 6f 20 69 6e 76 6f 6b 69 6e 67 20 73 71 6c 69  to invoking sqli
22580 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29  te3_complete16()
22590 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 69 6e   then sqlite3_in
225a0 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69 6e  itialize() is in
225b0 76 6f 6b 65 64 0a 2a 2a 20 61 75 74 6f 6d 61 74  voked.** automat
225c0 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69 74 65  ically by sqlite
225d0 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 2e 20  3_complete16(). 
225e0 20 49 66 20 74 68 61 74 20 69 6e 69 74 69 61 6c   If that initial
225f0 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73 2c 0a 2a  ization fails,.*
22600 2a 20 74 68 65 6e 20 74 68 65 20 72 65 74 75 72  * then the retur
22610 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 73 71 6c  n value from sql
22620 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
22630 29 20 77 69 6c 6c 20 62 65 20 6e 6f 6e 2d 7a 65  ) will be non-ze
22640 72 6f 0a 2a 2a 20 72 65 67 61 72 64 6c 65 73 73  ro.** regardless
22650 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
22660 6f 74 20 74 68 65 20 69 6e 70 75 74 20 53 51 4c  ot the input SQL
22670 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e 29 5e 0a   is complete.)^.
22680 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74 20  **.** The input 
22690 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70  to [sqlite3_comp
226a0 6c 65 74 65 28 29 5d 20 6d 75 73 74 20 62 65 20  lete()] must be 
226b0 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65  a zero-terminate
226c0 64 0a 2a 2a 20 55 54 46 2d 38 20 73 74 72 69 6e  d.** UTF-8 strin
226d0 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70  g..**.** The inp
226e0 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ut to [sqlite3_c
226f0 6f 6d 70 6c 65 74 65 31 36 28 29 5d 20 6d 75 73  omplete16()] mus
22700 74 20 62 65 20 61 20 7a 65 72 6f 2d 74 65 72 6d  t be a zero-term
22710 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 31 36  inated.** UTF-16
22720 20 73 74 72 69 6e 67 20 69 6e 20 6e 61 74 69 76   string in nativ
22730 65 20 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a 2f  e byte order..*/
22740 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
22750 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
22760 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c  (const char *sql
22770 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
22780 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  t sqlite3_comple
22790 74 65 31 36 28 63 6f 6e 73 74 20 76 6f 69 64 20  te16(const void 
227a0 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  *sql);../*.** CA
227b0 50 49 33 52 45 46 3a 20 52 65 67 69 73 74 65 72  PI3REF: Register
227c0 20 41 20 43 61 6c 6c 62 61 63 6b 20 54 6f 20 48   A Callback To H
227d0 61 6e 64 6c 65 20 53 51 4c 49 54 45 5f 42 55 53  andle SQLITE_BUS
227e0 59 20 45 72 72 6f 72 73 0a 2a 2a 20 4b 45 59 57  Y Errors.** KEYW
227f0 4f 52 44 53 3a 20 7b 62 75 73 79 2d 68 61 6e 64  ORDS: {busy-hand
22800 6c 65 72 20 63 61 6c 6c 62 61 63 6b 7d 20 7b 62  ler callback} {b
22810 75 73 79 20 68 61 6e 64 6c 65 72 7d 0a 2a 2a 20  usy handler}.** 
22820 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
22830 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
22840 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28  e3_busy_handler(
22850 44 2c 58 2c 50 29 20 72 6f 75 74 69 6e 65 20 73  D,X,P) routine s
22860 65 74 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 66  ets a callback f
22870 75 6e 63 74 69 6f 6e 20 58 0a 2a 2a 20 74 68 61  unction X.** tha
22880 74 20 6d 69 67 68 74 20 62 65 20 69 6e 76 6f 6b  t might be invok
22890 65 64 20 77 69 74 68 20 61 72 67 75 6d 65 6e 74  ed with argument
228a0 20 50 20 77 68 65 6e 65 76 65 72 0a 2a 2a 20 61   P whenever.** a
228b0 6e 20 61 74 74 65 6d 70 74 20 69 73 20 6d 61 64  n attempt is mad
228c0 65 20 74 6f 20 61 63 63 65 73 73 20 61 20 64 61  e to access a da
228d0 74 61 62 61 73 65 20 74 61 62 6c 65 20 61 73 73  tabase table ass
228e0 6f 63 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20  ociated with.** 
228f0 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
22900 74 69 6f 6e 5d 20 44 20 77 68 65 6e 20 61 6e 6f  tion] D when ano
22910 74 68 65 72 20 74 68 72 65 61 64 0a 2a 2a 20 6f  ther thread.** o
22920 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 74 68  r process has th
22930 65 20 74 61 62 6c 65 20 6c 6f 63 6b 65 64 2e 0a  e table locked..
22940 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62  ** The sqlite3_b
22950 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 20 69 6e  usy_handler() in
22960 74 65 72 66 61 63 65 20 69 73 20 75 73 65 64 20  terface is used 
22970 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 0a 2a 2a 20  to implement.** 
22980 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69  [sqlite3_busy_ti
22990 6d 65 6f 75 74 28 29 5d 20 61 6e 64 20 5b 50 52  meout()] and [PR
229a0 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75  AGMA busy_timeou
229b0 74 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  t]..**.** ^If th
229c0 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20  e busy callback 
229d0 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 5b 53  is NULL, then [S
229e0 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a 2a 20 69  QLITE_BUSY].** i
229f0 73 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65 64  s returned immed
22a00 69 61 74 65 6c 79 20 75 70 6f 6e 20 65 6e 63 6f  iately upon enco
22a10 75 6e 74 65 72 69 6e 67 20 74 68 65 20 6c 6f 63  untering the loc
22a20 6b 2e 20 20 5e 49 66 20 74 68 65 20 62 75 73 79  k.  ^If the busy
22a30 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20   callback.** is 
22a40 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 74  not NULL, then t
22a50 68 65 20 63 61 6c 6c 62 61 63 6b 20 6d 69 67 68  he callback migh
22a60 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74  t be invoked wit
22a70 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e  h two arguments.
22a80 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73  .**.** ^The firs
22a90 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  t argument to th
22aa0 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69  e busy handler i
22ab0 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
22ac0 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72 20 77 68  void* pointer wh
22ad0 69 63 68 0a 2a 2a 20 69 73 20 74 68 65 20 74 68  ich.** is the th
22ae0 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ird argument to 
22af0 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e  sqlite3_busy_han
22b00 64 6c 65 72 28 29 2e 20 20 5e 54 68 65 20 73 65  dler().  ^The se
22b10 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  cond argument to
22b20 0a 2a 2a 20 74 68 65 20 62 75 73 79 20 68 61 6e  .** the busy han
22b30 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73  dler callback is
22b40 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74   the number of t
22b50 69 6d 65 73 20 74 68 61 74 20 74 68 65 20 62 75  imes that the bu
22b60 73 79 20 68 61 6e 64 6c 65 72 20 68 61 73 0a 2a  sy handler has.*
22b70 2a 20 62 65 65 6e 20 69 6e 76 6f 6b 65 64 20 70  * been invoked p
22b80 72 65 76 69 6f 75 73 6c 79 20 66 6f 72 20 74 68  reviously for th
22b90 65 20 73 61 6d 65 20 6c 6f 63 6b 69 6e 67 20 65  e same locking e
22ba0 76 65 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a 2a  vent.  ^If the.*
22bb0 2a 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20  * busy callback 
22bc0 72 65 74 75 72 6e 73 20 30 2c 20 74 68 65 6e 20  returns 0, then 
22bd0 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 74  no additional at
22be0 74 65 6d 70 74 73 20 61 72 65 20 6d 61 64 65 20  tempts are made 
22bf0 74 6f 0a 2a 2a 20 61 63 63 65 73 73 20 74 68 65  to.** access the
22c00 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 5b 53   database and [S
22c10 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 73 20 72  QLITE_BUSY] is r
22c20 65 74 75 72 6e 65 64 0a 2a 2a 20 74 6f 20 74 68  eturned.** to th
22c30 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a 2a  e application..*
22c40 2a 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61  * ^If the callba
22c50 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  ck returns non-z
22c60 65 72 6f 2c 20 74 68 65 6e 20 61 6e 6f 74 68 65  ero, then anothe
22c70 72 20 61 74 74 65 6d 70 74 0a 2a 2a 20 69 73 20  r attempt.** is 
22c80 6d 61 64 65 20 74 6f 20 61 63 63 65 73 73 20 74  made to access t
22c90 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20  he database and 
22ca0 74 68 65 20 63 79 63 6c 65 20 72 65 70 65 61 74  the cycle repeat
22cb0 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65  s..**.** The pre
22cc0 73 65 6e 63 65 20 6f 66 20 61 20 62 75 73 79 20  sence of a busy 
22cd0 68 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f 74  handler does not
22ce0 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20   guarantee that 
22cf0 69 74 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b  it will be invok
22d00 65 64 0a 2a 2a 20 77 68 65 6e 20 74 68 65 72 65  ed.** when there
22d10 20 69 73 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e 74   is lock content
22d20 69 6f 6e 2e 20 5e 49 66 20 53 51 4c 69 74 65 20  ion. ^If SQLite 
22d30 64 65 74 65 72 6d 69 6e 65 73 20 74 68 61 74 20  determines that 
22d40 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 62 75 73  invoking the bus
22d50 79 0a 2a 2a 20 68 61 6e 64 6c 65 72 20 63 6f 75  y.** handler cou
22d60 6c 64 20 72 65 73 75 6c 74 20 69 6e 20 61 20 64  ld result in a d
22d70 65 61 64 6c 6f 63 6b 2c 20 69 74 20 77 69 6c 6c  eadlock, it will
22d80 20 67 6f 20 61 68 65 61 64 20 61 6e 64 20 72 65   go ahead and re
22d90 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53  turn [SQLITE_BUS
22da0 59 5d 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70 70  Y].** to the app
22db0 6c 69 63 61 74 69 6f 6e 20 69 6e 73 74 65 61 64  lication instead
22dc0 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65   of invoking the
22dd0 20 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c 65   .** busy handle
22de0 72 2e 0a 2a 2a 20 43 6f 6e 73 69 64 65 72 20 61  r..** Consider a
22df0 20 73 63 65 6e 61 72 69 6f 20 77 68 65 72 65 20   scenario where 
22e00 6f 6e 65 20 70 72 6f 63 65 73 73 20 69 73 20 68  one process is h
22e10 6f 6c 64 69 6e 67 20 61 20 72 65 61 64 20 6c 6f  olding a read lo
22e20 63 6b 20 74 68 61 74 0a 2a 2a 20 69 74 20 69 73  ck that.** it is
22e30 20 74 72 79 69 6e 67 20 74 6f 20 70 72 6f 6d 6f   trying to promo
22e40 74 65 20 74 6f 20 61 20 72 65 73 65 72 76 65 64  te to a reserved
22e50 20 6c 6f 63 6b 20 61 6e 64 0a 2a 2a 20 61 20 73   lock and.** a s
22e60 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 69 73  econd process is
22e70 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 73 65 72   holding a reser
22e80 76 65 64 20 6c 6f 63 6b 20 74 68 61 74 20 69 74  ved lock that it
22e90 20 69 73 20 74 72 79 69 6e 67 0a 2a 2a 20 74 6f   is trying.** to
22ea0 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 6e 20 65   promote to an e
22eb0 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 2e 20 20  xclusive lock.  
22ec0 54 68 65 20 66 69 72 73 74 20 70 72 6f 63 65 73  The first proces
22ed0 73 20 63 61 6e 6e 6f 74 20 70 72 6f 63 65 65 64  s cannot proceed
22ee0 0a 2a 2a 20 62 65 63 61 75 73 65 20 69 74 20 69  .** because it i
22ef0 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65  s blocked by the
22f00 20 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 65 20   second and the 
22f10 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 63  second process c
22f20 61 6e 6e 6f 74 0a 2a 2a 20 70 72 6f 63 65 65 64  annot.** proceed
22f30 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20 62   because it is b
22f40 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20 66 69  locked by the fi
22f50 72 73 74 2e 20 20 49 66 20 62 6f 74 68 20 70 72  rst.  If both pr
22f60 6f 63 65 73 73 65 73 0a 2a 2a 20 69 6e 76 6f 6b  ocesses.** invok
22f70 65 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c  e the busy handl
22f80 65 72 73 2c 20 6e 65 69 74 68 65 72 20 77 69 6c  ers, neither wil
22f90 6c 20 6d 61 6b 65 20 61 6e 79 20 70 72 6f 67 72  l make any progr
22fa0 65 73 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c  ess.  Therefore,
22fb0 0a 2a 2a 20 53 51 4c 69 74 65 20 72 65 74 75 72  .** SQLite retur
22fc0 6e 73 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  ns [SQLITE_BUSY]
22fd0 20 66 6f 72 20 74 68 65 20 66 69 72 73 74 20 70   for the first p
22fe0 72 6f 63 65 73 73 2c 20 68 6f 70 69 6e 67 20 74  rocess, hoping t
22ff0 68 61 74 20 74 68 69 73 0a 2a 2a 20 77 69 6c 6c  hat this.** will
23000 20 69 6e 64 75 63 65 20 74 68 65 20 66 69 72 73   induce the firs
23010 74 20 70 72 6f 63 65 73 73 20 74 6f 20 72 65 6c  t process to rel
23020 65 61 73 65 20 69 74 73 20 72 65 61 64 20 6c 6f  ease its read lo
23030 63 6b 20 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a 20  ck and allow.** 
23040 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63 65  the second proce
23050 73 73 20 74 6f 20 70 72 6f 63 65 65 64 2e 0a 2a  ss to proceed..*
23060 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c  *.** ^The defaul
23070 74 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20  t busy callback 
23080 69 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e  is NULL..**.** ^
23090 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79 20  (There can only 
230a0 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75 73 79  be a single busy
230b0 20 68 61 6e 64 6c 65 72 20 64 65 66 69 6e 65 64   handler defined
230c0 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 5b 64 61   for each.** [da
230d0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
230e0 6e 5d 2e 20 20 53 65 74 74 69 6e 67 20 61 20 6e  n].  Setting a n
230f0 65 77 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  ew busy handler 
23100 63 6c 65 61 72 73 20 61 6e 79 0a 2a 2a 20 70 72  clears any.** pr
23110 65 76 69 6f 75 73 6c 79 20 73 65 74 20 68 61 6e  eviously set han
23120 64 6c 65 72 2e 29 5e 20 20 5e 4e 6f 74 65 20 74  dler.)^  ^Note t
23130 68 61 74 20 63 61 6c 6c 69 6e 67 20 5b 73 71 6c  hat calling [sql
23140 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75  ite3_busy_timeou
23150 74 28 29 5d 0a 2a 2a 20 6f 72 20 65 76 61 6c 75  t()].** or evalu
23160 61 74 69 6e 67 20 5b 50 52 41 47 4d 41 20 62 75  ating [PRAGMA bu
23170 73 79 5f 74 69 6d 65 6f 75 74 3d 4e 5d 20 77 69  sy_timeout=N] wi
23180 6c 6c 20 63 68 61 6e 67 65 20 74 68 65 0a 2a 2a  ll change the.**
23190 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 61 6e   busy handler an
231a0 64 20 74 68 75 73 20 63 6c 65 61 72 20 61 6e 79  d thus clear any
231b0 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20   previously set 
231c0 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a  busy handler..**
231d0 0a 2a 2a 20 54 68 65 20 62 75 73 79 20 63 61 6c  .** The busy cal
231e0 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 6e 6f 74  lback should not
231f0 20 74 61 6b 65 20 61 6e 79 20 61 63 74 69 6f 6e   take any action
23200 73 20 77 68 69 63 68 20 6d 6f 64 69 66 79 20 74  s which modify t
23210 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63  he.** database c
23220 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69  onnection that i
23230 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73 79 20  nvoked the busy 
23240 68 61 6e 64 6c 65 72 2e 20 20 49 6e 20 6f 74 68  handler.  In oth
23250 65 72 20 77 6f 72 64 73 2c 0a 2a 2a 20 74 68 65  er words,.** the
23260 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73   busy handler is
23270 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e 20   not reentrant. 
23280 20 41 6e 79 20 73 75 63 68 20 61 63 74 69 6f 6e   Any such action
23290 73 0a 2a 2a 20 72 65 73 75 6c 74 20 69 6e 20 75  s.** result in u
232a0 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f  ndefined behavio
232b0 72 2e 0a 2a 2a 20 0a 2a 2a 20 41 20 62 75 73 79  r..** .** A busy
232c0 20 68 61 6e 64 6c 65 72 20 6d 75 73 74 20 6e 6f   handler must no
232d0 74 20 63 6c 6f 73 65 20 74 68 65 20 64 61 74 61  t close the data
232e0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a  base connection.
232f0 2a 2a 20 6f 72 20 5b 70 72 65 70 61 72 65 64 20  ** or [prepared 
23300 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20  statement] that 
23310 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73 79  invoked the busy
23320 20 68 61 6e 64 6c 65 72 2e 0a 2a 2f 0a 53 51 4c   handler..*/.SQL
23330 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
23340 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
23350 28 73 71 6c 69 74 65 33 2a 2c 69 6e 74 28 2a 29  (sqlite3*,int(*)
23360 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 76 6f 69 64  (void*,int),void
23370 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
23380 52 45 46 3a 20 53 65 74 20 41 20 42 75 73 79 20  REF: Set A Busy 
23390 54 69 6d 65 6f 75 74 0a 2a 2a 20 4d 45 54 48 4f  Timeout.** METHO
233a0 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  D: sqlite3.**.**
233b0 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65 20 73   ^This routine s
233c0 65 74 73 20 61 20 5b 73 71 6c 69 74 65 33 5f 62  ets a [sqlite3_b
233d0 75 73 79 5f 68 61 6e 64 6c 65 72 20 7c 20 62 75  usy_handler | bu
233e0 73 79 20 68 61 6e 64 6c 65 72 5d 20 74 68 61 74  sy handler] that
233f0 20 73 6c 65 65 70 73 0a 2a 2a 20 66 6f 72 20 61   sleeps.** for a
23400 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75 6e   specified amoun
23410 74 20 6f 66 20 74 69 6d 65 20 77 68 65 6e 20 61  t of time when a
23420 20 74 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65 64   table is locked
23430 2e 20 20 5e 54 68 65 20 68 61 6e 64 6c 65 72 0a  .  ^The handler.
23440 2a 2a 20 77 69 6c 6c 20 73 6c 65 65 70 20 6d 75  ** will sleep mu
23450 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 6e 74  ltiple times unt
23460 69 6c 20 61 74 20 6c 65 61 73 74 20 22 6d 73 22  il at least "ms"
23470 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f 66   milliseconds of
23480 20 73 6c 65 65 70 69 6e 67 0a 2a 2a 20 68 61 76   sleeping.** hav
23490 65 20 61 63 63 75 6d 75 6c 61 74 65 64 2e 20 20  e accumulated.  
234a0 5e 41 66 74 65 72 20 61 74 20 6c 65 61 73 74 20  ^After at least 
234b0 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  "ms" millisecond
234c0 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 2c 0a 2a  s of sleeping,.*
234d0 2a 20 74 68 65 20 68 61 6e 64 6c 65 72 20 72 65  * the handler re
234e0 74 75 72 6e 73 20 30 20 77 68 69 63 68 20 63 61  turns 0 which ca
234f0 75 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 73 74  uses [sqlite3_st
23500 65 70 28 29 5d 20 74 6f 20 72 65 74 75 72 6e 0a  ep()] to return.
23510 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  ** [SQLITE_BUSY]
23520 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67  ..**.** ^Calling
23530 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69   this routine wi
23540 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6c  th an argument l
23550 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61  ess than or equa
23560 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74 75 72  l to zero.** tur
23570 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73 79 20  ns off all busy 
23580 68 61 6e 64 6c 65 72 73 2e 0a 2a 2a 0a 2a 2a 20  handlers..**.** 
23590 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79  ^(There can only
235a0 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75 73   be a single bus
235b0 79 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 20  y handler for a 
235c0 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b 64  particular.** [d
235d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
235e0 6f 6e 5d 20 61 74 20 61 6e 79 20 67 69 76 65 6e  on] at any given
235f0 20 6d 6f 6d 65 6e 74 2e 20 20 49 66 20 61 6e 6f   moment.  If ano
23600 74 68 65 72 20 62 75 73 79 20 68 61 6e 64 6c 65  ther busy handle
23610 72 0a 2a 2a 20 77 61 73 20 64 65 66 69 6e 65 64  r.** was defined
23620 20 20 28 75 73 69 6e 67 20 5b 73 71 6c 69 74 65    (using [sqlite
23630 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29  3_busy_handler()
23640 5d 29 20 70 72 69 6f 72 20 74 6f 20 63 61 6c 6c  ]) prior to call
23650 69 6e 67 0a 2a 2a 20 74 68 69 73 20 72 6f 75 74  ing.** this rout
23660 69 6e 65 2c 20 74 68 61 74 20 6f 74 68 65 72 20  ine, that other 
23670 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73 20  busy handler is 
23680 63 6c 65 61 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a  cleared.)^.**.**
23690 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 50 52 41   See also:  [PRA
236a0 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74  GMA busy_timeout
236b0 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ].*/.SQLITE_API 
236c0 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73 79  int sqlite3_busy
236d0 5f 74 69 6d 65 6f 75 74 28 73 71 6c 69 74 65 33  _timeout(sqlite3
236e0 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a 0a  *, int ms);../*.
236f0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e  ** CAPI3REF: Con
23700 76 65 6e 69 65 6e 63 65 20 52 6f 75 74 69 6e 65  venience Routine
23710 73 20 46 6f 72 20 52 75 6e 6e 69 6e 67 20 51 75  s For Running Qu
23720 65 72 69 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a  eries.** METHOD:
23730 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54   sqlite3.**.** T
23740 68 69 73 20 69 73 20 61 20 6c 65 67 61 63 79 20  his is a legacy 
23750 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 69  interface that i
23760 73 20 70 72 65 73 65 72 76 65 64 20 66 6f 72 20  s preserved for 
23770 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74  backwards compat
23780 69 62 69 6c 69 74 79 2e 0a 2a 2a 20 55 73 65 20  ibility..** Use 
23790 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66 61 63  of this interfac
237a0 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65  e is not recomme
237b0 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 44 65 66 69  nded..**.** Defi
237c0 6e 69 74 69 6f 6e 3a 20 41 20 3c 62 3e 72 65 73  nition: A <b>res
237d0 75 6c 74 20 74 61 62 6c 65 3c 2f 62 3e 20 69 73  ult table</b> is
237e0 20 6d 65 6d 6f 72 79 20 64 61 74 61 20 73 74 72   memory data str
237f0 75 63 74 75 72 65 20 63 72 65 61 74 65 64 20 62  ucture created b
23800 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65  y the.** [sqlite
23810 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20 69  3_get_table()] i
23820 6e 74 65 72 66 61 63 65 2e 20 20 41 20 72 65 73  nterface.  A res
23830 75 6c 74 20 74 61 62 6c 65 20 72 65 63 6f 72 64  ult table record
23840 73 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 6c 65 74  s the.** complet
23850 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 73 20  e query results 
23860 66 72 6f 6d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  from one or more
23870 20 71 75 65 72 69 65 73 2e 0a 2a 2a 0a 2a 2a 20   queries..**.** 
23880 54 68 65 20 74 61 62 6c 65 20 63 6f 6e 63 65 70  The table concep
23890 74 75 61 6c 6c 79 20 68 61 73 20 61 20 6e 75 6d  tually has a num
238a0 62 65 72 20 6f 66 20 72 6f 77 73 20 61 6e 64 20  ber of rows and 
238b0 63 6f 6c 75 6d 6e 73 2e 20 20 42 75 74 0a 2a 2a  columns.  But.**
238c0 20 74 68 65 73 65 20 6e 75 6d 62 65 72 73 20 61   these numbers a
238d0 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74  re not part of t
238e0 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20  he result table 
238f0 69 74 73 65 6c 66 2e 20 20 54 68 65 73 65 0a 2a  itself.  These.*
23900 2a 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6f 62  * numbers are ob
23910 74 61 69 6e 65 64 20 73 65 70 61 72 61 74 65 6c  tained separatel
23920 79 2e 20 20 4c 65 74 20 4e 20 62 65 20 74 68 65  y.  Let N be the
23930 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 0a   number of rows.
23940 2a 2a 20 61 6e 64 20 4d 20 62 65 20 74 68 65 20  ** and M be the 
23950 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
23960 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75 6c  s..**.** A resul
23970 74 20 74 61 62 6c 65 20 69 73 20 61 6e 20 61 72  t table is an ar
23980 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73 20  ray of pointers 
23990 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  to zero-terminat
239a0 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67 73  ed UTF-8 strings
239b0 2e 0a 2a 2a 20 54 68 65 72 65 20 61 72 65 20 28  ..** There are (
239c0 4e 2b 31 29 2a 4d 20 65 6c 65 6d 65 6e 74 73 20  N+1)*M elements 
239d0 69 6e 20 74 68 65 20 61 72 72 61 79 2e 20 20 54  in the array.  T
239e0 68 65 20 66 69 72 73 74 20 4d 20 70 6f 69 6e 74  he first M point
239f0 65 72 73 20 70 6f 69 6e 74 0a 2a 2a 20 74 6f 20  ers point.** to 
23a00 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20  zero-terminated 
23a10 73 74 72 69 6e 67 73 20 74 68 61 74 20 20 63 6f  strings that  co
23a20 6e 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 73 20  ntain the names 
23a30 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e 0a  of the columns..
23a40 2a 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e 67  ** The remaining
23a50 20 65 6e 74 72 69 65 73 20 61 6c 6c 20 70 6f 69   entries all poi
23a60 6e 74 20 74 6f 20 71 75 65 72 79 20 72 65 73 75  nt to query resu
23a70 6c 74 73 2e 20 20 4e 55 4c 4c 20 76 61 6c 75 65  lts.  NULL value
23a80 73 20 72 65 73 75 6c 74 0a 2a 2a 20 69 6e 20 4e  s result.** in N
23a90 55 4c 4c 20 70 6f 69 6e 74 65 72 73 2e 20 20 41  ULL pointers.  A
23aa0 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73 20  ll other values 
23ab0 61 72 65 20 69 6e 20 74 68 65 69 72 20 55 54 46  are in their UTF
23ac0 2d 38 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  -8 zero-terminat
23ad0 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 72 65 70  ed.** string rep
23ae0 72 65 73 65 6e 74 61 74 69 6f 6e 20 61 73 20 72  resentation as r
23af0 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c 69  eturned by [sqli
23b00 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28  te3_column_text(
23b10 29 5d 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75  )]..**.** A resu
23b20 6c 74 20 74 61 62 6c 65 20 6d 69 67 68 74 20 63  lt table might c
23b30 6f 6e 73 69 73 74 20 6f 66 20 6f 6e 65 20 6f 72  onsist of one or
23b40 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 20 61 6c 6c   more memory all
23b50 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a 20 49 74 20  ocations..** It 
23b60 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20 70  is not safe to p
23b70 61 73 73 20 61 20 72 65 73 75 6c 74 20 74 61 62  ass a result tab
23b80 6c 65 20 64 69 72 65 63 74 6c 79 20 74 6f 20 5b  le directly to [
23b90 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e  sqlite3_free()].
23ba0 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61 62  .** A result tab
23bb0 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 64 65 61  le should be dea
23bc0 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20 5b  llocated using [
23bd0 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
23be0 6c 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 28 41  le()]..**.** ^(A
23bf0 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20  s an example of 
23c00 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
23c10 20 66 6f 72 6d 61 74 2c 20 73 75 70 70 6f 73 65   format, suppose
23c20 20 61 20 71 75 65 72 79 20 72 65 73 75 6c 74 0a   a query result.
23c30 2a 2a 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77 73  ** is as follows
23c40 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75  :.**.** <blockqu
23c50 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20  ote><pre>.**    
23c60 20 20 20 20 4e 61 6d 65 20 20 20 20 20 20 20 20      Name        
23c70 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20 20 20 20  | Age.**        
23c80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
23c90 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20 20  -------.**      
23ca0 20 20 41 6c 69 63 65 20 20 20 20 20 20 20 7c 20    Alice       | 
23cb0 34 33 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f 62  43.**        Bob
23cc0 20 20 20 20 20 20 20 20 20 7c 20 32 38 0a 2a 2a           | 28.**
23cd0 20 20 20 20 20 20 20 20 43 69 6e 64 79 20 20 20          Cindy   
23ce0 20 20 20 20 7c 20 32 31 0a 2a 2a 20 3c 2f 70 72      | 21.** </pr
23cf0 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a  e></blockquote>.
23d00 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 61 72 65 20  **.** There are 
23d10 74 77 6f 20 63 6f 6c 75 6d 6e 20 28 4d 3d 3d 32  two column (M==2
23d20 29 20 61 6e 64 20 74 68 72 65 65 20 72 6f 77 73  ) and three rows
23d30 20 28 4e 3d 3d 33 29 2e 20 20 54 68 75 73 20 74   (N==3).  Thus t
23d40 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20 74 61 62  he.** result tab
23d50 6c 65 20 68 61 73 20 38 20 65 6e 74 72 69 65 73  le has 8 entries
23d60 2e 20 20 53 75 70 70 6f 73 65 20 74 68 65 20 72  .  Suppose the r
23d70 65 73 75 6c 74 20 74 61 62 6c 65 20 69 73 20 73  esult table is s
23d80 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61 6e 20 61  tored.** in an a
23d90 72 72 61 79 20 6e 61 6d 65 73 20 61 7a 52 65 73  rray names azRes
23da0 75 6c 74 2e 20 20 54 68 65 6e 20 61 7a 52 65 73  ult.  Then azRes
23db0 75 6c 74 20 68 6f 6c 64 73 20 74 68 69 73 20 63  ult holds this c
23dc0 6f 6e 74 65 6e 74 3a 0a 2a 2a 0a 2a 2a 20 3c 62  ontent:.**.** <b
23dd0 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
23de0 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75  **        azResu
23df0 6c 74 26 23 39 31 3b 30 5d 20 3d 20 22 4e 61 6d  lt&#91;0] = "Nam
23e00 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  e";.**        az
23e10 52 65 73 75 6c 74 26 23 39 31 3b 31 5d 20 3d 20  Result&#91;1] = 
23e20 22 41 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20  "Age";.**       
23e30 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 32 5d   azResult&#91;2]
23e40 20 3d 20 22 41 6c 69 63 65 22 3b 0a 2a 2a 20 20   = "Alice";.**  
23e50 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23        azResult&#
23e60 39 31 3b 33 5d 20 3d 20 22 34 33 22 3b 0a 2a 2a  91;3] = "43";.**
23e70 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
23e80 26 23 39 31 3b 34 5d 20 3d 20 22 42 6f 62 22 3b  &#91;4] = "Bob";
23e90 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
23ea0 75 6c 74 26 23 39 31 3b 35 5d 20 3d 20 22 32 38  ult&#91;5] = "28
23eb0 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
23ec0 65 73 75 6c 74 26 23 39 31 3b 36 5d 20 3d 20 22  esult&#91;6] = "
23ed0 43 69 6e 64 79 22 3b 0a 2a 2a 20 20 20 20 20 20  Cindy";.**      
23ee0 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 37    azResult&#91;7
23ef0 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 20 3c 2f 70  ] = "21";.** </p
23f00 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
23f10 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  )^.**.** ^The sq
23f20 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
23f30 29 20 66 75 6e 63 74 69 6f 6e 20 65 76 61 6c 75  ) function evalu
23f40 61 74 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  ates one or more
23f50 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65  .** semicolon-se
23f60 70 61 72 61 74 65 64 20 53 51 4c 20 73 74 61 74  parated SQL stat
23f70 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 7a 65  ements in the ze
23f80 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54  ro-terminated UT
23f90 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 6f 66  F-8.** string of
23fa0 20 69 74 73 20 32 6e 64 20 70 61 72 61 6d 65 74   its 2nd paramet
23fb0 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61  er and returns a
23fc0 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 74 6f   result table to
23fd0 20 74 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72 20   the.** pointer 
23fe0 67 69 76 65 6e 20 69 6e 20 69 74 73 20 33 72 64  given in its 3rd
23ff0 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
24000 2a 20 41 66 74 65 72 20 74 68 65 20 61 70 70 6c  * After the appl
24010 69 63 61 74 69 6f 6e 20 68 61 73 20 66 69 6e 69  ication has fini
24020 73 68 65 64 20 77 69 74 68 20 74 68 65 20 72 65  shed with the re
24030 73 75 6c 74 20 66 72 6f 6d 20 73 71 6c 69 74 65  sult from sqlite
24040 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2c 0a 2a  3_get_table(),.*
24050 2a 20 69 74 20 6d 75 73 74 20 70 61 73 73 20 74  * it must pass t
24060 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20  he result table 
24070 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69 74  pointer to sqlit
24080 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 20  e3_free_table() 
24090 69 6e 20 6f 72 64 65 72 20 74 6f 0a 2a 2a 20 72  in order to.** r
240a0 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d 6f 72  elease the memor
240b0 79 20 74 68 61 74 20 77 61 73 20 6d 61 6c 6c 6f  y that was mallo
240c0 63 65 64 2e 20 20 42 65 63 61 75 73 65 20 6f 66  ced.  Because of
240d0 20 74 68 65 20 77 61 79 20 74 68 65 0a 2a 2a 20   the way the.** 
240e0 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
240f0 29 5d 20 68 61 70 70 65 6e 73 20 77 69 74 68 69  )] happens withi
24100 6e 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  n sqlite3_get_ta
24110 62 6c 65 28 29 2c 20 74 68 65 20 63 61 6c 6c 69  ble(), the calli
24120 6e 67 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 6d  ng.** function m
24130 75 73 74 20 6e 6f 74 20 74 72 79 20 74 6f 20 63  ust not try to c
24140 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  all [sqlite3_fre
24150 65 28 29 5d 20 64 69 72 65 63 74 6c 79 2e 20 20  e()] directly.  
24160 4f 6e 6c 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  Only.** [sqlite3
24170 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20 69  _free_table()] i
24180 73 20 61 62 6c 65 20 74 6f 20 72 65 6c 65 61 73  s able to releas
24190 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f  e the memory pro
241a0 70 65 72 6c 79 20 61 6e 64 20 73 61 66 65 6c 79  perly and safely
241b0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
241c0 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20  te3_get_table() 
241d0 69 6e 74 65 72 66 61 63 65 20 69 73 20 69 6d 70  interface is imp
241e0 6c 65 6d 65 6e 74 65 64 20 61 73 20 61 20 77 72  lemented as a wr
241f0 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a 20  apper around.** 
24200 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d  [sqlite3_exec()]
24210 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 67  .  The sqlite3_g
24220 65 74 5f 74 61 62 6c 65 28 29 20 72 6f 75 74 69  et_table() routi
24230 6e 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65  ne does not have
24240 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 61 6e   access.** to an
24250 79 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 20  y internal data 
24260 73 74 72 75 63 74 75 72 65 73 20 6f 66 20 53 51  structures of SQ
24270 4c 69 74 65 2e 20 20 49 74 20 75 73 65 73 20 6f  Lite.  It uses o
24280 6e 6c 79 20 74 68 65 20 70 75 62 6c 69 63 0a 2a  nly the public.*
24290 2a 20 69 6e 74 65 72 66 61 63 65 20 64 65 66 69  * interface defi
242a0 6e 65 64 20 68 65 72 65 2e 20 20 41 73 20 61 20  ned here.  As a 
242b0 63 6f 6e 73 65 71 75 65 6e 63 65 2c 20 65 72 72  consequence, err
242c0 6f 72 73 20 74 68 61 74 20 6f 63 63 75 72 20 69  ors that occur i
242d0 6e 20 74 68 65 0a 2a 2a 20 77 72 61 70 70 65 72  n the.** wrapper
242e0 20 6c 61 79 65 72 20 6f 75 74 73 69 64 65 20 6f   layer outside o
242f0 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 5b  f the internal [
24300 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d 20  sqlite3_exec()] 
24310 63 61 6c 6c 20 61 72 65 20 6e 6f 74 0a 2a 2a 20  call are not.** 
24320 72 65 66 6c 65 63 74 65 64 20 69 6e 20 73 75 62  reflected in sub
24330 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f  sequent calls to
24340 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64   [sqlite3_errcod
24350 65 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69  e()] or.** [sqli
24360 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 2e 0a 2a  te3_errmsg()]..*
24370 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
24380 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
24390 6c 65 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  le(.  sqlite3 *d
243a0 62 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20 41  b,          /* A
243b0 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20  n open database 
243c0 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
243d0 2a 7a 53 71 6c 2c 20 20 20 20 20 2f 2a 20 53 51  *zSql,     /* SQ
243e0 4c 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65  L to be evaluate
243f0 64 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a 70  d */.  char ***p
24400 61 7a 52 65 73 75 6c 74 2c 20 20 20 20 2f 2a 20  azResult,    /* 
24410 52 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 71  Results of the q
24420 75 65 72 79 20 2a 2f 0a 20 20 69 6e 74 20 2a 70  uery */.  int *p
24430 6e 52 6f 77 2c 20 20 20 20 20 20 20 20 20 20 20  nRow,           
24440 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65 73  /* Number of res
24450 75 6c 74 20 72 6f 77 73 20 77 72 69 74 74 65 6e  ult rows written
24460 20 68 65 72 65 20 2a 2f 0a 20 20 69 6e 74 20 2a   here */.  int *
24470 70 6e 43 6f 6c 75 6d 6e 2c 20 20 20 20 20 20 20  pnColumn,       
24480 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65   /* Number of re
24490 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72 69  sult columns wri
244a0 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 63  tten here */.  c
244b0 68 61 72 20 2a 2a 70 7a 45 72 72 6d 73 67 20 20  har **pzErrmsg  
244c0 20 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73       /* Error ms
244d0 67 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a  g written here *
244e0 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
244f0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65  void sqlite3_fre
24500 65 5f 74 61 62 6c 65 28 63 68 61 72 20 2a 2a 72  e_table(char **r
24510 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  esult);../*.** C
24520 41 50 49 33 52 45 46 3a 20 46 6f 72 6d 61 74 74  API3REF: Formatt
24530 65 64 20 53 74 72 69 6e 67 20 50 72 69 6e 74 69  ed String Printi
24540 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a 0a  ng Functions.**.
24550 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65  ** These routine
24560 73 20 61 72 65 20 77 6f 72 6b 2d 61 6c 69 6b 65  s are work-alike
24570 73 20 6f 66 20 74 68 65 20 22 70 72 69 6e 74 66  s of the "printf
24580 28 29 22 20 66 61 6d 69 6c 79 20 6f 66 20 66 75  ()" family of fu
24590 6e 63 74 69 6f 6e 73 0a 2a 2a 20 66 72 6f 6d 20  nctions.** from 
245a0 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c  the standard C l
245b0 69 62 72 61 72 79 2e 0a 2a 2a 20 54 68 65 73 65  ibrary..** These
245c0 20 72 6f 75 74 69 6e 65 73 20 75 6e 64 65 72 73   routines unders
245d0 74 61 6e 64 20 6d 6f 73 74 20 6f 66 20 74 68 65  tand most of the
245e0 20 63 6f 6d 6d 6f 6e 20 4b 26 52 20 66 6f 72 6d   common K&R form
245f0 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 2c 0a  atting options,.
24600 2a 2a 20 70 6c 75 73 20 73 6f 6d 65 20 61 64 64  ** plus some add
24610 69 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 73 74 61 6e  itional non-stan
24620 64 61 72 64 20 66 6f 72 6d 61 74 73 2c 20 64 65  dard formats, de
24630 74 61 69 6c 65 64 20 62 65 6c 6f 77 2e 0a 2a 2a  tailed below..**
24640 20 4e 6f 74 65 20 74 68 61 74 20 73 6f 6d 65 20   Note that some 
24650 6f 66 20 74 68 65 20 6d 6f 72 65 20 6f 62 73 63  of the more obsc
24660 75 72 65 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f  ure formatting o
24670 70 74 69 6f 6e 73 20 66 72 6f 6d 20 72 65 63 65  ptions from rece
24680 6e 74 0a 2a 2a 20 43 2d 6c 69 62 72 61 72 79 20  nt.** C-library 
24690 73 74 61 6e 64 61 72 64 73 20 61 72 65 20 6f 6d  standards are om
246a0 69 74 74 65 64 20 66 72 6f 6d 20 74 68 69 73 20  itted from this 
246b0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a  implementation..
246c0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
246d0 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 61 6e 64  e3_mprintf() and
246e0 20 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e 74   sqlite3_vmprint
246f0 66 28 29 20 72 6f 75 74 69 6e 65 73 20 77 72 69  f() routines wri
24700 74 65 20 74 68 65 69 72 0a 2a 2a 20 72 65 73 75  te their.** resu
24710 6c 74 73 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20  lts into memory 
24720 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b 73  obtained from [s
24730 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
24740 2e 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 73  ..** The strings
24750 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65   returned by the
24760 73 65 20 74 77 6f 20 72 6f 75 74 69 6e 65 73 20  se two routines 
24770 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 72 65 6c  should be.** rel
24780 65 61 73 65 64 20 62 79 20 5b 73 71 6c 69 74 65  eased by [sqlite
24790 33 5f 66 72 65 65 28 29 5d 2e 20 20 5e 42 6f 74  3_free()].  ^Bot
247a0 68 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  h routines retur
247b0 6e 20 61 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e  n a.** NULL poin
247c0 74 65 72 20 69 66 20 5b 73 71 6c 69 74 65 33 5f  ter if [sqlite3_
247d0 6d 61 6c 6c 6f 63 28 29 5d 20 69 73 20 75 6e 61  malloc()] is una
247e0 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  ble to allocate 
247f0 65 6e 6f 75 67 68 0a 2a 2a 20 6d 65 6d 6f 72 79  enough.** memory
24800 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65 73   to hold the res
24810 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0a 2a  ulting string..*
24820 2a 0a 2a 2a 20 5e 28 54 68 65 20 73 71 6c 69 74  *.** ^(The sqlit
24830 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 20 72 6f  e3_snprintf() ro
24840 75 74 69 6e 65 20 69 73 20 73 69 6d 69 6c 61 72  utine is similar
24850 20 74 6f 20 22 73 6e 70 72 69 6e 74 66 28 29 22   to "snprintf()"
24860 20 66 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 74 61   from.** the sta
24870 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 2e  ndard C library.
24880 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20    The result is 
24890 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65  written into the
248a0 0a 2a 2a 20 62 75 66 66 65 72 20 73 75 70 70 6c  .** buffer suppl
248b0 69 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  ied as the secon
248c0 64 20 70 61 72 61 6d 65 74 65 72 20 77 68 6f 73  d parameter whos
248d0 65 20 73 69 7a 65 20 69 73 20 67 69 76 65 6e 20  e size is given 
248e0 62 79 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20  by.** the first 
248f0 70 61 72 61 6d 65 74 65 72 2e 20 4e 6f 74 65 20  parameter. Note 
24900 74 68 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f  that the order o
24910 66 20 74 68 65 0a 2a 2a 20 66 69 72 73 74 20 74  f the.** first t
24920 77 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69 73  wo parameters is
24930 20 72 65 76 65 72 73 65 64 20 66 72 6f 6d 20 73   reversed from s
24940 6e 70 72 69 6e 74 66 28 29 2e 29 5e 20 20 54 68  nprintf().)^  Th
24950 69 73 20 69 73 20 61 6e 0a 2a 2a 20 68 69 73 74  is is an.** hist
24960 6f 72 69 63 61 6c 20 61 63 63 69 64 65 6e 74 20  orical accident 
24970 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 66  that cannot be f
24980 69 78 65 64 20 77 69 74 68 6f 75 74 20 62 72 65  ixed without bre
24990 61 6b 69 6e 67 0a 2a 2a 20 62 61 63 6b 77 61 72  aking.** backwar
249a0 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
249b0 2e 20 20 5e 28 4e 6f 74 65 20 61 6c 73 6f 20 74  .  ^(Note also t
249c0 68 61 74 20 73 71 6c 69 74 65 33 5f 73 6e 70 72  hat sqlite3_snpr
249d0 69 6e 74 66 28 29 0a 2a 2a 20 72 65 74 75 72 6e  intf().** return
249e0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  s a pointer to i
249f0 74 73 20 62 75 66 66 65 72 20 69 6e 73 74 65 61  ts buffer instea
24a00 64 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  d of the number 
24a10 6f 66 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 73  of.** characters
24a20 20 61 63 74 75 61 6c 6c 79 20 77 72 69 74 74 65   actually writte
24a30 6e 20 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65  n into the buffe
24a40 72 2e 29 5e 20 20 57 65 20 61 64 6d 69 74 20 74  r.)^  We admit t
24a50 68 61 74 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65  hat.** the numbe
24a60 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20  r of characters 
24a70 77 72 69 74 74 65 6e 20 77 6f 75 6c 64 20 62 65  written would be
24a80 20 61 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 72   a more useful r
24a90 65 74 75 72 6e 0a 2a 2a 20 76 61 6c 75 65 20 62  eturn.** value b
24aa0 75 74 20 77 65 20 63 61 6e 6e 6f 74 20 63 68 61  ut we cannot cha
24ab0 6e 67 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  nge the implemen
24ac0 74 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65  tation of sqlite
24ad0 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20  3_snprintf().** 
24ae0 6e 6f 77 20 77 69 74 68 6f 75 74 20 62 72 65 61  now without brea
24af0 6b 69 6e 67 20 63 6f 6d 70 61 74 69 62 69 6c 69  king compatibili
24b00 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 73 20 6c 6f  ty..**.** ^As lo
24b10 6e 67 20 61 73 20 74 68 65 20 62 75 66 66 65 72  ng as the buffer
24b20 20 73 69 7a 65 20 69 73 20 67 72 65 61 74 65 72   size is greater
24b30 20 74 68 61 6e 20 7a 65 72 6f 2c 20 73 71 6c 69   than zero, sqli
24b40 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a  te3_snprintf().*
24b50 2a 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61  * guarantees tha
24b60 74 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20  t the buffer is 
24b70 61 6c 77 61 79 73 20 7a 65 72 6f 2d 74 65 72 6d  always zero-term
24b80 69 6e 61 74 65 64 2e 20 20 5e 54 68 65 20 66 69  inated.  ^The fi
24b90 72 73 74 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  rst.** parameter
24ba0 20 22 6e 22 20 69 73 20 74 68 65 20 74 6f 74 61   "n" is the tota
24bb0 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 62 75  l size of the bu
24bc0 66 66 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67 20  ffer, including 
24bd0 73 70 61 63 65 20 66 6f 72 0a 2a 2a 20 74 68 65  space for.** the
24be0 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72   zero terminator
24bf0 2e 20 20 53 6f 20 74 68 65 20 6c 6f 6e 67 65 73  .  So the longes
24c00 74 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 61  t string that ca
24c10 6e 20 62 65 20 63 6f 6d 70 6c 65 74 65 6c 79 0a  n be completely.
24c20 2a 2a 20 77 72 69 74 74 65 6e 20 77 69 6c 6c 20  ** written will 
24c30 62 65 20 6e 2d 31 20 63 68 61 72 61 63 74 65 72  be n-1 character
24c40 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  s..**.** ^The sq
24c50 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e 74 66 28  lite3_vsnprintf(
24c60 29 20 72 6f 75 74 69 6e 65 20 69 73 20 61 20 76  ) routine is a v
24c70 61 72 61 72 67 73 20 76 65 72 73 69 6f 6e 20 6f  arargs version o
24c80 66 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e  f sqlite3_snprin
24c90 74 66 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73  tf()..**.** Thes
24ca0 65 20 72 6f 75 74 69 6e 65 73 20 61 6c 6c 20 69  e routines all i
24cb0 6d 70 6c 65 6d 65 6e 74 20 73 6f 6d 65 20 61 64  mplement some ad
24cc0 64 69 74 69 6f 6e 61 6c 20 66 6f 72 6d 61 74 74  ditional formatt
24cd0 69 6e 67 0a 2a 2a 20 6f 70 74 69 6f 6e 73 20 74  ing.** options t
24ce0 68 61 74 20 61 72 65 20 75 73 65 66 75 6c 20 66  hat are useful f
24cf0 6f 72 20 63 6f 6e 73 74 72 75 63 74 69 6e 67 20  or constructing 
24d00 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  SQL statements..
24d10 2a 2a 20 41 6c 6c 20 6f 66 20 74 68 65 20 75 73  ** All of the us
24d20 75 61 6c 20 70 72 69 6e 74 66 28 29 20 66 6f 72  ual printf() for
24d30 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20  matting options 
24d40 61 70 70 6c 79 2e 20 20 49 6e 20 61 64 64 69 74  apply.  In addit
24d50 69 6f 6e 2c 20 74 68 65 72 65 0a 2a 2a 20 69 73  ion, there.** is
24d60 20 61 72 65 20 22 25 71 22 2c 20 22 25 51 22 2c   are "%q", "%Q",
24d70 20 22 25 77 22 20 61 6e 64 20 22 25 7a 22 20 6f   "%w" and "%z" o
24d80 70 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28  ptions..**.** ^(
24d90 54 68 65 20 25 71 20 6f 70 74 69 6f 6e 20 77 6f  The %q option wo
24da0 72 6b 73 20 6c 69 6b 65 20 25 73 20 69 6e 20 74  rks like %s in t
24db0 68 61 74 20 69 74 20 73 75 62 73 74 69 74 75 74  hat it substitut
24dc0 65 73 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61  es a nul-termina
24dd0 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 66 72  ted.** string fr
24de0 6f 6d 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  om the argument 
24df0 6c 69 73 74 2e 20 20 42 75 74 20 25 71 20 61 6c  list.  But %q al
24e00 73 6f 20 64 6f 75 62 6c 65 73 20 65 76 65 72 79  so doubles every
24e10 20 27 5c 27 27 20 63 68 61 72 61 63 74 65 72 2e   '\'' character.
24e20 0a 2a 2a 20 25 71 20 69 73 20 64 65 73 69 67 6e  .** %q is design
24e30 65 64 20 66 6f 72 20 75 73 65 20 69 6e 73 69 64  ed for use insid
24e40 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72  e a string liter
24e50 61 6c 2e 29 5e 20 20 42 79 20 64 6f 75 62 6c 69  al.)^  By doubli
24e60 6e 67 20 65 61 63 68 20 27 5c 27 27 0a 2a 2a 20  ng each '\''.** 
24e70 63 68 61 72 61 63 74 65 72 20 69 74 20 65 73 63  character it esc
24e80 61 70 65 73 20 74 68 61 74 20 63 68 61 72 61 63  apes that charac
24e90 74 65 72 20 61 6e 64 20 61 6c 6c 6f 77 73 20 69  ter and allows i
24ea0 74 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65 64  t to be inserted
24eb0 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73 74 72   into.** the str
24ec0 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 46 6f 72 20 65  ing..**.** For e
24ed0 78 61 6d 70 6c 65 2c 20 61 73 73 75 6d 65 20 74  xample, assume t
24ee0 68 65 20 73 74 72 69 6e 67 20 76 61 72 69 61 62  he string variab
24ef0 6c 65 20 7a 54 65 78 74 20 63 6f 6e 74 61 69 6e  le zText contain
24f00 73 20 74 65 78 74 20 61 73 20 66 6f 6c 6c 6f 77  s text as follow
24f10 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71  s:.**.** <blockq
24f20 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 63  uote><pre>.**  c
24f30 68 61 72 20 2a 7a 54 65 78 74 20 3d 20 22 49 74  har *zText = "It
24f40 27 73 20 61 20 68 61 70 70 79 20 64 61 79 21 22  's a happy day!"
24f50 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ;.** </pre></blo
24f60 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 4f  ckquote>.**.** O
24f70 6e 65 20 63 61 6e 20 75 73 65 20 74 68 69 73 20  ne can use this 
24f80 74 65 78 74 20 69 6e 20 61 6e 20 53 51 4c 20 73  text in an SQL s
24f90 74 61 74 65 6d 65 6e 74 20 61 73 20 66 6f 6c 6c  tatement as foll
24fa0 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63  ows:.**.** <bloc
24fb0 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20  kquote><pre>.** 
24fc0 20 63 68 61 72 20 2a 7a 53 51 4c 20 3d 20 73 71   char *zSQL = sq
24fd0 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 22 49  lite3_mprintf("I
24fe0 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65  NSERT INTO table
24ff0 20 56 41 4c 55 45 53 28 27 25 71 27 29 22 2c 20   VALUES('%q')", 
25000 7a 54 65 78 74 29 3b 0a 2a 2a 20 20 73 71 6c 69  zText);.**  sqli
25010 74 65 33 5f 65 78 65 63 28 64 62 2c 20 7a 53 51  te3_exec(db, zSQ
25020 4c 2c 20 30 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  L, 0, 0, 0);.** 
25030 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 7a 53   sqlite3_free(zS
25040 51 4c 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f  QL);.** </pre></
25050 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a  blockquote>.**.*
25060 2a 20 42 65 63 61 75 73 65 20 74 68 65 20 25 71  * Because the %q
25070 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 69   format string i
25080 73 20 75 73 65 64 2c 20 74 68 65 20 27 5c 27 27  s used, the '\''
25090 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 7a 54   character in zT
250a0 65 78 74 0a 2a 2a 20 69 73 20 65 73 63 61 70 65  ext.** is escape
250b0 64 20 61 6e 64 20 74 68 65 20 53 51 4c 20 67 65  d and the SQL ge
250c0 6e 65 72 61 74 65 64 20 69 73 20 61 73 20 66 6f  nerated is as fo
250d0 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c  llows:.**.** <bl
250e0 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a  ockquote><pre>.*
250f0 2a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  *  INSERT INTO t
25100 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27 49 74  able1 VALUES('It
25110 27 27 73 20 61 20 68 61 70 70 79 20 64 61 79 21  ''s a happy day!
25120 27 29 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c  ').** </pre></bl
25130 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20  ockquote>.**.** 
25140 54 68 69 73 20 69 73 20 63 6f 72 72 65 63 74 2e  This is correct.
25150 20 20 48 61 64 20 77 65 20 75 73 65 64 20 25 73    Had we used %s
25160 20 69 6e 73 74 65 61 64 20 6f 66 20 25 71 2c 20   instead of %q, 
25170 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 53 51  the generated SQ
25180 4c 0a 2a 2a 20 77 6f 75 6c 64 20 68 61 76 65 20  L.** would have 
25190 6c 6f 6f 6b 65 64 20 6c 69 6b 65 20 74 68 69 73  looked like this
251a0 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75  :.**.** <blockqu
251b0 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 49 4e  ote><pre>.**  IN
251c0 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65 31  SERT INTO table1
251d0 20 56 41 4c 55 45 53 28 27 49 74 27 73 20 61 20   VALUES('It's a 
251e0 68 61 70 70 79 20 64 61 79 21 27 29 3b 0a 2a 2a  happy day!');.**
251f0 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75   </pre></blockqu
25200 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ote>.**.** This 
25210 73 65 63 6f 6e 64 20 65 78 61 6d 70 6c 65 20 69  second example i
25220 73 20 61 6e 20 53 51 4c 20 73 79 6e 74 61 78 20  s an SQL syntax 
25230 65 72 72 6f 72 2e 20 20 41 73 20 61 20 67 65 6e  error.  As a gen
25240 65 72 61 6c 20 72 75 6c 65 20 79 6f 75 20 73 68  eral rule you sh
25250 6f 75 6c 64 0a 2a 2a 20 61 6c 77 61 79 73 20 75  ould.** always u
25260 73 65 20 25 71 20 69 6e 73 74 65 61 64 20 6f 66  se %q instead of
25270 20 25 73 20 77 68 65 6e 20 69 6e 73 65 72 74 69   %s when inserti
25280 6e 67 20 74 65 78 74 20 69 6e 74 6f 20 61 20 73  ng text into a s
25290 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 0a 2a  tring literal..*
252a0 2a 0a 2a 2a 20 5e 28 54 68 65 20 25 51 20 6f 70  *.** ^(The %Q op
252b0 74 69 6f 6e 20 77 6f 72 6b 73 20 6c 69 6b 65 20  tion works like 
252c0 25 71 20 65 78 63 65 70 74 20 69 74 20 61 6c 73  %q except it als
252d0 6f 20 61 64 64 73 20 73 69 6e 67 6c 65 20 71 75  o adds single qu
252e0 6f 74 65 73 20 61 72 6f 75 6e 64 0a 2a 2a 20 74  otes around.** t
252f0 68 65 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68  he outside of th
25300 65 20 74 6f 74 61 6c 20 73 74 72 69 6e 67 2e 20  e total string. 
25310 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 69   Additionally, i
25320 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20  f the parameter 
25330 69 6e 20 74 68 65 0a 2a 2a 20 61 72 67 75 6d 65  in the.** argume
25340 6e 74 20 6c 69 73 74 20 69 73 20 61 20 4e 55 4c  nt list is a NUL
25350 4c 20 70 6f 69 6e 74 65 72 2c 20 25 51 20 73 75  L pointer, %Q su
25360 62 73 74 69 74 75 74 65 73 20 74 68 65 20 74 65  bstitutes the te
25370 78 74 20 22 4e 55 4c 4c 22 20 28 77 69 74 68 6f  xt "NULL" (witho
25380 75 74 0a 2a 2a 20 73 69 6e 67 6c 65 20 71 75 6f  ut.** single quo
25390 74 65 73 29 2e 29 5e 20 20 53 6f 2c 20 66 6f 72  tes).)^  So, for
253a0 20 65 78 61 6d 70 6c 65 2c 20 6f 6e 65 20 63 6f   example, one co
253b0 75 6c 64 20 73 61 79 3a 0a 2a 2a 0a 2a 2a 20 3c  uld say:.**.** <
253c0 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
253d0 0a 2a 2a 20 20 63 68 61 72 20 2a 7a 53 51 4c 20  .**  char *zSQL 
253e0 3d 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74  = sqlite3_mprint
253f0 66 28 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  f("INSERT INTO t
25400 61 62 6c 65 20 56 41 4c 55 45 53 28 25 51 29 22  able VALUES(%Q)"
25410 2c 20 7a 54 65 78 74 29 3b 0a 2a 2a 20 20 73 71  , zText);.**  sq
25420 6c 69 74 65 33 5f 65 78 65 63 28 64 62 2c 20 7a  lite3_exec(db, z
25430 53 51 4c 2c 20 30 2c 20 30 2c 20 30 29 3b 0a 2a  SQL, 0, 0, 0);.*
25440 2a 20 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  *  sqlite3_free(
25450 7a 53 51 4c 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e  zSQL);.** </pre>
25460 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a  </blockquote>.**
25470 0a 2a 2a 20 54 68 65 20 63 6f 64 65 20 61 62 6f  .** The code abo
25480 76 65 20 77 69 6c 6c 20 72 65 6e 64 65 72 20 61  ve will render a
25490 20 63 6f 72 72 65 63 74 20 53 51 4c 20 73 74 61   correct SQL sta
254a0 74 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 7a 53  tement in the zS
254b0 51 4c 0a 2a 2a 20 76 61 72 69 61 62 6c 65 20 65  QL.** variable e
254c0 76 65 6e 20 69 66 20 74 68 65 20 7a 54 65 78 74  ven if the zText
254d0 20 76 61 72 69 61 62 6c 65 20 69 73 20 61 20 4e   variable is a N
254e0 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a  ULL pointer..**.
254f0 2a 2a 20 5e 28 54 68 65 20 22 25 77 22 20 66 6f  ** ^(The "%w" fo
25500 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 20  rmatting option 
25510 69 73 20 6c 69 6b 65 20 22 25 71 22 20 65 78 63  is like "%q" exc
25520 65 70 74 20 74 68 61 74 20 69 74 20 65 78 70 65  ept that it expe
25530 63 74 73 20 74 6f 0a 2a 2a 20 62 65 20 63 6f 6e  cts to.** be con
25540 74 61 69 6e 65 64 20 77 69 74 68 69 6e 20 64 6f  tained within do
25550 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 6e 73 74  uble-quotes inst
25560 65 61 64 20 6f 66 20 73 69 6e 67 6c 65 20 71 75  ead of single qu
25570 6f 74 65 73 2c 20 61 6e 64 20 69 74 0a 2a 2a 20  otes, and it.** 
25580 65 73 63 61 70 65 73 20 74 68 65 20 64 6f 75 62  escapes the doub
25590 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63 74  le-quote charact
255a0 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68  er instead of th
255b0 65 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65 0a 2a  e single-quote.*
255c0 2a 20 63 68 61 72 61 63 74 65 72 2e 29 5e 20 20  * character.)^  
255d0 54 68 65 20 22 25 77 22 20 66 6f 72 6d 61 74 74  The "%w" formatt
255e0 69 6e 67 20 6f 70 74 69 6f 6e 20 69 73 20 69 6e  ing option is in
255f0 74 65 6e 64 65 64 20 66 6f 72 20 73 61 66 65 6c  tended for safel
25600 79 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a 20 74  y inserting.** t
25610 61 62 6c 65 20 61 6e 64 20 63 6f 6c 75 6d 6e 20  able and column 
25620 6e 61 6d 65 73 20 69 6e 74 6f 20 61 20 63 6f 6e  names into a con
25630 73 74 72 75 63 74 65 64 20 53 51 4c 20 73 74 61  structed SQL sta
25640 74 65 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5e 28  tement..**.** ^(
25650 54 68 65 20 22 25 7a 22 20 66 6f 72 6d 61 74 74  The "%z" formatt
25660 69 6e 67 20 6f 70 74 69 6f 6e 20 77 6f 72 6b 73  ing option works
25670 20 6c 69 6b 65 20 22 25 73 22 20 62 75 74 20 77   like "%s" but w
25680 69 74 68 20 74 68 65 0a 2a 2a 20 61 64 64 69 74  ith the.** addit
25690 69 6f 6e 20 74 68 61 74 20 61 66 74 65 72 20 74  ion that after t
256a0 68 65 20 73 74 72 69 6e 67 20 68 61 73 20 62 65  he string has be
256b0 65 6e 20 72 65 61 64 20 61 6e 64 20 63 6f 70 69  en read and copi
256c0 65 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 72  ed into.** the r
256d0 65 73 75 6c 74 2c 20 5b 73 71 6c 69 74 65 33 5f  esult, [sqlite3_
256e0 66 72 65 65 28 29 5d 20 69 73 20 63 61 6c 6c 65  free()] is calle
256f0 64 20 6f 6e 20 74 68 65 20 69 6e 70 75 74 20 73  d on the input s
25700 74 72 69 6e 67 2e 29 5e 0a 2a 2f 0a 53 51 4c 49  tring.)^.*/.SQLI
25710 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c  TE_API char *sql
25720 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63 6f 6e  ite3_mprintf(con
25730 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b 0a 53  st char*,...);.S
25740 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a  QLITE_API char *
25750 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e 74 66  sqlite3_vmprintf
25760 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76 61  (const char*, va
25770 5f 6c 69 73 74 29 3b 0a 53 51 4c 49 54 45 5f 41  _list);.SQLITE_A
25780 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  PI char *sqlite3
25790 5f 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63 68  _snprintf(int,ch
257a0 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
257b0 20 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41 50   ...);.SQLITE_AP
257c0 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  I char *sqlite3_
257d0 76 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63 68  vsnprintf(int,ch
257e0 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
257f0 20 76 61 5f 6c 69 73 74 29 3b 0a 0a 2f 2a 0a 2a   va_list);../*.*
25800 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d 6f  * CAPI3REF: Memo
25810 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 53 75  ry Allocation Su
25820 62 73 79 73 74 65 6d 0a 2a 2a 0a 2a 2a 20 54 68  bsystem.**.** Th
25830 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 75 73  e SQLite core us
25840 65 73 20 74 68 65 73 65 20 74 68 72 65 65 20 72  es these three r
25850 6f 75 74 69 6e 65 73 20 66 6f 72 20 61 6c 6c 20  outines for all 
25860 6f 66 20 69 74 73 20 6f 77 6e 0a 2a 2a 20 69 6e  of its own.** in
25870 74 65 72 6e 61 6c 20 6d 65 6d 6f 72 79 20 61 6c  ternal memory al
25880 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e 20  location needs. 
25890 22 43 6f 72 65 22 20 69 6e 20 74 68 65 20 70 72  "Core" in the pr
258a0 65 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65 0a  evious sentence.
258b0 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c  ** does not incl
258c0 75 64 65 20 6f 70 65 72 61 74 69 6e 67 2d 73 79  ude operating-sy
258d0 73 74 65 6d 20 73 70 65 63 69 66 69 63 20 56 46  stem specific VF
258e0 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  S implementation
258f0 2e 20 20 54 68 65 0a 2a 2a 20 57 69 6e 64 6f 77  .  The.** Window
25900 73 20 56 46 53 20 75 73 65 73 20 6e 61 74 69 76  s VFS uses nativ
25910 65 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66  e malloc() and f
25920 72 65 65 28 29 20 66 6f 72 20 73 6f 6d 65 20 6f  ree() for some o
25930 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
25940 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d 61   ^The sqlite3_ma
25950 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 20 72  lloc() routine r
25960 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
25970 20 74 6f 20 61 20 62 6c 6f 63 6b 0a 2a 2a 20 6f   to a block.** o
25980 66 20 6d 65 6d 6f 72 79 20 61 74 20 6c 65 61 73  f memory at leas
25990 74 20 4e 20 62 79 74 65 73 20 69 6e 20 6c 65 6e  t N bytes in len
259a0 67 74 68 2c 20 77 68 65 72 65 20 4e 20 69 73 20  gth, where N is 
259b0 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  the parameter..*
259c0 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6d 61  * ^If sqlite3_ma
259d0 6c 6c 6f 63 28 29 20 69 73 20 75 6e 61 62 6c 65  lloc() is unable
259e0 20 74 6f 20 6f 62 74 61 69 6e 20 73 75 66 66 69   to obtain suffi
259f0 63 69 65 6e 74 20 66 72 65 65 0a 2a 2a 20 6d 65  cient free.** me
25a00 6d 6f 72 79 2c 20 69 74 20 72 65 74 75 72 6e 73  mory, it returns
25a10 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e   a NULL pointer.
25a20 20 20 5e 49 66 20 74 68 65 20 70 61 72 61 6d 65    ^If the parame
25a30 74 65 72 20 4e 20 74 6f 0a 2a 2a 20 73 71 6c 69  ter N to.** sqli
25a40 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73 20  te3_malloc() is 
25a50 7a 65 72 6f 20 6f 72 20 6e 65 67 61 74 69 76 65  zero or negative
25a60 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 6d 61   then sqlite3_ma
25a70 6c 6c 6f 63 28 29 20 72 65 74 75 72 6e 73 0a 2a  lloc() returns.*
25a80 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  * a NULL pointer
25a90 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
25aa0 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 4e 29  ite3_malloc64(N)
25ab0 20 72 6f 75 74 69 6e 65 20 77 6f 72 6b 73 20 6a   routine works j
25ac0 75 73 74 20 6c 69 6b 65 0a 2a 2a 20 73 71 6c 69  ust like.** sqli
25ad0 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 20 65 78  te3_malloc(N) ex
25ae0 63 65 70 74 20 74 68 61 74 20 4e 20 69 73 20 61  cept that N is a
25af0 6e 20 75 6e 73 69 67 6e 65 64 20 36 34 2d 62 69  n unsigned 64-bi
25b00 74 20 69 6e 74 65 67 65 72 20 69 6e 73 74 65 61  t integer instea
25b10 64 0a 2a 2a 20 6f 66 20 61 20 73 69 67 6e 65 64  d.** of a signed
25b20 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 72 2e   32-bit integer.
25b30 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67 20  .**.** ^Calling 
25b40 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 77  sqlite3_free() w
25b50 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20 70 72  ith a pointer pr
25b60 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e 65  eviously returne
25b70 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f  d.** by sqlite3_
25b80 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69  malloc() or sqli
25b90 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 20 72 65  te3_realloc() re
25ba0 6c 65 61 73 65 73 20 74 68 61 74 20 6d 65 6d 6f  leases that memo
25bb0 72 79 20 73 6f 0a 2a 2a 20 74 68 61 74 20 69 74  ry so.** that it
25bc0 20 6d 69 67 68 74 20 62 65 20 72 65 75 73 65 64   might be reused
25bd0 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  .  ^The sqlite3_
25be0 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 20 69  free() routine i
25bf0 73 0a 2a 2a 20 61 20 6e 6f 2d 6f 70 20 69 66 20  s.** a no-op if 
25c00 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61  is called with a
25c10 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20   NULL pointer.  
25c20 50 61 73 73 69 6e 67 20 61 20 4e 55 4c 4c 20 70  Passing a NULL p
25c30 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 73 71 6c  ointer.** to sql
25c40 69 74 65 33 5f 66 72 65 65 28 29 20 69 73 20 68  ite3_free() is h
25c50 61 72 6d 6c 65 73 73 2e 20 20 41 66 74 65 72 20  armless.  After 
25c60 62 65 69 6e 67 20 66 72 65 65 64 2c 20 6d 65 6d  being freed, mem
25c70 6f 72 79 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 65  ory.** should ne
25c80 69 74 68 65 72 20 62 65 20 72 65 61 64 20 6e 6f  ither be read no
25c90 72 20 77 72 69 74 74 65 6e 2e 20 20 45 76 65 6e  r written.  Even
25ca0 20 72 65 61 64 69 6e 67 20 70 72 65 76 69 6f 75   reading previou
25cb0 73 6c 79 20 66 72 65 65 64 0a 2a 2a 20 6d 65 6d  sly freed.** mem
25cc0 6f 72 79 20 6d 69 67 68 74 20 72 65 73 75 6c 74  ory might result
25cd0 20 69 6e 20 61 20 73 65 67 6d 65 6e 74 61 74 69   in a segmentati
25ce0 6f 6e 20 66 61 75 6c 74 20 6f 72 20 6f 74 68 65  on fault or othe
25cf0 72 20 73 65 76 65 72 65 20 65 72 72 6f 72 2e 0a  r severe error..
25d00 2a 2a 20 4d 65 6d 6f 72 79 20 63 6f 72 72 75 70  ** Memory corrup
25d10 74 69 6f 6e 2c 20 61 20 73 65 67 6d 65 6e 74 61  tion, a segmenta
25d20 74 69 6f 6e 20 66 61 75 6c 74 2c 20 6f 72 20 6f  tion fault, or o
25d30 74 68 65 72 20 73 65 76 65 72 65 20 65 72 72 6f  ther severe erro
25d40 72 0a 2a 2a 20 6d 69 67 68 74 20 72 65 73 75 6c  r.** might resul
25d50 74 20 69 66 20 73 71 6c 69 74 65 33 5f 66 72 65  t if sqlite3_fre
25d60 65 28 29 20 69 73 20 63 61 6c 6c 65 64 20 77 69  e() is called wi
25d70 74 68 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f  th a non-NULL po
25d80 69 6e 74 65 72 20 74 68 61 74 0a 2a 2a 20 77 61  inter that.** wa
25d90 73 20 6e 6f 74 20 6f 62 74 61 69 6e 65 64 20 66  s not obtained f
25da0 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
25db0 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  oc() or sqlite3_
25dc0 72 65 61 6c 6c 6f 63 28 29 2e 0a 2a 2a 0a 2a 2a  realloc()..**.**
25dd0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 72 65   ^The sqlite3_re
25de0 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 6e 74 65 72  alloc(X,N) inter
25df0 66 61 63 65 20 61 74 74 65 6d 70 74 73 20 74 6f  face attempts to
25e00 20 72 65 73 69 7a 65 20 61 0a 2a 2a 20 70 72 69   resize a.** pri
25e10 6f 72 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  or memory alloca
25e20 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 61 74 20  tion X to be at 
25e30 6c 65 61 73 74 20 4e 20 62 79 74 65 73 2e 0a 2a  least N bytes..*
25e40 2a 20 5e 49 66 20 74 68 65 20 58 20 70 61 72 61  * ^If the X para
25e50 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
25e60 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 0a 2a 2a  _realloc(X,N).**
25e70 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
25e80 65 72 20 74 68 65 6e 20 69 74 73 20 62 65 68 61  er then its beha
25e90 76 69 6f 72 20 69 73 20 69 64 65 6e 74 69 63 61  vior is identica
25ea0 6c 20 74 6f 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20  l to calling.** 
25eb0 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e  sqlite3_malloc(N
25ec0 29 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 4e 20  )..** ^If the N 
25ed0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
25ee0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
25ef0 29 20 69 73 20 7a 65 72 6f 20 6f 72 0a 2a 2a 20  ) is zero or.** 
25f00 6e 65 67 61 74 69 76 65 20 74 68 65 6e 20 74 68  negative then th
25f10 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 65 78  e behavior is ex
25f20 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61  actly the same a
25f30 73 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c  s calling.** sql
25f40 69 74 65 33 5f 66 72 65 65 28 58 29 2e 0a 2a 2a  ite3_free(X)..**
25f50 20 5e 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   ^sqlite3_reallo
25f60 63 28 58 2c 4e 29 20 72 65 74 75 72 6e 73 20 61  c(X,N) returns a
25f70 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6d 65   pointer to a me
25f80 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a  mory allocation.
25f90 2a 2a 20 6f 66 20 61 74 20 6c 65 61 73 74 20 4e  ** of at least N
25fa0 20 62 79 74 65 73 20 69 6e 20 73 69 7a 65 20 6f   bytes in size o
25fb0 72 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66 66  r NULL if insuff
25fc0 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 69 73  icient memory is
25fd0 20 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 20 5e   available..** ^
25fe0 49 66 20 4d 20 69 73 20 74 68 65 20 73 69 7a 65  If M is the size
25ff0 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61 6c   of the prior al
26000 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d  location, then m
26010 69 6e 28 4e 2c 4d 29 20 62 79 74 65 73 0a 2a 2a  in(N,M) bytes.**
26020 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61 6c   of the prior al
26030 6c 6f 63 61 74 69 6f 6e 20 61 72 65 20 63 6f 70  location are cop
26040 69 65 64 20 69 6e 74 6f 20 74 68 65 20 62 65 67  ied into the beg
26050 69 6e 6e 69 6e 67 20 6f 66 20 62 75 66 66 65 72  inning of buffer
26060 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20   returned.** by 
26070 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
26080 58 2c 4e 29 20 61 6e 64 20 74 68 65 20 70 72 69  X,N) and the pri
26090 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73  or allocation is
260a0 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66 20 73   freed..** ^If s
260b0 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58  qlite3_realloc(X
260c0 2c 4e 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c  ,N) returns NULL
260d0 20 61 6e 64 20 4e 20 69 73 20 70 6f 73 69 74 69   and N is positi
260e0 76 65 2c 20 74 68 65 6e 20 74 68 65 0a 2a 2a 20  ve, then the.** 
260f0 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e  prior allocation
26100 20 69 73 20 6e 6f 74 20 66 72 65 65 64 2e 0a 2a   is not freed..*
26110 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
26120 33 5f 72 65 61 6c 6c 6f 63 36 34 28 58 2c 4e 29  3_realloc64(X,N)
26130 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f 72 6b   interfaces work
26140 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 2a 2a  s the same as.**
26150 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
26160 28 58 2c 4e 29 20 65 78 63 65 70 74 20 74 68 61  (X,N) except tha
26170 74 20 4e 20 69 73 20 61 20 36 34 2d 62 69 74 20  t N is a 64-bit 
26180 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  unsigned integer
26190 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20 61   instead.** of a
261a0 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20 69   32-bit signed i
261b0 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49  nteger..**.** ^I
261c0 66 20 58 20 69 73 20 61 20 6d 65 6d 6f 72 79 20  f X is a memory 
261d0 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 72 65 76 69  allocation previ
261e0 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
261f0 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
26200 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33  oc(),.** sqlite3
26210 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 73 71 6c  _malloc64(), sql
26220 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2c 20  ite3_realloc(), 
26230 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  or sqlite3_reall
26240 6f 63 36 34 28 29 2c 20 74 68 65 6e 0a 2a 2a 20  oc64(), then.** 
26250 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29  sqlite3_msize(X)
26260 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 69 7a   returns the siz
26270 65 20 6f 66 20 74 68 61 74 20 6d 65 6d 6f 72 79  e of that memory
26280 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 20 62   allocation in b
26290 79 74 65 73 2e 0a 2a 2a 20 5e 54 68 65 20 76 61  ytes..** ^The va
262a0 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
262b0 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29  sqlite3_msize(X)
262c0 20 6d 69 67 68 74 20 62 65 20 6c 61 72 67 65 72   might be larger
262d0 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65 72   than the number
262e0 0a 2a 2a 20 6f 66 20 62 79 74 65 73 20 72 65 71  .** of bytes req
262f0 75 65 73 74 65 64 20 77 68 65 6e 20 58 20 77 61  uested when X wa
26300 73 20 61 6c 6c 6f 63 61 74 65 64 2e 20 20 5e 49  s allocated.  ^I
26310 66 20 58 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f  f X is a NULL po
26320 69 6e 74 65 72 20 74 68 65 6e 0a 2a 2a 20 73 71  inter then.** sq
26330 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20 72  lite3_msize(X) r
26340 65 74 75 72 6e 73 20 7a 65 72 6f 2e 20 20 49 66  eturns zero.  If
26350 20 58 20 70 6f 69 6e 74 73 20 74 6f 20 73 6f 6d   X points to som
26360 65 74 68 69 6e 67 20 74 68 61 74 20 69 73 20 6e  ething that is n
26370 6f 74 0a 2a 2a 20 74 68 65 20 62 65 67 69 6e 6e  ot.** the beginn
26380 69 6e 67 20 6f 66 20 6d 65 6d 6f 72 79 20 61 6c  ing of memory al
26390 6c 6f 63 61 74 69 6f 6e 2c 20 6f 72 20 69 66 20  location, or if 
263a0 69 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 66  it points to a f
263b0 6f 72 6d 65 72 6c 79 0a 2a 2a 20 76 61 6c 69 64  ormerly.** valid
263c0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
263d0 6f 6e 20 74 68 61 74 20 68 61 73 20 6e 6f 77 20  on that has now 
263e0 62 65 65 6e 20 66 72 65 65 64 2c 20 74 68 65 6e  been freed, then
263f0 20 74 68 65 20 62 65 68 61 76 69 6f 72 0a 2a 2a   the behavior.**
26400 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a   of sqlite3_msiz
26410 65 28 58 29 20 69 73 20 75 6e 64 65 66 69 6e 65  e(X) is undefine
26420 64 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 68  d and possibly h
26430 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 54  armful..**.** ^T
26440 68 65 20 6d 65 6d 6f 72 79 20 72 65 74 75 72 6e  he memory return
26450 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 6d 61  ed by sqlite3_ma
26460 6c 6c 6f 63 28 29 2c 20 73 71 6c 69 74 65 33 5f  lloc(), sqlite3_
26470 72 65 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73 71  realloc(),.** sq
26480 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29  lite3_malloc64()
26490 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 72 65  , and sqlite3_re
264a0 61 6c 6c 6f 63 36 34 28 29 0a 2a 2a 20 69 73 20  alloc64().** is 
264b0 61 6c 77 61 79 73 20 61 6c 69 67 6e 65 64 20 74  always aligned t
264c0 6f 20 61 74 20 6c 65 61 73 74 20 61 6e 20 38 20  o at least an 8 
264d0 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2c 20 6f  byte boundary, o
264e0 72 20 74 6f 20 61 0a 2a 2a 20 34 20 62 79 74 65  r to a.** 4 byte
264f0 20 62 6f 75 6e 64 61 72 79 20 69 66 20 74 68 65   boundary if the
26500 20 5b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f   [SQLITE_4_BYTE_
26510 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 5d 20  ALIGNED_MALLOC] 
26520 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20  compile-time.** 
26530 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
26540 2a 2a 0a 2a 2a 20 49 6e 20 53 51 4c 69 74 65 20  **.** In SQLite 
26550 76 65 72 73 69 6f 6e 20 33 2e 35 2e 30 20 61 6e  version 3.5.0 an
26560 64 20 33 2e 35 2e 31 2c 20 69 74 20 77 61 73 20  d 3.5.1, it was 
26570 70 6f 73 73 69 62 6c 65 20 74 6f 20 64 65 66 69  possible to defi
26580 6e 65 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54 45  ne.** the SQLITE
26590 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 5f 41 4c 4c  _OMIT_MEMORY_ALL
265a0 4f 43 41 54 49 4f 4e 20 77 68 69 63 68 20 77 6f  OCATION which wo
265b0 75 6c 64 20 63 61 75 73 65 20 74 68 65 20 62 75  uld cause the bu
265c0 69 6c 74 2d 69 6e 0a 2a 2a 20 69 6d 70 6c 65 6d  ilt-in.** implem
265d0 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 73  entation of thes
265e0 65 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62 65  e routines to be
265f0 20 6f 6d 69 74 74 65 64 2e 20 20 54 68 61 74 20   omitted.  That 
26600 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69 73  capability.** is
26610 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 72 6f 76 69   no longer provi
26620 64 65 64 2e 20 20 4f 6e 6c 79 20 62 75 69 6c 74  ded.  Only built
26630 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  -in memory alloc
26640 61 74 6f 72 73 20 63 61 6e 20 62 65 20 75 73 65  ators can be use
26650 64 2e 0a 2a 2a 0a 2a 2a 20 50 72 69 6f 72 20 74  d..**.** Prior t
26660 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  o SQLite version
26670 20 33 2e 37 2e 31 30 2c 20 74 68 65 20 57 69 6e   3.7.10, the Win
26680 64 6f 77 73 20 4f 53 20 69 6e 74 65 72 66 61 63  dows OS interfac
26690 65 20 6c 61 79 65 72 20 63 61 6c 6c 65 64 0a 2a  e layer called.*
266a0 2a 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61 6c  * the system mal
266b0 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
266c0 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20 63   directly when c
266d0 6f 6e 76 65 72 74 69 6e 67 0a 2a 2a 20 66 69 6c  onverting.** fil
266e0 65 6e 61 6d 65 73 20 62 65 74 77 65 65 6e 20 74  enames between t
266f0 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
26700 67 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  g used by SQLite
26710 0a 2a 2a 20 61 6e 64 20 77 68 61 74 65 76 65 72  .** and whatever
26720 20 66 69 6c 65 6e 61 6d 65 20 65 6e 63 6f 64 69   filename encodi
26730 6e 67 20 69 73 20 75 73 65 64 20 62 79 20 74 68  ng is used by th
26740 65 20 70 61 72 74 69 63 75 6c 61 72 20 57 69 6e  e particular Win
26750 64 6f 77 73 0a 2a 2a 20 69 6e 73 74 61 6c 6c 61  dows.** installa
26760 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20 61 6c  tion.  Memory al
26770 6c 6f 63 61 74 69 6f 6e 20 65 72 72 6f 72 73 20  location errors 
26780 77 65 72 65 20 64 65 74 65 63 74 65 64 2c 20 62  were detected, b
26790 75 74 0a 2a 2a 20 74 68 65 79 20 77 65 72 65 20  ut.** they were 
267a0 72 65 70 6f 72 74 65 64 20 62 61 63 6b 20 61 73  reported back as
267b0 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45   [SQLITE_CANTOPE
267c0 4e 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54 45  N] or.** [SQLITE
267d0 5f 49 4f 45 52 52 5d 20 72 61 74 68 65 72 20 74  _IOERR] rather t
267e0 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45  han [SQLITE_NOME
267f0 4d 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 6f  M]..**.** The po
26800 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73 20  inter arguments 
26810 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  to [sqlite3_free
26820 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
26830 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 6d  _realloc()].** m
26840 75 73 74 20 62 65 20 65 69 74 68 65 72 20 4e 55  ust be either NU
26850 4c 4c 20 6f 72 20 65 6c 73 65 20 70 6f 69 6e 74  LL or else point
26860 65 72 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ers obtained fro
26870 6d 20 61 20 70 72 69 6f 72 0a 2a 2a 20 69 6e 76  m a prior.** inv
26880 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69  ocation of [sqli
26890 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6f 72  te3_malloc()] or
268a0 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
268b0 63 28 29 5d 20 74 68 61 74 20 68 61 76 65 0a 2a  c()] that have.*
268c0 2a 20 6e 6f 74 20 79 65 74 20 62 65 65 6e 20 72  * not yet been r
268d0 65 6c 65 61 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  eleased..**.** T
268e0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
268f0 75 73 74 20 6e 6f 74 20 72 65 61 64 20 6f 72 20  ust not read or 
26900 77 72 69 74 65 20 61 6e 79 20 70 61 72 74 20 6f  write any part o
26910 66 0a 2a 2a 20 61 20 62 6c 6f 63 6b 20 6f 66 20  f.** a block of 
26920 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20  memory after it 
26930 68 61 73 20 62 65 65 6e 20 72 65 6c 65 61 73 65  has been release
26940 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69  d using.** [sqli
26950 74 65 33 5f 66 72 65 65 28 29 5d 20 6f 72 20 5b  te3_free()] or [
26960 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
26970 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  )]..*/.SQLITE_AP
26980 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  I void *sqlite3_
26990 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 53 51 4c  malloc(int);.SQL
269a0 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73 71  ITE_API void *sq
269b0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 73  lite3_malloc64(s
269c0 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a  qlite3_uint64);.
269d0 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
269e0 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63  *sqlite3_realloc
269f0 28 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a 53 51  (void*, int);.SQ
26a00 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73  LITE_API void *s
26a10 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34  qlite3_realloc64
26a20 28 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65 33 5f  (void*, sqlite3_
26a30 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f  uint64);.SQLITE_
26a40 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
26a50 5f 66 72 65 65 28 76 6f 69 64 2a 29 3b 0a 53 51  _free(void*);.SQ
26a60 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33  LITE_API sqlite3
26a70 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  _uint64 sqlite3_
26a80 6d 73 69 7a 65 28 76 6f 69 64 2a 29 3b 0a 0a 2f  msize(void*);../
26a90 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d  *.** CAPI3REF: M
26aa0 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 6f 72 20  emory Allocator 
26ab0 53 74 61 74 69 73 74 69 63 73 0a 2a 2a 0a 2a 2a  Statistics.**.**
26ac0 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 73   SQLite provides
26ad0 20 74 68 65 73 65 20 74 77 6f 20 69 6e 74 65 72   these two inter
26ae0 66 61 63 65 73 20 66 6f 72 20 72 65 70 6f 72 74  faces for report
26af0 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74 75  ing on the statu
26b00 73 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 73 71 6c  s.** of the [sql
26b10 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 20  ite3_malloc()], 
26b20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
26b30 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 72  , and [sqlite3_r
26b40 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 72 6f 75  ealloc()].** rou
26b50 74 69 6e 65 73 2c 20 77 68 69 63 68 20 66 6f 72  tines, which for
26b60 6d 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 6d  m the built-in m
26b70 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
26b80 20 73 75 62 73 79 73 74 65 6d 2e 0a 2a 2a 0a 2a   subsystem..**.*
26b90 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  * ^The [sqlite3_
26ba0 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 72  memory_used()] r
26bb0 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74  outine returns t
26bc0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
26bd0 65 73 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79 20  es.** of memory 
26be0 63 75 72 72 65 6e 74 6c 79 20 6f 75 74 73 74 61  currently outsta
26bf0 6e 64 69 6e 67 20 28 6d 61 6c 6c 6f 63 65 64 20  nding (malloced 
26c00 62 75 74 20 6e 6f 74 20 66 72 65 65 64 29 2e 0a  but not freed)..
26c10 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33  ** ^The [sqlite3
26c20 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
26c30 72 28 29 5d 20 72 6f 75 74 69 6e 65 20 72 65 74  r()] routine ret
26c40 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  urns the maximum
26c50 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 5b 73 71  .** value of [sq
26c60 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
26c70 64 28 29 5d 20 73 69 6e 63 65 20 74 68 65 20 68  d()] since the h
26c80 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 0a 2a  igh-water mark.*
26c90 2a 20 77 61 73 20 6c 61 73 74 20 72 65 73 65 74  * was last reset
26ca0 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 73 20 72  .  ^The values r
26cb0 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c 69  eturned by [sqli
26cc0 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
26cd0 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74  )] and.** [sqlit
26ce0 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
26cf0 74 65 72 28 29 5d 20 69 6e 63 6c 75 64 65 20 61  ter()] include a
26d00 6e 79 20 6f 76 65 72 68 65 61 64 0a 2a 2a 20 61  ny overhead.** a
26d10 64 64 65 64 20 62 79 20 53 51 4c 69 74 65 20 69  dded by SQLite i
26d20 6e 20 69 74 73 20 69 6d 70 6c 65 6d 65 6e 74 61  n its implementa
26d30 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65 33  tion of [sqlite3
26d40 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 0a 2a 2a 20 62  _malloc()],.** b
26d50 75 74 20 6e 6f 74 20 6f 76 65 72 68 65 61 64 20  ut not overhead 
26d60 61 64 64 65 64 20 62 79 20 74 68 65 20 61 6e 79  added by the any
26d70 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 79 73 74   underlying syst
26d80 65 6d 20 6c 69 62 72 61 72 79 0a 2a 2a 20 72 6f  em library.** ro
26d90 75 74 69 6e 65 73 20 74 68 61 74 20 5b 73 71 6c  utines that [sql
26da0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6d  ite3_malloc()] m
26db0 61 79 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5e  ay call..**.** ^
26dc0 54 68 65 20 6d 65 6d 6f 72 79 20 68 69 67 68 2d  The memory high-
26dd0 77 61 74 65 72 20 6d 61 72 6b 20 69 73 20 72 65  water mark is re
26de0 73 65 74 20 74 6f 20 74 68 65 20 63 75 72 72 65  set to the curre
26df0 6e 74 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20 5b  nt value of.** [
26e00 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
26e10 73 65 64 28 29 5d 20 69 66 20 61 6e 64 20 6f 6e  sed()] if and on
26e20 6c 79 20 69 66 20 74 68 65 20 70 61 72 61 6d 65  ly if the parame
26e30 74 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  ter to.** [sqlit
26e40 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
26e50 74 65 72 28 29 5d 20 69 73 20 74 72 75 65 2e 20  ter()] is true. 
26e60 20 5e 54 68 65 20 76 61 6c 75 65 20 72 65 74 75   ^The value retu
26e70 72 6e 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c 69  rned.** by [sqli
26e80 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
26e90 61 74 65 72 28 31 29 5d 20 69 73 20 74 68 65 20  ater(1)] is the 
26ea0 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 0a  high-water mark.
26eb0 2a 2a 20 70 72 69 6f 72 20 74 6f 20 74 68 65 20  ** prior to the 
26ec0 72 65 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45  reset..*/.SQLITE
26ed0 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e 74  _API sqlite3_int
26ee0 36 34 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  64 sqlite3_memor
26ef0 79 5f 75 73 65 64 28 76 6f 69 64 29 3b 0a 53 51  y_used(void);.SQ
26f00 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33  LITE_API sqlite3
26f10 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6d  _int64 sqlite3_m
26f20 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
26f30 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0a  int resetFlag);.
26f40 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
26f50 20 50 73 65 75 64 6f 2d 52 61 6e 64 6f 6d 20 4e   Pseudo-Random N
26f60 75 6d 62 65 72 20 47 65 6e 65 72 61 74 6f 72 0a  umber Generator.
26f70 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 63 6f 6e  **.** SQLite con
26f80 74 61 69 6e 73 20 61 20 68 69 67 68 2d 71 75 61  tains a high-qua
26f90 6c 69 74 79 20 70 73 65 75 64 6f 2d 72 61 6e 64  lity pseudo-rand
26fa0 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61  om number genera
26fb0 74 6f 72 20 28 50 52 4e 47 29 20 75 73 65 64 20  tor (PRNG) used 
26fc0 74 6f 0a 2a 2a 20 73 65 6c 65 63 74 20 72 61 6e  to.** select ran
26fd0 64 6f 6d 20 5b 52 4f 57 49 44 20 7c 20 52 4f 57  dom [ROWID | ROW
26fe0 49 44 73 5d 20 77 68 65 6e 20 69 6e 73 65 72 74  IDs] when insert
26ff0 69 6e 67 20 6e 65 77 20 72 65 63 6f 72 64 73 20  ing new records 
27000 69 6e 74 6f 20 61 20 74 61 62 6c 65 20 74 68 61  into a table tha
27010 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 75 73 65  t.** already use
27020 73 20 74 68 65 20 6c 61 72 67 65 73 74 20 70 6f  s the largest po
27030 73 73 69 62 6c 65 20 5b 52 4f 57 49 44 5d 2e 20  ssible [ROWID]. 
27040 20 54 68 65 20 50 52 4e 47 20 69 73 20 61 6c 73   The PRNG is als
27050 6f 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 68  o used for.** th
27060 65 20 62 75 69 6c 64 2d 69 6e 20 72 61 6e 64 6f  e build-in rando
27070 6d 28 29 20 61 6e 64 20 72 61 6e 64 6f 6d 62 6c  m() and randombl
27080 6f 62 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ob() SQL functio
27090 6e 73 2e 20 20 54 68 69 73 20 69 6e 74 65 72 66  ns.  This interf
270a0 61 63 65 20 61 6c 6c 6f 77 73 0a 2a 2a 20 61 70  ace allows.** ap
270b0 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 61 63  plications to ac
270c0 63 65 73 73 20 74 68 65 20 73 61 6d 65 20 50 52  cess the same PR
270d0 4e 47 20 66 6f 72 20 6f 74 68 65 72 20 70 75 72  NG for other pur
270e0 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20  poses..**.** ^A 
270f0 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72 6f 75  call to this rou
27100 74 69 6e 65 20 73 74 6f 72 65 73 20 4e 20 62 79  tine stores N by
27110 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73  tes of randomnes
27120 73 20 69 6e 74 6f 20 62 75 66 66 65 72 20 50 2e  s into buffer P.
27130 0a 2a 2a 20 5e 54 68 65 20 50 20 70 61 72 61 6d  .** ^The P param
27140 65 74 65 72 20 63 61 6e 20 62 65 20 61 20 4e 55  eter can be a NU
27150 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a  LL pointer..**.*
27160 2a 20 5e 49 66 20 74 68 69 73 20 72 6f 75 74 69  * ^If this routi
27170 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ne has not been 
27180 70 72 65 76 69 6f 75 73 6c 79 20 63 61 6c 6c 65  previously calle
27190 64 20 6f 72 20 69 66 20 74 68 65 20 70 72 65 76  d or if the prev
271a0 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c 20 68 61 64  ious.** call had
271b0 20 4e 20 6c 65 73 73 20 74 68 61 6e 20 6f 6e 65   N less than one
271c0 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   or a NULL point
271d0 65 72 20 66 6f 72 20 50 2c 20 74 68 65 6e 20 74  er for P, then t
271e0 68 65 20 50 52 4e 47 20 69 73 0a 2a 2a 20 73 65  he PRNG is.** se
271f0 65 64 65 64 20 75 73 69 6e 67 20 72 61 6e 64 6f  eded using rando
27200 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 20 66  mness obtained f
27210 72 6f 6d 20 74 68 65 20 78 52 61 6e 64 6f 6d 6e  rom the xRandomn
27220 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 0a 2a 2a  ess method of.**
27230 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 73 71   the default [sq
27240 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
27250 74 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 70 72  t..** ^If the pr
27260 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 74  evious call to t
27270 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61 64 20  his routine had 
27280 61 6e 20 4e 20 6f 66 20 31 20 6f 72 20 6d 6f 72  an N of 1 or mor
27290 65 20 61 6e 64 20 61 0a 2a 2a 20 6e 6f 6e 2d 4e  e and a.** non-N
272a0 55 4c 4c 20 50 20 74 68 65 6e 20 74 68 65 20 70  ULL P then the p
272b0 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6e 65 73 73  seudo-randomness
272c0 20 69 73 20 67 65 6e 65 72 61 74 65 64 0a 2a 2a   is generated.**
272d0 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20   internally and 
272e0 77 69 74 68 6f 75 74 20 72 65 63 6f 75 72 73 65  without recourse
272f0 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
27300 5f 76 66 73 5d 20 78 52 61 6e 64 6f 6d 6e 65 73  _vfs] xRandomnes
27310 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e 0a 2a 2f 0a  s.** method..*/.
27320 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
27330 73 71 6c 69 74 65 33 5f 72 61 6e 64 6f 6d 6e 65  sqlite3_randomne
27340 73 73 28 69 6e 74 20 4e 2c 20 76 6f 69 64 20 2a  ss(int N, void *
27350 50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  P);../*.** CAPI3
27360 52 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54 69 6d  REF: Compile-Tim
27370 65 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e Authorization 
27380 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d 45 54  Callbacks.** MET
27390 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 20  HOD: sqlite3.** 
273a0 4b 45 59 57 4f 52 44 53 3a 20 7b 61 75 74 68 6f  KEYWORDS: {autho
273b0 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 7d 0a  rizer callback}.
273c0 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74  **.** ^This rout
273d0 69 6e 65 20 72 65 67 69 73 74 65 72 73 20 61 6e  ine registers an
273e0 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
273f0 62 61 63 6b 20 77 69 74 68 20 61 20 70 61 72 74  back with a part
27400 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74 61 62  icular.** [datab
27410 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2c  ase connection],
27420 20 73 75 70 70 6c 69 65 64 20 69 6e 20 74 68 65   supplied in the
27430 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e   first argument.
27440 0a 2a 2a 20 5e 54 68 65 20 61 75 74 68 6f 72 69  .** ^The authori
27450 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
27460 69 6e 76 6f 6b 65 64 20 61 73 20 53 51 4c 20 73  invoked as SQL s
27470 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 62 65  tatements are be
27480 69 6e 67 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20  ing compiled.** 
27490 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  by [sqlite3_prep
274a0 61 72 65 28 29 5d 20 6f 72 20 69 74 73 20 76 61  are()] or its va
274b0 72 69 61 6e 74 73 20 5b 73 71 6c 69 74 65 33 5f  riants [sqlite3_
274c0 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 0a 2a  prepare_v2()],.*
274d0 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
274e0 72 65 5f 76 33 28 29 5d 2c 20 5b 73 71 6c 69 74  re_v3()], [sqlit
274f0 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c  e3_prepare16()],
27500 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
27510 65 31 36 5f 76 32 28 29 5d 2c 0a 2a 2a 20 61 6e  e16_v2()],.** an
27520 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  d [sqlite3_prepa
27530 72 65 31 36 5f 76 33 28 29 5d 2e 20 20 5e 41 74  re16_v3()].  ^At
27540 20 76 61 72 69 6f 75 73 0a 2a 2a 20 70 6f 69 6e   various.** poin
27550 74 73 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f  ts during the co
27560 6d 70 69 6c 61 74 69 6f 6e 20 70 72 6f 63 65 73  mpilation proces
27570 73 2c 20 61 73 20 6c 6f 67 69 63 20 69 73 20 62  s, as logic is b
27580 65 69 6e 67 20 63 72 65 61 74 65 64 0a 2a 2a 20  eing created.** 
27590 74 6f 20 70 65 72 66 6f 72 6d 20 76 61 72 69 6f  to perform vario
275a0 75 73 20 61 63 74 69 6f 6e 73 2c 20 74 68 65 20  us actions, the 
275b0 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
275c0 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 74  ack is invoked t
275d0 6f 0a 2a 2a 20 73 65 65 20 69 66 20 74 68 6f 73  o.** see if thos
275e0 65 20 61 63 74 69 6f 6e 73 20 61 72 65 20 61 6c  e actions are al
275f0 6c 6f 77 65 64 2e 20 20 5e 54 68 65 20 61 75 74  lowed.  ^The aut
27600 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
27610 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75 72   should.** retur
27620 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 74 6f  n [SQLITE_OK] to
27630 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74 69 6f   allow the actio
27640 6e 2c 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52  n, [SQLITE_IGNOR
27650 45 5d 20 74 6f 20 64 69 73 61 6c 6c 6f 77 20 74  E] to disallow t
27660 68 65 0a 2a 2a 20 73 70 65 63 69 66 69 63 20 61  he.** specific a
27670 63 74 69 6f 6e 20 62 75 74 20 61 6c 6c 6f 77 20  ction but allow 
27680 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
27690 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f  t to continue to
276a0 20 62 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 2c   be.** compiled,
276b0 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59   or [SQLITE_DENY
276c0 5d 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 65  ] to cause the e
276d0 6e 74 69 72 65 20 53 51 4c 20 73 74 61 74 65 6d  ntire SQL statem
276e0 65 6e 74 20 74 6f 20 62 65 0a 2a 2a 20 72 65 6a  ent to be.** rej
276f0 65 63 74 65 64 20 77 69 74 68 20 61 6e 20 65 72  ected with an er
27700 72 6f 72 2e 20 20 5e 49 66 20 74 68 65 20 61 75  ror.  ^If the au
27710 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
27720 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 6e 79  k returns.** any
27730 20 76 61 6c 75 65 20 6f 74 68 65 72 20 74 68 61   value other tha
27740 6e 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  n [SQLITE_IGNORE
27750 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20  ], [SQLITE_OK], 
27760 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59 5d  or [SQLITE_DENY]
27770 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 5b 73 71  .** then the [sq
27780 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
27790 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65 6e  ()] or equivalen
277a0 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69 67  t call that trig
277b0 67 65 72 65 64 0a 2a 2a 20 74 68 65 20 61 75 74  gered.** the aut
277c0 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61 69  horizer will fai
277d0 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20  l with an error 
277e0 6d 65 73 73 61 67 65 2e 0a 2a 2a 0a 2a 2a 20 57  message..**.** W
277f0 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  hen the callback
27800 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
27810 5f 4f 4b 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  _OK], that means
27820 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a 2a   the operation.*
27830 2a 20 72 65 71 75 65 73 74 65 64 20 69 73 20 6f  * requested is o
27840 6b 2e 20 20 5e 57 68 65 6e 20 74 68 65 20 63 61  k.  ^When the ca
27850 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b  llback returns [
27860 53 51 4c 49 54 45 5f 44 45 4e 59 5d 2c 20 74 68  SQLITE_DENY], th
27870 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  e.** [sqlite3_pr
27880 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 65  epare_v2()] or e
27890 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20 74  quivalent call t
278a0 68 61 74 20 74 72 69 67 67 65 72 65 64 20 74 68  hat triggered th
278b0 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 72 20  e.** authorizer 
278c0 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
278d0 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
278e0 65 78 70 6c 61 69 6e 69 6e 67 20 74 68 61 74 0a  explaining that.
278f0 2a 2a 20 61 63 63 65 73 73 20 69 73 20 64 65 6e  ** access is den
27900 69 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ied. .**.** ^The
27910 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
27920 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a   to the authoriz
27930 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61  er callback is a
27940 20 63 6f 70 79 20 6f 66 20 74 68 65 20 74 68 69   copy of the thi
27950 72 64 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20  rd.** parameter 
27960 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 73  to the sqlite3_s
27970 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 20  et_authorizer() 
27980 69 6e 74 65 72 66 61 63 65 2e 20 5e 54 68 65 20  interface. ^The 
27990 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
279a0 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  .** to the callb
279b0 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67 65  ack is an intege
279c0 72 20 5b 53 51 4c 49 54 45 5f 43 4f 50 59 20 7c  r [SQLITE_COPY |
279d0 20 61 63 74 69 6f 6e 20 63 6f 64 65 5d 20 74 68   action code] th
279e0 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20  at specifies.** 
279f0 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 61  the particular a
27a00 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75 74 68  ction to be auth
27a10 6f 72 69 7a 65 64 2e 20 5e 54 68 65 20 74 68 69  orized. ^The thi
27a20 72 64 20 74 68 72 6f 75 67 68 20 73 69 78 74 68  rd through sixth
27a30 20 70 61 72 61 6d 65 74 65 72 73 0a 2a 2a 20 74   parameters.** t
27a40 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 61  o the callback a
27a50 72 65 20 65 69 74 68 65 72 20 4e 55 4c 4c 20 70  re either NULL p
27a60 6f 69 6e 74 65 72 73 20 6f 72 20 7a 65 72 6f 2d  ointers or zero-
27a70 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e  terminated strin
27a80 67 73 0a 2a 2a 20 74 68 61 74 20 63 6f 6e 74 61  gs.** that conta
27a90 69 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 65  in additional de
27aa0 74 61 69 6c 73 20 61 62 6f 75 74 20 74 68 65 20  tails about the 
27ab0 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75 74  action to be aut
27ac0 68 6f 72 69 7a 65 64 2e 0a 2a 2a 20 41 70 70 6c  horized..** Appl
27ad0 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  ications must al
27ae0 77 61 79 73 20 62 65 20 70 72 65 70 61 72 65 64  ways be prepared
27af0 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 20 61 20   to encounter a 
27b00 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 6e 20  NULL pointer in 
27b10 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 74 68  any.** of the th
27b20 69 72 64 20 74 68 72 6f 75 67 68 20 74 68 65 20  ird through the 
27b30 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72 73  sixth parameters
27b40 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 69 7a   of the authoriz
27b50 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 2e 0a  ation callback..
27b60 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 61 63  **.** ^If the ac
27b70 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b 53 51  tion code is [SQ
27b80 4c 49 54 45 5f 52 45 41 44 5d 0a 2a 2a 20 61 6e  LITE_READ].** an
27b90 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  d the callback r
27ba0 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 49  eturns [SQLITE_I
27bb0 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74 68 65 0a  GNORE] then the.
27bc0 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
27bd0 74 65 6d 65 6e 74 5d 20 73 74 61 74 65 6d 65 6e  tement] statemen
27be0 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64  t is constructed
27bf0 20 74 6f 20 73 75 62 73 74 69 74 75 74 65 0a 2a   to substitute.*
27c00 2a 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69  * a NULL value i
27c10 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 74  n place of the t
27c20 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 61 74  able column that
27c30 20 77 6f 75 6c 64 20 68 61 76 65 0a 2a 2a 20 62   would have.** b
27c40 65 65 6e 20 72 65 61 64 20 69 66 20 5b 53 51 4c  een read if [SQL
27c50 49 54 45 5f 4f 4b 5d 20 68 61 64 20 62 65 65 6e  ITE_OK] had been
27c60 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65 20   returned.  The 
27c70 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 0a  [SQLITE_IGNORE].
27c80 2a 2a 20 72 65 74 75 72 6e 20 63 61 6e 20 62 65  ** return can be
27c90 20 75 73 65 64 20 74 6f 20 64 65 6e 79 20 61 6e   used to deny an
27ca0 20 75 6e 74 72 75 73 74 65 64 20 75 73 65 72 20   untrusted user 
27cb0 61 63 63 65 73 73 20 74 6f 20 69 6e 64 69 76 69  access to indivi
27cc0 64 75 61 6c 0a 2a 2a 20 63 6f 6c 75 6d 6e 73 20  dual.** columns 
27cd0 6f 66 20 61 20 74 61 62 6c 65 2e 0a 2a 2a 20 5e  of a table..** ^
27ce0 57 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73 20  When a table is 
27cf0 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 61 20  referenced by a 
27d00 5b 53 45 4c 45 43 54 5d 20 62 75 74 20 6e 6f 20  [SELECT] but no 
27d10 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 61 72  column values ar
27d20 65 0a 2a 2a 20 65 78 74 72 61 63 74 65 64 20 66  e.** extracted f
27d30 72 6f 6d 20 74 68 61 74 20 74 61 62 6c 65 20 28  rom that table (
27d40 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e 20 61  for example in a
27d50 20 71 75 65 72 79 20 6c 69 6b 65 0a 2a 2a 20 22   query like.** "
27d60 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
27d70 46 52 4f 4d 20 74 61 62 22 29 20 74 68 65 6e 20  FROM tab") then 
27d80 74 68 65 20 5b 53 51 4c 49 54 45 5f 52 45 41 44  the [SQLITE_READ
27d90 5d 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  ] authorizer cal
27da0 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 69 6e 76 6f  lback.** is invo
27db0 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 74 68 61  ked once for tha
27dc0 74 20 74 61 62 6c 65 20 77 69 74 68 20 61 20 63  t table with a c
27dd0 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 68 61 74 20  olumn name that 
27de0 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  is an empty stri
27df0 6e 67 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 61  ng..** ^If the a
27e00 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b 53  ction code is [S
27e10 51 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20 61 6e  QLITE_DELETE] an
27e20 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  d the callback r
27e30 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54  eturns.** [SQLIT
27e40 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74  E_IGNORE] then t
27e50 68 65 20 5b 44 45 4c 45 54 45 5d 20 6f 70 65 72  he [DELETE] oper
27e60 61 74 69 6f 6e 20 70 72 6f 63 65 65 64 73 20 62  ation proceeds b
27e70 75 74 20 74 68 65 0a 2a 2a 20 5b 74 72 75 6e 63  ut the.** [trunc
27e80 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
27e90 5d 20 69 73 20 64 69 73 61 62 6c 65 64 20 61 6e  ] is disabled an
27ea0 64 20 61 6c 6c 20 72 6f 77 73 20 61 72 65 20 64  d all rows are d
27eb0 65 6c 65 74 65 64 20 69 6e 64 69 76 69 64 75 61  eleted individua
27ec0 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 61 75  lly..**.** An au
27ed0 74 68 6f 72 69 7a 65 72 20 69 73 20 75 73 65 64  thorizer is used
27ee0 20 77 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f 70   when [sqlite3_p
27ef0 72 65 70 61 72 65 20 7c 20 70 72 65 70 61 72 69  repare | prepari
27f00 6e 67 5d 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  ng].** SQL state
27f10 6d 65 6e 74 73 20 66 72 6f 6d 20 61 6e 20 75 6e  ments from an un
27f20 74 72 75 73 74 65 64 20 73 6f 75 72 63 65 2c 20  trusted source, 
27f30 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74  to ensure that t
27f40 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
27f50 73 0a 2a 2a 20 64 6f 20 6e 6f 74 20 74 72 79 20  s.** do not try 
27f60 74 6f 20 61 63 63 65 73 73 20 64 61 74 61 20 74  to access data t
27f70 68 65 79 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f  hey are not allo
27f80 77 65 64 20 74 6f 20 73 65 65 2c 20 6f 72 20 74  wed to see, or t
27f90 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a  hat they do not.
27fa0 2a 2a 20 74 72 79 20 74 6f 20 65 78 65 63 75 74  ** try to execut
27fb0 65 20 6d 61 6c 69 63 69 6f 75 73 20 73 74 61 74  e malicious stat
27fc0 65 6d 65 6e 74 73 20 74 68 61 74 20 64 61 6d 61  ements that dama
27fd0 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ge the database.
27fe0 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c 65    For.** example
27ff0 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
28000 20 6d 61 79 20 61 6c 6c 6f 77 20 61 20 75 73 65   may allow a use
28010 72 20 74 6f 20 65 6e 74 65 72 20 61 72 62 69 74  r to enter arbit
28020 72 61 72 79 0a 2a 2a 20 53 51 4c 20 71 75 65 72  rary.** SQL quer
28030 69 65 73 20 66 6f 72 20 65 76 61 6c 75 61 74 69  ies for evaluati
28040 6f 6e 20 62 79 20 61 20 64 61 74 61 62 61 73 65  on by a database
28050 2e 20 20 42 75 74 20 74 68 65 20 61 70 70 6c 69  .  But the appli
28060 63 61 74 69 6f 6e 20 64 6f 65 73 0a 2a 2a 20 6e  cation does.** n
28070 6f 74 20 77 61 6e 74 20 74 68 65 20 75 73 65 72  ot want the user
28080 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 6d   to be able to m
28090 61 6b 65 20 61 72 62 69 74 72 61 72 79 20 63 68  ake arbitrary ch
280a0 61 6e 67 65 73 20 74 6f 20 74 68 65 0a 2a 2a 20  anges to the.** 
280b0 64 61 74 61 62 61 73 65 2e 20 20 41 6e 20 61 75  database.  An au
280c0 74 68 6f 72 69 7a 65 72 20 63 6f 75 6c 64 20 74  thorizer could t
280d0 68 65 6e 20 62 65 20 70 75 74 20 69 6e 20 70 6c  hen be put in pl
280e0 61 63 65 20 77 68 69 6c 65 20 74 68 65 0a 2a 2a  ace while the.**
280f0 20 75 73 65 72 2d 65 6e 74 65 72 65 64 20 53 51   user-entered SQ
28100 4c 20 69 73 20 62 65 69 6e 67 20 5b 73 71 6c 69  L is being [sqli
28110 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20 70 72  te3_prepare | pr
28120 65 70 61 72 65 64 5d 20 74 68 61 74 0a 2a 2a 20  epared] that.** 
28130 64 69 73 61 6c 6c 6f 77 73 20 65 76 65 72 79 74  disallows everyt
28140 68 69 6e 67 20 65 78 63 65 70 74 20 5b 53 45 4c  hing except [SEL
28150 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ECT] statements.
28160 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  .**.** Applicati
28170 6f 6e 73 20 74 68 61 74 20 6e 65 65 64 20 74 6f  ons that need to
28180 20 70 72 6f 63 65 73 73 20 53 51 4c 20 66 72 6f   process SQL fro
28190 6d 20 75 6e 74 72 75 73 74 65 64 20 73 6f 75 72  m untrusted sour
281a0 63 65 73 0a 2a 2a 20 6d 69 67 68 74 20 61 6c 73  ces.** might als
281b0 6f 20 63 6f 6e 73 69 64 65 72 20 6c 6f 77 65 72  o consider lower
281c0 69 6e 67 20 72 65 73 6f 75 72 63 65 20 6c 69 6d  ing resource lim
281d0 69 74 73 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  its using [sqlit
281e0 65 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20 61  e3_limit()].** a
281f0 6e 64 20 6c 69 6d 69 74 69 6e 67 20 64 61 74 61  nd limiting data
28200 62 61 73 65 20 73 69 7a 65 20 75 73 69 6e 67 20  base size using 
28210 74 68 65 20 5b 6d 61 78 5f 70 61 67 65 5f 63 6f  the [max_page_co
28220 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 0a 2a 2a  unt] [PRAGMA].**
28230 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
28240 75 73 69 6e 67 20 61 6e 20 61 75 74 68 6f 72 69  using an authori
28250 7a 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 4f 6e 6c  zer..**.** ^(Onl
28260 79 20 61 20 73 69 6e 67 6c 65 20 61 75 74 68 6f  y a single autho
28270 72 69 7a 65 72 20 63 61 6e 20 62 65 20 69 6e 20  rizer can be in 
28280 70 6c 61 63 65 20 6f 6e 20 61 20 64 61 74 61 62  place on a datab
28290 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase connection.*
282a0 2a 20 61 74 20 61 20 74 69 6d 65 2e 20 20 45 61  * at a time.  Ea
282b0 63 68 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74  ch call to sqlit
282c0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
282d0 72 20 6f 76 65 72 72 69 64 65 73 20 74 68 65 0a  r overrides the.
282e0 2a 2a 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c  ** previous call
282f0 2e 29 5e 20 20 5e 44 69 73 61 62 6c 65 20 74 68  .)^  ^Disable th
28300 65 20 61 75 74 68 6f 72 69 7a 65 72 20 62 79 20  e authorizer by 
28310 69 6e 73 74 61 6c 6c 69 6e 67 20 61 20 4e 55 4c  installing a NUL
28320 4c 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 54  L callback..** T
28330 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 69 73  he authorizer is
28340 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
28350 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ault..**.** The 
28360 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
28370 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64 6f 20  ack must not do 
28380 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 77 69  anything that wi
28390 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74 68 65  ll modify.** the
283a0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
283b0 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b 65  tion that invoke
283c0 64 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  d the authorizer
283d0 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 4e 6f   callback..** No
283e0 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33  te that [sqlite3
283f0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61  _prepare_v2()] a
28400 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  nd [sqlite3_step
28410 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66 79 20  ()] both modify 
28420 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62 61 73  their.** databas
28430 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f  e connections fo
28440 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66  r the meaning of
28450 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74 68 69   "modify" in thi
28460 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a 2a 0a  s paragraph..**.
28470 2a 2a 20 5e 57 68 65 6e 20 5b 73 71 6c 69 74 65  ** ^When [sqlite
28480 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
28490 69 73 20 75 73 65 64 20 74 6f 20 70 72 65 70 61  is used to prepa
284a0 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74 2c 20  re a statement, 
284b0 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  the.** statement
284c0 20 6d 69 67 68 74 20 62 65 20 72 65 2d 70 72 65   might be re-pre
284d0 70 61 72 65 64 20 64 75 72 69 6e 67 20 5b 73 71  pared during [sq
284e0 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 64 75  lite3_step()] du
284f0 65 20 74 6f 20 61 20 0a 2a 2a 20 73 63 68 65 6d  e to a .** schem
28500 61 20 63 68 61 6e 67 65 2e 20 20 48 65 6e 63 65  a change.  Hence
28510 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  , the applicatio
28520 6e 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65 20  n should ensure 
28530 74 68 61 74 20 74 68 65 0a 2a 2a 20 63 6f 72 72  that the.** corr
28540 65 63 74 20 61 75 74 68 6f 72 69 7a 65 72 20 63  ect authorizer c
28550 61 6c 6c 62 61 63 6b 20 72 65 6d 61 69 6e 73 20  allback remains 
28560 69 6e 20 70 6c 61 63 65 20 64 75 72 69 6e 67 20  in place during 
28570 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  the [sqlite3_ste
28580 70 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 4e 6f 74  p()]..**.** ^Not
28590 65 20 74 68 61 74 20 74 68 65 20 61 75 74 68 6f  e that the autho
285a0 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  rizer callback i
285b0 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 6c 79 20 64  s invoked only d
285c0 75 72 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  uring.** [sqlite
285d0 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f 72 20  3_prepare()] or 
285e0 69 74 73 20 76 61 72 69 61 6e 74 73 2e 20 20 41  its variants.  A
285f0 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 69 73 20  uthorization is 
28600 6e 6f 74 0a 2a 2a 20 70 65 72 66 6f 72 6d 65 64  not.** performed
28610 20 64 75 72 69 6e 67 20 73 74 61 74 65 6d 65 6e   during statemen
28620 74 20 65 76 61 6c 75 61 74 69 6f 6e 20 69 6e 20  t evaluation in 
28630 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
28640 2c 20 75 6e 6c 65 73 73 0a 2a 2a 20 61 73 20 73  , unless.** as s
28650 74 61 74 65 64 20 69 6e 20 74 68 65 20 70 72 65  tated in the pre
28660 76 69 6f 75 73 20 70 61 72 61 67 72 61 70 68 2c  vious paragraph,
28670 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
28680 69 6e 76 6f 6b 65 73 0a 2a 2a 20 73 71 6c 69 74  invokes.** sqlit
28690 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 20  e3_prepare_v2() 
286a0 74 6f 20 72 65 70 72 65 70 61 72 65 20 61 20 73  to reprepare a s
286b0 74 61 74 65 6d 65 6e 74 20 61 66 74 65 72 20 61  tatement after a
286c0 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2e 0a   schema change..
286d0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
286e0 74 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  t sqlite3_set_au
286f0 74 68 6f 72 69 7a 65 72 28 0a 20 20 73 71 6c 69  thorizer(.  sqli
28700 74 65 33 2a 2c 0a 20 20 69 6e 74 20 28 2a 78 41  te3*,.  int (*xA
28710 75 74 68 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63  uth)(void*,int,c
28720 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
28730 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61   char*,const cha
28740 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c  r*,const char*),
28750 0a 20 20 76 6f 69 64 20 2a 70 55 73 65 72 44 61  .  void *pUserDa
28760 74 61 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ta.);../*.** CAP
28770 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a 65  I3REF: Authorize
28780 72 20 52 65 74 75 72 6e 20 43 6f 64 65 73 0a 2a  r Return Codes.*
28790 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  *.** The [sqlite
287a0 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
287b0 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61   | authorizer ca
287c0 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 5d  llback function]
287d0 20 6d 75 73 74 0a 2a 2a 20 72 65 74 75 72 6e 20   must.** return 
287e0 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45 5f 4f  either [SQLITE_O
287f0 4b 5d 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65  K] or one of the
28800 73 65 20 74 77 6f 20 63 6f 6e 73 74 61 6e 74 73  se two constants
28810 20 69 6e 20 6f 72 64 65 72 0a 2a 2a 20 74 6f 20   in order.** to 
28820 73 69 67 6e 61 6c 20 53 51 4c 69 74 65 20 77 68  signal SQLite wh
28830 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
28840 20 61 63 74 69 6f 6e 20 69 73 20 70 65 72 6d 69   action is permi
28850 74 74 65 64 2e 20 20 53 65 65 20 74 68 65 0a 2a  tted.  See the.*
28860 2a 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  * [sqlite3_set_a
28870 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75 74 68  uthorizer | auth
28880 6f 72 69 7a 65 72 20 64 6f 63 75 6d 65 6e 74 61  orizer documenta
28890 74 69 6f 6e 5d 20 66 6f 72 20 61 64 64 69 74 69  tion] for additi
288a0 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74  onal.** informat
288b0 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20  ion..**.** Note 
288c0 74 68 61 74 20 53 51 4c 49 54 45 5f 49 47 4e 4f  that SQLITE_IGNO
288d0 52 45 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20  RE is also used 
288e0 61 73 20 61 20 5b 63 6f 6e 66 6c 69 63 74 20 72  as a [conflict r
288f0 65 73 6f 6c 75 74 69 6f 6e 20 6d 6f 64 65 5d 0a  esolution mode].
28900 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  ** returned from
28910 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74   the [sqlite3_vt
28920 61 62 5f 6f 6e 5f 63 6f 6e 66 6c 69 63 74 28 29  ab_on_conflict()
28930 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a  ] interface..*/.
28940 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
28950 45 4e 59 20 20 20 31 20 20 20 2f 2a 20 41 62 6f  ENY   1   /* Abo
28960 72 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  rt the SQL state
28970 6d 65 6e 74 20 77 69 74 68 20 61 6e 20 65 72 72  ment with an err
28980 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  or */.#define SQ
28990 4c 49 54 45 5f 49 47 4e 4f 52 45 20 32 20 20 20  LITE_IGNORE 2   
289a0 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c 6f 77 20 61  /* Don't allow a
289b0 63 63 65 73 73 2c 20 62 75 74 20 64 6f 6e 27 74  ccess, but don't
289c0 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65 72 72   generate an err
289d0 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  or */../*.** CAP
289e0 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a 65  I3REF: Authorize
289f0 72 20 41 63 74 69 6f 6e 20 43 6f 64 65 73 0a 2a  r Action Codes.*
28a00 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  *.** The [sqlite
28a10 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
28a20 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 72 65  ()] interface re
28a30 67 69 73 74 65 72 73 20 61 20 63 61 6c 6c 62 61  gisters a callba
28a40 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 74  ck function.** t
28a50 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 74  hat is invoked t
28a60 6f 20 61 75 74 68 6f 72 69 7a 65 20 63 65 72 74  o authorize cert
28a70 61 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ain SQL statemen
28a80 74 20 61 63 74 69 6f 6e 73 2e 20 20 54 68 65 0a  t actions.  The.
28a90 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  ** second parame
28aa0 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ter to the callb
28ab0 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67 65  ack is an intege
28ac0 72 20 63 6f 64 65 20 74 68 61 74 20 73 70 65 63  r code that spec
28ad0 69 66 69 65 73 0a 2a 2a 20 77 68 61 74 20 61 63  ifies.** what ac
28ae0 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 61 75  tion is being au
28af0 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65 73 65  thorized.  These
28b00 20 61 72 65 20 74 68 65 20 69 6e 74 65 67 65 72   are the integer
28b10 20 61 63 74 69 6f 6e 20 63 6f 64 65 73 20 74 68   action codes th
28b20 61 74 0a 2a 2a 20 74 68 65 20 61 75 74 68 6f 72  at.** the author
28b30 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 61  izer callback ma
28b40 79 20 62 65 20 70 61 73 73 65 64 2e 0a 2a 2a 0a  y be passed..**.
28b50 2a 2a 20 54 68 65 73 65 20 61 63 74 69 6f 6e 20  ** These action 
28b60 63 6f 64 65 20 76 61 6c 75 65 73 20 73 69 67 6e  code values sign
28b70 69 66 79 20 77 68 61 74 20 6b 69 6e 64 20 6f 66  ify what kind of
28b80 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 74 6f   operation is to
28b90 20 62 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65   be.** authorize
28ba0 64 2e 20 20 54 68 65 20 33 72 64 20 61 6e 64 20  d.  The 3rd and 
28bb0 34 74 68 20 70 61 72 61 6d 65 74 65 72 73 20 74  4th parameters t
28bc0 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74  o the authorizat
28bd0 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20  ion.** callback 
28be0 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
28bf0 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 4e   parameters or N
28c00 55 4c 4c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ULL depending on
28c10 20 77 68 69 63 68 20 6f 66 20 74 68 65 73 65 0a   which of these.
28c20 2a 2a 20 63 6f 64 65 73 20 69 73 20 75 73 65 64  ** codes is used
28c30 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70   as the second p
28c40 61 72 61 6d 65 74 65 72 2e 20 20 5e 28 54 68 65  arameter.  ^(The
28c50 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20 74   5th parameter t
28c60 6f 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69  o the.** authori
28c70 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
28c80 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
28c90 64 61 74 61 62 61 73 65 20 28 22 6d 61 69 6e 22  database ("main"
28ca0 2c 20 22 74 65 6d 70 22 2c 0a 2a 2a 20 65 74 63  , "temp",.** etc
28cb0 2e 29 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  .) if applicable
28cc0 2e 29 5e 20 20 5e 54 68 65 20 36 74 68 20 70 61  .)^  ^The 6th pa
28cd0 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61  rameter to the a
28ce0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
28cf0 63 6b 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d  ck.** is the nam
28d00 65 20 6f 66 20 74 68 65 20 69 6e 6e 65 72 2d 6d  e of the inner-m
28d10 6f 73 74 20 74 72 69 67 67 65 72 20 6f 72 20 76  ost trigger or v
28d20 69 65 77 20 74 68 61 74 20 69 73 20 72 65 73 70  iew that is resp
28d30 6f 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a 20 74  onsible for.** t
28d40 68 65 20 61 63 63 65 73 73 20 61 74 74 65 6d 70  he access attemp
28d50 74 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 69  t or NULL if thi
28d60 73 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74  s access attempt
28d70 20 69 73 20 64 69 72 65 63 74 6c 79 20 66 72 6f   is directly fro
28d80 6d 0a 2a 2a 20 74 6f 70 2d 6c 65 76 65 6c 20 53  m.** top-level S
28d90 51 4c 20 63 6f 64 65 2e 0a 2a 2f 0a 2f 2a 2a 2a  QL code..*/./***
28da0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
28db0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
28dc0 2a 2a 2a 2a 2a 2a 2a 2a 20 33 72 64 20 2a 2a 2a  ******** 3rd ***
28dd0 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 34 74 68 20 2a 2a  ********* 4th **
28de0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65 66 69  *********/.#defi
28df0 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
28e00 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20 20  _INDEX          
28e10 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d  1   /* Index Nam
28e20 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  e      Table Nam
28e30 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
28e40 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
28e50 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 32  TABLE          2
28e60 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
28e70 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
28e80 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
28e90 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
28ea0 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 33 20  EMP_INDEX     3 
28eb0 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20    /* Index Name 
28ec0 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20       Table Name 
28ed0 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
28ee0 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
28ef0 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34 20 20  MP_TABLE     4  
28f00 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
28f10 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
28f20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
28f30 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d  QLITE_CREATE_TEM
28f40 50 5f 54 52 49 47 47 45 52 20 20 20 35 20 20 20  P_TRIGGER   5   
28f50 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20  /* Trigger Name 
28f60 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
28f70 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
28f80 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50  LITE_CREATE_TEMP
28f90 5f 56 49 45 57 20 20 20 20 20 20 36 20 20 20 2f  _VIEW      6   /
28fa0 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20  * View Name     
28fb0 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
28fc0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
28fd0 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49 47 47  ITE_CREATE_TRIGG
28fe0 45 52 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a  ER        7   /*
28ff0 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20   Trigger Name   
29000 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
29010 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
29020 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57 20 20  TE_CREATE_VIEW  
29030 20 20 20 20 20 20 20 20 20 38 20 20 20 2f 2a 20           8   /* 
29040 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20  View Name       
29050 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
29060 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
29070 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20 20  E_DELETE        
29080 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a 20 54          9   /* T
29090 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
290a0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
290b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
290c0 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20 20 20  _DROP_INDEX     
290d0 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 49 6e        10   /* In
290e0 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
290f0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
29100 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29110 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20 20 20  DROP_TABLE      
29120 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 61 62       11   /* Tab
29130 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
29140 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
29150 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
29160 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20  ROP_TEMP_INDEX  
29170 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e 64 65      12   /* Inde
29180 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c  x Name      Tabl
29190 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
291a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
291b0 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20 20  OP_TEMP_TABLE   
291c0 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62 6c 65     13   /* Table
291d0 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
291e0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
291f0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
29200 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20 20  P_TEMP_TRIGGER  
29210 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67 67 65    14   /* Trigge
29220 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
29230 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
29240 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
29250 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20 20  _TEMP_VIEW      
29260 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20 4e 61   15   /* View Na
29270 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
29280 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
29290 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
292a0 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20 20  TRIGGER         
292b0 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20  16   /* Trigger 
292c0 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61  Name    Table Na
292d0 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
292e0 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56  ne SQLITE_DROP_V
292f0 49 45 57 20 20 20 20 20 20 20 20 20 20 20 20 31  IEW            1
29300 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65  7   /* View Name
29310 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
29320 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
29330 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52 54 20  e SQLITE_INSERT 
29340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 38                18
29350 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
29360 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
29370 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
29380 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41 20 20   SQLITE_PRAGMA  
29390 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39 20               19 
293a0 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61 6d 65    /* Pragma Name
293b0 20 20 20 20 20 31 73 74 20 61 72 67 20 6f 72 20       1st arg or 
293c0 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e 65 20  NULL */.#define 
293d0 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20 20 20  SQLITE_READ     
293e0 20 20 20 20 20 20 20 20 20 20 20 20 32 30 20 20              20  
293f0 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
29400 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20      Column Name 
29410 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
29420 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20 20 20  QLITE_SELECT    
29430 20 20 20 20 20 20 20 20 20 20 20 32 31 20 20 20             21   
29440 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20  /* NULL         
29450 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
29460 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
29470 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49 4f 4e  LITE_TRANSACTION
29480 20 20 20 20 20 20 20 20 20 20 32 32 20 20 20 2f            22   /
29490 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20 20 20 20  * Operation     
294a0 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
294b0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
294c0 49 54 45 5f 55 50 44 41 54 45 20 20 20 20 20 20  ITE_UPDATE      
294d0 20 20 20 20 20 20 20 20 20 32 33 20 20 20 2f 2a           23   /*
294e0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
294f0 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20   Column Name    
29500 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
29510 54 45 5f 41 54 54 41 43 48 20 20 20 20 20 20 20  TE_ATTACH       
29520 20 20 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20          24   /* 
29530 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20 20 20  Filename        
29540 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
29550 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
29560 45 5f 44 45 54 41 43 48 20 20 20 20 20 20 20 20  E_DETACH        
29570 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 44         25   /* D
29580 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 4e  atabase Name   N
29590 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
295a0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
295b0 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20 20 20  _ALTER_TABLE    
295c0 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 44 61        26   /* Da
295d0 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 54 61  tabase Name   Ta
295e0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
295f0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29600 52 45 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  REINDEX         
29610 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49 6e 64       27   /* Ind
29620 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  ex Name      NUL
29630 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
29640 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
29650 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20 20 20  NALYZE          
29660 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61 62 6c      28   /* Tabl
29670 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
29680 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
29690 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
296a0 45 41 54 45 5f 56 54 41 42 4c 45 20 20 20 20 20  EATE_VTABLE     
296b0 20 20 20 32 39 20 20 20 2f 2a 20 54 61 62 6c 65     29   /* Table
296c0 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c   Name      Modul
296d0 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  e Name     */.#d
296e0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
296f0 50 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20 20  P_VTABLE        
29700 20 20 33 30 20 20 20 2f 2a 20 54 61 62 6c 65 20    30   /* Table 
29710 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c 65  Name      Module
29720 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65   Name     */.#de
29730 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4e 43  fine SQLITE_FUNC
29740 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20  TION            
29750 20 33 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20   31   /* NULL   
29760 20 20 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f           Functio
29770 6e 20 4e 61 6d 65 20 20 20 2a 2f 0a 23 64 65 66  n Name   */.#def
29780 69 6e 65 20 53 51 4c 49 54 45 5f 53 41 56 45 50  ine SQLITE_SAVEP
29790 4f 49 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  OINT            
297a0 33 32 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f  32   /* Operatio
297b0 6e 20 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e  n       Savepoin
297c0 74 20 4e 61 6d 65 20 20 2a 2f 0a 23 64 65 66 69  t Name  */.#defi
297d0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59 20 20  ne SQLITE_COPY  
297e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297f0 30 20 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72  0   /* No longer
29800 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65   used */.#define
29810 20 53 51 4c 49 54 45 5f 52 45 43 55 52 53 49 56   SQLITE_RECURSIV
29820 45 20 20 20 20 20 20 20 20 20 20 20 20 33 33 20  E            33 
29830 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20    /* NULL       
29840 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
29850 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43       */../*.** C
29860 41 50 49 33 52 45 46 3a 20 54 72 61 63 69 6e 67  API3REF: Tracing
29870 20 41 6e 64 20 50 72 6f 66 69 6c 69 6e 67 20 46   And Profiling F
29880 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48  unctions.** METH
29890 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
298a0 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
298b0 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64 2e   are deprecated.
298c0 20 55 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65   Use the [sqlite
298d0 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 69 6e  3_trace_v2()] in
298e0 74 65 72 66 61 63 65 0a 2a 2a 20 69 6e 73 74 65  terface.** inste
298f0 61 64 20 6f 66 20 74 68 65 20 72 6f 75 74 69 6e  ad of the routin
29900 65 73 20 64 65 73 63 72 69 62 65 64 20 68 65 72  es described her
29910 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  e..**.** These r
29920 6f 75 74 69 6e 65 73 20 72 65 67 69 73 74 65 72  outines register
29930 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
29940 6f 6e 73 20 74 68 61 74 20 63 61 6e 20 62 65 20  ons that can be 
29950 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 72 61 63  used for.** trac
29960 69 6e 67 20 61 6e 64 20 70 72 6f 66 69 6c 69 6e  ing and profilin
29970 67 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20  g the execution 
29980 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  of SQL statement
29990 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63 61  s..**.** ^The ca
299a0 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
299b0 72 65 67 69 73 74 65 72 65 64 20 62 79 20 73 71  registered by sq
299c0 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 69 73  lite3_trace() is
299d0 20 69 6e 76 6f 6b 65 64 20 61 74 0a 2a 2a 20 76   invoked at.** v
299e0 61 72 69 6f 75 73 20 74 69 6d 65 73 20 77 68 65  arious times whe
299f0 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  n an SQL stateme
29a00 6e 74 20 69 73 20 62 65 69 6e 67 20 72 75 6e 20  nt is being run 
29a10 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  by [sqlite3_step
29a20 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ()]..** ^The sql
29a30 69 74 65 33 5f 74 72 61 63 65 28 29 20 63 61 6c  ite3_trace() cal
29a40 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
29a50 20 77 69 74 68 20 61 20 55 54 46 2d 38 20 72 65   with a UTF-8 re
29a60 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65 0a 2a  ndering of the.*
29a70 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  * SQL statement 
29a80 74 65 78 74 20 61 73 20 74 68 65 20 73 74 61 74  text as the stat
29a90 65 6d 65 6e 74 20 66 69 72 73 74 20 62 65 67 69  ement first begi
29aa0 6e 73 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a  ns executing..**
29ab0 20 5e 28 41 64 64 69 74 69 6f 6e 61 6c 20 73 71   ^(Additional sq
29ac0 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 63 61  lite3_trace() ca
29ad0 6c 6c 62 61 63 6b 73 20 6d 69 67 68 74 20 6f 63  llbacks might oc
29ae0 63 75 72 0a 2a 2a 20 61 73 20 65 61 63 68 20 74  cur.** as each t
29af0 72 69 67 67 65 72 65 64 20 73 75 62 70 72 6f 67  riggered subprog
29b00 72 61 6d 20 69 73 20 65 6e 74 65 72 65 64 2e 20  ram is entered. 
29b10 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73 20 66   The callbacks f
29b20 6f 72 20 74 72 69 67 67 65 72 73 0a 2a 2a 20 63  or triggers.** c
29b30 6f 6e 74 61 69 6e 20 61 20 55 54 46 2d 38 20 53  ontain a UTF-8 S
29b40 51 4c 20 63 6f 6d 6d 65 6e 74 20 74 68 61 74 20  QL comment that 
29b50 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 74  identifies the t
29b60 72 69 67 67 65 72 2e 29 5e 0a 2a 2a 0a 2a 2a 20  rigger.)^.**.** 
29b70 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43  The [SQLITE_TRAC
29b80 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f  E_SIZE_LIMIT] co
29b90 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
29ba0 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
29bb0 20 6c 69 6d 69 74 0a 2a 2a 20 74 68 65 20 6c 65   limit.** the le
29bc0 6e 67 74 68 20 6f 66 20 5b 62 6f 75 6e 64 20 70  ngth of [bound p
29bd0 61 72 61 6d 65 74 65 72 5d 20 65 78 70 61 6e 73  arameter] expans
29be0 69 6f 6e 20 69 6e 20 74 68 65 20 6f 75 74 70 75  ion in the outpu
29bf0 74 20 6f 66 20 73 71 6c 69 74 65 33 5f 74 72 61  t of sqlite3_tra
29c00 63 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ce()..**.** ^The
29c10 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
29c20 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20 62 79  on registered by
29c30 20 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65   sqlite3_profile
29c40 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a  () is invoked.**
29c50 20 61 73 20 65 61 63 68 20 53 51 4c 20 73 74 61   as each SQL sta
29c60 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73 2e  tement finishes.
29c70 20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65 20 63    ^The profile c
29c80 61 6c 6c 62 61 63 6b 20 63 6f 6e 74 61 69 6e 73  allback contains
29c90 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .** the original
29ca0 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20   statement text 
29cb0 61 6e 64 20 61 6e 20 65 73 74 69 6d 61 74 65 20  and an estimate 
29cc0 6f 66 20 77 61 6c 6c 2d 63 6c 6f 63 6b 20 74 69  of wall-clock ti
29cd0 6d 65 0a 2a 2a 20 6f 66 20 68 6f 77 20 6c 6f 6e  me.** of how lon
29ce0 67 20 74 68 61 74 20 73 74 61 74 65 6d 65 6e 74  g that statement
29cf0 20 74 6f 6f 6b 20 74 6f 20 72 75 6e 2e 20 20 5e   took to run.  ^
29d00 54 68 65 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c  The profile call
29d10 62 61 63 6b 0a 2a 2a 20 74 69 6d 65 20 69 73 20  back.** time is 
29d20 69 6e 20 75 6e 69 74 73 20 6f 66 20 6e 61 6e 6f  in units of nano
29d30 73 65 63 6f 6e 64 73 2c 20 68 6f 77 65 76 65 72  seconds, however
29d40 20 74 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70   the current imp
29d50 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20 69  lementation.** i
29d60 73 20 6f 6e 6c 79 20 63 61 70 61 62 6c 65 20 6f  s only capable o
29d70 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 72 65  f millisecond re
29d80 73 6f 6c 75 74 69 6f 6e 20 73 6f 20 74 68 65 20  solution so the 
29d90 73 69 78 20 6c 65 61 73 74 20 73 69 67 6e 69 66  six least signif
29da0 69 63 61 6e 74 0a 2a 2a 20 64 69 67 69 74 73 20  icant.** digits 
29db0 69 6e 20 74 68 65 20 74 69 6d 65 20 61 72 65 20  in the time are 
29dc0 6d 65 61 6e 69 6e 67 6c 65 73 73 2e 20 20 46 75  meaningless.  Fu
29dd0 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
29de0 20 53 51 4c 69 74 65 0a 2a 2a 20 6d 69 67 68 74   SQLite.** might
29df0 20 70 72 6f 76 69 64 65 20 67 72 65 61 74 65 72   provide greater
29e00 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6f 6e 20 74   resolution on t
29e10 68 65 20 70 72 6f 66 69 6c 65 72 20 63 61 6c 6c  he profiler call
29e20 62 61 63 6b 2e 20 20 54 68 65 0a 2a 2a 20 73 71  back.  The.** sq
29e30 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 20  lite3_profile() 
29e40 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 6f 6e 73  function is cons
29e50 69 64 65 72 65 64 20 65 78 70 65 72 69 6d 65 6e  idered experimen
29e60 74 61 6c 20 61 6e 64 20 69 73 0a 2a 2a 20 73 75  tal and is.** su
29e70 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 20  bject to change 
29e80 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f  in future versio
29e90 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2f  ns of SQLite..*/
29ea0 0a 53 51 4c 49 54 45 5f 41 50 49 20 53 51 4c 49  .SQLITE_API SQLI
29eb0 54 45 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f  TE_DEPRECATED vo
29ec0 69 64 20 2a 73 71 6c 69 74 65 33 5f 74 72 61 63  id *sqlite3_trac
29ed0 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20 76  e(sqlite3*,.   v
29ee0 6f 69 64 28 2a 78 54 72 61 63 65 29 28 76 6f 69  oid(*xTrace)(voi
29ef0 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c  d*,const char*),
29f00 20 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45 5f   void*);.SQLITE_
29f10 41 50 49 20 53 51 4c 49 54 45 5f 44 45 50 52 45  API SQLITE_DEPRE
29f20 43 41 54 45 44 20 76 6f 69 64 20 2a 73 71 6c 69  CATED void *sqli
29f30 74 65 33 5f 70 72 6f 66 69 6c 65 28 73 71 6c 69  te3_profile(sqli
29f40 74 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a 78  te3*,.   void(*x
29f50 50 72 6f 66 69 6c 65 29 28 76 6f 69 64 2a 2c 63  Profile)(void*,c
29f60 6f 6e 73 74 20 63 68 61 72 2a 2c 73 71 6c 69 74  onst char*,sqlit
29f70 65 33 5f 75 69 6e 74 36 34 29 2c 20 76 6f 69 64  e3_uint64), void
29f80 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
29f90 52 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20 45  REF: SQL Trace E
29fa0 76 65 6e 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45  vent Codes.** KE
29fb0 59 57 4f 52 44 53 3a 20 53 51 4c 49 54 45 5f 54  YWORDS: SQLITE_T
29fc0 52 41 43 45 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  RACE.**.** These
29fd0 20 63 6f 6e 73 74 61 6e 74 73 20 69 64 65 6e 74   constants ident
29fe0 69 66 79 20 63 6c 61 73 73 65 73 20 6f 66 20 65  ify classes of e
29ff0 76 65 6e 74 73 20 74 68 61 74 20 63 61 6e 20 62  vents that can b
2a000 65 20 6d 6f 6e 69 74 6f 72 65 64 0a 2a 2a 20 75  e monitored.** u
2a010 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74 65  sing the [sqlite
2a020 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 74 72  3_trace_v2()] tr
2a030 61 63 69 6e 67 20 6c 6f 67 69 63 2e 20 20 54 68  acing logic.  Th
2a040 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74  e third argument
2a050 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  .** to [sqlite3_
2a060 74 72 61 63 65 5f 76 32 28 29 5d 20 69 73 20 61  trace_v2()] is a
2a070 6e 20 4f 52 2d 65 64 20 63 6f 6d 62 69 6e 61 74  n OR-ed combinat
2a080 69 6f 6e 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f  ion of one or mo
2a090 72 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c  re of.** the fol
2a0a0 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73  lowing constants
2a0b0 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20 61 72  .  ^The first ar
2a0c0 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 74 72  gument to the tr
2a0d0 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  ace callback.** 
2a0e0 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f  is one of the fo
2a0f0 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74  llowing constant
2a100 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 74 72 61  s..**.** New tra
2a110 63 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 6d  cing constants m
2a120 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66  ay be added in f
2a130 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a  uture releases..
2a140 2a 2a 0a 2a 2a 20 5e 41 20 74 72 61 63 65 20 63  **.** ^A trace c
2a150 61 6c 6c 62 61 63 6b 20 68 61 73 20 66 6f 75 72  allback has four
2a160 20 61 72 67 75 6d 65 6e 74 73 3a 20 78 43 61 6c   arguments: xCal
2a170 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a  lback(T,C,P,X)..
2a180 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d 65  ** ^The T argume
2a190 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65  nt is one of the
2a1a0 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 63 6f   integer type co
2a1b0 64 65 73 20 61 62 6f 76 65 2e 0a 2a 2a 20 5e 54  des above..** ^T
2a1c0 68 65 20 43 20 61 72 67 75 6d 65 6e 74 20 69 73  he C argument is
2a1d0 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63   a copy of the c
2a1e0 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20 70  ontext pointer p
2a1f0 61 73 73 65 64 20 69 6e 20 61 73 20 74 68 65 0a  assed in as the.
2a200 2a 2a 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65  ** fourth argume
2a210 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 74  nt to [sqlite3_t
2a220 72 61 63 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20 54  race_v2()]..** T
2a230 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75 6d  he P and X argum
2a240 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65 72  ents are pointer
2a250 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67 73  s whose meanings
2a260 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a   depend on T..**
2a270 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
2a280 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54 5d  LITE_TRACE_STMT]
2a290 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41  ] <dt>SQLITE_TRA
2a2a0 43 45 5f 53 54 4d 54 3c 2f 64 74 3e 0a 2a 2a 20  CE_STMT</dt>.** 
2a2b0 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54  <dd>^An SQLITE_T
2a2c0 52 41 43 45 5f 53 54 4d 54 20 63 61 6c 6c 62 61  RACE_STMT callba
2a2d0 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68  ck is invoked wh
2a2e0 65 6e 20 61 20 70 72 65 70 61 72 65 64 20 73 74  en a prepared st
2a2f0 61 74 65 6d 65 6e 74 0a 2a 2a 20 66 69 72 73 74  atement.** first
2a300 20 62 65 67 69 6e 73 20 72 75 6e 6e 69 6e 67 20   begins running 
2a310 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 61 74 20  and possibly at 
2a320 6f 74 68 65 72 20 74 69 6d 65 73 20 64 75 72 69  other times duri
2a330 6e 67 20 74 68 65 0a 2a 2a 20 65 78 65 63 75 74  ng the.** execut
2a340 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65 70 61  ion of the prepa
2a350 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c 20 73  red statement, s
2a360 75 63 68 20 61 73 20 61 74 20 74 68 65 20 73 74  uch as at the st
2a370 61 72 74 20 6f 66 20 65 61 63 68 0a 2a 2a 20 74  art of each.** t
2a380 72 69 67 67 65 72 20 73 75 62 70 72 6f 67 72 61  rigger subprogra
2a390 6d 2e 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  m. ^The P argume
2a3a0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2a3b0 74 6f 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61  to the.** [prepa
2a3c0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20  red statement]. 
2a3d0 5e 54 68 65 20 58 20 61 72 67 75 6d 65 6e 74 20  ^The X argument 
2a3e0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
2a3f0 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0a 2a  a string which.*
2a400 2a 20 69 73 20 74 68 65 20 75 6e 65 78 70 61 6e  * is the unexpan
2a410 64 65 64 20 53 51 4c 20 74 65 78 74 20 6f 66 20  ded SQL text of 
2a420 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
2a430 74 65 6d 65 6e 74 20 6f 72 20 61 6e 20 53 51 4c  tement or an SQL
2a440 20 63 6f 6d 6d 65 6e 74 20 0a 2a 2a 20 74 68 61   comment .** tha
2a450 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20  t indicates the 
2a460 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20  invocation of a 
2a470 74 72 69 67 67 65 72 2e 20 20 5e 54 68 65 20 63  trigger.  ^The c
2a480 61 6c 6c 62 61 63 6b 20 63 61 6e 20 63 6f 6d 70  allback can comp
2a490 75 74 65 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20  ute.** the same 
2a4a0 74 65 78 74 20 74 68 61 74 20 77 6f 75 6c 64 20  text that would 
2a4b0 68 61 76 65 20 62 65 65 6e 20 72 65 74 75 72 6e  have been return
2a4c0 65 64 20 62 79 20 74 68 65 20 6c 65 67 61 63 79  ed by the legacy
2a4d0 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28   [sqlite3_trace(
2a4e0 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  )].** interface 
2a4f0 62 79 20 75 73 69 6e 67 20 74 68 65 20 58 20 61  by using the X a
2a500 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 58 20 62  rgument when X b
2a510 65 67 69 6e 73 20 77 69 74 68 20 22 2d 2d 22 20  egins with "--" 
2a520 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20  and invoking.** 
2a530 5b 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65  [sqlite3_expande
2a540 64 5f 73 71 6c 28 50 29 5d 20 6f 74 68 65 72 77  d_sql(P)] otherw
2a550 69 73 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ise..**.** [[SQL
2a560 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c  ITE_TRACE_PROFIL
2a570 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54  E]] <dt>SQLITE_T
2a580 52 41 43 45 5f 50 52 4f 46 49 4c 45 3c 2f 64 74  RACE_PROFILE</dt
2a590 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c  >.** <dd>^An SQL
2a5a0 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c  ITE_TRACE_PROFIL
2a5b0 45 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f 76 69  E callback provi
2a5c0 64 65 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c  des approximatel
2a5d0 79 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 69 6e  y the same.** in
2a5e0 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 69 73 20  formation as is 
2a5f0 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20  provided by the 
2a600 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
2a610 28 29 5d 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a  ()] callback..**
2a620 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74   ^The P argument
2a630 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2a640 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73   the [prepared s
2a650 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68  tatement] and th
2a660 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20  e.** X argument 
2a670 70 6f 69 6e 74 73 20 74 6f 20 61 20 36 34 2d 62  points to a 64-b
2a680 69 74 20 69 6e 74 65 67 65 72 20 77 68 69 63 68  it integer which
2a690 20 69 73 20 74 68 65 20 65 73 74 69 6d 61 74 65   is the estimate
2a6a0 64 20 6f 66 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  d of.** the numb
2a6b0 65 72 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e 64  er of nanosecond
2a6c0 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61 72   that the prepar
2a6d0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 6f  ed statement too
2a6e0 6b 20 74 6f 20 72 75 6e 2e 0a 2a 2a 20 5e 54 68  k to run..** ^Th
2a6f0 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50  e SQLITE_TRACE_P
2a700 52 4f 46 49 4c 45 20 63 61 6c 6c 62 61 63 6b 20  ROFILE callback 
2a710 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20  is invoked when 
2a720 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69  the statement fi
2a730 6e 69 73 68 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  nishes..**.** [[
2a740 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57  SQLITE_TRACE_ROW
2a750 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52  ]] <dt>SQLITE_TR
2a760 41 43 45 5f 52 4f 57 3c 2f 64 74 3e 0a 2a 2a 20  ACE_ROW</dt>.** 
2a770 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54  <dd>^An SQLITE_T
2a780 52 41 43 45 5f 52 4f 57 20 63 61 6c 6c 62 61 63  RACE_ROW callbac
2a790 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65  k is invoked whe
2a7a0 6e 65 76 65 72 20 61 20 70 72 65 70 61 72 65 64  never a prepared
2a7b0 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 67 65  .** statement ge
2a7c0 6e 65 72 61 74 65 73 20 61 20 73 69 6e 67 6c 65  nerates a single
2a7d0 20 72 6f 77 20 6f 66 20 72 65 73 75 6c 74 2e 20   row of result. 
2a7e0 20 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75   .** ^The P argu
2a7f0 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65  ment is a pointe
2a800 72 20 74 6f 20 74 68 65 20 5b 70 72 65 70 61 72  r to the [prepar
2a810 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 61 6e  ed statement] an
2a820 64 20 74 68 65 0a 2a 2a 20 58 20 61 72 67 75 6d  d the.** X argum
2a830 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a  ent is unused..*
2a840 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52  *.** [[SQLITE_TR
2a850 41 43 45 5f 43 4c 4f 53 45 5d 5d 20 3c 64 74 3e  ACE_CLOSE]] <dt>
2a860 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f  SQLITE_TRACE_CLO
2a870 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e  SE</dt>.** <dd>^
2a880 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  An SQLITE_TRACE_
2a890 43 4c 4f 53 45 20 63 61 6c 6c 62 61 63 6b 20 69  CLOSE callback i
2a8a0 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61  s invoked when a
2a8b0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e   database.** con
2a8c0 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e 0a  nection closes..
2a8d0 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  ** ^The P argume
2a8e0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2a8f0 74 6f 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  to the [database
2a900 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62 6a   connection] obj
2a910 65 63 74 0a 2a 2a 20 61 6e 64 20 74 68 65 20 58  ect.** and the X
2a920 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 75   argument is unu
2a930 73 65 64 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f  sed..** </dl>.*/
2a940 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2a950 54 52 41 43 45 5f 53 54 4d 54 20 20 20 20 20 20  TRACE_STMT      
2a960 20 30 78 30 31 0a 23 64 65 66 69 6e 65 20 53 51   0x01.#define SQ
2a970 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2a980 4c 45 20 20 20 20 30 78 30 32 0a 23 64 65 66 69  LE    0x02.#defi
2a990 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  ne SQLITE_TRACE_
2a9a0 52 4f 57 20 20 20 20 20 20 20 20 30 78 30 34 0a  ROW        0x04.
2a9b0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
2a9c0 52 41 43 45 5f 43 4c 4f 53 45 20 20 20 20 20 20  RACE_CLOSE      
2a9d0 30 78 30 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  0x08../*.** CAPI
2a9e0 33 52 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20  3REF: SQL Trace 
2a9f0 48 6f 6f 6b 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  Hook.** METHOD: 
2aa00 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
2aa10 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  he sqlite3_trace
2aa20 5f 76 32 28 44 2c 4d 2c 58 2c 50 29 20 69 6e 74  _v2(D,M,X,P) int
2aa30 65 72 66 61 63 65 20 72 65 67 69 73 74 65 72 73  erface registers
2aa40 20 61 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63   a trace callbac
2aa50 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20  k.** function X 
2aa60 61 67 61 69 6e 73 74 20 5b 64 61 74 61 62 61 73  against [databas
2aa70 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 2c  e connection] D,
2aa80 20 75 73 69 6e 67 20 70 72 6f 70 65 72 74 79 20   using property 
2aa90 6d 61 73 6b 20 4d 0a 2a 2a 20 61 6e 64 20 63 6f  mask M.** and co
2aaa0 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20 50 2e  ntext pointer P.
2aab0 20 20 5e 49 66 20 74 68 65 20 58 20 63 61 6c 6c    ^If the X call
2aac0 62 61 63 6b 20 69 73 0a 2a 2a 20 4e 55 4c 4c 20  back is.** NULL 
2aad0 6f 72 20 69 66 20 74 68 65 20 4d 20 6d 61 73 6b  or if the M mask
2aae0 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 74   is zero, then t
2aaf0 72 61 63 69 6e 67 20 69 73 20 64 69 73 61 62 6c  racing is disabl
2ab00 65 64 2e 20 20 54 68 65 0a 2a 2a 20 4d 20 61 72  ed.  The.** M ar
2ab10 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65  gument should be
2ab20 20 74 68 65 20 62 69 74 77 69 73 65 20 4f 52 2d   the bitwise OR-
2ab30 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f  ed combination o
2ab40 66 0a 2a 2a 20 7a 65 72 6f 20 6f 72 20 6d 6f 72  f.** zero or mor
2ab50 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d  e [SQLITE_TRACE]
2ab60 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a   constants..**.*
2ab70 2a 20 5e 45 61 63 68 20 63 61 6c 6c 20 74 6f 20  * ^Each call to 
2ab80 65 69 74 68 65 72 20 73 71 6c 69 74 65 33 5f 74  either sqlite3_t
2ab90 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74 65  race() or sqlite
2aba0 33 5f 74 72 61 63 65 5f 76 32 28 29 20 6f 76 65  3_trace_v2() ove
2abb0 72 72 69 64 65 73 20 0a 2a 2a 20 28 63 61 6e 63  rrides .** (canc
2abc0 65 6c 73 29 20 61 6e 79 20 70 72 69 6f 72 20 63  els) any prior c
2abd0 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  alls to sqlite3_
2abe0 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74  trace() or sqlit
2abf0 65 33 5f 74 72 61 63 65 5f 76 32 28 29 2e 0a 2a  e3_trace_v2()..*
2ac00 2a 0a 2a 2a 20 5e 54 68 65 20 58 20 63 61 6c 6c  *.** ^The X call
2ac10 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
2ac20 77 68 65 6e 65 76 65 72 20 61 6e 79 20 6f 66 20  whenever any of 
2ac30 74 68 65 20 65 76 65 6e 74 73 20 69 64 65 6e 74  the events ident
2ac40 69 66 69 65 64 20 62 79 20 0a 2a 2a 20 6d 61 73  ified by .** mas
2ac50 6b 20 4d 20 6f 63 63 75 72 2e 20 20 5e 54 68 65  k M occur.  ^The
2ac60 20 69 6e 74 65 67 65 72 20 72 65 74 75 72 6e 20   integer return 
2ac70 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 63  value from the c
2ac80 61 6c 6c 62 61 63 6b 20 69 73 20 63 75 72 72 65  allback is curre
2ac90 6e 74 6c 79 0a 2a 2a 20 69 67 6e 6f 72 65 64 2c  ntly.** ignored,
2aca0 20 74 68 6f 75 67 68 20 74 68 69 73 20 6d 61 79   though this may
2acb0 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72   change in futur
2acc0 65 20 72 65 6c 65 61 73 65 73 2e 20 20 43 61 6c  e releases.  Cal
2acd0 6c 62 61 63 6b 0a 2a 2a 20 69 6d 70 6c 65 6d 65  lback.** impleme
2ace0 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ntations should 
2acf0 72 65 74 75 72 6e 20 7a 65 72 6f 20 74 6f 20 65  return zero to e
2ad00 6e 73 75 72 65 20 66 75 74 75 72 65 20 63 6f 6d  nsure future com
2ad10 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a  patibility..**.*
2ad20 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62  * ^A trace callb
2ad30 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
2ad40 69 74 68 20 66 6f 75 72 20 61 72 67 75 6d 65 6e  ith four argumen
2ad50 74 73 3a 20 63 61 6c 6c 62 61 63 6b 28 54 2c 43  ts: callback(T,C
2ad60 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65 20 54  ,P,X)..** ^The T
2ad70 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e 65   argument is one
2ad80 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   of the [SQLITE_
2ad90 54 52 41 43 45 5d 0a 2a 2a 20 63 6f 6e 73 74 61  TRACE].** consta
2ada0 6e 74 73 20 74 6f 20 69 6e 64 69 63 61 74 65 20  nts to indicate 
2adb0 77 68 79 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  why the callback
2adc0 20 77 61 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a   was invoked..**
2add0 20 5e 54 68 65 20 43 20 61 72 67 75 6d 65 6e 74   ^The C argument
2ade0 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68   is a copy of th
2adf0 65 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65  e context pointe
2ae00 72 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e 64 20  r..** The P and 
2ae10 58 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  X arguments are 
2ae20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73 65 20 6d  pointers whose m
2ae30 65 61 6e 69 6e 67 73 20 64 65 70 65 6e 64 20 6f  eanings depend o
2ae40 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  n T..**.** The s
2ae50 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
2ae60 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69  ) interface is i
2ae70 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 70 6c 61  ntended to repla
2ae80 63 65 20 74 68 65 20 6c 65 67 61 63 79 0a 2a 2a  ce the legacy.**
2ae90 20 69 6e 74 65 72 66 61 63 65 73 20 5b 73 71 6c   interfaces [sql
2aea0 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 61 6e  ite3_trace()] an
2aeb0 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69  d [sqlite3_profi
2aec0 6c 65 28 29 5d 2c 20 62 6f 74 68 20 6f 66 20 77  le()], both of w
2aed0 68 69 63 68 0a 2a 2a 20 61 72 65 20 64 65 70 72  hich.** are depr
2aee0 65 63 61 74 65 64 2e 0a 2a 2f 0a 53 51 4c 49 54  ecated..*/.SQLIT
2aef0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
2af00 33 5f 74 72 61 63 65 5f 76 32 28 0a 20 20 73 71  3_trace_v2(.  sq
2af10 6c 69 74 65 33 2a 2c 0a 20 20 75 6e 73 69 67 6e  lite3*,.  unsign
2af20 65 64 20 75 4d 61 73 6b 2c 0a 20 20 69 6e 74 28  ed uMask,.  int(
2af30 2a 78 43 61 6c 6c 62 61 63 6b 29 28 75 6e 73 69  *xCallback)(unsi
2af40 67 6e 65 64 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a  gned,void*,void*
2af50 2c 76 6f 69 64 2a 29 2c 0a 20 20 76 6f 69 64 20  ,void*),.  void 
2af60 2a 70 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  *pCtx.);../*.** 
2af70 43 41 50 49 33 52 45 46 3a 20 51 75 65 72 79 20  CAPI3REF: Query 
2af80 50 72 6f 67 72 65 73 73 20 43 61 6c 6c 62 61 63  Progress Callbac
2af90 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  ks.** METHOD: sq
2afa0 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
2afb0 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73   sqlite3_progres
2afc0 73 5f 68 61 6e 64 6c 65 72 28 44 2c 4e 2c 58 2c  s_handler(D,N,X,
2afd0 50 29 20 69 6e 74 65 72 66 61 63 65 20 63 61 75  P) interface cau
2afe0 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ses the callback
2aff0 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20 74  .** function X t
2b000 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 70 65 72  o be invoked per
2b010 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69 6e 67  iodically during
2b020 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61   long running ca
2b030 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  lls to.** [sqlit
2b040 65 33 5f 65 78 65 63 28 29 5d 2c 20 5b 73 71 6c  e3_exec()], [sql
2b050 69 74 65 33 5f 73 74 65 70 28 29 5d 20 61 6e 64  ite3_step()] and
2b060 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61   [sqlite3_get_ta
2b070 62 6c 65 28 29 5d 20 66 6f 72 0a 2a 2a 20 64 61  ble()] for.** da
2b080 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2b090 6e 20 44 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65  n D.  An example
2b0a0 20 75 73 65 20 66 6f 72 20 74 68 69 73 0a 2a 2a   use for this.**
2b0b0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 6f   interface is to
2b0c0 20 6b 65 65 70 20 61 20 47 55 49 20 75 70 64 61   keep a GUI upda
2b0d0 74 65 64 20 64 75 72 69 6e 67 20 61 20 6c 61 72  ted during a lar
2b0e0 67 65 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20  ge query..**.** 
2b0f0 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 20 50  ^The parameter P
2b100 20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f 75   is passed throu
2b110 67 68 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70  gh as the only p
2b120 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
2b130 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  .** callback fun
2b140 63 74 69 6f 6e 20 58 2e 20 20 5e 54 68 65 20 70  ction X.  ^The p
2b150 61 72 61 6d 65 74 65 72 20 4e 20 69 73 20 74 68  arameter N is th
2b160 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75  e approximate nu
2b170 6d 62 65 72 20 6f 66 20 0a 2a 2a 20 5b 76 69 72  mber of .** [vir
2b180 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
2b190 74 72 75 63 74 69 6f 6e 73 5d 20 74 68 61 74 20  tructions] that 
2b1a0 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62 65  are evaluated be
2b1b0 74 77 65 65 6e 20 73 75 63 63 65 73 73 69 76 65  tween successive
2b1c0 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20  .** invocations 
2b1d0 6f 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  of the callback 
2b1e0 58 2e 20 20 5e 49 66 20 4e 20 69 73 20 6c 65 73  X.  ^If N is les
2b1f0 73 20 74 68 61 6e 20 6f 6e 65 20 74 68 65 6e 20  s than one then 
2b200 74 68 65 20 70 72 6f 67 72 65 73 73 0a 2a 2a 20  the progress.** 
2b210 68 61 6e 64 6c 65 72 20 69 73 20 64 69 73 61 62  handler is disab
2b220 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79  led..**.** ^Only
2b230 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72 65   a single progre
2b240 73 73 20 68 61 6e 64 6c 65 72 20 6d 61 79 20 62  ss handler may b
2b250 65 20 64 65 66 69 6e 65 64 20 61 74 20 6f 6e 65  e defined at one
2b260 20 74 69 6d 65 20 70 65 72 0a 2a 2a 20 5b 64 61   time per.** [da
2b270 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2b280 6e 5d 3b 20 73 65 74 74 69 6e 67 20 61 20 6e 65  n]; setting a ne
2b290 77 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c  w progress handl
2b2a0 65 72 20 63 61 6e 63 65 6c 73 20 74 68 65 0a 2a  er cancels the.*
2b2b0 2a 20 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53 65 74  * old one.  ^Set
2b2c0 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20 58  ting parameter X
2b2d0 20 74 6f 20 4e 55 4c 4c 20 64 69 73 61 62 6c 65   to NULL disable
2b2e0 73 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 68  s the progress h
2b2f0 61 6e 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68 65 20  andler..** ^The 
2b300 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
2b310 20 69 73 20 61 6c 73 6f 20 64 69 73 61 62 6c 65   is also disable
2b320 64 20 62 79 20 73 65 74 74 69 6e 67 20 4e 20 74  d by setting N t
2b330 6f 20 61 20 76 61 6c 75 65 20 6c 65 73 73 0a 2a  o a value less.*
2b340 2a 20 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a 20  * than 1..**.** 
2b350 5e 49 66 20 74 68 65 20 70 72 6f 67 72 65 73 73  ^If the progress
2b360 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
2b370 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20  s non-zero, the 
2b380 6f 70 65 72 61 74 69 6f 6e 20 69 73 0a 2a 2a 20  operation is.** 
2b390 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20 54 68  interrupted.  Th
2b3a0 69 73 20 66 65 61 74 75 72 65 20 63 61 6e 20 62  is feature can b
2b3b0 65 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d  e used to implem
2b3c0 65 6e 74 20 61 0a 2a 2a 20 22 43 61 6e 63 65 6c  ent a.** "Cancel
2b3d0 22 20 62 75 74 74 6f 6e 20 6f 6e 20 61 20 47 55  " button on a GU
2b3e0 49 20 70 72 6f 67 72 65 73 73 20 64 69 61 6c 6f  I progress dialo
2b3f0 67 20 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  g box..**.** The
2b400 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65   progress handle
2b410 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20  r callback must 
2b420 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20  not do anything 
2b430 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79  that will modify
2b440 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65  .** the database
2b450 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
2b460 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 70 72 6f   invoked the pro
2b470 67 72 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a 2a  gress handler..*
2b480 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c  * Note that [sql
2b490 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
2b4a0 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  )] and [sqlite3_
2b4b0 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64  step()] both mod
2b4c0 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74  ify their.** dat
2b4d0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2b4e0 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e  s for the meanin
2b4f0 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e  g of "modify" in
2b500 20 74 68 69 73 20 70 61 72 61 67 72 61 70 68 2e   this paragraph.
2b510 0a 2a 2a 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  .**.*/.SQLITE_AP
2b520 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70  I void sqlite3_p
2b530 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28  rogress_handler(
2b540 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20 69  sqlite3*, int, i
2b550 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76 6f  nt(*)(void*), vo
2b560 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  id*);../*.** CAP
2b570 49 33 52 45 46 3a 20 4f 70 65 6e 69 6e 67 20 41  I3REF: Opening A
2b580 20 4e 65 77 20 44 61 74 61 62 61 73 65 20 43 6f   New Database Co
2b590 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 43 4f 4e 53  nnection.** CONS
2b5a0 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65 33  TRUCTOR: sqlite3
2b5b0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f  .**.** ^These ro
2b5c0 75 74 69 6e 65 73 20 6f 70 65 6e 20 61 6e 20 53  utines open an S
2b5d0 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 66  QLite database f
2b5e0 69 6c 65 20 61 73 20 73 70 65 63 69 66 69 65 64  ile as specified
2b5f0 20 62 79 20 74 68 65 20 0a 2a 2a 20 66 69 6c 65   by the .** file
2b600 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 2e 20 5e  name argument. ^
2b610 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67  The filename arg
2b620 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72 70 72  ument is interpr
2b630 65 74 65 64 20 61 73 20 55 54 46 2d 38 20 66 6f  eted as UTF-8 fo
2b640 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65  r.** sqlite3_ope
2b650 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  n() and sqlite3_
2b660 6f 70 65 6e 5f 76 32 28 29 20 61 6e 64 20 61 73  open_v2() and as
2b670 20 55 54 46 2d 31 36 20 69 6e 20 74 68 65 20 6e   UTF-16 in the n
2b680 61 74 69 76 65 20 62 79 74 65 0a 2a 2a 20 6f 72  ative byte.** or
2b690 64 65 72 20 66 6f 72 20 73 71 6c 69 74 65 33 5f  der for sqlite3_
2b6a0 6f 70 65 6e 31 36 28 29 2e 20 5e 28 41 20 5b 64  open16(). ^(A [d
2b6b0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2b6c0 6f 6e 5d 20 68 61 6e 64 6c 65 20 69 73 20 75 73  on] handle is us
2b6d0 75 61 6c 6c 79 0a 2a 2a 20 72 65 74 75 72 6e 65  ually.** returne
2b6e0 64 20 69 6e 20 2a 70 70 44 62 2c 20 65 76 65 6e  d in *ppDb, even
2b6f0 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63   if an error occ
2b700 75 72 73 2e 20 20 54 68 65 20 6f 6e 6c 79 20 65  urs.  The only e
2b710 78 63 65 70 74 69 6f 6e 20 69 73 20 74 68 61 74  xception is that
2b720 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20 69 73  .** if SQLite is
2b730 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63   unable to alloc
2b740 61 74 65 20 6d 65 6d 6f 72 79 20 74 6f 20 68 6f  ate memory to ho
2b750 6c 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d  ld the [sqlite3]
2b760 20 6f 62 6a 65 63 74 2c 0a 2a 2a 20 61 20 4e 55   object,.** a NU
2b770 4c 4c 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74  LL will be writt
2b780 65 6e 20 69 6e 74 6f 20 2a 70 70 44 62 20 69 6e  en into *ppDb in
2b790 73 74 65 61 64 20 6f 66 20 61 20 70 6f 69 6e 74  stead of a point
2b7a0 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  er to the [sqlit
2b7b0 65 33 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2e 29 5e  e3].** object.)^
2b7c0 20 5e 28 49 66 20 74 68 65 20 64 61 74 61 62 61   ^(If the databa
2b7d0 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28 61 6e  se is opened (an
2b7e0 64 2f 6f 72 20 63 72 65 61 74 65 64 29 20 73 75  d/or created) su
2b7f0 63 63 65 73 73 66 75 6c 6c 79 2c 20 74 68 65 6e  ccessfully, then
2b800 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  .** [SQLITE_OK] 
2b810 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74  is returned.  Ot
2b820 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72 72 6f  herwise an [erro
2b830 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74 75 72  r code] is retur
2b840 6e 65 64 2e 29 5e 20 5e 54 68 65 0a 2a 2a 20 5b  ned.)^ ^The.** [
2b850 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29  sqlite3_errmsg()
2b860 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 65 72  ] or [sqlite3_er
2b870 72 6d 73 67 31 36 28 29 5d 20 72 6f 75 74 69 6e  rmsg16()] routin
2b880 65 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  es can be used t
2b890 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45  o obtain.** an E
2b8a0 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20  nglish language 
2b8b0 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
2b8c0 68 65 20 65 72 72 6f 72 20 66 6f 6c 6c 6f 77 69  he error followi
2b8d0 6e 67 20 61 20 66 61 69 6c 75 72 65 20 6f 66 20  ng a failure of 
2b8e0 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71  any.** of the sq
2b8f0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 72 6f 75  lite3_open() rou
2b900 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  tines..**.** ^Th
2b910 65 20 64 65 66 61 75 6c 74 20 65 6e 63 6f 64 69  e default encodi
2b920 6e 67 20 77 69 6c 6c 20 62 65 20 55 54 46 2d 38  ng will be UTF-8
2b930 20 66 6f 72 20 64 61 74 61 62 61 73 65 73 20 63   for databases c
2b940 72 65 61 74 65 64 20 75 73 69 6e 67 0a 2a 2a 20  reated using.** 
2b950 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f  sqlite3_open() o
2b960 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
2b970 32 28 29 2e 20 20 5e 54 68 65 20 64 65 66 61 75  2().  ^The defau
2b980 6c 74 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20  lt encoding for 
2b990 64 61 74 61 62 61 73 65 73 0a 2a 2a 20 63 72 65  databases.** cre
2b9a0 61 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74  ated using sqlit
2b9b0 65 33 5f 6f 70 65 6e 31 36 28 29 20 77 69 6c 6c  e3_open16() will
2b9c0 20 62 65 20 55 54 46 2d 31 36 20 69 6e 20 74 68   be UTF-16 in th
2b9d0 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72  e native byte or
2b9e0 64 65 72 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68  der..**.** Wheth
2b9f0 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72  er or not an err
2ba00 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e 20 69  or occurs when i
2ba10 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72 65 73  t is opened, res
2ba20 6f 75 72 63 65 73 0a 2a 2a 20 61 73 73 6f 63 69  ources.** associ
2ba30 61 74 65 64 20 77 69 74 68 20 74 68 65 20 5b 64  ated with the [d
2ba40 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2ba50 6f 6e 5d 20 68 61 6e 64 6c 65 20 73 68 6f 75 6c  on] handle shoul
2ba60 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62 79  d be released by
2ba70 0a 2a 2a 20 70 61 73 73 69 6e 67 20 69 74 20 74  .** passing it t
2ba80 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  o [sqlite3_close
2ba90 28 29 5d 20 77 68 65 6e 20 69 74 20 69 73 20 6e  ()] when it is n
2baa0 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65  o longer require
2bab0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  d..**.** The sql
2bac0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69  ite3_open_v2() i
2bad0 6e 74 65 72 66 61 63 65 20 77 6f 72 6b 73 20 6c  nterface works l
2bae0 69 6b 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ike sqlite3_open
2baf0 28 29 0a 2a 2a 20 65 78 63 65 70 74 20 74 68 61  ().** except tha
2bb00 74 20 69 74 20 61 63 63 65 70 74 73 20 74 77 6f  t it accepts two
2bb10 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61   additional para
2bb20 6d 65 74 65 72 73 20 66 6f 72 20 61 64 64 69 74  meters for addit
2bb30 69 6f 6e 61 6c 20 63 6f 6e 74 72 6f 6c 0a 2a 2a  ional control.**
2bb40 20 6f 76 65 72 20 74 68 65 20 6e 65 77 20 64 61   over the new da
2bb50 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2bb60 6e 2e 20 20 5e 28 54 68 65 20 66 6c 61 67 73 20  n.  ^(The flags 
2bb70 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
2bb80 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2bb90 29 20 63 61 6e 20 74 61 6b 65 20 6f 6e 65 20 6f  ) can take one o
2bba0 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69  f.** the followi
2bbb0 6e 67 20 74 68 72 65 65 20 76 61 6c 75 65 73 2c  ng three values,
2bbc0 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62   optionally comb
2bbd0 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a  ined with the .*
2bbe0 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e  * [SQLITE_OPEN_N
2bbf0 4f 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49 54 45  OMUTEX], [SQLITE
2bc00 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d  _OPEN_FULLMUTEX]
2bc10 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  , [SQLITE_OPEN_S
2bc20 48 41 52 45 44 43 41 43 48 45 5d 2c 0a 2a 2a 20  HAREDCACHE],.** 
2bc30 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49  [SQLITE_OPEN_PRI
2bc40 56 41 54 45 43 41 43 48 45 5d 2c 20 61 6e 64 2f  VATECACHE], and/
2bc50 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  or [SQLITE_OPEN_
2bc60 55 52 49 5d 20 66 6c 61 67 73 3a 29 5e 0a 2a 2a  URI] flags:)^.**
2bc70 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5e 28 3c 64  .** <dl>.** ^(<d
2bc80 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  t>[SQLITE_OPEN_R
2bc90 45 41 44 4f 4e 4c 59 5d 3c 2f 64 74 3e 0a 2a 2a  EADONLY]</dt>.**
2bca0 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61 73   <dd>The databas
2bcb0 65 20 69 73 20 6f 70 65 6e 65 64 20 69 6e 20 72  e is opened in r
2bcc0 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 20 20  ead-only mode.  
2bcd0 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
2bce0 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 61 6c 72 65  does not.** alre
2bcf0 61 64 79 20 65 78 69 73 74 2c 20 61 6e 20 65 72  ady exist, an er
2bd00 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
2bd10 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28  </dd>)^.**.** ^(
2bd20 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  <dt>[SQLITE_OPEN
2bd30 5f 52 45 41 44 57 52 49 54 45 5d 3c 2f 64 74 3e  _READWRITE]</dt>
2bd40 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61  .** <dd>The data
2bd50 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66  base is opened f
2bd60 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77  or reading and w
2bd70 72 69 74 69 6e 67 20 69 66 20 70 6f 73 73 69 62  riting if possib
2bd80 6c 65 2c 20 6f 72 20 72 65 61 64 69 6e 67 0a 2a  le, or reading.*
2bd90 2a 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 66 69  * only if the fi
2bda0 6c 65 20 69 73 20 77 72 69 74 65 20 70 72 6f 74  le is write prot
2bdb0 65 63 74 65 64 20 62 79 20 74 68 65 20 6f 70 65  ected by the ope
2bdc0 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20  rating system.  
2bdd0 49 6e 20 65 69 74 68 65 72 0a 2a 2a 20 63 61 73  In either.** cas
2bde0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6d  e the database m
2bdf0 75 73 74 20 61 6c 72 65 61 64 79 20 65 78 69 73  ust already exis
2be00 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61 6e 20  t, otherwise an 
2be10 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
2be20 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  d.</dd>)^.**.** 
2be30 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50  ^(<dt>[SQLITE_OP
2be40 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 20 7c 20  EN_READWRITE] | 
2be50 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45  [SQLITE_OPEN_CRE
2be60 41 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ATE]</dt>.** <dd
2be70 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73  >The database is
2be80 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64   opened for read
2be90 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c  ing and writing,
2bea0 20 61 6e 64 20 69 73 20 63 72 65 61 74 65 64 20   and is created 
2beb0 69 66 0a 2a 2a 20 69 74 20 64 6f 65 73 20 6e 6f  if.** it does no
2bec0 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 2e  t already exist.
2bed0 20 54 68 69 73 20 69 73 20 74 68 65 20 62 65 68   This is the beh
2bee0 61 76 69 6f 72 20 74 68 61 74 20 69 73 20 61 6c  avior that is al
2bef0 77 61 79 73 20 75 73 65 64 20 66 6f 72 0a 2a 2a  ways used for.**
2bf00 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
2bf10 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  and sqlite3_open
2bf20 31 36 28 29 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20  16().</dd>)^.** 
2bf30 3c 2f 64 6c 3e 0a 2a 2a 0a 2a 2a 20 49 66 20 74  </dl>.**.** If t
2bf40 68 65 20 33 72 64 20 70 61 72 61 6d 65 74 65 72  he 3rd parameter
2bf50 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e   to sqlite3_open
2bf60 5f 76 32 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65  _v2() is not one
2bf70 20 6f 66 20 74 68 65 0a 2a 2a 20 63 6f 6d 62 69   of the.** combi
2bf80 6e 61 74 69 6f 6e 73 20 73 68 6f 77 6e 20 61 62  nations shown ab
2bf90 6f 76 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63  ove optionally c
2bfa0 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 6f 74 68  ombined with oth
2bfb0 65 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  er.** [SQLITE_OP
2bfc0 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 53 51  EN_READONLY | SQ
2bfd0 4c 49 54 45 5f 4f 50 45 4e 5f 2a 20 62 69 74 73  LITE_OPEN_* bits
2bfe0 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 62 65  ].** then the be
2bff0 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
2c000 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ned..**.** ^If t
2c010 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
2c020 4e 4f 4d 55 54 45 58 5d 20 66 6c 61 67 20 69 73  NOMUTEX] flag is
2c030 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 20 64   set, then the d
2c040 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2c050 6f 6e 0a 2a 2a 20 6f 70 65 6e 73 20 69 6e 20 74  on.** opens in t
2c060 68 65 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 20  he multi-thread 
2c070 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d  [threading mode]
2c080 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20   as long as the 
2c090 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 0a 2a 2a  single-thread.**
2c0a0 20 6d 6f 64 65 20 68 61 73 20 6e 6f 74 20 62 65   mode has not be
2c0b0 65 6e 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c  en set at compil
2c0c0 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72 74 2d  e-time or start-
2c0d0 74 69 6d 65 2e 20 20 5e 49 66 20 74 68 65 0a 2a  time.  ^If the.*
2c0e0 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  * [SQLITE_OPEN_F
2c0f0 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 20 69  ULLMUTEX] flag i
2c100 73 20 73 65 74 20 74 68 65 6e 20 74 68 65 20 64  s set then the d
2c110 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2c120 6f 6e 20 6f 70 65 6e 73 0a 2a 2a 20 69 6e 20 74  on opens.** in t
2c130 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20 5b 74  he serialized [t
2c140 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 75  hreading mode] u
2c150 6e 6c 65 73 73 20 73 69 6e 67 6c 65 2d 74 68 72  nless single-thr
2c160 65 61 64 20 77 61 73 0a 2a 2a 20 70 72 65 76 69  ead was.** previ
2c170 6f 75 73 6c 79 20 73 65 6c 65 63 74 65 64 20 61  ously selected a
2c180 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  t compile-time o
2c190 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 0a 2a 2a  r start-time..**
2c1a0 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50   ^The [SQLITE_OP
2c1b0 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 5d 20  EN_SHAREDCACHE] 
2c1c0 66 6c 61 67 20 63 61 75 73 65 73 20 74 68 65 20  flag causes the 
2c1d0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2c1e0 69 6f 6e 20 74 6f 20 62 65 0a 2a 2a 20 65 6c 69  ion to be.** eli
2c1f0 67 69 62 6c 65 20 74 6f 20 75 73 65 20 5b 73 68  gible to use [sh
2c200 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64 65 5d  ared cache mode]
2c210 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  , regardless of 
2c220 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 73  whether or not s
2c230 68 61 72 65 64 0a 2a 2a 20 63 61 63 68 65 20 69  hared.** cache i
2c240 73 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67 20  s enabled using 
2c250 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f  [sqlite3_enable_
2c260 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d 2e  shared_cache()].
2c270 20 20 5e 54 68 65 0a 2a 2a 20 5b 53 51 4c 49 54    ^The.** [SQLIT
2c280 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41  E_OPEN_PRIVATECA
2c290 43 48 45 5d 20 66 6c 61 67 20 63 61 75 73 65 73  CHE] flag causes
2c2a0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f   the database co
2c2b0 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 6e 6f 74 0a  nnection to not.
2c2c0 2a 2a 20 70 61 72 74 69 63 69 70 61 74 65 20 69  ** participate i
2c2d0 6e 20 5b 73 68 61 72 65 64 20 63 61 63 68 65 20  n [shared cache 
2c2e0 6d 6f 64 65 5d 20 65 76 65 6e 20 69 66 20 69 74  mode] even if it
2c2f0 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a   is enabled..**.
2c300 2a 2a 20 5e 54 68 65 20 66 6f 75 72 74 68 20 70  ** ^The fourth p
2c310 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
2c320 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73  te3_open_v2() is
2c330 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2c340 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  .** [sqlite3_vfs
2c350 5d 20 6f 62 6a 65 63 74 20 74 68 61 74 20 64 65  ] object that de
2c360 66 69 6e 65 73 20 74 68 65 20 6f 70 65 72 61 74  fines the operat
2c370 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72  ing system inter
2c380 66 61 63 65 20 74 68 61 74 0a 2a 2a 20 74 68 65  face that.** the
2c390 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63 6f   new database co
2c3a0 6e 6e 65 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20  nnection should 
2c3b0 75 73 65 2e 20 20 5e 49 66 20 74 68 65 20 66 6f  use.  ^If the fo
2c3c0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
2c3d0 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  s.** a NULL poin
2c3e0 74 65 72 20 74 68 65 6e 20 74 68 65 20 64 65 66  ter then the def
2c3f0 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66  ault [sqlite3_vf
2c400 73 5d 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65  s] object is use
2c410 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  d..**.** ^If the
2c420 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 22 3a 6d   filename is ":m
2c430 65 6d 6f 72 79 3a 22 2c 20 74 68 65 6e 20 61 20  emory:", then a 
2c440 70 72 69 76 61 74 65 2c 20 74 65 6d 70 6f 72 61  private, tempora
2c450 72 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  ry in-memory dat
2c460 61 62 61 73 65 0a 2a 2a 20 69 73 20 63 72 65 61  abase.** is crea
2c470 74 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e  ted for the conn
2c480 65 63 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 69  ection.  ^This i
2c490 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
2c4a0 65 20 77 69 6c 6c 20 76 61 6e 69 73 68 20 77 68  e will vanish wh
2c4b0 65 6e 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61  en.** the databa
2c4c0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
2c4d0 20 63 6c 6f 73 65 64 2e 20 20 46 75 74 75 72 65   closed.  Future
2c4e0 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
2c4f0 69 74 65 20 6d 69 67 68 74 0a 2a 2a 20 6d 61 6b  ite might.** mak
2c500 65 20 75 73 65 20 6f 66 20 61 64 64 69 74 69 6f  e use of additio
2c510 6e 61 6c 20 73 70 65 63 69 61 6c 20 66 69 6c 65  nal special file
2c520 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e  names that begin
2c530 20 77 69 74 68 20 74 68 65 20 22 3a 22 20 63 68   with the ":" ch
2c540 61 72 61 63 74 65 72 2e 0a 2a 2a 20 49 74 20 69  aracter..** It i
2c550 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68  s recommended th
2c560 61 74 20 77 68 65 6e 20 61 20 64 61 74 61 62 61  at when a databa
2c570 73 65 20 66 69 6c 65 6e 61 6d 65 20 61 63 74 75  se filename actu
2c580 61 6c 6c 79 20 64 6f 65 73 20 62 65 67 69 6e 20  ally does begin 
2c590 77 69 74 68 0a 2a 2a 20 61 20 22 3a 22 20 63 68  with.** a ":" ch
2c5a0 61 72 61 63 74 65 72 20 79 6f 75 20 73 68 6f 75  aracter you shou
2c5b0 6c 64 20 70 72 65 66 69 78 20 74 68 65 20 66 69  ld prefix the fi
2c5c0 6c 65 6e 61 6d 65 20 77 69 74 68 20 61 20 70 61  lename with a pa
2c5d0 74 68 6e 61 6d 65 20 73 75 63 68 20 61 73 0a 2a  thname such as.*
2c5e0 2a 20 22 2e 2f 22 20 74 6f 20 61 76 6f 69 64 20  * "./" to avoid 
2c5f0 61 6d 62 69 67 75 69 74 79 2e 0a 2a 2a 0a 2a 2a  ambiguity..**.**
2c600 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d   ^If the filenam
2c610 65 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74  e is an empty st
2c620 72 69 6e 67 2c 20 74 68 65 6e 20 61 20 70 72 69  ring, then a pri
2c630 76 61 74 65 2c 20 74 65 6d 70 6f 72 61 72 79 0a  vate, temporary.
2c640 2a 2a 20 6f 6e 2d 64 69 73 6b 20 64 61 74 61 62  ** on-disk datab
2c650 61 73 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61  ase will be crea
2c660 74 65 64 2e 20 20 5e 54 68 69 73 20 70 72 69 76  ted.  ^This priv
2c670 61 74 65 20 64 61 74 61 62 61 73 65 20 77 69 6c  ate database wil
2c680 6c 20 62 65 0a 2a 2a 20 61 75 74 6f 6d 61 74 69  l be.** automati
2c690 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 61 73  cally deleted as
2c6a0 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 64 61 74   soon as the dat
2c6b0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2c6c0 20 69 73 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a   is closed..**.*
2c6d0 2a 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  * [[URI filename
2c6e0 73 20 69 6e 20 73 71 6c 69 74 65 33 5f 6f 70 65  s in sqlite3_ope
2c6f0 6e 28 29 5d 5d 20 3c 68 33 3e 55 52 49 20 46 69  n()]] <h3>URI Fi
2c700 6c 65 6e 61 6d 65 73 3c 2f 68 33 3e 0a 2a 2a 0a  lenames</h3>.**.
2c710 2a 2a 20 5e 49 66 20 5b 55 52 49 20 66 69 6c 65  ** ^If [URI file
2c720 6e 61 6d 65 5d 20 69 6e 74 65 72 70 72 65 74 61  name] interpreta
2c730 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2c  tion is enabled,
2c740 20 61 6e 64 20 74 68 65 20 66 69 6c 65 6e 61 6d   and the filenam
2c750 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 62 65  e argument.** be
2c760 67 69 6e 73 20 77 69 74 68 20 22 66 69 6c 65 3a  gins with "file:
2c770 22 2c 20 74 68 65 6e 20 74 68 65 20 66 69 6c 65  ", then the file
2c780 6e 61 6d 65 20 69 73 20 69 6e 74 65 72 70 72 65  name is interpre
2c790 74 65 64 20 61 73 20 61 20 55 52 49 2e 20 5e 55  ted as a URI. ^U
2c7a0 52 49 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69  RI.** filename i
2c7b0 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73  nterpretation is
2c7c0 20 65 6e 61 62 6c 65 64 20 69 66 20 74 68 65 20   enabled if the 
2c7d0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49  [SQLITE_OPEN_URI
2c7e0 5d 20 66 6c 61 67 20 69 73 0a 2a 2a 20 73 65 74  ] flag is.** set
2c7f0 20 69 6e 20 74 68 65 20 66 6f 75 72 74 68 20 61   in the fourth a
2c800 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
2c810 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2c 20 6f 72  e3_open_v2(), or
2c820 20 69 66 20 69 74 20 68 61 73 0a 2a 2a 20 62 65   if it has.** be
2c830 65 6e 20 65 6e 61 62 6c 65 64 20 67 6c 6f 62 61  en enabled globa
2c840 6c 6c 79 20 75 73 69 6e 67 20 74 68 65 20 5b 53  lly using the [S
2c850 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49  QLITE_CONFIG_URI
2c860 5d 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 74 68  ] option with th
2c870 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  e.** [sqlite3_co
2c880 6e 66 69 67 28 29 5d 20 6d 65 74 68 6f 64 20 6f  nfig()] method o
2c890 72 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  r by the [SQLITE
2c8a0 5f 55 53 45 5f 55 52 49 5d 20 63 6f 6d 70 69 6c  _USE_URI] compil
2c8b0 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a  e-time option..*
2c8c0 2a 20 41 73 20 6f 66 20 53 51 4c 69 74 65 20 76  * As of SQLite v
2c8d0 65 72 73 69 6f 6e 20 33 2e 37 2e 37 2c 20 55 52  ersion 3.7.7, UR
2c8e0 49 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72  I filename inter
2c8f0 70 72 65 74 61 74 69 6f 6e 20 69 73 20 74 75 72  pretation is tur
2c900 6e 65 64 20 6f 66 66 0a 2a 2a 20 62 79 20 64 65  ned off.** by de
2c910 66 61 75 6c 74 2c 20 62 75 74 20 66 75 74 75 72  fault, but futur
2c920 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
2c930 4c 69 74 65 20 6d 69 67 68 74 20 65 6e 61 62 6c  Lite might enabl
2c940 65 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 0a 2a  e URI filename.*
2c950 2a 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e  * interpretation
2c960 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 53 65   by default.  Se
2c970 65 20 22 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  e "[URI filename
2c980 73 5d 22 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  s]" for addition
2c990 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f  al.** informatio
2c9a0 6e 2e 0a 2a 2a 0a 2a 2a 20 55 52 49 20 66 69 6c  n..**.** URI fil
2c9b0 65 6e 61 6d 65 73 20 61 72 65 20 70 61 72 73 65  enames are parse
2c9c0 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 52  d according to R
2c9d0 46 43 20 33 39 38 36 2e 20 5e 49 66 20 74 68 65  FC 3986. ^If the
2c9e0 20 55 52 49 20 63 6f 6e 74 61 69 6e 73 20 61 6e   URI contains an
2c9f0 0a 2a 2a 20 61 75 74 68 6f 72 69 74 79 2c 20 74  .** authority, t
2ca00 68 65 6e 20 69 74 20 6d 75 73 74 20 62 65 20 65  hen it must be e
2ca10 69 74 68 65 72 20 61 6e 20 65 6d 70 74 79 20 73  ither an empty s
2ca20 74 72 69 6e 67 20 6f 72 20 74 68 65 20 73 74 72  tring or the str
2ca30 69 6e 67 20 0a 2a 2a 20 22 6c 6f 63 61 6c 68 6f  ing .** "localho
2ca40 73 74 22 2e 20 5e 49 66 20 74 68 65 20 61 75 74  st". ^If the aut
2ca50 68 6f 72 69 74 79 20 69 73 20 6e 6f 74 20 61 6e  hority is not an
2ca60 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72   empty string or
2ca70 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2c 20 61 6e   "localhost", an
2ca80 20 0a 2a 2a 20 65 72 72 6f 72 20 69 73 20 72 65   .** error is re
2ca90 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 63 61  turned to the ca
2caa0 6c 6c 65 72 2e 20 5e 54 68 65 20 66 72 61 67 6d  ller. ^The fragm
2cab0 65 6e 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66  ent component of
2cac0 20 61 20 55 52 49 2c 20 69 66 20 0a 2a 2a 20 70   a URI, if .** p
2cad0 72 65 73 65 6e 74 2c 20 69 73 20 69 67 6e 6f 72  resent, is ignor
2cae0 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74  ed..**.** ^SQLit
2caf0 65 20 75 73 65 73 20 74 68 65 20 70 61 74 68 20  e uses the path 
2cb00 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 74 68 65  component of the
2cb10 20 55 52 49 20 61 73 20 74 68 65 20 6e 61 6d 65   URI as the name
2cb20 20 6f 66 20 74 68 65 20 64 69 73 6b 20 66 69 6c   of the disk fil
2cb30 65 0a 2a 2a 20 77 68 69 63 68 20 63 6f 6e 74 61  e.** which conta
2cb40 69 6e 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ins the database
2cb50 2e 20 5e 49 66 20 74 68 65 20 70 61 74 68 20 62  . ^If the path b
2cb60 65 67 69 6e 73 20 77 69 74 68 20 61 20 27 2f 27  egins with a '/'
2cb70 20 63 68 61 72 61 63 74 65 72 2c 20 0a 2a 2a 20   character, .** 
2cb80 74 68 65 6e 20 69 74 20 69 73 20 69 6e 74 65 72  then it is inter
2cb90 70 72 65 74 65 64 20 61 73 20 61 6e 20 61 62 73  preted as an abs
2cba0 6f 6c 75 74 65 20 70 61 74 68 2e 20 5e 49 66 20  olute path. ^If 
2cbb0 74 68 65 20 70 61 74 68 20 64 6f 65 73 20 6e 6f  the path does no
2cbc0 74 20 62 65 67 69 6e 20 0a 2a 2a 20 77 69 74 68  t begin .** with
2cbd0 20 61 20 27 2f 27 20 28 6d 65 61 6e 69 6e 67 20   a '/' (meaning 
2cbe0 74 68 61 74 20 74 68 65 20 61 75 74 68 6f 72 69  that the authori
2cbf0 74 79 20 73 65 63 74 69 6f 6e 20 69 73 20 6f 6d  ty section is om
2cc00 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55  itted from the U
2cc10 52 49 29 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  RI).** then the 
2cc20 70 61 74 68 20 69 73 20 69 6e 74 65 72 70 72 65  path is interpre
2cc30 74 65 64 20 61 73 20 61 20 72 65 6c 61 74 69 76  ted as a relativ
2cc40 65 20 70 61 74 68 2e 20 0a 2a 2a 20 5e 28 4f 6e  e path. .** ^(On
2cc50 20 77 69 6e 64 6f 77 73 2c 20 74 68 65 20 66 69   windows, the fi
2cc60 72 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66  rst component of
2cc70 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 70 61 74   an absolute pat
2cc80 68 20 0a 2a 2a 20 69 73 20 61 20 64 72 69 76 65  h .** is a drive
2cc90 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 28   specification (
2cca0 65 2e 67 2e 20 22 43 3a 22 29 2e 29 5e 0a 2a 2a  e.g. "C:").)^.**
2ccb0 0a 2a 2a 20 5b 5b 63 6f 72 65 20 55 52 49 20 71  .** [[core URI q
2ccc0 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73 5d  uery parameters]
2ccd0 5d 0a 2a 2a 20 54 68 65 20 71 75 65 72 79 20 63  ].** The query c
2cce0 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52  omponent of a UR
2ccf0 49 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 70 61  I may contain pa
2cd00 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72  rameters that ar
2cd10 65 20 69 6e 74 65 72 70 72 65 74 65 64 0a 2a 2a  e interpreted.**
2cd20 20 65 69 74 68 65 72 20 62 79 20 53 51 4c 69 74   either by SQLit
2cd30 65 20 69 74 73 65 6c 66 2c 20 6f 72 20 62 79 20  e itself, or by 
2cd40 61 20 5b 56 46 53 20 7c 20 63 75 73 74 6f 6d 20  a [VFS | custom 
2cd50 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
2cd60 6f 6e 5d 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 61  on]..** SQLite a
2cd70 6e 64 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20  nd its built-in 
2cd80 5b 56 46 53 65 73 5d 20 69 6e 74 65 72 70 72 65  [VFSes] interpre
2cd90 74 20 74 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69  t the.** followi
2cda0 6e 67 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  ng query paramet
2cdb0 65 72 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ers:.**.** <ul>.
2cdc0 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 76 66 73  **   <li> <b>vfs
2cdd0 3c 2f 62 3e 3a 20 5e 54 68 65 20 22 76 66 73 22  </b>: ^The "vfs"
2cde0 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62   parameter may b
2cdf0 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66  e used to specif
2ce00 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 0a 2a 2a  y the name of.**
2ce10 20 20 20 20 20 61 20 56 46 53 20 6f 62 6a 65 63       a VFS objec
2ce20 74 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20  t that provides 
2ce30 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79  the operating sy
2ce40 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 20 74  stem interface t
2ce50 68 61 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 20 20  hat should.**   
2ce60 20 20 62 65 20 75 73 65 64 20 74 6f 20 61 63 63    be used to acc
2ce70 65 73 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ess the database
2ce80 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2e 20 5e   file on disk. ^
2ce90 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  If this option i
2cea0 73 20 73 65 74 20 74 6f 0a 2a 2a 20 20 20 20 20  s set to.**     
2ceb0 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20  an empty string 
2cec0 74 68 65 20 64 65 66 61 75 6c 74 20 56 46 53 20  the default VFS 
2ced0 6f 62 6a 65 63 74 20 69 73 20 75 73 65 64 2e 20  object is used. 
2cee0 5e 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20 75  ^Specifying an u
2cef0 6e 6b 6e 6f 77 6e 0a 2a 2a 20 20 20 20 20 56 46  nknown.**     VF
2cf00 53 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 20 5e  S is an error. ^
2cf10 49 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  If sqlite3_open_
2cf20 76 32 28 29 20 69 73 20 75 73 65 64 20 61 6e 64  v2() is used and
2cf30 20 74 68 65 20 76 66 73 20 6f 70 74 69 6f 6e 20   the vfs option 
2cf40 69 73 0a 2a 2a 20 20 20 20 20 70 72 65 73 65 6e  is.**     presen
2cf50 74 2c 20 74 68 65 6e 20 74 68 65 20 56 46 53 20  t, then the VFS 
2cf60 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
2cf70 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 70 72   option takes pr
2cf80 65 63 65 64 65 6e 63 65 20 6f 76 65 72 0a 2a 2a  ecedence over.**
2cf90 20 20 20 20 20 74 68 65 20 76 61 6c 75 65 20 70       the value p
2cfa0 61 73 73 65 64 20 61 73 20 74 68 65 20 66 6f 75  assed as the fou
2cfb0 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rth parameter to
2cfc0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2cfd0 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e  ()..**.**   <li>
2cfe0 20 3c 62 3e 6d 6f 64 65 3c 2f 62 3e 3a 20 5e 28   <b>mode</b>: ^(
2cff0 54 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65 74  The mode paramet
2d000 65 72 20 6d 61 79 20 62 65 20 73 65 74 20 74 6f  er may be set to
2d010 20 65 69 74 68 65 72 20 22 72 6f 22 2c 20 22 72   either "ro", "r
2d020 77 22 2c 0a 2a 2a 20 20 20 20 20 22 72 77 63 22  w",.**     "rwc"
2d030 2c 20 6f 72 20 22 6d 65 6d 6f 72 79 22 2e 20 41  , or "memory". A
2d040 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 65 74  ttempting to set
2d050 20 69 74 20 74 6f 20 61 6e 79 20 6f 74 68 65 72   it to any other
2d060 20 76 61 6c 75 65 20 69 73 0a 2a 2a 20 20 20 20   value is.**    
2d070 20 61 6e 20 65 72 72 6f 72 29 5e 2e 20 0a 2a 2a   an error)^. .**
2d080 20 20 20 20 20 5e 49 66 20 22 72 6f 22 20 69 73       ^If "ro" is
2d090 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e   specified, then
2d0a0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
2d0b0 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64   opened for read
2d0c0 2d 6f 6e 6c 79 20 0a 2a 2a 20 20 20 20 20 61 63  -only .**     ac
2d0d0 63 65 73 73 2c 20 6a 75 73 74 20 61 73 20 69 66  cess, just as if
2d0e0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   the [SQLITE_OPE
2d0f0 4e 5f 52 45 41 44 4f 4e 4c 59 5d 20 66 6c 61 67  N_READONLY] flag
2d100 20 68 61 64 20 62 65 65 6e 20 73 65 74 20 69 6e   had been set in
2d110 20 74 68 65 20 0a 2a 2a 20 20 20 20 20 74 68 69   the .**     thi
2d120 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  rd argument to s
2d130 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2d140 2e 20 5e 49 66 20 74 68 65 20 6d 6f 64 65 20 6f  . ^If the mode o
2d150 70 74 69 6f 6e 20 69 73 20 73 65 74 20 74 6f 20  ption is set to 
2d160 0a 2a 2a 20 20 20 20 20 22 72 77 22 2c 20 74 68  .**     "rw", th
2d170 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
2d180 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65  is opened for re
2d190 61 64 2d 77 72 69 74 65 20 28 62 75 74 20 6e 6f  ad-write (but no
2d1a0 74 20 63 72 65 61 74 65 29 20 0a 2a 2a 20 20 20  t create) .**   
2d1b0 20 20 61 63 63 65 73 73 2c 20 61 73 20 69 66 20    access, as if 
2d1c0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
2d1d0 57 52 49 54 45 20 28 62 75 74 20 6e 6f 74 20 53  WRITE (but not S
2d1e0 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54  QLITE_OPEN_CREAT
2d1f0 45 29 20 68 61 64 20 0a 2a 2a 20 20 20 20 20 62  E) had .**     b
2d200 65 65 6e 20 73 65 74 2e 20 5e 56 61 6c 75 65 20  een set. ^Value 
2d210 22 72 77 63 22 20 69 73 20 65 71 75 69 76 61 6c  "rwc" is equival
2d220 65 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20 62  ent to setting b
2d230 6f 74 68 20 0a 2a 2a 20 20 20 20 20 53 51 4c 49  oth .**     SQLI
2d240 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54  TE_OPEN_READWRIT
2d250 45 20 61 6e 64 20 53 51 4c 49 54 45 5f 4f 50 45  E and SQLITE_OPE
2d260 4e 5f 43 52 45 41 54 45 2e 20 20 5e 49 66 20 74  N_CREATE.  ^If t
2d270 68 65 20 6d 6f 64 65 20 6f 70 74 69 6f 6e 20 69  he mode option i
2d280 73 0a 2a 2a 20 20 20 20 20 73 65 74 20 74 6f 20  s.**     set to 
2d290 22 6d 65 6d 6f 72 79 22 20 74 68 65 6e 20 61 20  "memory" then a 
2d2a0 70 75 72 65 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20  pure [in-memory 
2d2b0 64 61 74 61 62 61 73 65 5d 20 74 68 61 74 20 6e  database] that n
2d2c0 65 76 65 72 20 72 65 61 64 73 0a 2a 2a 20 20 20  ever reads.**   
2d2d0 20 20 6f 72 20 77 72 69 74 65 73 20 66 72 6f 6d    or writes from
2d2e0 20 64 69 73 6b 20 69 73 20 75 73 65 64 2e 20 5e   disk is used. ^
2d2f0 49 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74  It is an error t
2d300 6f 20 73 70 65 63 69 66 79 20 61 20 76 61 6c 75  o specify a valu
2d310 65 20 66 6f 72 0a 2a 2a 20 20 20 20 20 74 68 65  e for.**     the
2d320 20 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72 20   mode parameter 
2d330 74 68 61 74 20 69 73 20 6c 65 73 73 20 72 65 73  that is less res
2d340 74 72 69 63 74 69 76 65 20 74 68 61 6e 20 74 68  trictive than th
2d350 61 74 20 73 70 65 63 69 66 69 65 64 20 62 79 0a  at specified by.
2d360 2a 2a 20 20 20 20 20 74 68 65 20 66 6c 61 67 73  **     the flags
2d370 20 70 61 73 73 65 64 20 69 6e 20 74 68 65 20 74   passed in the t
2d380 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74  hird parameter t
2d390 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  o sqlite3_open_v
2d3a0 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69  2()..**.**   <li
2d3b0 3e 20 3c 62 3e 63 61 63 68 65 3c 2f 62 3e 3a 20  > <b>cache</b>: 
2d3c0 5e 54 68 65 20 63 61 63 68 65 20 70 61 72 61 6d  ^The cache param
2d3d0 65 74 65 72 20 6d 61 79 20 62 65 20 73 65 74 20  eter may be set 
2d3e0 74 6f 20 65 69 74 68 65 72 20 22 73 68 61 72 65  to either "share
2d3f0 64 22 20 6f 72 0a 2a 2a 20 20 20 20 20 22 70 72  d" or.**     "pr
2d400 69 76 61 74 65 22 2e 20 5e 53 65 74 74 69 6e 67  ivate". ^Setting
2d410 20 69 74 20 74 6f 20 22 73 68 61 72 65 64 22 20   it to "shared" 
2d420 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  is equivalent to
2d430 20 73 65 74 74 69 6e 67 20 74 68 65 0a 2a 2a 20   setting the.** 
2d440 20 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f      SQLITE_OPEN_
2d450 53 48 41 52 45 44 43 41 43 48 45 20 62 69 74 20  SHAREDCACHE bit 
2d460 69 6e 20 74 68 65 20 66 6c 61 67 73 20 61 72 67  in the flags arg
2d470 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f 0a  ument passed to.
2d480 2a 2a 20 20 20 20 20 73 71 6c 69 74 65 33 5f 6f  **     sqlite3_o
2d490 70 65 6e 5f 76 32 28 29 2e 20 5e 53 65 74 74 69  pen_v2(). ^Setti
2d4a0 6e 67 20 74 68 65 20 63 61 63 68 65 20 70 61 72  ng the cache par
2d4b0 61 6d 65 74 65 72 20 74 6f 20 22 70 72 69 76 61  ameter to "priva
2d4c0 74 65 22 20 69 73 20 0a 2a 2a 20 20 20 20 20 65  te" is .**     e
2d4d0 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65 74  quivalent to set
2d4e0 74 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f  ting the SQLITE_
2d4f0 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48  OPEN_PRIVATECACH
2d500 45 20 62 69 74 2e 0a 2a 2a 20 20 20 20 20 5e 49  E bit..**     ^I
2d510 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  f sqlite3_open_v
2d520 32 28 29 20 69 73 20 75 73 65 64 20 61 6e 64 20  2() is used and 
2d530 74 68 65 20 22 63 61 63 68 65 22 20 70 61 72 61  the "cache" para
2d540 6d 65 74 65 72 20 69 73 20 70 72 65 73 65 6e 74  meter is present
2d550 20 69 6e 0a 2a 2a 20 20 20 20 20 61 20 55 52 49   in.**     a URI
2d560 20 66 69 6c 65 6e 61 6d 65 2c 20 69 74 73 20 76   filename, its v
2d570 61 6c 75 65 20 6f 76 65 72 72 69 64 65 73 20 61  alue overrides a
2d580 6e 79 20 62 65 68 61 76 69 6f 72 20 72 65 71 75  ny behavior requ
2d590 65 73 74 65 64 20 62 79 20 73 65 74 74 69 6e 67  ested by setting
2d5a0 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f 4f  .**     SQLITE_O
2d5b0 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45  PEN_PRIVATECACHE
2d5c0 20 6f 72 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f   or SQLITE_OPEN_
2d5d0 53 48 41 52 45 44 43 41 43 48 45 20 66 6c 61 67  SHAREDCACHE flag
2d5e0 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62  ..**.**  <li> <b
2d5f0 3e 70 73 6f 77 3c 2f 62 3e 3a 20 5e 54 68 65 20  >psow</b>: ^The 
2d600 70 73 6f 77 20 70 61 72 61 6d 65 74 65 72 20 69  psow parameter i
2d610 6e 64 69 63 61 74 65 73 20 77 68 65 74 68 65 72  ndicates whether
2d620 20 6f 72 20 6e 6f 74 20 74 68 65 0a 2a 2a 20 20   or not the.**  
2d630 20 20 20 5b 70 6f 77 65 72 73 61 66 65 20 6f 76     [powersafe ov
2d640 65 72 77 72 69 74 65 5d 20 70 72 6f 70 65 72 74  erwrite] propert
2d650 79 20 64 6f 65 73 20 6f 72 20 64 6f 65 73 20 6e  y does or does n
2d660 6f 74 20 61 70 70 6c 79 20 74 6f 20 74 68 65 0a  ot apply to the.
2d670 2a 2a 20 20 20 20 20 73 74 6f 72 61 67 65 20 6d  **     storage m
2d680 65 64 69 61 20 6f 6e 20 77 68 69 63 68 20 74 68  edia on which th
2d690 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2d6a0 72 65 73 69 64 65 73 2e 0a 2a 2a 0a 2a 2a 20 20  resides..**.**  
2d6b0 3c 6c 69 3e 20 3c 62 3e 6e 6f 6c 6f 63 6b 3c 2f  <li> <b>nolock</
2d6c0 62 3e 3a 20 5e 54 68 65 20 6e 6f 6c 6f 63 6b 20  b>: ^The nolock 
2d6d0 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 62  parameter is a b
2d6e0 6f 6f 6c 65 61 6e 20 71 75 65 72 79 20 70 61 72  oolean query par
2d6f0 61 6d 65 74 65 72 0a 2a 2a 20 20 20 20 20 77 68  ameter.**     wh
2d700 69 63 68 20 69 66 20 73 65 74 20 64 69 73 61 62  ich if set disab
2d710 6c 65 73 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67  les file locking
2d720 20 69 6e 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75   in rollback jou
2d730 72 6e 61 6c 20 6d 6f 64 65 73 2e 20 20 54 68 69  rnal modes.  Thi
2d740 73 0a 2a 2a 20 20 20 20 20 69 73 20 75 73 65 66  s.**     is usef
2d750 75 6c 20 66 6f 72 20 61 63 63 65 73 73 69 6e 67  ul for accessing
2d760 20 61 20 64 61 74 61 62 61 73 65 20 6f 6e 20 61   a database on a
2d770 20 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61 74   filesystem that
2d780 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 20 20 20   does not.**    
2d790 20 73 75 70 70 6f 72 74 20 6c 6f 63 6b 69 6e 67   support locking
2d7a0 2e 20 20 43 61 75 74 69 6f 6e 3a 20 20 44 61 74  .  Caution:  Dat
2d7b0 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e  abase corruption
2d7c0 20 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 66   might result if
2d7d0 20 74 77 6f 0a 2a 2a 20 20 20 20 20 6f 72 20 6d   two.**     or m
2d7e0 6f 72 65 20 70 72 6f 63 65 73 73 65 73 20 77 72  ore processes wr
2d7f0 69 74 65 20 74 6f 20 74 68 65 20 73 61 6d 65 20  ite to the same 
2d800 64 61 74 61 62 61 73 65 20 61 6e 64 20 61 6e 79  database and any
2d810 20 6f 6e 65 20 6f 66 20 74 68 6f 73 65 0a 2a 2a   one of those.**
2d820 20 20 20 20 20 70 72 6f 63 65 73 73 65 73 20 75       processes u
2d830 73 65 73 20 6e 6f 6c 6f 63 6b 3d 31 2e 0a 2a 2a  ses nolock=1..**
2d840 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 69 6d 6d  .**  <li> <b>imm
2d850 75 74 61 62 6c 65 3c 2f 62 3e 3a 20 5e 54 68 65  utable</b>: ^The
2d860 20 69 6d 6d 75 74 61 62 6c 65 20 70 61 72 61 6d   immutable param
2d870 65 74 65 72 20 69 73 20 61 20 62 6f 6f 6c 65 61  eter is a boolea
2d880 6e 20 71 75 65 72 79 0a 2a 2a 20 20 20 20 20 70  n query.**     p
2d890 61 72 61 6d 65 74 65 72 20 74 68 61 74 20 69 6e  arameter that in
2d8a0 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65  dicates that the
2d8b0 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
2d8c0 73 20 73 74 6f 72 65 64 20 6f 6e 0a 2a 2a 20 20  s stored on.**  
2d8d0 20 20 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64     read-only med
2d8e0 69 61 2e 20 20 5e 57 68 65 6e 20 69 6d 6d 75 74  ia.  ^When immut
2d8f0 61 62 6c 65 20 69 73 20 73 65 74 2c 20 53 51 4c  able is set, SQL
2d900 69 74 65 20 61 73 73 75 6d 65 73 20 74 68 61 74  ite assumes that
2d910 20 74 68 65 0a 2a 2a 20 20 20 20 20 64 61 74 61   the.**     data
2d920 62 61 73 65 20 66 69 6c 65 20 63 61 6e 6e 6f 74  base file cannot
2d930 20 62 65 20 63 68 61 6e 67 65 64 2c 20 65 76 65   be changed, eve
2d940 6e 20 62 79 20 61 20 70 72 6f 63 65 73 73 20 77  n by a process w
2d950 69 74 68 20 68 69 67 68 65 72 0a 2a 2a 20 20 20  ith higher.**   
2d960 20 20 70 72 69 76 69 6c 65 67 65 2c 20 61 6e 64    privilege, and
2d970 20 73 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   so the database
2d980 20 69 73 20 6f 70 65 6e 65 64 20 72 65 61 64 2d   is opened read-
2d990 6f 6e 6c 79 20 61 6e 64 20 61 6c 6c 20 6c 6f 63  only and all loc
2d9a0 6b 69 6e 67 0a 2a 2a 20 20 20 20 20 61 6e 64 20  king.**     and 
2d9b0 63 68 61 6e 67 65 20 64 65 74 65 63 74 69 6f 6e  change detection
2d9c0 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20 43   is disabled.  C
2d9d0 61 75 74 69 6f 6e 3a 20 53 65 74 74 69 6e 67 20  aution: Setting 
2d9e0 74 68 65 20 69 6d 6d 75 74 61 62 6c 65 0a 2a 2a  the immutable.**
2d9f0 20 20 20 20 20 70 72 6f 70 65 72 74 79 20 6f 6e       property on
2da00 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
2da10 20 74 68 61 74 20 64 6f 65 73 20 69 6e 20 66 61   that does in fa
2da20 63 74 20 63 68 61 6e 67 65 20 63 61 6e 20 72 65  ct change can re
2da30 73 75 6c 74 0a 2a 2a 20 20 20 20 20 69 6e 20 69  sult.**     in i
2da40 6e 63 6f 72 72 65 63 74 20 71 75 65 72 79 20 72  ncorrect query r
2da50 65 73 75 6c 74 73 20 61 6e 64 2f 6f 72 20 5b 53  esults and/or [S
2da60 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5d 20 65  QLITE_CORRUPT] e
2da70 72 72 6f 72 73 2e 0a 2a 2a 20 20 20 20 20 53 65  rrors..**     Se
2da80 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f  e also: [SQLITE_
2da90 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d  IOCAP_IMMUTABLE]
2daa0 2e 0a 2a 2a 20 20 20 20 20 20 20 0a 2a 2a 20 3c  ..**       .** <
2dab0 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 53 70 65 63  /ul>.**.** ^Spec
2dac0 69 66 79 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77  ifying an unknow
2dad0 6e 20 70 61 72 61 6d 65 74 65 72 20 69 6e 20 74  n parameter in t
2dae0 68 65 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65  he query compone
2daf0 6e 74 20 6f 66 20 61 20 55 52 49 20 69 73 20 6e  nt of a URI is n
2db00 6f 74 20 61 6e 0a 2a 2a 20 65 72 72 6f 72 2e 20  ot an.** error. 
2db10 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   Future versions
2db20 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74   of SQLite might
2db30 20 75 6e 64 65 72 73 74 61 6e 64 20 61 64 64 69   understand addi
2db40 74 69 6f 6e 61 6c 20 71 75 65 72 79 0a 2a 2a 20  tional query.** 
2db50 70 61 72 61 6d 65 74 65 72 73 2e 20 20 53 65 65  parameters.  See
2db60 20 22 5b 71 75 65 72 79 20 70 61 72 61 6d 65 74   "[query paramet
2db70 65 72 73 20 77 69 74 68 20 73 70 65 63 69 61 6c  ers with special
2db80 20 6d 65 61 6e 69 6e 67 20 74 6f 20 53 51 4c 69   meaning to SQLi
2db90 74 65 5d 22 20 66 6f 72 0a 2a 2a 20 61 64 64 69  te]" for.** addi
2dba0 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
2dbb0 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20  on..**.** [[URI 
2dbc0 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65  filename example
2dbd0 73 5d 5d 20 3c 68 33 3e 55 52 49 20 66 69 6c 65  s]] <h3>URI file
2dbe0 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73 3c 2f 68  name examples</h
2dbf0 33 3e 0a 2a 2a 0a 2a 2a 20 3c 74 61 62 6c 65 20  3>.**.** <table 
2dc00 62 6f 72 64 65 72 3d 22 31 22 20 61 6c 69 67 6e  border="1" align
2dc10 3d 63 65 6e 74 65 72 20 63 65 6c 6c 70 61 64 64  =center cellpadd
2dc20 69 6e 67 3d 35 3e 0a 2a 2a 20 3c 74 72 3e 3c 74  ing=5>.** <tr><t
2dc30 68 3e 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 73  h> URI filenames
2dc40 20 3c 74 68 3e 20 52 65 73 75 6c 74 73 0a 2a 2a   <th> Results.**
2dc50 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64   <tr><td> file:d
2dc60 61 74 61 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20  ata.db <td> .** 
2dc70 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74 68           Open th
2dc80 65 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22  e file "data.db"
2dc90 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
2dca0 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a 20 3c 74  directory..** <t
2dcb0 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d  r><td> file:/hom
2dcc0 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 3c 62  e/fred/data.db<b
2dcd0 72 3e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66  r>.**          f
2dce0 69 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f 66 72 65 64  ile:///home/fred
2dcf0 2f 64 61 74 61 2e 64 62 20 3c 62 72 3e 20 0a 2a  /data.db <br> .*
2dd00 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a  *          file:
2dd10 2f 2f 6c 6f 63 61 6c 68 6f 73 74 2f 68 6f 6d 65  //localhost/home
2dd20 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 62  /fred/data.db <b
2dd30 72 3e 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20  r> <td> .**     
2dd40 20 20 20 20 20 4f 70 65 6e 20 74 68 65 20 64 61       Open the da
2dd50 74 61 62 61 73 65 20 66 69 6c 65 20 22 2f 68 6f  tabase file "/ho
2dd60 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 22  me/fred/data.db"
2dd70 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  ..** <tr><td> fi
2dd80 6c 65 3a 2f 2f 64 61 72 6b 73 74 61 72 2f 68 6f  le://darkstar/ho
2dd90 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20  me/fred/data.db 
2dda0 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20  <td> .**        
2ddb0 20 20 41 6e 20 65 72 72 6f 72 2e 20 22 64 61 72    An error. "dar
2ddc0 6b 73 74 61 72 22 20 69 73 20 6e 6f 74 20 61 20  kstar" is not a 
2ddd0 72 65 63 6f 67 6e 69 7a 65 64 20 61 75 74 68 6f  recognized autho
2dde0 72 69 74 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64  rity..** <tr><td
2ddf0 20 73 74 79 6c 65 3d 22 77 68 69 74 65 2d 73 70   style="white-sp
2de00 61 63 65 3a 6e 6f 77 72 61 70 22 3e 20 0a 2a 2a  ace:nowrap"> .**
2de10 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a 2f            file:/
2de20 2f 2f 43 3a 2f 44 6f 63 75 6d 65 6e 74 73 25 32  //C:/Documents%2
2de30 30 61 6e 64 25 32 30 53 65 74 74 69 6e 67 73 2f  0and%20Settings/
2de40 66 72 65 64 2f 44 65 73 6b 74 6f 70 2f 64 61 74  fred/Desktop/dat
2de50 61 2e 64 62 0a 2a 2a 20 20 20 20 20 3c 74 64 3e  a.db.**     <td>
2de60 20 57 69 6e 64 6f 77 73 20 6f 6e 6c 79 3a 20 4f   Windows only: O
2de70 70 65 6e 20 74 68 65 20 66 69 6c 65 20 22 64 61  pen the file "da
2de80 74 61 2e 64 62 22 20 6f 6e 20 66 72 65 64 27 73  ta.db" on fred's
2de90 20 64 65 73 6b 74 6f 70 20 6f 6e 20 64 72 69 76   desktop on driv
2dea0 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 43 3a  e.**          C:
2deb0 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20  . Note that the 
2dec0 25 32 30 20 65 73 63 61 70 69 6e 67 20 69 6e 20  %20 escaping in 
2ded0 74 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20  this example is 
2dee0 6e 6f 74 20 73 74 72 69 63 74 6c 79 20 0a 2a 2a  not strictly .**
2def0 20 20 20 20 20 20 20 20 20 20 6e 65 63 65 73 73            necess
2df00 61 72 79 20 2d 20 73 70 61 63 65 20 63 68 61 72  ary - space char
2df10 61 63 74 65 72 73 20 63 61 6e 20 62 65 20 75 73  acters can be us
2df20 65 64 20 6c 69 74 65 72 61 6c 6c 79 0a 2a 2a 20  ed literally.** 
2df30 20 20 20 20 20 20 20 20 20 69 6e 20 55 52 49 20           in URI 
2df40 66 69 6c 65 6e 61 6d 65 73 2e 0a 2a 2a 20 3c 74  filenames..** <t
2df50 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74 61  r><td> file:data
2df60 2e 64 62 3f 6d 6f 64 65 3d 72 6f 26 63 61 63 68  .db?mode=ro&cach
2df70 65 3d 70 72 69 76 61 74 65 20 3c 74 64 3e 20 0a  e=private <td> .
2df80 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e  **          Open
2df90 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20   file "data.db" 
2dfa0 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  in the current d
2dfb0 69 72 65 63 74 6f 72 79 20 66 6f 72 20 72 65 61  irectory for rea
2dfc0 64 2d 6f 6e 6c 79 20 61 63 63 65 73 73 2e 0a 2a  d-only access..*
2dfd0 2a 20 20 20 20 20 20 20 20 20 20 52 65 67 61 72  *          Regar
2dfe0 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72  dless of whether
2dff0 20 6f 72 20 6e 6f 74 20 73 68 61 72 65 64 2d 63   or not shared-c
2e000 61 63 68 65 20 6d 6f 64 65 20 69 73 20 65 6e 61  ache mode is ena
2e010 62 6c 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 20  bled by.**      
2e020 20 20 20 20 64 65 66 61 75 6c 74 2c 20 75 73 65      default, use
2e030 20 61 20 70 72 69 76 61 74 65 20 63 61 63 68 65   a private cache
2e040 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  ..** <tr><td> fi
2e050 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61  le:/home/fred/da
2e060 74 61 2e 64 62 3f 76 66 73 3d 75 6e 69 78 2d 64  ta.db?vfs=unix-d
2e070 6f 74 66 69 6c 65 20 3c 74 64 3e 0a 2a 2a 20 20  otfile <td>.**  
2e080 20 20 20 20 20 20 20 20 4f 70 65 6e 20 66 69 6c          Open fil
2e090 65 20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61  e "/home/fred/da
2e0a0 74 61 2e 64 62 22 2e 20 55 73 65 20 74 68 65 20  ta.db". Use the 
2e0b0 73 70 65 63 69 61 6c 20 56 46 53 20 22 75 6e 69  special VFS "uni
2e0c0 78 2d 64 6f 74 66 69 6c 65 22 0a 2a 2a 20 20 20  x-dotfile".**   
2e0d0 20 20 20 20 20 20 20 74 68 61 74 20 75 73 65 73         that uses
2e0e0 20 64 6f 74 2d 66 69 6c 65 73 20 69 6e 20 70 6c   dot-files in pl
2e0f0 61 63 65 20 6f 66 20 70 6f 73 69 78 20 61 64 76  ace of posix adv
2e100 69 73 6f 72 79 20 6c 6f 63 6b 69 6e 67 2e 0a 2a  isory locking..*
2e110 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
2e120 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 65 61  data.db?mode=rea
2e130 64 6f 6e 6c 79 20 3c 74 64 3e 20 0a 2a 2a 20 20  donly <td> .**  
2e140 20 20 20 20 20 20 20 20 41 6e 20 65 72 72 6f 72          An error
2e150 2e 20 22 72 65 61 64 6f 6e 6c 79 22 20 69 73 20  . "readonly" is 
2e160 6e 6f 74 20 61 20 76 61 6c 69 64 20 6f 70 74 69  not a valid opti
2e170 6f 6e 20 66 6f 72 20 74 68 65 20 22 6d 6f 64 65  on for the "mode
2e180 22 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20  " parameter..** 
2e190 3c 2f 74 61 62 6c 65 3e 0a 2a 2a 0a 2a 2a 20 5e  </table>.**.** ^
2e1a0 55 52 49 20 68 65 78 61 64 65 63 69 6d 61 6c 20  URI hexadecimal 
2e1b0 65 73 63 61 70 65 20 73 65 71 75 65 6e 63 65 73  escape sequences
2e1c0 20 28 25 48 48 29 20 61 72 65 20 73 75 70 70 6f   (%HH) are suppo
2e1d0 72 74 65 64 20 77 69 74 68 69 6e 20 74 68 65 20  rted within the 
2e1e0 70 61 74 68 20 61 6e 64 0a 2a 2a 20 71 75 65 72  path and.** quer
2e1f0 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20  y components of 
2e200 61 20 55 52 49 2e 20 41 20 68 65 78 61 64 65 63  a URI. A hexadec
2e210 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75  imal escape sequ
2e220 65 6e 63 65 20 63 6f 6e 73 69 73 74 73 20 6f 66  ence consists of
2e230 20 61 0a 2a 2a 20 70 65 72 63 65 6e 74 20 73 69   a.** percent si
2e240 67 6e 20 2d 20 22 25 22 20 2d 20 66 6f 6c 6c 6f  gn - "%" - follo
2e250 77 65 64 20 62 79 20 65 78 61 63 74 6c 79 20 74  wed by exactly t
2e260 77 6f 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64  wo hexadecimal d
2e270 69 67 69 74 73 20 0a 2a 2a 20 73 70 65 63 69 66  igits .** specif
2e280 79 69 6e 67 20 61 6e 20 6f 63 74 65 74 20 76 61  ying an octet va
2e290 6c 75 65 2e 20 5e 42 65 66 6f 72 65 20 74 68 65  lue. ^Before the
2e2a0 20 70 61 74 68 20 6f 72 20 71 75 65 72 79 20 63   path or query c
2e2b0 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 0a 2a  omponents of a.*
2e2c0 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 61  * URI filename a
2e2d0 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 2c 20  re interpreted, 
2e2e0 74 68 65 79 20 61 72 65 20 65 6e 63 6f 64 65 64  they are encoded
2e2f0 20 75 73 69 6e 67 20 55 54 46 2d 38 20 61 6e 64   using UTF-8 and
2e300 20 61 6c 6c 20 0a 2a 2a 20 68 65 78 61 64 65 63   all .** hexadec
2e310 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75  imal escape sequ
2e320 65 6e 63 65 73 20 72 65 70 6c 61 63 65 64 20 62  ences replaced b
2e330 79 20 61 20 73 69 6e 67 6c 65 20 62 79 74 65 20  y a single byte 
2e340 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a 2a  containing the.*
2e350 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20  * corresponding 
2e360 6f 63 74 65 74 2e 20 49 66 20 74 68 69 73 20 70  octet. If this p
2e370 72 6f 63 65 73 73 20 67 65 6e 65 72 61 74 65 73  rocess generates
2e380 20 61 6e 20 69 6e 76 61 6c 69 64 20 55 54 46 2d   an invalid UTF-
2e390 38 20 65 6e 63 6f 64 69 6e 67 2c 0a 2a 2a 20 74  8 encoding,.** t
2e3a0 68 65 20 72 65 73 75 6c 74 73 20 61 72 65 20 75  he results are u
2e3b0 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20  ndefined..**.** 
2e3c0 3c 62 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f  <b>Note to Windo
2e3d0 77 73 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20 54  ws users:</b>  T
2e3e0 68 65 20 65 6e 63 6f 64 69 6e 67 20 75 73 65 64  he encoding used
2e3f0 20 66 6f 72 20 74 68 65 20 66 69 6c 65 6e 61 6d   for the filenam
2e400 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 6f 66  e argument.** of
2e410 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
2e420 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  and sqlite3_open
2e430 5f 76 32 28 29 20 6d 75 73 74 20 62 65 20 55 54  _v2() must be UT
2e440 46 2d 38 2c 20 6e 6f 74 20 77 68 61 74 65 76 65  F-8, not whateve
2e450 72 0a 2a 2a 20 63 6f 64 65 70 61 67 65 20 69 73  r.** codepage is
2e460 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e   currently defin
2e470 65 64 2e 20 20 46 69 6c 65 6e 61 6d 65 73 20 63  ed.  Filenames c
2e480 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 74 65 72 6e  ontaining intern
2e490 61 74 69 6f 6e 61 6c 0a 2a 2a 20 63 68 61 72 61  ational.** chara
2e4a0 63 74 65 72 73 20 6d 75 73 74 20 62 65 20 63 6f  cters must be co
2e4b0 6e 76 65 72 74 65 64 20 74 6f 20 55 54 46 2d 38  nverted to UTF-8
2e4c0 20 70 72 69 6f 72 20 74 6f 20 70 61 73 73 69 6e   prior to passin
2e4d0 67 20 74 68 65 6d 20 69 6e 74 6f 0a 2a 2a 20 73  g them into.** s
2e4e0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72  qlite3_open() or
2e4f0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2e500 28 29 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74  ()..**.** <b>Not
2e510 65 20 74 6f 20 57 69 6e 64 6f 77 73 20 52 75 6e  e to Windows Run
2e520 74 69 6d 65 20 75 73 65 72 73 3a 3c 2f 62 3e 20  time users:</b> 
2e530 20 54 68 65 20 74 65 6d 70 6f 72 61 72 79 20 64   The temporary d
2e540 69 72 65 63 74 6f 72 79 20 6d 75 73 74 20 62 65  irectory must be
2e550 20 73 65 74 0a 2a 2a 20 70 72 69 6f 72 20 74 6f   set.** prior to
2e560 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33   calling sqlite3
2e570 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69 74  _open() or sqlit
2e580 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 20 4f  e3_open_v2().  O
2e590 74 68 65 72 77 69 73 65 2c 20 76 61 72 69 6f 75  therwise, variou
2e5a0 73 0a 2a 2a 20 66 65 61 74 75 72 65 73 20 74 68  s.** features th
2e5b0 61 74 20 72 65 71 75 69 72 65 20 74 68 65 20 75  at require the u
2e5c0 73 65 20 6f 66 20 74 65 6d 70 6f 72 61 72 79 20  se of temporary 
2e5d0 66 69 6c 65 73 20 6d 61 79 20 66 61 69 6c 2e 0a  files may fail..
2e5e0 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
2e5f0 5b 73 71 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69  [sqlite3_temp_di
2e600 72 65 63 74 6f 72 79 5d 0a 2a 2f 0a 53 51 4c 49  rectory].*/.SQLI
2e610 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
2e620 65 33 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74  e3_open(.  const
2e630 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c   char *filename,
2e640 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66     /* Database f
2e650 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38 29 20  ilename (UTF-8) 
2e660 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70  */.  sqlite3 **p
2e670 70 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20  pDb          /* 
2e680 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68  OUT: SQLite db h
2e690 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49  andle */.);.SQLI
2e6a0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
2e6b0 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63 6f 6e  e3_open16(.  con
2e6c0 73 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e 61 6d  st void *filenam
2e6d0 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  e,   /* Database
2e6e0 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 31   filename (UTF-1
2e6f0 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20  6) */.  sqlite3 
2e700 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20 20 20  **ppDb          
2e710 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64  /* OUT: SQLite d
2e720 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53  b handle */.);.S
2e730 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
2e740 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 0a 20  lite3_open_v2(. 
2e750 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c   const char *fil
2e760 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61  ename,   /* Data
2e770 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55  base filename (U
2e780 54 46 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74  TF-8) */.  sqlit
2e790 65 33 20 2a 2a 70 70 44 62 2c 20 20 20 20 20 20  e3 **ppDb,      
2e7a0 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74     /* OUT: SQLit
2e7b0 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  e db handle */. 
2e7c0 20 69 6e 74 20 66 6c 61 67 73 2c 20 20 20 20 20   int flags,     
2e7d0 20 20 20 20 20 20 20 20 20 2f 2a 20 46 6c 61 67           /* Flag
2e7e0 73 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  s */.  const cha
2e7f0 72 20 2a 7a 56 66 73 20 20 20 20 20 20 20 20 2f  r *zVfs        /
2e800 2a 20 4e 61 6d 65 20 6f 66 20 56 46 53 20 6d 6f  * Name of VFS mo
2e810 64 75 6c 65 20 74 6f 20 75 73 65 20 2a 2f 0a 29  dule to use */.)
2e820 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
2e830 46 3a 20 4f 62 74 61 69 6e 20 56 61 6c 75 65 73  F: Obtain Values
2e840 20 46 6f 72 20 55 52 49 20 50 61 72 61 6d 65 74   For URI Paramet
2e850 65 72 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ers.**.** These 
2e860 61 72 65 20 75 74 69 6c 69 74 79 20 72 6f 75 74  are utility rout
2e870 69 6e 65 73 2c 20 75 73 65 66 75 6c 20 74 6f 20  ines, useful to 
2e880 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
2e890 6f 6e 73 2c 20 74 68 61 74 20 63 68 65 63 6b 0a  ons, that check.
2e8a0 2a 2a 20 74 6f 20 73 65 65 20 69 66 20 61 20 64  ** to see if a d
2e8b0 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 61 73  atabase file was
2e8c0 20 61 20 55 52 49 20 74 68 61 74 20 63 6f 6e 74   a URI that cont
2e8d0 61 69 6e 65 64 20 61 20 73 70 65 63 69 66 69 63  ained a specific
2e8e0 20 71 75 65 72 79 20 0a 2a 2a 20 70 61 72 61 6d   query .** param
2e8f0 65 74 65 72 2c 20 61 6e 64 20 69 66 20 73 6f 20  eter, and if so 
2e900 6f 62 74 61 69 6e 73 20 74 68 65 20 76 61 6c 75  obtains the valu
2e910 65 20 6f 66 20 74 68 61 74 20 71 75 65 72 79 20  e of that query 
2e920 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a  parameter..**.**
2e930 20 49 66 20 46 20 69 73 20 74 68 65 20 64 61 74   If F is the dat
2e940 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 70  abase filename p
2e950 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20 69 6e  ointer passed in
2e960 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 20 6d  to the xOpen() m
2e970 65 74 68 6f 64 20 6f 66 20 0a 2a 2a 20 61 20 56  ethod of .** a V
2e980 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
2e990 6e 20 77 68 65 6e 20 74 68 65 20 66 6c 61 67 73  n when the flags
2e9a0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f   parameter to xO
2e9b0 70 65 6e 28 29 20 68 61 73 20 6f 6e 65 20 6f 72  pen() has one or
2e9c0 20 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68 65   .** more of the
2e9d0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52   [SQLITE_OPEN_UR
2e9e0 49 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50  I] or [SQLITE_OP
2e9f0 45 4e 5f 4d 41 49 4e 5f 44 42 5d 20 62 69 74 73  EN_MAIN_DB] bits
2ea00 20 73 65 74 20 61 6e 64 0a 2a 2a 20 50 20 69 73   set and.** P is
2ea10 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
2ea20 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72   query parameter
2ea30 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65  , then.** sqlite
2ea40 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28  3_uri_parameter(
2ea50 46 2c 50 29 20 72 65 74 75 72 6e 73 20 74 68 65  F,P) returns the
2ea60 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 50 0a   value of the P.
2ea70 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 69 66 20  ** parameter if 
2ea80 69 74 20 65 78 69 73 74 73 20 6f 72 20 61 20 4e  it exists or a N
2ea90 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66 20 50  ULL pointer if P
2eaa0 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61 72   does not appear
2eab0 20 61 73 20 61 20 0a 2a 2a 20 71 75 65 72 79 20   as a .** query 
2eac0 70 61 72 61 6d 65 74 65 72 20 6f 6e 20 46 2e 20  parameter on F. 
2ead0 20 49 66 20 50 20 69 73 20 61 20 71 75 65 72 79   If P is a query
2eae0 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 46 0a   parameter of F.
2eaf0 2a 2a 20 68 61 73 20 6e 6f 20 65 78 70 6c 69 63  ** has no explic
2eb00 69 74 20 76 61 6c 75 65 2c 20 74 68 65 6e 20 73  it value, then s
2eb10 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d  qlite3_uri_param
2eb20 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e  eter(F,P) return
2eb30 73 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74  s.** a pointer t
2eb40 6f 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  o an empty strin
2eb50 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  g..**.** The sql
2eb60 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
2eb70 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65 20  (F,P,B) routine 
2eb80 61 73 73 75 6d 65 73 20 74 68 61 74 20 50 20 69  assumes that P i
2eb90 73 20 61 20 62 6f 6f 6c 65 61 6e 0a 2a 2a 20 70  s a boolean.** p
2eba0 61 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65 74  arameter and ret
2ebb0 75 72 6e 73 20 74 72 75 65 20 28 31 29 20 6f 72  urns true (1) or
2ebc0 20 66 61 6c 73 65 20 28 30 29 20 61 63 63 6f 72   false (0) accor
2ebd0 64 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c 75  ding to the valu
2ebe0 65 0a 2a 2a 20 6f 66 20 50 2e 20 20 54 68 65 20  e.** of P.  The 
2ebf0 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
2ec00 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69  ean(F,P,B) routi
2ec10 6e 65 20 72 65 74 75 72 6e 73 20 74 72 75 65 20  ne returns true 
2ec20 28 31 29 20 69 66 20 74 68 65 0a 2a 2a 20 76 61  (1) if the.** va
2ec30 6c 75 65 20 6f 66 20 71 75 65 72 79 20 70 61 72  lue of query par
2ec40 61 6d 65 74 65 72 20 50 20 69 73 20 6f 6e 65 20  ameter P is one 
2ec50 6f 66 20 22 79 65 73 22 2c 20 22 74 72 75 65 22  of "yes", "true"
2ec60 2c 20 6f 72 20 22 6f 6e 22 20 69 6e 20 61 6e 79  , or "on" in any
2ec70 0a 2a 2a 20 63 61 73 65 20 6f 72 20 69 66 20 74  .** case or if t
2ec80 68 65 20 76 61 6c 75 65 20 62 65 67 69 6e 73 20  he value begins 
2ec90 77 69 74 68 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20  with a non-zero 
2eca0 6e 75 6d 62 65 72 2e 20 20 54 68 65 20 0a 2a 2a  number.  The .**
2ecb0 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f   sqlite3_uri_boo
2ecc0 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74  lean(F,P,B) rout
2ecd0 69 6e 65 73 20 72 65 74 75 72 6e 73 20 66 61 6c  ines returns fal
2ece0 73 65 20 28 30 29 20 69 66 20 74 68 65 20 76 61  se (0) if the va
2ecf0 6c 75 65 20 6f 66 0a 2a 2a 20 71 75 65 72 79 20  lue of.** query 
2ed00 70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20 6f  parameter P is o
2ed10 6e 65 20 6f 66 20 22 6e 6f 22 2c 20 22 66 61 6c  ne of "no", "fal
2ed20 73 65 22 2c 20 6f 72 20 22 6f 66 66 22 20 69 6e  se", or "off" in
2ed30 20 61 6e 79 20 63 61 73 65 20 6f 72 0a 2a 2a 20   any case or.** 
2ed40 69 66 20 74 68 65 20 76 61 6c 75 65 20 62 65 67  if the value beg
2ed50 69 6e 73 20 77 69 74 68 20 61 20 6e 75 6d 65 72  ins with a numer
2ed60 69 63 20 7a 65 72 6f 2e 20 20 49 66 20 50 20 69  ic zero.  If P i
2ed70 73 20 6e 6f 74 20 61 20 71 75 65 72 79 0a 2a 2a  s not a query.**
2ed80 20 70 61 72 61 6d 65 74 65 72 20 6f 6e 20 46 20   parameter on F 
2ed90 6f 72 20 69 66 20 74 68 65 20 76 61 6c 75 65 20  or if the value 
2eda0 6f 66 20 50 20 69 73 20 64 6f 65 73 20 6e 6f 74  of P is does not
2edb0 20 6d 61 74 63 68 20 61 6e 79 20 6f 66 20 74 68   match any of th
2edc0 65 0a 2a 2a 20 61 62 6f 76 65 2c 20 74 68 65 6e  e.** above, then
2edd0 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f   sqlite3_uri_boo
2ede0 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 65 74 75  lean(F,P,B) retu
2edf0 72 6e 73 20 28 42 21 3d 30 29 2e 0a 2a 2a 0a 2a  rns (B!=0)..**.*
2ee00 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72  * The sqlite3_ur
2ee10 69 5f 69 6e 74 36 34 28 46 2c 50 2c 44 29 20 72  i_int64(F,P,D) r
2ee20 6f 75 74 69 6e 65 20 63 6f 6e 76 65 72 74 73 20  outine converts 
2ee30 74 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69  the value of P i
2ee40 6e 74 6f 20 61 0a 2a 2a 20 36 34 2d 62 69 74 20  nto a.** 64-bit 
2ee50 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 61  signed integer a
2ee60 6e 64 20 72 65 74 75 72 6e 73 20 74 68 61 74 20  nd returns that 
2ee70 69 6e 74 65 67 65 72 2c 20 6f 72 20 44 20 69 66  integer, or D if
2ee80 20 50 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 65   P does not.** e
2ee90 78 69 73 74 2e 20 20 49 66 20 74 68 65 20 76 61  xist.  If the va
2eea0 6c 75 65 20 6f 66 20 50 20 69 73 20 73 6f 6d 65  lue of P is some
2eeb0 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e  thing other than
2eec0 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 74 68 65   an integer, the
2eed0 6e 0a 2a 2a 20 7a 65 72 6f 20 69 73 20 72 65 74  n.** zero is ret
2eee0 75 72 6e 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 49 66  urned..** .** If
2eef0 20 46 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69   F is a NULL poi
2ef00 6e 74 65 72 2c 20 74 68 65 6e 20 73 71 6c 69 74  nter, then sqlit
2ef10 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72  e3_uri_parameter
2ef20 28 46 2c 50 29 20 72 65 74 75 72 6e 73 20 4e 55  (F,P) returns NU
2ef30 4c 4c 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65  LL and.** sqlite
2ef40 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c  3_uri_boolean(F,
2ef50 50 2c 42 29 20 72 65 74 75 72 6e 73 20 42 2e 20  P,B) returns B. 
2ef60 20 49 66 20 46 20 69 73 20 6e 6f 74 20 61 20 4e   If F is not a N
2ef70 55 4c 4c 20 70 6f 69 6e 74 65 72 20 61 6e 64 0a  ULL pointer and.
2ef80 2a 2a 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61  ** is not a data
2ef90 62 61 73 65 20 66 69 6c 65 20 70 61 74 68 6e 61  base file pathna
2efa0 6d 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20  me pointer that 
2efb0 53 51 4c 69 74 65 20 70 61 73 73 65 64 20 69 6e  SQLite passed in
2efc0 74 6f 20 74 68 65 20 78 4f 70 65 6e 0a 2a 2a 20  to the xOpen.** 
2efd0 56 46 53 20 6d 65 74 68 6f 64 2c 20 74 68 65 6e  VFS method, then
2efe0 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66   the behavior of
2eff0 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73   this routine is
2f000 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20 70   undefined and p
2f010 72 6f 62 61 62 6c 79 0a 2a 2a 20 75 6e 64 65 73  robably.** undes
2f020 69 72 61 62 6c 65 2e 0a 2a 2f 0a 53 51 4c 49 54  irable..*/.SQLIT
2f030 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
2f040 20 2a 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61   *sqlite3_uri_pa
2f050 72 61 6d 65 74 65 72 28 63 6f 6e 73 74 20 63 68  rameter(const ch
2f060 61 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 2c 20 63  ar *zFilename, c
2f070 6f 6e 73 74 20 63 68 61 72 20 2a 7a 50 61 72 61  onst char *zPara
2f080 6d 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  m);.SQLITE_API i
2f090 6e 74 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62  nt sqlite3_uri_b
2f0a0 6f 6f 6c 65 61 6e 28 63 6f 6e 73 74 20 63 68 61  oolean(const cha
2f0b0 72 20 2a 7a 46 69 6c 65 2c 20 63 6f 6e 73 74 20  r *zFile, const 
2f0c0 63 68 61 72 20 2a 7a 50 61 72 61 6d 2c 20 69 6e  char *zParam, in
2f0d0 74 20 62 44 65 66 61 75 6c 74 29 3b 0a 53 51 4c  t bDefault);.SQL
2f0e0 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f  ITE_API sqlite3_
2f0f0 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 72  int64 sqlite3_ur
2f100 69 5f 69 6e 74 36 34 28 63 6f 6e 73 74 20 63 68  i_int64(const ch
2f110 61 72 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a  ar*, const char*
2f120 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 29  , sqlite3_int64)
2f130 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  ;.../*.** CAPI3R
2f140 45 46 3a 20 45 72 72 6f 72 20 43 6f 64 65 73 20  EF: Error Codes 
2f150 41 6e 64 20 4d 65 73 73 61 67 65 73 0a 2a 2a 20  And Messages.** 
2f160 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
2f170 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6d 6f  **.** ^If the mo
2f180 73 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74 65  st recent sqlite
2f190 33 5f 2a 20 41 50 49 20 63 61 6c 6c 20 61 73 73  3_* API call ass
2f1a0 6f 63 69 61 74 65 64 20 77 69 74 68 20 0a 2a 2a  ociated with .**
2f1b0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
2f1c0 63 74 69 6f 6e 5d 20 44 20 66 61 69 6c 65 64 2c  ction] D failed,
2f1d0 20 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74 65   then the sqlite
2f1e0 33 5f 65 72 72 63 6f 64 65 28 44 29 20 69 6e 74  3_errcode(D) int
2f1f0 65 72 66 61 63 65 0a 2a 2a 20 72 65 74 75 72 6e  erface.** return
2f200 73 20 74 68 65 20 6e 75 6d 65 72 69 63 20 5b 72  s the numeric [r
2f210 65 73 75 6c 74 20 63 6f 64 65 5d 20 6f 72 20 5b  esult code] or [
2f220 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
2f230 63 6f 64 65 5d 20 66 6f 72 20 74 68 61 74 0a 2a  code] for that.*
2f240 2a 20 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 49  * API call..** I
2f250 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  f the most recen
2f260 74 20 41 50 49 20 63 61 6c 6c 20 77 61 73 20 73  t API call was s
2f270 75 63 63 65 73 73 66 75 6c 2c 0a 2a 2a 20 74 68  uccessful,.** th
2f280 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  en the return va
2f290 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  lue from sqlite3
2f2a0 5f 65 72 72 63 6f 64 65 28 29 20 69 73 20 75 6e  _errcode() is un
2f2b0 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 5e 54 68 65  defined..** ^The
2f2c0 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
2f2d0 64 5f 65 72 72 63 6f 64 65 28 29 0a 2a 2a 20 69  d_errcode().** i
2f2e0 6e 74 65 72 66 61 63 65 20 69 73 20 74 68 65 20  nterface is the 
2f2f0 73 61 6d 65 20 65 78 63 65 70 74 20 74 68 61 74  same except that
2f300 20 69 74 20 61 6c 77 61 79 73 20 72 65 74 75 72   it always retur
2f310 6e 73 20 74 68 65 20 0a 2a 2a 20 5b 65 78 74 65  ns the .** [exte
2f320 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
2f330 5d 20 65 76 65 6e 20 77 68 65 6e 20 65 78 74 65  ] even when exte
2f340 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
2f350 73 20 61 72 65 0a 2a 2a 20 64 69 73 61 62 6c 65  s are.** disable
2f360 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  d..**.** ^The sq
2f370 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 20 61  lite3_errmsg() a
2f380 6e 64 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  nd sqlite3_errms
2f390 67 31 36 28 29 20 72 65 74 75 72 6e 20 45 6e 67  g16() return Eng
2f3a0 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65 0a 2a 2a  lish-language.**
2f3b0 20 74 65 78 74 20 74 68 61 74 20 64 65 73 63 72   text that descr
2f3c0 69 62 65 73 20 74 68 65 20 65 72 72 6f 72 2c 20  ibes the error, 
2f3d0 61 73 20 65 69 74 68 65 72 20 55 54 46 2d 38 20  as either UTF-8 
2f3e0 6f 72 20 55 54 46 2d 31 36 20 72 65 73 70 65 63  or UTF-16 respec
2f3f0 74 69 76 65 6c 79 2e 0a 2a 2a 20 5e 28 4d 65 6d  tively..** ^(Mem
2f400 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  ory to hold the 
2f410 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74  error message st
2f420 72 69 6e 67 20 69 73 20 6d 61 6e 61 67 65 64 20  ring is managed 
2f430 69 6e 74 65 72 6e 61 6c 6c 79 2e 0a 2a 2a 20 54  internally..** T
2f440 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
2f450 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  oes not need to 
2f460 77 6f 72 72 79 20 61 62 6f 75 74 20 66 72 65 65  worry about free
2f470 69 6e 67 20 74 68 65 20 72 65 73 75 6c 74 2e 0a  ing the result..
2f480 2a 2a 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20  ** However, the 
2f490 65 72 72 6f 72 20 73 74 72 69 6e 67 20 6d 69 67  error string mig
2f4a0 68 74 20 62 65 20 6f 76 65 72 77 72 69 74 74 65  ht be overwritte
2f4b0 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61 74 65 64  n or deallocated
2f4c0 20 62 79 0a 2a 2a 20 73 75 62 73 65 71 75 65 6e   by.** subsequen
2f4d0 74 20 63 61 6c 6c 73 20 74 6f 20 6f 74 68 65 72  t calls to other
2f4e0 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
2f4f0 65 20 66 75 6e 63 74 69 6f 6e 73 2e 29 5e 0a 2a  e functions.)^.*
2f500 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
2f510 33 5f 65 72 72 73 74 72 28 29 20 69 6e 74 65 72  3_errstr() inter
2f520 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 68 65  face returns the
2f530 20 45 6e 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67   English-languag
2f540 65 20 74 65 78 74 0a 2a 2a 20 74 68 61 74 20 64  e text.** that d
2f550 65 73 63 72 69 62 65 73 20 74 68 65 20 5b 72 65  escribes the [re
2f560 73 75 6c 74 20 63 6f 64 65 5d 2c 20 61 73 20 55  sult code], as U
2f570 54 46 2d 38 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72  TF-8..** ^(Memor
2f580 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72  y to hold the er
2f590 72 6f 72 20 6d 65 73 73 61 67 65 20 73 74 72 69  ror message stri
2f5a0 6e 67 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e  ng is managed in
2f5b0 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 61 6e 64 20  ternally.** and 
2f5c0 6d 75 73 74 20 6e 6f 74 20 62 65 20 66 72 65 65  must not be free
2f5d0 64 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61  d by the applica
2f5e0 74 69 6f 6e 29 5e 2e 0a 2a 2a 0a 2a 2a 20 57 68  tion)^..**.** Wh
2f5f0 65 6e 20 74 68 65 20 73 65 72 69 61 6c 69 7a 65  en the serialize
2f600 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64  d [threading mod
2f610 65 5d 20 69 73 20 69 6e 20 75 73 65 2c 20 69 74  e] is in use, it
2f620 20 6d 69 67 68 74 20 62 65 20 74 68 65 0a 2a 2a   might be the.**
2f630 20 63 61 73 65 20 74 68 61 74 20 61 20 73 65 63   case that a sec
2f640 6f 6e 64 20 65 72 72 6f 72 20 6f 63 63 75 72 73  ond error occurs
2f650 20 6f 6e 20 61 20 73 65 70 61 72 61 74 65 20 74   on a separate t
2f660 68 72 65 61 64 20 69 6e 20 62 65 74 77 65 65 6e  hread in between
2f670 0a 2a 2a 20 74 68 65 20 74 69 6d 65 20 6f 66 20  .** the time of 
2f680 74 68 65 20 66 69 72 73 74 20 65 72 72 6f 72 20  the first error 
2f690 61 6e 64 20 74 68 65 20 63 61 6c 6c 20 74 6f 20  and the call to 
2f6a0 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73  these interfaces
2f6b0 2e 0a 2a 2a 20 57 68 65 6e 20 74 68 61 74 20 68  ..** When that h
2f6c0 61 70 70 65 6e 73 2c 20 74 68 65 20 73 65 63 6f  appens, the seco
2f6d0 6e 64 20 65 72 72 6f 72 20 77 69 6c 6c 20 62 65  nd error will be
2f6e0 20 72 65 70 6f 72 74 65 64 20 73 69 6e 63 65 20   reported since 
2f6f0 74 68 65 73 65 0a 2a 2a 20 69 6e 74 65 72 66 61  these.** interfa
2f700 63 65 73 20 61 6c 77 61 79 73 20 72 65 70 6f 72  ces always repor
2f710 74 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  t the most recen
2f720 74 20 72 65 73 75 6c 74 2e 20 20 54 6f 20 61 76  t result.  To av
2f730 6f 69 64 0a 2a 2a 20 74 68 69 73 2c 20 65 61 63  oid.** this, eac
2f740 68 20 74 68 72 65 61 64 20 63 61 6e 20 6f 62 74  h thread can obt
2f750 61 69 6e 20 65 78 63 6c 75 73 69 76 65 20 75 73  ain exclusive us
2f760 65 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  e of the [databa
2f770 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
2f780 0a 2a 2a 20 62 79 20 69 6e 76 6f 6b 69 6e 67 20  .** by invoking 
2f790 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 65  [sqlite3_mutex_e
2f7a0 6e 74 65 72 5d 28 5b 73 71 6c 69 74 65 33 5f 64  nter]([sqlite3_d
2f7b0 62 5f 6d 75 74 65 78 5d 28 44 29 29 20 62 65 66  b_mutex](D)) bef
2f7c0 6f 72 65 20 62 65 67 69 6e 6e 69 6e 67 0a 2a 2a  ore beginning.**
2f7d0 20 74 6f 20 75 73 65 20 44 20 61 6e 64 20 69 6e   to use D and in
2f7e0 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f  voking [sqlite3_
2f7f0 6d 75 74 65 78 5f 6c 65 61 76 65 5d 28 5b 73 71  mutex_leave]([sq
2f800 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28  lite3_db_mutex](
2f810 44 29 29 20 61 66 74 65 72 0a 2a 2a 20 61 6c 6c  D)) after.** all
2f820 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 20 69 6e   calls to the in
2f830 74 65 72 66 61 63 65 73 20 6c 69 73 74 65 64 20  terfaces listed 
2f840 68 65 72 65 20 61 72 65 20 63 6f 6d 70 6c 65 74  here are complet
2f850 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20  ed..**.** If an 
2f860 69 6e 74 65 72 66 61 63 65 20 66 61 69 6c 73 20  interface fails 
2f870 77 69 74 68 20 53 51 4c 49 54 45 5f 4d 49 53 55  with SQLITE_MISU
2f880 53 45 2c 20 74 68 61 74 20 6d 65 61 6e 73 20 74  SE, that means t
2f890 68 65 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20  he interface.** 
2f8a0 77 61 73 20 69 6e 76 6f 6b 65 64 20 69 6e 63 6f  was invoked inco
2f8b0 72 72 65 63 74 6c 79 20 62 79 20 74 68 65 20 61  rrectly by the a
2f8c0 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 49 6e 20  pplication.  In 
2f8d0 74 68 61 74 20 63 61 73 65 2c 20 74 68 65 0a 2a  that case, the.*
2f8e0 2a 20 65 72 72 6f 72 20 63 6f 64 65 20 61 6e 64  * error code and
2f8f0 20 6d 65 73 73 61 67 65 20 6d 61 79 20 6f 72 20   message may or 
2f900 6d 61 79 20 6e 6f 74 20 62 65 20 73 65 74 2e 0a  may not be set..
2f910 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
2f920 74 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  t sqlite3_errcod
2f930 65 28 73 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a  e(sqlite3 *db);.
2f940 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
2f950 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
2f960 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20  errcode(sqlite3 
2f970 2a 64 62 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  *db);.SQLITE_API
2f980 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
2f990 69 74 65 33 5f 65 72 72 6d 73 67 28 73 71 6c 69  ite3_errmsg(sqli
2f9a0 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50  te3*);.SQLITE_AP
2f9b0 49 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71  I const void *sq
2f9c0 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 73  lite3_errmsg16(s
2f9d0 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
2f9e0 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
2f9f0 2a 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28  *sqlite3_errstr(
2fa00 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  int);../*.** CAP
2fa10 49 33 52 45 46 3a 20 50 72 65 70 61 72 65 64 20  I3REF: Prepared 
2fa20 53 74 61 74 65 6d 65 6e 74 20 4f 62 6a 65 63 74  Statement Object
2fa30 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70  .** KEYWORDS: {p
2fa40 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2fa50 74 7d 20 7b 70 72 65 70 61 72 65 64 20 73 74 61  t} {prepared sta
2fa60 74 65 6d 65 6e 74 73 7d 0a 2a 2a 0a 2a 2a 20 41  tements}.**.** A
2fa70 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
2fa80 69 73 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73  is object repres
2fa90 65 6e 74 73 20 61 20 73 69 6e 67 6c 65 20 53 51  ents a single SQ
2faa0 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  L statement that
2fab0 0a 2a 2a 20 68 61 73 20 62 65 65 6e 20 63 6f 6d  .** has been com
2fac0 70 69 6c 65 64 20 69 6e 74 6f 20 62 69 6e 61 72  piled into binar
2fad0 79 20 66 6f 72 6d 20 61 6e 64 20 69 73 20 72 65  y form and is re
2fae0 61 64 79 20 74 6f 20 62 65 20 65 76 61 6c 75 61  ady to be evalua
2faf0 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 6b  ted..**.** Think
2fb00 20 6f 66 20 65 61 63 68 20 53 51 4c 20 73 74 61   of each SQL sta
2fb10 74 65 6d 65 6e 74 20 61 73 20 61 20 73 65 70 61  tement as a sepa
2fb20 72 61 74 65 20 63 6f 6d 70 75 74 65 72 20 70 72  rate computer pr
2fb30 6f 67 72 61 6d 2e 20 20 54 68 65 0a 2a 2a 20 6f  ogram.  The.** o
2fb40 72 69 67 69 6e 61 6c 20 53 51 4c 20 74 65 78 74  riginal SQL text
2fb50 20 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e   is source code.
2fb60 20 20 41 20 70 72 65 70 61 72 65 64 20 73 74 61    A prepared sta
2fb70 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 0a 2a  tement object .*
2fb80 2a 20 69 73 20 74 68 65 20 63 6f 6d 70 69 6c 65  * is the compile
2fb90 64 20 6f 62 6a 65 63 74 20 63 6f 64 65 2e 20 20  d object code.  
2fba0 41 6c 6c 20 53 51 4c 20 6d 75 73 74 20 62 65 20  All SQL must be 
2fbb0 63 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61  converted into a
2fbc0 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74 61  .** prepared sta
2fbd0 74 65 6d 65 6e 74 20 62 65 66 6f 72 65 20 69 74  tement before it
2fbe0 20 63 61 6e 20 62 65 20 72 75 6e 2e 0a 2a 2a 0a   can be run..**.
2fbf0 2a 2a 20 54 68 65 20 6c 69 66 65 2d 63 79 63 6c  ** The life-cycl
2fc00 65 20 6f 66 20 61 20 70 72 65 70 61 72 65 64 20  e of a prepared 
2fc10 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74  statement object
2fc20 20 75 73 75 61 6c 6c 79 20 67 6f 65 73 20 6c 69   usually goes li
2fc30 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c  ke this:.**.** <
2fc40 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 43 72 65 61  ol>.** <li> Crea
2fc50 74 65 20 74 68 65 20 70 72 65 70 61 72 65 64 20  te the prepared 
2fc60 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74  statement object
2fc70 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
2fc80 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2e 0a 2a  prepare_v2()]..*
2fc90 2a 20 3c 6c 69 3e 20 42 69 6e 64 20 76 61 6c 75  * <li> Bind valu
2fca0 65 73 20 74 6f 20 5b 70 61 72 61 6d 65 74 65 72  es to [parameter
2fcb0 73 5d 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c  s] using the sql
2fcc0 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 0a 2a 2a  ite3_bind_*().**
2fcd0 20 20 20 20 20 20 69 6e 74 65 72 66 61 63 65 73        interfaces
2fce0 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 75 6e 20 74 68  ..** <li> Run th
2fcf0 65 20 53 51 4c 20 62 79 20 63 61 6c 6c 69 6e 67  e SQL by calling
2fd00 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
2fd10 5d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69  ] one or more ti
2fd20 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 65 73  mes..** <li> Res
2fd30 65 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20  et the prepared 
2fd40 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67 20  statement using 
2fd50 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29  [sqlite3_reset()
2fd60 5d 20 74 68 65 6e 20 67 6f 20 62 61 63 6b 0a 2a  ] then go back.*
2fd70 2a 20 20 20 20 20 20 74 6f 20 73 74 65 70 20 32  *      to step 2
2fd80 2e 20 20 44 6f 20 74 68 69 73 20 7a 65 72 6f 20  .  Do this zero 
2fd90 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a  or more times..*
2fda0 2a 20 3c 6c 69 3e 20 44 65 73 74 72 6f 79 20 74  * <li> Destroy t
2fdb0 68 65 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20  he object using 
2fdc0 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
2fdd0 65 28 29 5d 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a  e()]..** </ol>.*
2fde0 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74  /.typedef struct
2fdf0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 73 71   sqlite3_stmt sq
2fe00 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a  lite3_stmt;../*.
2fe10 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e  ** CAPI3REF: Run
2fe20 2d 74 69 6d 65 20 4c 69 6d 69 74 73 0a 2a 2a 20  -time Limits.** 
2fe30 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
2fe40 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20 69 6e 74  **.** ^(This int
2fe50 65 72 66 61 63 65 20 61 6c 6c 6f 77 73 20 74 68  erface allows th
2fe60 65 20 73 69 7a 65 20 6f 66 20 76 61 72 69 6f 75  e size of variou
2fe70 73 20 63 6f 6e 73 74 72 75 63 74 73 20 74 6f 20  s constructs to 
2fe80 62 65 20 6c 69 6d 69 74 65 64 0a 2a 2a 20 6f 6e  be limited.** on
2fe90 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 79   a connection by
2fea0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69   connection basi
2feb0 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 70 61  s.  The first pa
2fec0 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a  rameter is the.*
2fed0 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
2fee0 65 63 74 69 6f 6e 5d 20 77 68 6f 73 65 20 6c 69  ection] whose li
2fef0 6d 69 74 20 69 73 20 74 6f 20 62 65 20 73 65 74  mit is to be set
2ff00 20 6f 72 20 71 75 65 72 69 65 64 2e 20 20 54 68   or queried.  Th
2ff10 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61  e.** second para
2ff20 6d 65 74 65 72 20 69 73 20 6f 6e 65 20 6f 66 20  meter is one of 
2ff30 74 68 65 20 5b 6c 69 6d 69 74 20 63 61 74 65 67  the [limit categ
2ff40 6f 72 69 65 73 5d 20 74 68 61 74 20 64 65 66 69  ories] that defi
2ff50 6e 65 20 61 0a 2a 2a 20 63 6c 61 73 73 20 6f 66  ne a.** class of
2ff60 20 63 6f 6e 73 74 72 75 63 74 73 20 74 6f 20 62   constructs to b
2ff70 65 20 73 69 7a 65 20 6c 69 6d 69 74 65 64 2e 20  e size limited. 
2ff80 20 54 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   The third param
2ff90 65 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20 6e  eter is the.** n
2ffa0 65 77 20 6c 69 6d 69 74 20 66 6f 72 20 74 68 61  ew limit for tha
2ffb0 74 20 63 6f 6e 73 74 72 75 63 74 2e 29 5e 0a 2a  t construct.)^.*
2ffc0 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6e 65 77  *.** ^If the new
2ffd0 20 6c 69 6d 69 74 20 69 73 20 61 20 6e 65 67 61   limit is a nega
2ffe0 74 69 76 65 20 6e 75 6d 62 65 72 2c 20 74 68 65  tive number, the
2fff0 20 6c 69 6d 69 74 20 69 73 20 75 6e 63 68 61 6e   limit is unchan
30000 67 65 64 2e 0a 2a 2a 20 5e 28 46 6f 72 20 65 61  ged..** ^(For ea
30010 63 68 20 6c 69 6d 69 74 20 63 61 74 65 67 6f 72  ch limit categor
30020 79 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 3c  y SQLITE_LIMIT_<
30030 69 3e 4e 41 4d 45 3c 2f 69 3e 20 74 68 65 72 65  i>NAME</i> there
30040 20 69 73 20 61 20 0a 2a 2a 20 5b 6c 69 6d 69 74   is a .** [limit
30050 73 20 7c 20 68 61 72 64 20 75 70 70 65 72 20 62  s | hard upper b
30060 6f 75 6e 64 5d 0a 2a 2a 20 73 65 74 20 61 74 20  ound].** set at 
30070 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 62 79 20  compile-time by 
30080 61 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72  a C preprocessor
30090 20 6d 61 63 72 6f 20 63 61 6c 6c 65 64 0a 2a 2a   macro called.**
300a0 20 5b 6c 69 6d 69 74 73 20 7c 20 53 51 4c 49 54   [limits | SQLIT
300b0 45 5f 4d 41 58 5f 3c 69 3e 4e 41 4d 45 3c 2f 69  E_MAX_<i>NAME</i
300c0 3e 5d 2e 0a 2a 2a 20 28 54 68 65 20 22 5f 4c 49  >]..** (The "_LI
300d0 4d 49 54 5f 22 20 69 6e 20 74 68 65 20 6e 61 6d  MIT_" in the nam
300e0 65 20 69 73 20 63 68 61 6e 67 65 64 20 74 6f 20  e is changed to 
300f0 22 5f 4d 41 58 5f 22 2e 29 29 5e 0a 2a 2a 20 5e  "_MAX_".))^.** ^
30100 41 74 74 65 6d 70 74 73 20 74 6f 20 69 6e 63 72  Attempts to incr
30110 65 61 73 65 20 61 20 6c 69 6d 69 74 20 61 62 6f  ease a limit abo
30120 76 65 20 69 74 73 20 68 61 72 64 20 75 70 70 65  ve its hard uppe
30130 72 20 62 6f 75 6e 64 20 61 72 65 0a 2a 2a 20 73  r bound are.** s
30140 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63 61 74 65  ilently truncate
30150 64 20 74 6f 20 74 68 65 20 68 61 72 64 20 75 70  d to the hard up
30160 70 65 72 20 62 6f 75 6e 64 2e 0a 2a 2a 0a 2a 2a  per bound..**.**
30170 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20   ^Regardless of 
30180 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
30190 68 65 20 6c 69 6d 69 74 20 77 61 73 20 63 68 61  he limit was cha
301a0 6e 67 65 64 2c 20 74 68 65 20 0a 2a 2a 20 5b 73  nged, the .** [s
301b0 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 20  qlite3_limit()] 
301c0 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e  interface return
301d0 73 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75  s the prior valu
301e0 65 20 6f 66 20 74 68 65 20 6c 69 6d 69 74 2e 0a  e of the limit..
301f0 2a 2a 20 5e 48 65 6e 63 65 2c 20 74 6f 20 66 69  ** ^Hence, to fi
30200 6e 64 20 74 68 65 20 63 75 72 72 65 6e 74 20 76  nd the current v
30210 61 6c 75 65 20 6f 66 20 61 20 6c 69 6d 69 74 20  alue of a limit 
30220 77 69 74 68 6f 75 74 20 63 68 61 6e 67 69 6e 67  without changing
30230 20 69 74 2c 0a 2a 2a 20 73 69 6d 70 6c 79 20 69   it,.** simply i
30240 6e 76 6f 6b 65 20 74 68 69 73 20 69 6e 74 65 72  nvoke this inter
30250 66 61 63 65 20 77 69 74 68 20 74 68 65 20 74 68  face with the th
30260 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 73 65  ird parameter se
30270 74 20 74 6f 20 2d 31 2e 0a 2a 2a 0a 2a 2a 20 52  t to -1..**.** R
30280 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 73 20 61  un-time limits a
30290 72 65 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  re intended for 
302a0 75 73 65 20 69 6e 20 61 70 70 6c 69 63 61 74 69  use in applicati
302b0 6f 6e 73 20 74 68 61 74 20 6d 61 6e 61 67 65 0a  ons that manage.
302c0 2a 2a 20 62 6f 74 68 20 74 68 65 69 72 20 6f 77  ** both their ow
302d0 6e 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 62  n internal datab
302e0 61 73 65 20 61 6e 64 20 61 6c 73 6f 20 64 61 74  ase and also dat
302f0 61 62 61 73 65 73 20 74 68 61 74 20 61 72 65 20  abases that are 
30300 63 6f 6e 74 72 6f 6c 6c 65 64 0a 2a 2a 20 62 79  controlled.** by
30310 20 75 6e 74 72 75 73 74 65 64 20 65 78 74 65 72   untrusted exter
30320 6e 61 6c 20 73 6f 75 72 63 65 73 2e 20 20 41 6e  nal sources.  An
30330 20 65 78 61 6d 70 6c 65 20 61 70 70 6c 69 63 61   example applica
30340 74 69 6f 6e 20 6d 69 67 68 74 20 62 65 20 61 0a  tion might be a.
30350 2a 2a 20 77 65 62 20 62 72 6f 77 73 65 72 20 74  ** web browser t
30360 68 61 74 20 68 61 73 20 69 74 73 20 6f 77 6e 20  hat has its own 
30370 64 61 74 61 62 61 73 65 73 20 66 6f 72 20 73 74  databases for st
30380 6f 72 69 6e 67 20 68 69 73 74 6f 72 79 20 61 6e  oring history an
30390 64 0a 2a 2a 20 73 65 70 61 72 61 74 65 20 64 61  d.** separate da
303a0 74 61 62 61 73 65 73 20 63 6f 6e 74 72 6f 6c 6c  tabases controll
303b0 65 64 20 62 79 20 4a 61 76 61 53 63 72 69 70 74  ed by JavaScript
303c0 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 64 6f   applications do
303d0 77 6e 6c 6f 61 64 65 64 0a 2a 2a 20 6f 66 66 20  wnloaded.** off 
303e0 74 68 65 20 49 6e 74 65 72 6e 65 74 2e 20 20 54  the Internet.  T
303f0 68 65 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61  he internal data
30400 62 61 73 65 73 20 63 61 6e 20 62 65 20 67 69 76  bases can be giv
30410 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 72 67 65 2c  en the.** large,
30420 20 64 65 66 61 75 6c 74 20 6c 69 6d 69 74 73 2e   default limits.
30430 20 20 44 61 74 61 62 61 73 65 73 20 6d 61 6e 61    Databases mana
30440 67 65 64 20 62 79 20 65 78 74 65 72 6e 61 6c 20  ged by external 
30450 73 6f 75 72 63 65 73 20 63 61 6e 0a 2a 2a 20 62  sources can.** b
30460 65 20 67 69 76 65 6e 20 6d 75 63 68 20 73 6d 61  e given much sma
30470 6c 6c 65 72 20 6c 69 6d 69 74 73 20 64 65 73 69  ller limits desi
30480 67 6e 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20  gned to prevent 
30490 61 20 64 65 6e 69 61 6c 20 6f 66 20 73 65 72 76  a denial of serv
304a0 69 63 65 0a 2a 2a 20 61 74 74 61 63 6b 2e 20 20  ice.** attack.  
304b0 44 65 76 65 6c 6f 70 65 72 73 20 6d 69 67 68 74  Developers might
304c0 20 61 6c 73 6f 20 77 61 6e 74 20 74 6f 20 75 73   also want to us
304d0 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  e the [sqlite3_s
304e0 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d  et_authorizer()]
304f0 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 74 6f  .** interface to
30500 20 66 75 72 74 68 65 72 20 63 6f 6e 74 72 6f 6c   further control
30510 20 75 6e 74 72 75 73 74 65 64 20 53 51 4c 2e 20   untrusted SQL. 
30520 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   The size of the
30530 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 72 65   database.** cre
30540 61 74 65 64 20 62 79 20 61 6e 20 75 6e 74 72 75  ated by an untru
30550 73 74 65 64 20 73 63 72 69 70 74 20 63 61 6e 20  sted script can 
30560 62 65 20 63 6f 6e 74 61 69 6e 65 64 20 75 73 69  be contained usi
30570 6e 67 20 74 68 65 0a 2a 2a 20 5b 6d 61 78 5f 70  ng the.** [max_p
30580 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50 52 41 47  age_count] [PRAG
30590 4d 41 5d 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72  MA]..**.** New r
305a0 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74 20 63 61  un-time limit ca
305b0 74 65 67 6f 72 69 65 73 20 6d 61 79 20 62 65 20  tegories may be 
305c0 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20  added in future 
305d0 72 65 6c 65 61 73 65 73 2e 0a 2a 2f 0a 53 51 4c  releases..*/.SQL
305e0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
305f0 74 65 33 5f 6c 69 6d 69 74 28 73 71 6c 69 74 65  te3_limit(sqlite
30600 33 2a 2c 20 69 6e 74 20 69 64 2c 20 69 6e 74 20  3*, int id, int 
30610 6e 65 77 56 61 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20  newVal);../*.** 
30620 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54 69  CAPI3REF: Run-Ti
30630 6d 65 20 4c 69 6d 69 74 20 43 61 74 65 67 6f 72  me Limit Categor
30640 69 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  ies.** KEYWORDS:
30650 20 7b 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 79   {limit category
30660 7d 20 7b 2a 6c 69 6d 69 74 20 63 61 74 65 67 6f  } {*limit catego
30670 72 69 65 73 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73  ries}.**.** Thes
30680 65 20 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69  e constants defi
30690 6e 65 20 76 61 72 69 6f 75 73 20 70 65 72 66 6f  ne various perfo
306a0 72 6d 61 6e 63 65 20 6c 69 6d 69 74 73 0a 2a 2a  rmance limits.**
306b0 20 74 68 61 74 20 63 61 6e 20 62 65 20 6c 6f 77   that can be low
306c0 65 72 65 64 20 61 74 20 72 75 6e 2d 74 69 6d 65  ered at run-time
306d0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
306e0 6c 69 6d 69 74 28 29 5d 2e 0a 2a 2a 20 54 68 65  limit()]..** The
306f0 20 73 79 6e 6f 70 73 69 73 20 6f 66 20 74 68 65   synopsis of the
30700 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20 74 68 65   meanings of the
30710 20 76 61 72 69 6f 75 73 20 6c 69 6d 69 74 73 20   various limits 
30720 69 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 2e 0a  is shown below..
30730 2a 2a 20 41 64 64 69 74 69 6f 6e 61 6c 20 69 6e  ** Additional in
30740 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 61 76 61  formation is ava
30750 69 6c 61 62 6c 65 20 61 74 20 5b 6c 69 6d 69 74  ilable at [limit
30760 73 20 7c 20 4c 69 6d 69 74 73 20 69 6e 20 53 51  s | Limits in SQ
30770 4c 69 74 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c  Lite]..**.** <dl
30780 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  >.** [[SQLITE_LI
30790 4d 49 54 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c  MIT_LENGTH]] ^(<
307a0 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
307b0 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c  LENGTH</dt>.** <
307c0 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 73  dd>The maximum s
307d0 69 7a 65 20 6f 66 20 61 6e 79 20 73 74 72 69 6e  ize of any strin
307e0 67 20 6f 72 20 42 4c 4f 42 20 6f 72 20 74 61 62  g or BLOB or tab
307f0 6c 65 20 72 6f 77 2c 20 69 6e 20 62 79 74 65 73  le row, in bytes
30800 2e 3c 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  .<dd>)^.**.** [[
30810 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c  SQLITE_LIMIT_SQL
30820 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e  _LENGTH]] ^(<dt>
30830 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c  SQLITE_LIMIT_SQL
30840 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20  _LENGTH</dt>.** 
30850 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
30860 6c 65 6e 67 74 68 20 6f 66 20 61 6e 20 53 51 4c  length of an SQL
30870 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 6e 20 62   statement, in b
30880 79 74 65 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a  ytes.</dd>)^.**.
30890 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
308a0 54 5f 43 4f 4c 55 4d 4e 5d 5d 20 5e 28 3c 64 74  T_COLUMN]] ^(<dt
308b0 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f  >SQLITE_LIMIT_CO
308c0 4c 55 4d 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LUMN</dt>.** <dd
308d0 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
308e0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
308f0 6e 20 61 20 74 61 62 6c 65 20 64 65 66 69 6e 69  n a table defini
30900 74 69 6f 6e 20 6f 72 20 69 6e 20 74 68 65 0a 2a  tion or in the.*
30910 2a 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20  * result set of 
30920 61 20 5b 53 45 4c 45 43 54 5d 20 6f 72 20 74 68  a [SELECT] or th
30930 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
30940 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61   of columns in a
30950 6e 20 69 6e 64 65 78 0a 2a 2a 20 6f 72 20 69 6e  n index.** or in
30960 20 61 6e 20 4f 52 44 45 52 20 42 59 20 6f 72 20   an ORDER BY or 
30970 47 52 4f 55 50 20 42 59 20 63 6c 61 75 73 65 2e  GROUP BY clause.
30980 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  </dd>)^.**.** [[
30990 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50  SQLITE_LIMIT_EXP
309a0 52 5f 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e  R_DEPTH]] ^(<dt>
309b0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50  SQLITE_LIMIT_EXP
309c0 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20  R_DEPTH</dt>.** 
309d0 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
309e0 64 65 70 74 68 20 6f 66 20 74 68 65 20 70 61 72  depth of the par
309f0 73 65 20 74 72 65 65 20 6f 6e 20 61 6e 79 20 65  se tree on any e
30a00 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 64 64 3e 29  xpression.</dd>)
30a10 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
30a20 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f  _LIMIT_COMPOUND_
30a30 53 45 4c 45 43 54 5d 5d 20 5e 28 3c 64 74 3e 53  SELECT]] ^(<dt>S
30a40 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50  QLITE_LIMIT_COMP
30a50 4f 55 4e 44 5f 53 45 4c 45 43 54 3c 2f 64 74 3e  OUND_SELECT</dt>
30a60 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
30a70 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 74 65  mum number of te
30a80 72 6d 73 20 69 6e 20 61 20 63 6f 6d 70 6f 75 6e  rms in a compoun
30a90 64 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  d SELECT stateme
30aa0 6e 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  nt.</dd>)^.**.**
30ab0 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
30ac0 56 44 42 45 5f 4f 50 5d 5d 20 5e 28 3c 64 74 3e  VDBE_OP]] ^(<dt>
30ad0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42  SQLITE_LIMIT_VDB
30ae0 45 5f 4f 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  E_OP</dt>.** <dd
30af0 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
30b00 62 65 72 20 6f 66 20 69 6e 73 74 72 75 63 74 69  ber of instructi
30b10 6f 6e 73 20 69 6e 20 61 20 76 69 72 74 75 61 6c  ons in a virtual
30b20 20 6d 61 63 68 69 6e 65 20 70 72 6f 67 72 61 6d   machine program
30b30 0a 2a 2a 20 75 73 65 64 20 74 6f 20 69 6d 70 6c  .** used to impl
30b40 65 6d 65 6e 74 20 61 6e 20 53 51 4c 20 73 74 61  ement an SQL sta
30b50 74 65 6d 65 6e 74 2e 20 20 49 66 20 5b 73 71 6c  tement.  If [sql
30b60 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
30b70 29 5d 20 6f 72 0a 2a 2a 20 74 68 65 20 65 71 75  )] or.** the equ
30b80 69 76 61 6c 65 6e 74 20 74 72 69 65 73 20 74 6f  ivalent tries to
30b90 20 61 6c 6c 6f 63 61 74 65 20 73 70 61 63 65 20   allocate space 
30ba0 66 6f 72 20 6d 6f 72 65 20 74 68 61 6e 20 74 68  for more than th
30bb0 69 73 20 6d 61 6e 79 20 6f 70 63 6f 64 65 73 0a  is many opcodes.
30bc0 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 70  ** in a single p
30bd0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
30be0 74 2c 20 61 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d  t, an SQLITE_NOM
30bf0 45 4d 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  EM error is retu
30c00 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a  rned.</dd>)^.**.
30c10 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49  ** [[SQLITE_LIMI
30c20 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 5d 5d  T_FUNCTION_ARG]]
30c30 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
30c40 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MIT_FUNCTION_ARG
30c50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
30c60 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
30c70 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 6f 6e 20  of arguments on 
30c80 61 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 64 64 3e  a function.</dd>
30c90 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
30ca0 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44  E_LIMIT_ATTACHED
30cb0 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f  ]] ^(<dt>SQLITE_
30cc0 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44 3c 2f  LIMIT_ATTACHED</
30cd0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
30ce0 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
30cf0 20 5b 41 54 54 41 43 48 20 7c 20 61 74 74 61 63   [ATTACH | attac
30d00 68 65 64 20 64 61 74 61 62 61 73 65 73 5d 2e 29  hed databases].)
30d10 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  ^</dd>.**.** [[S
30d20 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45  QLITE_LIMIT_LIKE
30d30 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 5d  _PATTERN_LENGTH]
30d40 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c 49 54  ].** ^(<dt>SQLIT
30d50 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54  E_LIMIT_LIKE_PAT
30d60 54 45 52 4e 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e  TERN_LENGTH</dt>
30d70 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
30d80 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  mum length of th
30d90 65 20 70 61 74 74 65 72 6e 20 61 72 67 75 6d 65  e pattern argume
30da0 6e 74 20 74 6f 20 74 68 65 20 5b 4c 49 4b 45 5d  nt to the [LIKE]
30db0 20 6f 72 0a 2a 2a 20 5b 47 4c 4f 42 5d 20 6f 70   or.** [GLOB] op
30dc0 65 72 61 74 6f 72 73 2e 3c 2f 64 64 3e 29 5e 0a  erators.</dd>)^.
30dd0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
30de0 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55  IMIT_VARIABLE_NU
30df0 4d 42 45 52 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e  MBER]].** ^(<dt>
30e00 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52  SQLITE_LIMIT_VAR
30e10 49 41 42 4c 45 5f 4e 55 4d 42 45 52 3c 2f 64 74  IABLE_NUMBER</dt
30e20 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78  >.** <dd>The max
30e30 69 6d 75 6d 20 69 6e 64 65 78 20 6e 75 6d 62 65  imum index numbe
30e40 72 20 6f 66 20 61 6e 79 20 5b 70 61 72 61 6d 65  r of any [parame
30e50 74 65 72 5d 20 69 6e 20 61 6e 20 53 51 4c 20 73  ter] in an SQL s
30e60 74 61 74 65 6d 65 6e 74 2e 29 5e 0a 2a 2a 0a 2a  tatement.)^.**.*
30e70 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
30e80 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48 5d 5d  _TRIGGER_DEPTH]]
30e90 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
30ea0 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50 54  MIT_TRIGGER_DEPT
30eb0 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  H</dt>.** <dd>Th
30ec0 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74 68 20  e maximum depth 
30ed0 6f 66 20 72 65 63 75 72 73 69 6f 6e 20 66 6f 72  of recursion for
30ee0 20 74 72 69 67 67 65 72 73 2e 3c 2f 64 64 3e 29   triggers.</dd>)
30ef0 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
30f00 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48  _LIMIT_WORKER_TH
30f10 52 45 41 44 53 5d 5d 20 5e 28 3c 64 74 3e 53 51  READS]] ^(<dt>SQ
30f20 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45  LITE_LIMIT_WORKE
30f30 52 5f 54 48 52 45 41 44 53 3c 2f 64 74 3e 0a 2a  R_THREADS</dt>.*
30f40 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
30f50 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61 75 78 69  m number of auxi
30f60 6c 69 61 72 79 20 77 6f 72 6b 65 72 20 74 68 72  liary worker thr
30f70 65 61 64 73 20 74 68 61 74 20 61 20 73 69 6e 67  eads that a sing
30f80 6c 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20  le.** [prepared 
30f90 73 74 61 74 65 6d 65 6e 74 5d 20 6d 61 79 20 73  statement] may s
30fa0 74 61 72 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20  tart.</dd>)^.** 
30fb0 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65  </dl>.*/.#define
30fc0 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45   SQLITE_LIMIT_LE
30fd0 4e 47 54 48 20 20 20 20 20 20 20 20 20 20 20 20  NGTH            
30fe0 20 20 20 20 20 20 20 20 30 0a 23 64 65 66 69 6e          0.#defin
30ff0 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 53  e SQLITE_LIMIT_S
31000 51 4c 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20  QL_LENGTH       
31010 20 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69           1.#defi
31020 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
31030 43 4f 4c 55 4d 4e 20 20 20 20 20 20 20 20 20 20  COLUMN          
31040 20 20 20 20 20 20 20 20 20 20 32 0a 23 64 65 66            2.#def
31050 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
31060 5f 45 58 50 52 5f 44 45 50 54 48 20 20 20 20 20  _EXPR_DEPTH     
31070 20 20 20 20 20 20 20 20 20 20 20 33 0a 23 64 65             3.#de
31080 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
31090 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43  T_COMPOUND_SELEC
310a0 54 20 20 20 20 20 20 20 20 20 20 20 34 0a 23 64  T           4.#d
310b0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
310c0 49 54 5f 56 44 42 45 5f 4f 50 20 20 20 20 20 20  IT_VDBE_OP      
310d0 20 20 20 20 20 20 20 20 20 20 20 20 20 35 0a 23               5.#
310e0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
310f0 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47  MIT_FUNCTION_ARG
31100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 36 0a                6.
31110 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
31120 49 4d 49 54 5f 41 54 54 41 43 48 45 44 20 20 20  IMIT_ATTACHED   
31130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 37                 7
31140 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
31150 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45  LIMIT_LIKE_PATTE
31160 52 4e 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20  RN_LENGTH       
31170 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  8.#define SQLITE
31180 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f  _LIMIT_VARIABLE_
31190 4e 55 4d 42 45 52 20 20 20 20 20 20 20 20 20 20  NUMBER          
311a0 20 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   9.#define SQLIT
311b0 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f  E_LIMIT_TRIGGER_
311c0 44 45 50 54 48 20 20 20 20 20 20 20 20 20 20 20  DEPTH           
311d0 20 31 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   10.#define SQLI
311e0 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f  TE_LIMIT_WORKER_
311f0 54 48 52 45 41 44 53 20 20 20 20 20 20 20 20 20  THREADS         
31200 20 20 31 31 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49    11../*.** CAPI
31210 33 52 45 46 3a 20 50 72 65 70 61 72 65 20 46 6c  3REF: Prepare Fl
31220 61 67 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ags.**.** These 
31230 63 6f 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65  constants define
31240 20 76 61 72 69 6f 75 73 20 66 6c 61 67 73 20 74   various flags t
31250 68 61 74 20 63 61 6e 20 62 65 20 70 61 73 73 65  hat can be passe
31260 64 20 69 6e 74 6f 0a 2a 2a 20 22 70 72 65 70 46  d into.** "prepF
31270 6c 61 67 73 22 20 70 61 72 61 6d 65 74 65 72 20  lags" parameter 
31280 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
31290 70 72 65 70 61 72 65 5f 76 33 28 29 5d 20 61 6e  prepare_v3()] an
312a0 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  d.** [sqlite3_pr
312b0 65 70 61 72 65 31 36 5f 76 33 28 29 5d 20 69 6e  epare16_v3()] in
312c0 74 65 72 66 61 63 65 73 2e 0a 2a 2a 0a 2a 2a 20  terfaces..**.** 
312d0 4e 65 77 20 66 6c 61 67 73 20 6d 61 79 20 62 65  New flags may be
312e0 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65   added in future
312f0 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c   releases of SQL
31300 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a  ite..**.** <dl>.
31310 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50  ** [[SQLITE_PREP
31320 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 5d 5d  ARE_PERSISTENT]]
31330 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 50 52   ^(<dt>SQLITE_PR
31340 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54  EPARE_PERSISTENT
31350 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
31360 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f   SQLITE_PREPARE_
31370 50 45 52 53 49 53 54 45 4e 54 20 66 6c 61 67 20  PERSISTENT flag 
31380 69 73 20 61 20 68 69 6e 74 20 74 6f 20 74 68 65  is a hint to the
31390 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 0a 2a   query planner.*
313a0 2a 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61  * that the prepa
313b0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 77 69  red statement wi
313c0 6c 6c 20 62 65 20 72 65 74 61 69 6e 65 64 20 66  ll be retained f
313d0 6f 72 20 61 20 6c 6f 6e 67 20 74 69 6d 65 20 61  or a long time a
313e0 6e 64 0a 2a 2a 20 70 72 6f 62 61 62 6c 79 20 72  nd.** probably r
313f0 65 75 73 65 64 20 6d 61 6e 79 20 74 69 6d 65 73  eused many times
31400 2e 29 5e 20 5e 57 69 74 68 6f 75 74 20 74 68 69  .)^ ^Without thi
31410 73 20 66 6c 61 67 2c 20 5b 73 71 6c 69 74 65 33  s flag, [sqlite3
31420 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 0a 2a  _prepare_v3()].*
31430 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70  * and [sqlite3_p
31440 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d 20 61  repare16_v3()] a
31450 73 73 75 6d 65 20 74 68 61 74 20 74 68 65 20 70  ssume that the p
31460 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
31470 74 20 77 69 6c 6c 20 0a 2a 2a 20 62 65 20 75 73  t will .** be us
31480 65 64 20 6a 75 73 74 20 6f 6e 63 65 20 6f 72 20  ed just once or 
31490 61 74 20 6d 6f 73 74 20 61 20 66 65 77 20 74 69  at most a few ti
314a0 6d 65 73 20 61 6e 64 20 74 68 65 6e 20 64 65 73  mes and then des
314b0 74 72 6f 79 65 64 20 75 73 69 6e 67 0a 2a 2a 20  troyed using.** 
314c0 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
314d0 65 28 29 5d 20 72 65 6c 61 74 69 76 65 6c 79 20  e()] relatively 
314e0 73 6f 6f 6e 2e 20 54 68 65 20 63 75 72 72 65 6e  soon. The curren
314f0 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  t implementation
31500 20 61 63 74 73 0a 2a 2a 20 6f 6e 20 74 68 69 73   acts.** on this
31510 20 68 69 6e 74 20 62 79 20 61 76 6f 69 64 69 6e   hint by avoidin
31520 67 20 74 68 65 20 75 73 65 20 6f 66 20 5b 6c 6f  g the use of [lo
31530 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 5d 20  okaside memory] 
31540 73 6f 20 61 73 20 6e 6f 74 20 74 6f 0a 2a 2a 20  so as not to.** 
31550 64 65 70 6c 65 74 65 20 74 68 65 20 6c 69 6d 69  deplete the limi
31560 74 65 64 20 73 74 6f 72 65 20 6f 66 20 6c 6f 6f  ted store of loo
31570 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 2e 20 46  kaside memory. F
31580 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
31590 66 0a 2a 2a 20 53 51 4c 69 74 65 20 6d 61 79 20  f.** SQLite may 
315a0 61 63 74 20 6f 6e 20 74 68 69 73 20 68 69 6e 74  act on this hint
315b0 20 64 69 66 66 65 72 65 6e 74 6c 79 2e 0a 2a 2a   differently..**
315c0 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </dl>.*/.#defin
315d0 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45  e SQLITE_PREPARE
315e0 5f 50 45 52 53 49 53 54 45 4e 54 20 20 20 20 20  _PERSISTENT     
315f0 20 20 20 20 20 20 20 20 20 30 78 30 31 0a 0a 2f           0x01../
31600 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
31610 6f 6d 70 69 6c 69 6e 67 20 41 6e 20 53 51 4c 20  ompiling An SQL 
31620 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4b 45 59  Statement.** KEY
31630 57 4f 52 44 53 3a 20 7b 53 51 4c 20 73 74 61 74  WORDS: {SQL stat
31640 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65 72 7d 0a  ement compiler}.
31650 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
31660 65 33 0a 2a 2a 20 43 4f 4e 53 54 52 55 43 54 4f  e3.** CONSTRUCTO
31670 52 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a  R: sqlite3_stmt.
31680 2a 2a 0a 2a 2a 20 54 6f 20 65 78 65 63 75 74 65  **.** To execute
31690 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
316a0 74 2c 20 69 74 20 6d 75 73 74 20 66 69 72 73 74  t, it must first
316b0 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 69 6e 74   be compiled int
316c0 6f 20 61 20 62 79 74 65 2d 63 6f 64 65 0a 2a 2a  o a byte-code.**
316d0 20 70 72 6f 67 72 61 6d 20 75 73 69 6e 67 20 6f   program using o
316e0 6e 65 20 6f 66 20 74 68 65 73 65 20 72 6f 75 74  ne of these rout
316f0 69 6e 65 73 2e 20 20 4f 72 2c 20 69 6e 20 6f 74  ines.  Or, in ot
31700 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 73 65  her words, these
31710 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20 61 72 65   routines.** are
31720 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 66 6f   constructors fo
31730 72 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  r the [prepared 
31740 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63  statement] objec
31750 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 65  t..**.** The pre
31760 66 65 72 72 65 64 20 72 6f 75 74 69 6e 65 20 74  ferred routine t
31770 6f 20 75 73 65 20 69 73 20 5b 73 71 6c 69 74 65  o use is [sqlite
31780 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2e  3_prepare_v2()].
31790 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65    The.** [sqlite
317a0 33 5f 70 72 65 70 61 72 65 28 29 5d 20 69 6e 74  3_prepare()] int
317b0 65 72 66 61 63 65 20 69 73 20 6c 65 67 61 63 79  erface is legacy
317c0 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20 61   and should be a
317d0 76 6f 69 64 65 64 2e 0a 2a 2a 20 5b 73 71 6c 69  voided..** [sqli
317e0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29  te3_prepare_v3()
317f0 5d 20 68 61 73 20 61 6e 20 65 78 74 72 61 20 22  ] has an extra "
31800 70 72 65 70 46 6c 61 67 73 22 20 6f 70 74 69 6f  prepFlags" optio
31810 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 0a 2a  n that is used.*
31820 2a 20 66 6f 72 20 73 70 65 63 69 61 6c 20 70 75  * for special pu
31830 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  rposes..**.** Th
31840 65 20 75 73 65 20 6f 66 20 74 68 65 20 55 54 46  e use of the UTF
31850 2d 38 20 69 6e 74 65 72 66 61 63 65 73 20 69 73  -8 interfaces is
31860 20 70 72 65 66 65 72 72 65 64 2c 20 61 73 20 53   preferred, as S
31870 51 4c 69 74 65 20 63 75 72 72 65 6e 74 6c 79 0a  QLite currently.
31880 2a 2a 20 64 6f 65 73 20 61 6c 6c 20 70 61 72 73  ** does all pars
31890 69 6e 67 20 75 73 69 6e 67 20 55 54 46 2d 38 2e  ing using UTF-8.
318a0 20 20 54 68 65 20 55 54 46 2d 31 36 20 69 6e 74    The UTF-16 int
318b0 65 72 66 61 63 65 73 20 61 72 65 20 70 72 6f 76  erfaces are prov
318c0 69 64 65 64 0a 2a 2a 20 61 73 20 61 20 63 6f 6e  ided.** as a con
318d0 76 65 6e 69 65 6e 63 65 2e 20 20 54 68 65 20 55  venience.  The U
318e0 54 46 2d 31 36 20 69 6e 74 65 72 66 61 63 65 73  TF-16 interfaces
318f0 20 77 6f 72 6b 20 62 79 20 63 6f 6e 76 65 72 74   work by convert
31900 69 6e 67 20 74 68 65 0a 2a 2a 20 69 6e 70 75 74  ing the.** input
31910 20 74 65 78 74 20 69 6e 74 6f 20 55 54 46 2d 38   text into UTF-8
31920 2c 20 74 68 65 6e 20 69 6e 76 6f 6b 69 6e 67 20  , then invoking 
31930 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  the correspondin
31940 67 20 55 54 46 2d 38 20 69 6e 74 65 72 66 61 63  g UTF-8 interfac
31950 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72  e..**.** The fir
31960 73 74 20 61 72 67 75 6d 65 6e 74 2c 20 22 64 62  st argument, "db
31970 22 2c 20 69 73 20 61 20 5b 64 61 74 61 62 61 73  ", is a [databas
31980 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62  e connection] ob
31990 74 61 69 6e 65 64 20 66 72 6f 6d 20 61 0a 2a 2a  tained from a.**
319a0 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
319b0 6c 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74  l call to [sqlit
319c0 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
319d0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 20  ite3_open_v2()] 
319e0 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6f  or.** [sqlite3_o
319f0 70 65 6e 31 36 28 29 5d 2e 20 20 54 68 65 20 64  pen16()].  The d
31a00 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
31a10 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 68 61 76 65  on must not have
31a20 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e 0a 2a 2a   been closed..**
31a30 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 61  .** The second a
31a40 72 67 75 6d 65 6e 74 2c 20 22 7a 53 71 6c 22 2c  rgument, "zSql",
31a50 20 69 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e   is the statemen
31a60 74 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65 64  t to be compiled
31a70 2c 20 65 6e 63 6f 64 65 64 0a 2a 2a 20 61 73 20  , encoded.** as 
31a80 65 69 74 68 65 72 20 55 54 46 2d 38 20 6f 72 20  either UTF-8 or 
31a90 55 54 46 2d 31 36 2e 20 20 54 68 65 20 73 71 6c  UTF-16.  The sql
31aa0 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 2c 20  ite3_prepare(), 
31ab0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
31ac0 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c  v2(),.** and sql
31ad0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28  ite3_prepare_v3(
31ae0 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  ).** interfaces 
31af0 75 73 65 20 55 54 46 2d 38 2c 20 61 6e 64 20 73  use UTF-8, and s
31b00 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
31b10 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70  (), sqlite3_prep
31b20 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a 2a 20 61  are16_v2(),.** a
31b30 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
31b40 72 65 31 36 5f 76 33 28 29 20 75 73 65 20 55 54  re16_v3() use UT
31b50 46 2d 31 36 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  F-16..**.** ^If 
31b60 74 68 65 20 6e 42 79 74 65 20 61 72 67 75 6d 65  the nByte argume
31b70 6e 74 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20  nt is negative, 
31b80 74 68 65 6e 20 7a 53 71 6c 20 69 73 20 72 65 61  then zSql is rea
31b90 64 20 75 70 20 74 6f 20 74 68 65 0a 2a 2a 20 66  d up to the.** f
31ba0 69 72 73 74 20 7a 65 72 6f 20 74 65 72 6d 69 6e  irst zero termin
31bb0 61 74 6f 72 2e 20 5e 49 66 20 6e 42 79 74 65 20  ator. ^If nByte 
31bc0 69 73 20 70 6f 73 69 74 69 76 65 2c 20 74 68 65  is positive, the
31bd0 6e 20 69 74 20 69 73 20 74 68 65 0a 2a 2a 20 6e  n it is the.** n
31be0 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 72  umber of bytes r
31bf0 65 61 64 20 66 72 6f 6d 20 7a 53 71 6c 2e 20 20  ead from zSql.  
31c00 5e 49 66 20 6e 42 79 74 65 20 69 73 20 7a 65 72  ^If nByte is zer
31c10 6f 2c 20 74 68 65 6e 20 6e 6f 20 70 72 65 70 61  o, then no prepa
31c20 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  red.** statement
31c30 20 69 73 20 67 65 6e 65 72 61 74 65 64 2e 0a 2a   is generated..*
31c40 2a 20 49 66 20 74 68 65 20 63 61 6c 6c 65 72 20  * If the caller 
31c50 6b 6e 6f 77 73 20 74 68 61 74 20 74 68 65 20 73  knows that the s
31c60 75 70 70 6c 69 65 64 20 73 74 72 69 6e 67 20 69  upplied string i
31c70 73 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65 64  s nul-terminated
31c80 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65 72 65 20  , then.** there 
31c90 69 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66 6f  is a small perfo
31ca0 72 6d 61 6e 63 65 20 61 64 76 61 6e 74 61 67 65  rmance advantage
31cb0 20 74 6f 20 70 61 73 73 69 6e 67 20 61 6e 20 6e   to passing an n
31cc0 42 79 74 65 20 70 61 72 61 6d 65 74 65 72 20 74  Byte parameter t
31cd0 68 61 74 0a 2a 2a 20 69 73 20 74 68 65 20 6e 75  hat.** is the nu
31ce0 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e  mber of bytes in
31cf0 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69 6e   the input strin
31d00 67 20 3c 69 3e 69 6e 63 6c 75 64 69 6e 67 3c 2f  g <i>including</
31d10 69 3e 0a 2a 2a 20 74 68 65 20 6e 75 6c 2d 74 65  i>.** the nul-te
31d20 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 0a 2a 2a 20  rminator..**.** 
31d30 5e 49 66 20 70 7a 54 61 69 6c 20 69 73 20 6e 6f  ^If pzTail is no
31d40 74 20 4e 55 4c 4c 20 74 68 65 6e 20 2a 70 7a 54  t NULL then *pzT
31d50 61 69 6c 20 69 73 20 6d 61 64 65 20 74 6f 20 70  ail is made to p
31d60 6f 69 6e 74 20 74 6f 20 74 68 65 20 66 69 72 73  oint to the firs
31d70 74 20 62 79 74 65 0a 2a 2a 20 70 61 73 74 20 74  t byte.** past t
31d80 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 66 69  he end of the fi
31d90 72 73 74 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  rst SQL statemen
31da0 74 20 69 6e 20 7a 53 71 6c 2e 20 20 54 68 65 73  t in zSql.  Thes
31db0 65 20 72 6f 75 74 69 6e 65 73 20 6f 6e 6c 79 0a  e routines only.
31dc0 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 68 65 20 66  ** compile the f
31dd0 69 72 73 74 20 73 74 61 74 65 6d 65 6e 74 20 69  irst statement i
31de0 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a 70 7a 54 61  n zSql, so *pzTa
31df0 69 6c 20 69 73 20 6c 65 66 74 20 70 6f 69 6e 74  il is left point
31e00 69 6e 67 20 74 6f 0a 2a 2a 20 77 68 61 74 20 72  ing to.** what r
31e10 65 6d 61 69 6e 73 20 75 6e 63 6f 6d 70 69 6c 65  emains uncompile
31e20 64 2e 0a 2a 2a 0a 2a 2a 20 5e 2a 70 70 53 74 6d  d..**.** ^*ppStm
31e30 74 20 69 73 20 6c 65 66 74 20 70 6f 69 6e 74 69  t is left pointi
31e40 6e 67 20 74 6f 20 61 20 63 6f 6d 70 69 6c 65 64  ng to a compiled
31e50 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
31e60 6d 65 6e 74 5d 20 74 68 61 74 20 63 61 6e 20 62  ment] that can b
31e70 65 0a 2a 2a 20 65 78 65 63 75 74 65 64 20 75 73  e.** executed us
31e80 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  ing [sqlite3_ste
31e90 70 28 29 5d 2e 20 20 5e 49 66 20 74 68 65 72 65  p()].  ^If there
31ea0 20 69 73 20 61 6e 20 65 72 72 6f 72 2c 20 2a 70   is an error, *p
31eb0 70 53 74 6d 74 20 69 73 20 73 65 74 0a 2a 2a 20  pStmt is set.** 
31ec0 74 6f 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 74 68  to NULL.  ^If th
31ed0 65 20 69 6e 70 75 74 20 74 65 78 74 20 63 6f 6e  e input text con
31ee0 74 61 69 6e 73 20 6e 6f 20 53 51 4c 20 28 69 66  tains no SQL (if
31ef0 20 74 68 65 20 69 6e 70 75 74 20 69 73 20 61 6e   the input is an
31f00 20 65 6d 70 74 79 0a 2a 2a 20 73 74 72 69 6e 67   empty.** string
31f10 20 6f 72 20 61 20 63 6f 6d 6d 65 6e 74 29 20 74   or a comment) t
31f20 68 65 6e 20 2a 70 70 53 74 6d 74 20 69 73 20 73  hen *ppStmt is s
31f30 65 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 20 54  et to NULL..** T
31f40 68 65 20 63 61 6c 6c 69 6e 67 20 70 72 6f 63 65  he calling proce
31f50 64 75 72 65 20 69 73 20 72 65 73 70 6f 6e 73 69  dure is responsi
31f60 62 6c 65 20 66 6f 72 20 64 65 6c 65 74 69 6e 67  ble for deleting
31f70 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a   the compiled.**
31f80 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 75   SQL statement u
31f90 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 69  sing [sqlite3_fi
31fa0 6e 61 6c 69 7a 65 28 29 5d 20 61 66 74 65 72 20  nalize()] after 
31fb0 69 74 20 68 61 73 20 66 69 6e 69 73 68 65 64 20  it has finished 
31fc0 77 69 74 68 20 69 74 2e 0a 2a 2a 20 70 70 53 74  with it..** ppSt
31fd0 6d 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 4e 55  mt may not be NU
31fe0 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 20 73 75  LL..**.** ^On su
31ff0 63 63 65 73 73 2c 20 74 68 65 20 73 71 6c 69 74  ccess, the sqlit
32000 65 33 5f 70 72 65 70 61 72 65 28 29 20 66 61 6d  e3_prepare() fam
32010 69 6c 79 20 6f 66 20 72 6f 75 74 69 6e 65 73 20  ily of routines 
32020 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f  return [SQLITE_O
32030 4b 5d 3b 0a 2a 2a 20 6f 74 68 65 72 77 69 73 65  K];.** otherwise
32040 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d   an [error code]
32050 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a   is returned..**
32060 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
32070 70 72 65 70 61 72 65 5f 76 32 28 29 2c 20 73 71  prepare_v2(), sq
32080 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
32090 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70  (), sqlite3_prep
320a0 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a 2a 20 61  are16_v2(),.** a
320b0 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
320c0 72 65 31 36 5f 76 33 28 29 20 69 6e 74 65 72 66  re16_v3() interf
320d0 61 63 65 73 20 61 72 65 20 72 65 63 6f 6d 6d 65  aces are recomme
320e0 6e 64 65 64 20 66 6f 72 20 61 6c 6c 20 6e 65 77  nded for all new
320f0 20 70 72 6f 67 72 61 6d 73 2e 0a 2a 2a 20 54 68   programs..** Th
32100 65 20 6f 6c 64 65 72 20 69 6e 74 65 72 66 61 63  e older interfac
32110 65 73 20 28 73 71 6c 69 74 65 33 5f 70 72 65 70  es (sqlite3_prep
32120 61 72 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65  are() and sqlite
32130 33 5f 70 72 65 70 61 72 65 31 36 28 29 29 0a 2a  3_prepare16()).*
32140 2a 20 61 72 65 20 72 65 74 61 69 6e 65 64 20 66  * are retained f
32150 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  or backwards com
32160 70 61 74 69 62 69 6c 69 74 79 2c 20 62 75 74 20  patibility, but 
32170 74 68 65 69 72 20 75 73 65 20 69 73 20 64 69 73  their use is dis
32180 63 6f 75 72 61 67 65 64 2e 0a 2a 2a 20 5e 49 6e  couraged..** ^In
32190 20 74 68 65 20 22 76 58 22 20 69 6e 74 65 72 66   the "vX" interf
321a0 61 63 65 73 2c 20 74 68 65 20 70 72 65 70 61 72  aces, the prepar
321b0 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  ed statement.** 
321c0 74 68 61 74 20 69 73 20 72 65 74 75 72 6e 65 64  that is returned
321d0 20 28 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73   (the [sqlite3_s
321e0 74 6d 74 5d 20 6f 62 6a 65 63 74 29 20 63 6f 6e  tmt] object) con
321f0 74 61 69 6e 73 20 61 20 63 6f 70 79 20 6f 66 20  tains a copy of 
32200 74 68 65 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c 20  the.** original 
32210 53 51 4c 20 74 65 78 74 2e 20 54 68 69 73 20 63  SQL text. This c
32220 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69 74  auses the [sqlit
32230 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65 72  e3_step()] inter
32240 66 61 63 65 20 74 6f 0a 2a 2a 20 62 65 68 61 76  face to.** behav
32250 65 20 64 69 66 66 65 72 65 6e 74 6c 79 20 69 6e  e differently in
32260 20 74 68 72 65 65 20 77 61 79 73 3a 0a 2a 2a 0a   three ways:.**.
32270 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 0a  ** <ol>.** <li>.
32280 2a 2a 20 5e 49 66 20 74 68 65 20 64 61 74 61 62  ** ^If the datab
32290 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67  ase schema chang
322a0 65 73 2c 20 69 6e 73 74 65 61 64 20 6f 66 20 72  es, instead of r
322b0 65 74 75 72 6e 69 6e 67 20 5b 53 51 4c 49 54 45  eturning [SQLITE
322c0 5f 53 43 48 45 4d 41 5d 20 61 73 20 69 74 0a 2a  _SCHEMA] as it.*
322d0 2a 20 61 6c 77 61 79 73 20 75 73 65 64 20 74 6f  * always used to
322e0 20 64 6f 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74   do, [sqlite3_st
322f0 65 70 28 29 5d 20 77 69 6c 6c 20 61 75 74 6f 6d  ep()] will autom
32300 61 74 69 63 61 6c 6c 79 20 72 65 63 6f 6d 70 69  atically recompi
32310 6c 65 20 74 68 65 20 53 51 4c 0a 2a 2a 20 73 74  le the SQL.** st
32320 61 74 65 6d 65 6e 74 20 61 6e 64 20 74 72 79 20  atement and try 
32330 74 6f 20 72 75 6e 20 69 74 20 61 67 61 69 6e 2e  to run it again.
32340 20 41 73 20 6d 61 6e 79 20 61 73 20 5b 53 51 4c   As many as [SQL
32350 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52  ITE_MAX_SCHEMA_R
32360 45 54 52 59 5d 0a 2a 2a 20 72 65 74 72 69 65 73  ETRY].** retries
32370 20 77 69 6c 6c 20 6f 63 63 75 72 20 62 65 66 6f   will occur befo
32380 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28  re sqlite3_step(
32390 29 20 67 69 76 65 73 20 75 70 20 61 6e 64 20 72  ) gives up and r
323a0 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72 2e  eturns an error.
323b0 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20  .** </li>.**.** 
323c0 3c 6c 69 3e 0a 2a 2a 20 5e 57 68 65 6e 20 61 6e  <li>.** ^When an
323d0 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20 5b   error occurs, [
323e0 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
323f0 77 69 6c 6c 20 72 65 74 75 72 6e 20 6f 6e 65 20  will return one 
32400 6f 66 20 74 68 65 20 64 65 74 61 69 6c 65 64 0a  of the detailed.
32410 2a 2a 20 5b 65 72 72 6f 72 20 63 6f 64 65 73 5d  ** [error codes]
32420 20 6f 72 20 5b 65 78 74 65 6e 64 65 64 20 65 72   or [extended er
32430 72 6f 72 20 63 6f 64 65 73 5d 2e 20 20 5e 54 68  ror codes].  ^Th
32440 65 20 6c 65 67 61 63 79 20 62 65 68 61 76 69 6f  e legacy behavio
32450 72 20 77 61 73 20 74 68 61 74 0a 2a 2a 20 5b 73  r was that.** [s
32460 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77  qlite3_step()] w
32470 6f 75 6c 64 20 6f 6e 6c 79 20 72 65 74 75 72 6e  ould only return
32480 20 61 20 67 65 6e 65 72 69 63 20 5b 53 51 4c 49   a generic [SQLI
32490 54 45 5f 45 52 52 4f 52 5d 20 72 65 73 75 6c 74  TE_ERROR] result
324a0 20 63 6f 64 65 0a 2a 2a 20 61 6e 64 20 74 68 65   code.** and the
324b0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 6f 75   application wou
324c0 6c 64 20 68 61 76 65 20 74 6f 20 6d 61 6b 65 20  ld have to make 
324d0 61 20 73 65 63 6f 6e 64 20 63 61 6c 6c 20 74 6f  a second call to
324e0 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
324f0 29 5d 0a 2a 2a 20 69 6e 20 6f 72 64 65 72 20 74  )].** in order t
32500 6f 20 66 69 6e 64 20 74 68 65 20 75 6e 64 65 72  o find the under
32510 6c 79 69 6e 67 20 63 61 75 73 65 20 6f 66 20 74  lying cause of t
32520 68 65 20 70 72 6f 62 6c 65 6d 2e 20 57 69 74 68  he problem. With
32530 20 74 68 65 20 22 76 32 22 20 70 72 65 70 61 72   the "v2" prepar
32540 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 2c  e.** interfaces,
32550 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20   the underlying 
32560 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 65 20 65  reason for the e
32570 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
32580 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2a   immediately..**
32590 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69   </li>.**.** <li
325a0 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 73 70 65  >.** ^If the spe
325b0 63 69 66 69 63 20 76 61 6c 75 65 20 62 6f 75 6e  cific value boun
325c0 64 20 74 6f 20 5b 70 61 72 61 6d 65 74 65 72 20  d to [parameter 
325d0 7c 20 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72  | host parameter
325e0 5d 20 69 6e 20 74 68 65 20 0a 2a 2a 20 57 48 45  ] in the .** WHE
325f0 52 45 20 63 6c 61 75 73 65 20 6d 69 67 68 74 20  RE clause might 
32600 69 6e 66 6c 75 65 6e 63 65 20 74 68 65 20 63 68  influence the ch
32610 6f 69 63 65 20 6f 66 20 71 75 65 72 79 20 70 6c  oice of query pl
32620 61 6e 20 66 6f 72 20 61 20 73 74 61 74 65 6d 65  an for a stateme
32630 6e 74 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  nt,.** then the 
32640 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62  statement will b
32650 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
32660 72 65 63 6f 6d 70 69 6c 65 64 2c 20 61 73 20 69  recompiled, as i
32670 66 20 74 68 65 72 65 20 68 61 64 20 62 65 65 6e  f there had been
32680 20 0a 2a 2a 20 61 20 73 63 68 65 6d 61 20 63 68   .** a schema ch
32690 61 6e 67 65 2c 20 6f 6e 20 74 68 65 20 66 69 72  ange, on the fir
326a0 73 74 20 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  st  [sqlite3_ste
326b0 70 28 29 5d 20 63 61 6c 6c 20 66 6f 6c 6c 6f 77  p()] call follow
326c0 69 6e 67 20 61 6e 79 20 63 68 61 6e 67 65 0a 2a  ing any change.*
326d0 2a 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65  * to the [sqlite
326e0 33 5f 62 69 6e 64 5f 74 65 78 74 20 7c 20 62 69  3_bind_text | bi
326f0 6e 64 69 6e 67 73 5d 20 6f 66 20 74 68 61 74 20  ndings] of that 
32700 5b 70 61 72 61 6d 65 74 65 72 5d 2e 20 0a 2a 2a  [parameter]. .**
32710 20 5e 54 68 65 20 73 70 65 63 69 66 69 63 20 76   ^The specific v
32720 61 6c 75 65 20 6f 66 20 57 48 45 52 45 2d 63 6c  alue of WHERE-cl
32730 61 75 73 65 20 5b 70 61 72 61 6d 65 74 65 72 5d  ause [parameter]
32740 20 6d 69 67 68 74 20 69 6e 66 6c 75 65 6e 63 65   might influence
32750 20 74 68 65 20 0a 2a 2a 20 63 68 6f 69 63 65 20   the .** choice 
32760 6f 66 20 71 75 65 72 79 20 70 6c 61 6e 20 69 66  of query plan if
32770 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69   the parameter i
32780 73 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20  s the left-hand 
32790 73 69 64 65 20 6f 66 20 61 20 5b 4c 49 4b 45 5d  side of a [LIKE]
327a0 0a 2a 2a 20 6f 72 20 5b 47 4c 4f 42 5d 20 6f 70  .** or [GLOB] op
327b0 65 72 61 74 6f 72 20 6f 72 20 69 66 20 74 68 65  erator or if the
327c0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 63 6f   parameter is co
327d0 6d 70 61 72 65 64 20 74 6f 20 61 6e 20 69 6e 64  mpared to an ind
327e0 65 78 65 64 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 61  exed column.** a
327f0 6e 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 45  nd the [SQLITE_E
32800 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f 6d  NABLE_STAT3] com
32810 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
32820 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20   is enabled..** 
32830 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 70 3e 5e  </li>.**.** <p>^
32840 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
32850 76 33 28 29 20 64 69 66 66 65 72 73 20 66 72 6f  v3() differs fro
32860 6d 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  m sqlite3_prepar
32870 65 5f 76 32 28 29 20 6f 6e 6c 79 20 69 6e 20 68  e_v2() only in h
32880 61 76 69 6e 67 0a 2a 2a 20 74 68 65 20 65 78 74  aving.** the ext
32890 72 61 20 70 72 65 70 46 6c 61 67 73 20 70 61 72  ra prepFlags par
328a0 61 6d 65 74 65 72 2c 20 77 68 69 63 68 20 69 73  ameter, which is
328b0 20 61 20 62 69 74 20 61 72 72 61 79 20 63 6f 6e   a bit array con
328c0 73 69 73 74 69 6e 67 20 6f 66 20 7a 65 72 6f 20  sisting of zero 
328d0 6f 72 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68  or.** more of th
328e0 65 20 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52  e [SQLITE_PREPAR
328f0 45 5f 50 45 52 53 49 53 54 45 4e 54 7c 53 51 4c  E_PERSISTENT|SQL
32900 49 54 45 5f 50 52 45 50 41 52 45 5f 2a 5d 20 66  ITE_PREPARE_*] f
32910 6c 61 67 73 2e 20 20 5e 54 68 65 0a 2a 2a 20 73  lags.  ^The.** s
32920 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
32930 32 28 29 20 69 6e 74 65 72 66 61 63 65 20 77 6f  2() interface wo
32940 72 6b 73 20 65 78 61 63 74 6c 79 20 74 68 65 20  rks exactly the 
32950 73 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69 74  same as.** sqlit
32960 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 20  e3_prepare_v3() 
32970 77 69 74 68 20 61 20 7a 65 72 6f 20 70 72 65 70  with a zero prep
32980 46 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 2e  Flags parameter.
32990 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2f 0a 53 51 4c  .** </ol>.*/.SQL
329a0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
329b0 74 65 33 5f 70 72 65 70 61 72 65 28 0a 20 20 73  te3_prepare(.  s
329c0 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20  qlite3 *db,     
329d0 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61         /* Databa
329e0 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  se handle */.  c
329f0 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c  onst char *zSql,
32a00 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74         /* SQL st
32a10 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65  atement, UTF-8 e
32a20 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20  ncoded */.  int 
32a30 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20 20 20  nByte,          
32a40 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c      /* Maximum l
32a50 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e  ength of zSql in
32a60 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c   bytes. */.  sql
32a70 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74  ite3_stmt **ppSt
32a80 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61  mt,  /* OUT: Sta
32a90 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f  tement handle */
32aa0 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a  .  const char **
32ab0 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55  pzTail     /* OU
32ac0 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e  T: Pointer to un
32ad0 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20  used portion of 
32ae0 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54  zSql */.);.SQLIT
32af0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
32b00 33 5f 70 72 65 70 61 72 65 5f 76 32 28 0a 20 20  3_prepare_v2(.  
32b10 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
32b20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62          /* Datab
32b30 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ase handle */.  
32b40 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c  const char *zSql
32b50 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73  ,       /* SQL s
32b60 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20  tatement, UTF-8 
32b70 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74  encoded */.  int
32b80 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20 20   nByte,         
32b90 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20       /* Maximum 
32ba0 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69  length of zSql i
32bb0 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71  n bytes. */.  sq
32bc0 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
32bd0 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
32be0 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
32bf0 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
32c00 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
32c10 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
32c20 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
32c30 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49   zSql */.);.SQLI
32c40 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
32c50 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 0a 20  e3_prepare_v3(. 
32c60 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
32c70 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
32c80 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
32c90 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
32ca0 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
32cb0 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38  statement, UTF-8
32cc0 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
32cd0 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20  t nByte,        
32ce0 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d        /* Maximum
32cf0 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20   length of zSql 
32d00 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 75  in bytes. */.  u
32d10 6e 73 69 67 6e 65 64 20 69 6e 74 20 70 72 65 70  nsigned int prep
32d20 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f  Flags, /* Zero o
32d30 72 20 6d 6f 72 65 20 53 51 4c 49 54 45 5f 50 52  r more SQLITE_PR
32d40 45 50 41 52 45 5f 20 66 6c 61 67 73 20 2a 2f 0a  EPARE_ flags */.
32d50 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
32d60 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
32d70 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
32d80 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
32d90 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  ar **pzTail     
32da0 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
32db0 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
32dc0 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
32dd0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
32de0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
32df0 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
32e00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
32e10 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a  atabase handle *
32e20 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  /.  const void *
32e30 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53  zSql,       /* S
32e40 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54  QL statement, UT
32e50 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a  F-16 encoded */.
32e60 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20    int nByte,    
32e70 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78            /* Max
32e80 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a  imum length of z
32e90 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f  Sql in bytes. */
32ea0 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
32eb0 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
32ec0 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
32ed0 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
32ee0 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  oid **pzTail    
32ef0 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
32f00 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
32f10 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
32f20 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
32f30 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
32f40 36 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 20  6_v2(.  sqlite3 
32f50 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
32f60 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
32f70 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  le */.  const vo
32f80 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  id *zSql,       
32f90 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
32fa0 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  , UTF-16 encoded
32fb0 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c   */.  int nByte,
32fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
32fd0 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   Maximum length 
32fe0 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
32ff0 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  . */.  sqlite3_s
33000 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
33010 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
33020 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33030 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c  st void **pzTail
33040 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
33050 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
33060 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
33070 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
33080 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
33090 61 72 65 31 36 5f 76 33 28 0a 20 20 73 71 6c 69  are16_v3(.  sqli
330a0 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
330b0 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
330c0 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
330d0 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20  t void *zSql,   
330e0 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
330f0 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63  ment, UTF-16 enc
33100 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
33110 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  yte,            
33120 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e    /* Maximum len
33130 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62  gth of zSql in b
33140 79 74 65 73 2e 20 2a 2f 0a 20 20 75 6e 73 69 67  ytes. */.  unsig
33150 6e 65 64 20 69 6e 74 20 70 72 65 70 46 61 6c 67  ned int prepFalg
33160 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f  s, /* Zero or mo
33170 72 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52  re SQLITE_PREPAR
33180 45 5f 20 66 6c 61 67 73 20 2a 2f 0a 20 20 73 71  E_ flags */.  sq
33190 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
331a0 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
331b0 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
331c0 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  /.  const void *
331d0 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
331e0 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
331f0 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
33200 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a   zSql */.);../*.
33210 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 74  ** CAPI3REF: Ret
33220 72 69 65 76 69 6e 67 20 53 74 61 74 65 6d 65 6e  rieving Statemen
33230 74 20 53 51 4c 0a 2a 2a 20 4d 45 54 48 4f 44 3a  t SQL.** METHOD:
33240 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a   sqlite3_stmt.**
33250 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
33260 5f 73 71 6c 28 50 29 20 69 6e 74 65 72 66 61 63  _sql(P) interfac
33270 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  e returns a poin
33280 74 65 72 20 74 6f 20 61 20 63 6f 70 79 20 6f 66  ter to a copy of
33290 20 74 68 65 20 55 54 46 2d 38 0a 2a 2a 20 53 51   the UTF-8.** SQ
332a0 4c 20 74 65 78 74 20 75 73 65 64 20 74 6f 20 63  L text used to c
332b0 72 65 61 74 65 20 5b 70 72 65 70 61 72 65 64 20  reate [prepared 
332c0 73 74 61 74 65 6d 65 6e 74 5d 20 50 20 69 66 20  statement] P if 
332d0 50 20 77 61 73 0a 2a 2a 20 63 72 65 61 74 65 64  P was.** created
332e0 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72 65   by [sqlite3_pre
332f0 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c  pare_v2()], [sql
33300 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28  ite3_prepare_v3(
33310 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
33320 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d 2c  prepare16_v2()],
33330 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 70 72 65   or [sqlite3_pre
33340 70 61 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a  pare16_v3()]..**
33350 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78   ^The sqlite3_ex
33360 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 20 69 6e  panded_sql(P) in
33370 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
33380 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55  a pointer to a U
33390 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 63  TF-8.** string c
333a0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 53 51  ontaining the SQ
333b0 4c 20 74 65 78 74 20 6f 66 20 70 72 65 70 61 72  L text of prepar
333c0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 50 20 77  ed statement P w
333d0 69 74 68 0a 2a 2a 20 5b 62 6f 75 6e 64 20 70 61  ith.** [bound pa
333e0 72 61 6d 65 74 65 72 73 5d 20 65 78 70 61 6e 64  rameters] expand
333f0 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20  ed..**.** ^(For 
33400 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 20 70 72  example, if a pr
33410 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33420 20 69 73 20 63 72 65 61 74 65 64 20 75 73 69 6e   is created usin
33430 67 20 74 68 65 20 53 51 4c 0a 2a 2a 20 74 65 78  g the SQL.** tex
33440 74 20 22 53 45 4c 45 43 54 20 24 61 62 63 2c 3a  t "SELECT $abc,:
33450 78 79 7a 22 20 61 6e 64 20 69 66 20 70 61 72 61  xyz" and if para
33460 6d 65 74 65 72 20 24 61 62 63 20 69 73 20 62 6f  meter $abc is bo
33470 75 6e 64 20 74 6f 20 69 6e 74 65 67 65 72 20 32  und to integer 2
33480 33 34 35 0a 2a 2a 20 61 6e 64 20 70 61 72 61 6d  345.** and param
33490 65 74 65 72 20 3a 78 79 7a 20 69 73 20 75 6e 62  eter :xyz is unb
334a0 6f 75 6e 64 2c 20 74 68 65 6e 20 73 71 6c 69 74  ound, then sqlit
334b0 65 33 5f 73 71 6c 28 29 20 77 69 6c 6c 20 72 65  e3_sql() will re
334c0 74 75 72 6e 0a 2a 2a 20 74 68 65 20 6f 72 69 67  turn.** the orig
334d0 69 6e 61 6c 20 73 74 72 69 6e 67 2c 20 22 53 45  inal string, "SE
334e0 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a 22 20  LECT $abc,:xyz" 
334f0 62 75 74 20 73 71 6c 69 74 65 33 5f 65 78 70 61  but sqlite3_expa
33500 6e 64 65 64 5f 73 71 6c 28 29 0a 2a 2a 20 77 69  nded_sql().** wi
33510 6c 6c 20 72 65 74 75 72 6e 20 22 53 45 4c 45 43  ll return "SELEC
33520 54 20 32 33 34 35 2c 4e 55 4c 4c 22 2e 29 5e 0a  T 2345,NULL".)^.
33530 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
33540 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
33550 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
33560 72 6e 73 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75  rns NULL if insu
33570 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 0a  fficient memory.
33580 2a 2a 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20  ** is available 
33590 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75  to hold the resu
335a0 6c 74 2c 20 6f 72 20 69 66 20 74 68 65 20 72 65  lt, or if the re
335b0 73 75 6c 74 20 77 6f 75 6c 64 20 65 78 63 65 65  sult would excee
335c0 64 20 74 68 65 0a 2a 2a 20 74 68 65 20 6d 61 78  d the.** the max
335d0 69 6d 75 6d 20 73 74 72 69 6e 67 20 6c 65 6e 67  imum string leng
335e0 74 68 20 64 65 74 65 72 6d 69 6e 65 64 20 62 79  th determined by
335f0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c 49 4d   the [SQLITE_LIM
33600 49 54 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 0a 2a  IT_LENGTH]..**.*
33610 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 54  * ^The [SQLITE_T
33620 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d  RACE_SIZE_LIMIT]
33630 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
33640 74 69 6f 6e 20 6c 69 6d 69 74 73 20 74 68 65 20  tion limits the 
33650 73 69 7a 65 20 6f 66 0a 2a 2a 20 62 6f 75 6e 64  size of.** bound
33660 20 70 61 72 61 6d 65 74 65 72 20 65 78 70 61 6e   parameter expan
33670 73 69 6f 6e 73 2e 20 20 5e 54 68 65 20 5b 53 51  sions.  ^The [SQ
33680 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 5d  LITE_OMIT_TRACE]
33690 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a   compile-time.**
336a0 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73 20 73   option causes s
336b0 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
336c0 73 71 6c 28 29 20 74 6f 20 61 6c 77 61 79 73 20  sql() to always 
336d0 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 2a 2a 0a  return NULL..**.
336e0 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67 20 72  ** ^The string r
336f0 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
33700 65 33 5f 73 71 6c 28 50 29 20 69 73 20 6d 61 6e  e3_sql(P) is man
33710 61 67 65 64 20 62 79 20 53 51 4c 69 74 65 20 61  aged by SQLite a
33720 6e 64 20 69 73 0a 2a 2a 20 61 75 74 6f 6d 61 74  nd is.** automat
33730 69 63 61 6c 6c 79 20 66 72 65 65 64 20 77 68 65  ically freed whe
33740 6e 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  n the prepared s
33750 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69 6e 61  tatement is fina
33760 6c 69 7a 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73  lized..** ^The s
33770 74 72 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62  tring returned b
33780 79 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64  y sqlite3_expand
33790 65 64 5f 73 71 6c 28 50 29 2c 20 6f 6e 20 74 68  ed_sql(P), on th
337a0 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 0a 2a 2a  e other hand,.**
337b0 20 69 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f   is obtained fro
337c0 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  m [sqlite3_mallo
337d0 63 28 29 5d 20 61 6e 64 20 6d 75 73 74 20 62 65  c()] and must be
337e0 20 66 72 65 65 20 62 79 20 74 68 65 20 61 70 70   free by the app
337f0 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 62 79 20 70  lication.** by p
33800 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71  assing it to [sq
33810 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a  lite3_free()]..*
33820 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  /.SQLITE_API con
33830 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
33840 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d  _sql(sqlite3_stm
33850 74 20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c 49 54  t *pStmt);.SQLIT
33860 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69  E_API char *sqli
33870 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c  te3_expanded_sql
33880 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
33890 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  Stmt);../*.** CA
338a0 50 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e  PI3REF: Determin
338b0 65 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61 74  e If An SQL Stat
338c0 65 6d 65 6e 74 20 57 72 69 74 65 73 20 54 68 65  ement Writes The
338d0 20 44 61 74 61 62 61 73 65 0a 2a 2a 20 4d 45 54   Database.** MET
338e0 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
338f0 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  t.**.** ^The sql
33900 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e  ite3_stmt_readon
33910 6c 79 28 58 29 20 69 6e 74 65 72 66 61 63 65 20  ly(X) interface 
33920 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f  returns true (no
33930 6e 2d 7a 65 72 6f 29 20 69 66 0a 2a 2a 20 61 6e  n-zero) if.** an
33940 64 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 5b 70  d only if the [p
33950 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
33960 74 5d 20 58 20 6d 61 6b 65 73 20 6e 6f 20 64 69  t] X makes no di
33970 72 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a  rect changes to.
33980 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f  ** the content o
33990 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
339a0 69 6c 65 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20  ile..**.** Note 
339b0 74 68 61 74 20 5b 61 70 70 6c 69 63 61 74 69 6f  that [applicatio
339c0 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75  n-defined SQL fu
339d0 6e 63 74 69 6f 6e 73 5d 20 6f 72 0a 2a 2a 20 5b  nctions] or.** [
339e0 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73 5d 20  virtual tables] 
339f0 6d 69 67 68 74 20 63 68 61 6e 67 65 20 74 68 65  might change the
33a00 20 64 61 74 61 62 61 73 65 20 69 6e 64 69 72 65   database indire
33a10 63 74 6c 79 20 61 73 20 61 20 73 69 64 65 20 65  ctly as a side e
33a20 66 66 65 63 74 2e 20 20 0a 2a 2a 20 5e 28 46 6f  ffect.  .** ^(Fo
33a30 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e  r example, if an
33a40 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 66   application def
33a50 69 6e 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20  ines a function 
33a60 22 65 76 61 6c 28 29 22 20 74 68 61 74 20 0a 2a  "eval()" that .*
33a70 2a 20 63 61 6c 6c 73 20 5b 73 71 6c 69 74 65 33  * calls [sqlite3
33a80 5f 65 78 65 63 28 29 5d 2c 20 74 68 65 6e 20 74  _exec()], then t
33a90 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51 4c  he following SQL
33aa0 20 73 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c 64   statement would
33ab0 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 64  .** change the d
33ac0 61 74 61 62 61 73 65 20 66 69 6c 65 20 74 68 72  atabase file thr
33ad0 6f 75 67 68 20 73 69 64 65 2d 65 66 66 65 63 74  ough side-effect
33ae0 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71  s:.**.** <blockq
33af0 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20  uote><pre>.**   
33b00 20 53 45 4c 45 43 54 20 65 76 61 6c 28 27 44 45   SELECT eval('DE
33b10 4c 45 54 45 20 46 52 4f 4d 20 74 31 27 29 20 46  LETE FROM t1') F
33b20 52 4f 4d 20 74 32 3b 0a 2a 2a 20 3c 2f 70 72 65  ROM t2;.** </pre
33b30 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a  ></blockquote>.*
33b40 2a 0a 2a 2a 20 42 75 74 20 62 65 63 61 75 73 65  *.** But because
33b50 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 73 74   the [SELECT] st
33b60 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
33b70 20 63 68 61 6e 67 65 20 74 68 65 20 64 61 74 61   change the data
33b80 62 61 73 65 20 66 69 6c 65 0a 2a 2a 20 64 69 72  base file.** dir
33b90 65 63 74 6c 79 2c 20 73 71 6c 69 74 65 33 5f 73  ectly, sqlite3_s
33ba0 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 77  tmt_readonly() w
33bb0 6f 75 6c 64 20 73 74 69 6c 6c 20 72 65 74 75 72  ould still retur
33bc0 6e 20 74 72 75 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20  n true.)^.**.** 
33bd0 5e 54 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e  ^Transaction con
33be0 74 72 6f 6c 20 73 74 61 74 65 6d 65 6e 74 73 20  trol statements 
33bf0 73 75 63 68 20 61 73 20 5b 42 45 47 49 4e 5d 2c  such as [BEGIN],
33c00 20 5b 43 4f 4d 4d 49 54 5d 2c 20 5b 52 4f 4c 4c   [COMMIT], [ROLL
33c10 42 41 43 4b 5d 2c 0a 2a 2a 20 5b 53 41 56 45 50  BACK],.** [SAVEP
33c20 4f 49 4e 54 5d 2c 20 61 6e 64 20 5b 52 45 4c 45  OINT], and [RELE
33c30 41 53 45 5d 20 63 61 75 73 65 20 73 71 6c 69 74  ASE] cause sqlit
33c40 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
33c50 28 29 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75  () to return tru
33c60 65 2c 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65 20  e,.** since the 
33c70 73 74 61 74 65 6d 65 6e 74 73 20 74 68 65 6d 73  statements thems
33c80 65 6c 76 65 73 20 64 6f 20 6e 6f 74 20 61 63 74  elves do not act
33c90 75 61 6c 6c 79 20 6d 6f 64 69 66 79 20 74 68 65  ually modify the
33ca0 20 64 61 74 61 62 61 73 65 20 62 75 74 0a 2a 2a   database but.**
33cb0 20 72 61 74 68 65 72 20 74 68 65 79 20 63 6f 6e   rather they con
33cc0 74 72 6f 6c 20 74 68 65 20 74 69 6d 69 6e 67 20  trol the timing 
33cd0 6f 66 20 77 68 65 6e 20 6f 74 68 65 72 20 73 74  of when other st
33ce0 61 74 65 6d 65 6e 74 73 20 6d 6f 64 69 66 79 20  atements modify 
33cf0 74 68 65 20 0a 2a 2a 20 64 61 74 61 62 61 73 65  the .** database
33d00 2e 20 20 5e 54 68 65 20 5b 41 54 54 41 43 48 5d  .  ^The [ATTACH]
33d10 20 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 73 74   and [DETACH] st
33d20 61 74 65 6d 65 6e 74 73 20 61 6c 73 6f 20 63 61  atements also ca
33d30 75 73 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73  use.** sqlite3_s
33d40 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74  tmt_readonly() t
33d50 6f 20 72 65 74 75 72 6e 20 74 72 75 65 20 73 69  o return true si
33d60 6e 63 65 2c 20 77 68 69 6c 65 20 74 68 6f 73 65  nce, while those
33d70 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 63   statements.** c
33d80 68 61 6e 67 65 20 74 68 65 20 63 6f 6e 66 69 67  hange the config
33d90 75 72 61 74 69 6f 6e 20 6f 66 20 61 20 64 61 74  uration of a dat
33da0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
33db0 2c 20 74 68 65 79 20 64 6f 20 6e 6f 74 20 6d 61  , they do not ma
33dc0 6b 65 20 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74  ke .** changes t
33dd0 6f 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66  o the content of
33de0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
33df0 6c 65 73 20 6f 6e 20 64 69 73 6b 2e 0a 2a 2a 20  les on disk..** 
33e00 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d  ^The sqlite3_stm
33e10 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 69 6e 74  t_readonly() int
33e20 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 74  erface returns t
33e30 72 75 65 20 66 6f 72 20 5b 42 45 47 49 4e 5d 20  rue for [BEGIN] 
33e40 73 69 6e 63 65 0a 2a 2a 20 5b 42 45 47 49 4e 5d  since.** [BEGIN]
33e50 20 6d 65 72 65 6c 79 20 73 65 74 73 20 69 6e 74   merely sets int
33e60 65 72 6e 61 6c 20 66 6c 61 67 73 2c 20 62 75 74  ernal flags, but
33e70 20 74 68 65 20 5b 42 45 47 49 4e 7c 42 45 47 49   the [BEGIN|BEGI
33e80 4e 20 49 4d 4d 45 44 49 41 54 45 5d 20 61 6e 64  N IMMEDIATE] and
33e90 0a 2a 2a 20 5b 42 45 47 49 4e 7c 42 45 47 49 4e  .** [BEGIN|BEGIN
33ea0 20 45 58 43 4c 55 53 49 56 45 5d 20 63 6f 6d 6d   EXCLUSIVE] comm
33eb0 61 6e 64 73 20 64 6f 20 74 6f 75 63 68 20 74 68  ands do touch th
33ec0 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 73  e database and s
33ed0 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 6d  o.** sqlite3_stm
33ee0 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 72 65 74  t_readonly() ret
33ef0 75 72 6e 73 20 66 61 6c 73 65 20 66 6f 72 20 74  urns false for t
33f00 68 6f 73 65 20 63 6f 6d 6d 61 6e 64 73 2e 0a 2a  hose commands..*
33f10 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
33f20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
33f30 61 64 6f 6e 6c 79 28 73 71 6c 69 74 65 33 5f 73  adonly(sqlite3_s
33f40 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a  tmt *pStmt);../*
33f50 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65  .** CAPI3REF: De
33f60 74 65 72 6d 69 6e 65 20 49 66 20 41 20 50 72 65  termine If A Pre
33f70 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20  pared Statement 
33f80 48 61 73 20 42 65 65 6e 20 52 65 73 65 74 0a 2a  Has Been Reset.*
33f90 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
33fa0 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68  3_stmt.**.** ^Th
33fb0 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62  e sqlite3_stmt_b
33fc0 75 73 79 28 53 29 20 69 6e 74 65 72 66 61 63 65  usy(S) interface
33fd0 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e   returns true (n
33fe0 6f 6e 2d 7a 65 72 6f 29 20 69 66 20 74 68 65 0a  on-zero) if the.
33ff0 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
34000 74 65 6d 65 6e 74 5d 20 53 20 68 61 73 20 62 65  tement] S has be
34010 65 6e 20 73 74 65 70 70 65 64 20 61 74 20 6c 65  en stepped at le
34020 61 73 74 20 6f 6e 63 65 20 75 73 69 6e 67 20 0a  ast once using .
34030 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  ** [sqlite3_step
34040 28 53 29 5d 20 62 75 74 20 68 61 73 20 6e 65 69  (S)] but has nei
34050 74 68 65 72 20 72 75 6e 20 74 6f 20 63 6f 6d 70  ther run to comp
34060 6c 65 74 69 6f 6e 20 28 72 65 74 75 72 6e 65 64  letion (returned
34070 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45  .** [SQLITE_DONE
34080 5d 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  ] from [sqlite3_
34090 73 74 65 70 28 53 29 5d 29 20 6e 6f 72 0a 2a 2a  step(S)]) nor.**
340a0 20 62 65 65 6e 20 72 65 73 65 74 20 75 73 69 6e   been reset usin
340b0 67 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  g [sqlite3_reset
340c0 28 53 29 5d 2e 20 20 5e 54 68 65 20 73 71 6c 69  (S)].  ^The sqli
340d0 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29  te3_stmt_busy(S)
340e0 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 72 65  .** interface re
340f0 74 75 72 6e 73 20 66 61 6c 73 65 20 69 66 20 53  turns false if S
34100 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
34110 65 72 2e 20 20 49 66 20 53 20 69 73 20 6e 6f 74  er.  If S is not
34120 20 61 20 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e   a .** NULL poin
34130 74 65 72 20 61 6e 64 20 69 73 20 6e 6f 74 20 61  ter and is not a
34140 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76 61   pointer to a va
34150 6c 69 64 20 5b 70 72 65 70 61 72 65 64 20 73 74  lid [prepared st
34160 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a 65  atement].** obje
34170 63 74 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68  ct, then the beh
34180 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e  avior is undefin
34190 65 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20  ed and probably 
341a0 75 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a  undesirable..**.
341b0 2a 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61 63  ** This interfac
341c0 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  e can be used in
341d0 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 5b 73 71   combination [sq
341e0 6c 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28  lite3_next_stmt(
341f0 29 5d 0a 2a 2a 20 74 6f 20 6c 6f 63 61 74 65 20  )].** to locate 
34200 61 6c 6c 20 70 72 65 70 61 72 65 64 20 73 74 61  all prepared sta
34210 74 65 6d 65 6e 74 73 20 61 73 73 6f 63 69 61 74  tements associat
34220 65 64 20 77 69 74 68 20 61 20 64 61 74 61 62 61  ed with a databa
34230 73 65 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  se .** connectio
34240 6e 20 74 68 61 74 20 61 72 65 20 69 6e 20 6e 65  n that are in ne
34250 65 64 20 6f 66 20 62 65 69 6e 67 20 72 65 73 65  ed of being rese
34260 74 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20  t.  This can be 
34270 75 73 65 64 2c 0a 2a 2a 20 66 6f 72 20 65 78 61  used,.** for exa
34280 6d 70 6c 65 2c 20 69 6e 20 64 69 61 67 6e 6f 73  mple, in diagnos
34290 74 69 63 20 72 6f 75 74 69 6e 65 73 20 74 6f 20  tic routines to 
342a0 73 65 61 72 63 68 20 66 6f 72 20 70 72 65 70 61  search for prepa
342b0 72 65 64 20 0a 2a 2a 20 73 74 61 74 65 6d 65 6e  red .** statemen
342c0 74 73 20 74 68 61 74 20 61 72 65 20 68 6f 6c 64  ts that are hold
342d0 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f  ing a transactio
342e0 6e 20 6f 70 65 6e 2e 0a 2a 2f 0a 53 51 4c 49 54  n open..*/.SQLIT
342f0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
34300 33 5f 73 74 6d 74 5f 62 75 73 79 28 73 71 6c 69  3_stmt_busy(sqli
34310 74 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a  te3_stmt*);../*.
34320 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 79 6e  ** CAPI3REF: Dyn
34330 61 6d 69 63 61 6c 6c 79 20 54 79 70 65 64 20 56  amically Typed V
34340 61 6c 75 65 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b  alue Object.** K
34350 45 59 57 4f 52 44 53 3a 20 7b 70 72 6f 74 65 63  EYWORDS: {protec
34360 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
34370 65 7d 20 7b 75 6e 70 72 6f 74 65 63 74 65 64 20  e} {unprotected 
34380 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 7d 0a 2a  sqlite3_value}.*
34390 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73  *.** SQLite uses
343a0 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c   the sqlite3_val
343b0 75 65 20 6f 62 6a 65 63 74 20 74 6f 20 72 65 70  ue object to rep
343c0 72 65 73 65 6e 74 20 61 6c 6c 20 76 61 6c 75 65  resent all value
343d0 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62 65  s.** that can be
343e0 20 73 74 6f 72 65 64 20 69 6e 20 61 20 64 61 74   stored in a dat
343f0 61 62 61 73 65 20 74 61 62 6c 65 2e 20 53 51 4c  abase table. SQL
34400 69 74 65 20 75 73 65 73 20 64 79 6e 61 6d 69 63  ite uses dynamic
34410 20 74 79 70 69 6e 67 0a 2a 2a 20 66 6f 72 20 74   typing.** for t
34420 68 65 20 76 61 6c 75 65 73 20 69 74 20 73 74 6f  he values it sto
34430 72 65 73 2e 20 20 5e 56 61 6c 75 65 73 20 73 74  res.  ^Values st
34440 6f 72 65 64 20 69 6e 20 73 71 6c 69 74 65 33 5f  ored in sqlite3_
34450 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 0a 2a 2a  value objects.**
34460 20 63 61 6e 20 62 65 20 69 6e 74 65 67 65 72 73   can be integers
34470 2c 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  , floating point
34480 20 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67 73   values, strings
34490 2c 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c  , BLOBs, or NULL
344a0 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71 6c 69 74  ..**.** An sqlit
344b0 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20  e3_value object 
344c0 6d 61 79 20 62 65 20 65 69 74 68 65 72 20 22 70  may be either "p
344d0 72 6f 74 65 63 74 65 64 22 20 6f 72 20 22 75 6e  rotected" or "un
344e0 70 72 6f 74 65 63 74 65 64 22 2e 0a 2a 2a 20 53  protected"..** S
344f0 6f 6d 65 20 69 6e 74 65 72 66 61 63 65 73 20 72  ome interfaces r
34500 65 71 75 69 72 65 20 61 20 70 72 6f 74 65 63 74  equire a protect
34510 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
34520 2e 20 20 4f 74 68 65 72 20 69 6e 74 65 72 66 61  .  Other interfa
34530 63 65 73 0a 2a 2a 20 77 69 6c 6c 20 61 63 63 65  ces.** will acce
34540 70 74 20 65 69 74 68 65 72 20 61 20 70 72 6f 74  pt either a prot
34550 65 63 74 65 64 20 6f 72 20 61 6e 20 75 6e 70 72  ected or an unpr
34560 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
34570 76 61 6c 75 65 2e 0a 2a 2a 20 45 76 65 72 79 20  value..** Every 
34580 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 61  interface that a
34590 63 63 65 70 74 73 20 73 71 6c 69 74 65 33 5f 76  ccepts sqlite3_v
345a0 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 20 73  alue arguments s
345b0 70 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 65 74  pecifies.** whet
345c0 68 65 72 20 6f 72 20 6e 6f 74 20 69 74 20 72 65  her or not it re
345d0 71 75 69 72 65 73 20 61 20 70 72 6f 74 65 63 74  quires a protect
345e0 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
345f0 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  .  The.** [sqlit
34600 65 33 5f 76 61 6c 75 65 5f 64 75 70 28 29 5d 20  e3_value_dup()] 
34610 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65  interface can be
34620 20 75 73 65 64 20 74 6f 20 63 6f 6e 73 74 72 75   used to constru
34630 63 74 20 61 20 6e 65 77 20 0a 2a 2a 20 70 72 6f  ct a new .** pro
34640 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
34650 61 6c 75 65 20 66 72 6f 6d 20 61 6e 20 75 6e 70  alue from an unp
34660 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33  rotected sqlite3
34670 5f 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  _value..**.** Th
34680 65 20 74 65 72 6d 73 20 22 70 72 6f 74 65 63 74  e terms "protect
34690 65 64 22 20 61 6e 64 20 22 75 6e 70 72 6f 74 65  ed" and "unprote
346a0 63 74 65 64 22 20 72 65 66 65 72 20 74 6f 20 77  cted" refer to w
346b0 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 0a 2a 2a  hether or not.**
346c0 20 61 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64   a mutex is held
346d0 2e 20 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20 6d  .  An internal m
346e0 75 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72  utex is held for
346f0 20 61 20 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20   a protected.** 
34700 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62  sqlite3_value ob
34710 6a 65 63 74 20 62 75 74 20 6e 6f 20 6d 75 74 65  ject but no mute
34720 78 20 69 73 20 68 65 6c 64 20 66 6f 72 20 61 6e  x is held for an
34730 20 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20   unprotected.** 
34740 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62  sqlite3_value ob
34750 6a 65 63 74 2e 20 20 49 66 20 53 51 4c 69 74 65  ject.  If SQLite
34760 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 74 6f 20   is compiled to 
34770 62 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64  be single-thread
34780 65 64 0a 2a 2a 20 28 77 69 74 68 20 5b 53 51 4c  ed.** (with [SQL
34790 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
347a0 5d 20 61 6e 64 20 77 69 74 68 20 5b 73 71 6c 69  ] and with [sqli
347b0 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29  te3_threadsafe()
347c0 5d 20 72 65 74 75 72 6e 69 6e 67 20 30 29 0a 2a  ] returning 0).*
347d0 2a 20 6f 72 20 69 66 20 53 51 4c 69 74 65 20 69  * or if SQLite i
347e0 73 20 72 75 6e 20 69 6e 20 6f 6e 65 20 6f 66 20  s run in one of 
347f0 72 65 64 75 63 65 64 20 6d 75 74 65 78 20 6d 6f  reduced mutex mo
34800 64 65 73 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  des .** [SQLITE_
34810 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52  CONFIG_SINGLETHR
34820 45 41 44 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f  EAD] or [SQLITE_
34830 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
34840 41 44 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 72  AD].** then ther
34850 65 20 69 73 20 6e 6f 20 64 69 73 74 69 6e 63 74  e is no distinct
34860 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74  ion between prot
34870 65 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74  ected and unprot
34880 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33  ected.** sqlite3
34890 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 61  _value objects a
348a0 6e 64 20 74 68 65 79 20 63 61 6e 20 62 65 20 75  nd they can be u
348b0 73 65 64 20 69 6e 74 65 72 63 68 61 6e 67 65 61  sed interchangea
348c0 62 6c 79 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a  bly.  However,.*
348d0 2a 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20 63 6f  * for maximum co
348e0 64 65 20 70 6f 72 74 61 62 69 6c 69 74 79 20 69  de portability i
348f0 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64  t is recommended
34900 20 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f   that applicatio
34910 6e 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d 61 6b 65  ns.** still make
34920 20 74 68 65 20 64 69 73 74 69 6e 63 74 69 6f 6e   the distinction
34930 20 62 65 74 77 65 65 6e 20 70 72 6f 74 65 63 74   between protect
34940 65 64 20 61 6e 64 20 75 6e 70 72 6f 74 65 63 74  ed and unprotect
34950 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61  ed.** sqlite3_va
34960 6c 75 65 20 6f 62 6a 65 63 74 73 20 65 76 65 6e  lue objects even
34970 20 77 68 65 6e 20 6e 6f 74 20 73 74 72 69 63 74   when not strict
34980 6c 79 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a  ly required..**.
34990 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
349a0 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 74 68  value objects th
349b0 61 74 20 61 72 65 20 70 61 73 73 65 64 20 61 73  at are passed as
349c0 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 74 6f   parameters into
349d0 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e   the.** implemen
349e0 74 61 74 69 6f 6e 20 6f 66 20 5b 61 70 70 6c 69  tation of [appli
349f0 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53  cation-defined S
34a00 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72  QL functions] ar
34a10 65 20 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20  e protected..** 
34a20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c  ^The sqlite3_val
34a30 75 65 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e  ue object return
34a40 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65  ed by.** [sqlite
34a50 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28 29  3_column_value()
34a60 5d 20 69 73 20 75 6e 70 72 6f 74 65 63 74 65 64  ] is unprotected
34a70 2e 0a 2a 2a 20 55 6e 70 72 6f 74 65 63 74 65 64  ..** Unprotected
34a80 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f   sqlite3_value o
34a90 62 6a 65 63 74 73 20 6d 61 79 20 6f 6e 6c 79 20  bjects may only 
34aa0 62 65 20 75 73 65 64 20 77 69 74 68 0a 2a 2a 20  be used with.** 
34ab0 5b 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f  [sqlite3_result_
34ac0 76 61 6c 75 65 28 29 5d 20 61 6e 64 20 5b 73 71  value()] and [sq
34ad0 6c 69 74 65 33 5f 62 69 6e 64 5f 76 61 6c 75 65  lite3_bind_value
34ae0 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c  ()]..** The [sql
34af0 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 20  ite3_value_blob 
34b00 7c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  | sqlite3_value_
34b10 74 79 70 65 28 29 5d 20 66 61 6d 69 6c 79 20 6f  type()] family o
34b20 66 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  f.** interfaces 
34b30 72 65 71 75 69 72 65 20 70 72 6f 74 65 63 74 65  require protecte
34b40 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  d sqlite3_value 
34b50 6f 62 6a 65 63 74 73 2e 0a 2a 2f 0a 74 79 70 65  objects..*/.type
34b60 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
34b70 65 33 5f 76 61 6c 75 65 20 73 71 6c 69 74 65 33  e3_value sqlite3
34b80 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a 20 43  _value;../*.** C
34b90 41 50 49 33 52 45 46 3a 20 53 51 4c 20 46 75 6e  API3REF: SQL Fun
34ba0 63 74 69 6f 6e 20 43 6f 6e 74 65 78 74 20 4f 62  ction Context Ob
34bb0 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63  ject.**.** The c
34bc0 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20  ontext in which 
34bd0 61 6e 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  an SQL function 
34be0 65 78 65 63 75 74 65 73 20 69 73 20 73 74 6f 72  executes is stor
34bf0 65 64 20 69 6e 20 61 6e 0a 2a 2a 20 73 71 6c 69  ed in an.** sqli
34c00 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65  te3_context obje
34c10 63 74 2e 20 20 5e 41 20 70 6f 69 6e 74 65 72 20  ct.  ^A pointer 
34c20 74 6f 20 61 6e 20 73 71 6c 69 74 65 33 5f 63 6f  to an sqlite3_co
34c30 6e 74 65 78 74 20 6f 62 6a 65 63 74 0a 2a 2a 20  ntext object.** 
34c40 69 73 20 61 6c 77 61 79 73 20 66 69 72 73 74 20  is always first 
34c50 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b 61 70  parameter to [ap
34c60 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
34c70 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
34c80 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61  ..** The applica
34c90 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c  tion-defined SQL
34ca0 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d   function implem
34cb0 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20 70 61  entation will pa
34cc0 73 73 20 74 68 69 73 0a 2a 2a 20 70 6f 69 6e 74  ss this.** point
34cd0 65 72 20 74 68 72 6f 75 67 68 20 69 6e 74 6f 20  er through into 
34ce0 63 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65  calls to [sqlite
34cf0 33 5f 72 65 73 75 6c 74 5f 69 6e 74 20 7c 20 73  3_result_int | s
34d00 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 28 29 5d  qlite3_result()]
34d10 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 61 67  ,.** [sqlite3_ag
34d20 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28  gregate_context(
34d30 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 75 73 65  )], [sqlite3_use
34d40 72 5f 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 5b 73  r_data()],.** [s
34d50 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 64  qlite3_context_d
34d60 62 5f 68 61 6e 64 6c 65 28 29 5d 2c 20 5b 73 71  b_handle()], [sq
34d70 6c 69 74 65 33 5f 67 65 74 5f 61 75 78 64 61 74  lite3_get_auxdat
34d80 61 28 29 5d 2c 0a 2a 2a 20 61 6e 64 2f 6f 72 20  a()],.** and/or 
34d90 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 78  [sqlite3_set_aux
34da0 64 61 74 61 28 29 5d 2e 0a 2a 2f 0a 74 79 70 65  data()]..*/.type
34db0 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
34dc0 65 33 5f 63 6f 6e 74 65 78 74 20 73 71 6c 69 74  e3_context sqlit
34dd0 65 33 5f 63 6f 6e 74 65 78 74 3b 0a 0a 2f 2a 0a  e3_context;../*.
34de0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 42 69 6e  ** CAPI3REF: Bin
34df0 64 69 6e 67 20 56 61 6c 75 65 73 20 54 6f 20 50  ding Values To P
34e00 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e  repared Statemen
34e10 74 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  ts.** KEYWORDS: 
34e20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 7d  {host parameter}
34e30 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72   {host parameter
34e40 73 7d 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74  s} {host paramet
34e50 65 72 20 6e 61 6d 65 7d 0a 2a 2a 20 4b 45 59 57  er name}.** KEYW
34e60 4f 52 44 53 3a 20 7b 53 51 4c 20 70 61 72 61 6d  ORDS: {SQL param
34e70 65 74 65 72 7d 20 7b 53 51 4c 20 70 61 72 61 6d  eter} {SQL param
34e80 65 74 65 72 73 7d 20 7b 70 61 72 61 6d 65 74 65  eters} {paramete
34e90 72 20 62 69 6e 64 69 6e 67 7d 0a 2a 2a 20 4d 45  r binding}.** ME
34ea0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
34eb0 6d 74 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68  mt.**.** ^(In th
34ec0 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
34ed0 74 65 78 74 20 69 6e 70 75 74 20 74 6f 20 5b 73  text input to [s
34ee0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34ef0 32 28 29 5d 20 61 6e 64 20 69 74 73 20 76 61 72  2()] and its var
34f00 69 61 6e 74 73 2c 0a 2a 2a 20 6c 69 74 65 72 61  iants,.** litera
34f10 6c 73 20 6d 61 79 20 62 65 20 72 65 70 6c 61 63  ls may be replac
34f20 65 64 20 62 79 20 61 20 5b 70 61 72 61 6d 65 74  ed by a [paramet
34f30 65 72 5d 20 74 68 61 74 20 6d 61 74 63 68 65 73  er] that matches
34f40 20 6f 6e 65 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e   one of followin
34f50 67 0a 2a 2a 20 74 65 6d 70 6c 61 74 65 73 3a 0a  g.** templates:.
34f60 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c  **.** <ul>.** <l
34f70 69 3e 20 20 3f 0a 2a 2a 20 3c 6c 69 3e 20 20 3f  i>  ?.** <li>  ?
34f80 4e 4e 4e 0a 2a 2a 20 3c 6c 69 3e 20 20 3a 56 56  NNN.** <li>  :VV
34f90 56 0a 2a 2a 20 3c 6c 69 3e 20 20 40 56 56 56 0a  V.** <li>  @VVV.
34fa0 2a 2a 20 3c 6c 69 3e 20 20 24 56 56 56 0a 2a 2a  ** <li>  $VVV.**
34fb0 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 49 6e 20   </ul>.**.** In 
34fc0 74 68 65 20 74 65 6d 70 6c 61 74 65 73 20 61 62  the templates ab
34fd0 6f 76 65 2c 20 4e 4e 4e 20 72 65 70 72 65 73 65  ove, NNN represe
34fe0 6e 74 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6c  nts an integer l
34ff0 69 74 65 72 61 6c 2c 0a 2a 2a 20 61 6e 64 20 56  iteral,.** and V
35000 56 56 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e  VV represents an
35010 20 61 6c 70 68 61 6e 75 6d 65 72 69 63 20 69 64   alphanumeric id
35020 65 6e 74 69 66 69 65 72 2e 29 5e 20 20 5e 54 68  entifier.)^  ^Th
35030 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 73  e values of thes
35040 65 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 20  e.** parameters 
35050 28 61 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f  (also called "ho
35060 73 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d  st parameter nam
35070 65 73 22 20 6f 72 20 22 53 51 4c 20 70 61 72 61  es" or "SQL para
35080 6d 65 74 65 72 73 22 29 0a 2a 2a 20 63 61 6e 20  meters").** can 
35090 62 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65  be set using the
350a0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
350b0 29 20 72 6f 75 74 69 6e 65 73 20 64 65 66 69 6e  ) routines defin
350c0 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 5e  ed here..**.** ^
350d0 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
350e0 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  nt to the sqlite
350f0 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69  3_bind_*() routi
35100 6e 65 73 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a  nes is always.**
35110 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
35120 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d  e [sqlite3_stmt]
35130 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64   object returned
35140 20 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65   from.** [sqlite
35150 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
35160 6f 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 2e  or its variants.
35170 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 65 63 6f  .**.** ^The seco
35180 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  nd argument is t
35190 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20  he index of the 
351a0 53 51 4c 20 70 61 72 61 6d 65 74 65 72 20 74 6f  SQL parameter to
351b0 20 62 65 20 73 65 74 2e 0a 2a 2a 20 5e 54 68 65   be set..** ^The
351c0 20 6c 65 66 74 6d 6f 73 74 20 53 51 4c 20 70 61   leftmost SQL pa
351d0 72 61 6d 65 74 65 72 20 68 61 73 20 61 6e 20 69  rameter has an i
351e0 6e 64 65 78 20 6f 66 20 31 2e 20 20 5e 57 68 65  ndex of 1.  ^Whe
351f0 6e 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 64  n the same named
35200 0a 2a 2a 20 53 51 4c 20 70 61 72 61 6d 65 74 65  .** SQL paramete
35210 72 20 69 73 20 75 73 65 64 20 6d 6f 72 65 20 74  r is used more t
35220 68 61 6e 20 6f 6e 63 65 2c 20 73 65 63 6f 6e 64  han once, second
35230 20 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0a   and subsequent.
35240 2a 2a 20 6f 63 63 75 72 72 65 6e 63 65 73 20 68  ** occurrences h
35250 61 76 65 20 74 68 65 20 73 61 6d 65 20 69 6e 64  ave the same ind
35260 65 78 20 61 73 20 74 68 65 20 66 69 72 73 74 20  ex as the first 
35270 6f 63 63 75 72 72 65 6e 63 65 2e 0a 2a 2a 20 5e  occurrence..** ^
35280 54 68 65 20 69 6e 64 65 78 20 66 6f 72 20 6e 61  The index for na
35290 6d 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 63  med parameters c
352a0 61 6e 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20  an be looked up 
352b0 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71  using the.** [sq
352c0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
352d0 65 74 65 72 5f 69 6e 64 65 78 28 29 5d 20 41 50  eter_index()] AP
352e0 49 20 69 66 20 64 65 73 69 72 65 64 2e 20 20 5e  I if desired.  ^
352f0 54 68 65 20 69 6e 64 65 78 0a 2a 2a 20 66 6f 72  The index.** for
35300 20 22 3f 4e 4e 4e 22 20 70 61 72 61 6d 65 74 65   "?NNN" paramete
35310 72 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  rs is the value 
35320 6f 66 20 4e 4e 4e 2e 0a 2a 2a 20 5e 54 68 65 20  of NNN..** ^The 
35330 4e 4e 4e 20 76 61 6c 75 65 20 6d 75 73 74 20 62  NNN value must b
35340 65 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20  e between 1 and 
35350 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the [sqlite3_lim
35360 69 74 28 29 5d 0a 2a 2a 20 70 61 72 61 6d 65 74  it()].** paramet
35370 65 72 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  er [SQLITE_LIMIT
35380 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
35390 5d 20 28 64 65 66 61 75 6c 74 20 76 61 6c 75 65  ] (default value
353a0 3a 20 39 39 39 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54  : 999)..**.** ^T
353b0 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
353c0 74 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  t is the value t
353d0 6f 20 62 69 6e 64 20 74 6f 20 74 68 65 20 70 61  o bind to the pa
353e0 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66 20  rameter..** ^If 
353f0 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
35400 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62  ter to sqlite3_b
35410 69 6e 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71  ind_text() or sq
35420 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
35430 36 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65  6().** or sqlite
35440 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69 73  3_bind_blob() is
35450 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
35460 74 68 65 6e 20 74 68 65 20 66 6f 75 72 74 68 20  then the fourth 
35470 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 69 73 20  parameter.** is 
35480 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20  ignored and the 
35490 65 6e 64 20 72 65 73 75 6c 74 20 69 73 20 74 68  end result is th
354a0 65 20 73 61 6d 65 20 61 73 20 73 71 6c 69 74 65  e same as sqlite
354b0 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 29 2e 0a 2a  3_bind_null()..*
354c0 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68 6f 73 65 20  *.** ^(In those 
354d0 72 6f 75 74 69 6e 65 73 20 74 68 61 74 20 68 61  routines that ha
354e0 76 65 20 61 20 66 6f 75 72 74 68 20 61 72 67 75  ve a fourth argu
354f0 6d 65 6e 74 2c 20 69 74 73 20 76 61 6c 75 65 20  ment, its value 
35500 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72  is the.** number
35510 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
35520 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54 6f 20   parameter.  To 
35530 62 65 20 63 6c 65 61 72 3a 20 74 68 65 20 76 61  be clear: the va
35540 6c 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75  lue is the.** nu
35550 6d 62 65 72 20 6f 66 20 3c 75 3e 62 79 74 65 73  mber of <u>bytes
35560 3c 2f 75 3e 20 69 6e 20 74 68 65 20 76 61 6c 75  </u> in the valu
35570 65 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65  e, not the numbe
35580 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 2e  r of characters.
35590 29 5e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 6f  )^.** ^If the fo
355a0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74  urth parameter t
355b0 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  o sqlite3_bind_t
355c0 65 78 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33  ext() or sqlite3
355d0 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 0a 2a  _bind_text16().*
355e0 2a 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74  * is negative, t
355f0 68 65 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f  hen the length o
35600 66 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 0a  f the string is.
35610 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ** the number of
35620 20 62 79 74 65 73 20 75 70 20 74 6f 20 74 68 65   bytes up to the
35630 20 66 69 72 73 74 20 7a 65 72 6f 20 74 65 72 6d   first zero term
35640 69 6e 61 74 6f 72 2e 0a 2a 2a 20 49 66 20 74 68  inator..** If th
35650 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
35660 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69  er to sqlite3_bi
35670 6e 64 5f 62 6c 6f 62 28 29 20 69 73 20 6e 65 67  nd_blob() is neg
35680 61 74 69 76 65 2c 20 74 68 65 6e 0a 2a 2a 20 74  ative, then.** t
35690 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  he behavior is u
356a0 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 49 66 20  ndefined..** If 
356b0 61 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 66  a non-negative f
356c0 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
356d0 69 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 73  is provided to s
356e0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
356f0 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33  ().** or sqlite3
35700 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 20 6f  _bind_text16() o
35710 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  r sqlite3_bind_t
35720 65 78 74 36 34 28 29 20 74 68 65 6e 0a 2a 2a 20  ext64() then.** 
35730 74 68 61 74 20 70 61 72 61 6d 65 74 65 72 20 6d  that parameter m
35740 75 73 74 20 62 65 20 74 68 65 20 62 79 74 65 20  ust be the byte 
35750 6f 66 66 73 65 74 0a 2a 2a 20 77 68 65 72 65 20  offset.** where 
35760 74 68 65 20 4e 55 4c 20 74 65 72 6d 69 6e 61 74  the NUL terminat
35770 6f 72 20 77 6f 75 6c 64 20 6f 63 63 75 72 20 61  or would occur a
35780 73 73 75 6d 69 6e 67 20 74 68 65 20 73 74 72 69  ssuming the stri
35790 6e 67 20 77 65 72 65 20 4e 55 4c 0a 2a 2a 20 74  ng were NUL.** t
357a0 65 72 6d 69 6e 61 74 65 64 2e 20 20 49 66 20 61  erminated.  If a
357b0 6e 79 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72  ny NUL character
357c0 73 20 6f 63 63 75 72 20 61 74 20 62 79 74 65 20  s occur at byte 
357d0 6f 66 66 73 65 74 73 20 6c 65 73 73 20 74 68 61  offsets less tha
357e0 6e 20 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20  n .** the value 
357f0 6f 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  of the fourth pa
35800 72 61 6d 65 74 65 72 20 74 68 65 6e 20 74 68 65  rameter then the
35810 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e   resulting strin
35820 67 20 76 61 6c 75 65 20 77 69 6c 6c 0a 2a 2a 20  g value will.** 
35830 63 6f 6e 74 61 69 6e 20 65 6d 62 65 64 64 65 64  contain embedded
35840 20 4e 55 4c 73 2e 20 20 54 68 65 20 72 65 73 75   NULs.  The resu
35850 6c 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e  lt of expression
35860 73 20 69 6e 76 6f 6c 76 69 6e 67 20 73 74 72 69  s involving stri
35870 6e 67 73 0a 2a 2a 20 77 69 74 68 20 65 6d 62 65  ngs.** with embe
35880 64 64 65 64 20 4e 55 4c 73 20 69 73 20 75 6e 64  dded NULs is und
35890 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54  efined..**.** ^T
358a0 68 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e  he fifth argumen
358b0 74 20 74 6f 20 74 68 65 20 42 4c 4f 42 20 61 6e  t to the BLOB an
358c0 64 20 73 74 72 69 6e 67 20 62 69 6e 64 69 6e 67  d string binding
358d0 20 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20 69   interfaces.** i
358e0 73 20 61 20 64 65 73 74 72 75 63 74 6f 72 20 75  s a destructor u
358f0 73 65 64 20 74 6f 20 64 69 73 70 6f 73 65 20 6f  sed to dispose o
35900 66 20 74 68 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a  f the BLOB or.**
35910 20 73 74 72 69 6e 67 20 61 66 74 65 72 20 53 51   string after SQ
35920 4c 69 74 65 20 68 61 73 20 66 69 6e 69 73 68 65  Lite has finishe
35930 64 20 77 69 74 68 20 69 74 2e 20 20 5e 54 68 65  d with it.  ^The
35940 20 64 65 73 74 72 75 63 74 6f 72 20 69 73 20 63   destructor is c
35950 61 6c 6c 65 64 0a 2a 2a 20 74 6f 20 64 69 73 70  alled.** to disp
35960 6f 73 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20  ose of the BLOB 
35970 6f 72 20 73 74 72 69 6e 67 20 65 76 65 6e 20 69  or string even i
35980 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 62 69  f the call to bi
35990 6e 64 20 41 50 49 20 66 61 69 6c 73 2e 0a 2a 2a  nd API fails..**
359a0 20 5e 49 66 20 74 68 65 20 66 69 66 74 68 20 61   ^If the fifth a
359b0 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a 20 74 68  rgument is.** th
359c0 65 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20  e special value 
359d0 5b 53 51 4c 49 54 45 5f 53 54 41 54 49 43 5d 2c  [SQLITE_STATIC],
359e0 20 74 68 65 6e 20 53 51 4c 69 74 65 20 61 73 73   then SQLite ass
359f0 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a  umes that the.**
35a00 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
35a10 69 6e 20 73 74 61 74 69 63 2c 20 75 6e 6d 61 6e  in static, unman
35a20 61 67 65 64 20 73 70 61 63 65 20 61 6e 64 20 64  aged space and d
35a30 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  oes not need to 
35a40 62 65 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66  be freed..** ^If
35a50 20 74 68 65 20 66 69 66 74 68 20 61 72 67 75 6d   the fifth argum
35a60 65 6e 74 20 68 61 73 20 74 68 65 20 76 61 6c 75  ent has the valu
35a70 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 4e 53 49  e [SQLITE_TRANSI
35a80 45 4e 54 5d 2c 20 74 68 65 6e 0a 2a 2a 20 53 51  ENT], then.** SQ
35a90 4c 69 74 65 20 6d 61 6b 65 73 20 69 74 73 20 6f  Lite makes its o
35aa0 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
35ab0 6f 66 20 74 68 65 20 64 61 74 61 20 69 6d 6d 65  of the data imme
35ac0 64 69 61 74 65 6c 79 2c 20 62 65 66 6f 72 65 0a  diately, before.
35ad0 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62  ** the sqlite3_b
35ae0 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 20  ind_*() routine 
35af0 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e  returns..**.** ^
35b00 54 68 65 20 73 69 78 74 68 20 61 72 67 75 6d 65  The sixth argume
35b10 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69  nt to sqlite3_bi
35b20 6e 64 5f 74 65 78 74 36 34 28 29 20 6d 75 73 74  nd_text64() must
35b30 20 62 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 5b 53   be one of.** [S
35b40 51 4c 49 54 45 5f 55 54 46 38 5d 2c 20 5b 53 51  QLITE_UTF8], [SQ
35b50 4c 49 54 45 5f 55 54 46 31 36 5d 2c 20 5b 53 51  LITE_UTF16], [SQ
35b60 4c 49 54 45 5f 55 54 46 31 36 42 45 5d 2c 20 6f  LITE_UTF16BE], o
35b70 72 20 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 4c  r [SQLITE_UTF16L
35b80 45 5d 0a 2a 2a 20 74 6f 20 73 70 65 63 69 66 79  E].** to specify
35b90 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 6f 66   the encoding of
35ba0 20 74 68 65 20 74 65 78 74 20 69 6e 20 74 68 65   the text in the
35bb0 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
35bc0 2e 20 20 49 66 0a 2a 2a 20 74 68 65 20 73 69 78  .  If.** the six
35bd0 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  th argument to s
35be0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
35bf0 36 34 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65 20  64() is not one 
35c00 6f 66 20 74 68 65 0a 2a 2a 20 61 6c 6c 6f 77 65  of the.** allowe
35c10 64 20 76 61 6c 75 65 73 20 73 68 6f 77 6e 20 61  d values shown a
35c20 62 6f 76 65 2c 20 6f 72 20 69 66 20 74 68 65 20  bove, or if the 
35c30 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 20 69 73  text encoding is
35c40 20 64 69 66 66 65 72 65 6e 74 0a 2a 2a 20 66 72   different.** fr
35c50 6f 6d 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20  om the encoding 
35c60 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
35c70 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72   sixth parameter
35c80 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
35c90 69 6f 72 0a 2a 2a 20 69 73 20 75 6e 64 65 66 69  ior.** is undefi
35ca0 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ned..**.** ^The 
35cb0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72  sqlite3_bind_zer
35cc0 6f 62 6c 6f 62 28 29 20 72 6f 75 74 69 6e 65 20  oblob() routine 
35cd0 62 69 6e 64 73 20 61 20 42 4c 4f 42 20 6f 66 20  binds a BLOB of 
35ce0 6c 65 6e 67 74 68 20 4e 20 74 68 61 74 0a 2a 2a  length N that.**
35cf0 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20   is filled with 
35d00 7a 65 72 6f 65 73 2e 20 20 5e 41 20 7a 65 72 6f  zeroes.  ^A zero
35d10 62 6c 6f 62 20 75 73 65 73 20 61 20 66 69 78 65  blob uses a fixe
35d20 64 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f  d amount of memo
35d30 72 79 0a 2a 2a 20 28 6a 75 73 74 20 61 6e 20 69  ry.** (just an i
35d40 6e 74 65 67 65 72 20 74 6f 20 68 6f 6c 64 20 69  nteger to hold i
35d50 74 73 20 73 69 7a 65 29 20 77 68 69 6c 65 20 69  ts size) while i
35d60 74 20 69 73 20 62 65 69 6e 67 20 70 72 6f 63 65  t is being proce
35d70 73 73 65 64 2e 0a 2a 2a 20 5a 65 72 6f 62 6c 6f  ssed..** Zeroblo
35d80 62 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20  bs are intended 
35d90 74 6f 20 73 65 72 76 65 20 61 73 20 70 6c 61 63  to serve as plac
35da0 65 68 6f 6c 64 65 72 73 20 66 6f 72 20 42 4c 4f  eholders for BLO
35db0 42 73 20 77 68 6f 73 65 0a 2a 2a 20 63 6f 6e 74  Bs whose.** cont
35dc0 65 6e 74 20 69 73 20 6c 61 74 65 72 20 77 72 69  ent is later wri
35dd0 74 74 65 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73  tten using.** [s
35de0 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e  qlite3_blob_open
35df0 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
35e00 4c 4f 42 20 49 2f 4f 5d 20 72 6f 75 74 69 6e 65  LOB I/O] routine
35e10 73 2e 0a 2a 2a 20 5e 41 20 6e 65 67 61 74 69 76  s..** ^A negativ
35e20 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
35e30 7a 65 72 6f 62 6c 6f 62 20 72 65 73 75 6c 74 73  zeroblob results
35e40 20 69 6e 20 61 20 7a 65 72 6f 2d 6c 65 6e 67 74   in a zero-lengt
35e50 68 20 42 4c 4f 42 2e 0a 2a 2a 0a 2a 2a 20 5e 54  h BLOB..**.** ^T
35e60 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  he sqlite3_bind_
35e70 70 6f 69 6e 74 65 72 28 53 2c 49 2c 50 29 20 72  pointer(S,I,P) r
35e80 6f 75 74 69 6e 65 20 63 61 75 73 65 73 20 74 68  outine causes th
35e90 65 20 49 2d 74 68 20 70 61 72 61 6d 65 74 65 72  e I-th parameter
35ea0 20 69 6e 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64   in.** [prepared
35eb0 20 73 74 61 74 65 6d 65 6e 74 5d 20 53 20 74 6f   statement] S to
35ec0 20 68 61 76 65 20 61 6e 20 53 51 4c 20 76 61 6c   have an SQL val
35ed0 75 65 20 6f 66 20 4e 55 4c 4c 2c 20 62 75 74 20  ue of NULL, but 
35ee0 74 6f 20 61 6c 73 6f 20 62 65 0a 2a 2a 20 61 73  to also be.** as
35ef0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
35f00 65 20 70 6f 69 6e 74 65 72 20 50 2e 0a 2a 2a 20  e pointer P..** 
35f10 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e  ^The sqlite3_bin
35f20 64 5f 70 6f 69 6e 74 65 72 28 29 20 72 6f 75 74  d_pointer() rout
35f30 69 6e 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ine can be used 
35f40 74 6f 20 70 61 73 73 0a 2a 2a 20 68 6f 73 74 2d  to pass.** host-
35f50 6c 61 6e 67 75 61 67 65 20 70 6f 69 6e 74 65 72  language pointer
35f60 73 20 69 6e 74 6f 20 5b 61 70 70 6c 69 63 61 74  s into [applicat
35f70 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20  ion-defined SQL 
35f80 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 5e  functions]..** ^
35f90 41 20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74  A parameter that
35fa0 20 69 73 20 69 6e 69 74 69 61 6c 69 7a 65 64 20   is initialized 
35fb0 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 62  using [sqlite3_b
35fc0 69 6e 64 5f 70 6f 69 6e 74 65 72 28 29 5d 20 61  ind_pointer()] a
35fd0 70 70 65 61 72 73 0a 2a 2a 20 74 6f 20 62 65 20  ppears.** to be 
35fe0 61 6e 20 6f 72 64 69 6e 61 72 79 20 53 51 4c 20  an ordinary SQL 
35ff0 4e 55 4c 4c 20 76 61 6c 75 65 20 74 6f 20 65 76  NULL value to ev
36000 65 72 79 74 68 69 6e 67 20 6f 74 68 65 72 20 74  erything other t
36010 68 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  han.** [sqlite3_
36020 76 61 6c 75 65 5f 70 6f 69 6e 74 65 72 28 29 5d  value_pointer()]
36030 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 79 20  ..**.** ^If any 
36040 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62  of the sqlite3_b
36050 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73  ind_*() routines
36060 20 61 72 65 20 63 61 6c 6c 65 64 20 77 69 74 68   are called with
36070 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a   a NULL pointer.
36080 2a 2a 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70  ** for the [prep
36090 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
360a0 6f 72 20 77 69 74 68 20 61 20 70 72 65 70 61 72  or with a prepar
360b0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 66 6f 72  ed statement for
360c0 20 77 68 69 63 68 0a 2a 2a 20 5b 73 71 6c 69 74   which.** [sqlit
360d0 65 33 5f 73 74 65 70 28 29 5d 20 68 61 73 20 62  e3_step()] has b
360e0 65 65 6e 20 63 61 6c 6c 65 64 20 6d 6f 72 65 20  een called more 
360f0 72 65 63 65 6e 74 6c 79 20 74 68 61 6e 20 5b 73  recently than [s
36100 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2c  qlite3_reset()],
36110 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 63 61 6c  .** then the cal
36120 6c 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53  l will return [S
36130 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 2e 20 20  QLITE_MISUSE].  
36140 49 66 20 61 6e 79 20 73 71 6c 69 74 65 33 5f 62  If any sqlite3_b
36150 69 6e 64 5f 28 29 0a 2a 2a 20 72 6f 75 74 69 6e  ind_().** routin
36160 65 20 69 73 20 70 61 73 73 65 64 20 61 20 5b 70  e is passed a [p
36170 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
36180 74 5d 20 74 68 61 74 20 68 61 73 20 62 65 65 6e  t] that has been
36190 20 66 69 6e 61 6c 69 7a 65 64 2c 20 74 68 65 0a   finalized, the.
361a0 2a 2a 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64  ** result is und
361b0 65 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61  efined and proba
361c0 62 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a  bly harmful..**.
361d0 2a 2a 20 5e 42 69 6e 64 69 6e 67 73 20 61 72 65  ** ^Bindings are
361e0 20 6e 6f 74 20 63 6c 65 61 72 65 64 20 62 79 20   not cleared by 
361f0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  the [sqlite3_res
36200 65 74 28 29 5d 20 72 6f 75 74 69 6e 65 2e 0a 2a  et()] routine..*
36210 2a 20 5e 55 6e 62 6f 75 6e 64 20 70 61 72 61 6d  * ^Unbound param
36220 65 74 65 72 73 20 61 72 65 20 69 6e 74 65 72 70  eters are interp
36230 72 65 74 65 64 20 61 73 20 4e 55 4c 4c 2e 0a 2a  reted as NULL..*
36240 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
36250 33 5f 62 69 6e 64 5f 2a 20 72 6f 75 74 69 6e 65  3_bind_* routine
36260 73 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  s return [SQLITE
36270 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 20  _OK] on success 
36280 6f 72 20 61 6e 0a 2a 2a 20 5b 65 72 72 6f 72 20  or an.** [error 
36290 63 6f 64 65 5d 20 69 66 20 61 6e 79 74 68 69 6e  code] if anythin
362a0 67 20 67 6f 65 73 20 77 72 6f 6e 67 2e 0a 2a 2a  g goes wrong..**
362b0 20 5e 5b 53 51 4c 49 54 45 5f 54 4f 4f 42 49 47   ^[SQLITE_TOOBIG
362c0 5d 20 6d 69 67 68 74 20 62 65 20 72 65 74 75 72  ] might be retur
362d0 6e 65 64 20 69 66 20 74 68 65 20 73 69 7a 65 20  ned if the size 
362e0 6f 66 20 61 20 73 74 72 69 6e 67 20 6f 72 20 42  of a string or B
362f0 4c 4f 42 0a 2a 2a 20 65 78 63 65 65 64 73 20 6c  LOB.** exceeds l
36300 69 6d 69 74 73 20 69 6d 70 6f 73 65 64 20 62 79  imits imposed by
36310 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 5d   [sqlite3_limit]
36320 28 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c  ([SQLITE_LIMIT_L
36330 45 4e 47 54 48 5d 29 20 6f 72 0a 2a 2a 20 5b 53  ENGTH]) or.** [S
36340 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e 47 54 48  QLITE_MAX_LENGTH
36350 5d 2e 0a 2a 2a 20 5e 5b 53 51 4c 49 54 45 5f 52  ]..** ^[SQLITE_R
36360 41 4e 47 45 5d 20 69 73 20 72 65 74 75 72 6e 65  ANGE] is returne
36370 64 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74  d if the paramet
36380 65 72 0a 2a 2a 20 69 6e 64 65 78 20 69 73 20 6f  er.** index is o
36390 75 74 20 6f 66 20 72 61 6e 67 65 2e 20 20 5e 5b  ut of range.  ^[
363a0 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 20 69 73  SQLITE_NOMEM] is
363b0 20 72 65 74 75 72 6e 65 64 20 69 66 20 6d 61 6c   returned if mal
363c0 6c 6f 63 28 29 20 66 61 69 6c 73 2e 0a 2a 2a 0a  loc() fails..**.
363d0 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71  ** See also: [sq
363e0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
363f0 65 74 65 72 5f 63 6f 75 6e 74 28 29 5d 2c 0a 2a  eter_count()],.*
36400 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  * [sqlite3_bind_
36410 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 29  parameter_name()
36420 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ], and [sqlite3_
36430 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
36440 6e 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49  ndex()]..*/.SQLI
36450 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
36460 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 73 71 6c  e3_bind_blob(sql
36470 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
36480 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e   const void*, in
36490 74 20 6e 2c 20 76 6f 69 64 28 2a 29 28 76 6f 69  t n, void(*)(voi
364a0 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  d*));.SQLITE_API
364b0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
364c0 64 5f 62 6c 6f 62 36 34 28 73 71 6c 69 74 65 33  d_blob64(sqlite3
364d0 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e  _stmt*, int, con
364e0 73 74 20 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65  st void*, sqlite
364f0 33 5f 75 69 6e 74 36 34 2c 0a 20 20 20 20 20 20  3_uint64,.      
36500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36510 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29    void(*)(void*)
36520 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
36530 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  t sqlite3_bind_d
36540 6f 75 62 6c 65 28 73 71 6c 69 74 65 33 5f 73 74  ouble(sqlite3_st
36550 6d 74 2a 2c 20 69 6e 74 2c 20 64 6f 75 62 6c 65  mt*, int, double
36560 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
36570 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69  t sqlite3_bind_i
36580 6e 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  nt(sqlite3_stmt*
36590 2c 20 69 6e 74 2c 20 69 6e 74 29 3b 0a 53 51 4c  , int, int);.SQL
365a0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
365b0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 28 73  te3_bind_int64(s
365c0 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
365d0 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  t, sqlite3_int64
365e0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
365f0 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e  t sqlite3_bind_n
36600 75 6c 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ull(sqlite3_stmt
36610 2a 2c 20 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f  *, int);.SQLITE_
36620 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
36630 62 69 6e 64 5f 74 65 78 74 28 73 71 6c 69 74 65  bind_text(sqlite
36640 33 5f 73 74 6d 74 2a 2c 69 6e 74 2c 63 6f 6e 73  3_stmt*,int,cons
36650 74 20 63 68 61 72 2a 2c 69 6e 74 2c 76 6f 69 64  t char*,int,void
36660 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 53 51 4c  (*)(void*));.SQL
36670 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
36680 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31 36 28  te3_bind_text16(
36690 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
366a0 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c  nt, const void*,
366b0 20 69 6e 74 2c 20 76 6f 69 64 28 2a 29 28 76 6f   int, void(*)(vo
366c0 69 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50  id*));.SQLITE_AP
366d0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  I int sqlite3_bi
366e0 6e 64 5f 74 65 78 74 36 34 28 73 71 6c 69 74 65  nd_text64(sqlite
366f0 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f  3_stmt*, int, co
36700 6e 73 74 20 63 68 61 72 2a 2c 20 73 71 6c 69 74  nst char*, sqlit
36710 65 33 5f 75 69 6e 74 36 34 2c 0a 20 20 20 20 20  e3_uint64,.     
36720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36730 20 20 20 20 76 6f 69 64 28 2a 29 28 76 6f 69 64      void(*)(void
36740 2a 29 2c 20 75 6e 73 69 67 6e 65 64 20 63 68 61  *), unsigned cha
36750 72 20 65 6e 63 6f 64 69 6e 67 29 3b 0a 53 51 4c  r encoding);.SQL
36760 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
36770 74 65 33 5f 62 69 6e 64 5f 76 61 6c 75 65 28 73  te3_bind_value(s
36780 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
36790 74 2c 20 63 6f 6e 73 74 20 73 71 6c 69 74 65 33  t, const sqlite3
367a0 5f 76 61 6c 75 65 2a 29 3b 0a 53 51 4c 49 54 45  _value*);.SQLITE
367b0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
367c0 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72 28 73 71  _bind_pointer(sq
367d0 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
367e0 2c 20 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45  , void*);.SQLITE
367f0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
36800 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28 73  _bind_zeroblob(s
36810 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
36820 74 2c 20 69 6e 74 20 6e 29 3b 0a 53 51 4c 49 54  t, int n);.SQLIT
36830 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
36840 33 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 36  3_bind_zeroblob6
36850 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c  4(sqlite3_stmt*,
36860 20 69 6e 74 2c 20 73 71 6c 69 74 65 33 5f 75 69   int, sqlite3_ui
36870 6e 74 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  nt64);../*.** CA
36880 50 49 33 52 45 46 3a 20 4e 75 6d 62 65 72 20 4f  PI3REF: Number O
36890 66 20 53 51 4c 20 50 61 72 61 6d 65 74 65 72 73  f SQL Parameters
368a0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
368b0 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e  te3_stmt.**.** ^
368c0 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 61 6e  This routine can
368d0 20 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e 64   be used to find
368e0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 5b   the number of [
368f0 53 51 4c 20 70 61 72 61 6d 65 74 65 72 73 5d 0a  SQL parameters].
36900 2a 2a 20 69 6e 20 61 20 5b 70 72 65 70 61 72 65  ** in a [prepare
36910 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20 20 53  d statement].  S
36920 51 4c 20 70 61 72 61 6d 65 74 65 72 73 20 61 72  QL parameters ar
36930 65 20 74 6f 6b 65 6e 73 20 6f 66 20 74 68 65 0a  e tokens of the.
36940 2a 2a 20 66 6f 72 6d 20 22 3f 22 2c 20 22 3f 4e  ** form "?", "?N
36950 4e 4e 22 2c 20 22 3a 41 41 41 22 2c 20 22 24 41  NN", ":AAA", "$A
36960 41 41 22 2c 20 6f 72 20 22 40 41 41 41 22 20 74  AA", or "@AAA" t
36970 68 61 74 20 73 65 72 76 65 20 61 73 0a 2a 2a 20  hat serve as.** 
36980 70 6c 61 63 65 68 6f 6c 64 65 72 73 20 66 6f 72  placeholders for
36990 20 76 61 6c 75 65 73 20 74 68 61 74 20 61 72 65   values that are
369a0 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62   [sqlite3_bind_b
369b0 6c 6f 62 20 7c 20 62 6f 75 6e 64 5d 0a 2a 2a 20  lob | bound].** 
369c0 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  to the parameter
369d0 73 20 61 74 20 61 20 6c 61 74 65 72 20 74 69 6d  s at a later tim
369e0 65 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20  e..**.** ^(This 
369f0 72 6f 75 74 69 6e 65 20 61 63 74 75 61 6c 6c 79  routine actually
36a00 20 72 65 74 75 72 6e 73 20 74 68 65 20 69 6e 64   returns the ind
36a10 65 78 20 6f 66 20 74 68 65 20 6c 61 72 67 65 73  ex of the larges
36a20 74 20 28 72 69 67 68 74 6d 6f 73 74 29 0a 2a 2a  t (rightmost).**
36a30 20 70 61 72 61 6d 65 74 65 72 2e 20 46 6f 72 20   parameter. For 
36a40 61 6c 6c 20 66 6f 72 6d 73 20 65 78 63 65 70 74  all forms except
36a50 20 3f 4e 4e 4e 2c 20 74 68 69 73 20 77 69 6c 6c   ?NNN, this will
36a60 20 63 6f 72 72 65 73 70 6f 6e 64 20 74 6f 20 74   correspond to t
36a70 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20  he.** number of 
36a80 75 6e 69 71 75 65 20 70 61 72 61 6d 65 74 65 72  unique parameter
36a90 73 2e 20 20 49 66 20 70 61 72 61 6d 65 74 65 72  s.  If parameter
36aa0 73 20 6f 66 20 74 68 65 20 3f 4e 4e 4e 20 66 6f  s of the ?NNN fo
36ab0 72 6d 20 61 72 65 20 75 73 65 64 2c 0a 2a 2a 20  rm are used,.** 
36ac0 74 68 65 72 65 20 6d 61 79 20 62 65 20 67 61 70  there may be gap
36ad0 73 20 69 6e 20 74 68 65 20 6c 69 73 74 2e 29 5e  s in the list.)^
36ae0 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
36af0 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62   [sqlite3_bind_b
36b00 6c 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e 64  lob|sqlite3_bind
36b10 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
36b20 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
36b30 6e 61 6d 65 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20  name()], and.** 
36b40 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61  [sqlite3_bind_pa
36b50 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 29 5d  rameter_index()]
36b60 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
36b70 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  int sqlite3_bind
36b80 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74  _parameter_count
36b90 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b  (sqlite3_stmt*);
36ba0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
36bb0 3a 20 4e 61 6d 65 20 4f 66 20 41 20 48 6f 73 74  : Name Of A Host
36bc0 20 50 61 72 61 6d 65 74 65 72 0a 2a 2a 20 4d 45   Parameter.** ME
36bd0 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
36be0 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  mt.**.** ^The sq
36bf0 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
36c00 65 74 65 72 5f 6e 61 6d 65 28 50 2c 4e 29 20 69  eter_name(P,N) i
36c10 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
36c20 0a 2a 2a 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  .** the name of 
36c30 74 68 65 20 4e 2d 74 68 20 5b 53 51 4c 20 70 61  the N-th [SQL pa
36c40 72 61 6d 65 74 65 72 5d 20 69 6e 20 74 68 65 20  rameter] in the 
36c50 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
36c60 65 6e 74 5d 20 50 2e 0a 2a 2a 20 5e 28 53 51 4c  ent] P..** ^(SQL
36c70 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74   parameters of t
36c80 68 65 20 66 6f 72 6d 20 22 3f 4e 4e 4e 22 20 6f  he form "?NNN" o
36c90 72 20 22 3a 41 41 41 22 20 6f 72 20 22 40 41 41  r ":AAA" or "@AA
36ca0 41 22 20 6f 72 20 22 24 41 41 41 22 0a 2a 2a 20  A" or "$AAA".** 
36cb0 68 61 76 65 20 61 20 6e 61 6d 65 20 77 68 69 63  have a name whic
36cc0 68 20 69 73 20 74 68 65 20 73 74 72 69 6e 67 20  h is the string 
36cd0 22 3f 4e 4e 4e 22 20 6f 72 20 22 3a 41 41 41 22  "?NNN" or ":AAA"
36ce0 20 6f 72 20 22 40 41 41 41 22 20 6f 72 20 22 24   or "@AAA" or "$
36cf0 41 41 41 22 0a 2a 2a 20 72 65 73 70 65 63 74 69  AAA".** respecti
36d00 76 65 6c 79 2e 0a 2a 2a 20 49 6e 20 6f 74 68 65  vely..** In othe
36d10 72 20 77 6f 72 64 73 2c 20 74 68 65 20 69 6e 69  r words, the ini
36d20 74 69 61 6c 20 22 3a 22 20 6f 72 20 22 24 22 20  tial ":" or "$" 
36d30 6f 72 20 22 40 22 20 6f 72 20 22 3f 22 0a 2a 2a  or "@" or "?".**
36d40 20 69 73 20 69 6e 63 6c 75 64 65 64 20 61 73 20   is included as 
36d50 70 61 72 74 20 6f 66 20 74 68 65 20 6e 61 6d 65  part of the name
36d60 2e 29 5e 0a 2a 2a 20 5e 50 61 72 61 6d 65 74 65  .)^.** ^Paramete
36d70 72 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22  rs of the form "
36d80 3f 22 20 77 69 74 68 6f 75 74 20 61 20 66 6f 6c  ?" without a fol
36d90 6c 6f 77 69 6e 67 20 69 6e 74 65 67 65 72 20 68  lowing integer h
36da0 61 76 65 20 6e 6f 20 6e 61 6d 65 0a 2a 2a 20 61  ave no name.** a
36db0 6e 64 20 61 72 65 20 72 65 66 65 72 72 65 64 20  nd are referred 
36dc0 74 6f 20 61 73 20 22 6e 61 6d 65 6c 65 73 73 22  to as "nameless"
36dd0 20 6f 72 20 22 61 6e 6f 6e 79 6d 6f 75 73 20 70   or "anonymous p
36de0 61 72 61 6d 65 74 65 72 73 22 2e 0a 2a 2a 0a 2a  arameters"..**.*
36df0 2a 20 5e 54 68 65 20 66 69 72 73 74 20 68 6f 73  * ^The first hos
36e00 74 20 70 61 72 61 6d 65 74 65 72 20 68 61 73 20  t parameter has 
36e10 61 6e 20 69 6e 64 65 78 20 6f 66 20 31 2c 20 6e  an index of 1, n
36e20 6f 74 20 30 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  ot 0..**.** ^If 
36e30 74 68 65 20 76 61 6c 75 65 20 4e 20 69 73 20 6f  the value N is o
36e40 75 74 20 6f 66 20 72 61 6e 67 65 20 6f 72 20 69  ut of range or i
36e50 66 20 74 68 65 20 4e 2d 74 68 20 70 61 72 61 6d  f the N-th param
36e60 65 74 65 72 20 69 73 0a 2a 2a 20 6e 61 6d 65 6c  eter is.** namel
36e70 65 73 73 2c 20 74 68 65 6e 20 4e 55 4c 4c 20 69  ess, then NULL i
36e80 73 20 72 65 74 75 72 6e 65 64 2e 20 20 5e 54 68  s returned.  ^Th
36e90 65 20 72 65 74 75 72 6e 65 64 20 73 74 72 69 6e  e returned strin
36ea0 67 20 69 73 0a 2a 2a 20 61 6c 77 61 79 73 20 69  g is.** always i
36eb0 6e 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67  n UTF-8 encoding
36ec0 20 65 76 65 6e 20 69 66 20 74 68 65 20 6e 61 6d   even if the nam
36ed0 65 64 20 70 61 72 61 6d 65 74 65 72 20 77 61 73  ed parameter was
36ee0 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c 6c 79 20 73  .** originally s
36ef0 70 65 63 69 66 69 65 64 20 61 73 20 55 54 46 2d  pecified as UTF-
36f00 31 36 20 69 6e 20 5b 73 71 6c 69 74 65 33 5f 70  16 in [sqlite3_p
36f10 72 65 70 61 72 65 31 36 28 29 5d 2c 0a 2a 2a 20  repare16()],.** 
36f20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
36f30 31 36 5f 76 32 28 29 5d 2c 20 6f 72 20 5b 73 71  16_v2()], or [sq
36f40 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
36f50 76 33 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  v3()]..**.** See
36f60 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f   also: [sqlite3_
36f70 62 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65  bind_blob|sqlite
36f80 33 5f 62 69 6e 64 28 29 5d 2c 0a 2a 2a 20 5b 73  3_bind()],.** [s
36f90 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
36fa0 6d 65 74 65 72 5f 63 6f 75 6e 74 28 29 5d 2c 20  meter_count()], 
36fb0 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
36fc0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
36fd0 6e 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49  ndex()]..*/.SQLI
36fe0 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61  TE_API const cha
36ff0 72 20 2a 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  r *sqlite3_bind_
37000 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28 73  parameter_name(s
37010 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e  qlite3_stmt*, in
37020 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
37030 52 45 46 3a 20 49 6e 64 65 78 20 4f 66 20 41 20  REF: Index Of A 
37040 50 61 72 61 6d 65 74 65 72 20 57 69 74 68 20 41  Parameter With A
37050 20 47 69 76 65 6e 20 4e 61 6d 65 0a 2a 2a 20 4d   Given Name.** M
37060 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
37070 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 52 65 74 75 72  tmt.**.** ^Retur
37080 6e 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 61  n the index of a
37090 6e 20 53 51 4c 20 70 61 72 61 6d 65 74 65 72 20  n SQL parameter 
370a0 67 69 76 65 6e 20 69 74 73 20 6e 61 6d 65 2e 20  given its name. 
370b0 20 5e 54 68 65 0a 2a 2a 20 69 6e 64 65 78 20 76   ^The.** index v
370c0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 69 73  alue returned is
370d0 20 73 75 69 74 61 62 6c 65 20 66 6f 72 20 75 73   suitable for us
370e0 65 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 0a  e as the second.
370f0 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  ** parameter to 
37100 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c  [sqlite3_bind_bl
37110 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69 6e 64 28  ob|sqlite3_bind(
37120 29 5d 2e 20 20 5e 41 20 7a 65 72 6f 0a 2a 2a 20  )].  ^A zero.** 
37130 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 6e  is returned if n
37140 6f 20 6d 61 74 63 68 69 6e 67 20 70 61 72 61 6d  o matching param
37150 65 74 65 72 20 69 73 20 66 6f 75 6e 64 2e 20 20  eter is found.  
37160 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 0a 2a  ^The parameter.*
37170 2a 20 6e 61 6d 65 20 6d 75 73 74 20 62 65 20 67  * name must be g
37180 69 76 65 6e 20 69 6e 20 55 54 46 2d 38 20 65 76  iven in UTF-8 ev
37190 65 6e 20 69 66 20 74 68 65 20 6f 72 69 67 69 6e  en if the origin
371a0 61 6c 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20  al statement.** 
371b0 77 61 73 20 70 72 65 70 61 72 65 64 20 66 72 6f  was prepared fro
371c0 6d 20 55 54 46 2d 31 36 20 74 65 78 74 20 75 73  m UTF-16 text us
371d0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ing [sqlite3_pre
371e0 70 61 72 65 31 36 5f 76 32 28 29 5d 20 6f 72 0a  pare16_v2()] or.
371f0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
37200 61 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 0a  are16_v3()]..**.
37210 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71  ** See also: [sq
37220 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c  lite3_bind_blob|
37230 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2c  sqlite3_bind()],
37240 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  .** [sqlite3_bin
37250 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
37260 74 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71  t()], and.** [sq
37270 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
37280 65 74 65 72 5f 6e 61 6d 65 28 29 5d 2e 0a 2a 2f  eter_name()]..*/
37290 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
372a0 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
372b0 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 73 71 6c  ameter_index(sql
372c0 69 74 65 33 5f 73 74 6d 74 2a 2c 20 63 6f 6e 73  ite3_stmt*, cons
372d0 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a  t char *zName);.
372e0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
372f0 20 52 65 73 65 74 20 41 6c 6c 20 42 69 6e 64 69   Reset All Bindi
37300 6e 67 73 20 4f 6e 20 41 20 50 72 65 70 61 72 65  ngs On A Prepare
37310 64 20 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4d  d Statement.** M
37320 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73  ETHOD: sqlite3_s
37330 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 43 6f 6e 74 72  tmt.**.** ^Contr
37340 61 72 79 20 74 6f 20 74 68 65 20 69 6e 74 75 69  ary to the intui
37350 74 69 6f 6e 20 6f 66 20 6d 61 6e 79 2c 20 5b 73  tion of many, [s
37360 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20  qlite3_reset()] 
37370 64 6f 65 73 20 6e 6f 74 20 72 65 73 65 74 0a 2a  does not reset.*
37380 2a 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62  * the [sqlite3_b
37390 69 6e 64 5f 62 6c 6f 62 20 7c 20 62 69 6e 64 69  ind_blob | bindi
373a0 6e 67 73 5d 20 6f 6e 20 61 20 5b 70 72 65 70 61  ngs] on a [prepa
373b0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 0a  red statement]..
373c0 2a 2a 20 5e 55 73 65 20 74 68 69 73 20 72 6f 75  ** ^Use this rou
373d0 74 69 6e 65 20 74 6f 20 72 65 73 65 74 20 61 6c  tine to reset al
373e0 6c 20 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72  l host parameter
373f0 73 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2f 0a 53 51  s to NULL..*/.SQ
37400 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
37410 69 74 65 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69  ite3_clear_bindi
37420 6e 67 73 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ngs(sqlite3_stmt
37430 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
37440 52 45 46 3a 20 4e 75 6d 62 65 72 20 4f 66 20 43  REF: Number Of C
37450 6f 6c 75 6d 6e 73 20 49 6e 20 41 20 52 65 73 75  olumns In A Resu
37460 6c 74 20 53 65 74 0a 2a 2a 20 4d 45 54 48 4f 44  lt Set.** METHOD
37470 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
37480 2a 0a 2a 2a 20 5e 52 65 74 75 72 6e 20 74 68 65  *.** ^Return the
37490 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
374a0 6e 73 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74  ns in the result
374b0 20 73 65 74 20 72 65 74 75 72 6e 65 64 20 62 79   set returned by
374c0 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65   the.** [prepare
374d0 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20 5e 49  d statement]. ^I
374e0 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72  f this routine r
374f0 65 74 75 72 6e 73 20 30 2c 20 74 68 61 74 20 6d  eturns 0, that m
37500 65 61 6e 73 20 74 68 65 20 0a 2a 2a 20 5b 70 72  eans the .** [pr
37510 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
37520 5d 20 72 65 74 75 72 6e 73 20 6e 6f 20 64 61 74  ] returns no dat
37530 61 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 61  a (for example a
37540 6e 20 5b 55 50 44 41 54 45 5d 29 2e 0a 2a 2a 20  n [UPDATE])..** 
37550 5e 48 6f 77 65 76 65 72 2c 20 6a 75 73 74 20 62  ^However, just b
37560 65 63 61 75 73 65 20 74 68 69 73 20 72 6f 75 74  ecause this rout
37570 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f  ine returns a po
37580 73 69 74 69 76 65 20 6e 75 6d 62 65 72 20 64 6f  sitive number do
37590 65 73 20 6e 6f 74 0a 2a 2a 20 6d 65 61 6e 20 74  es not.** mean t
375a0 68 61 74 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  hat one or more 
375b0 72 6f 77 73 20 6f 66 20 64 61 74 61 20 77 69 6c  rows of data wil
375c0 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 20  l be returned.  
375d0 5e 41 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d  ^A SELECT statem
375e0 65 6e 74 0a 2a 2a 20 77 69 6c 6c 20 61 6c 77 61  ent.** will alwa
375f0 79 73 20 68 61 76 65 20 61 20 70 6f 73 69 74 69  ys have a positi
37600 76 65 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  ve sqlite3_colum
37610 6e 5f 63 6f 75 6e 74 28 29 20 62 75 74 20 64 65  n_count() but de
37620 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 0a 2a  pending on the.*
37630 2a 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 63  * WHERE clause c
37640 6f 6e 73 74 72 61 69 6e 74 73 20 61 6e 64 20 74  onstraints and t
37650 68 65 20 74 61 62 6c 65 20 63 6f 6e 74 65 6e 74  he table content
37660 2c 20 69 74 20 6d 69 67 68 74 20 72 65 74 75 72  , it might retur
37670 6e 20 6e 6f 20 72 6f 77 73 2e 0a 2a 2a 0a 2a 2a  n no rows..**.**
37680 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69   See also: [sqli
37690 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74 28 29  te3_data_count()
376a0 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ].*/.SQLITE_API 
376b0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75  int sqlite3_colu
376c0 6d 6e 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33  mn_count(sqlite3
376d0 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a  _stmt *pStmt);..
376e0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
376f0 43 6f 6c 75 6d 6e 20 4e 61 6d 65 73 20 49 6e 20  Column Names In 
37700 41 20 52 65 73 75 6c 74 20 53 65 74 0a 2a 2a 20  A Result Set.** 
37710 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f  METHOD: sqlite3_
37720 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73  stmt.**.** ^Thes
37730 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  e routines retur
37740 6e 20 74 68 65 20 6e 61 6d 65 20 61 73 73 69 67  n the name assig
37750 6e 65 64 20 74 6f 20 61 20 70 61 72 74 69 63 75  ned to a particu
37760 6c 61 72 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 6e  lar column.** in
37770 20 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20   the result set 
37780 6f 66 20 61 20 5b 53 45 4c 45 43 54 5d 20 73 74  of a [SELECT] st
37790 61 74 65 6d 65 6e 74 2e 20 20 5e 54 68 65 20 73  atement.  ^The s
377a0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61  qlite3_column_na
377b0 6d 65 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63  me().** interfac
377c0 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  e returns a poin
377d0 74 65 72 20 74 6f 20 61 20 7a 65 72 6f 2d 74 65  ter to a zero-te
377e0 72 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73  rminated UTF-8 s
377f0 74 72 69 6e 67 0a 2a 2a 20 61 6e 64 20 73 71 6c  tring.** and sql
37800 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  ite3_column_name
37810 31 36 28 29 20 72 65 74 75 72 6e 73 20 61 20 70  16() returns a p
37820 6f 69 6e 74 65 72 20 74 6f 20 61 20 7a 65 72 6f  ointer to a zero
37830 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55  -terminated.** U
37840 54 46 2d 31 36 20 73 74 72 69 6e 67 2e 20 20 5e  TF-16 string.  ^
37850 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  The first parame
37860 74 65 72 20 69 73 20 74 68 65 20 5b 70 72 65 70  ter is the [prep
37870 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 0a  ared statement].
37880 2a 2a 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e  ** that implemen
37890 74 73 20 74 68 65 20 5b 53 45 4c 45 43 54 5d 20  ts the [SELECT] 
378a0 73 74 61 74 65 6d 65 6e 74 2e 20 5e 54 68 65 20  statement. ^The 
378b0 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
378c0 20 69 73 20 74 68 65 0a 2a 2a 20 63 6f 6c 75 6d   is the.** colum
378d0 6e 20 6e 75 6d 62 65 72 2e 20 20 5e 54 68 65 20  n number.  ^The 
378e0 6c 65 66 74 6d 6f 73 74 20 63 6f 6c 75 6d 6e 20  leftmost column 
378f0 69 73 20 6e 75 6d 62 65 72 20 30 2e 0a 2a 2a 0a  is number 0..**.
37900 2a 2a 20 5e 54 68 65 20 72 65 74 75 72 6e 65 64  ** ^The returned
37910 20 73 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20   string pointer 
37920 69 73 20 76 61 6c 69 64 20 75 6e 74 69 6c 20 65  is valid until e
37930 69 74 68 65 72 20 74 68 65 20 5b 70 72 65 70 61  ither the [prepa
37940 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 0a 2a  red statement].*
37950 2a 20 69 73 20 64 65 73 74 72 6f 79 65 64 20 62  * is destroyed b
37960 79 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  y [sqlite3_final
37970 69 7a 65 28 29 5d 20 6f 72 20 75 6e 74 69 6c 20  ize()] or until 
37980 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73  the statement is
37990 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 2a   automatically.*
379a0 2a 20 72 65 70 72 65 70 61 72 65 64 20 62 79 20  * reprepared by 
379b0 74 68 65 20 66 69 72 73 74 20 63 61 6c 6c 20 74  the first call t
379c0 6f 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  o [sqlite3_step(
379d0 29 5d 20 66 6f 72 20 61 20 70 61 72 74 69 63 75  )] for a particu
379e0 6c 61 72 20 72 75 6e 0a 2a 2a 20 6f 72 20 75 6e  lar run.** or un
379f0 74 69 6c 20 74 68 65 20 6e 65 78 74 20 63 61 6c  til the next cal
37a00 6c 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  l to.** sqlite3_
37a10 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 20 6f 72  column_name() or
37a20 20 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f   sqlite3_column_
37a30 6e 61 6d 65 31 36 28 29 20 6f 6e 20 74 68 65 20  name16() on the 
37a40 73 61 6d 65 20 63 6f 6c 75 6d 6e 2e 0a 2a 2a 0a  same column..**.
37a50 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6d  ** ^If sqlite3_m
37a60 61 6c 6c 6f 63 28 29 20 66 61 69 6c 73 20 64 75  alloc() fails du
37a70 72 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73  ring the process
37a80 69 6e 67 20 6f 66 20 65 69 74 68 65 72 20 72 6f  ing of either ro
37a90 75 74 69 6e 65 0a 2a 2a 20 28 66 6f 72 20 65 78  utine.** (for ex
37aa0 61 6d 70 6c 65 20 64 75 72 69 6e 67 20 61 20 63  ample during a c
37ab0 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 55  onversion from U
37ac0 54 46 2d 38 20 74 6f 20 55 54 46 2d 31 36 29 20  TF-8 to UTF-16) 
37ad0 74 68 65 6e 20 61 0a 2a 2a 20 4e 55 4c 4c 20 70  then a.** NULL p
37ae0 6f 69 6e 74 65 72 20 69 73 20 72 65 74 75 72 6e  ointer is return
37af0 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6e  ed..**.** ^The n
37b00 61 6d 65 20 6f 66 20 61 20 72 65 73 75 6c 74 20  ame of a result 
37b10 63 6f 6c 75 6d 6e 20 69 73 20 74 68 65 20 76 61  column is the va
37b20 6c 75 65 20 6f 66 20 74 68 65 20 22 41 53 22 20  lue of the "AS" 
37b30 63 6c 61 75 73 65 20 66 6f 72 0a 2a 2a 20 74 68  clause for.** th
37b40 61 74 20 63 6f 6c 75 6d 6e 2c 20 69 66 20 74 68  at column, if th
37b50 65 72 65 20 69 73 20 61 6e 20 41 53 20 63 6c 61  ere is an AS cla
37b60 75 73 65 2e 20 20 49 66 20 74 68 65 72 65 20 69  use.  If there i
37b70 73 20 6e 6f 20 41 53 20 63 6c 61 75 73 65 0a 2a  s no AS clause.*
37b80 2a 20 74 68 65 6e 20 74 68 65 20 6e 61 6d 65 20  * then the name 
37b90 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 73  of the column is
37ba0 20 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e 64   unspecified and
37bb0 20 6d 61 79 20 63 68 61 6e 67 65 20 66 72 6f 6d   may change from
37bc0 0a 2a 2a 20 6f 6e 65 20 72 65 6c 65 61 73 65 20  .** one release 
37bd0 6f 66 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65  of SQLite to the
37be0 20 6e 65 78 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45   next..*/.SQLITE
37bf0 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
37c00 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
37c10 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  name(sqlite3_stm
37c20 74 2a 2c 20 69 6e 74 20 4e 29 3b 0a 53 51 4c 49  t*, int N);.SQLI
37c30 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 76 6f 69  TE_API const voi
37c40 64 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d  d *sqlite3_colum
37c50 6e 5f 6e 61 6d 65 31 36 28 73 71 6c 69 74 65 33  n_name16(sqlite3
37c60 5f 73 74 6d 74 2a 2c 20 69 6e 74 20 4e 29 3b 0a  _stmt*, int N);.
37c70 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
37c80 20 53 6f 75 72 63 65 20 4f 66 20 44 61 74 61 20   Source Of Data 
37c90 49 6e 20 41 20 51 75 65 72 79 20 52 65 73 75 6c  In A Query Resul
37ca0 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  t.** METHOD: sql
37cb0 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
37cc0 5e 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20  ^These routines 
37cd0 70 72 6f 76 69 64 65 20 61 20 6d 65 61 6e 73 20  provide a means 
37ce0 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
37cf0 20 64 61 74 61 62 61 73 65 2c 20 74 61 62 6c 65   database, table
37d00 2c 20 61 6e 64 0a 2a 2a 20 74 61 62 6c 65 20 63  , and.** table c
37d10 6f 6c 75 6d 6e 20 74 68 61 74 20 69 73 20 74 68  olumn that is th
37d20 65 20 6f 72 69 67 69 6e 20 6f 66 20 61 20 70 61  e origin of a pa
37d30 72 74 69 63 75 6c 61 72 20 72 65 73 75 6c 74 20  rticular result 
37d40 63 6f 6c 75 6d 6e 20 69 6e 0a 2a 2a 20 5b 53 45  column in.** [SE
37d50 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 2e  LECT] statement.
37d60 0a 2a 2a 20 5e 54 68 65 20 6e 61 6d 65 20 6f 66  .** ^The name of
37d70 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6f 72   the database or
37d80 20 74 61 62 6c 65 20 6f 72 20 63 6f 6c 75 6d 6e   table or column
37d90 20 63 61 6e 20 62 65 20 72 65 74 75 72 6e 65 64   can be returned
37da0 20 61 73 0a 2a 2a 20 65 69 74 68 65 72 20 61 20   as.** either a 
37db0 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 20  UTF-8 or UTF-16 
37dc0 73 74 72 69 6e 67 2e 20 20 5e 54 68 65 20 5f 64  string.  ^The _d
37dd0 61 74 61 62 61 73 65 5f 20 72 6f 75 74 69 6e 65  atabase_ routine
37de0 73 20 72 65 74 75 72 6e 0a 2a 2a 20 74 68 65 20  s return.** the 
37df0 64 61 74 61 62 61 73 65 20 6e 61 6d 65 2c 20 74  database name, t
37e00 68 65 20 5f 74 61 62 6c 65 5f 20 72 6f 75 74 69  he _table_ routi
37e10 6e 65 73 20 72 65 74 75 72 6e 20 74 68 65 20 74  nes return the t
37e20 61 62 6c 65 20 6e 61 6d 65 2c 20 61 6e 64 0a 2a  able name, and.*
37e30 2a 20 74 68 65 20 6f 72 69 67 69 6e 5f 20 72 6f  * the origin_ ro
37e40 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 74 68  utines return th
37e50 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2e 0a 2a  e column name..*
37e60 2a 20 5e 54 68 65 20 72 65 74 75 72 6e 65 64 20  * ^The returned 
37e70 73 74 72 69 6e 67 20 69 73 20 76 61 6c 69 64 20  string is valid 
37e80 75 6e 74 69 6c 20 74 68 65 20 5b 70 72 65 70 61  until the [prepa
37e90 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69  red statement] i
37ea0 73 20 64 65 73 74 72 6f 79 65 64 0a 2a 2a 20 75  s destroyed.** u
37eb0 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 69  sing [sqlite3_fi
37ec0 6e 61 6c 69 7a 65 28 29 5d 20 6f 72 20 75 6e 74  nalize()] or unt
37ed0 69 6c 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  il the statement
37ee0 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   is automaticall
37ef0 79 0a 2a 2a 20 72 65 70 72 65 70 61 72 65 64 20  y.** reprepared 
37f00 62 79 20 74 68 65 20 66 69 72 73 74 20 63 61 6c  by the first cal
37f10 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 73 74  l to [sqlite3_st
37f20 65 70 28 29 5d 20 66 6f 72 20 61 20 70 61 72 74  ep()] for a part
37f30 69 63 75 6c 61 72 20 72 75 6e 0a 2a 2a 20 6f 72  icular run.** or
37f40 20 75 6e 74 69 6c 20 74 68 65 20 73 61 6d 65 20   until the same 
37f50 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 72  information is r
37f60 65 71 75 65 73 74 65 64 0a 2a 2a 20 61 67 61 69  equested.** agai
37f70 6e 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e 74  n in a different
37f80 20 65 6e 63 6f 64 69 6e 67 2e 0a 2a 2a 0a 2a 2a   encoding..**.**
37f90 20 5e 54 68 65 20 6e 61 6d 65 73 20 72 65 74 75   ^The names retu
37fa0 72 6e 65 64 20 61 72 65 20 74 68 65 20 6f 72 69  rned are the ori
37fb0 67 69 6e 61 6c 20 75 6e 2d 61 6c 69 61 73 65 64  ginal un-aliased
37fc0 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 0a 2a 2a   names of the.**
37fd0 20 64 61 74 61 62 61 73 65 2c 20 74 61 62 6c 65   database, table
37fe0 2c 20 61 6e 64 20 63 6f 6c 75 6d 6e 2e 0a 2a 2a  , and column..**
37ff0 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
38000 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 73 65  rgument to these
38010 20 69 6e 74 65 72 66 61 63 65 73 20 69 73 20 61   interfaces is a
38020 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
38030 6d 65 6e 74 5d 2e 0a 2a 2a 20 5e 54 68 65 73 65  ment]..** ^These
38040 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75 72   functions retur
38050 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  n information ab
38060 6f 75 74 20 74 68 65 20 4e 74 68 20 72 65 73 75  out the Nth resu
38070 6c 74 20 63 6f 6c 75 6d 6e 20 72 65 74 75 72 6e  lt column return
38080 65 64 20 62 79 0a 2a 2a 20 74 68 65 20 73 74 61  ed by.** the sta
38090 74 65 6d 65 6e 74 2c 20 77 68 65 72 65 20 4e 20  tement, where N 
380a0 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 66 75  is the second fu
380b0 6e 63 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 2e  nction argument.
380c0 0a 2a 2a 20 5e 54 68 65 20 6c 65 66 74 2d 6d 6f  .** ^The left-mo
380d0 73 74 20 63 6f 6c 75 6d 6e 20 69 73 20 63 6f 6c  st column is col
380e0 75 6d 6e 20 30 20 66 6f 72 20 74 68 65 73 65 20  umn 0 for these 
380f0 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20  routines..**.** 
38100 5e 49 66 20 74 68 65 20 4e 74 68 20 63 6f 6c 75  ^If the Nth colu
38110 6d 6e 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  mn returned by t
38120 68 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  he statement is 
38130 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 72  an expression or
38140 0a 2a 2a 20 73 75 62 71 75 65 72 79 20 61 6e 64  .** subquery and
38150 20 69 73 20 6e 6f 74 20 61 20 63 6f 6c 75 6d 6e   is not a column
38160 20 76 61 6c 75 65 2c 20 74 68 65 6e 20 61 6c 6c   value, then all
38170 20 6f 66 20 74 68 65 73 65 20 66 75 6e 63 74 69   of these functi
38180 6f 6e 73 20 72 65 74 75 72 6e 0a 2a 2a 20 4e 55  ons return.** NU
38190 4c 4c 2e 20 20 5e 54 68 65 73 65 20 72 6f 75 74  LL.  ^These rout
381a0 69 6e 65 20 6d 69 67 68 74 20 61 6c 73 6f 20 72  ine might also r
381b0 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20 61 20  eturn NULL if a 
381c0 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
381d0 6e 20 65 72 72 6f 72 0a 2a 2a 20 6f 63 63 75 72  n error.** occur
381e0 73 2e 20 20 5e 4f 74 68 65 72 77 69 73 65 2c 20  s.  ^Otherwise, 
381f0 74 68 65 79 20 72 65 74 75 72 6e 20 74 68 65 20  they return the 
38200 6e 61 6d 65 20 6f 66 20 74 68 65 20 61 74 74 61  name of the atta
38210 63 68 65 64 20 64 61 74 61 62 61 73 65 2c 20 74  ched database, t
38220 61 62 6c 65 2c 0a 2a 2a 20 6f 72 20 63 6f 6c 75  able,.** or colu
38230 6d 6e 20 74 68 61 74 20 71 75 65 72 79 20 72 65  mn that query re
38240 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 77 61 73 20  sult column was 
38250 65 78 74 72 61 63 74 65 64 20 66 72 6f 6d 2e 0a  extracted from..
38260 2a 2a 0a 2a 2a 20 5e 41 73 20 77 69 74 68 20 61  **.** ^As with a
38270 6c 6c 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20  ll other SQLite 
38280 41 50 49 73 2c 20 74 68 6f 73 65 20 77 68 6f 73  APIs, those whos
38290 65 20 6e 61 6d 65 73 20 65 6e 64 20 77 69 74 68  e names end with
382a0 20 22 31 36 22 20 72 65 74 75 72 6e 0a 2a 2a 20   "16" return.** 
382b0 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 73  UTF-16 encoded s
382c0 74 72 69 6e 67 73 20 61 6e 64 20 74 68 65 20 6f  trings and the o
382d0 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 72  ther functions r
382e0 65 74 75 72 6e 20 55 54 46 2d 38 2e 0a 2a 2a 0a  eturn UTF-8..**.
382f0 2a 2a 20 5e 54 68 65 73 65 20 41 50 49 73 20 61  ** ^These APIs a
38300 72 65 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  re only availabl
38310 65 20 69 66 20 74 68 65 20 6c 69 62 72 61 72 79  e if the library
38320 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69   was compiled wi
38330 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  th the.** [SQLIT
38340 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f  E_ENABLE_COLUMN_
38350 4d 45 54 41 44 41 54 41 5d 20 43 2d 70 72 65 70  METADATA] C-prep
38360 72 6f 63 65 73 73 6f 72 20 73 79 6d 62 6f 6c 2e  rocessor symbol.
38370 0a 2a 2a 0a 2a 2a 20 49 66 20 74 77 6f 20 6f 72  .**.** If two or
38380 20 6d 6f 72 65 20 74 68 72 65 61 64 73 20 63 61   more threads ca
38390 6c 6c 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  ll one or more o
383a0 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  f these routines
383b0 20 61 67 61 69 6e 73 74 20 74 68 65 20 73 61 6d   against the sam
383c0 65 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74  e.** prepared st
383d0 61 74 65 6d 65 6e 74 20 61 6e 64 20 63 6f 6c 75  atement and colu
383e0 6d 6e 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  mn at the same t
383f0 69 6d 65 20 74 68 65 6e 20 74 68 65 20 72 65 73  ime then the res
38400 75 6c 74 73 20 61 72 65 0a 2a 2a 20 75 6e 64 65  ults are.** unde
38410 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  fined..**.** If 
38420 74 77 6f 20 6f 72 20 6d 6f 72 65 20 74 68 72 65  two or more thre
38430 61 64 73 20 63 61 6c 6c 20 6f 6e 65 20 6f 72 20  ads call one or 
38440 6d 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  more.** [sqlite3
38450 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
38460 5f 6e 61 6d 65 20 7c 20 63 6f 6c 75 6d 6e 20 6d  _name | column m
38470 65 74 61 64 61 74 61 20 69 6e 74 65 72 66 61 63  etadata interfac
38480 65 73 5d 0a 2a 2a 20 66 6f 72 20 74 68 65 20 73  es].** for the s
38490 61 6d 65 20 5b 70 72 65 70 61 72 65 64 20 73 74  ame [prepared st
384a0 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20 72 65 73  atement] and res
384b0 75 6c 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 61 74  ult column.** at
384c0 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 20 74   the same time t
384d0 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 73 20  hen the results 
384e0 61 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a  are undefined..*
384f0 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  /.SQLITE_API con
38500 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
38510 5f 63 6f 6c 75 6d 6e 5f 64 61 74 61 62 61 73 65  _column_database
38520 5f 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74  _name(sqlite3_st
38530 6d 74 2a 2c 69 6e 74 29 3b 0a 53 51 4c 49 54 45  mt*,int);.SQLITE
38540 5f 41 50 49 20 63 6f 6e 73 74 20 76 6f 69 64 20  _API const void 
38550 2a 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  *sqlite3_column_
38560 64 61 74 61 62 61 73 65 5f 6e 61 6d 65 31 36 28  database_name16(
38570 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 69 6e  sqlite3_stmt*,in
38580 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63  t);.SQLITE_API c
38590 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74  onst char *sqlit
385a0 65 33 5f 63 6f 6c 75 6d 6e 5