System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 72f42f91f4123da239d0aa6b7fddb281f2e53c88:


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 32 2e 30 2e 20 20  ersion 3.22.0.  
00b0: 42 79 20 63 6f 6d 62 69 6e 69 6e 67 20 61 6c 6c  By combining all
00c0: 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20   the individual 
00d0: 43 20 63 6f 64 65 20 66 69 6c 65 73 20 69 6e 74  C code files int
00e0: 6f 20 74 68 69 73 0a 2a 2a 20 73 69 6e 67 6c 65  o this.** single
00f0: 20 6c 61 72 67 65 20 66 69 6c 65 2c 20 74 68 65   large file, the
0100: 20 65 6e 74 69 72 65 20 63 6f 64 65 20 63 61 6e   entire code can
0110: 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 61 73 20   be compiled as 
0120: 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 6c 61  a single transla
0130: 74 69 6f 6e 0a 2a 2a 20 75 6e 69 74 2e 20 20 54  tion.** unit.  T
0140: 68 69 73 20 61 6c 6c 6f 77 73 20 6d 61 6e 79 20  his allows many 
0150: 63 6f 6d 70 69 6c 65 72 73 20 74 6f 20 64 6f 20  compilers to do 
0160: 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 74 68  optimizations th
0170: 61 74 20 77 6f 75 6c 64 20 6e 6f 74 20 62 65 0a  at would not be.
0180: 2a 2a 20 70 6f 73 73 69 62 6c 65 20 69 66 20 74  ** possible if t
0190: 68 65 20 66 69 6c 65 73 20 77 65 72 65 20 63 6f  he files were co
01a0: 6d 70 69 6c 65 64 20 73 65 70 61 72 61 74 65 6c  mpiled separatel
01b0: 79 2e 20 20 50 65 72 66 6f 72 6d 61 6e 63 65 20  y.  Performance 
01c0: 69 6d 70 72 6f 76 65 6d 65 6e 74 73 0a 2a 2a 20  improvements.** 
01d0: 6f 66 20 35 25 20 6f 72 20 6d 6f 72 65 20 61 72  of 5% or more ar
01e0: 65 20 63 6f 6d 6d 6f 6e 6c 79 20 73 65 65 6e 20  e commonly seen 
01f0: 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63  when SQLite is c
0200: 6f 6d 70 69 6c 65 64 20 61 73 20 61 20 73 69 6e  ompiled as a sin
0210: 67 6c 65 0a 2a 2a 20 74 72 61 6e 73 6c 61 74 69  gle.** translati
0220: 6f 6e 20 75 6e 69 74 2e 0a 2a 2a 0a 2a 2a 20 54  on unit..**.** T
0230: 68 69 73 20 66 69 6c 65 20 69 73 20 61 6c 6c 20  his file is all 
0240: 79 6f 75 20 6e 65 65 64 20 74 6f 20 63 6f 6d 70  you need to comp
0250: 69 6c 65 20 53 51 4c 69 74 65 2e 20 20 54 6f 20  ile SQLite.  To 
0260: 75 73 65 20 53 51 4c 69 74 65 20 69 6e 20 6f 74  use SQLite in ot
0270: 68 65 72 0a 2a 2a 20 70 72 6f 67 72 61 6d 73 2c  her.** programs,
0280: 20 79 6f 75 20 6e 65 65 64 20 74 68 69 73 20 66   you need this f
0290: 69 6c 65 20 61 6e 64 20 74 68 65 20 22 73 71 6c  ile and the "sql
02a0: 69 74 65 33 2e 68 22 20 68 65 61 64 65 72 20 66  ite3.h" header f
02b0: 69 6c 65 20 74 68 61 74 20 64 65 66 69 6e 65 73  ile that defines
02c0: 0a 2a 2a 20 74 68 65 20 70 72 6f 67 72 61 6d 6d  .** the programm
02d0: 69 6e 67 20 69 6e 74 65 72 66 61 63 65 20 74 6f  ing interface to
02e0: 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
02f0: 61 72 79 2e 20 20 28 49 66 20 79 6f 75 20 64 6f  ary.  (If you do
0300: 20 6e 6f 74 20 68 61 76 65 0a 2a 2a 20 74 68 65   not have.** the
0310: 20 22 73 71 6c 69 74 65 33 2e 68 22 20 68 65 61   "sqlite3.h" hea
0320: 64 65 72 20 66 69 6c 65 20 61 74 20 68 61 6e 64  der file at hand
0330: 2c 20 79 6f 75 20 77 69 6c 6c 20 66 69 6e 64 20  , you will find 
0340: 61 20 63 6f 70 79 20 65 6d 62 65 64 64 65 64 20  a copy embedded 
0350: 77 69 74 68 69 6e 0a 2a 2a 20 74 68 65 20 74 65  within.** the te
0360: 78 74 20 6f 66 20 74 68 69 73 20 66 69 6c 65 2e  xt of this file.
0370: 20 20 53 65 61 72 63 68 20 66 6f 72 20 22 42 65    Search for "Be
0380: 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65 33  gin file sqlite3
0390: 2e 68 22 20 74 6f 20 66 69 6e 64 20 74 68 65 20  .h" to find the 
03a0: 73 74 61 72 74 0a 2a 2a 20 6f 66 20 74 68 65 20  start.** of the 
03b0: 65 6d 62 65 64 64 65 64 20 73 71 6c 69 74 65 33  embedded sqlite3
03c0: 2e 68 20 68 65 61 64 65 72 20 66 69 6c 65 2e 29  .h header file.)
03d0: 20 41 64 64 69 74 69 6f 6e 61 6c 20 63 6f 64 65   Additional code
03e0: 20 66 69 6c 65 73 20 6d 61 79 20 62 65 20 6e 65   files may be ne
03f0: 65 64 65 64 0a 2a 2a 20 69 66 20 79 6f 75 20 77  eded.** if you w
0400: 61 6e 74 20 61 20 77 72 61 70 70 65 72 20 74 6f  ant a wrapper to
0410: 20 69 6e 74 65 72 66 61 63 65 20 53 51 4c 69 74   interface SQLit
0420: 65 20 77 69 74 68 20 79 6f 75 72 20 63 68 6f 69  e with your choi
0430: 63 65 20 6f 66 20 70 72 6f 67 72 61 6d 6d 69 6e  ce of programmin
0440: 67 0a 2a 2a 20 6c 61 6e 67 75 61 67 65 2e 20 54  g.** language. T
0450: 68 65 20 63 6f 64 65 20 66 6f 72 20 74 68 65 20  he code for the 
0460: 22 73 71 6c 69 74 65 33 22 20 63 6f 6d 6d 61 6e  "sqlite3" comman
0470: 64 2d 6c 69 6e 65 20 73 68 65 6c 6c 20 69 73 20  d-line shell is 
0480: 61 6c 73 6f 20 69 6e 20 61 0a 2a 2a 20 73 65 70  also in a.** sep
0490: 61 72 61 74 65 20 66 69 6c 65 2e 20 54 68 69 73  arate file. This
04a0: 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 6f   file contains o
04b0: 6e 6c 79 20 63 6f 64 65 20 66 6f 72 20 74 68 65  nly code for the
04c0: 20 63 6f 72 65 20 53 51 4c 69 74 65 20 6c 69 62   core SQLite lib
04d0: 72 61 72 79 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  rary..*/.#define
04e0: 20 53 51 4c 49 54 45 5f 43 4f 52 45 20 31 0a 23   SQLITE_CORE 1.#
04f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4d  define SQLITE_AM
0500: 41 4c 47 41 4d 41 54 49 4f 4e 20 31 0a 23 69 66  ALGAMATION 1.#if
0510: 6e 64 65 66 20 53 51 4c 49 54 45 5f 50 52 49 56  ndef SQLITE_PRIV
0520: 41 54 45 0a 23 20 64 65 66 69 6e 65 20 53 51 4c  ATE.# define SQL
0530: 49 54 45 5f 50 52 49 56 41 54 45 20 73 74 61 74  ITE_PRIVATE stat
0540: 69 63 0a 23 65 6e 64 69 66 0a 2f 2a 2a 2a 2a 2a  ic.#endif./*****
0550: 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20  ********* Begin 
0560: 66 69 6c 65 20 63 74 69 6d 65 2e 63 20 2a 2a 2a  file ctime.c ***
0570: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0580: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0590: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20  ********/./*.** 
05a0: 32 30 31 30 20 46 65 62 72 75 61 72 79 20 32 33  2010 February 23
05b0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
05c0: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
05d0: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
05e0: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
05f0: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
0600: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0610: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
0620: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
0630: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
0640: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
0650: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
0660: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
0670: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
0680: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
0690: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
06a0: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
06b0: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
06c0: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
06d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
06e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
06f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0700: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a  ***************.
0710: 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c 65 20  **.** This file 
0720: 69 6d 70 6c 65 6d 65 6e 74 73 20 72 6f 75 74 69  implements routi
0730: 6e 65 73 20 75 73 65 64 20 74 6f 20 72 65 70 6f  nes used to repo
0740: 72 74 20 77 68 61 74 20 63 6f 6d 70 69 6c 65 2d  rt what compile-
0750: 74 69 6d 65 20 6f 70 74 69 6f 6e 73 0a 2a 2a 20  time options.** 
0760: 53 51 4c 69 74 65 20 77 61 73 20 62 75 69 6c 74  SQLite was built
0770: 20 77 69 74 68 2e 0a 2a 2f 0a 0a 23 69 66 6e 64   with..*/..#ifnd
0780: 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  ef SQLITE_OMIT_C
0790: 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44 49 41  OMPILEOPTION_DIA
07a0: 47 53 0a 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75 64  GS../*.** Includ
07b0: 65 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74  e the configurat
07c0: 69 6f 6e 20 68 65 61 64 65 72 20 6f 75 74 70 75  ion header outpu
07d0: 74 20 62 79 20 27 63 6f 6e 66 69 67 75 72 65 27  t by 'configure'
07e0: 20 69 66 20 77 65 27 72 65 20 75 73 69 6e 67 20   if we're using 
07f0: 74 68 65 0a 2a 2a 20 61 75 74 6f 63 6f 6e 66 2d  the.** autoconf-
0800: 62 61 73 65 64 20 62 75 69 6c 64 0a 2a 2f 0a 23  based build.*/.#
0810: 69 66 20 64 65 66 69 6e 65 64 28 5f 48 41 56 45  if defined(_HAVE
0820: 5f 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  _SQLITE_CONFIG_H
0830: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 53 51  ) && !defined(SQ
0840: 4c 49 54 45 43 4f 4e 46 49 47 5f 48 29 0a 23 69  LITECONFIG_H).#i
0850: 6e 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68  nclude "config.h
0860: 22 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ".#define SQLITE
0870: 43 4f 4e 46 49 47 5f 48 20 31 0a 23 65 6e 64 69  CONFIG_H 1.#endi
0880: 66 0a 0a 2f 2a 20 54 68 65 73 65 20 6d 61 63 72  f../* These macr
0890: 6f 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20  os are provided 
08a0: 74 6f 20 22 73 74 72 69 6e 67 69 66 79 22 20 74  to "stringify" t
08b0: 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
08c0: 64 65 66 69 6e 65 0a 2a 2a 20 66 6f 72 20 74 68  define.** for th
08d0: 6f 73 65 20 6f 70 74 69 6f 6e 73 20 69 6e 20 77  ose options in w
08e0: 68 69 63 68 20 74 68 65 20 76 61 6c 75 65 20 69  hich the value i
08f0: 73 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 20 2a 2f  s meaningful. */
0900: 0a 23 64 65 66 69 6e 65 20 43 54 49 4d 45 4f 50  .#define CTIMEOP
0910: 54 5f 56 41 4c 5f 28 6f 70 74 29 20 23 6f 70 74  T_VAL_(opt) #opt
0920: 0a 23 64 65 66 69 6e 65 20 43 54 49 4d 45 4f 50  .#define CTIMEOP
0930: 54 5f 56 41 4c 28 6f 70 74 29 20 43 54 49 4d 45  T_VAL(opt) CTIME
0940: 4f 50 54 5f 56 41 4c 5f 28 6f 70 74 29 0a 0a 2f  OPT_VAL_(opt)../
0950: 2a 0a 2a 2a 20 41 6e 20 61 72 72 61 79 20 6f 66  *.** An array of
0960: 20 6e 61 6d 65 73 20 6f 66 20 61 6c 6c 20 63 6f   names of all co
0970: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
0980: 6e 73 2e 20 20 54 68 69 73 20 61 72 72 61 79 20  ns.  This array 
0990: 73 68 6f 75 6c 64 20 0a 2a 2a 20 62 65 20 73 6f  should .** be so
09a0: 72 74 65 64 20 41 2d 5a 2e 0a 2a 2a 0a 2a 2a 20  rted A-Z..**.** 
09b0: 54 68 69 73 20 61 72 72 61 79 20 6c 6f 6f 6b 73  This array looks
09c0: 20 6c 61 72 67 65 2c 20 62 75 74 20 69 6e 20 61   large, but in a
09d0: 20 74 79 70 69 63 61 6c 20 69 6e 73 74 61 6c 6c   typical install
09e0: 61 74 69 6f 6e 20 61 63 74 75 61 6c 6c 79 20 75  ation actually u
09f0: 73 65 73 0a 2a 2a 20 6f 6e 6c 79 20 61 20 68 61  ses.** only a ha
0a00: 6e 64 66 75 6c 20 6f 66 20 63 6f 6d 70 69 6c 65  ndful of compile
0a10: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2c 20 73  -time options, s
0a20: 6f 20 6d 6f 73 74 20 74 69 6d 65 73 20 74 68 69  o most times thi
0a30: 73 20 61 72 72 61 79 20 69 73 20 75 73 75 61 6c  s array is usual
0a40: 6c 79 0a 2a 2a 20 72 61 74 68 65 72 20 73 68 6f  ly.** rather sho
0a50: 72 74 20 61 6e 64 20 75 73 65 73 20 6c 69 74 74  rt and uses litt
0a60: 6c 65 20 6d 65 6d 6f 72 79 20 73 70 61 63 65 2e  le memory space.
0a70: 0a 2a 2f 0a 73 74 61 74 69 63 20 63 6f 6e 73 74  .*/.static const
0a80: 20 63 68 61 72 20 2a 20 63 6f 6e 73 74 20 73 71   char * const sq
0a90: 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70  lite3azCompileOp
0aa0: 74 5b 5d 20 3d 20 7b 0a 0a 2f 2a 20 0a 2a 2a 20  t[] = {../* .** 
0ab0: 42 45 47 49 4e 20 43 4f 44 45 20 47 45 4e 45 52  BEGIN CODE GENER
0ac0: 41 54 45 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63  ATED BY tool/mkc
0ad0: 74 69 6d 65 2e 74 63 6c 20 0a 2a 2f 0a 23 69 66  time.tcl .*/.#if
0ae0: 20 53 51 4c 49 54 45 5f 33 32 42 49 54 5f 52 4f   SQLITE_32BIT_RO
0af0: 57 49 44 0a 20 20 22 33 32 42 49 54 5f 52 4f 57  WID.  "32BIT_ROW
0b00: 49 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ID",.#endif.#if 
0b10: 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c  SQLITE_4_BYTE_AL
0b20: 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 0a 20 20 22  IGNED_MALLOC.  "
0b30: 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d  4_BYTE_ALIGNED_M
0b40: 41 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23  ALLOC",.#endif.#
0b50: 69 66 20 53 51 4c 49 54 45 5f 36 34 42 49 54 5f  if SQLITE_64BIT_
0b60: 53 54 41 54 53 0a 20 20 22 36 34 42 49 54 5f 53  STATS.  "64BIT_S
0b70: 54 41 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TATS",.#endif.#i
0b80: 66 20 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43  f SQLITE_ALLOW_C
0b90: 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43  OVERING_INDEX_SC
0ba0: 41 4e 0a 20 20 22 41 4c 4c 4f 57 5f 43 4f 56 45  AN.  "ALLOW_COVE
0bb0: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 22  RING_INDEX_SCAN"
0bc0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
0bd0: 49 54 45 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55  ITE_ALLOW_URI_AU
0be0: 54 48 4f 52 49 54 59 0a 20 20 22 41 4c 4c 4f 57  THORITY.  "ALLOW
0bf0: 5f 55 52 49 5f 41 55 54 48 4f 52 49 54 59 22 2c  _URI_AUTHORITY",
0c00: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
0c10: 51 4c 49 54 45 5f 42 49 54 4d 41 53 4b 5f 54 59  QLITE_BITMASK_TY
0c20: 50 45 0a 20 20 22 42 49 54 4d 41 53 4b 5f 54 59  PE.  "BITMASK_TY
0c30: 50 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  PE=" CTIMEOPT_VA
0c40: 4c 28 53 51 4c 49 54 45 5f 42 49 54 4d 41 53 4b  L(SQLITE_BITMASK
0c50: 5f 54 59 50 45 29 2c 0a 23 65 6e 64 69 66 0a 23  _TYPE),.#endif.#
0c60: 69 66 20 53 51 4c 49 54 45 5f 42 55 47 5f 43 4f  if SQLITE_BUG_CO
0c70: 4d 50 41 54 49 42 4c 45 5f 32 30 31 36 30 38 31  MPATIBLE_2016081
0c80: 39 0a 20 20 22 42 55 47 5f 43 4f 4d 50 41 54 49  9.  "BUG_COMPATI
0c90: 42 4c 45 5f 32 30 31 36 30 38 31 39 22 2c 0a 23  BLE_20160819",.#
0ca0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
0cb0: 5f 43 41 53 45 5f 53 45 4e 53 49 54 49 56 45 5f  _CASE_SENSITIVE_
0cc0: 4c 49 4b 45 0a 20 20 22 43 41 53 45 5f 53 45 4e  LIKE.  "CASE_SEN
0cd0: 53 49 54 49 56 45 5f 4c 49 4b 45 22 2c 0a 23 65  SITIVE_LIKE",.#e
0ce0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
0cf0: 43 48 45 43 4b 5f 50 41 47 45 53 0a 20 20 22 43  CHECK_PAGES.  "C
0d00: 48 45 43 4b 5f 50 41 47 45 53 22 2c 0a 23 65 6e  HECK_PAGES",.#en
0d10: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
0d20: 5f 5f 63 6c 61 6e 67 5f 5f 29 20 26 26 20 64 65  __clang__) && de
0d30: 66 69 6e 65 64 28 5f 5f 63 6c 61 6e 67 5f 6d 61  fined(__clang_ma
0d40: 6a 6f 72 5f 5f 29 0a 20 20 22 43 4f 4d 50 49 4c  jor__).  "COMPIL
0d50: 45 52 3d 63 6c 61 6e 67 2d 22 20 43 54 49 4d 45  ER=clang-" CTIME
0d60: 4f 50 54 5f 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f  OPT_VAL(__clang_
0d70: 6d 61 6a 6f 72 5f 5f 29 20 22 2e 22 0a 20 20 20  major__) ".".   
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 5f 5f   CTIMEOPT_VAL(__
0da0: 63 6c 61 6e 67 5f 6d 69 6e 6f 72 5f 5f 29 20 22  clang_minor__) "
0db0: 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  .".             
0dc0: 20 20 20 20 20 20 20 43 54 49 4d 45 4f 50 54 5f         CTIMEOPT_
0dd0: 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f 70 61 74 63  VAL(__clang_patc
0de0: 68 6c 65 76 65 6c 5f 5f 29 2c 0a 23 65 6c 69 66  hlevel__),.#elif
0df0: 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45   defined(_MSC_VE
0e00: 52 29 0a 20 20 22 43 4f 4d 50 49 4c 45 52 3d 6d  R).  "COMPILER=m
0e10: 73 76 63 2d 22 20 43 54 49 4d 45 4f 50 54 5f 56  svc-" CTIMEOPT_V
0e20: 41 4c 28 5f 4d 53 43 5f 56 45 52 29 2c 0a 23 65  AL(_MSC_VER),.#e
0e30: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e  lif defined(__GN
0e40: 55 43 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64  UC__) && defined
0e50: 28 5f 5f 56 45 52 53 49 4f 4e 5f 5f 29 0a 20 20  (__VERSION__).  
0e60: 22 43 4f 4d 50 49 4c 45 52 3d 67 63 63 2d 22 20  "COMPILER=gcc-" 
0e70: 5f 5f 56 45 52 53 49 4f 4e 5f 5f 2c 0a 23 65 6e  __VERSION__,.#en
0e80: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 43  dif.#if SQLITE_C
0e90: 4f 56 45 52 41 47 45 5f 54 45 53 54 0a 20 20 22  OVERAGE_TEST.  "
0ea0: 43 4f 56 45 52 41 47 45 5f 54 45 53 54 22 2c 0a  COVERAGE_TEST",.
0eb0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
0ec0: 45 5f 44 45 42 55 47 0a 20 20 22 44 45 42 55 47  E_DEBUG.  "DEBUG
0ed0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
0ee0: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 41 55 54  LITE_DEFAULT_AUT
0ef0: 4f 4d 41 54 49 43 5f 49 4e 44 45 58 0a 20 20 22  OMATIC_INDEX.  "
0f00: 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49  DEFAULT_AUTOMATI
0f10: 43 5f 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  C_INDEX",.#endif
0f20: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41  .#if SQLITE_DEFA
0f30: 55 4c 54 5f 41 55 54 4f 56 41 43 55 55 4d 0a 20  ULT_AUTOVACUUM. 
0f40: 20 22 44 45 46 41 55 4c 54 5f 41 55 54 4f 56 41   "DEFAULT_AUTOVA
0f50: 43 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69  CUUM",.#endif.#i
0f60: 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41  fdef SQLITE_DEFA
0f70: 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45 0a 20  ULT_CACHE_SIZE. 
0f80: 20 22 44 45 46 41 55 4c 54 5f 43 41 43 48 45 5f   "DEFAULT_CACHE_
0f90: 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f  SIZE=" CTIMEOPT_
0fa0: 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55  VAL(SQLITE_DEFAU
0fb0: 4c 54 5f 43 41 43 48 45 5f 53 49 5a 45 29 2c 0a  LT_CACHE_SIZE),.
0fc0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
0fd0: 45 5f 44 45 46 41 55 4c 54 5f 43 4b 50 54 46 55  E_DEFAULT_CKPTFU
0fe0: 4c 4c 46 53 59 4e 43 0a 20 20 22 44 45 46 41 55  LLFSYNC.  "DEFAU
0ff0: 4c 54 5f 43 4b 50 54 46 55 4c 4c 46 53 59 4e 43  LT_CKPTFULLFSYNC
1000: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ",.#endif.#ifdef
1010: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1020: 46 49 4c 45 5f 46 4f 52 4d 41 54 0a 20 20 22 44  FILE_FORMAT.  "D
1030: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d  EFAULT_FILE_FORM
1040: 41 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  AT=" CTIMEOPT_VA
1050: 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  L(SQLITE_DEFAULT
1060: 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 29 2c 0a 23  _FILE_FORMAT),.#
1070: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
1080: 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45  ITE_DEFAULT_FILE
1090: 5f 50 45 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22  _PERMISSIONS.  "
10a0: 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52  DEFAULT_FILE_PER
10b0: 4d 49 53 53 49 4f 4e 53 3d 22 20 43 54 49 4d 45  MISSIONS=" CTIME
10c0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
10d0: 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d  EFAULT_FILE_PERM
10e0: 49 53 53 49 4f 4e 53 29 2c 0a 23 65 6e 64 69 66  ISSIONS),.#endif
10f0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 45 46 41  .#if SQLITE_DEFA
1100: 55 4c 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53  ULT_FOREIGN_KEYS
1110: 0a 20 20 22 44 45 46 41 55 4c 54 5f 46 4f 52 45  .  "DEFAULT_FORE
1120: 49 47 4e 5f 4b 45 59 53 22 2c 0a 23 65 6e 64 69  IGN_KEYS",.#endi
1130: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1140: 44 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f  DEFAULT_JOURNAL_
1150: 53 49 5a 45 5f 4c 49 4d 49 54 0a 20 20 22 44 45  SIZE_LIMIT.  "DE
1160: 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49  FAULT_JOURNAL_SI
1170: 5a 45 5f 4c 49 4d 49 54 3d 22 20 43 54 49 4d 45  ZE_LIMIT=" CTIME
1180: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
1190: 45 46 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53  EFAULT_JOURNAL_S
11a0: 49 5a 45 5f 4c 49 4d 49 54 29 2c 0a 23 65 6e 64  IZE_LIMIT),.#end
11b0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
11c0: 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47  _DEFAULT_LOCKING
11d0: 5f 4d 4f 44 45 0a 20 20 22 44 45 46 41 55 4c 54  _MODE.  "DEFAULT
11e0: 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f 44 45 3d 22 20  _LOCKING_MODE=" 
11f0: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1200: 49 54 45 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b  ITE_DEFAULT_LOCK
1210: 49 4e 47 5f 4d 4f 44 45 29 2c 0a 23 65 6e 64 69  ING_MODE),.#endi
1220: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1230: 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44  DEFAULT_LOOKASID
1240: 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 4c 4f 4f  E.  "DEFAULT_LOO
1250: 4b 41 53 49 44 45 3d 22 20 43 54 49 4d 45 4f 50  KASIDE=" CTIMEOP
1260: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46  T_VAL(SQLITE_DEF
1270: 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 29 2c  AULT_LOOKASIDE),
1280: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1290: 54 45 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54  TE_DEFAULT_MEMST
12a0: 41 54 55 53 0a 20 20 22 44 45 46 41 55 4c 54 5f  ATUS.  "DEFAULT_
12b0: 4d 45 4d 53 54 41 54 55 53 22 2c 0a 23 65 6e 64  MEMSTATUS",.#end
12c0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
12d0: 5f 44 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49  _DEFAULT_MMAP_SI
12e0: 5a 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 4d 4d  ZE.  "DEFAULT_MM
12f0: 41 50 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f  AP_SIZE=" CTIMEO
1300: 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45  PT_VAL(SQLITE_DE
1310: 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 29  FAULT_MMAP_SIZE)
1320: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
1330: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50  SQLITE_DEFAULT_P
1340: 41 47 45 5f 53 49 5a 45 0a 20 20 22 44 45 46 41  AGE_SIZE.  "DEFA
1350: 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20  ULT_PAGE_SIZE=" 
1360: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
1370: 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  ITE_DEFAULT_PAGE
1380: 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23  _SIZE),.#endif.#
1390: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46  ifdef SQLITE_DEF
13a0: 41 55 4c 54 5f 50 43 41 43 48 45 5f 49 4e 49 54  AULT_PCACHE_INIT
13b0: 53 5a 0a 20 20 22 44 45 46 41 55 4c 54 5f 50 43  SZ.  "DEFAULT_PC
13c0: 41 43 48 45 5f 49 4e 49 54 53 5a 3d 22 20 43 54  ACHE_INITSZ=" CT
13d0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
13e0: 45 5f 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45  E_DEFAULT_PCACHE
13f0: 5f 49 4e 49 54 53 5a 29 2c 0a 23 65 6e 64 69 66  _INITSZ),.#endif
1400: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44  .#ifdef SQLITE_D
1410: 45 46 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f  EFAULT_PROXYDIR_
1420: 50 45 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22 44  PERMISSIONS.  "D
1430: 45 46 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f  EFAULT_PROXYDIR_
1440: 50 45 52 4d 49 53 53 49 4f 4e 53 3d 22 20 43 54  PERMISSIONS=" CT
1450: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
1460: 45 5f 44 45 46 41 55 4c 54 5f 50 52 4f 58 59 44  E_DEFAULT_PROXYD
1470: 49 52 5f 50 45 52 4d 49 53 53 49 4f 4e 53 29 2c  IR_PERMISSIONS),
1480: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1490: 54 45 5f 44 45 46 41 55 4c 54 5f 52 45 43 55 52  TE_DEFAULT_RECUR
14a0: 53 49 56 45 5f 54 52 49 47 47 45 52 53 0a 20 20  SIVE_TRIGGERS.  
14b0: 22 44 45 46 41 55 4c 54 5f 52 45 43 55 52 53 49  "DEFAULT_RECURSI
14c0: 56 45 5f 54 52 49 47 47 45 52 53 22 2c 0a 23 65  VE_TRIGGERS",.#e
14d0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
14e0: 54 45 5f 44 45 46 41 55 4c 54 5f 52 4f 57 45 53  TE_DEFAULT_ROWES
14f0: 54 0a 20 20 22 44 45 46 41 55 4c 54 5f 52 4f 57  T.  "DEFAULT_ROW
1500: 45 53 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  EST=" CTIMEOPT_V
1510: 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  AL(SQLITE_DEFAUL
1520: 54 5f 52 4f 57 45 53 54 29 2c 0a 23 65 6e 64 69  T_ROWEST),.#endi
1530: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1540: 44 45 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f 53  DEFAULT_SECTOR_S
1550: 49 5a 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 53  IZE.  "DEFAULT_S
1560: 45 43 54 4f 52 5f 53 49 5a 45 3d 22 20 43 54 49  ECTOR_SIZE=" CTI
1570: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
1580: 5f 44 45 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f  _DEFAULT_SECTOR_
1590: 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69  SIZE),.#endif.#i
15a0: 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41  fdef SQLITE_DEFA
15b0: 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 0a  ULT_SYNCHRONOUS.
15c0: 20 20 22 44 45 46 41 55 4c 54 5f 53 59 4e 43 48    "DEFAULT_SYNCH
15d0: 52 4f 4e 4f 55 53 3d 22 20 43 54 49 4d 45 4f 50  RONOUS=" CTIMEOP
15e0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46  T_VAL(SQLITE_DEF
15f0: 41 55 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  AULT_SYNCHRONOUS
1600: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
1610: 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f   SQLITE_DEFAULT_
1620: 57 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49  WAL_AUTOCHECKPOI
1630: 4e 54 0a 20 20 22 44 45 46 41 55 4c 54 5f 57 41  NT.  "DEFAULT_WA
1640: 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54  L_AUTOCHECKPOINT
1650: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
1660: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
1670: 41 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e  AL_AUTOCHECKPOIN
1680: 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  T),.#endif.#ifde
1690: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
16a0: 5f 57 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53  _WAL_SYNCHRONOUS
16b0: 0a 20 20 22 44 45 46 41 55 4c 54 5f 57 41 4c 5f  .  "DEFAULT_WAL_
16c0: 53 59 4e 43 48 52 4f 4e 4f 55 53 3d 22 20 43 54  SYNCHRONOUS=" CT
16d0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
16e0: 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59  E_DEFAULT_WAL_SY
16f0: 4e 43 48 52 4f 4e 4f 55 53 29 2c 0a 23 65 6e 64  NCHRONOUS),.#end
1700: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
1710: 5f 44 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f  _DEFAULT_WORKER_
1720: 54 48 52 45 41 44 53 0a 20 20 22 44 45 46 41 55  THREADS.  "DEFAU
1730: 4c 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  LT_WORKER_THREAD
1740: 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  S=" CTIMEOPT_VAL
1750: 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  (SQLITE_DEFAULT_
1760: 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 29 2c  WORKER_THREADS),
1770: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1780: 54 45 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c  TE_DIRECT_OVERFL
1790: 4f 57 5f 52 45 41 44 0a 20 20 22 44 49 52 45 43  OW_READ.  "DIREC
17a0: 54 5f 4f 56 45 52 46 4c 4f 57 5f 52 45 41 44 22  T_OVERFLOW_READ"
17b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
17c0: 49 54 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53  ITE_DISABLE_DIRS
17d0: 59 4e 43 0a 20 20 22 44 49 53 41 42 4c 45 5f 44  YNC.  "DISABLE_D
17e0: 49 52 53 59 4e 43 22 2c 0a 23 65 6e 64 69 66 0a  IRSYNC",.#endif.
17f0: 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42  #if SQLITE_DISAB
1800: 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 0a  LE_FTS3_UNICODE.
1810: 20 20 22 44 49 53 41 42 4c 45 5f 46 54 53 33 5f    "DISABLE_FTS3_
1820: 55 4e 49 43 4f 44 45 22 2c 0a 23 65 6e 64 69 66  UNICODE",.#endif
1830: 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41  .#if SQLITE_DISA
1840: 42 4c 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45  BLE_FTS4_DEFERRE
1850: 44 0a 20 20 22 44 49 53 41 42 4c 45 5f 46 54 53  D.  "DISABLE_FTS
1860: 34 5f 44 45 46 45 52 52 45 44 22 2c 0a 23 65 6e  4_DEFERRED",.#en
1870: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 44  dif.#if SQLITE_D
1880: 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43  ISABLE_INTRINSIC
1890: 0a 20 20 22 44 49 53 41 42 4c 45 5f 49 4e 54 52  .  "DISABLE_INTR
18a0: 49 4e 53 49 43 22 2c 0a 23 65 6e 64 69 66 0a 23  INSIC",.#endif.#
18b0: 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  if SQLITE_DISABL
18c0: 45 5f 4c 46 53 0a 20 20 22 44 49 53 41 42 4c 45  E_LFS.  "DISABLE
18d0: 5f 4c 46 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  _LFS",.#endif.#i
18e0: 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  f SQLITE_DISABLE
18f0: 5f 50 41 47 45 43 41 43 48 45 5f 4f 56 45 52 46  _PAGECACHE_OVERF
1900: 4c 4f 57 5f 53 54 41 54 53 0a 20 20 22 44 49 53  LOW_STATS.  "DIS
1910: 41 42 4c 45 5f 50 41 47 45 43 41 43 48 45 5f 4f  ABLE_PAGECACHE_O
1920: 56 45 52 46 4c 4f 57 5f 53 54 41 54 53 22 2c 0a  VERFLOW_STATS",.
1930: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1940: 45 5f 44 49 53 41 42 4c 45 5f 53 4b 49 50 41 48  E_DISABLE_SKIPAH
1950: 45 41 44 5f 44 49 53 54 49 4e 43 54 0a 20 20 22  EAD_DISTINCT.  "
1960: 44 49 53 41 42 4c 45 5f 53 4b 49 50 41 48 45 41  DISABLE_SKIPAHEA
1970: 44 5f 44 49 53 54 49 4e 43 54 22 2c 0a 23 65 6e  D_DISTINCT",.#en
1980: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
1990: 45 5f 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d  E_ENABLE_8_3_NAM
19a0: 45 53 0a 20 20 22 45 4e 41 42 4c 45 5f 38 5f 33  ES.  "ENABLE_8_3
19b0: 5f 4e 41 4d 45 53 3d 22 20 43 54 49 4d 45 4f 50  _NAMES=" CTIMEOP
19c0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 45 4e 41  T_VAL(SQLITE_ENA
19d0: 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53 29 2c 0a  BLE_8_3_NAMES),.
19e0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
19f0: 45 5f 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d  E_ENABLE_API_ARM
1a00: 4f 52 0a 20 20 22 45 4e 41 42 4c 45 5f 41 50 49  OR.  "ENABLE_API
1a10: 5f 41 52 4d 4f 52 22 2c 0a 23 65 6e 64 69 66 0a  _ARMOR",.#endif.
1a20: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1a30: 45 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 0a 20  E_ATOMIC_WRITE. 
1a40: 20 22 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f   "ENABLE_ATOMIC_
1a50: 57 52 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23  WRITE",.#endif.#
1a60: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1a70: 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 5f 57 52  _BATCH_ATOMIC_WR
1a80: 49 54 45 0a 20 20 22 45 4e 41 42 4c 45 5f 42 41  ITE.  "ENABLE_BA
1a90: 54 43 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  TCH_ATOMIC_WRITE
1aa0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1ab0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 45 52 4f  LITE_ENABLE_CERO
1ac0: 44 0a 20 20 22 45 4e 41 42 4c 45 5f 43 45 52 4f  D.  "ENABLE_CERO
1ad0: 44 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  D",.#endif.#if S
1ae0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 4c  QLITE_ENABLE_COL
1af0: 55 4d 4e 5f 4d 45 54 41 44 41 54 41 0a 20 20 22  UMN_METADATA.  "
1b00: 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d 45  ENABLE_COLUMN_ME
1b10: 54 41 44 41 54 41 22 2c 0a 23 65 6e 64 69 66 0a  TADATA",.#endif.
1b20: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1b30: 45 5f 43 4f 4c 55 4d 4e 5f 55 53 45 44 5f 4d 41  E_COLUMN_USED_MA
1b40: 53 4b 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 4c  SK.  "ENABLE_COL
1b50: 55 4d 4e 5f 55 53 45 44 5f 4d 41 53 4b 22 2c 0a  UMN_USED_MASK",.
1b60: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1b70: 45 5f 45 4e 41 42 4c 45 5f 43 4f 53 54 4d 55 4c  E_ENABLE_COSTMUL
1b80: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 53 54  T.  "ENABLE_COST
1b90: 4d 55 4c 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MULT",.#endif.#i
1ba0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1bb0: 43 55 52 53 4f 52 5f 48 49 4e 54 53 0a 20 20 22  CURSOR_HINTS.  "
1bc0: 45 4e 41 42 4c 45 5f 43 55 52 53 4f 52 5f 48 49  ENABLE_CURSOR_HI
1bd0: 4e 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  NTS",.#endif.#if
1be0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 44   SQLITE_ENABLE_D
1bf0: 42 53 54 41 54 5f 56 54 41 42 0a 20 20 22 45 4e  BSTAT_VTAB.  "EN
1c00: 41 42 4c 45 5f 44 42 53 54 41 54 5f 56 54 41 42  ABLE_DBSTAT_VTAB
1c10: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
1c20: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50 45  LITE_ENABLE_EXPE
1c30: 4e 53 49 56 45 5f 41 53 53 45 52 54 0a 20 20 22  NSIVE_ASSERT.  "
1c40: 45 4e 41 42 4c 45 5f 45 58 50 45 4e 53 49 56 45  ENABLE_EXPENSIVE
1c50: 5f 41 53 53 45 52 54 22 2c 0a 23 65 6e 64 69 66  _ASSERT",.#endif
1c60: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1c70: 4c 45 5f 46 54 53 31 0a 20 20 22 45 4e 41 42 4c  LE_FTS1.  "ENABL
1c80: 45 5f 46 54 53 31 22 2c 0a 23 65 6e 64 69 66 0a  E_FTS1",.#endif.
1c90: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1ca0: 45 5f 46 54 53 32 0a 20 20 22 45 4e 41 42 4c 45  E_FTS2.  "ENABLE
1cb0: 5f 46 54 53 32 22 2c 0a 23 65 6e 64 69 66 0a 23  _FTS2",.#endif.#
1cc0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1cd0: 5f 46 54 53 33 0a 20 20 22 45 4e 41 42 4c 45 5f  _FTS3.  "ENABLE_
1ce0: 46 54 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69  FTS3",.#endif.#i
1cf0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1d00: 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49 53  FTS3_PARENTHESIS
1d10: 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 33 5f  .  "ENABLE_FTS3_
1d20: 50 41 52 45 4e 54 48 45 53 49 53 22 2c 0a 23 65  PARENTHESIS",.#e
1d30: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1d40: 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b 45  ENABLE_FTS3_TOKE
1d50: 4e 49 5a 45 52 0a 20 20 22 45 4e 41 42 4c 45 5f  NIZER.  "ENABLE_
1d60: 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 22 2c  FTS3_TOKENIZER",
1d70: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1d80: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 0a 20  TE_ENABLE_FTS4. 
1d90: 20 22 45 4e 41 42 4c 45 5f 46 54 53 34 22 2c 0a   "ENABLE_FTS4",.
1da0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1db0: 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 0a 20 20  E_ENABLE_FTS5.  
1dc0: 22 45 4e 41 42 4c 45 5f 46 54 53 35 22 2c 0a 23  "ENABLE_FTS5",.#
1dd0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1de0: 5f 45 4e 41 42 4c 45 5f 48 49 44 44 45 4e 5f 43  _ENABLE_HIDDEN_C
1df0: 4f 4c 55 4d 4e 53 0a 20 20 22 45 4e 41 42 4c 45  OLUMNS.  "ENABLE
1e00: 5f 48 49 44 44 45 4e 5f 43 4f 4c 55 4d 4e 53 22  _HIDDEN_COLUMNS"
1e10: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1e20: 49 54 45 5f 45 4e 41 42 4c 45 5f 49 43 55 0a 20  ITE_ENABLE_ICU. 
1e30: 20 22 45 4e 41 42 4c 45 5f 49 43 55 22 2c 0a 23   "ENABLE_ICU",.#
1e40: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1e50: 5f 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43 45 0a  _ENABLE_IOTRACE.
1e60: 20 20 22 45 4e 41 42 4c 45 5f 49 4f 54 52 41 43    "ENABLE_IOTRAC
1e70: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
1e80: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4a 53 4f  QLITE_ENABLE_JSO
1e90: 4e 31 0a 20 20 22 45 4e 41 42 4c 45 5f 4a 53 4f  N1.  "ENABLE_JSO
1ea0: 4e 31 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  N1",.#endif.#if 
1eb0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f  SQLITE_ENABLE_LO
1ec0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 0a 20 20 22  AD_EXTENSION.  "
1ed0: 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45  ENABLE_LOAD_EXTE
1ee0: 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23  NSION",.#endif.#
1ef0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 45 4e 41  ifdef SQLITE_ENA
1f00: 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c  BLE_LOCKING_STYL
1f10: 45 0a 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 43 4b  E.  "ENABLE_LOCK
1f20: 49 4e 47 5f 53 54 59 4c 45 3d 22 20 43 54 49 4d  ING_STYLE=" CTIM
1f30: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
1f40: 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53  ENABLE_LOCKING_S
1f50: 54 59 4c 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69  TYLE),.#endif.#i
1f60: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1f70: 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d 45 4e  MEMORY_MANAGEMEN
1f80: 54 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 4f  T.  "ENABLE_MEMO
1f90: 52 59 5f 4d 41 4e 41 47 45 4d 45 4e 54 22 2c 0a  RY_MANAGEMENT",.
1fa0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1fb0: 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33  E_ENABLE_MEMSYS3
1fc0: 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 45 4d 53 59  .  "ENABLE_MEMSY
1fd0: 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  S3",.#endif.#if 
1fe0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45  SQLITE_ENABLE_ME
1ff0: 4d 53 59 53 35 0a 20 20 22 45 4e 41 42 4c 45 5f  MSYS5.  "ENABLE_
2000: 4d 45 4d 53 59 53 35 22 2c 0a 23 65 6e 64 69 66  MEMSYS5",.#endif
2010: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2020: 4c 45 5f 4d 55 4c 54 49 50 4c 45 58 0a 20 20 22  LE_MULTIPLEX.  "
2030: 45 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c 45 58  ENABLE_MULTIPLEX
2040: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2050: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c 4c  LITE_ENABLE_NULL
2060: 5f 54 52 49 4d 0a 20 20 22 45 4e 41 42 4c 45 5f  _TRIM.  "ENABLE_
2070: 4e 55 4c 4c 5f 54 52 49 4d 22 2c 0a 23 65 6e 64  NULL_TRIM",.#end
2080: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2090: 41 42 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45  ABLE_OVERSIZE_CE
20a0: 4c 4c 5f 43 48 45 43 4b 0a 20 20 22 45 4e 41 42  LL_CHECK.  "ENAB
20b0: 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45 4c 4c  LE_OVERSIZE_CELL
20c0: 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a  _CHECK",.#endif.
20d0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
20e0: 45 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b  E_PREUPDATE_HOOK
20f0: 0a 20 20 22 45 4e 41 42 4c 45 5f 50 52 45 55 50  .  "ENABLE_PREUP
2100: 44 41 54 45 5f 48 4f 4f 4b 22 2c 0a 23 65 6e 64  DATE_HOOK",.#end
2110: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2120: 41 42 4c 45 5f 51 50 53 47 0a 20 20 22 45 4e 41  ABLE_QPSG.  "ENA
2130: 42 4c 45 5f 51 50 53 47 22 2c 0a 23 65 6e 64 69  BLE_QPSG",.#endi
2140: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2150: 42 4c 45 5f 52 42 55 0a 20 20 22 45 4e 41 42 4c  BLE_RBU.  "ENABL
2160: 45 5f 52 42 55 22 2c 0a 23 65 6e 64 69 66 0a 23  E_RBU",.#endif.#
2170: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2180: 5f 52 54 52 45 45 0a 20 20 22 45 4e 41 42 4c 45  _RTREE.  "ENABLE
2190: 5f 52 54 52 45 45 22 2c 0a 23 65 6e 64 69 66 0a  _RTREE",.#endif.
21a0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
21b0: 45 5f 53 45 4c 45 43 54 54 52 41 43 45 0a 20 20  E_SELECTTRACE.  
21c0: 22 45 4e 41 42 4c 45 5f 53 45 4c 45 43 54 54 52  "ENABLE_SELECTTR
21d0: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
21e0: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53   SQLITE_ENABLE_S
21f0: 45 53 53 49 4f 4e 0a 20 20 22 45 4e 41 42 4c 45  ESSION.  "ENABLE
2200: 5f 53 45 53 53 49 4f 4e 22 2c 0a 23 65 6e 64 69  _SESSION",.#endi
2210: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2220: 42 4c 45 5f 53 4e 41 50 53 48 4f 54 0a 20 20 22  BLE_SNAPSHOT.  "
2230: 45 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f 54 22  ENABLE_SNAPSHOT"
2240: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2250: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f  ITE_ENABLE_SQLLO
2260: 47 0a 20 20 22 45 4e 41 42 4c 45 5f 53 51 4c 4c  G.  "ENABLE_SQLL
2270: 4f 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  OG",.#endif.#if 
2280: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 45  defined(SQLITE_E
2290: 4e 41 42 4c 45 5f 53 54 41 54 34 29 0a 20 20 22  NABLE_STAT4).  "
22a0: 45 4e 41 42 4c 45 5f 53 54 41 54 34 22 2c 0a 23  ENABLE_STAT4",.#
22b0: 65 6c 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c  elif defined(SQL
22c0: 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33  ITE_ENABLE_STAT3
22d0: 29 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54 41 54  ).  "ENABLE_STAT
22e0: 33 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  3",.#endif.#if S
22f0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d  QLITE_ENABLE_STM
2300: 54 56 54 41 42 0a 20 20 22 45 4e 41 42 4c 45 5f  TVTAB.  "ENABLE_
2310: 53 54 4d 54 56 54 41 42 22 2c 0a 23 65 6e 64 69  STMTVTAB",.#endi
2320: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2330: 42 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53 54 41  BLE_STMT_SCANSTA
2340: 54 55 53 0a 20 20 22 45 4e 41 42 4c 45 5f 53 54  TUS.  "ENABLE_ST
2350: 4d 54 5f 53 43 41 4e 53 54 41 54 55 53 22 2c 0a  MT_SCANSTATUS",.
2360: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2370: 45 5f 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e  E_ENABLE_UNKNOWN
2380: 5f 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 0a 20 20  _SQL_FUNCTION.  
2390: 22 45 4e 41 42 4c 45 5f 55 4e 4b 4e 4f 57 4e 5f  "ENABLE_UNKNOWN_
23a0: 53 51 4c 5f 46 55 4e 43 54 49 4f 4e 22 2c 0a 23  SQL_FUNCTION",.#
23b0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
23c0: 5f 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e  _ENABLE_UNLOCK_N
23d0: 4f 54 49 46 59 0a 20 20 22 45 4e 41 42 4c 45 5f  OTIFY.  "ENABLE_
23e0: 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 22 2c 0a  UNLOCK_NOTIFY",.
23f0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2400: 45 5f 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f  E_ENABLE_UPDATE_
2410: 44 45 4c 45 54 45 5f 4c 49 4d 49 54 0a 20 20 22  DELETE_LIMIT.  "
2420: 45 4e 41 42 4c 45 5f 55 50 44 41 54 45 5f 44 45  ENABLE_UPDATE_DE
2430: 4c 45 54 45 5f 4c 49 4d 49 54 22 2c 0a 23 65 6e  LETE_LIMIT",.#en
2440: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
2450: 4e 41 42 4c 45 5f 55 52 49 5f 30 30 5f 45 52 52  NABLE_URI_00_ERR
2460: 4f 52 0a 20 20 22 45 4e 41 42 4c 45 5f 55 52 49  OR.  "ENABLE_URI
2470: 5f 30 30 5f 45 52 52 4f 52 22 2c 0a 23 65 6e 64  _00_ERROR",.#end
2480: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2490: 41 42 4c 45 5f 56 46 53 54 52 41 43 45 0a 20 20  ABLE_VFSTRACE.  
24a0: 22 45 4e 41 42 4c 45 5f 56 46 53 54 52 41 43 45  "ENABLE_VFSTRACE
24b0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
24c0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 57 48 45 52  LITE_ENABLE_WHER
24d0: 45 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45  ETRACE.  "ENABLE
24e0: 5f 57 48 45 52 45 54 52 41 43 45 22 2c 0a 23 65  _WHERETRACE",.#e
24f0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2500: 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 0a 20 20  ENABLE_ZIPVFS.  
2510: 22 45 4e 41 42 4c 45 5f 5a 49 50 56 46 53 22 2c  "ENABLE_ZIPVFS",
2520: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2530: 54 45 5f 45 58 50 4c 41 49 4e 5f 45 53 54 49 4d  TE_EXPLAIN_ESTIM
2540: 41 54 45 44 5f 52 4f 57 53 0a 20 20 22 45 58 50  ATED_ROWS.  "EXP
2550: 4c 41 49 4e 5f 45 53 54 49 4d 41 54 45 44 5f 52  LAIN_ESTIMATED_R
2560: 4f 57 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  OWS",.#endif.#if
2570: 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 49 46   SQLITE_EXTRA_IF
2580: 4e 55 4c 4c 52 4f 57 0a 20 20 22 45 58 54 52 41  NULLROW.  "EXTRA
2590: 5f 49 46 4e 55 4c 4c 52 4f 57 22 2c 0a 23 65 6e  _IFNULLROW",.#en
25a0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
25b0: 45 5f 45 58 54 52 41 5f 49 4e 49 54 0a 20 20 22  E_EXTRA_INIT.  "
25c0: 45 58 54 52 41 5f 49 4e 49 54 3d 22 20 43 54 49  EXTRA_INIT=" CTI
25d0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
25e0: 5f 45 58 54 52 41 5f 49 4e 49 54 29 2c 0a 23 65  _EXTRA_INIT),.#e
25f0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2600: 54 45 5f 45 58 54 52 41 5f 53 48 55 54 44 4f 57  TE_EXTRA_SHUTDOW
2610: 4e 0a 20 20 22 45 58 54 52 41 5f 53 48 55 54 44  N.  "EXTRA_SHUTD
2620: 4f 57 4e 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  OWN=" CTIMEOPT_V
2630: 41 4c 28 53 51 4c 49 54 45 5f 45 58 54 52 41 5f  AL(SQLITE_EXTRA_
2640: 53 48 55 54 44 4f 57 4e 29 2c 0a 23 65 6e 64 69  SHUTDOWN),.#endi
2650: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2660: 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45  FTS3_MAX_EXPR_DE
2670: 50 54 48 0a 20 20 22 46 54 53 33 5f 4d 41 58 5f  PTH.  "FTS3_MAX_
2680: 45 58 50 52 5f 44 45 50 54 48 3d 22 20 43 54 49  EXPR_DEPTH=" CTI
2690: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
26a0: 5f 46 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44  _FTS3_MAX_EXPR_D
26b0: 45 50 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69  EPTH),.#endif.#i
26c0: 66 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 45 4e  f SQLITE_FTS5_EN
26d0: 41 42 4c 45 5f 54 45 53 54 5f 4d 49 0a 20 20 22  ABLE_TEST_MI.  "
26e0: 46 54 53 35 5f 45 4e 41 42 4c 45 5f 54 45 53 54  FTS5_ENABLE_TEST
26f0: 5f 4d 49 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  _MI",.#endif.#if
2700: 20 53 51 4c 49 54 45 5f 46 54 53 35 5f 4e 4f 5f   SQLITE_FTS5_NO_
2710: 57 49 54 48 4f 55 54 5f 52 4f 57 49 44 0a 20 20  WITHOUT_ROWID.  
2720: 22 46 54 53 35 5f 4e 4f 5f 57 49 54 48 4f 55 54  "FTS5_NO_WITHOUT
2730: 5f 52 4f 57 49 44 22 2c 0a 23 65 6e 64 69 66 0a  _ROWID",.#endif.
2740: 23 69 66 20 53 51 4c 49 54 45 5f 48 41 53 5f 43  #if SQLITE_HAS_C
2750: 4f 44 45 43 0a 20 20 22 48 41 53 5f 43 4f 44 45  ODEC.  "HAS_CODE
2760: 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 48  C",.#endif.#if H
2770: 41 56 45 5f 49 53 4e 41 4e 20 7c 7c 20 53 51 4c  AVE_ISNAN || SQL
2780: 49 54 45 5f 48 41 56 45 5f 49 53 4e 41 4e 0a 20  ITE_HAVE_ISNAN. 
2790: 20 22 48 41 56 45 5f 49 53 4e 41 4e 22 2c 0a 23   "HAVE_ISNAN",.#
27a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
27b0: 5f 48 4f 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52  _HOMEGROWN_RECUR
27c0: 53 49 56 45 5f 4d 55 54 45 58 0a 20 20 22 48 4f  SIVE_MUTEX.  "HO
27d0: 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56  MEGROWN_RECURSIV
27e0: 45 5f 4d 55 54 45 58 22 2c 0a 23 65 6e 64 69 66  E_MUTEX",.#endif
27f0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 47 4e 4f  .#if SQLITE_IGNO
2800: 52 45 5f 41 46 50 5f 4c 4f 43 4b 5f 45 52 52 4f  RE_AFP_LOCK_ERRO
2810: 52 53 0a 20 20 22 49 47 4e 4f 52 45 5f 41 46 50  RS.  "IGNORE_AFP
2820: 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 22 2c 0a 23  _LOCK_ERRORS",.#
2830: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
2840: 5f 49 47 4e 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f  _IGNORE_FLOCK_LO
2850: 43 4b 5f 45 52 52 4f 52 53 0a 20 20 22 49 47 4e  CK_ERRORS.  "IGN
2860: 4f 52 45 5f 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45  ORE_FLOCK_LOCK_E
2870: 52 52 4f 52 53 22 2c 0a 23 65 6e 64 69 66 0a 23  RRORS",.#endif.#
2880: 69 66 20 53 51 4c 49 54 45 5f 49 4e 4c 49 4e 45  if SQLITE_INLINE
2890: 5f 4d 45 4d 43 50 59 0a 20 20 22 49 4e 4c 49 4e  _MEMCPY.  "INLIN
28a0: 45 5f 4d 45 4d 43 50 59 22 2c 0a 23 65 6e 64 69  E_MEMCPY",.#endi
28b0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 49 4e 54  f.#if SQLITE_INT
28c0: 36 34 5f 54 59 50 45 0a 20 20 22 49 4e 54 36 34  64_TYPE.  "INT64
28d0: 5f 54 59 50 45 22 2c 0a 23 65 6e 64 69 66 0a 23  _TYPE",.#endif.#
28e0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54  ifdef SQLITE_INT
28f0: 45 47 52 49 54 59 5f 43 48 45 43 4b 5f 45 52 52  EGRITY_CHECK_ERR
2900: 4f 52 5f 4d 41 58 0a 20 20 22 49 4e 54 45 47 52  OR_MAX.  "INTEGR
2910: 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f  ITY_CHECK_ERROR_
2920: 4d 41 58 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  MAX=" CTIMEOPT_V
2930: 41 4c 28 53 51 4c 49 54 45 5f 49 4e 54 45 47 52  AL(SQLITE_INTEGR
2940: 49 54 59 5f 43 48 45 43 4b 5f 45 52 52 4f 52 5f  ITY_CHECK_ERROR_
2950: 4d 41 58 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  MAX),.#endif.#if
2960: 20 53 51 4c 49 54 45 5f 4c 49 4b 45 5f 44 4f 45   SQLITE_LIKE_DOE
2970: 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f 42 53 0a  SNT_MATCH_BLOBS.
2980: 20 20 22 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d    "LIKE_DOESNT_M
2990: 41 54 43 48 5f 42 4c 4f 42 53 22 2c 0a 23 65 6e  ATCH_BLOBS",.#en
29a0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c  dif.#if SQLITE_L
29b0: 4f 43 4b 5f 54 52 41 43 45 0a 20 20 22 4c 4f 43  OCK_TRACE.  "LOC
29c0: 4b 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66  K_TRACE",.#endif
29d0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4c 4f 47 5f  .#if SQLITE_LOG_
29e0: 43 41 43 48 45 5f 53 50 49 4c 4c 0a 20 20 22 4c  CACHE_SPILL.  "L
29f0: 4f 47 5f 43 41 43 48 45 5f 53 50 49 4c 4c 22 2c  OG_CACHE_SPILL",
2a00: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
2a10: 51 4c 49 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46  QLITE_MALLOC_SOF
2a20: 54 5f 4c 49 4d 49 54 0a 20 20 22 4d 41 4c 4c 4f  T_LIMIT.  "MALLO
2a30: 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 3d 22 20 43  C_SOFT_LIMIT=" C
2a40: 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49  TIMEOPT_VAL(SQLI
2a50: 54 45 5f 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c  TE_MALLOC_SOFT_L
2a60: 49 4d 49 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69  IMIT),.#endif.#i
2a70: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2a80: 41 54 54 41 43 48 45 44 0a 20 20 22 4d 41 58 5f  ATTACHED.  "MAX_
2a90: 41 54 54 41 43 48 45 44 3d 22 20 43 54 49 4d 45  ATTACHED=" CTIME
2aa0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
2ab0: 41 58 5f 41 54 54 41 43 48 45 44 29 2c 0a 23 65  AX_ATTACHED),.#e
2ac0: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2ad0: 54 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 0a 20 20  TE_MAX_COLUMN.  
2ae0: 22 4d 41 58 5f 43 4f 4c 55 4d 4e 3d 22 20 43 54  "MAX_COLUMN=" CT
2af0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2b00: 45 5f 4d 41 58 5f 43 4f 4c 55 4d 4e 29 2c 0a 23  E_MAX_COLUMN),.#
2b10: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2b20: 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44  ITE_MAX_COMPOUND
2b30: 5f 53 45 4c 45 43 54 0a 20 20 22 4d 41 58 5f 43  _SELECT.  "MAX_C
2b40: 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 3d 22  OMPOUND_SELECT="
2b50: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2b60: 4c 49 54 45 5f 4d 41 58 5f 43 4f 4d 50 4f 55 4e  LITE_MAX_COMPOUN
2b70: 44 5f 53 45 4c 45 43 54 29 2c 0a 23 65 6e 64 69  D_SELECT),.#endi
2b80: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2b90: 4d 41 58 5f 44 45 46 41 55 4c 54 5f 50 41 47 45  MAX_DEFAULT_PAGE
2ba0: 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 44 45 46  _SIZE.  "MAX_DEF
2bb0: 41 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 3d 22  AULT_PAGE_SIZE="
2bc0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2bd0: 4c 49 54 45 5f 4d 41 58 5f 44 45 46 41 55 4c 54  LITE_MAX_DEFAULT
2be0: 5f 50 41 47 45 5f 53 49 5a 45 29 2c 0a 23 65 6e  _PAGE_SIZE),.#en
2bf0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2c00: 45 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48  E_MAX_EXPR_DEPTH
2c10: 0a 20 20 22 4d 41 58 5f 45 58 50 52 5f 44 45 50  .  "MAX_EXPR_DEP
2c20: 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  TH=" CTIMEOPT_VA
2c30: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58 50  L(SQLITE_MAX_EXP
2c40: 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64 69 66  R_DEPTH),.#endif
2c50: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d  .#ifdef SQLITE_M
2c60: 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41 52 47 0a  AX_FUNCTION_ARG.
2c70: 20 20 22 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f    "MAX_FUNCTION_
2c80: 41 52 47 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ARG=" CTIMEOPT_V
2c90: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55  AL(SQLITE_MAX_FU
2ca0: 4e 43 54 49 4f 4e 5f 41 52 47 29 2c 0a 23 65 6e  NCTION_ARG),.#en
2cb0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
2cc0: 45 5f 4d 41 58 5f 4c 45 4e 47 54 48 0a 20 20 22  E_MAX_LENGTH.  "
2cd0: 4d 41 58 5f 4c 45 4e 47 54 48 3d 22 20 43 54 49  MAX_LENGTH=" CTI
2ce0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2cf0: 5f 4d 41 58 5f 4c 45 4e 47 54 48 29 2c 0a 23 65  _MAX_LENGTH),.#e
2d00: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2d10: 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54 54  TE_MAX_LIKE_PATT
2d20: 45 52 4e 5f 4c 45 4e 47 54 48 0a 20 20 22 4d 41  ERN_LENGTH.  "MA
2d30: 58 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  X_LIKE_PATTERN_L
2d40: 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50 54  ENGTH=" CTIMEOPT
2d50: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f  _VAL(SQLITE_MAX_
2d60: 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e  LIKE_PATTERN_LEN
2d70: 47 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  GTH),.#endif.#if
2d80: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4d  def SQLITE_MAX_M
2d90: 45 4d 4f 52 59 0a 20 20 22 4d 41 58 5f 4d 45 4d  EMORY.  "MAX_MEM
2da0: 4f 52 59 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  ORY=" CTIMEOPT_V
2db0: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 45  AL(SQLITE_MAX_ME
2dc0: 4d 4f 52 59 29 2c 0a 23 65 6e 64 69 66 0a 23 69  MORY),.#endif.#i
2dd0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2de0: 4d 4d 41 50 5f 53 49 5a 45 0a 20 20 22 4d 41 58  MMAP_SIZE.  "MAX
2df0: 5f 4d 4d 41 50 5f 53 49 5a 45 3d 22 20 43 54 49  _MMAP_SIZE=" CTI
2e00: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2e10: 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 29 2c  _MAX_MMAP_SIZE),
2e20: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
2e30: 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53  QLITE_MAX_MMAP_S
2e40: 49 5a 45 5f 0a 20 20 22 4d 41 58 5f 4d 4d 41 50  IZE_.  "MAX_MMAP
2e50: 5f 53 49 5a 45 5f 3d 22 20 43 54 49 4d 45 4f 50  _SIZE_=" CTIMEOP
2e60: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2e70: 5f 4d 4d 41 50 5f 53 49 5a 45 5f 29 2c 0a 23 65  _MMAP_SIZE_),.#e
2e80: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2e90: 54 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e  TE_MAX_PAGE_COUN
2ea0: 54 0a 20 20 22 4d 41 58 5f 50 41 47 45 5f 43 4f  T.  "MAX_PAGE_CO
2eb0: 55 4e 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  UNT=" CTIMEOPT_V
2ec0: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41  AL(SQLITE_MAX_PA
2ed0: 47 45 5f 43 4f 55 4e 54 29 2c 0a 23 65 6e 64 69  GE_COUNT),.#endi
2ee0: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
2ef0: 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 0a 20 20  MAX_PAGE_SIZE.  
2f00: 22 4d 41 58 5f 50 41 47 45 5f 53 49 5a 45 3d 22  "MAX_PAGE_SIZE="
2f10: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2f20: 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45 5f 53 49  LITE_MAX_PAGE_SI
2f30: 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ZE),.#endif.#ifd
2f40: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43  ef SQLITE_MAX_SC
2f50: 48 45 4d 41 5f 52 45 54 52 59 0a 20 20 22 4d 41  HEMA_RETRY.  "MA
2f60: 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 3d 22  X_SCHEMA_RETRY="
2f70: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
2f80: 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f  LITE_MAX_SCHEMA_
2f90: 52 45 54 52 59 29 2c 0a 23 65 6e 64 69 66 0a 23  RETRY),.#endif.#
2fa0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58  ifdef SQLITE_MAX
2fb0: 5f 53 51 4c 5f 4c 45 4e 47 54 48 0a 20 20 22 4d  _SQL_LENGTH.  "M
2fc0: 41 58 5f 53 51 4c 5f 4c 45 4e 47 54 48 3d 22 20  AX_SQL_LENGTH=" 
2fd0: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
2fe0: 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e 47  ITE_MAX_SQL_LENG
2ff0: 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  TH),.#endif.#ifd
3000: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 54 52  ef SQLITE_MAX_TR
3010: 49 47 47 45 52 5f 44 45 50 54 48 0a 20 20 22 4d  IGGER_DEPTH.  "M
3020: 41 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48  AX_TRIGGER_DEPTH
3030: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
3040: 53 51 4c 49 54 45 5f 4d 41 58 5f 54 52 49 47 47  SQLITE_MAX_TRIGG
3050: 45 52 5f 44 45 50 54 48 29 2c 0a 23 65 6e 64 69  ER_DEPTH),.#endi
3060: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
3070: 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MAX_VARIABLE_NUM
3080: 42 45 52 0a 20 20 22 4d 41 58 5f 56 41 52 49 41  BER.  "MAX_VARIA
3090: 42 4c 45 5f 4e 55 4d 42 45 52 3d 22 20 43 54 49  BLE_NUMBER=" CTI
30a0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
30b0: 5f 4d 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55  _MAX_VARIABLE_NU
30c0: 4d 42 45 52 29 2c 0a 23 65 6e 64 69 66 0a 23 69  MBER),.#endif.#i
30d0: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
30e0: 56 44 42 45 5f 4f 50 0a 20 20 22 4d 41 58 5f 56  VDBE_OP.  "MAX_V
30f0: 44 42 45 5f 4f 50 3d 22 20 43 54 49 4d 45 4f 50  DBE_OP=" CTIMEOP
3100: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3110: 5f 56 44 42 45 5f 4f 50 29 2c 0a 23 65 6e 64 69  _VDBE_OP),.#endi
3120: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
3130: 4d 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41  MAX_WORKER_THREA
3140: 44 53 0a 20 20 22 4d 41 58 5f 57 4f 52 4b 45 52  DS.  "MAX_WORKER
3150: 5f 54 48 52 45 41 44 53 3d 22 20 43 54 49 4d 45  _THREADS=" CTIME
3160: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
3170: 41 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  AX_WORKER_THREAD
3180: 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S),.#endif.#if S
3190: 51 4c 49 54 45 5f 4d 45 4d 44 45 42 55 47 0a 20  QLITE_MEMDEBUG. 
31a0: 20 22 4d 45 4d 44 45 42 55 47 22 2c 0a 23 65 6e   "MEMDEBUG",.#en
31b0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d  dif.#if SQLITE_M
31c0: 49 58 45 44 5f 45 4e 44 49 41 4e 5f 36 34 42 49  IXED_ENDIAN_64BI
31d0: 54 5f 46 4c 4f 41 54 0a 20 20 22 4d 49 58 45 44  T_FLOAT.  "MIXED
31e0: 5f 45 4e 44 49 41 4e 5f 36 34 42 49 54 5f 46 4c  _ENDIAN_64BIT_FL
31f0: 4f 41 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  OAT",.#endif.#if
3200: 20 53 51 4c 49 54 45 5f 4d 4d 41 50 5f 52 45 41   SQLITE_MMAP_REA
3210: 44 57 52 49 54 45 0a 20 20 22 4d 4d 41 50 5f 52  DWRITE.  "MMAP_R
3220: 45 41 44 57 52 49 54 45 22 2c 0a 23 65 6e 64 69  EADWRITE",.#endi
3230: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55 54  f.#if SQLITE_MUT
3240: 45 58 5f 4e 4f 4f 50 0a 20 20 22 4d 55 54 45 58  EX_NOOP.  "MUTEX
3250: 5f 4e 4f 4f 50 22 2c 0a 23 65 6e 64 69 66 0a 23  _NOOP",.#endif.#
3260: 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  if SQLITE_MUTEX_
3270: 4e 52 45 46 0a 20 20 22 4d 55 54 45 58 5f 4e 52  NREF.  "MUTEX_NR
3280: 45 46 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  EF",.#endif.#if 
3290: 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 4f 4d 49  SQLITE_MUTEX_OMI
32a0: 54 0a 20 20 22 4d 55 54 45 58 5f 4f 4d 49 54 22  T.  "MUTEX_OMIT"
32b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
32c0: 49 54 45 5f 4d 55 54 45 58 5f 50 54 48 52 45 41  ITE_MUTEX_PTHREA
32d0: 44 53 0a 20 20 22 4d 55 54 45 58 5f 50 54 48 52  DS.  "MUTEX_PTHR
32e0: 45 41 44 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  EADS",.#endif.#i
32f0: 66 20 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 57  f SQLITE_MUTEX_W
3300: 33 32 0a 20 20 22 4d 55 54 45 58 5f 57 33 32 22  32.  "MUTEX_W32"
3310: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3320: 49 54 45 5f 4e 45 45 44 5f 45 52 52 5f 4e 41 4d  ITE_NEED_ERR_NAM
3330: 45 0a 20 20 22 4e 45 45 44 5f 45 52 52 5f 4e 41  E.  "NEED_ERR_NA
3340: 4d 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ME",.#endif.#if 
3350: 53 51 4c 49 54 45 5f 4e 4f 49 4e 4c 49 4e 45 0a  SQLITE_NOINLINE.
3360: 20 20 22 4e 4f 49 4e 4c 49 4e 45 22 2c 0a 23 65    "NOINLINE",.#e
3370: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3380: 4e 4f 5f 53 59 4e 43 0a 20 20 22 4e 4f 5f 53 59  NO_SYNC.  "NO_SY
3390: 4e 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  NC",.#endif.#if 
33a0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4c 54 45  SQLITE_OMIT_ALTE
33b0: 52 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 41  RTABLE.  "OMIT_A
33c0: 4c 54 45 52 54 41 42 4c 45 22 2c 0a 23 65 6e 64  LTERTABLE",.#end
33d0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
33e0: 49 54 5f 41 4e 41 4c 59 5a 45 0a 20 20 22 4f 4d  IT_ANALYZE.  "OM
33f0: 49 54 5f 41 4e 41 4c 59 5a 45 22 2c 0a 23 65 6e  IT_ANALYZE",.#en
3400: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3410: 4d 49 54 5f 41 54 54 41 43 48 0a 20 20 22 4f 4d  MIT_ATTACH.  "OM
3420: 49 54 5f 41 54 54 41 43 48 22 2c 0a 23 65 6e 64  IT_ATTACH",.#end
3430: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3440: 49 54 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e  IT_AUTHORIZATION
3450: 0a 20 20 22 4f 4d 49 54 5f 41 55 54 48 4f 52 49  .  "OMIT_AUTHORI
3460: 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a  ZATION",.#endif.
3470: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3480: 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 0a 20 20  AUTOINCREMENT.  
3490: 22 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52 45 4d  "OMIT_AUTOINCREM
34a0: 45 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ENT",.#endif.#if
34b0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54   SQLITE_OMIT_AUT
34c0: 4f 49 4e 49 54 0a 20 20 22 4f 4d 49 54 5f 41 55  OINIT.  "OMIT_AU
34d0: 54 4f 49 4e 49 54 22 2c 0a 23 65 6e 64 69 66 0a  TOINIT",.#endif.
34e0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
34f0: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 0a  AUTOMATIC_INDEX.
3500: 20 20 22 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49    "OMIT_AUTOMATI
3510: 43 5f 49 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66  C_INDEX",.#endif
3520: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3530: 5f 41 55 54 4f 52 45 53 45 54 0a 20 20 22 4f 4d  _AUTORESET.  "OM
3540: 49 54 5f 41 55 54 4f 52 45 53 45 54 22 2c 0a 23  IT_AUTORESET",.#
3550: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3560: 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d  _OMIT_AUTOVACUUM
3570: 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 56 41 43  .  "OMIT_AUTOVAC
3580: 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  UUM",.#endif.#if
3590: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 45 54   SQLITE_OMIT_BET
35a0: 57 45 45 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  WEEN_OPTIMIZATIO
35b0: 4e 0a 20 20 22 4f 4d 49 54 5f 42 45 54 57 45 45  N.  "OMIT_BETWEE
35c0: 4e 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  N_OPTIMIZATION",
35d0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
35e0: 54 45 5f 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54  TE_OMIT_BLOB_LIT
35f0: 45 52 41 4c 0a 20 20 22 4f 4d 49 54 5f 42 4c 4f  ERAL.  "OMIT_BLO
3600: 42 5f 4c 49 54 45 52 41 4c 22 2c 0a 23 65 6e 64  B_LITERAL",.#end
3610: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3620: 49 54 5f 42 54 52 45 45 43 4f 55 4e 54 0a 20 20  IT_BTREECOUNT.  
3630: 22 4f 4d 49 54 5f 42 54 52 45 45 43 4f 55 4e 54  "OMIT_BTREECOUNT
3640: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3650: 4c 49 54 45 5f 4f 4d 49 54 5f 43 41 53 54 0a 20  LITE_OMIT_CAST. 
3660: 20 22 4f 4d 49 54 5f 43 41 53 54 22 2c 0a 23 65   "OMIT_CAST",.#e
3670: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3680: 4f 4d 49 54 5f 43 48 45 43 4b 0a 20 20 22 4f 4d  OMIT_CHECK.  "OM
3690: 49 54 5f 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69  IT_CHECK",.#endi
36a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
36b0: 54 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 22 4f 4d  T_COMPLETE.  "OM
36c0: 49 54 5f 43 4f 4d 50 4c 45 54 45 22 2c 0a 23 65  IT_COMPLETE",.#e
36d0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
36e0: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
36f0: 4c 45 43 54 0a 20 20 22 4f 4d 49 54 5f 43 4f 4d  LECT.  "OMIT_COM
3700: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 22 2c 0a 23  POUND_SELECT",.#
3710: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3720: 5f 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43  _OMIT_CONFLICT_C
3730: 4c 41 55 53 45 0a 20 20 22 4f 4d 49 54 5f 43 4f  LAUSE.  "OMIT_CO
3740: 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 22 2c 0a  NFLICT_CLAUSE",.
3750: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3760: 45 5f 4f 4d 49 54 5f 43 54 45 0a 20 20 22 4f 4d  E_OMIT_CTE.  "OM
3770: 49 54 5f 43 54 45 22 2c 0a 23 65 6e 64 69 66 0a  IT_CTE",.#endif.
3780: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3790: 44 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 0a 20  DATETIME_FUNCS. 
37a0: 20 22 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45 5f   "OMIT_DATETIME_
37b0: 46 55 4e 43 53 22 2c 0a 23 65 6e 64 69 66 0a 23  FUNCS",.#endif.#
37c0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 44  if SQLITE_OMIT_D
37d0: 45 43 4c 54 59 50 45 0a 20 20 22 4f 4d 49 54 5f  ECLTYPE.  "OMIT_
37e0: 44 45 43 4c 54 59 50 45 22 2c 0a 23 65 6e 64 69  DECLTYPE",.#endi
37f0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3800: 54 5f 44 45 50 52 45 43 41 54 45 44 0a 20 20 22  T_DEPRECATED.  "
3810: 4f 4d 49 54 5f 44 45 50 52 45 43 41 54 45 44 22  OMIT_DEPRECATED"
3820: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3830: 49 54 45 5f 4f 4d 49 54 5f 44 49 53 4b 49 4f 0a  ITE_OMIT_DISKIO.
3840: 20 20 22 4f 4d 49 54 5f 44 49 53 4b 49 4f 22 2c    "OMIT_DISKIO",
3850: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3860: 54 45 5f 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 0a  TE_OMIT_EXPLAIN.
3870: 20 20 22 4f 4d 49 54 5f 45 58 50 4c 41 49 4e 22    "OMIT_EXPLAIN"
3880: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3890: 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52  ITE_OMIT_FLAG_PR
38a0: 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 46 4c  AGMAS.  "OMIT_FL
38b0: 41 47 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e  AG_PRAGMAS",.#en
38c0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
38d0: 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
38e0: 4e 54 0a 20 20 22 4f 4d 49 54 5f 46 4c 4f 41 54  NT.  "OMIT_FLOAT
38f0: 49 4e 47 5f 50 4f 49 4e 54 22 2c 0a 23 65 6e 64  ING_POINT",.#end
3900: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3910: 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 0a 20  IT_FOREIGN_KEY. 
3920: 20 22 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f 4b   "OMIT_FOREIGN_K
3930: 45 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  EY",.#endif.#if 
3940: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 47 45 54 5f  SQLITE_OMIT_GET_
3950: 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f 47 45  TABLE.  "OMIT_GE
3960: 54 5f 54 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66  T_TABLE",.#endif
3970: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3980: 5f 48 45 58 5f 49 4e 54 45 47 45 52 0a 20 20 22  _HEX_INTEGER.  "
3990: 4f 4d 49 54 5f 48 45 58 5f 49 4e 54 45 47 45 52  OMIT_HEX_INTEGER
39a0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
39b0: 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 43 52 42 4c  LITE_OMIT_INCRBL
39c0: 4f 42 0a 20 20 22 4f 4d 49 54 5f 49 4e 43 52 42  OB.  "OMIT_INCRB
39d0: 4c 4f 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LOB",.#endif.#if
39e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54   SQLITE_OMIT_INT
39f0: 45 47 52 49 54 59 5f 43 48 45 43 4b 0a 20 20 22  EGRITY_CHECK.  "
3a00: 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43  OMIT_INTEGRITY_C
3a10: 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69  HECK",.#endif.#i
3a20: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 49  f SQLITE_OMIT_LI
3a30: 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a  KE_OPTIMIZATION.
3a40: 20 20 22 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54    "OMIT_LIKE_OPT
3a50: 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64  IMIZATION",.#end
3a60: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3a70: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
3a80: 4e 0a 20 20 22 4f 4d 49 54 5f 4c 4f 41 44 5f 45  N.  "OMIT_LOAD_E
3a90: 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65 6e 64 69  XTENSION",.#endi
3aa0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3ab0: 54 5f 4c 4f 43 41 4c 54 49 4d 45 0a 20 20 22 4f  T_LOCALTIME.  "O
3ac0: 4d 49 54 5f 4c 4f 43 41 4c 54 49 4d 45 22 2c 0a  MIT_LOCALTIME",.
3ad0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3ae0: 45 5f 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49 44 45  E_OMIT_LOOKASIDE
3af0: 0a 20 20 22 4f 4d 49 54 5f 4c 4f 4f 4b 41 53 49  .  "OMIT_LOOKASI
3b00: 44 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  DE",.#endif.#if 
3b10: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d 45 4d 4f  SQLITE_OMIT_MEMO
3b20: 52 59 44 42 0a 20 20 22 4f 4d 49 54 5f 4d 45 4d  RYDB.  "OMIT_MEM
3b30: 4f 52 59 44 42 22 2c 0a 23 65 6e 64 69 66 0a 23  ORYDB",.#endif.#
3b40: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4f  if SQLITE_OMIT_O
3b50: 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20  R_OPTIMIZATION. 
3b60: 20 22 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49   "OMIT_OR_OPTIMI
3b70: 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a  ZATION",.#endif.
3b80: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3b90: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 0a 20 20  PAGER_PRAGMAS.  
3ba0: 22 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47  "OMIT_PAGER_PRAG
3bb0: 4d 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  MAS",.#endif.#if
3bc0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 52   SQLITE_OMIT_PAR
3bd0: 53 45 52 5f 54 52 41 43 45 0a 20 20 22 4f 4d 49  SER_TRACE.  "OMI
3be0: 54 5f 50 41 52 53 45 52 5f 54 52 41 43 45 22 2c  T_PARSER_TRACE",
3bf0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3c00: 54 45 5f 4f 4d 49 54 5f 50 4f 50 45 4e 0a 20 20  TE_OMIT_POPEN.  
3c10: 22 4f 4d 49 54 5f 50 4f 50 45 4e 22 2c 0a 23 65  "OMIT_POPEN",.#e
3c20: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3c30: 4f 4d 49 54 5f 50 52 41 47 4d 41 0a 20 20 22 4f  OMIT_PRAGMA.  "O
3c40: 4d 49 54 5f 50 52 41 47 4d 41 22 2c 0a 23 65 6e  MIT_PRAGMA",.#en
3c50: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3c60: 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43 41 4c  MIT_PROGRESS_CAL
3c70: 4c 42 41 43 4b 0a 20 20 22 4f 4d 49 54 5f 50 52  LBACK.  "OMIT_PR
3c80: 4f 47 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 22  OGRESS_CALLBACK"
3c90: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3ca0: 49 54 45 5f 4f 4d 49 54 5f 51 55 49 43 4b 42 41  ITE_OMIT_QUICKBA
3cb0: 4c 41 4e 43 45 0a 20 20 22 4f 4d 49 54 5f 51 55  LANCE.  "OMIT_QU
3cc0: 49 43 4b 42 41 4c 41 4e 43 45 22 2c 0a 23 65 6e  ICKBALANCE",.#en
3cd0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3ce0: 4d 49 54 5f 52 45 49 4e 44 45 58 0a 20 20 22 4f  MIT_REINDEX.  "O
3cf0: 4d 49 54 5f 52 45 49 4e 44 45 58 22 2c 0a 23 65  MIT_REINDEX",.#e
3d00: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3d10: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
3d20: 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 53 43 48 45  MAS.  "OMIT_SCHE
3d30: 4d 41 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e  MA_PRAGMAS",.#en
3d40: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3d50: 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49  MIT_SCHEMA_VERSI
3d60: 4f 4e 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f 4d  ON_PRAGMAS.  "OM
3d70: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
3d80: 4e 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65 6e 64  N_PRAGMAS",.#end
3d90: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
3da0: 49 54 5f 53 48 41 52 45 44 5f 43 41 43 48 45 0a  IT_SHARED_CACHE.
3db0: 20 20 22 4f 4d 49 54 5f 53 48 41 52 45 44 5f 43    "OMIT_SHARED_C
3dc0: 41 43 48 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ACHE",.#endif.#i
3dd0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48  f SQLITE_OMIT_SH
3de0: 55 54 44 4f 57 4e 5f 44 49 52 45 43 54 4f 52 49  UTDOWN_DIRECTORI
3df0: 45 53 0a 20 20 22 4f 4d 49 54 5f 53 48 55 54 44  ES.  "OMIT_SHUTD
3e00: 4f 57 4e 5f 44 49 52 45 43 54 4f 52 49 45 53 22  OWN_DIRECTORIES"
3e10: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3e20: 49 54 45 5f 4f 4d 49 54 5f 53 55 42 51 55 45 52  ITE_OMIT_SUBQUER
3e30: 59 0a 20 20 22 4f 4d 49 54 5f 53 55 42 51 55 45  Y.  "OMIT_SUBQUE
3e40: 52 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  RY",.#endif.#if 
3e50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 43 4c 5f  SQLITE_OMIT_TCL_
3e60: 56 41 52 49 41 42 4c 45 0a 20 20 22 4f 4d 49 54  VARIABLE.  "OMIT
3e70: 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45 22 2c 0a  _TCL_VARIABLE",.
3e80: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3e90: 45 5f 4f 4d 49 54 5f 54 45 4d 50 44 42 0a 20 20  E_OMIT_TEMPDB.  
3ea0: 22 4f 4d 49 54 5f 54 45 4d 50 44 42 22 2c 0a 23  "OMIT_TEMPDB",.#
3eb0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3ec0: 5f 4f 4d 49 54 5f 54 45 53 54 5f 43 4f 4e 54 52  _OMIT_TEST_CONTR
3ed0: 4f 4c 0a 20 20 22 4f 4d 49 54 5f 54 45 53 54 5f  OL.  "OMIT_TEST_
3ee0: 43 4f 4e 54 52 4f 4c 22 2c 0a 23 65 6e 64 69 66  CONTROL",.#endif
3ef0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3f00: 5f 54 52 41 43 45 0a 20 20 22 4f 4d 49 54 5f 54  _TRACE.  "OMIT_T
3f10: 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RACE",.#endif.#i
3f20: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52  f SQLITE_OMIT_TR
3f30: 49 47 47 45 52 0a 20 20 22 4f 4d 49 54 5f 54 52  IGGER.  "OMIT_TR
3f40: 49 47 47 45 52 22 2c 0a 23 65 6e 64 69 66 0a 23  IGGER",.#endif.#
3f50: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  if SQLITE_OMIT_T
3f60: 52 55 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41  RUNCATE_OPTIMIZA
3f70: 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 54 52 55  TION.  "OMIT_TRU
3f80: 4e 43 41 54 45 5f 4f 50 54 49 4d 49 5a 41 54 49  NCATE_OPTIMIZATI
3f90: 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ON",.#endif.#if 
3fa0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 55 54 46 31  SQLITE_OMIT_UTF1
3fb0: 36 0a 20 20 22 4f 4d 49 54 5f 55 54 46 31 36 22  6.  "OMIT_UTF16"
3fc0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3fd0: 49 54 45 5f 4f 4d 49 54 5f 56 41 43 55 55 4d 0a  ITE_OMIT_VACUUM.
3fe0: 20 20 22 4f 4d 49 54 5f 56 41 43 55 55 4d 22 2c    "OMIT_VACUUM",
3ff0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4000: 54 45 5f 4f 4d 49 54 5f 56 49 45 57 0a 20 20 22  TE_OMIT_VIEW.  "
4010: 4f 4d 49 54 5f 56 49 45 57 22 2c 0a 23 65 6e 64  OMIT_VIEW",.#end
4020: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d  if.#if SQLITE_OM
4030: 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 0a  IT_VIRTUALTABLE.
4040: 20 20 22 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54    "OMIT_VIRTUALT
4050: 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ABLE",.#endif.#i
4060: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41  f SQLITE_OMIT_WA
4070: 4c 0a 20 20 22 4f 4d 49 54 5f 57 41 4c 22 2c 0a  L.  "OMIT_WAL",.
4080: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4090: 45 5f 4f 4d 49 54 5f 57 53 44 0a 20 20 22 4f 4d  E_OMIT_WSD.  "OM
40a0: 49 54 5f 57 53 44 22 2c 0a 23 65 6e 64 69 66 0a  IT_WSD",.#endif.
40b0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
40c0: 58 46 45 52 5f 4f 50 54 0a 20 20 22 4f 4d 49 54  XFER_OPT.  "OMIT
40d0: 5f 58 46 45 52 5f 4f 50 54 22 2c 0a 23 65 6e 64  _XFER_OPT",.#end
40e0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 43  if.#if SQLITE_PC
40f0: 41 43 48 45 5f 53 45 50 41 52 41 54 45 5f 48 45  ACHE_SEPARATE_HE
4100: 41 44 45 52 0a 20 20 22 50 43 41 43 48 45 5f 53  ADER.  "PCACHE_S
4110: 45 50 41 52 41 54 45 5f 48 45 41 44 45 52 22 2c  EPARATE_HEADER",
4120: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4130: 54 45 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f 54  TE_PERFORMANCE_T
4140: 52 41 43 45 0a 20 20 22 50 45 52 46 4f 52 4d 41  RACE.  "PERFORMA
4150: 4e 43 45 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64  NCE_TRACE",.#end
4160: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 4f  if.#if SQLITE_PO
4170: 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
4180: 45 0a 20 20 22 50 4f 57 45 52 53 41 46 45 5f 4f  E.  "POWERSAFE_O
4190: 56 45 52 57 52 49 54 45 22 2c 0a 23 65 6e 64 69  VERWRITE",.#endi
41a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 52 45  f.#if SQLITE_PRE
41b0: 46 45 52 5f 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e  FER_PROXY_LOCKIN
41c0: 47 0a 20 20 22 50 52 45 46 45 52 5f 50 52 4f 58  G.  "PREFER_PROX
41d0: 59 5f 4c 4f 43 4b 49 4e 47 22 2c 0a 23 65 6e 64  Y_LOCKING",.#end
41e0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 50 52  if.#if SQLITE_PR
41f0: 4f 58 59 5f 44 45 42 55 47 0a 20 20 22 50 52 4f  OXY_DEBUG.  "PRO
4200: 58 59 5f 44 45 42 55 47 22 2c 0a 23 65 6e 64 69  XY_DEBUG",.#endi
4210: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 52 45 56  f.#if SQLITE_REV
4220: 45 52 53 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53  ERSE_UNORDERED_S
4230: 45 4c 45 43 54 53 0a 20 20 22 52 45 56 45 52 53  ELECTS.  "REVERS
4240: 45 5f 55 4e 4f 52 44 45 52 45 44 5f 53 45 4c 45  E_UNORDERED_SELE
4250: 43 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  CTS",.#endif.#if
4260: 20 53 51 4c 49 54 45 5f 52 54 52 45 45 5f 49 4e   SQLITE_RTREE_IN
4270: 54 5f 4f 4e 4c 59 0a 20 20 22 52 54 52 45 45 5f  T_ONLY.  "RTREE_
4280: 49 4e 54 5f 4f 4e 4c 59 22 2c 0a 23 65 6e 64 69  INT_ONLY",.#endi
4290: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 45 43  f.#if SQLITE_SEC
42a0: 55 52 45 5f 44 45 4c 45 54 45 0a 20 20 22 53 45  URE_DELETE.  "SE
42b0: 43 55 52 45 5f 44 45 4c 45 54 45 22 2c 0a 23 65  CURE_DELETE",.#e
42c0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
42d0: 53 4d 41 4c 4c 5f 53 54 41 43 4b 0a 20 20 22 53  SMALL_STACK.  "S
42e0: 4d 41 4c 4c 5f 53 54 41 43 4b 22 2c 0a 23 65 6e  MALL_STACK",.#en
42f0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
4300: 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 0a 20  E_SORTER_PMASZ. 
4310: 20 22 53 4f 52 54 45 52 5f 50 4d 41 53 5a 3d 22   "SORTER_PMASZ="
4320: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
4330: 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53  LITE_SORTER_PMAS
4340: 5a 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  Z),.#endif.#if S
4350: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 0a 20 20  QLITE_SOUNDEX.  
4360: 22 53 4f 55 4e 44 45 58 22 2c 0a 23 65 6e 64 69  "SOUNDEX",.#endi
4370: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
4380: 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 0a 20 20  STAT4_SAMPLES.  
4390: 22 53 54 41 54 34 5f 53 41 4d 50 4c 45 53 3d 22  "STAT4_SAMPLES="
43a0: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
43b0: 4c 49 54 45 5f 53 54 41 54 34 5f 53 41 4d 50 4c  LITE_STAT4_SAMPL
43c0: 45 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ES),.#endif.#ifd
43d0: 65 66 20 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52  ef SQLITE_STMTJR
43e0: 4e 4c 5f 53 50 49 4c 4c 0a 20 20 22 53 54 4d 54  NL_SPILL.  "STMT
43f0: 4a 52 4e 4c 5f 53 50 49 4c 4c 3d 22 20 43 54 49  JRNL_SPILL=" CTI
4400: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4410: 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 29  _STMTJRNL_SPILL)
4420: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4430: 49 54 45 5f 53 55 42 53 54 52 5f 43 4f 4d 50 41  ITE_SUBSTR_COMPA
4440: 54 49 42 49 4c 49 54 59 0a 20 20 22 53 55 42 53  TIBILITY.  "SUBS
4450: 54 52 5f 43 4f 4d 50 41 54 49 42 49 4c 49 54 59  TR_COMPATIBILITY
4460: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4470: 4c 49 54 45 5f 53 59 53 54 45 4d 5f 4d 41 4c 4c  LITE_SYSTEM_MALL
4480: 4f 43 0a 20 20 22 53 59 53 54 45 4d 5f 4d 41 4c  OC.  "SYSTEM_MAL
4490: 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  LOC",.#endif.#if
44a0: 20 53 51 4c 49 54 45 5f 54 43 4c 0a 20 20 22 54   SQLITE_TCL.  "T
44b0: 43 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  CL",.#endif.#ifd
44c0: 65 66 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53  ef SQLITE_TEMP_S
44d0: 54 4f 52 45 0a 20 20 22 54 45 4d 50 5f 53 54 4f  TORE.  "TEMP_STO
44e0: 52 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  RE=" CTIMEOPT_VA
44f0: 4c 28 53 51 4c 49 54 45 5f 54 45 4d 50 5f 53 54  L(SQLITE_TEMP_ST
4500: 4f 52 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ORE),.#endif.#if
4510: 20 53 51 4c 49 54 45 5f 54 45 53 54 0a 20 20 22   SQLITE_TEST.  "
4520: 54 45 53 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TEST",.#endif.#i
4530: 66 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45  f defined(SQLITE
4540: 5f 54 48 52 45 41 44 53 41 46 45 29 0a 20 20 22  _THREADSAFE).  "
4550: 54 48 52 45 41 44 53 41 46 45 3d 22 20 43 54 49  THREADSAFE=" CTI
4560: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4570: 5f 54 48 52 45 41 44 53 41 46 45 29 2c 0a 23 65  _THREADSAFE),.#e
4580: 6c 69 66 20 64 65 66 69 6e 65 64 28 54 48 52 45  lif defined(THRE
4590: 41 44 53 41 46 45 29 0a 20 20 22 54 48 52 45 41  ADSAFE).  "THREA
45a0: 44 53 41 46 45 3d 22 20 43 54 49 4d 45 4f 50 54  DSAFE=" CTIMEOPT
45b0: 5f 56 41 4c 28 54 48 52 45 41 44 53 41 46 45 29  _VAL(THREADSAFE)
45c0: 2c 0a 23 65 6c 73 65 0a 20 20 22 54 48 52 45 41  ,.#else.  "THREA
45d0: 44 53 41 46 45 3d 31 22 2c 0a 23 65 6e 64 69 66  DSAFE=1",.#endif
45e0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 4e 4c 49  .#if SQLITE_UNLI
45f0: 4e 4b 5f 41 46 54 45 52 5f 43 4c 4f 53 45 0a 20  NK_AFTER_CLOSE. 
4600: 20 22 55 4e 4c 49 4e 4b 5f 41 46 54 45 52 5f 43   "UNLINK_AFTER_C
4610: 4c 4f 53 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LOSE",.#endif.#i
4620: 66 20 53 51 4c 49 54 45 5f 55 4e 54 45 53 54 41  f SQLITE_UNTESTA
4630: 42 4c 45 0a 20 20 22 55 4e 54 45 53 54 41 42 4c  BLE.  "UNTESTABL
4640: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
4650: 51 4c 49 54 45 5f 55 53 45 52 5f 41 55 54 48 45  QLITE_USER_AUTHE
4660: 4e 54 49 43 41 54 49 4f 4e 0a 20 20 22 55 53 45  NTICATION.  "USE
4670: 52 5f 41 55 54 48 45 4e 54 49 43 41 54 49 4f 4e  R_AUTHENTICATION
4680: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4690: 4c 49 54 45 5f 55 53 45 5f 41 4c 4c 4f 43 41 0a  LITE_USE_ALLOCA.
46a0: 20 20 22 55 53 45 5f 41 4c 4c 4f 43 41 22 2c 0a    "USE_ALLOCA",.
46b0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
46c0: 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43  E_USE_FCNTL_TRAC
46d0: 45 0a 20 20 22 55 53 45 5f 46 43 4e 54 4c 5f 54  E.  "USE_FCNTL_T
46e0: 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RACE",.#endif.#i
46f0: 66 20 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49  f SQLITE_USE_URI
4700: 0a 20 20 22 55 53 45 5f 55 52 49 22 2c 0a 23 65  .  "USE_URI",.#e
4710: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4720: 56 44 42 45 5f 43 4f 56 45 52 41 47 45 0a 20 20  VDBE_COVERAGE.  
4730: 22 56 44 42 45 5f 43 4f 56 45 52 41 47 45 22 2c  "VDBE_COVERAGE",
4740: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
4750: 54 45 5f 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 0a  TE_WIN32_MALLOC.
4760: 20 20 22 57 49 4e 33 32 5f 4d 41 4c 4c 4f 43 22    "WIN32_MALLOC"
4770: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4780: 49 54 45 5f 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 0a  ITE_ZERO_MALLOC.
4790: 20 20 22 5a 45 52 4f 5f 4d 41 4c 4c 4f 43 22 2c    "ZERO_MALLOC",
47a0: 0a 23 65 6e 64 69 66 0a 2f 2a 20 0a 2a 2a 20 45  .#endif./* .** E
47b0: 4e 44 20 43 4f 44 45 20 47 45 4e 45 52 41 54 45  ND CODE GENERATE
47c0: 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63 74 69 6d  D BY tool/mkctim
47d0: 65 2e 74 63 6c 20 0a 2a 2f 0a 7d 3b 0a 0a 53 51  e.tcl .*/.};..SQ
47e0: 4c 49 54 45 5f 50 52 49 56 41 54 45 20 63 6f 6e  LITE_PRIVATE con
47f0: 73 74 20 63 68 61 72 20 2a 2a 73 71 6c 69 74 65  st char **sqlite
4800: 33 43 6f 6d 70 69 6c 65 4f 70 74 69 6f 6e 73 28  3CompileOptions(
4810: 69 6e 74 20 2a 70 6e 4f 70 74 29 7b 0a 20 20 2a  int *pnOpt){.  *
4820: 70 6e 4f 70 74 20 3d 20 73 69 7a 65 6f 66 28 73  pnOpt = sizeof(s
4830: 71 6c 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f  qlite3azCompileO
4840: 70 74 29 20 2f 20 73 69 7a 65 6f 66 28 73 71 6c  pt) / sizeof(sql
4850: 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74  ite3azCompileOpt
4860: 5b 30 5d 29 3b 0a 20 20 72 65 74 75 72 6e 20 28  [0]);.  return (
4870: 63 6f 6e 73 74 20 63 68 61 72 2a 2a 29 73 71 6c  const char**)sql
4880: 69 74 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74  ite3azCompileOpt
4890: 3b 0a 7d 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 53  ;.}..#endif /* S
48a0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
48b0: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 20 2a  LEOPTION_DIAGS *
48c0: 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /../************
48d0: 2a 2a 20 45 6e 64 20 6f 66 20 63 74 69 6d 65 2e  ** End of ctime.
48e0: 63 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  c **************
48f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4900: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4910: 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */./************
4920: 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65 20 73 71  ** Begin file sq
4930: 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a  liteInt.h ******
4940: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4960: 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31 20 53 65  */./*.** 2001 Se
4970: 70 74 65 6d 62 65 72 20 31 35 0a 2a 2a 0a 2a 2a  ptember 15.**.**
4980: 20 54 68 65 20 61 75 74 68 6f 72 20 64 69 73 63   The author disc
4990: 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20  laims copyright 
49a0: 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65 20 63  to this source c
49b0: 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f  ode.  In place o
49c0: 66 0a 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74  f.** a legal not
49d0: 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20 62  ice, here is a b
49e0: 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20  lessing:.**.**  
49f0: 20 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f    May you do goo
4a00: 64 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a  d and not evil..
4a10: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69  **    May you fi
4a20: 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66  nd forgiveness f
4a30: 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20  or yourself and 
4a40: 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a  forgive others..
4a50: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68  **    May you sh
4a60: 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65  are freely, neve
4a70: 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68  r taking more th
4a80: 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a  an you give..**.
4a90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4aa0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ab0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ac0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ad0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 20 49 6e 74  *********.** Int
4ae0: 65 72 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 20  ernal interface 
4af0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20  definitions for 
4b00: 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2f 0a 23 69  SQLite..**.*/.#i
4b10: 66 6e 64 65 66 20 53 51 4c 49 54 45 49 4e 54 5f  fndef SQLITEINT_
4b20: 48 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  H.#define SQLITE
4b30: 49 4e 54 5f 48 0a 0a 2f 2a 20 53 70 65 63 69 61  INT_H../* Specia
4b40: 6c 20 43 6f 6d 6d 65 6e 74 73 3a 0a 2a 2a 0a 2a  l Comments:.**.*
4b50: 2a 20 53 6f 6d 65 20 63 6f 6d 6d 65 6e 74 73 20  * Some comments 
4b60: 68 61 76 65 20 73 70 65 63 69 61 6c 20 6d 65 61  have special mea
4b70: 6e 69 6e 67 20 74 6f 20 74 68 65 20 74 6f 6f 6c  ning to the tool
4b80: 73 20 74 68 61 74 20 6d 65 61 73 75 72 65 20 74  s that measure t
4b90: 65 73 74 0a 2a 2a 20 63 6f 76 65 72 61 67 65 3a  est.** coverage:
4ba0: 0a 2a 2a 0a 2a 2a 20 20 20 20 4e 4f 5f 54 45 53  .**.**    NO_TES
4bb0: 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  T               
4bc0: 20 20 20 20 20 20 2d 20 54 68 65 20 62 72 61 6e        - The bran
4bd0: 63 68 65 73 20 6f 6e 20 74 68 69 73 20 6c 69 6e  ches on this lin
4be0: 65 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 20 20 20  e are not.**    
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65                me
4c10: 61 73 75 72 65 64 20 62 79 20 62 72 61 6e 63 68  asured by branch
4c20: 20 63 6f 76 65 72 61 67 65 2e 20 20 54 68 69 73   coverage.  This
4c30: 20 69 73 0a 2a 2a 20 20 20 20 20 20 20 20 20 20   is.**          
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c50: 20 20 20 20 20 20 20 20 75 73 65 64 20 6f 6e 20          used on 
4c60: 6c 69 6e 65 73 20 6f 66 20 63 6f 64 65 20 74 68  lines of code th
4c70: 61 74 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20 20  at actually.**  
4c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 69 6d 70 6c 65 6d 65 6e 74 20 70 61 72 74 73 20  implement parts 
4cb0: 6f 66 20 63 6f 76 65 72 61 67 65 20 74 65 73 74  of coverage test
4cc0: 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50  ing..**.**    OP
4cd0: 54 49 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 54 52  TIMIZATION-IF-TR
4ce0: 55 45 20 20 20 20 20 20 20 20 2d 20 54 68 69 73  UE        - This
4cf0: 20 62 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77   branch is allow
4d00: 65 64 20 74 6f 20 61 6c 77 61 79 20 62 65 20 66  ed to alway be f
4d10: 61 6c 73 65 0a 2a 2a 20 20 20 20 20 20 20 20 20  alse.**         
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d30: 20 20 20 20 20 20 20 20 20 61 6e 64 20 74 68 65           and the
4d40: 20 63 6f 72 72 65 63 74 20 61 6e 73 77 65 72 20   correct answer 
4d50: 69 73 20 73 74 69 6c 6c 20 6f 62 74 61 69 6e 65  is still obtaine
4d60: 64 2c 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20  d,.**           
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d80: 20 20 20 20 20 20 20 74 68 6f 75 67 68 20 70 65         though pe
4d90: 72 68 61 70 73 20 6d 6f 72 65 20 73 6c 6f 77 6c  rhaps more slowl
4da0: 79 2e 0a 2a 2a 0a 2a 2a 20 20 20 20 4f 50 54 49  y..**.**    OPTI
4db0: 4d 49 5a 41 54 49 4f 4e 2d 49 46 2d 46 41 4c 53  MIZATION-IF-FALS
4dc0: 45 20 20 20 20 20 20 20 2d 20 54 68 69 73 20 62  E       - This b
4dd0: 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65 64  ranch is allowed
4de0: 20 74 6f 20 61 6c 77 61 79 20 62 65 20 74 72 75   to alway be tru
4df0: 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  e.**            
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e10: 20 20 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f        and the co
4e20: 72 72 65 63 74 20 61 6e 73 77 65 72 20 69 73 20  rrect answer is 
4e30: 73 74 69 6c 6c 20 6f 62 74 61 69 6e 65 64 2c 0a  still obtained,.
4e40: 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  **              
4e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e60: 20 20 20 20 74 68 6f 75 67 68 20 70 65 72 68 61      though perha
4e70: 70 73 20 6d 6f 72 65 20 73 6c 6f 77 6c 79 2e 0a  ps more slowly..
4e80: 2a 2a 0a 2a 2a 20 20 20 20 50 52 45 56 45 4e 54  **.**    PREVENT
4e90: 53 2d 48 41 52 4d 4c 45 53 53 2d 4f 56 45 52 52  S-HARMLESS-OVERR
4ea0: 45 41 44 20 20 2d 20 54 68 69 73 20 62 72 61 6e  EAD  - This bran
4eb0: 63 68 20 70 72 65 76 65 6e 74 73 20 61 20 62 75  ch prevents a bu
4ec0: 66 66 65 72 20 6f 76 65 72 72 65 61 64 0a 2a 2a  ffer overread.**
4ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ef0: 20 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20    that would be 
4f00: 68 61 72 6d 6c 65 73 73 20 61 6e 64 20 75 6e 64  harmless and und
4f10: 65 74 65 63 74 61 62 6c 65 0a 2a 2a 20 20 20 20  etectable.**    
4f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4f40: 20 69 74 20 64 69 64 20 6f 63 63 75 72 2e 20 20   it did occur.  
4f50: 0a 2a 2a 0a 2a 2a 20 49 6e 20 61 6c 6c 20 63 61  .**.** In all ca
4f60: 73 65 73 2c 20 74 68 65 20 73 70 65 63 69 61 6c  ses, the special
4f70: 20 63 6f 6d 6d 65 6e 74 20 6d 75 73 74 20 62 65   comment must be
4f80: 20 65 6e 63 6c 6f 73 65 64 20 69 6e 20 74 68 65   enclosed in the
4f90: 20 75 73 75 61 6c 0a 2a 2a 20 73 6c 61 73 68 2d   usual.** slash-
4fa0: 61 73 74 65 72 69 73 6b 2e 2e 2e 61 73 74 65 72  asterisk...aster
4fb0: 69 73 6b 2d 73 6c 61 73 68 20 63 6f 6d 6d 65 6e  isk-slash commen
4fc0: 74 20 6d 61 72 6b 73 2c 20 77 69 74 68 20 6e 6f  t marks, with no
4fd0: 20 73 70 61 63 65 73 20 62 65 74 77 65 65 6e 20   spaces between 
4fe0: 74 68 65 20 0a 2a 2a 20 61 73 74 65 72 69 73 6b  the .** asterisk
4ff0: 73 20 61 6e 64 20 74 68 65 20 63 6f 6d 6d 65 6e  s and the commen
5000: 74 20 74 65 78 74 2e 0a 2a 2f 0a 0a 2f 2a 0a 2a  t text..*/../*.*
5010: 2a 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20  * Make sure the 
5020: 54 63 6c 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76  Tcl calling conv
5030: 65 6e 74 69 6f 6e 20 6d 61 63 72 6f 20 69 73 20  ention macro is 
5040: 64 65 66 69 6e 65 64 2e 20 20 54 68 69 73 20 6d  defined.  This m
5050: 61 63 72 6f 20 69 73 0a 2a 2a 20 6f 6e 6c 79 20  acro is.** only 
5060: 75 73 65 64 20 62 79 20 74 65 73 74 20 63 6f 64  used by test cod
5070: 65 20 61 6e 64 20 54 63 6c 20 69 6e 74 65 67 72  e and Tcl integr
5080: 61 74 69 6f 6e 20 63 6f 64 65 2e 0a 2a 2f 0a 23  ation code..*/.#
5090: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 54 43  ifndef SQLITE_TC
50a0: 4c 41 50 49 0a 23 20 20 64 65 66 69 6e 65 20 53  LAPI.#  define S
50b0: 51 4c 49 54 45 5f 54 43 4c 41 50 49 0a 23 65 6e  QLITE_TCLAPI.#en
50c0: 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 49 6e 63 6c 75  dif../*.** Inclu
50d0: 64 65 20 74 68 65 20 68 65 61 64 65 72 20 66 69  de the header fi
50e0: 6c 65 20 75 73 65 64 20 74 6f 20 63 75 73 74 6f  le used to custo
50f0: 6d 69 7a 65 20 74 68 65 20 63 6f 6d 70 69 6c 65  mize the compile
5100: 72 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 4d 53  r options for MS
5110: 56 43 2e 0a 2a 2a 20 54 68 69 73 20 73 68 6f 75  VC..** This shou
5120: 6c 64 20 62 65 20 64 6f 6e 65 20 66 69 72 73 74  ld be done first
5130: 20 73 6f 20 74 68 61 74 20 69 74 20 63 61 6e 20   so that it can 
5140: 73 75 63 63 65 73 73 66 75 6c 6c 79 20 70 72 65  successfully pre
5150: 76 65 6e 74 20 73 70 75 72 69 6f 75 73 0a 2a 2a  vent spurious.**
5160: 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
5170: 67 73 20 64 75 65 20 74 6f 20 73 75 62 73 65 71  gs due to subseq
5180: 75 65 6e 74 20 63 6f 6e 74 65 6e 74 20 69 6e 20  uent content in 
5190: 74 68 69 73 20 66 69 6c 65 20 61 6e 64 20 6f 74  this file and ot
51a0: 68 65 72 20 66 69 6c 65 73 0a 2a 2a 20 74 68 61  her files.** tha
51b0: 74 20 61 72 65 20 69 6e 63 6c 75 64 65 64 20 62  t are included b
51c0: 79 20 74 68 69 73 20 66 69 6c 65 2e 0a 2a 2f 0a  y this file..*/.
51d0: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
51e0: 49 6e 63 6c 75 64 65 20 6d 73 76 63 2e 68 20 69  Include msvc.h i
51f0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
5200: 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a  sqliteInt.h ****
5210: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5220: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5230: 42 65 67 69 6e 20 66 69 6c 65 20 6d 73 76 63 2e  Begin file msvc.
5240: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
5250: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
5270: 2f 2a 0a 2a 2a 20 32 30 31 35 20 4a 61 6e 75 61  /*.** 2015 Janua
5280: 72 79 20 31 32 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ry 12.**.** The 
5290: 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d 73  author disclaims
52a0: 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74 68   copyright to th
52b0: 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20  is source code. 
52c0: 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20   In place of.** 
52d0: 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20  a legal notice, 
52e0: 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73 69  here is a blessi
52f0: 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79  ng:.**.**    May
5300: 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64   you do good and
5310: 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20   not evil..**   
5320: 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66 6f   May you find fo
5330: 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79 6f  rgiveness for yo
5340: 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67 69  urself and forgi
5350: 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20  ve others..**   
5360: 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20 66   May you share f
5370: 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b  reely, never tak
5380: 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f  ing more than yo
5390: 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a  u give..**.*****
53a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
53e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20  *********.**.** 
53f0: 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69  This file contai
5400: 6e 73 20 63 6f 64 65 20 74 68 61 74 20 69 73 20  ns code that is 
5410: 73 70 65 63 69 66 69 63 20 74 6f 20 4d 53 56 43  specific to MSVC
5420: 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c  ..*/.#ifndef SQL
5430: 49 54 45 5f 4d 53 56 43 5f 48 0a 23 64 65 66 69  ITE_MSVC_H.#defi
5440: 6e 65 20 53 51 4c 49 54 45 5f 4d 53 56 43 5f 48  ne SQLITE_MSVC_H
5450: 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 4d  ..#if defined(_M
5460: 53 43 5f 56 45 52 29 0a 23 70 72 61 67 6d 61 20  SC_VER).#pragma 
5470: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5480: 3a 20 34 30 35 34 29 0a 23 70 72 61 67 6d 61 20  : 4054).#pragma 
5490: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54a0: 3a 20 34 30 35 35 29 0a 23 70 72 61 67 6d 61 20  : 4055).#pragma 
54b0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54c0: 3a 20 34 31 30 30 29 0a 23 70 72 61 67 6d 61 20  : 4100).#pragma 
54d0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
54e0: 3a 20 34 31 32 37 29 0a 23 70 72 61 67 6d 61 20  : 4127).#pragma 
54f0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5500: 3a 20 34 31 33 30 29 0a 23 70 72 61 67 6d 61 20  : 4130).#pragma 
5510: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5520: 3a 20 34 31 35 32 29 0a 23 70 72 61 67 6d 61 20  : 4152).#pragma 
5530: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5540: 3a 20 34 31 38 39 29 0a 23 70 72 61 67 6d 61 20  : 4189).#pragma 
5550: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5560: 3a 20 34 32 30 36 29 0a 23 70 72 61 67 6d 61 20  : 4206).#pragma 
5570: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5580: 3a 20 34 32 31 30 29 0a 23 70 72 61 67 6d 61 20  : 4210).#pragma 
5590: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55a0: 3a 20 34 32 33 32 29 0a 23 70 72 61 67 6d 61 20  : 4232).#pragma 
55b0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55c0: 3a 20 34 32 34 34 29 0a 23 70 72 61 67 6d 61 20  : 4244).#pragma 
55d0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
55e0: 3a 20 34 33 30 35 29 0a 23 70 72 61 67 6d 61 20  : 4305).#pragma 
55f0: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5600: 3a 20 34 33 30 36 29 0a 23 70 72 61 67 6d 61 20  : 4306).#pragma 
5610: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5620: 3a 20 34 37 30 32 29 0a 23 70 72 61 67 6d 61 20  : 4702).#pragma 
5630: 77 61 72 6e 69 6e 67 28 64 69 73 61 62 6c 65 20  warning(disable 
5640: 3a 20 34 37 30 36 29 0a 23 65 6e 64 69 66 20 2f  : 4706).#endif /
5650: 2a 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f 56  * defined(_MSC_V
5660: 45 52 29 20 2a 2f 0a 0a 23 65 6e 64 69 66 20 2f  ER) */..#endif /
5670: 2a 20 53 51 4c 49 54 45 5f 4d 53 56 43 5f 48 20  * SQLITE_MSVC_H 
5680: 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  */../***********
5690: 2a 2a 2a 20 45 6e 64 20 6f 66 20 6d 73 76 63 2e  *** End of msvc.
56a0: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
56b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
56c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
56d0: 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  **/./***********
56e0: 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e 67 20 77  *** Continuing w
56f0: 68 65 72 65 20 77 65 20 6c 65 66 74 20 6f 66 66  here we left off
5700: 20 69 6e 20 73 71 6c 69 74 65 49 6e 74 2e 68 20   in sqliteInt.h 
5710: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5720: 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 53 70 65 63 69  **/../*.** Speci
5730: 61 6c 20 73 65 74 75 70 20 66 6f 72 20 56 78 57  al setup for VxW
5740: 6f 72 6b 73 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  orks.*/./*******
5750: 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20  ******* Include 
5760: 76 78 77 6f 72 6b 73 2e 68 20 69 6e 20 74 68 65  vxworks.h in the
5770: 20 6d 69 64 64 6c 65 20 6f 66 20 73 71 6c 69 74   middle of sqlit
5780: 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  eInt.h *********
5790: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  ******/./*******
57a0: 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69  ******* Begin fi
57b0: 6c 65 20 76 78 77 6f 72 6b 73 2e 68 20 2a 2a 2a  le vxworks.h ***
57c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
57d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
57e0: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30  ******/./*.** 20
57f0: 31 35 2d 30 33 2d 30 32 0a 2a 2a 0a 2a 2a 20 54  15-03-02.**.** T
5800: 68 65 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61  he author discla
5810: 69 6d 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f  ims copyright to
5820: 20 74 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64   this source cod
5830: 65 2e 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a  e.  In place of.
5840: 2a 2a 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63  ** a legal notic
5850: 65 2c 20 68 65 72 65 20 69 73 20 61 20 62 6c 65  e, here is a ble
5860: 73 73 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20  ssing:.**.**    
5870: 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20  May you do good 
5880: 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a  and not evil..**
5890: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
58a0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
58b0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
58c0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a  rgive others..**
58d0: 20 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72      May you shar
58e0: 65 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20  e freely, never 
58f0: 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e  taking more than
5900: 20 79 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a   you give..**.**
5910: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5920: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5930: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5940: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5950: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 0a  ************.**.
5960: 2a 2a 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  ** This file con
5970: 74 61 69 6e 73 20 63 6f 64 65 20 74 68 61 74 20  tains code that 
5980: 69 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 57  is specific to W
5990: 69 6e 64 20 52 69 76 65 72 27 73 20 56 78 57 6f  ind River's VxWo
59a0: 72 6b 73 0a 2a 2f 0a 23 69 66 20 64 65 66 69 6e  rks.*/.#if defin
59b0: 65 64 28 5f 5f 52 54 50 5f 5f 29 20 7c 7c 20 64  ed(__RTP__) || d
59c0: 65 66 69 6e 65 64 28 5f 57 52 53 5f 4b 45 52 4e  efined(_WRS_KERN
59d0: 45 4c 29 0a 2f 2a 20 54 68 69 73 20 69 73 20 56  EL)./* This is V
59e0: 78 57 6f 72 6b 73 2e 20 20 53 65 74 20 75 70 20  xWorks.  Set up 
59f0: 74 68 69 6e 67 73 20 73 70 65 63 69 61 6c 6c 79  things specially
5a00: 20 66 6f 72 20 74 68 61 74 20 4f 53 0a 2a 2f 0a   for that OS.*/.
5a10: 23 69 6e 63 6c 75 64 65 20 3c 76 78 57 6f 72 6b  #include <vxWork
5a20: 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 70  s.h>.#include <p
5a30: 74 68 72 65 61 64 2e 68 3e 20 20 2f 2a 20 61 6d  thread.h>  /* am
5a40: 61 6c 67 61 6d 61 74 6f 72 3a 20 64 6f 6e 74 63  algamator: dontc
5a50: 61 63 68 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  ache */.#define 
5a60: 4f 53 5f 56 58 57 4f 52 4b 53 20 31 0a 23 64 65  OS_VXWORKS 1.#de
5a70: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 53 5f 4f  fine SQLITE_OS_O
5a80: 54 48 45 52 20 30 0a 23 64 65 66 69 6e 65 20 53  THER 0.#define S
5a90: 51 4c 49 54 45 5f 48 4f 4d 45 47 52 4f 57 4e 5f  QLITE_HOMEGROWN_
5aa0: 52 45 43 55 52 53 49 56 45 5f 4d 55 54 45 58 20  RECURSIVE_MUTEX 
5ab0: 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
5ac0: 5f 4f 4d 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e  _OMIT_LOAD_EXTEN
5ad0: 53 49 4f 4e 20 31 0a 23 64 65 66 69 6e 65 20 53  SION 1.#define S
5ae0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
5af0: 4b 49 4e 47 5f 53 54 59 4c 45 20 30 0a 23 64 65  KING_STYLE 0.#de
5b00: 66 69 6e 65 20 48 41 56 45 5f 55 54 49 4d 45 20  fine HAVE_UTIME 
5b10: 31 0a 23 65 6c 73 65 0a 2f 2a 20 54 68 69 73 20  1.#else./* This 
5b20: 69 73 20 6e 6f 74 20 56 78 57 6f 72 6b 73 2e 20  is not VxWorks. 
5b30: 2a 2f 0a 23 64 65 66 69 6e 65 20 4f 53 5f 56 58  */.#define OS_VX
5b40: 57 4f 52 4b 53 20 30 0a 23 64 65 66 69 6e 65 20  WORKS 0.#define 
5b50: 48 41 56 45 5f 46 43 48 4f 57 4e 20 31 0a 23 64  HAVE_FCHOWN 1.#d
5b60: 65 66 69 6e 65 20 48 41 56 45 5f 52 45 41 44 4c  efine HAVE_READL
5b70: 49 4e 4b 20 31 0a 23 64 65 66 69 6e 65 20 48 41  INK 1.#define HA
5b80: 56 45 5f 4c 53 54 41 54 20 31 0a 23 65 6e 64 69  VE_LSTAT 1.#endi
5b90: 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 5f 57 52  f /* defined(_WR
5ba0: 53 5f 4b 45 52 4e 45 4c 29 20 2a 2f 0a 0a 2f 2a  S_KERNEL) */../*
5bb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e  ************* En
5bc0: 64 20 6f 66 20 76 78 77 6f 72 6b 73 2e 68 20 2a  d of vxworks.h *
5bd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5be0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5bf0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
5c00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f  ************* Co
5c10: 6e 74 69 6e 75 69 6e 67 20 77 68 65 72 65 20 77  ntinuing where w
5c20: 65 20 6c 65 66 74 20 6f 66 66 20 69 6e 20 73 71  e left off in sq
5c30: 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a  liteInt.h ******
5c40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f  ************/../
5c50: 2a 0a 2a 2a 20 54 68 65 73 65 20 23 64 65 66 69  *.** These #defi
5c60: 6e 65 73 20 73 68 6f 75 6c 64 20 65 6e 61 62 6c  nes should enabl
5c70: 65 20 3e 32 47 42 20 66 69 6c 65 20 73 75 70 70  e >2GB file supp
5c80: 6f 72 74 20 6f 6e 20 50 4f 53 49 58 20 69 66 20  ort on POSIX if 
5c90: 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e  the.** underlyin
5ca0: 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  g operating syst
5cb0: 65 6d 20 73 75 70 70 6f 72 74 73 20 69 74 2e 20  em supports it. 
5cc0: 20 49 66 20 74 68 65 20 4f 53 20 6c 61 63 6b 73   If the OS lacks
5cd0: 0a 2a 2a 20 6c 61 72 67 65 20 66 69 6c 65 20 73  .** large file s
5ce0: 75 70 70 6f 72 74 2c 20 6f 72 20 69 66 20 74 68  upport, or if th
5cf0: 65 20 4f 53 20 69 73 20 77 69 6e 64 6f 77 73 2c  e OS is windows,
5d00: 20 74 68 65 73 65 20 73 68 6f 75 6c 64 20 62 65   these should be
5d10: 20 6e 6f 2d 6f 70 73 2e 0a 2a 2a 0a 2a 2a 20 54   no-ops..**.** T
5d20: 69 63 6b 65 74 20 23 32 37 33 39 3a 20 20 54 68  icket #2739:  Th
5d30: 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f 53 4f 55  e _LARGEFILE_SOU
5d40: 52 43 45 20 6d 61 63 72 6f 20 6d 75 73 74 20 61  RCE macro must a
5d50: 70 70 65 61 72 20 62 65 66 6f 72 65 20 61 6e 79  ppear before any
5d60: 0a 2a 2a 20 73 79 73 74 65 6d 20 23 69 6e 63 6c  .** system #incl
5d70: 75 64 65 73 2e 20 20 48 65 6e 63 65 2c 20 74 68  udes.  Hence, th
5d80: 69 73 20 62 6c 6f 63 6b 20 6f 66 20 63 6f 64 65  is block of code
5d90: 20 6d 75 73 74 20 62 65 20 74 68 65 20 76 65 72   must be the ver
5da0: 79 20 66 69 72 73 74 0a 2a 2a 20 63 6f 64 65 20  y first.** code 
5db0: 69 6e 20 61 6c 6c 20 73 6f 75 72 63 65 20 66 69  in all source fi
5dc0: 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 4c 61 72 67 65  les..**.** Large
5dd0: 20 66 69 6c 65 20 73 75 70 70 6f 72 74 20 63 61   file support ca
5de0: 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 75 73  n be disabled us
5df0: 69 6e 67 20 74 68 65 20 2d 44 53 51 4c 49 54 45  ing the -DSQLITE
5e00: 5f 44 49 53 41 42 4c 45 5f 4c 46 53 20 73 77 69  _DISABLE_LFS swi
5e10: 74 63 68 0a 2a 2a 20 6f 6e 20 74 68 65 20 63 6f  tch.** on the co
5e20: 6d 70 69 6c 65 72 20 63 6f 6d 6d 61 6e 64 20 6c  mpiler command l
5e30: 69 6e 65 2e 20 20 54 68 69 73 20 69 73 20 6e 65  ine.  This is ne
5e40: 63 65 73 73 61 72 79 20 69 66 20 79 6f 75 20 61  cessary if you a
5e50: 72 65 20 63 6f 6d 70 69 6c 69 6e 67 0a 2a 2a 20  re compiling.** 
5e60: 6f 6e 20 61 20 72 65 63 65 6e 74 20 6d 61 63 68  on a recent mach
5e70: 69 6e 65 20 28 65 78 3a 20 52 65 64 20 48 61 74  ine (ex: Red Hat
5e80: 20 37 2e 32 29 20 62 75 74 20 79 6f 75 20 77 61   7.2) but you wa
5e90: 6e 74 20 79 6f 75 72 20 63 6f 64 65 20 74 6f 20  nt your code to 
5ea0: 77 6f 72 6b 0a 2a 2a 20 6f 6e 20 61 6e 20 6f 6c  work.** on an ol
5eb0: 64 65 72 20 6d 61 63 68 69 6e 65 20 28 65 78 3a  der machine (ex:
5ec0: 20 52 65 64 20 48 61 74 20 36 2e 30 29 2e 20 20   Red Hat 6.0).  
5ed0: 49 66 20 79 6f 75 20 63 6f 6d 70 69 6c 65 20 6f  If you compile o
5ee0: 6e 20 52 65 64 20 48 61 74 20 37 2e 32 0a 2a 2a  n Red Hat 7.2.**
5ef0: 20 77 69 74 68 6f 75 74 20 74 68 69 73 20 6f 70   without this op
5f00: 74 69 6f 6e 2c 20 4c 46 53 20 69 73 20 65 6e 61  tion, LFS is ena
5f10: 62 6c 65 2e 20 20 42 75 74 20 4c 46 53 20 64 6f  ble.  But LFS do
5f20: 65 73 20 6e 6f 74 20 65 78 69 73 74 20 69 6e 20  es not exist in 
5f30: 74 68 65 20 6b 65 72 6e 65 6c 0a 2a 2a 20 69 6e  the kernel.** in
5f40: 20 52 65 64 20 48 61 74 20 36 2e 30 2c 20 73 6f   Red Hat 6.0, so
5f50: 20 74 68 65 20 63 6f 64 65 20 77 6f 6e 27 74 20   the code won't 
5f60: 77 6f 72 6b 2e 20 20 48 65 6e 63 65 2c 20 66 6f  work.  Hence, fo
5f70: 72 20 6d 61 78 69 6d 75 6d 20 62 69 6e 61 72 79  r maximum binary
5f80: 0a 2a 2a 20 70 6f 72 74 61 62 69 6c 69 74 79 20  .** portability 
5f90: 79 6f 75 20 73 68 6f 75 6c 64 20 6f 6d 69 74 20  you should omit 
5fa0: 4c 46 53 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70  LFS..**.** The p
5fb0: 72 65 76 69 6f 75 73 20 70 61 72 61 67 72 61 70  revious paragrap
5fc0: 68 20 77 61 73 20 77 72 69 74 74 65 6e 20 69 6e  h was written in
5fd0: 20 32 30 30 35 2e 20 20 28 54 68 69 73 20 70 61   2005.  (This pa
5fe0: 72 61 67 72 61 70 68 20 69 73 20 77 72 69 74 74  ragraph is writt
5ff0: 65 6e 0a 2a 2a 20 6f 6e 20 32 30 30 38 2d 31 31  en.** on 2008-11
6000: 2d 32 38 2e 29 20 54 68 65 73 65 20 64 61 79 73  -28.) These days
6010: 2c 20 61 6c 6c 20 4c 69 6e 75 78 20 6b 65 72 6e  , all Linux kern
6020: 65 6c 73 20 73 75 70 70 6f 72 74 20 6c 61 72 67  els support larg
6030: 65 20 66 69 6c 65 73 2c 20 73 6f 0a 2a 2a 20 79  e files, so.** y
6040: 6f 75 20 73 68 6f 75 6c 64 20 70 72 6f 62 61 62  ou should probab
6050: 6c 79 20 6c 65 61 76 65 20 4c 46 53 20 65 6e 61  ly leave LFS ena
6060: 62 6c 65 64 2e 20 20 42 75 74 20 73 6f 6d 65 20  bled.  But some 
6070: 65 6d 62 65 64 64 65 64 20 70 6c 61 74 66 6f 72  embedded platfor
6080: 6d 73 20 6d 69 67 68 74 0a 2a 2a 20 6c 61 63 6b  ms might.** lack
6090: 20 4c 46 53 20 69 6e 20 77 68 69 63 68 20 63 61   LFS in which ca
60a0: 73 65 20 74 68 65 20 53 51 4c 49 54 45 5f 44 49  se the SQLITE_DI
60b0: 53 41 42 4c 45 5f 4c 46 53 20 6d 61 63 72 6f 20  SABLE_LFS macro 
60c0: 6d 69 67 68 74 20 73 74 69 6c 6c 20 62 65 20 75  might still be u
60d0: 73 65 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 53 69 6d  seful..**.** Sim
60e0: 69 6c 61 72 20 69 73 20 74 72 75 65 20 66 6f 72  ilar is true for
60f0: 20 4d 61 63 20 4f 53 20 58 2e 20 20 4c 46 53 20   Mac OS X.  LFS 
6100: 69 73 20 6f 6e 6c 79 20 73 75 70 70 6f 72 74 65  is only supporte
6110: 64 20 6f 6e 20 4d 61 63 20 4f 53 20 58 20 39 20  d on Mac OS X 9 
6120: 61 6e 64 20 6c 61 74 65 72 2e 0a 2a 2f 0a 23 69  and later..*/.#i
6130: 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 44 49 53  fndef SQLITE_DIS
6140: 41 42 4c 45 5f 4c 46 53 0a 23 20 64 65 66 69 6e  ABLE_LFS.# defin
6150: 65 20 5f 4c 41 52 47 45 5f 46 49 4c 45 20 20 20  e _LARGE_FILE   
6160: 20 20 20 20 31 0a 23 20 69 66 6e 64 65 66 20 5f      1.# ifndef _
6170: 46 49 4c 45 5f 4f 46 46 53 45 54 5f 42 49 54 53  FILE_OFFSET_BITS
6180: 0a 23 20 20 20 64 65 66 69 6e 65 20 5f 46 49 4c  .#   define _FIL
6190: 45 5f 4f 46 46 53 45 54 5f 42 49 54 53 20 36 34  E_OFFSET_BITS 64
61a0: 0a 23 20 65 6e 64 69 66 0a 23 20 64 65 66 69 6e  .# endif.# defin
61b0: 65 20 5f 4c 41 52 47 45 46 49 4c 45 5f 53 4f 55  e _LARGEFILE_SOU
61c0: 52 43 45 20 31 0a 23 65 6e 64 69 66 0a 0a 2f 2a  RCE 1.#endif../*
61d0: 20 54 68 65 20 47 43 43 5f 56 45 52 53 49 4f 4e   The GCC_VERSION
61e0: 20 61 6e 64 20 4d 53 56 43 5f 56 45 52 53 49 4f   and MSVC_VERSIO
61f0: 4e 20 6d 61 63 72 6f 73 20 61 72 65 20 75 73 65  N macros are use
6200: 64 20 74 6f 0a 2a 2a 20 63 6f 6e 64 69 74 69 6f  d to.** conditio
6210: 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65 20 6f 70  nally include op
6220: 74 69 6d 69 7a 61 74 69 6f 6e 73 20 66 6f 72 20  timizations for 
6230: 65 61 63 68 20 6f 66 20 74 68 65 73 65 20 63 6f  each of these co
6240: 6d 70 69 6c 65 72 73 2e 20 20 41 0a 2a 2a 20 76  mpilers.  A.** v
6250: 61 6c 75 65 20 6f 66 20 30 20 6d 65 61 6e 73 20  alue of 0 means 
6260: 74 68 61 74 20 63 6f 6d 70 69 6c 65 72 20 69 73  that compiler is
6270: 20 6e 6f 74 20 62 65 69 6e 67 20 75 73 65 64 2e   not being used.
6280: 20 20 54 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f    The.** SQLITE_
6290: 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49  DISABLE_INTRINSI
62a0: 43 20 6d 61 63 72 6f 20 6d 65 61 6e 73 20 64 6f  C macro means do
62b0: 20 6e 6f 74 20 75 73 65 20 61 6e 79 20 63 6f 6d   not use any com
62c0: 70 69 6c 65 72 2d 73 70 65 63 69 66 69 63 0a 2a  piler-specific.*
62d0: 2a 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2c  * optimizations,
62e0: 20 61 6e 64 20 68 65 6e 63 65 20 73 65 74 20 61   and hence set a
62f0: 6c 6c 20 63 6f 6d 70 69 6c 65 72 20 6d 61 63 72  ll compiler macr
6300: 6f 73 20 74 6f 20 30 0a 2a 2a 0a 2a 2a 20 54 68  os to 0.**.** Th
6310: 65 72 65 20 77 61 73 20 6f 6e 63 65 20 61 6c 73  ere was once als
6320: 6f 20 61 20 43 4c 41 4e 47 5f 56 45 52 53 49 4f  o a CLANG_VERSIO
6330: 4e 20 6d 61 63 72 6f 2e 20 20 48 6f 77 65 76 65  N macro.  Howeve
6340: 72 2c 20 77 65 20 6c 65 61 72 6e 20 74 68 61 74  r, we learn that
6350: 20 74 68 65 0a 2a 2a 20 76 65 72 73 69 6f 6e 20   the.** version 
6360: 6e 75 6d 62 65 72 73 20 69 6e 20 63 6c 61 6e 67  numbers in clang
6370: 20 61 72 65 20 66 6f 72 20 22 6d 61 72 6b 65 74   are for "market
6380: 69 6e 67 22 20 6f 6e 6c 79 20 61 6e 64 20 61 72  ing" only and ar
6390: 65 20 69 6e 63 6f 6e 73 69 73 74 65 6e 74 0a 2a  e inconsistent.*
63a0: 2a 20 61 6e 64 20 75 6e 72 65 6c 69 61 62 6c 65  * and unreliable
63b0: 2e 20 20 46 6f 72 74 75 6e 61 74 65 6c 79 2c 20  .  Fortunately, 
63c0: 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  all versions of 
63d0: 63 6c 61 6e 67 20 61 6c 73 6f 20 72 65 63 6f 67  clang also recog
63e0: 6e 69 7a 65 20 74 68 65 0a 2a 2a 20 67 63 63 20  nize the.** gcc 
63f0: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 20  version numbers 
6400: 61 6e 64 20 68 61 76 65 20 72 65 61 73 6f 6e 61  and have reasona
6410: 62 6c 65 20 73 65 74 74 69 6e 67 73 20 66 6f 72  ble settings for
6420: 20 67 63 63 20 76 65 72 73 69 6f 6e 20 6e 75 6d   gcc version num
6430: 62 65 72 73 2c 0a 2a 2a 20 73 6f 20 74 68 65 20  bers,.** so the 
6440: 47 43 43 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72  GCC_VERSION macr
6450: 6f 20 77 69 6c 6c 20 62 65 20 73 65 74 20 74 6f  o will be set to
6460: 20 61 20 63 6f 72 72 65 63 74 20 6e 6f 6e 2d 7a   a correct non-z
6470: 65 72 6f 20 76 61 6c 75 65 20 65 76 65 6e 0a 2a  ero value even.*
6480: 2a 20 77 68 65 6e 20 63 6f 6d 70 69 6c 69 6e 67  * when compiling
6490: 20 77 69 74 68 20 63 6c 61 6e 67 2e 0a 2a 2f 0a   with clang..*/.
64a0: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e  #if defined(__GN
64b0: 55 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  UC__) && !define
64c0: 64 28 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  d(SQLITE_DISABLE
64d0: 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23 20 64 65  _INTRINSIC).# de
64e0: 66 69 6e 65 20 47 43 43 5f 56 45 52 53 49 4f 4e  fine GCC_VERSION
64f0: 20 28 5f 5f 47 4e 55 43 5f 5f 2a 31 30 30 30 30   (__GNUC__*10000
6500: 30 30 2b 5f 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f  00+__GNUC_MINOR_
6510: 5f 2a 31 30 30 30 2b 5f 5f 47 4e 55 43 5f 50 41  _*1000+__GNUC_PA
6520: 54 43 48 4c 45 56 45 4c 5f 5f 29 0a 23 65 6c 73  TCHLEVEL__).#els
6530: 65 0a 23 20 64 65 66 69 6e 65 20 47 43 43 5f 56  e.# define GCC_V
6540: 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64 69 66 0a  ERSION 0.#endif.
6550: 23 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  #if defined(_MSC
6560: 5f 56 45 52 29 20 26 26 20 21 64 65 66 69 6e 65  _VER) && !define
6570: 64 28 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  d(SQLITE_DISABLE
6580: 5f 49 4e 54 52 49 4e 53 49 43 29 0a 23 20 64 65  _INTRINSIC).# de
6590: 66 69 6e 65 20 4d 53 56 43 5f 56 45 52 53 49 4f  fine MSVC_VERSIO
65a0: 4e 20 5f 4d 53 43 5f 56 45 52 0a 23 65 6c 73 65  N _MSC_VER.#else
65b0: 0a 23 20 64 65 66 69 6e 65 20 4d 53 56 43 5f 56  .# define MSVC_V
65c0: 45 52 53 49 4f 4e 20 30 0a 23 65 6e 64 69 66 0a  ERSION 0.#endif.
65d0: 0a 2f 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 76  ./* Needed for v
65e0: 61 72 69 6f 75 73 20 64 65 66 69 6e 69 74 69 6f  arious definitio
65f0: 6e 73 2e 2e 2e 20 2a 2f 0a 23 69 66 20 64 65 66  ns... */.#if def
6600: 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26  ined(__GNUC__) &
6610: 26 20 21 64 65 66 69 6e 65 64 28 5f 47 4e 55 5f  & !defined(_GNU_
6620: 53 4f 55 52 43 45 29 0a 23 20 64 65 66 69 6e 65  SOURCE).# define
6630: 20 5f 47 4e 55 5f 53 4f 55 52 43 45 0a 23 65 6e   _GNU_SOURCE.#en
6640: 64 69 66 0a 0a 23 69 66 20 64 65 66 69 6e 65 64  dif..#if defined
6650: 28 5f 5f 4f 70 65 6e 42 53 44 5f 5f 29 20 26 26  (__OpenBSD__) &&
6660: 20 21 64 65 66 69 6e 65 64 28 5f 42 53 44 5f 53   !defined(_BSD_S
6670: 4f 55 52 43 45 29 0a 23 20 64 65 66 69 6e 65 20  OURCE).# define 
6680: 5f 42 53 44 5f 53 4f 55 52 43 45 0a 23 65 6e 64  _BSD_SOURCE.#end
6690: 69 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69  if../*.** For Mi
66a0: 6e 47 57 2c 20 63 68 65 63 6b 20 74 6f 20 73 65  nGW, check to se
66b0: 65 20 69 66 20 77 65 20 63 61 6e 20 69 6e 63 6c  e if we can incl
66c0: 75 64 65 20 74 68 65 20 68 65 61 64 65 72 20 66  ude the header f
66d0: 69 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69  ile containing i
66e0: 74 73 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 69 6e  ts.** version in
66f0: 66 6f 72 6d 61 74 69 6f 6e 2c 20 61 6d 6f 6e 67  formation, among
6700: 20 6f 74 68 65 72 20 74 68 69 6e 67 73 2e 20 20   other things.  
6710: 4e 6f 72 6d 61 6c 6c 79 2c 20 74 68 69 73 20 69  Normally, this i
6720: 6e 74 65 72 6e 61 6c 20 4d 69 6e 47 57 0a 2a 2a  nternal MinGW.**
6730: 20 68 65 61 64 65 72 20 66 69 6c 65 20 77 6f 75   header file wou
6740: 6c 64 20 5b 6f 6e 6c 79 5d 20 62 65 20 69 6e 63  ld [only] be inc
6750: 6c 75 64 65 64 20 61 75 74 6f 6d 61 74 69 63 61  luded automatica
6760: 6c 6c 79 20 62 79 20 6f 74 68 65 72 20 4d 69 6e  lly by other Min
6770: 47 57 20 68 65 61 64 65 72 0a 2a 2a 20 66 69 6c  GW header.** fil
6780: 65 73 3b 20 68 6f 77 65 76 65 72 2c 20 74 68 65  es; however, the
6790: 20 63 6f 6e 74 61 69 6e 65 64 20 76 65 72 73 69   contained versi
67a0: 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69  on information i
67b0: 73 20 6e 6f 77 20 72 65 71 75 69 72 65 64 20 62  s now required b
67c0: 79 20 74 68 69 73 0a 2a 2a 20 68 65 61 64 65 72  y this.** header
67d0: 20 66 69 6c 65 20 74 6f 20 77 6f 72 6b 20 61 72   file to work ar
67e0: 6f 75 6e 64 20 62 69 6e 61 72 79 20 63 6f 6d 70  ound binary comp
67f0: 61 74 69 62 69 6c 69 74 79 20 69 73 73 75 65 73  atibility issues
6800: 20 28 73 65 65 20 62 65 6c 6f 77 29 20 61 6e 64   (see below) and
6810: 0a 2a 2a 20 74 68 69 73 20 69 73 20 74 68 65 20  .** this is the 
6820: 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 77 61 79 20 74  only known way t
6830: 6f 20 72 65 6c 69 61 62 6c 79 20 6f 62 74 61 69  o reliably obtai
6840: 6e 20 69 74 2e 20 20 54 68 69 73 20 65 6e 74 69  n it.  This enti
6850: 72 65 20 23 69 66 20 62 6c 6f 63 6b 0a 2a 2a 20  re #if block.** 
6860: 77 6f 75 6c 64 20 62 65 20 63 6f 6d 70 6c 65 74  would be complet
6870: 65 6c 79 20 75 6e 6e 65 63 65 73 73 61 72 79 20  ely unnecessary 
6880: 69 66 20 74 68 65 72 65 20 77 61 73 20 61 6e 79  if there was any
6890: 20 6f 74 68 65 72 20 77 61 79 20 6f 66 20 64 65   other way of de
68a0: 74 65 63 74 69 6e 67 0a 2a 2a 20 4d 69 6e 47 57  tecting.** MinGW
68b0: 20 76 69 61 20 74 68 65 69 72 20 70 72 65 70 72   via their prepr
68c0: 6f 63 65 73 73 6f 72 20 28 65 2e 67 2e 20 69 66  ocessor (e.g. if
68d0: 20 74 68 65 79 20 63 75 73 74 6f 6d 69 7a 65 64   they customized
68e0: 20 74 68 65 69 72 20 47 43 43 20 74 6f 20 64 65   their GCC to de
68f0: 66 69 6e 65 0a 2a 2a 20 73 6f 6d 65 20 4d 69 6e  fine.** some Min
6900: 47 57 2d 73 70 65 63 69 66 69 63 20 6d 61 63 72  GW-specific macr
6910: 6f 73 29 2e 20 20 57 68 65 6e 20 63 6f 6d 70 69  os).  When compi
6920: 6c 69 6e 67 20 66 6f 72 20 4d 69 6e 47 57 2c 20  ling for MinGW, 
6930: 65 69 74 68 65 72 20 74 68 65 0a 2a 2a 20 5f 48  either the.** _H
6940: 41 56 45 5f 4d 49 4e 47 57 5f 48 20 6f 72 20 5f  AVE_MINGW_H or _
6950: 48 41 56 45 5f 5f 4d 49 4e 47 57 5f 48 20 28 6e  HAVE__MINGW_H (n
6960: 6f 74 65 20 74 68 65 20 65 78 74 72 61 20 75 6e  ote the extra un
6970: 64 65 72 73 63 6f 72 65 29 20 6d 61 63 72 6f 20  derscore) macro 
6980: 6d 75 73 74 20 62 65 0a 2a 2a 20 64 65 66 69 6e  must be.** defin
6990: 65 64 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 64  ed; otherwise, d
69a0: 65 74 65 63 74 69 6f 6e 20 6f 66 20 63 6f 6e 64  etection of cond
69b0: 69 74 69 6f 6e 73 20 73 70 65 63 69 66 69 63 20  itions specific 
69c0: 74 6f 20 4d 69 6e 47 57 20 77 69 6c 6c 20 62 65  to MinGW will be
69d0: 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2f  .** disabled..*/
69e0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 48 41  .#if defined(_HA
69f0: 56 45 5f 4d 49 4e 47 57 5f 48 29 0a 23 20 69 6e  VE_MINGW_H).# in
6a00: 63 6c 75 64 65 20 22 6d 69 6e 67 77 2e 68 22 0a  clude "mingw.h".
6a10: 23 65 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 48  #elif defined(_H
6a20: 41 56 45 5f 5f 4d 49 4e 47 57 5f 48 29 0a 23 20  AVE__MINGW_H).# 
6a30: 69 6e 63 6c 75 64 65 20 22 5f 6d 69 6e 67 77 2e  include "_mingw.
6a40: 68 22 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a  h".#endif../*.**
6a50: 20 46 6f 72 20 4d 69 6e 47 57 20 76 65 72 73 69   For MinGW versi
6a60: 6f 6e 20 34 2e 78 20 28 61 6e 64 20 68 69 67 68  on 4.x (and high
6a70: 65 72 29 2c 20 63 68 65 63 6b 20 74 6f 20 73 65  er), check to se
6a80: 65 20 69 66 20 74 68 65 20 5f 55 53 45 5f 33 32  e if the _USE_32
6a90: 42 49 54 5f 54 49 4d 45 5f 54 0a 2a 2a 20 64 65  BIT_TIME_T.** de
6aa0: 66 69 6e 65 20 69 73 20 72 65 71 75 69 72 65 64  fine is required
6ab0: 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 62 69 6e   to maintain bin
6ac0: 61 72 79 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ary compatibilit
6ad0: 79 20 77 69 74 68 20 74 68 65 20 4d 53 56 43 20  y with the MSVC 
6ae0: 72 75 6e 74 69 6d 65 0a 2a 2a 20 6c 69 62 72 61  runtime.** libra
6af0: 72 79 20 69 6e 20 75 73 65 20 28 65 2e 67 2e 20  ry in use (e.g. 
6b00: 66 6f 72 20 57 69 6e 64 6f 77 73 20 58 50 29 2e  for Windows XP).
6b10: 0a 2a 2f 0a 23 69 66 20 21 64 65 66 69 6e 65 64  .*/.#if !defined
6b20: 28 5f 55 53 45 5f 33 32 42 49 54 5f 54 49 4d 45  (_USE_32BIT_TIME
6b30: 5f 54 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  _T) && !defined(
6b40: 5f 55 53 45 5f 36 34 42 49 54 5f 54 49 4d 45 5f  _USE_64BIT_TIME_
6b50: 54 29 20 26 26 20 5c 0a 20 20 20 20 64 65 66 69  T) && \.    defi
6b60: 6e 65 64 28 5f 57 49 4e 33 32 29 20 26 26 20 21  ned(_WIN32) && !
6b70: 64 65 66 69 6e 65 64 28 5f 57 49 4e 36 34 29 20  defined(_WIN64) 
6b80: 26 26 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64  && \.    defined
6b90: 28 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f 52 5f 56  (__MINGW_MAJOR_V
6ba0: 45 52 53 49 4f 4e 29 20 26 26 20 5f 5f 4d 49 4e  ERSION) && __MIN
6bb0: 47 57 5f 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e  GW_MAJOR_VERSION
6bc0: 20 3e 3d 20 34 20 26 26 20 5c 0a 20 20 20 20 64   >= 4 && \.    d
6bd0: 65 66 69 6e 65 64 28 5f 5f 4d 53 56 43 52 54 5f  efined(__MSVCRT_
6be0: 5f 29 0a 23 20 64 65 66 69 6e 65 20 5f 55 53 45  _).# define _USE
6bf0: 5f 33 32 42 49 54 5f 54 49 4d 45 5f 54 0a 23 65  _32BIT_TIME_T.#e
6c00: 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20 70 75 62  ndif../* The pub
6c10: 6c 69 63 20 53 51 4c 69 74 65 20 69 6e 74 65 72  lic SQLite inter
6c20: 66 61 63 65 2e 20 20 54 68 65 20 5f 46 49 4c 45  face.  The _FILE
6c30: 5f 4f 46 46 53 45 54 5f 42 49 54 53 20 6d 61 63  _OFFSET_BITS mac
6c40: 72 6f 20 6d 75 73 74 20 61 70 70 65 61 72 0a 2a  ro must appear.*
6c50: 2a 20 66 69 72 73 74 20 69 6e 20 51 4e 58 2e 20  * first in QNX. 
6c60: 20 41 6c 73 6f 2c 20 74 68 65 20 5f 55 53 45 5f   Also, the _USE_
6c70: 33 32 42 49 54 5f 54 49 4d 45 5f 54 20 6d 61 63  32BIT_TIME_T mac
6c80: 72 6f 20 6d 75 73 74 20 61 70 70 65 61 72 20 66  ro must appear f
6c90: 69 72 73 74 20 66 6f 72 0a 2a 2a 20 4d 69 6e 47  irst for.** MinG
6ca0: 57 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  W..*/./*********
6cb0: 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20 73 71  ***** Include sq
6cc0: 6c 69 74 65 33 2e 68 20 69 6e 20 74 68 65 20 6d  lite3.h in the m
6cd0: 69 64 64 6c 65 20 6f 66 20 73 71 6c 69 74 65 49  iddle of sqliteI
6ce0: 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  nt.h ***********
6cf0: 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****/./*********
6d00: 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69 6c 65  ***** Begin file
6d10: 20 73 71 6c 69 74 65 33 2e 68 20 2a 2a 2a 2a 2a   sqlite3.h *****
6d20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6d30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6d40: 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30 30 31  ****/./*.** 2001
6d50: 2d 30 39 2d 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65  -09-15.**.** The
6d60: 20 61 75 74 68 6f 72 20 64 69 73 63 6c 61 69 6d   author disclaim
6d70: 73 20 63 6f 70 79 72 69 67 68 74 20 74 6f 20 74  s copyright to t
6d80: 68 69 73 20 73 6f 75 72 63 65 20 63 6f 64 65 2e  his source code.
6d90: 20 20 49 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a    In place of.**
6da0: 20 61 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 2c   a legal notice,
6db0: 20 68 65 72 65 20 69 73 20 61 20 62 6c 65 73 73   here is a bless
6dc0: 69 6e 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61  ing:.**.**    Ma
6dd0: 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64 20 61 6e  y you do good an
6de0: 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 2a 2a 20 20  d not evil..**  
6df0: 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64 20 66    May you find f
6e00: 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72 20 79  orgiveness for y
6e10: 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f 72 67  ourself and forg
6e20: 69 76 65 20 6f 74 68 65 72 73 2e 0a 2a 2a 20 20  ive others..**  
6e30: 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65 20    May you share 
6e40: 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74 61  freely, never ta
6e50: 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20 79  king more than y
6e60: 6f 75 20 67 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a  ou give..**.****
6e70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6e80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6e90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6ea0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6eb0: 2a 2a 2a 2a 2a 0a 2a 2a 20 54 68 69 73 20 68 65  *****.** This he
6ec0: 61 64 65 72 20 66 69 6c 65 20 64 65 66 69 6e 65  ader file define
6ed0: 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 20  s the interface 
6ee0: 74 68 61 74 20 74 68 65 20 53 51 4c 69 74 65 20  that the SQLite 
6ef0: 6c 69 62 72 61 72 79 0a 2a 2a 20 70 72 65 73 65  library.** prese
6f00: 6e 74 73 20 74 6f 20 63 6c 69 65 6e 74 20 70 72  nts to client pr
6f10: 6f 67 72 61 6d 73 2e 20 20 49 66 20 61 20 43 2d  ograms.  If a C-
6f20: 66 75 6e 63 74 69 6f 6e 2c 20 73 74 72 75 63 74  function, struct
6f30: 75 72 65 2c 20 64 61 74 61 74 79 70 65 2c 0a 2a  ure, datatype,.*
6f40: 2a 20 6f 72 20 63 6f 6e 73 74 61 6e 74 20 64 65  * or constant de
6f50: 66 69 6e 69 74 69 6f 6e 20 64 6f 65 73 20 6e 6f  finition does no
6f60: 74 20 61 70 70 65 61 72 20 69 6e 20 74 68 69 73  t appear in this
6f70: 20 66 69 6c 65 2c 20 74 68 65 6e 20 69 74 20 69   file, then it i
6f80: 73 0a 2a 2a 20 6e 6f 74 20 61 20 70 75 62 6c 69  s.** not a publi
6f90: 73 68 65 64 20 41 50 49 20 6f 66 20 53 51 4c 69  shed API of SQLi
6fa0: 74 65 2c 20 69 73 20 73 75 62 6a 65 63 74 20 74  te, is subject t
6fb0: 6f 20 63 68 61 6e 67 65 20 77 69 74 68 6f 75 74  o change without
6fc0: 0a 2a 2a 20 6e 6f 74 69 63 65 2c 20 61 6e 64 20  .** notice, and 
6fd0: 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 72 65  should not be re
6fe0: 66 65 72 65 6e 63 65 64 20 62 79 20 70 72 6f 67  ferenced by prog
6ff0: 72 61 6d 73 20 74 68 61 74 20 75 73 65 20 53 51  rams that use SQ
7000: 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65  Lite..**.** Some
7010: 20 6f 66 20 74 68 65 20 64 65 66 69 6e 69 74 69   of the definiti
7020: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 69 6e 20  ons that are in 
7030: 74 68 69 73 20 66 69 6c 65 20 61 72 65 20 6d 61  this file are ma
7040: 72 6b 65 64 20 61 73 0a 2a 2a 20 22 65 78 70 65  rked as.** "expe
7050: 72 69 6d 65 6e 74 61 6c 22 2e 20 20 45 78 70 65  rimental".  Expe
7060: 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72 66 61  rimental interfa
7070: 63 65 73 20 61 72 65 20 6e 6f 72 6d 61 6c 6c 79  ces are normally
7080: 20 6e 65 77 0a 2a 2a 20 66 65 61 74 75 72 65 73   new.** features
7090: 20 72 65 63 65 6e 74 6c 79 20 61 64 64 65 64 20   recently added 
70a0: 74 6f 20 53 51 4c 69 74 65 2e 20 20 57 65 20 64  to SQLite.  We d
70b0: 6f 20 6e 6f 74 20 61 6e 74 69 63 69 70 61 74 65  o not anticipate
70c0: 20 63 68 61 6e 67 65 73 0a 2a 2a 20 74 6f 20 65   changes.** to e
70d0: 78 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65  xperimental inte
70e0: 72 66 61 63 65 73 20 62 75 74 20 72 65 73 65 72  rfaces but reser
70f0: 76 65 20 74 68 65 20 72 69 67 68 74 20 74 6f 20  ve the right to 
7100: 6d 61 6b 65 20 6d 69 6e 6f 72 20 63 68 61 6e 67  make minor chang
7110: 65 73 0a 2a 2a 20 69 66 20 65 78 70 65 72 69 65  es.** if experie
7120: 6e 63 65 20 66 72 6f 6d 20 75 73 65 20 22 69 6e  nce from use "in
7130: 20 74 68 65 20 77 69 6c 64 22 20 73 75 67 67 65   the wild" sugge
7140: 73 74 20 73 75 63 68 20 63 68 61 6e 67 65 73 20  st such changes 
7150: 61 72 65 20 70 72 75 64 65 6e 74 2e 0a 2a 2a 0a  are prudent..**.
7160: 2a 2a 20 54 68 65 20 6f 66 66 69 63 69 61 6c 20  ** The official 
7170: 43 2d 6c 61 6e 67 75 61 67 65 20 41 50 49 20 64  C-language API d
7180: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
7190: 20 53 51 4c 69 74 65 20 69 73 20 64 65 72 69 76   SQLite is deriv
71a0: 65 64 0a 2a 2a 20 66 72 6f 6d 20 63 6f 6d 6d 65  ed.** from comme
71b0: 6e 74 73 20 69 6e 20 74 68 69 73 20 66 69 6c 65  nts in this file
71c0: 2e 20 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  .  This file is 
71d0: 74 68 65 20 61 75 74 68 6f 72 69 74 61 74 69 76  the authoritativ
71e0: 65 20 73 6f 75 72 63 65 0a 2a 2a 20 6f 6e 20 68  e source.** on h
71f0: 6f 77 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  ow SQLite interf
7200: 61 63 65 73 20 61 72 65 20 73 75 70 70 6f 73 65  aces are suppose
7210: 64 20 74 6f 20 6f 70 65 72 61 74 65 2e 0a 2a 2a  d to operate..**
7220: 0a 2a 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20  .** The name of 
7230: 74 68 69 73 20 66 69 6c 65 20 75 6e 64 65 72 20  this file under 
7240: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d 61  configuration ma
7250: 6e 61 67 65 6d 65 6e 74 20 69 73 20 22 73 71 6c  nagement is "sql
7260: 69 74 65 2e 68 2e 69 6e 22 2e 0a 2a 2a 20 54 68  ite.h.in"..** Th
7270: 65 20 6d 61 6b 65 66 69 6c 65 20 6d 61 6b 65 73  e makefile makes
7280: 20 73 6f 6d 65 20 6d 69 6e 6f 72 20 63 68 61 6e   some minor chan
7290: 67 65 73 20 74 6f 20 74 68 69 73 20 66 69 6c 65  ges to this file
72a0: 20 28 73 75 63 68 20 61 73 20 69 6e 73 65 72 74   (such as insert
72b0: 69 6e 67 0a 2a 2a 20 74 68 65 20 76 65 72 73 69  ing.** the versi
72c0: 6f 6e 20 6e 75 6d 62 65 72 29 20 61 6e 64 20 63  on number) and c
72d0: 68 61 6e 67 65 73 20 69 74 73 20 6e 61 6d 65 20  hanges its name 
72e0: 74 6f 20 22 73 71 6c 69 74 65 33 2e 68 22 20 61  to "sqlite3.h" a
72f0: 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20 74 68 65  s.** part of the
7300: 20 62 75 69 6c 64 20 70 72 6f 63 65 73 73 2e 0a   build process..
7310: 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54  */.#ifndef SQLIT
7320: 45 33 5f 48 0a 23 64 65 66 69 6e 65 20 53 51 4c  E3_H.#define SQL
7330: 49 54 45 33 5f 48 0a 23 69 6e 63 6c 75 64 65 20  ITE3_H.#include 
7340: 3c 73 74 64 61 72 67 2e 68 3e 20 20 20 20 20 2f  <stdarg.h>     /
7350: 2a 20 4e 65 65 64 65 64 20 66 6f 72 20 74 68 65  * Needed for the
7360: 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 76   definition of v
7370: 61 5f 6c 69 73 74 20 2a 2f 0a 0a 2f 2a 0a 2a 2a  a_list */../*.**
7380: 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 63 61   Make sure we ca
7390: 6e 20 63 61 6c 6c 20 74 68 69 73 20 73 74 75 66  n call this stuf
73a0: 66 20 66 72 6f 6d 20 43 2b 2b 2e 0a 2a 2f 0a 23  f from C++..*/.#
73b0: 69 66 20 30 0a 65 78 74 65 72 6e 20 22 43 22 20  if 0.extern "C" 
73c0: 7b 0a 23 65 6e 64 69 66 0a 0a 0a 2f 2a 0a 2a 2a  {.#endif.../*.**
73d0: 20 50 72 6f 76 69 64 65 20 74 68 65 20 61 62 69   Provide the abi
73e0: 6c 69 74 79 20 74 6f 20 6f 76 65 72 72 69 64 65  lity to override
73f0: 20 6c 69 6e 6b 61 67 65 20 66 65 61 74 75 72 65   linkage feature
7400: 73 20 6f 66 20 74 68 65 20 69 6e 74 65 72 66 61  s of the interfa
7410: 63 65 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53  ce..*/.#ifndef S
7420: 51 4c 49 54 45 5f 45 58 54 45 52 4e 0a 23 20 64  QLITE_EXTERN.# d
7430: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 58 54  efine SQLITE_EXT
7440: 45 52 4e 20 65 78 74 65 72 6e 0a 23 65 6e 64 69  ERN extern.#endi
7450: 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45  f.#ifndef SQLITE
7460: 5f 41 50 49 0a 23 20 64 65 66 69 6e 65 20 53 51  _API.# define SQ
7470: 4c 49 54 45 5f 41 50 49 0a 23 65 6e 64 69 66 0a  LITE_API.#endif.
7480: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 43  #ifndef SQLITE_C
7490: 44 45 43 4c 0a 23 20 64 65 66 69 6e 65 20 53 51  DECL.# define SQ
74a0: 4c 49 54 45 5f 43 44 45 43 4c 0a 23 65 6e 64 69  LITE_CDECL.#endi
74b0: 66 0a 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45  f.#ifndef SQLITE
74c0: 5f 41 50 49 43 41 4c 4c 0a 23 20 64 65 66 69 6e  _APICALL.# defin
74d0: 65 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c  e SQLITE_APICALL
74e0: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
74f0: 53 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 0a 23  SQLITE_STDCALL.#
7500: 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53   define SQLITE_S
7510: 54 44 43 41 4c 4c 20 53 51 4c 49 54 45 5f 41 50  TDCALL SQLITE_AP
7520: 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a 23 69 66  ICALL.#endif.#if
7530: 6e 64 65 66 20 53 51 4c 49 54 45 5f 43 41 4c 4c  ndef SQLITE_CALL
7540: 42 41 43 4b 0a 23 20 64 65 66 69 6e 65 20 53 51  BACK.# define SQ
7550: 4c 49 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 65  LITE_CALLBACK.#e
7560: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
7570: 49 54 45 5f 53 59 53 41 50 49 0a 23 20 64 65 66  ITE_SYSAPI.# def
7580: 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 53 41 50  ine SQLITE_SYSAP
7590: 49 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20  I.#endif../*.** 
75a0: 54 68 65 73 65 20 6e 6f 2d 6f 70 20 6d 61 63 72  These no-op macr
75b0: 6f 73 20 61 72 65 20 75 73 65 64 20 69 6e 20 66  os are used in f
75c0: 72 6f 6e 74 20 6f 66 20 69 6e 74 65 72 66 61 63  ront of interfac
75d0: 65 73 20 74 6f 20 6d 61 72 6b 20 74 68 6f 73 65  es to mark those
75e0: 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 61  .** interfaces a
75f0: 73 20 65 69 74 68 65 72 20 64 65 70 72 65 63 61  s either depreca
7600: 74 65 64 20 6f 72 20 65 78 70 65 72 69 6d 65 6e  ted or experimen
7610: 74 61 6c 2e 20 20 4e 65 77 20 61 70 70 6c 69 63  tal.  New applic
7620: 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64  ations.** should
7630: 20 6e 6f 74 20 75 73 65 20 64 65 70 72 65 63 61   not use depreca
7640: 74 65 64 20 69 6e 74 65 72 66 61 63 65 73 20 2d  ted interfaces -
7650: 20 74 68 65 79 20 61 72 65 20 73 75 70 70 6f 72   they are suppor
7660: 74 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64  ted for backward
7670: 73 0a 2a 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69  s.** compatibili
7680: 74 79 20 6f 6e 6c 79 2e 20 20 41 70 70 6c 69 63  ty only.  Applic
7690: 61 74 69 6f 6e 20 77 72 69 74 65 72 73 20 73 68  ation writers sh
76a0: 6f 75 6c 64 20 62 65 20 61 77 61 72 65 20 74 68  ould be aware th
76b0: 61 74 0a 2a 2a 20 65 78 70 65 72 69 6d 65 6e 74  at.** experiment
76c0: 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  al interfaces ar
76d0: 65 20 73 75 62 6a 65 63 74 20 74 6f 20 63 68 61  e subject to cha
76e0: 6e 67 65 20 69 6e 20 70 6f 69 6e 74 20 72 65 6c  nge in point rel
76f0: 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  eases..**.** The
7700: 73 65 20 6d 61 63 72 6f 73 20 75 73 65 64 20 74  se macros used t
7710: 6f 20 72 65 73 6f 6c 76 65 20 74 6f 20 76 61 72  o resolve to var
7720: 69 6f 75 73 20 6b 69 6e 64 73 20 6f 66 20 63 6f  ious kinds of co
7730: 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 74 68 61  mpiler magic tha
7740: 74 0a 2a 2a 20 77 6f 75 6c 64 20 67 65 6e 65 72  t.** would gener
7750: 61 74 65 20 77 61 72 6e 69 6e 67 20 6d 65 73 73  ate warning mess
7760: 61 67 65 73 20 77 68 65 6e 20 74 68 65 79 20 77  ages when they w
7770: 65 72 65 20 75 73 65 64 2e 20 20 42 75 74 20 74  ere used.  But t
7780: 68 61 74 0a 2a 2a 20 63 6f 6d 70 69 6c 65 72 20  hat.** compiler 
7790: 6d 61 67 69 63 20 65 6e 64 65 64 20 75 70 20 67  magic ended up g
77a0: 65 6e 65 72 61 74 69 6e 67 20 73 75 63 68 20 61  enerating such a
77b0: 20 66 6c 75 72 72 79 20 6f 66 20 62 75 67 20 72   flurry of bug r
77c0: 65 70 6f 72 74 73 0a 2a 2a 20 74 68 61 74 20 77  eports.** that w
77d0: 65 20 68 61 76 65 20 74 61 6b 65 6e 20 69 74 20  e have taken it 
77e0: 61 6c 6c 20 6f 75 74 20 61 6e 64 20 67 6f 6e 65  all out and gone
77f0: 20 62 61 63 6b 20 74 6f 20 75 73 69 6e 67 20 73   back to using s
7800: 69 6d 70 6c 65 0a 2a 2a 20 6e 6f 6f 70 20 6d 61  imple.** noop ma
7810: 63 72 6f 73 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  cros..*/.#define
7820: 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43 41 54   SQLITE_DEPRECAT
7830: 45 44 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  ED.#define SQLIT
7840: 45 5f 45 58 50 45 52 49 4d 45 4e 54 41 4c 0a 0a  E_EXPERIMENTAL..
7850: 2f 2a 0a 2a 2a 20 45 6e 73 75 72 65 20 74 68 65  /*.** Ensure the
7860: 73 65 20 73 79 6d 62 6f 6c 73 20 77 65 72 65 20  se symbols were 
7870: 6e 6f 74 20 64 65 66 69 6e 65 64 20 62 79 20 73  not defined by s
7880: 6f 6d 65 20 70 72 65 76 69 6f 75 73 20 68 65 61  ome previous hea
7890: 64 65 72 20 66 69 6c 65 2e 0a 2a 2f 0a 23 69 66  der file..*/.#if
78a0: 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49  def SQLITE_VERSI
78b0: 4f 4e 0a 23 20 75 6e 64 65 66 20 53 51 4c 49 54  ON.# undef SQLIT
78c0: 45 5f 56 45 52 53 49 4f 4e 0a 23 65 6e 64 69 66  E_VERSION.#endif
78d0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 56  .#ifdef SQLITE_V
78e0: 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 20  ERSION_NUMBER.# 
78f0: 75 6e 64 65 66 20 53 51 4c 49 54 45 5f 56 45 52  undef SQLITE_VER
7900: 53 49 4f 4e 5f 4e 55 4d 42 45 52 0a 23 65 6e 64  SION_NUMBER.#end
7910: 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  if../*.** CAPI3R
7920: 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65  EF: Compile-Time
7930: 20 4c 69 62 72 61 72 79 20 56 65 72 73 69 6f 6e   Library Version
7940: 20 4e 75 6d 62 65 72 73 0a 2a 2a 0a 2a 2a 20 5e   Numbers.**.** ^
7950: 28 54 68 65 20 5b 53 51 4c 49 54 45 5f 56 45 52  (The [SQLITE_VER
7960: 53 49 4f 4e 5d 20 43 20 70 72 65 70 72 6f 63 65  SION] C preproce
7970: 73 73 6f 72 20 6d 61 63 72 6f 20 69 6e 20 74 68  ssor macro in th
7980: 65 20 73 71 6c 69 74 65 33 2e 68 20 68 65 61 64  e sqlite3.h head
7990: 65 72 0a 2a 2a 20 65 76 61 6c 75 61 74 65 73 20  er.** evaluates 
79a0: 74 6f 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  to a string lite
79b0: 72 61 6c 20 74 68 61 74 20 69 73 20 74 68 65 20  ral that is the 
79c0: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 69  SQLite version i
79d0: 6e 20 74 68 65 0a 2a 2a 20 66 6f 72 6d 61 74 20  n the.** format 
79e0: 22 58 2e 59 2e 5a 22 20 77 68 65 72 65 20 58 20  "X.Y.Z" where X 
79f0: 69 73 20 74 68 65 20 6d 61 6a 6f 72 20 76 65 72  is the major ver
7a00: 73 69 6f 6e 20 6e 75 6d 62 65 72 20 28 61 6c 77  sion number (alw
7a10: 61 79 73 20 33 20 66 6f 72 0a 2a 2a 20 53 51 4c  ays 3 for.** SQL
7a20: 69 74 65 33 29 20 61 6e 64 20 59 20 69 73 20 74  ite3) and Y is t
7a30: 68 65 20 6d 69 6e 6f 72 20 76 65 72 73 69 6f 6e  he minor version
7a40: 20 6e 75 6d 62 65 72 20 61 6e 64 20 5a 20 69 73   number and Z is
7a50: 20 74 68 65 20 72 65 6c 65 61 73 65 20 6e 75 6d   the release num
7a60: 62 65 72 2e 29 5e 0a 2a 2a 20 5e 28 54 68 65 20  ber.)^.** ^(The 
7a70: 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  [SQLITE_VERSION_
7a80: 4e 55 4d 42 45 52 5d 20 43 20 70 72 65 70 72 6f  NUMBER] C prepro
7a90: 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 72 65 73  cessor macro res
7aa0: 6f 6c 76 65 73 20 74 6f 20 61 6e 20 69 6e 74 65  olves to an inte
7ab0: 67 65 72 0a 2a 2a 20 77 69 74 68 20 74 68 65 20  ger.** with the 
7ac0: 76 61 6c 75 65 20 28 58 2a 31 30 30 30 30 30 30  value (X*1000000
7ad0: 20 2b 20 59 2a 31 30 30 30 20 2b 20 5a 29 20 77   + Y*1000 + Z) w
7ae0: 68 65 72 65 20 58 2c 20 59 2c 20 61 6e 64 20 5a  here X, Y, and Z
7af0: 20 61 72 65 20 74 68 65 20 73 61 6d 65 0a 2a 2a   are the same.**
7b00: 20 6e 75 6d 62 65 72 73 20 75 73 65 64 20 69 6e   numbers used in
7b10: 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e   [SQLITE_VERSION
7b20: 5d 2e 29 5e 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ].)^.** The SQLI
7b30: 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45  TE_VERSION_NUMBE
7b40: 52 20 66 6f 72 20 61 6e 79 20 67 69 76 65 6e 20  R for any given 
7b50: 72 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74  release of SQLit
7b60: 65 20 77 69 6c 6c 20 61 6c 73 6f 0a 2a 2a 20 62  e will also.** b
7b70: 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74 68  e larger than th
7b80: 65 20 72 65 6c 65 61 73 65 20 66 72 6f 6d 20 77  e release from w
7b90: 68 69 63 68 20 69 74 20 69 73 20 64 65 72 69 76  hich it is deriv
7ba0: 65 64 2e 20 20 45 69 74 68 65 72 20 59 20 77 69  ed.  Either Y wi
7bb0: 6c 6c 0a 2a 2a 20 62 65 20 68 65 6c 64 20 63 6f  ll.** be held co
7bc0: 6e 73 74 61 6e 74 20 61 6e 64 20 5a 20 77 69 6c  nstant and Z wil
7bd0: 6c 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64  l be incremented
7be0: 20 6f 72 20 65 6c 73 65 20 59 20 77 69 6c 6c 20   or else Y will 
7bf0: 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 64 0a 2a  be incremented.*
7c00: 2a 20 61 6e 64 20 5a 20 77 69 6c 6c 20 62 65 20  * and Z will be 
7c10: 72 65 73 65 74 20 74 6f 20 7a 65 72 6f 2e 0a 2a  reset to zero..*
7c20: 2a 0a 2a 2a 20 53 69 6e 63 65 20 5b 76 65 72 73  *.** Since [vers
7c30: 69 6f 6e 20 33 2e 36 2e 31 38 5d 20 28 5b 64 61  ion 3.6.18] ([da
7c40: 74 65 6f 66 3a 33 2e 36 2e 31 38 5d 29 2c 20 0a  teof:3.6.18]), .
7c50: 2a 2a 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  ** SQLite source
7c60: 20 63 6f 64 65 20 68 61 73 20 62 65 65 6e 20 73   code has been s
7c70: 74 6f 72 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20  tored in the.** 
7c80: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
7c90: 77 77 77 2e 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f  www.fossil-scm.o
7ca0: 72 67 2f 22 3e 46 6f 73 73 69 6c 20 63 6f 6e 66  rg/">Fossil conf
7cb0: 69 67 75 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65  iguration manage
7cc0: 6d 65 6e 74 0a 2a 2a 20 73 79 73 74 65 6d 3c 2f  ment.** system</
7cd0: 61 3e 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45  a>.  ^The SQLITE
7ce0: 5f 53 4f 55 52 43 45 5f 49 44 20 6d 61 63 72 6f  _SOURCE_ID macro
7cf0: 20 65 76 61 6c 75 61 74 65 73 20 74 6f 0a 2a 2a   evaluates to.**
7d00: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
7d10: 69 64 65 6e 74 69 66 69 65 73 20 61 20 70 61 72  identifies a par
7d20: 74 69 63 75 6c 61 72 20 63 68 65 63 6b 2d 69 6e  ticular check-in
7d30: 20 6f 66 20 53 51 4c 69 74 65 0a 2a 2a 20 77 69   of SQLite.** wi
7d40: 74 68 69 6e 20 69 74 73 20 63 6f 6e 66 69 67 75  thin its configu
7d50: 72 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e  ration managemen
7d60: 74 20 73 79 73 74 65 6d 2e 20 20 5e 54 68 65 20  t system.  ^The 
7d70: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
7d80: 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  .** string conta
7d90: 69 6e 73 20 74 68 65 20 64 61 74 65 20 61 6e 64  ins the date and
7da0: 20 74 69 6d 65 20 6f 66 20 74 68 65 20 63 68 65   time of the che
7db0: 63 6b 2d 69 6e 20 28 55 54 43 29 20 61 6e 64 20  ck-in (UTC) and 
7dc0: 61 20 53 48 41 31 0a 2a 2a 20 6f 72 20 53 48 41  a SHA1.** or SHA
7dd0: 33 2d 32 35 36 20 68 61 73 68 20 6f 66 20 74 68  3-256 hash of th
7de0: 65 20 65 6e 74 69 72 65 20 73 6f 75 72 63 65 20  e entire source 
7df0: 74 72 65 65 2e 20 20 49 66 20 74 68 65 20 73 6f  tree.  If the so
7e00: 75 72 63 65 20 63 6f 64 65 20 68 61 73 0a 2a 2a  urce code has.**
7e10: 20 62 65 65 6e 20 65 64 69 74 65 64 20 69 6e 20   been edited in 
7e20: 61 6e 79 20 77 61 79 20 73 69 6e 63 65 20 69 74  any way since it
7e30: 20 77 61 73 20 6c 61 73 74 20 63 68 65 63 6b 65   was last checke
7e40: 64 20 69 6e 2c 20 74 68 65 6e 20 74 68 65 20 6c  d in, then the l
7e50: 61 73 74 0a 2a 2a 20 66 6f 75 72 20 68 65 78 61  ast.** four hexa
7e60: 64 65 63 69 6d 61 6c 20 64 69 67 69 74 73 20 6f  decimal digits o
7e70: 66 20 74 68 65 20 68 61 73 68 20 6d 61 79 20 62  f the hash may b
7e80: 65 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a  e modified..**.*
7e90: 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
7ea0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
7eb0: 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  )],.** [sqlite3_
7ec0: 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62 65  libversion_numbe
7ed0: 72 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 73  r()], [sqlite3_s
7ee0: 6f 75 72 63 65 69 64 28 29 5d 2c 0a 2a 2a 20 5b  ourceid()],.** [
7ef0: 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 29  sqlite_version()
7f00: 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 73 6f  ] and [sqlite_so
7f10: 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a 2f 0a 23  urce_id()]..*/.#
7f20: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45  define SQLITE_VE
7f30: 52 53 49 4f 4e 20 20 20 20 20 20 20 20 22 33 2e  RSION        "3.
7f40: 32 32 2e 30 22 0a 23 64 65 66 69 6e 65 20 53 51  22.0".#define SQ
7f50: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
7f60: 42 45 52 20 33 30 32 32 30 30 30 0a 23 64 65 66  BER 3022000.#def
7f70: 69 6e 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43  ine SQLITE_SOURC
7f80: 45 5f 49 44 20 20 20 20 20 20 22 32 30 31 38 2d  E_ID      "2018-
7f90: 30 31 2d 31 31 20 31 38 3a 31 35 3a 34 30 20 61  01-11 18:15:40 a
7fa0: 35 64 30 39 64 66 61 61 33 33 37 66 61 35 31 64  5d09dfaa337fa51d
7fb0: 36 65 37 30 32 63 36 61 65 66 65 35 38 38 32 34  6e702c6aefe58824
7fc0: 61 62 31 65 37 64 32 32 31 63 36 65 37 39 31 36  ab1e7d221c6e7916
7fd0: 36 65 32 63 36 66 39 63 37 61 62 31 35 30 31 22  6e2c6f9c7ab1501"
7fe0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
7ff0: 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69 62 72 61  : Run-Time Libra
8000: 72 79 20 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65  ry Version Numbe
8010: 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  rs.** KEYWORDS: 
8020: 73 71 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 20  sqlite3_version 
8030: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
8040: 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74  .**.** These int
8050: 65 72 66 61 63 65 73 20 70 72 6f 76 69 64 65 20  erfaces provide 
8060: 74 68 65 20 73 61 6d 65 20 69 6e 66 6f 72 6d 61  the same informa
8070: 74 69 6f 6e 20 61 73 20 74 68 65 20 5b 53 51 4c  tion as the [SQL
8080: 49 54 45 5f 56 45 52 53 49 4f 4e 5d 2c 0a 2a 2a  ITE_VERSION],.**
8090: 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e   [SQLITE_VERSION
80a0: 5f 4e 55 4d 42 45 52 5d 2c 20 61 6e 64 20 5b 53  _NUMBER], and [S
80b0: 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44 5d  QLITE_SOURCE_ID]
80c0: 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20   C preprocessor 
80d0: 6d 61 63 72 6f 73 0a 2a 2a 20 62 75 74 20 61 72  macros.** but ar
80e0: 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
80f0: 68 20 74 68 65 20 6c 69 62 72 61 72 79 20 69 6e  h the library in
8100: 73 74 65 61 64 20 6f 66 20 74 68 65 20 68 65 61  stead of the hea
8110: 64 65 72 20 66 69 6c 65 2e 20 20 5e 28 43 61 75  der file.  ^(Cau
8120: 74 69 6f 75 73 0a 2a 2a 20 70 72 6f 67 72 61 6d  tious.** program
8130: 6d 65 72 73 20 6d 69 67 68 74 20 69 6e 63 6c 75  mers might inclu
8140: 64 65 20 61 73 73 65 72 74 28 29 20 73 74 61 74  de assert() stat
8150: 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 69 72 20  ements in their 
8160: 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a  application to.*
8170: 2a 20 76 65 72 69 66 79 20 74 68 61 74 20 76 61  * verify that va
8180: 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62 79  lues returned by
8190: 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65   these interface
81a0: 73 20 6d 61 74 63 68 20 74 68 65 20 6d 61 63 72  s match the macr
81b0: 6f 73 20 69 6e 0a 2a 2a 20 74 68 65 20 68 65 61  os in.** the hea
81c0: 64 65 72 2c 20 61 6e 64 20 74 68 75 73 20 65 6e  der, and thus en
81d0: 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61 70  sure that the ap
81e0: 70 6c 69 63 61 74 69 6f 6e 20 69 73 0a 2a 2a 20  plication is.** 
81f0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6d 61  compiled with ma
8200: 74 63 68 69 6e 67 20 6c 69 62 72 61 72 79 20 61  tching library a
8210: 6e 64 20 68 65 61 64 65 72 20 66 69 6c 65 73 2e  nd header files.
8220: 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f  .**.** <blockquo
8230: 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 61 73 73 65  te><pre>.** asse
8240: 72 74 28 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  rt( sqlite3_libv
8250: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 3d  ersion_number()=
8260: 3d 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  =SQLITE_VERSION_
8270: 4e 55 4d 42 45 52 20 29 3b 0a 2a 2a 20 61 73 73  NUMBER );.** ass
8280: 65 72 74 28 20 73 74 72 6e 63 6d 70 28 73 71 6c  ert( strncmp(sql
8290: 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29 2c  ite3_sourceid(),
82a0: 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f 49 44  SQLITE_SOURCE_ID
82b0: 2c 38 30 29 3d 3d 30 20 29 3b 0a 2a 2a 20 61 73  ,80)==0 );.** as
82c0: 73 65 72 74 28 20 73 74 72 63 6d 70 28 73 71 6c  sert( strcmp(sql
82d0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
82e0: 29 2c 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  ),SQLITE_VERSION
82f0: 29 3d 3d 30 20 29 3b 0a 2a 2a 20 3c 2f 70 72 65  )==0 );.** </pre
8300: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e  ></blockquote>)^
8310: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
8320: 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 73 74  te3_version[] st
8330: 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 63 6f  ring constant co
8340: 6e 74 61 69 6e 73 20 74 68 65 20 74 65 78 74 20  ntains the text 
8350: 6f 66 20 5b 53 51 4c 49 54 45 5f 56 45 52 53 49  of [SQLITE_VERSI
8360: 4f 4e 5d 0a 2a 2a 20 6d 61 63 72 6f 2e 20 20 5e  ON].** macro.  ^
8370: 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  The sqlite3_libv
8380: 65 72 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f  ersion() functio
8390: 6e 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  n returns a poin
83a0: 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a 20 74 6f  ter to the.** to
83b0: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72   the sqlite3_ver
83c0: 73 69 6f 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f  sion[] string co
83d0: 6e 73 74 61 6e 74 2e 20 20 54 68 65 20 73 71 6c  nstant.  The sql
83e0: 69 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28  ite3_libversion(
83f0: 29 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69 73  ).** function is
8400: 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 75 73   provided for us
8410: 65 20 69 6e 20 44 4c 4c 73 20 73 69 6e 63 65 20  e in DLLs since 
8420: 44 4c 4c 20 75 73 65 72 73 20 75 73 75 61 6c 6c  DLL users usuall
8430: 79 20 64 6f 20 6e 6f 74 20 68 61 76 65 0a 2a 2a  y do not have.**
8440: 20 64 69 72 65 63 74 20 61 63 63 65 73 73 20 74   direct access t
8450: 6f 20 73 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e  o string constan
8460: 74 73 20 77 69 74 68 69 6e 20 74 68 65 20 44 4c  ts within the DL
8470: 4c 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69  L.  ^The.** sqli
8480: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
8490: 75 6d 62 65 72 28 29 20 66 75 6e 63 74 69 6f 6e  umber() function
84a0: 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65   returns an inte
84b0: 67 65 72 20 65 71 75 61 6c 20 74 6f 0a 2a 2a 20  ger equal to.** 
84c0: 5b 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f  [SQLITE_VERSION_
84d0: 4e 55 4d 42 45 52 5d 2e 20 20 5e 28 54 68 65 20  NUMBER].  ^(The 
84e0: 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64  sqlite3_sourceid
84f0: 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  () function retu
8500: 72 6e 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65  rns .** a pointe
8510: 72 20 74 6f 20 61 20 73 74 72 69 6e 67 20 63 6f  r to a string co
8520: 6e 73 74 61 6e 74 20 77 68 6f 73 65 20 76 61 6c  nstant whose val
8530: 75 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61  ue is the same a
8540: 73 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49 54  s the .** [SQLIT
8550: 45 5f 53 4f 55 52 43 45 5f 49 44 5d 20 43 20 70  E_SOURCE_ID] C p
8560: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8570: 6f 2e 20 20 45 78 63 65 70 74 20 69 66 20 53 51  o.  Except if SQ
8580: 4c 69 74 65 20 69 73 20 62 75 69 6c 74 0a 2a 2a  Lite is built.**
8590: 20 75 73 69 6e 67 20 61 6e 20 65 64 69 74 65 64   using an edited
85a0: 20 63 6f 70 79 20 6f 66 20 5b 74 68 65 20 61 6d   copy of [the am
85b0: 61 6c 67 61 6d 61 74 69 6f 6e 5d 2c 20 74 68 65  algamation], the
85c0: 6e 20 74 68 65 20 6c 61 73 74 20 66 6f 75 72 20  n the last four 
85d0: 63 68 61 72 61 63 74 65 72 73 0a 2a 2a 20 6f 66  characters.** of
85e0: 20 74 68 65 20 68 61 73 68 20 6d 69 67 68 74 20   the hash might 
85f0: 62 65 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f  be different fro
8600: 6d 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  m [SQLITE_SOURCE
8610: 5f 49 44 5d 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65  _ID].)^.**.** Se
8620: 65 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 5f  e also: [sqlite_
8630: 76 65 72 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b  version()] and [
8640: 73 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64  sqlite_source_id
8650: 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ()]..*/.SQLITE_A
8660: 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 73 71  PI const char sq
8670: 6c 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20  lite3_version[] 
8680: 3d 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e  = SQLITE_VERSION
8690: 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  ;.SQLITE_API con
86a0: 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
86b0: 5f 6c 69 62 76 65 72 73 69 6f 6e 28 76 6f 69 64  _libversion(void
86c0: 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  );.SQLITE_API co
86d0: 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
86e0: 33 5f 73 6f 75 72 63 65 69 64 28 76 6f 69 64 29  3_sourceid(void)
86f0: 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
8700: 20 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73   sqlite3_libvers
8710: 69 6f 6e 5f 6e 75 6d 62 65 72 28 76 6f 69 64 29  ion_number(void)
8720: 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
8730: 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c 69 62 72  F: Run-Time Libr
8740: 61 72 79 20 43 6f 6d 70 69 6c 61 74 69 6f 6e 20  ary Compilation 
8750: 4f 70 74 69 6f 6e 73 20 44 69 61 67 6e 6f 73 74  Options Diagnost
8760: 69 63 73 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ics.**.** ^The s
8770: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8780: 74 69 6f 6e 5f 75 73 65 64 28 29 20 66 75 6e 63  tion_used() func
8790: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 30 20 6f  tion returns 0 o
87a0: 72 20 31 20 0a 2a 2a 20 69 6e 64 69 63 61 74 69  r 1 .** indicati
87b0: 6e 67 20 77 68 65 74 68 65 72 20 74 68 65 20 73  ng whether the s
87c0: 70 65 63 69 66 69 65 64 20 6f 70 74 69 6f 6e 20  pecified option 
87d0: 77 61 73 20 64 65 66 69 6e 65 64 20 61 74 20 0a  was defined at .
87e0: 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e  ** compile time.
87f0: 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 20 70    ^The SQLITE_ p
8800: 72 65 66 69 78 20 6d 61 79 20 62 65 20 6f 6d 69  refix may be omi
8810: 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 2a  tted from the .*
8820: 2a 20 6f 70 74 69 6f 6e 20 6e 61 6d 65 20 70 61  * option name pa
8830: 73 73 65 64 20 74 6f 20 73 71 6c 69 74 65 33 5f  ssed to sqlite3_
8840: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73  compileoption_us
8850: 65 64 28 29 2e 20 20 0a 2a 2a 0a 2a 2a 20 5e 54  ed().  .**.** ^T
8860: 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69  he sqlite3_compi
8870: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 66  leoption_get() f
8880: 75 6e 63 74 69 6f 6e 20 61 6c 6c 6f 77 73 20 69  unction allows i
8890: 74 65 72 61 74 69 6e 67 0a 2a 2a 20 6f 76 65 72  terating.** over
88a0: 20 74 68 65 20 6c 69 73 74 20 6f 66 20 6f 70 74   the list of opt
88b0: 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20 64  ions that were d
88c0: 65 66 69 6e 65 64 20 61 74 20 63 6f 6d 70 69 6c  efined at compil
88d0: 65 20 74 69 6d 65 20 62 79 0a 2a 2a 20 72 65 74  e time by.** ret
88e0: 75 72 6e 69 6e 67 20 74 68 65 20 4e 2d 74 68 20  urning the N-th 
88f0: 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 6f 70 74  compile time opt
8900: 69 6f 6e 20 73 74 72 69 6e 67 2e 20 20 5e 49 66  ion string.  ^If
8910: 20 4e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e   N is out of ran
8920: 67 65 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  ge,.** sqlite3_c
8930: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
8940: 28 29 20 72 65 74 75 72 6e 73 20 61 20 4e 55 4c  () returns a NUL
8950: 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54 68 65  L pointer.  ^The
8960: 20 53 51 4c 49 54 45 5f 20 0a 2a 2a 20 70 72 65   SQLITE_ .** pre
8970: 66 69 78 20 69 73 20 6f 6d 69 74 74 65 64 20 66  fix is omitted f
8980: 72 6f 6d 20 61 6e 79 20 73 74 72 69 6e 67 73 20  rom any strings 
8990: 72 65 74 75 72 6e 65 64 20 62 79 20 0a 2a 2a 20  returned by .** 
89a0: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
89b0: 70 74 69 6f 6e 5f 67 65 74 28 29 2e 0a 2a 2a 0a  ption_get()..**.
89c0: 2a 2a 20 5e 53 75 70 70 6f 72 74 20 66 6f 72 20  ** ^Support for 
89d0: 74 68 65 20 64 69 61 67 6e 6f 73 74 69 63 20 66  the diagnostic f
89e0: 75 6e 63 74 69 6f 6e 73 20 73 71 6c 69 74 65 33  unctions sqlite3
89f0: 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75  _compileoption_u
8a00: 73 65 64 28 29 0a 2a 2a 20 61 6e 64 20 73 71 6c  sed().** and sql
8a10: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
8a20: 6f 6e 5f 67 65 74 28 29 20 6d 61 79 20 62 65 20  on_get() may be 
8a30: 6f 6d 69 74 74 65 64 20 62 79 20 73 70 65 63 69  omitted by speci
8a40: 66 79 69 6e 67 20 74 68 65 20 0a 2a 2a 20 5b 53  fying the .** [S
8a50: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
8a60: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 5d 20  LEOPTION_DIAGS] 
8a70: 6f 70 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c  option at compil
8a80: 65 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 53 65  e time..**.** Se
8a90: 65 20 61 6c 73 6f 3a 20 53 51 4c 20 66 75 6e 63  e also: SQL func
8aa0: 74 69 6f 6e 73 20 5b 73 71 6c 69 74 65 5f 63 6f  tions [sqlite_co
8ab0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
8ac0: 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  ()] and.** [sqli
8ad0: 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  te_compileoption
8ae0: 5f 67 65 74 28 29 5d 20 61 6e 64 20 74 68 65 20  _get()] and the 
8af0: 5b 63 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73  [compile_options
8b00: 20 70 72 61 67 6d 61 5d 2e 0a 2a 2f 0a 23 69 66   pragma]..*/.#if
8b10: 6e 64 65 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  ndef SQLITE_OMIT
8b20: 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e 5f 44  _COMPILEOPTION_D
8b30: 49 41 47 53 0a 53 51 4c 49 54 45 5f 41 50 49 20  IAGS.SQLITE_API 
8b40: 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70  int sqlite3_comp
8b50: 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64 28 63  ileoption_used(c
8b60: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4f 70 74 4e  onst char *zOptN
8b70: 61 6d 65 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  ame);.SQLITE_API
8b80: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
8b90: 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69  ite3_compileopti
8ba0: 6f 6e 5f 67 65 74 28 69 6e 74 20 4e 29 3b 0a 23  on_get(int N);.#
8bb0: 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  endif../*.** CAP
8bc0: 49 33 52 45 46 3a 20 54 65 73 74 20 54 6f 20 53  I3REF: Test To S
8bd0: 65 65 20 49 66 20 54 68 65 20 4c 69 62 72 61 72  ee If The Librar
8be0: 79 20 49 73 20 54 68 72 65 61 64 73 61 66 65 0a  y Is Threadsafe.
8bf0: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
8c00: 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 20  e3_threadsafe() 
8c10: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
8c20: 20 7a 65 72 6f 20 69 66 20 61 6e 64 20 6f 6e 6c   zero if and onl
8c30: 79 20 69 66 0a 2a 2a 20 53 51 4c 69 74 65 20 77  y if.** SQLite w
8c40: 61 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  as compiled with
8c50: 20 6d 75 74 65 78 69 6e 67 20 63 6f 64 65 20 6f   mutexing code o
8c60: 6d 69 74 74 65 64 20 64 75 65 20 74 6f 20 74 68  mitted due to th
8c70: 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52  e.** [SQLITE_THR
8c80: 45 41 44 53 41 46 45 5d 20 63 6f 6d 70 69 6c 65  EADSAFE] compile
8c90: 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 62 65 69  -time option bei
8ca0: 6e 67 20 73 65 74 20 74 6f 20 30 2e 0a 2a 2a 0a  ng set to 0..**.
8cb0: 2a 2a 20 53 51 4c 69 74 65 20 63 61 6e 20 62 65  ** SQLite can be
8cc0: 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 6f   compiled with o
8cd0: 72 20 77 69 74 68 6f 75 74 20 6d 75 74 65 78 65  r without mutexe
8ce0: 73 2e 20 20 57 68 65 6e 0a 2a 2a 20 74 68 65 20  s.  When.** the 
8cf0: 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
8d00: 46 45 5d 20 43 20 70 72 65 70 72 6f 63 65 73 73  FE] C preprocess
8d10: 6f 72 20 6d 61 63 72 6f 20 69 73 20 31 20 6f 72  or macro is 1 or
8d20: 20 32 2c 20 6d 75 74 65 78 65 73 0a 2a 2a 20 61   2, mutexes.** a
8d30: 72 65 20 65 6e 61 62 6c 65 64 20 61 6e 64 20 53  re enabled and S
8d40: 51 4c 69 74 65 20 69 73 20 74 68 72 65 61 64 73  QLite is threads
8d50: 61 66 65 2e 20 20 57 68 65 6e 20 74 68 65 0a 2a  afe.  When the.*
8d60: 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  * [SQLITE_THREAD
8d70: 53 41 46 45 5d 20 6d 61 63 72 6f 20 69 73 20 30  SAFE] macro is 0
8d80: 2c 20 0a 2a 2a 20 74 68 65 20 6d 75 74 65 78 65  , .** the mutexe
8d90: 73 20 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20  s are omitted.  
8da0: 57 69 74 68 6f 75 74 20 74 68 65 20 6d 75 74 65  Without the mute
8db0: 78 65 73 2c 20 69 74 20 69 73 20 6e 6f 74 20 73  xes, it is not s
8dc0: 61 66 65 0a 2a 2a 20 74 6f 20 75 73 65 20 53 51  afe.** to use SQ
8dd0: 4c 69 74 65 20 63 6f 6e 63 75 72 72 65 6e 74 6c  Lite concurrentl
8de0: 79 20 66 72 6f 6d 20 6d 6f 72 65 20 74 68 61 6e  y from more than
8df0: 20 6f 6e 65 20 74 68 72 65 61 64 2e 0a 2a 2a 0a   one thread..**.
8e00: 2a 2a 20 45 6e 61 62 6c 69 6e 67 20 6d 75 74 65  ** Enabling mute
8e10: 78 65 73 20 69 6e 63 75 72 73 20 61 20 6d 65 61  xes incurs a mea
8e20: 73 75 72 61 62 6c 65 20 70 65 72 66 6f 72 6d 61  surable performa
8e30: 6e 63 65 20 70 65 6e 61 6c 74 79 2e 0a 2a 2a 20  nce penalty..** 
8e40: 53 6f 20 69 66 20 73 70 65 65 64 20 69 73 20 6f  So if speed is o
8e50: 66 20 75 74 6d 6f 73 74 20 69 6d 70 6f 72 74 61  f utmost importa
8e60: 6e 63 65 2c 20 69 74 20 6d 61 6b 65 73 20 73 65  nce, it makes se
8e70: 6e 73 65 20 74 6f 20 64 69 73 61 62 6c 65 0a 2a  nse to disable.*
8e80: 2a 20 74 68 65 20 6d 75 74 65 78 65 73 2e 20 20  * the mutexes.  
8e90: 42 75 74 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20  But for maximum 
8ea0: 73 61 66 65 74 79 2c 20 6d 75 74 65 78 65 73 20  safety, mutexes 
8eb0: 73 68 6f 75 6c 64 20 62 65 20 65 6e 61 62 6c 65  should be enable
8ec0: 64 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75  d..** ^The defau
8ed0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 66  lt behavior is f
8ee0: 6f 72 20 6d 75 74 65 78 65 73 20 74 6f 20 62 65  or mutexes to be
8ef0: 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20   enabled..**.** 
8f00: 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 63  This interface c
8f10: 61 6e 20 62 65 20 75 73 65 64 20 62 79 20 61 6e  an be used by an
8f20: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20   application to 
8f30: 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74  make sure that t
8f40: 68 65 0a 2a 2a 20 76 65 72 73 69 6f 6e 20 6f 66  he.** version of
8f50: 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 74 20   SQLite that it 
8f60: 69 73 20 6c 69 6e 6b 69 6e 67 20 61 67 61 69 6e  is linking again
8f70: 73 74 20 77 61 73 20 63 6f 6d 70 69 6c 65 64 20  st was compiled 
8f80: 77 69 74 68 0a 2a 2a 20 74 68 65 20 64 65 73 69  with.** the desi
8f90: 72 65 64 20 73 65 74 74 69 6e 67 20 6f 66 20 74  red setting of t
8fa0: 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
8fb0: 44 53 41 46 45 5d 20 6d 61 63 72 6f 2e 0a 2a 2a  DSAFE] macro..**
8fc0: 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61  .** This interfa
8fd0: 63 65 20 6f 6e 6c 79 20 72 65 70 6f 72 74 73 20  ce only reports 
8fe0: 6f 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74  on the compile-t
8ff0: 69 6d 65 20 6d 75 74 65 78 20 73 65 74 74 69 6e  ime mutex settin
9000: 67 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 53 51 4c  g.** of the [SQL
9010: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
9020: 66 6c 61 67 2e 20 20 49 66 20 53 51 4c 69 74 65  flag.  If SQLite
9030: 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74   is compiled wit
9040: 68 0a 2a 2a 20 53 51 4c 49 54 45 5f 54 48 52 45  h.** SQLITE_THRE
9050: 41 44 53 41 46 45 3d 31 20 6f 72 20 3d 32 20 74  ADSAFE=1 or =2 t
9060: 68 65 6e 20 6d 75 74 65 78 65 73 20 61 72 65 20  hen mutexes are 
9070: 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  enabled by defau
9080: 6c 74 20 62 75 74 0a 2a 2a 20 63 61 6e 20 62 65  lt but.** can be
9090: 20 66 75 6c 6c 79 20 6f 72 20 70 61 72 74 69 61   fully or partia
90a0: 6c 6c 79 20 64 69 73 61 62 6c 65 64 20 75 73 69  lly disabled usi
90b0: 6e 67 20 61 20 63 61 6c 6c 20 74 6f 20 5b 73 71  ng a call to [sq
90c0: 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 0a  lite3_config()].
90d0: 2a 2a 20 77 69 74 68 20 74 68 65 20 76 65 72 62  ** with the verb
90e0: 73 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  s [SQLITE_CONFIG
90f0: 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 2c 20  _SINGLETHREAD], 
9100: 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
9110: 55 4c 54 49 54 48 52 45 41 44 5d 2c 0a 2a 2a 20  ULTITHREAD],.** 
9120: 6f 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  or [SQLITE_CONFI
9130: 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 2e 20 20  G_SERIALIZED].  
9140: 5e 28 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c  ^(The return val
9150: 75 65 20 6f 66 20 74 68 65 0a 2a 2a 20 73 71 6c  ue of the.** sql
9160: 69 74 65 33 5f 74 68 72 65 61 64 73 61 66 65 28  ite3_threadsafe(
9170: 29 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 77 73  ) function shows
9180: 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6d 70 69 6c   only the compil
9190: 65 2d 74 69 6d 65 20 73 65 74 74 69 6e 67 20 6f  e-time setting o
91a0: 66 0a 2a 2a 20 74 68 72 65 61 64 20 73 61 66 65  f.** thread safe
91b0: 74 79 2c 20 6e 6f 74 20 61 6e 79 20 72 75 6e 2d  ty, not any run-
91c0: 74 69 6d 65 20 63 68 61 6e 67 65 73 20 74 6f 20  time changes to 
91d0: 74 68 61 74 20 73 65 74 74 69 6e 67 20 6d 61 64  that setting mad
91e0: 65 20 62 79 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  e by.** sqlite3_
91f0: 63 6f 6e 66 69 67 28 29 2e 20 49 6e 20 6f 74 68  config(). In oth
9200: 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20 72 65  er words, the re
9210: 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
9220: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
9230: 66 65 28 29 0a 2a 2a 20 69 73 20 75 6e 63 68 61  fe().** is uncha
9240: 6e 67 65 64 20 62 79 20 63 61 6c 6c 73 20 74 6f  nged by calls to
9250: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
9260: 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 74  ).)^.**.** See t
9270: 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  he [threading mo
9280: 64 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f  de] documentatio
9290: 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  n for additional
92a0: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2f   information..*/
92b0: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
92c0: 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
92d0: 66 65 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  fe(void);../*.**
92e0: 20 43 41 50 49 33 52 45 46 3a 20 44 61 74 61 62   CAPI3REF: Datab
92f0: 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 48  ase Connection H
9300: 61 6e 64 6c 65 0a 2a 2a 20 4b 45 59 57 4f 52 44  andle.** KEYWORD
9310: 53 3a 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e  S: {database con
9320: 6e 65 63 74 69 6f 6e 7d 20 7b 64 61 74 61 62 61  nection} {databa
9330: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 7d 0a  se connections}.
9340: 2a 2a 0a 2a 2a 20 45 61 63 68 20 6f 70 65 6e 20  **.** Each open 
9350: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
9360: 69 73 20 72 65 70 72 65 73 65 6e 74 65 64 20 62  is represented b
9370: 79 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  y a pointer to a
9380: 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 0a 2a 2a  n instance of.**
9390: 20 74 68 65 20 6f 70 61 71 75 65 20 73 74 72 75   the opaque stru
93a0: 63 74 75 72 65 20 6e 61 6d 65 64 20 22 73 71 6c  cture named "sql
93b0: 69 74 65 33 22 2e 20 20 49 74 20 69 73 20 75 73  ite3".  It is us
93c0: 65 66 75 6c 20 74 6f 20 74 68 69 6e 6b 20 6f 66  eful to think of
93d0: 20 61 6e 20 73 71 6c 69 74 65 33 0a 2a 2a 20 70   an sqlite3.** p
93e0: 6f 69 6e 74 65 72 20 61 73 20 61 6e 20 6f 62 6a  ointer as an obj
93f0: 65 63 74 2e 20 20 54 68 65 20 5b 73 71 6c 69 74  ect.  The [sqlit
9400: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
9410: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
9420: 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
9430: 6f 70 65 6e 5f 76 32 28 29 5d 20 69 6e 74 65 72  open_v2()] inter
9440: 66 61 63 65 73 20 61 72 65 20 69 74 73 20 63 6f  faces are its co
9450: 6e 73 74 72 75 63 74 6f 72 73 2c 20 61 6e 64 20  nstructors, and 
9460: 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29  [sqlite3_close()
9470: 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65  ].** and [sqlite
9480: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 5d 20 61 72  3_close_v2()] ar
9490: 65 20 69 74 73 20 64 65 73 74 72 75 63 74 6f 72  e its destructor
94a0: 73 2e 20 20 54 68 65 72 65 20 61 72 65 20 6d 61  s.  There are ma
94b0: 6e 79 20 6f 74 68 65 72 0a 2a 2a 20 69 6e 74 65  ny other.** inte
94c0: 72 66 61 63 65 73 20 28 73 75 63 68 20 61 73 0a  rfaces (such as.
94d0: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
94e0: 61 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69  are_v2()], [sqli
94f0: 74 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74  te3_create_funct
9500: 69 6f 6e 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b  ion()], and.** [
9510: 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
9520: 65 6f 75 74 28 29 5d 20 74 6f 20 6e 61 6d 65 20  eout()] to name 
9530: 62 75 74 20 74 68 72 65 65 29 20 74 68 61 74 20  but three) that 
9540: 61 72 65 20 6d 65 74 68 6f 64 73 20 6f 6e 20 61  are methods on a
9550: 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 20 6f 62 6a  n.** sqlite3 obj
9560: 65 63 74 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  ect..*/.typedef 
9570: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 20 73  struct sqlite3 s
9580: 71 6c 69 74 65 33 3b 0a 0a 2f 2a 0a 2a 2a 20 43  qlite3;../*.** C
9590: 41 50 49 33 52 45 46 3a 20 36 34 2d 42 69 74 20  API3REF: 64-Bit 
95a0: 49 6e 74 65 67 65 72 20 54 79 70 65 73 0a 2a 2a  Integer Types.**
95b0: 20 4b 45 59 57 4f 52 44 53 3a 20 73 71 6c 69 74   KEYWORDS: sqlit
95c0: 65 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 75  e_int64 sqlite_u
95d0: 69 6e 74 36 34 0a 2a 2a 0a 2a 2a 20 42 65 63 61  int64.**.** Beca
95e0: 75 73 65 20 74 68 65 72 65 20 69 73 20 6e 6f 20  use there is no 
95f0: 63 72 6f 73 73 2d 70 6c 61 74 66 6f 72 6d 20 77  cross-platform w
9600: 61 79 20 74 6f 20 73 70 65 63 69 66 79 20 36 34  ay to specify 64
9610: 2d 62 69 74 20 69 6e 74 65 67 65 72 20 74 79 70  -bit integer typ
9620: 65 73 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6e 63  es.** SQLite inc
9630: 6c 75 64 65 73 20 74 79 70 65 64 65 66 73 20 66  ludes typedefs f
9640: 6f 72 20 36 34 2d 62 69 74 20 73 69 67 6e 65 64  or 64-bit signed
9650: 20 61 6e 64 20 75 6e 73 69 67 6e 65 64 20 69 6e   and unsigned in
9660: 74 65 67 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  tegers..**.** Th
9670: 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  e sqlite3_int64 
9680: 61 6e 64 20 73 71 6c 69 74 65 33 5f 75 69 6e 74  and sqlite3_uint
9690: 36 34 20 61 72 65 20 74 68 65 20 70 72 65 66 65  64 are the prefe
96a0: 72 72 65 64 20 74 79 70 65 20 64 65 66 69 6e 69  rred type defini
96b0: 74 69 6f 6e 73 2e 0a 2a 2a 20 54 68 65 20 73 71  tions..** The sq
96c0: 6c 69 74 65 5f 69 6e 74 36 34 20 61 6e 64 20 73  lite_int64 and s
96d0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 74 79 70  qlite_uint64 typ
96e0: 65 73 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  es are supported
96f0: 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 0a 2a   for backwards.*
9700: 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  * compatibility 
9710: 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  only..**.** ^The
9720: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 61   sqlite3_int64 a
9730: 6e 64 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  nd sqlite_int64 
9740: 74 79 70 65 73 20 63 61 6e 20 73 74 6f 72 65 20  types can store 
9750: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 0a 2a  integer values.*
9760: 2a 20 62 65 74 77 65 65 6e 20 2d 39 32 32 33 33  * between -92233
9770: 37 32 30 33 36 38 35 34 37 37 35 38 30 38 20 61  72036854775808 a
9780: 6e 64 20 2b 39 32 32 33 33 37 32 30 33 36 38 35  nd +922337203685
9790: 34 37 37 35 38 30 37 20 69 6e 63 6c 75 73 69 76  4775807 inclusiv
97a0: 65 2e 20 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69  e.  ^The.** sqli
97b0: 74 65 33 5f 75 69 6e 74 36 34 20 61 6e 64 20 73  te3_uint64 and s
97c0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 74 79 70  qlite_uint64 typ
97d0: 65 73 20 63 61 6e 20 73 74 6f 72 65 20 69 6e 74  es can store int
97e0: 65 67 65 72 20 76 61 6c 75 65 73 20 0a 2a 2a 20  eger values .** 
97f0: 62 65 74 77 65 65 6e 20 30 20 61 6e 64 20 2b 31  between 0 and +1
9800: 38 34 34 36 37 34 34 30 37 33 37 30 39 35 35 31  8446744073709551
9810: 36 31 35 20 69 6e 63 6c 75 73 69 76 65 2e 0a 2a  615 inclusive..*
9820: 2f 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  /.#ifdef SQLITE_
9830: 49 4e 54 36 34 5f 54 59 50 45 0a 20 20 74 79 70  INT64_TYPE.  typ
9840: 65 64 65 66 20 53 51 4c 49 54 45 5f 49 4e 54 36  edef SQLITE_INT6
9850: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 69 6e  4_TYPE sqlite_in
9860: 74 36 34 3b 0a 23 20 69 66 64 65 66 20 53 51 4c  t64;.# ifdef SQL
9870: 49 54 45 5f 55 49 4e 54 36 34 5f 54 59 50 45 0a  ITE_UINT64_TYPE.
9880: 20 20 20 20 74 79 70 65 64 65 66 20 53 51 4c 49      typedef SQLI
9890: 54 45 5f 55 49 4e 54 36 34 5f 54 59 50 45 20 73  TE_UINT64_TYPE s
98a0: 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 20  qlite_uint64;.# 
98b0: 65 6c 73 65 20 20 0a 20 20 20 20 74 79 70 65 64  else  .    typed
98c0: 65 66 20 75 6e 73 69 67 6e 65 64 20 53 51 4c 49  ef unsigned SQLI
98d0: 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20 73 71  TE_INT64_TYPE sq
98e0: 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 20 65  lite_uint64;.# e
98f0: 6e 64 69 66 0a 23 65 6c 69 66 20 64 65 66 69 6e  ndif.#elif defin
9900: 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 7c 7c 20  ed(_MSC_VER) || 
9910: 64 65 66 69 6e 65 64 28 5f 5f 42 4f 52 4c 41 4e  defined(__BORLAN
9920: 44 43 5f 5f 29 0a 20 20 74 79 70 65 64 65 66 20  DC__).  typedef 
9930: 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f 69  __int64 sqlite_i
9940: 6e 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20  nt64;.  typedef 
9950: 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e 74 36 34  unsigned __int64
9960: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 3b 0a   sqlite_uint64;.
9970: 23 65 6c 73 65 0a 20 20 74 79 70 65 64 65 66 20  #else.  typedef 
9980: 6c 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71  long long int sq
9990: 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20 74 79  lite_int64;.  ty
99a0: 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64 20 6c  pedef unsigned l
99b0: 6f 6e 67 20 6c 6f 6e 67 20 69 6e 74 20 73 71 6c  ong long int sql
99c0: 69 74 65 5f 75 69 6e 74 36 34 3b 0a 23 65 6e 64  ite_uint64;.#end
99d0: 69 66 0a 74 79 70 65 64 65 66 20 73 71 6c 69 74  if.typedef sqlit
99e0: 65 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  e_int64 sqlite3_
99f0: 69 6e 74 36 34 3b 0a 74 79 70 65 64 65 66 20 73  int64;.typedef s
9a00: 71 6c 69 74 65 5f 75 69 6e 74 36 34 20 73 71 6c  qlite_uint64 sql
9a10: 69 74 65 33 5f 75 69 6e 74 36 34 3b 0a 0a 2f 2a  ite3_uint64;../*
9a20: 0a 2a 2a 20 49 66 20 63 6f 6d 70 69 6c 69 6e 67  .** If compiling
9a30: 20 66 6f 72 20 61 20 70 72 6f 63 65 73 73 6f 72   for a processor
9a40: 20 74 68 61 74 20 6c 61 63 6b 73 20 66 6c 6f 61   that lacks floa
9a50: 74 69 6e 67 20 70 6f 69 6e 74 20 73 75 70 70 6f  ting point suppo
9a60: 72 74 2c 0a 2a 2a 20 73 75 62 73 74 69 74 75 74  rt,.** substitut
9a70: 65 20 69 6e 74 65 67 65 72 20 66 6f 72 20 66 6c  e integer for fl
9a80: 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 2e 0a 2a 2f  oating-point..*/
9a90: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4f  .#ifdef SQLITE_O
9aa0: 4d 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49  MIT_FLOATING_POI
9ab0: 4e 54 0a 23 20 64 65 66 69 6e 65 20 64 6f 75 62  NT.# define doub
9ac0: 6c 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  le sqlite3_int64
9ad0: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a 2a 20 43  .#endif../*.** C
9ae0: 41 50 49 33 52 45 46 3a 20 43 6c 6f 73 69 6e 67  API3REF: Closing
9af0: 20 41 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e   A Database Conn
9b00: 65 63 74 69 6f 6e 0a 2a 2a 20 44 45 53 54 52 55  ection.** DESTRU
9b10: 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  CTOR: sqlite3.**
9b20: 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
9b30: 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20 73 71 6c  _close() and sql
9b40: 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20  ite3_close_v2() 
9b50: 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64 65 73  routines are des
9b60: 74 72 75 63 74 6f 72 73 0a 2a 2a 20 66 6f 72 20  tructors.** for 
9b70: 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62  the [sqlite3] ob
9b80: 6a 65 63 74 2e 0a 2a 2a 20 5e 43 61 6c 6c 73 20  ject..** ^Calls 
9b90: 74 6f 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  to sqlite3_close
9ba0: 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63  () and sqlite3_c
9bb0: 6c 6f 73 65 5f 76 32 28 29 20 72 65 74 75 72 6e  lose_v2() return
9bc0: 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 69 66 0a   [SQLITE_OK] if.
9bd0: 2a 2a 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d  ** the [sqlite3]
9be0: 20 6f 62 6a 65 63 74 20 69 73 20 73 75 63 63 65   object is succe
9bf0: 73 73 66 75 6c 6c 79 20 64 65 73 74 72 6f 79 65  ssfully destroye
9c00: 64 20 61 6e 64 20 61 6c 6c 20 61 73 73 6f 63 69  d and all associ
9c10: 61 74 65 64 0a 2a 2a 20 72 65 73 6f 75 72 63 65  ated.** resource
9c20: 73 20 61 72 65 20 64 65 61 6c 6c 6f 63 61 74 65  s are deallocate
9c30: 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  d..**.** ^If the
9c40: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
9c50: 74 69 6f 6e 20 69 73 20 61 73 73 6f 63 69 61 74  tion is associat
9c60: 65 64 20 77 69 74 68 20 75 6e 66 69 6e 61 6c 69  ed with unfinali
9c70: 7a 65 64 20 70 72 65 70 61 72 65 64 0a 2a 2a 20  zed prepared.** 
9c80: 73 74 61 74 65 6d 65 6e 74 73 20 6f 72 20 75 6e  statements or un
9c90: 66 69 6e 69 73 68 65 64 20 73 71 6c 69 74 65 33  finished sqlite3
9ca0: 5f 62 61 63 6b 75 70 20 6f 62 6a 65 63 74 73 20  _backup objects 
9cb0: 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 63 6c 6f  then sqlite3_clo
9cc0: 73 65 28 29 0a 2a 2a 20 77 69 6c 6c 20 6c 65 61  se().** will lea
9cd0: 76 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ve the database 
9ce0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 70 65 6e 20  connection open 
9cf0: 61 6e 64 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  and return [SQLI
9d00: 54 45 5f 42 55 53 59 5d 2e 0a 2a 2a 20 5e 49 66  TE_BUSY]..** ^If
9d10: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76   sqlite3_close_v
9d20: 32 28 29 20 69 73 20 63 61 6c 6c 65 64 20 77 69  2() is called wi
9d30: 74 68 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70  th unfinalized p
9d40: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
9d50: 74 73 0a 2a 2a 20 61 6e 64 2f 6f 72 20 75 6e 66  ts.** and/or unf
9d60: 69 6e 69 73 68 65 64 20 73 71 6c 69 74 65 33 5f  inished sqlite3_
9d70: 62 61 63 6b 75 70 73 2c 20 74 68 65 6e 20 74 68  backups, then th
9d80: 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
9d90: 63 74 69 6f 6e 20 62 65 63 6f 6d 65 73 0a 2a 2a  ction becomes.**
9da0: 20 61 6e 20 75 6e 75 73 61 62 6c 65 20 22 7a 6f   an unusable "zo
9db0: 6d 62 69 65 22 20 77 68 69 63 68 20 77 69 6c 6c  mbie" which will
9dc0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62   automatically b
9dd0: 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 77 68  e deallocated wh
9de0: 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 73 74 20 70  en the.** last p
9df0: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
9e00: 74 20 69 73 20 66 69 6e 61 6c 69 7a 65 64 20 6f  t is finalized o
9e10: 72 20 74 68 65 20 6c 61 73 74 20 73 71 6c 69 74  r the last sqlit
9e20: 65 33 5f 62 61 63 6b 75 70 20 69 73 0a 2a 2a 20  e3_backup is.** 
9e30: 66 69 6e 69 73 68 65 64 2e 20 20 54 68 65 20 73  finished.  The s
9e40: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28  qlite3_close_v2(
9e50: 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69  ) interface is i
9e60: 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20  ntended for use 
9e70: 77 69 74 68 0a 2a 2a 20 68 6f 73 74 20 6c 61 6e  with.** host lan
9e80: 67 75 61 67 65 73 20 74 68 61 74 20 61 72 65 20  guages that are 
9e90: 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 65  garbage collecte
9ea0: 64 2c 20 61 6e 64 20 77 68 65 72 65 20 74 68 65  d, and where the
9eb0: 20 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 0a   order in which.
9ec0: 2a 2a 20 64 65 73 74 72 75 63 74 6f 72 73 20 61  ** destructors a
9ed0: 72 65 20 63 61 6c 6c 65 64 20 69 73 20 61 72 62  re called is arb
9ee0: 69 74 72 61 72 79 2e 0a 2a 2a 0a 2a 2a 20 41 70  itrary..**.** Ap
9ef0: 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c  plications shoul
9f00: 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c  d [sqlite3_final
9f10: 69 7a 65 20 7c 20 66 69 6e 61 6c 69 7a 65 5d 20  ize | finalize] 
9f20: 61 6c 6c 20 5b 70 72 65 70 61 72 65 64 20 73 74  all [prepared st
9f30: 61 74 65 6d 65 6e 74 73 5d 2c 0a 2a 2a 20 5b 73  atements],.** [s
9f40: 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 63 6c 6f 73  qlite3_blob_clos
9f50: 65 20 7c 20 63 6c 6f 73 65 5d 20 61 6c 6c 20 5b  e | close] all [
9f60: 42 4c 4f 42 20 68 61 6e 64 6c 65 73 5d 2c 20 61  BLOB handles], a
9f70: 6e 64 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  nd .** [sqlite3_
9f80: 62 61 63 6b 75 70 5f 66 69 6e 69 73 68 20 7c 20  backup_finish | 
9f90: 66 69 6e 69 73 68 5d 20 61 6c 6c 20 5b 73 71 6c  finish] all [sql
9fa0: 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a  ite3_backup] obj
9fb0: 65 63 74 73 20 61 73 73 6f 63 69 61 74 65 64 0a  ects associated.
9fc0: 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 73 71 6c  ** with the [sql
9fd0: 69 74 65 33 5d 20 6f 62 6a 65 63 74 20 70 72 69  ite3] object pri
9fe0: 6f 72 20 74 6f 20 61 74 74 65 6d 70 74 69 6e 67  or to attempting
9ff0: 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 6f 62   to close the ob
a000: 6a 65 63 74 2e 20 20 5e 49 66 0a 2a 2a 20 73 71  ject.  ^If.** sq
a010: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
a020: 20 69 73 20 63 61 6c 6c 65 64 20 6f 6e 20 61 20   is called on a 
a030: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
a040: 74 69 6f 6e 5d 20 74 68 61 74 20 73 74 69 6c 6c  tion] that still
a050: 20 68 61 73 0a 2a 2a 20 6f 75 74 73 74 61 6e 64   has.** outstand
a060: 69 6e 67 20 5b 70 72 65 70 61 72 65 64 20 73 74  ing [prepared st
a070: 61 74 65 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f 42  atements], [BLOB
a080: 20 68 61 6e 64 6c 65 73 5d 2c 20 61 6e 64 2f 6f   handles], and/o
a090: 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 61  r.** [sqlite3_ba
a0a0: 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 74 68  ckup] objects th
a0b0: 65 6e 20 69 74 20 72 65 74 75 72 6e 73 20 5b 53  en it returns [S
a0c0: 51 4c 49 54 45 5f 4f 4b 5d 20 61 6e 64 20 74 68  QLITE_OK] and th
a0d0: 65 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a  e deallocation.*
a0e0: 2a 20 6f 66 20 72 65 73 6f 75 72 63 65 73 20 69  * of resources i
a0f0: 73 20 64 65 66 65 72 72 65 64 20 75 6e 74 69 6c  s deferred until
a100: 20 61 6c 6c 20 5b 70 72 65 70 61 72 65 64 20 73   all [prepared s
a110: 74 61 74 65 6d 65 6e 74 73 5d 2c 20 5b 42 4c 4f  tatements], [BLO
a120: 42 20 68 61 6e 64 6c 65 73 5d 2c 0a 2a 2a 20 61  B handles],.** a
a130: 6e 64 20 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b  nd [sqlite3_back
a140: 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 72 65 20  up] objects are 
a150: 61 6c 73 6f 20 64 65 73 74 72 6f 79 65 64 2e 0a  also destroyed..
a160: 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 5b 73 71  **.** ^If an [sq
a170: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 20 69 73  lite3] object is
a180: 20 64 65 73 74 72 6f 79 65 64 20 77 68 69 6c 65   destroyed while
a190: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69   a transaction i
a1a0: 73 20 6f 70 65 6e 2c 0a 2a 2a 20 74 68 65 20 74  s open,.** the t
a1b0: 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 61 75  ransaction is au
a1c0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 6f 6c 6c  tomatically roll
a1d0: 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54  ed back..**.** T
a1e0: 68 65 20 43 20 70 61 72 61 6d 65 74 65 72 20 74  he C parameter t
a1f0: 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  o [sqlite3_close
a200: 28 43 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  (C)] and [sqlite
a210: 33 5f 63 6c 6f 73 65 5f 76 32 28 43 29 5d 0a 2a  3_close_v2(C)].*
a220: 2a 20 6d 75 73 74 20 62 65 20 65 69 74 68 65 72  * must be either
a230: 20 61 20 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74   a NULL.** point
a240: 65 72 20 6f 72 20 61 6e 20 5b 73 71 6c 69 74 65  er or an [sqlite
a250: 33 5d 20 6f 62 6a 65 63 74 20 70 6f 69 6e 74 65  3] object pointe
a260: 72 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72  r obtained.** fr
a270: 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  om [sqlite3_open
a280: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
a290: 65 6e 31 36 28 29 5d 2c 20 6f 72 0a 2a 2a 20 5b  en16()], or.** [
a2a0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
a2b0: 29 5d 2c 20 61 6e 64 20 6e 6f 74 20 70 72 65 76  )], and not prev
a2c0: 69 6f 75 73 6c 79 20 63 6c 6f 73 65 64 2e 0a 2a  iously closed..*
a2d0: 2a 20 5e 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74  * ^Calling sqlit
a2e0: 65 33 5f 63 6c 6f 73 65 28 29 20 6f 72 20 73 71  e3_close() or sq
a2f0: 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28 29  lite3_close_v2()
a300: 20 77 69 74 68 20 61 20 4e 55 4c 4c 20 70 6f 69   with a NULL poi
a310: 6e 74 65 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  nter.** argument
a320: 20 69 73 20 61 20 68 61 72 6d 6c 65 73 73 20 6e   is a harmless n
a330: 6f 2d 6f 70 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  o-op..*/.SQLITE_
a340: 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
a350: 63 6c 6f 73 65 28 73 71 6c 69 74 65 33 2a 29 3b  close(sqlite3*);
a360: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
a370: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
a380: 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
a390: 2a 2a 20 54 68 65 20 74 79 70 65 20 66 6f 72 20  ** The type for 
a3a0: 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  a callback funct
a3b0: 69 6f 6e 2e 0a 2a 2a 20 54 68 69 73 20 69 73 20  ion..** This is 
a3c0: 6c 65 67 61 63 79 20 61 6e 64 20 64 65 70 72 65  legacy and depre
a3d0: 63 61 74 65 64 2e 20 20 49 74 20 69 73 20 69 6e  cated.  It is in
a3e0: 63 6c 75 64 65 64 20 66 6f 72 20 68 69 73 74 6f  cluded for histo
a3f0: 72 69 63 61 6c 0a 2a 2a 20 63 6f 6d 70 61 74 69  rical.** compati
a400: 62 69 6c 69 74 79 20 61 6e 64 20 69 73 20 6e 6f  bility and is no
a410: 74 20 64 6f 63 75 6d 65 6e 74 65 64 2e 0a 2a 2f  t documented..*/
a420: 0a 74 79 70 65 64 65 66 20 69 6e 74 20 28 2a 73  .typedef int (*s
a430: 71 6c 69 74 65 33 5f 63 61 6c 6c 62 61 63 6b 29  qlite3_callback)
a440: 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a  (void*,int,char*
a450: 2a 2c 20 63 68 61 72 2a 2a 29 3b 0a 0a 2f 2a 0a  *, char**);../*.
a460: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 6e 65  ** CAPI3REF: One
a470: 2d 53 74 65 70 20 51 75 65 72 79 20 45 78 65 63  -Step Query Exec
a480: 75 74 69 6f 6e 20 49 6e 74 65 72 66 61 63 65 0a  ution Interface.
a490: 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
a4a0: 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  e3.**.** The sql
a4b0: 69 74 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65  ite3_exec() inte
a4c0: 72 66 61 63 65 20 69 73 20 61 20 63 6f 6e 76 65  rface is a conve
a4d0: 6e 69 65 6e 63 65 20 77 72 61 70 70 65 72 20 61  nience wrapper a
a4e0: 72 6f 75 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  round.** [sqlite
a4f0: 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c  3_prepare_v2()],
a500: 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
a510: 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ], and [sqlite3_
a520: 66 69 6e 61 6c 69 7a 65 28 29 5d 2c 0a 2a 2a 20  finalize()],.** 
a530: 74 68 61 74 20 61 6c 6c 6f 77 73 20 61 6e 20 61  that allows an a
a540: 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 20 72 75  pplication to ru
a550: 6e 20 6d 75 6c 74 69 70 6c 65 20 73 74 61 74 65  n multiple state
a560: 6d 65 6e 74 73 20 6f 66 20 53 51 4c 0a 2a 2a 20  ments of SQL.** 
a570: 77 69 74 68 6f 75 74 20 68 61 76 69 6e 67 20 74  without having t
a580: 6f 20 75 73 65 20 61 20 6c 6f 74 20 6f 66 20 43  o use a lot of C
a590: 20 63 6f 64 65 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54   code. .**.** ^T
a5a0: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
a5b0: 29 20 69 6e 74 65 72 66 61 63 65 20 72 75 6e 73  ) interface runs
a5c0: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 55 54   zero or more UT
a5d0: 46 2d 38 20 65 6e 63 6f 64 65 64 2c 0a 2a 2a 20  F-8 encoded,.** 
a5e0: 73 65 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61  semicolon-separa
a5f0: 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  te SQL statement
a600: 73 20 70 61 73 73 65 64 20 69 6e 74 6f 20 69 74  s passed into it
a610: 73 20 32 6e 64 20 61 72 67 75 6d 65 6e 74 2c 0a  s 2nd argument,.
a620: 2a 2a 20 69 6e 20 74 68 65 20 63 6f 6e 74 65 78  ** in the contex
a630: 74 20 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61  t of the [databa
a640: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 70  se connection] p
a650: 61 73 73 65 64 20 69 6e 20 61 73 20 69 74 73 20  assed in as its 
a660: 31 73 74 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 2e  1st.** argument.
a670: 20 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61    ^If the callba
a680: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74  ck function of t
a690: 68 65 20 33 72 64 20 61 72 67 75 6d 65 6e 74 20  he 3rd argument 
a6a0: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78  to.** sqlite3_ex
a6b0: 65 63 28 29 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  ec() is not NULL
a6c0: 2c 20 74 68 65 6e 20 69 74 20 69 73 20 69 6e 76  , then it is inv
a6d0: 6f 6b 65 64 20 66 6f 72 20 65 61 63 68 20 72 65  oked for each re
a6e0: 73 75 6c 74 20 72 6f 77 0a 2a 2a 20 63 6f 6d 69  sult row.** comi
a6f0: 6e 67 20 6f 75 74 20 6f 66 20 74 68 65 20 65 76  ng out of the ev
a700: 61 6c 75 61 74 65 64 20 53 51 4c 20 73 74 61 74  aluated SQL stat
a710: 65 6d 65 6e 74 73 2e 20 20 5e 54 68 65 20 34 74  ements.  ^The 4t
a720: 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  h argument to.**
a730: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
a740: 69 73 20 72 65 6c 61 79 65 64 20 74 68 72 6f 75  is relayed throu
a750: 67 68 20 74 6f 20 74 68 65 20 31 73 74 20 61 72  gh to the 1st ar
a760: 67 75 6d 65 6e 74 20 6f 66 20 65 61 63 68 0a 2a  gument of each.*
a770: 2a 20 63 61 6c 6c 62 61 63 6b 20 69 6e 76 6f 63  * callback invoc
a780: 61 74 69 6f 6e 2e 20 20 5e 49 66 20 74 68 65 20  ation.  ^If the 
a790: 63 61 6c 6c 62 61 63 6b 20 70 6f 69 6e 74 65 72  callback pointer
a7a0: 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63   to sqlite3_exec
a7b0: 28 29 0a 2a 2a 20 69 73 20 4e 55 4c 4c 2c 20 74  ().** is NULL, t
a7c0: 68 65 6e 20 6e 6f 20 63 61 6c 6c 62 61 63 6b 20  hen no callback 
a7d0: 69 73 20 65 76 65 72 20 69 6e 76 6f 6b 65 64 20  is ever invoked 
a7e0: 61 6e 64 20 72 65 73 75 6c 74 20 72 6f 77 73 20  and result rows 
a7f0: 61 72 65 0a 2a 2a 20 69 67 6e 6f 72 65 64 2e 0a  are.** ignored..
a800: 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 65 72 72  **.** ^If an err
a810: 6f 72 20 6f 63 63 75 72 73 20 77 68 69 6c 65 20  or occurs while 
a820: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 53  evaluating the S
a830: 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 70 61  QL statements pa
a840: 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 73 71 6c  ssed into.** sql
a850: 69 74 65 33 5f 65 78 65 63 28 29 2c 20 74 68 65  ite3_exec(), the
a860: 6e 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 74  n execution of t
a870: 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 74 65  he current state
a880: 6d 65 6e 74 20 73 74 6f 70 73 20 61 6e 64 0a 2a  ment stops and.*
a890: 2a 20 73 75 62 73 65 71 75 65 6e 74 20 73 74 61  * subsequent sta
a8a0: 74 65 6d 65 6e 74 73 20 61 72 65 20 73 6b 69 70  tements are skip
a8b0: 70 65 64 2e 20 20 5e 49 66 20 74 68 65 20 35 74  ped.  ^If the 5t
a8c0: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  h parameter to s
a8d0: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a  qlite3_exec().**
a8e0: 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65   is not NULL the
a8f0: 6e 20 61 6e 79 20 65 72 72 6f 72 20 6d 65 73 73  n any error mess
a900: 61 67 65 20 69 73 20 77 72 69 74 74 65 6e 20 69  age is written i
a910: 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69  nto memory obtai
a920: 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
a930: 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61  ite3_malloc()] a
a940: 6e 64 20 70 61 73 73 65 64 20 62 61 63 6b 20 74  nd passed back t
a950: 68 72 6f 75 67 68 20 74 68 65 20 35 74 68 20 70  hrough the 5th p
a960: 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 54 6f 20  arameter..** To 
a970: 61 76 6f 69 64 20 6d 65 6d 6f 72 79 20 6c 65 61  avoid memory lea
a980: 6b 73 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74  ks, the applicat
a990: 69 6f 6e 20 73 68 6f 75 6c 64 20 69 6e 76 6f 6b  ion should invok
a9a0: 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  e [sqlite3_free(
a9b0: 29 5d 0a 2a 2a 20 6f 6e 20 65 72 72 6f 72 20 6d  )].** on error m
a9c0: 65 73 73 61 67 65 20 73 74 72 69 6e 67 73 20 72  essage strings r
a9d0: 65 74 75 72 6e 65 64 20 74 68 72 6f 75 67 68 20  eturned through 
a9e0: 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65  the 5th paramete
a9f0: 72 20 6f 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  r of.** sqlite3_
aa00: 65 78 65 63 28 29 20 61 66 74 65 72 20 74 68 65  exec() after the
aa10: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
aa20: 74 72 69 6e 67 20 69 73 20 6e 6f 20 6c 6f 6e 67  tring is no long
aa30: 65 72 20 6e 65 65 64 65 64 2e 0a 2a 2a 20 5e 49  er needed..** ^I
aa40: 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d 65  f the 5th parame
aa50: 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65  ter to sqlite3_e
aa60: 78 65 63 28 29 20 69 73 20 6e 6f 74 20 4e 55 4c  xec() is not NUL
aa70: 4c 20 61 6e 64 20 6e 6f 20 65 72 72 6f 72 73 0a  L and no errors.
aa80: 2a 2a 20 6f 63 63 75 72 2c 20 74 68 65 6e 20 73  ** occur, then s
aa90: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 73 65  qlite3_exec() se
aaa0: 74 73 20 74 68 65 20 70 6f 69 6e 74 65 72 20 69  ts the pointer i
aab0: 6e 20 69 74 73 20 35 74 68 20 70 61 72 61 6d 65  n its 5th parame
aac0: 74 65 72 20 74 6f 0a 2a 2a 20 4e 55 4c 4c 20 62  ter to.** NULL b
aad0: 65 66 6f 72 65 20 72 65 74 75 72 6e 69 6e 67 2e  efore returning.
aae0: 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 20 73 71  .**.** ^If an sq
aaf0: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c  lite3_exec() cal
ab00: 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f  lback returns no
ab10: 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 73 71 6c 69  n-zero, the sqli
ab20: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 72 6f  te3_exec().** ro
ab30: 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 53 51  utine returns SQ
ab40: 4c 49 54 45 5f 41 42 4f 52 54 20 77 69 74 68 6f  LITE_ABORT witho
ab50: 75 74 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  ut invoking the 
ab60: 63 61 6c 6c 62 61 63 6b 20 61 67 61 69 6e 20 61  callback again a
ab70: 6e 64 0a 2a 2a 20 77 69 74 68 6f 75 74 20 72 75  nd.** without ru
ab80: 6e 6e 69 6e 67 20 61 6e 79 20 73 75 62 73 65 71  nning any subseq
ab90: 75 65 6e 74 20 53 51 4c 20 73 74 61 74 65 6d 65  uent SQL stateme
aba0: 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  nts..**.** ^The 
abb0: 32 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  2nd argument to 
abc0: 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  the sqlite3_exec
abd0: 28 29 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  () callback func
abe0: 74 69 6f 6e 20 69 73 20 74 68 65 0a 2a 2a 20 6e  tion is the.** n
abf0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
ac00: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
ac10: 20 5e 54 68 65 20 33 72 64 20 61 72 67 75 6d 65   ^The 3rd argume
ac20: 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  nt to the sqlite
ac30: 33 5f 65 78 65 63 28 29 0a 2a 2a 20 63 61 6c 6c  3_exec().** call
ac40: 62 61 63 6b 20 69 73 20 61 6e 20 61 72 72 61 79  back is an array
ac50: 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 20   of pointers to 
ac60: 73 74 72 69 6e 67 73 20 6f 62 74 61 69 6e 65 64  strings obtained
ac70: 20 61 73 20 69 66 20 66 72 6f 6d 0a 2a 2a 20 5b   as if from.** [
ac80: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
ac90: 65 78 74 28 29 5d 2c 20 6f 6e 65 20 66 6f 72 20  ext()], one for 
aca0: 65 61 63 68 20 63 6f 6c 75 6d 6e 2e 20 20 5e 49  each column.  ^I
acb0: 66 20 61 6e 20 65 6c 65 6d 65 6e 74 20 6f 66 20  f an element of 
acc0: 61 0a 2a 2a 20 72 65 73 75 6c 74 20 72 6f 77 20  a.** result row 
acd0: 69 73 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68 65  is NULL then the
ace0: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 73   corresponding s
acf0: 74 72 69 6e 67 20 70 6f 69 6e 74 65 72 20 66 6f  tring pointer fo
ad00: 72 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  r the.** sqlite3
ad10: 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b  _exec() callback
ad20: 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
ad30: 65 72 2e 20 20 5e 54 68 65 20 34 74 68 20 61 72  er.  ^The 4th ar
ad40: 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a  gument to the.**
ad50: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
ad60: 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 6e 20 61  callback is an a
ad70: 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73  rray of pointers
ad80: 20 74 6f 20 73 74 72 69 6e 67 73 20 77 68 65 72   to strings wher
ad90: 65 20 65 61 63 68 0a 2a 2a 20 65 6e 74 72 79 20  e each.** entry 
ada0: 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 6e  represents the n
adb0: 61 6d 65 20 6f 66 20 63 6f 72 72 65 73 70 6f 6e  ame of correspon
adc0: 64 69 6e 67 20 72 65 73 75 6c 74 20 63 6f 6c 75  ding result colu
add0: 6d 6e 20 61 73 20 6f 62 74 61 69 6e 65 64 0a 2a  mn as obtained.*
ade0: 2a 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  * from [sqlite3_
adf0: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 28 29 5d 2e 0a  column_name()]..
ae00: 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 32 6e  **.** ^If the 2n
ae10: 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  d parameter to s
ae20: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
ae30: 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
ae40: 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f   a pointer.** to
ae50: 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
ae60: 2c 20 6f 72 20 61 20 70 6f 69 6e 74 65 72 20 74  , or a pointer t
ae70: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c  hat contains onl
ae80: 79 20 77 68 69 74 65 73 70 61 63 65 20 61 6e 64  y whitespace and
ae90: 2f 6f 72 20 0a 2a 2a 20 53 51 4c 20 63 6f 6d 6d  /or .** SQL comm
aea0: 65 6e 74 73 2c 20 74 68 65 6e 20 6e 6f 20 53 51  ents, then no SQ
aeb0: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65  L statements are
aec0: 20 65 76 61 6c 75 61 74 65 64 20 61 6e 64 20 74   evaluated and t
aed0: 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 69  he database.** i
aee0: 73 20 6e 6f 74 20 63 68 61 6e 67 65 64 2e 0a 2a  s not changed..*
aef0: 2a 0a 2a 2a 20 52 65 73 74 72 69 63 74 69 6f 6e  *.** Restriction
af00: 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  s:.**.** <ul>.**
af10: 20 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c 69 63   <li> The applic
af20: 61 74 69 6f 6e 20 6d 75 73 74 20 65 6e 73 75 72  ation must ensur
af30: 65 20 74 68 61 74 20 74 68 65 20 31 73 74 20 70  e that the 1st p
af40: 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
af50: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 20 20  te3_exec().**   
af60: 20 20 20 69 73 20 61 20 76 61 6c 69 64 20 61 6e     is a valid an
af70: 64 20 6f 70 65 6e 20 5b 64 61 74 61 62 61 73 65  d open [database
af80: 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a   connection]..**
af90: 20 3c 6c 69 3e 20 54 68 65 20 61 70 70 6c 69 63   <li> The applic
afa0: 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 63  ation must not c
afb0: 6c 6f 73 65 20 74 68 65 20 5b 64 61 74 61 62 61  lose the [databa
afc0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 73  se connection] s
afd0: 70 65 63 69 66 69 65 64 20 62 79 0a 2a 2a 20 20  pecified by.**  
afe0: 20 20 20 20 74 68 65 20 31 73 74 20 70 61 72 61      the 1st para
aff0: 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
b000: 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73 71  _exec() while sq
b010: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20  lite3_exec() is 
b020: 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 6c 69 3e  running..** <li>
b030: 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
b040: 20 6d 75 73 74 20 6e 6f 74 20 6d 6f 64 69 66 79   must not modify
b050: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
b060: 6e 74 20 74 65 78 74 20 70 61 73 73 65 64 20 69  nt text passed i
b070: 6e 74 6f 0a 2a 2a 20 20 20 20 20 20 74 68 65 20  nto.**      the 
b080: 32 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6f 66  2nd parameter of
b090: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
b0a0: 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65 78  while sqlite3_ex
b0b0: 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e  ec() is running.
b0c0: 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51 4c  .** </ul>.*/.SQL
b0d0: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
b0e0: 74 65 33 5f 65 78 65 63 28 0a 20 20 73 71 6c 69  te3_exec(.  sqli
b0f0: 74 65 33 2a 2c 20 20 20 20 20 20 20 20 20 20 20  te3*,           
b100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b110: 20 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70 65         /* An ope
b120: 6e 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20 20  n database */.  
b130: 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 2c  const char *sql,
b140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b150: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53 51             /* SQ
b160: 4c 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65  L to be evaluate
b170: 64 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 63 61 6c  d */.  int (*cal
b180: 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c 69 6e 74  lback)(void*,int
b190: 2c 63 68 61 72 2a 2a 2c 63 68 61 72 2a 2a 29 2c  ,char**,char**),
b1a0: 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20 66 75    /* Callback fu
b1b0: 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64  nction */.  void
b1c0: 20 2a 2c 20 20 20 20 20 20 20 20 20 20 20 20 20   *,             
b1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1e0: 20 20 20 20 20 20 20 2f 2a 20 31 73 74 20 61 72         /* 1st ar
b1f0: 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c 62 61  gument to callba
b200: 63 6b 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 65  ck */.  char **e
b210: 72 72 6d 73 67 20 20 20 20 20 20 20 20 20 20 20  rrmsg           
b220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b230: 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d 73 67 20     /* Error msg 
b240: 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a  written here */.
b250: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
b260: 45 46 3a 20 52 65 73 75 6c 74 20 43 6f 64 65 73  EF: Result Codes
b270: 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 72  .** KEYWORDS: {r
b280: 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66 69 6e  esult code defin
b290: 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 4d 61  itions}.**.** Ma
b2a0: 6e 79 20 53 51 4c 69 74 65 20 66 75 6e 63 74 69  ny SQLite functi
b2b0: 6f 6e 73 20 72 65 74 75 72 6e 20 61 6e 20 69 6e  ons return an in
b2c0: 74 65 67 65 72 20 72 65 73 75 6c 74 20 63 6f 64  teger result cod
b2d0: 65 20 66 72 6f 6d 20 74 68 65 20 73 65 74 20 73  e from the set s
b2e0: 68 6f 77 6e 0a 2a 2a 20 68 65 72 65 20 69 6e 20  hown.** here in 
b2f0: 6f 72 64 65 72 20 74 6f 20 69 6e 64 69 63 61 74  order to indicat
b300: 65 20 73 75 63 63 65 73 73 20 6f 72 20 66 61 69  e success or fai
b310: 6c 75 72 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20  lure..**.** New 
b320: 65 72 72 6f 72 20 63 6f 64 65 73 20 6d 61 79 20  error codes may 
b330: 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75  be added in futu
b340: 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
b350: 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  QLite..**.** See
b360: 20 61 6c 73 6f 3a 20 5b 65 78 74 65 6e 64 65 64   also: [extended
b370: 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65 66   result code def
b380: 69 6e 69 74 69 6f 6e 73 5d 0a 2a 2f 0a 23 64 65  initions].*/.#de
b390: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 4b 20 20  fine SQLITE_OK  
b3a0: 20 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20           0   /* 
b3b0: 53 75 63 63 65 73 73 66 75 6c 20 72 65 73 75 6c  Successful resul
b3c0: 74 20 2a 2f 0a 2f 2a 20 62 65 67 69 6e 6e 69 6e  t */./* beginnin
b3d0: 67 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  g-of-error-codes
b3e0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b3f0: 54 45 5f 45 52 52 4f 52 20 20 20 20 20 20 20 20  TE_ERROR        
b400: 31 20 20 20 2f 2a 20 47 65 6e 65 72 69 63 20 65  1   /* Generic e
b410: 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rror */.#define 
b420: 53 51 4c 49 54 45 5f 49 4e 54 45 52 4e 41 4c 20  SQLITE_INTERNAL 
b430: 20 20 20 20 32 20 20 20 2f 2a 20 49 6e 74 65 72      2   /* Inter
b440: 6e 61 6c 20 6c 6f 67 69 63 20 65 72 72 6f 72 20  nal logic error 
b450: 69 6e 20 53 51 4c 69 74 65 20 2a 2f 0a 23 64 65  in SQLite */.#de
b460: 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 45 52 4d  fine SQLITE_PERM
b470: 20 20 20 20 20 20 20 20 20 33 20 20 20 2f 2a 20           3   /* 
b480: 41 63 63 65 73 73 20 70 65 72 6d 69 73 73 69 6f  Access permissio
b490: 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65 66  n denied */.#def
b4a0: 69 6e 65 20 53 51 4c 49 54 45 5f 41 42 4f 52 54  ine SQLITE_ABORT
b4b0: 20 20 20 20 20 20 20 20 34 20 20 20 2f 2a 20 43          4   /* C
b4c0: 61 6c 6c 62 61 63 6b 20 72 6f 75 74 69 6e 65 20  allback routine 
b4d0: 72 65 71 75 65 73 74 65 64 20 61 6e 20 61 62 6f  requested an abo
b4e0: 72 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  rt */.#define SQ
b4f0: 4c 49 54 45 5f 42 55 53 59 20 20 20 20 20 20 20  LITE_BUSY       
b500: 20 20 35 20 20 20 2f 2a 20 54 68 65 20 64 61 74    5   /* The dat
b510: 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 6c 6f  abase file is lo
b520: 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  cked */.#define 
b530: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 20 20  SQLITE_LOCKED   
b540: 20 20 20 20 36 20 20 20 2f 2a 20 41 20 74 61 62      6   /* A tab
b550: 6c 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  le in the databa
b560: 73 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a  se is locked */.
b570: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e  #define SQLITE_N
b580: 4f 4d 45 4d 20 20 20 20 20 20 20 20 37 20 20 20  OMEM        7   
b590: 2f 2a 20 41 20 6d 61 6c 6c 6f 63 28 29 20 66 61  /* A malloc() fa
b5a0: 69 6c 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  iled */.#define 
b5b0: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
b5c0: 20 20 20 20 38 20 20 20 2f 2a 20 41 74 74 65 6d      8   /* Attem
b5d0: 70 74 20 74 6f 20 77 72 69 74 65 20 61 20 72 65  pt to write a re
b5e0: 61 64 6f 6e 6c 79 20 64 61 74 61 62 61 73 65 20  adonly database 
b5f0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b600: 45 5f 49 4e 54 45 52 52 55 50 54 20 20 20 20 39  E_INTERRUPT    9
b610: 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20     /* Operation 
b620: 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 73 71  terminated by sq
b630: 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
b640: 29 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  )*/.#define SQLI
b650: 54 45 5f 49 4f 45 52 52 20 20 20 20 20 20 20 31  TE_IOERR       1
b660: 30 20 20 20 2f 2a 20 53 6f 6d 65 20 6b 69 6e 64  0   /* Some kind
b670: 20 6f 66 20 64 69 73 6b 20 49 2f 4f 20 65 72 72   of disk I/O err
b680: 6f 72 20 6f 63 63 75 72 72 65 64 20 2a 2f 0a 23  or occurred */.#
b690: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
b6a0: 52 52 55 50 54 20 20 20 20 20 31 31 20 20 20 2f  RRUPT     11   /
b6b0: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 64  * The database d
b6c0: 69 73 6b 20 69 6d 61 67 65 20 69 73 20 6d 61 6c  isk image is mal
b6d0: 66 6f 72 6d 65 64 20 2a 2f 0a 23 64 65 66 69 6e  formed */.#defin
b6e0: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  e SQLITE_NOTFOUN
b6f0: 44 20 20 20 20 31 32 20 20 20 2f 2a 20 55 6e 6b  D    12   /* Unk
b700: 6e 6f 77 6e 20 6f 70 63 6f 64 65 20 69 6e 20 73  nown opcode in s
b710: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
b720: 72 6f 6c 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65  rol() */.#define
b730: 20 53 51 4c 49 54 45 5f 46 55 4c 4c 20 20 20 20   SQLITE_FULL    
b740: 20 20 20 20 31 33 20 20 20 2f 2a 20 49 6e 73 65      13   /* Inse
b750: 72 74 69 6f 6e 20 66 61 69 6c 65 64 20 62 65 63  rtion failed bec
b760: 61 75 73 65 20 64 61 74 61 62 61 73 65 20 69 73  ause database is
b770: 20 66 75 6c 6c 20 2a 2f 0a 23 64 65 66 69 6e 65   full */.#define
b780: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
b790: 20 20 20 20 31 34 20 20 20 2f 2a 20 55 6e 61 62      14   /* Unab
b7a0: 6c 65 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 64  le to open the d
b7b0: 61 74 61 62 61 73 65 20 66 69 6c 65 20 2a 2f 0a  atabase file */.
b7c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50  #define SQLITE_P
b7d0: 52 4f 54 4f 43 4f 4c 20 20 20 20 31 35 20 20 20  ROTOCOL    15   
b7e0: 2f 2a 20 44 61 74 61 62 61 73 65 20 6c 6f 63 6b  /* Database lock
b7f0: 20 70 72 6f 74 6f 63 6f 6c 20 65 72 72 6f 72 20   protocol error 
b800: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b810: 45 5f 45 4d 50 54 59 20 20 20 20 20 20 20 31 36  E_EMPTY       16
b820: 20 20 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 75     /* Internal u
b830: 73 65 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69  se only */.#defi
b840: 6e 65 20 53 51 4c 49 54 45 5f 53 43 48 45 4d 41  ne SQLITE_SCHEMA
b850: 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20 54 68        17   /* Th
b860: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
b870: 61 20 63 68 61 6e 67 65 64 20 2a 2f 0a 23 64 65  a changed */.#de
b880: 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 4f 4f 42  fine SQLITE_TOOB
b890: 49 47 20 20 20 20 20 20 31 38 20 20 20 2f 2a 20  IG      18   /* 
b8a0: 53 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 65  String or BLOB e
b8b0: 78 63 65 65 64 73 20 73 69 7a 65 20 6c 69 6d 69  xceeds size limi
b8c0: 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  t */.#define SQL
b8d0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 20  ITE_CONSTRAINT  
b8e0: 31 39 20 20 20 2f 2a 20 41 62 6f 72 74 20 64 75  19   /* Abort du
b8f0: 65 20 74 6f 20 63 6f 6e 73 74 72 61 69 6e 74 20  e to constraint 
b900: 76 69 6f 6c 61 74 69 6f 6e 20 2a 2f 0a 23 64 65  violation */.#de
b910: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53 4d  fine SQLITE_MISM
b920: 41 54 43 48 20 20 20 20 32 30 20 20 20 2f 2a 20  ATCH    20   /* 
b930: 44 61 74 61 20 74 79 70 65 20 6d 69 73 6d 61 74  Data type mismat
b940: 63 68 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ch */.#define SQ
b950: 4c 49 54 45 5f 4d 49 53 55 53 45 20 20 20 20 20  LITE_MISUSE     
b960: 20 32 31 20 20 20 2f 2a 20 4c 69 62 72 61 72 79   21   /* Library
b970: 20 75 73 65 64 20 69 6e 63 6f 72 72 65 63 74 6c   used incorrectl
b980: 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  y */.#define SQL
b990: 49 54 45 5f 4e 4f 4c 46 53 20 20 20 20 20 20 20  ITE_NOLFS       
b9a0: 32 32 20 20 20 2f 2a 20 55 73 65 73 20 4f 53 20  22   /* Uses OS 
b9b0: 66 65 61 74 75 72 65 73 20 6e 6f 74 20 73 75 70  features not sup
b9c0: 70 6f 72 74 65 64 20 6f 6e 20 68 6f 73 74 20 2a  ported on host *
b9d0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b9e0: 5f 41 55 54 48 20 20 20 20 20 20 20 20 32 33 20  _AUTH        23 
b9f0: 20 20 2f 2a 20 41 75 74 68 6f 72 69 7a 61 74 69    /* Authorizati
ba00: 6f 6e 20 64 65 6e 69 65 64 20 2a 2f 0a 23 64 65  on denied */.#de
ba10: 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 4f 52 4d  fine SQLITE_FORM
ba20: 41 54 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20  AT      24   /* 
ba30: 4e 6f 74 20 75 73 65 64 20 2a 2f 0a 23 64 65 66  Not used */.#def
ba40: 69 6e 65 20 53 51 4c 49 54 45 5f 52 41 4e 47 45  ine SQLITE_RANGE
ba50: 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 32         25   /* 2
ba60: 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
ba70: 73 71 6c 69 74 65 33 5f 62 69 6e 64 20 6f 75 74  sqlite3_bind out
ba80: 20 6f 66 20 72 61 6e 67 65 20 2a 2f 0a 23 64 65   of range */.#de
ba90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 41  fine SQLITE_NOTA
baa0: 44 42 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20  DB      26   /* 
bab0: 46 69 6c 65 20 6f 70 65 6e 65 64 20 74 68 61 74  File opened that
bac0: 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61   is not a databa
bad0: 73 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69  se file */.#defi
bae0: 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45  ne SQLITE_NOTICE
baf0: 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 4e 6f        27   /* No
bb00: 74 69 66 69 63 61 74 69 6f 6e 73 20 66 72 6f 6d  tifications from
bb10: 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 20 2a   sqlite3_log() *
bb20: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
bb30: 5f 57 41 52 4e 49 4e 47 20 20 20 20 20 32 38 20  _WARNING     28 
bb40: 20 20 2f 2a 20 57 61 72 6e 69 6e 67 73 20 66 72    /* Warnings fr
bb50: 6f 6d 20 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  om sqlite3_log()
bb60: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bb70: 54 45 5f 52 4f 57 20 20 20 20 20 20 20 20 20 31  TE_ROW         1
bb80: 30 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 73  00  /* sqlite3_s
bb90: 74 65 70 28 29 20 68 61 73 20 61 6e 6f 74 68 65  tep() has anothe
bba0: 72 20 72 6f 77 20 72 65 61 64 79 20 2a 2f 0a 23  r row ready */.#
bbb0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 4f  define SQLITE_DO
bbc0: 4e 45 20 20 20 20 20 20 20 20 31 30 31 20 20 2f  NE        101  /
bbd0: 2a 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  * sqlite3_step()
bbe0: 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 65 78   has finished ex
bbf0: 65 63 75 74 69 6e 67 20 2a 2f 0a 2f 2a 20 65 6e  ecuting */./* en
bc00: 64 2d 6f 66 2d 65 72 72 6f 72 2d 63 6f 64 65 73  d-of-error-codes
bc10: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
bc20: 52 45 46 3a 20 45 78 74 65 6e 64 65 64 20 52 65  REF: Extended Re
bc30: 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45  sult Codes.** KE
bc40: 59 57 4f 52 44 53 3a 20 7b 65 78 74 65 6e 64 65  YWORDS: {extende
bc50: 64 20 72 65 73 75 6c 74 20 63 6f 64 65 20 64 65  d result code de
bc60: 66 69 6e 69 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a  finitions}.**.**
bc70: 20 49 6e 20 69 74 73 20 64 65 66 61 75 6c 74 20   In its default 
bc80: 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 53  configuration, S
bc90: 51 4c 69 74 65 20 41 50 49 20 72 6f 75 74 69 6e  QLite API routin
bca0: 65 73 20 72 65 74 75 72 6e 20 6f 6e 65 20 6f 66  es return one of
bcb0: 20 33 30 20 69 6e 74 65 67 65 72 0a 2a 2a 20 5b   30 integer.** [
bcc0: 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 2e 20 20  result codes].  
bcd0: 48 6f 77 65 76 65 72 2c 20 65 78 70 65 72 69 65  However, experie
bce0: 6e 63 65 20 68 61 73 20 73 68 6f 77 6e 20 74 68  nce has shown th
bcf0: 61 74 20 6d 61 6e 79 20 6f 66 0a 2a 2a 20 74 68  at many of.** th
bd00: 65 73 65 20 72 65 73 75 6c 74 20 63 6f 64 65 73  ese result codes
bd10: 20 61 72 65 20 74 6f 6f 20 63 6f 61 72 73 65 2d   are too coarse-
bd20: 67 72 61 69 6e 65 64 2e 20 20 54 68 65 79 20 64  grained.  They d
bd30: 6f 20 6e 6f 74 20 70 72 6f 76 69 64 65 20 61 73  o not provide as
bd40: 0a 2a 2a 20 6d 75 63 68 20 69 6e 66 6f 72 6d 61  .** much informa
bd50: 74 69 6f 6e 20 61 62 6f 75 74 20 70 72 6f 62 6c  tion about probl
bd60: 65 6d 73 20 61 73 20 70 72 6f 67 72 61 6d 6d 65  ems as programme
bd70: 72 73 20 6d 69 67 68 74 20 6c 69 6b 65 2e 20 20  rs might like.  
bd80: 49 6e 20 61 6e 20 65 66 66 6f 72 74 20 74 6f 0a  In an effort to.
bd90: 2a 2a 20 61 64 64 72 65 73 73 20 74 68 69 73 2c  ** address this,
bda0: 20 6e 65 77 65 72 20 76 65 72 73 69 6f 6e 73 20   newer versions 
bdb0: 6f 66 20 53 51 4c 69 74 65 20 28 76 65 72 73 69  of SQLite (versi
bdc0: 6f 6e 20 33 2e 33 2e 38 20 5b 64 61 74 65 6f 66  on 3.3.8 [dateof
bdd0: 3a 33 2e 33 2e 38 5d 0a 2a 2a 20 61 6e 64 20 6c  :3.3.8].** and l
bde0: 61 74 65 72 29 20 69 6e 63 6c 75 64 65 0a 2a 2a  ater) include.**
bdf0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 61 64 64   support for add
be00: 69 74 69 6f 6e 61 6c 20 72 65 73 75 6c 74 20 63  itional result c
be10: 6f 64 65 73 20 74 68 61 74 20 70 72 6f 76 69 64  odes that provid
be20: 65 20 6d 6f 72 65 20 64 65 74 61 69 6c 65 64 20  e more detailed 
be30: 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20 61  information.** a
be40: 62 6f 75 74 20 65 72 72 6f 72 73 2e 20 54 68 65  bout errors. The
be50: 73 65 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  se [extended res
be60: 75 6c 74 20 63 6f 64 65 73 5d 20 61 72 65 20 65  ult codes] are e
be70: 6e 61 62 6c 65 64 20 6f 72 20 64 69 73 61 62 6c  nabled or disabl
be80: 65 64 0a 2a 2a 20 6f 6e 20 61 20 70 65 72 20 64  ed.** on a per d
be90: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
bea0: 6f 6e 20 62 61 73 69 73 20 75 73 69 6e 67 20 74  on basis using t
beb0: 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  he.** [sqlite3_e
bec0: 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63  xtended_result_c
bed0: 6f 64 65 73 28 29 5d 20 41 50 49 2e 20 20 4f 72  odes()] API.  Or
bee0: 2c 20 74 68 65 20 65 78 74 65 6e 64 65 64 20 63  , the extended c
bef0: 6f 64 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 6d  ode for.** the m
bf00: 6f 73 74 20 72 65 63 65 6e 74 20 65 72 72 6f 72  ost recent error
bf10: 20 63 61 6e 20 62 65 20 6f 62 74 61 69 6e 65 64   can be obtained
bf20: 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74   using.** [sqlit
bf30: 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
bf40: 6f 64 65 28 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69  ode()]..*/.#defi
bf50: 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 5f  ne SQLITE_ERROR_
bf60: 4d 49 53 53 49 4e 47 5f 43 4f 4c 4c 53 45 51 20  MISSING_COLLSEQ 
bf70: 20 20 28 53 51 4c 49 54 45 5f 45 52 52 4f 52 20    (SQLITE_ERROR 
bf80: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
bf90: 65 20 53 51 4c 49 54 45 5f 45 52 52 4f 52 5f 52  e SQLITE_ERROR_R
bfa0: 45 54 52 59 20 20 20 20 20 20 20 20 20 20 20 20  ETRY            
bfb0: 20 28 53 51 4c 49 54 45 5f 45 52 52 4f 52 20 7c   (SQLITE_ERROR |
bfc0: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
bfd0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 45   SQLITE_IOERR_RE
bfe0: 41 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  AD              
bff0: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c000: 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (1<<8)).#define 
c010: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4f  SQLITE_IOERR_SHO
c020: 52 54 5f 52 45 41 44 20 20 20 20 20 20 20 20 28  RT_READ        (
c030: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c040: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
c050: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 57 52 49 54  QLITE_IOERR_WRIT
c060: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53  E             (S
c070: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 33  QLITE_IOERR | (3
c080: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
c090: 4c 49 54 45 5f 49 4f 45 52 52 5f 46 53 59 4e 43  LITE_IOERR_FSYNC
c0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51               (SQ
c0b0: 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 34 3c  LITE_IOERR | (4<
c0c0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c0d0: 49 54 45 5f 49 4f 45 52 52 5f 44 49 52 5f 46 53  ITE_IOERR_DIR_FS
c0e0: 59 4e 43 20 20 20 20 20 20 20 20 20 28 53 51 4c  YNC         (SQL
c0f0: 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 35 3c 3c  ITE_IOERR | (5<<
c100: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
c110: 54 45 5f 49 4f 45 52 52 5f 54 52 55 4e 43 41 54  TE_IOERR_TRUNCAT
c120: 45 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49  E          (SQLI
c130: 54 45 5f 49 4f 45 52 52 20 7c 20 28 36 3c 3c 38  TE_IOERR | (6<<8
c140: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c150: 45 5f 49 4f 45 52 52 5f 46 53 54 41 54 20 20 20  E_IOERR_FSTAT   
c160: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c170: 45 5f 49 4f 45 52 52 20 7c 20 28 37 3c 3c 38 29  E_IOERR | (7<<8)
c180: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c190: 5f 49 4f 45 52 52 5f 55 4e 4c 4f 43 4b 20 20 20  _IOERR_UNLOCK   
c1a0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c1b0: 5f 49 4f 45 52 52 20 7c 20 28 38 3c 3c 38 29 29  _IOERR | (8<<8))
c1c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c1d0: 49 4f 45 52 52 5f 52 44 4c 4f 43 4b 20 20 20 20  IOERR_RDLOCK    
c1e0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c1f0: 49 4f 45 52 52 20 7c 20 28 39 3c 3c 38 29 29 0a  IOERR | (9<<8)).
c200: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c210: 4f 45 52 52 5f 44 45 4c 45 54 45 20 20 20 20 20  OERR_DELETE     
c220: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c230: 4f 45 52 52 20 7c 20 28 31 30 3c 3c 38 29 29 0a  OERR | (10<<8)).
c240: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c250: 4f 45 52 52 5f 42 4c 4f 43 4b 45 44 20 20 20 20  OERR_BLOCKED    
c260: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c270: 4f 45 52 52 20 7c 20 28 31 31 3c 3c 38 29 29 0a  OERR | (11<<8)).
c280: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c290: 4f 45 52 52 5f 4e 4f 4d 45 4d 20 20 20 20 20 20  OERR_NOMEM      
c2a0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c2b0: 4f 45 52 52 20 7c 20 28 31 32 3c 3c 38 29 29 0a  OERR | (12<<8)).
c2c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c2d0: 4f 45 52 52 5f 41 43 43 45 53 53 20 20 20 20 20  OERR_ACCESS     
c2e0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c2f0: 4f 45 52 52 20 7c 20 28 31 33 3c 3c 38 29 29 0a  OERR | (13<<8)).
c300: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c310: 4f 45 52 52 5f 43 48 45 43 4b 52 45 53 45 52 56  OERR_CHECKRESERV
c320: 45 44 4c 4f 43 4b 20 28 53 51 4c 49 54 45 5f 49  EDLOCK (SQLITE_I
c330: 4f 45 52 52 20 7c 20 28 31 34 3c 3c 38 29 29 0a  OERR | (14<<8)).
c340: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c350: 4f 45 52 52 5f 4c 4f 43 4b 20 20 20 20 20 20 20  OERR_LOCK       
c360: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c370: 4f 45 52 52 20 7c 20 28 31 35 3c 3c 38 29 29 0a  OERR | (15<<8)).
c380: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c390: 4f 45 52 52 5f 43 4c 4f 53 45 20 20 20 20 20 20  OERR_CLOSE      
c3a0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c3b0: 4f 45 52 52 20 7c 20 28 31 36 3c 3c 38 29 29 0a  OERR | (16<<8)).
c3c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c3d0: 4f 45 52 52 5f 44 49 52 5f 43 4c 4f 53 45 20 20  OERR_DIR_CLOSE  
c3e0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c3f0: 4f 45 52 52 20 7c 20 28 31 37 3c 3c 38 29 29 0a  OERR | (17<<8)).
c400: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c410: 4f 45 52 52 5f 53 48 4d 4f 50 45 4e 20 20 20 20  OERR_SHMOPEN    
c420: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c430: 4f 45 52 52 20 7c 20 28 31 38 3c 3c 38 29 29 0a  OERR | (18<<8)).
c440: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c450: 4f 45 52 52 5f 53 48 4d 53 49 5a 45 20 20 20 20  OERR_SHMSIZE    
c460: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c470: 4f 45 52 52 20 7c 20 28 31 39 3c 3c 38 29 29 0a  OERR | (19<<8)).
c480: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c490: 4f 45 52 52 5f 53 48 4d 4c 4f 43 4b 20 20 20 20  OERR_SHMLOCK    
c4a0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c4b0: 4f 45 52 52 20 7c 20 28 32 30 3c 3c 38 29 29 0a  OERR | (20<<8)).
c4c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c4d0: 4f 45 52 52 5f 53 48 4d 4d 41 50 20 20 20 20 20  OERR_SHMMAP     
c4e0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c4f0: 4f 45 52 52 20 7c 20 28 32 31 3c 3c 38 29 29 0a  OERR | (21<<8)).
c500: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c510: 4f 45 52 52 5f 53 45 45 4b 20 20 20 20 20 20 20  OERR_SEEK       
c520: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c530: 4f 45 52 52 20 7c 20 28 32 32 3c 3c 38 29 29 0a  OERR | (22<<8)).
c540: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c550: 4f 45 52 52 5f 44 45 4c 45 54 45 5f 4e 4f 45 4e  OERR_DELETE_NOEN
c560: 54 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49  T      (SQLITE_I
c570: 4f 45 52 52 20 7c 20 28 32 33 3c 3c 38 29 29 0a  OERR | (23<<8)).
c580: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c590: 4f 45 52 52 5f 4d 4d 41 50 20 20 20 20 20 20 20  OERR_MMAP       
c5a0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c5b0: 4f 45 52 52 20 7c 20 28 32 34 3c 3c 38 29 29 0a  OERR | (24<<8)).
c5c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c5d0: 4f 45 52 52 5f 47 45 54 54 45 4d 50 50 41 54 48  OERR_GETTEMPPATH
c5e0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c5f0: 4f 45 52 52 20 7c 20 28 32 35 3c 3c 38 29 29 0a  OERR | (25<<8)).
c600: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c610: 4f 45 52 52 5f 43 4f 4e 56 50 41 54 48 20 20 20  OERR_CONVPATH   
c620: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c630: 4f 45 52 52 20 7c 20 28 32 36 3c 3c 38 29 29 0a  OERR | (26<<8)).
c640: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c650: 4f 45 52 52 5f 56 4e 4f 44 45 20 20 20 20 20 20  OERR_VNODE      
c660: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c670: 4f 45 52 52 20 7c 20 28 32 37 3c 3c 38 29 29 0a  OERR | (27<<8)).
c680: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c690: 4f 45 52 52 5f 41 55 54 48 20 20 20 20 20 20 20  OERR_AUTH       
c6a0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c6b0: 4f 45 52 52 20 7c 20 28 32 38 3c 3c 38 29 29 0a  OERR | (28<<8)).
c6c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c6d0: 4f 45 52 52 5f 42 45 47 49 4e 5f 41 54 4f 4d 49  OERR_BEGIN_ATOMI
c6e0: 43 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49  C      (SQLITE_I
c6f0: 4f 45 52 52 20 7c 20 28 32 39 3c 3c 38 29 29 0a  OERR | (29<<8)).
c700: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c710: 4f 45 52 52 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d  OERR_COMMIT_ATOM
c720: 49 43 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49  IC     (SQLITE_I
c730: 4f 45 52 52 20 7c 20 28 33 30 3c 3c 38 29 29 0a  OERR | (30<<8)).
c740: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c750: 4f 45 52 52 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54  OERR_ROLLBACK_AT
c760: 4f 4d 49 43 20 20 20 28 53 51 4c 49 54 45 5f 49  OMIC   (SQLITE_I
c770: 4f 45 52 52 20 7c 20 28 33 31 3c 3c 38 29 29 0a  OERR | (31<<8)).
c780: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
c790: 4f 43 4b 45 44 5f 53 48 41 52 45 44 43 41 43 48  OCKED_SHAREDCACH
c7a0: 45 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 4c  E      (SQLITE_L
c7b0: 4f 43 4b 45 44 20 7c 20 20 28 31 3c 3c 38 29 29  OCKED |  (1<<8))
c7c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c7d0: 42 55 53 59 5f 52 45 43 4f 56 45 52 59 20 20 20  BUSY_RECOVERY   
c7e0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c7f0: 42 55 53 59 20 20 20 7c 20 20 28 31 3c 3c 38 29  BUSY   |  (1<<8)
c800: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c810: 5f 42 55 53 59 5f 53 4e 41 50 53 48 4f 54 20 20  _BUSY_SNAPSHOT  
c820: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c830: 5f 42 55 53 59 20 20 20 7c 20 20 28 32 3c 3c 38  _BUSY   |  (2<<8
c840: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c850: 45 5f 43 41 4e 54 4f 50 45 4e 5f 4e 4f 54 45 4d  E_CANTOPEN_NOTEM
c860: 50 44 49 52 20 20 20 20 20 20 28 53 51 4c 49 54  PDIR      (SQLIT
c870: 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 31 3c  E_CANTOPEN | (1<
c880: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
c890: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 49 53 44  ITE_CANTOPEN_ISD
c8a0: 49 52 20 20 20 20 20 20 20 20 20 20 28 53 51 4c  IR          (SQL
c8b0: 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28  ITE_CANTOPEN | (
c8c0: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
c8d0: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 46  QLITE_CANTOPEN_F
c8e0: 55 4c 4c 50 41 54 48 20 20 20 20 20 20 20 28 53  ULLPATH       (S
c8f0: 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c  QLITE_CANTOPEN |
c900: 20 28 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (3<<8)).#define
c910: 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e   SQLITE_CANTOPEN
c920: 5f 43 4f 4e 56 50 41 54 48 20 20 20 20 20 20 20  _CONVPATH       
c930: 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  (SQLITE_CANTOPEN
c940: 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65 66 69   | (4<<8)).#defi
c950: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
c960: 45 4e 5f 44 49 52 54 59 57 41 4c 20 20 20 20 20  EN_DIRTYWAL     
c970: 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    (SQLITE_CANTOP
c980: 45 4e 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65  EN | (5<<8)).#de
c990: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 52 52  fine SQLITE_CORR
c9a0: 55 50 54 5f 56 54 41 42 20 20 20 20 20 20 20 20  UPT_VTAB        
c9b0: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 52 52      (SQLITE_CORR
c9c0: 55 50 54 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  UPT | (1<<8)).#d
c9d0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
c9e0: 44 4f 4e 4c 59 5f 52 45 43 4f 56 45 52 59 20 20  DONLY_RECOVERY  
c9f0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
ca00: 44 4f 4e 4c 59 20 7c 20 28 31 3c 3c 38 29 29 0a  DONLY | (1<<8)).
ca10: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
ca20: 45 41 44 4f 4e 4c 59 5f 43 41 4e 54 4c 4f 43 4b  EADONLY_CANTLOCK
ca30: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52         (SQLITE_R
ca40: 45 41 44 4f 4e 4c 59 20 7c 20 28 32 3c 3c 38 29  EADONLY | (2<<8)
ca50: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
ca60: 5f 52 45 41 44 4f 4e 4c 59 5f 52 4f 4c 4c 42 41  _READONLY_ROLLBA
ca70: 43 4b 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  CK       (SQLITE
ca80: 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 33 3c 3c  _READONLY | (3<<
ca90: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
caa0: 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 44 42 4d 4f  TE_READONLY_DBMO
cab0: 56 45 44 20 20 20 20 20 20 20 20 28 53 51 4c 49  VED        (SQLI
cac0: 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 28 34  TE_READONLY | (4
cad0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cae0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 43 41  LITE_READONLY_CA
caf0: 4e 54 49 4e 49 54 20 20 20 20 20 20 20 28 53 51  NTINIT       (SQ
cb00: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20  LITE_READONLY | 
cb10: 28 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (5<<8)).#define 
cb20: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
cb30: 44 49 52 45 43 54 4f 52 59 20 20 20 20 20 20 28  DIRECTORY      (
cb40: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
cb50: 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (6<<8)).#defin
cb60: 65 20 53 51 4c 49 54 45 5f 41 42 4f 52 54 5f 52  e SQLITE_ABORT_R
cb70: 4f 4c 4c 42 41 43 4b 20 20 20 20 20 20 20 20 20  OLLBACK         
cb80: 20 28 53 51 4c 49 54 45 5f 41 42 4f 52 54 20 7c   (SQLITE_ABORT |
cb90: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
cba0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cbb0: 4e 54 5f 43 48 45 43 4b 20 20 20 20 20 20 20 20  NT_CHECK        
cbc0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cbd0: 4e 54 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  NT | (1<<8)).#de
cbe0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cbf0: 54 52 41 49 4e 54 5f 43 4f 4d 4d 49 54 48 4f 4f  TRAINT_COMMITHOO
cc00: 4b 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  K   (SQLITE_CONS
cc10: 54 52 41 49 4e 54 20 7c 20 28 32 3c 3c 38 29 29  TRAINT | (2<<8))
cc20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cc30: 43 4f 4e 53 54 52 41 49 4e 54 5f 46 4f 52 45 49  CONSTRAINT_FOREI
cc40: 47 4e 4b 45 59 20 20 20 28 53 51 4c 49 54 45 5f  GNKEY   (SQLITE_
cc50: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 33 3c  CONSTRAINT | (3<
cc60: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cc70: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 46  ITE_CONSTRAINT_F
cc80: 55 4e 43 54 49 4f 4e 20 20 20 20 20 28 53 51 4c  UNCTION     (SQL
cc90: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cca0: 20 28 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (4<<8)).#define
ccb0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
ccc0: 4e 54 5f 4e 4f 54 4e 55 4c 4c 20 20 20 20 20 20  NT_NOTNULL      
ccd0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cce0: 4e 54 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65  NT | (5<<8)).#de
ccf0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cd00: 54 52 41 49 4e 54 5f 50 52 49 4d 41 52 59 4b 45  TRAINT_PRIMARYKE
cd10: 59 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53  Y   (SQLITE_CONS
cd20: 54 52 41 49 4e 54 20 7c 20 28 36 3c 3c 38 29 29  TRAINT | (6<<8))
cd30: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cd40: 43 4f 4e 53 54 52 41 49 4e 54 5f 54 52 49 47 47  CONSTRAINT_TRIGG
cd50: 45 52 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  ER      (SQLITE_
cd60: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 37 3c  CONSTRAINT | (7<
cd70: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cd80: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 55  ITE_CONSTRAINT_U
cd90: 4e 49 51 55 45 20 20 20 20 20 20 20 28 53 51 4c  NIQUE       (SQL
cda0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cdb0: 20 28 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (8<<8)).#define
cdc0: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cdd0: 4e 54 5f 56 54 41 42 20 20 20 20 20 20 20 20 20  NT_VTAB         
cde0: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cdf0: 4e 54 20 7c 20 28 39 3c 3c 38 29 29 0a 23 64 65  NT | (9<<8)).#de
ce00: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
ce10: 54 52 41 49 4e 54 5f 52 4f 57 49 44 20 20 20 20  TRAINT_ROWID    
ce20: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
ce30: 54 52 41 49 4e 54 20 7c 28 31 30 3c 3c 38 29 29  TRAINT |(10<<8))
ce40: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ce50: 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45 52 5f 57  NOTICE_RECOVER_W
ce60: 41 4c 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  AL      (SQLITE_
ce70: 4e 4f 54 49 43 45 20 7c 20 28 31 3c 3c 38 29 29  NOTICE | (1<<8))
ce80: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ce90: 4e 4f 54 49 43 45 5f 52 45 43 4f 56 45 52 5f 52  NOTICE_RECOVER_R
cea0: 4f 4c 4c 42 41 43 4b 20 28 53 51 4c 49 54 45 5f  OLLBACK (SQLITE_
ceb0: 4e 4f 54 49 43 45 20 7c 20 28 32 3c 3c 38 29 29  NOTICE | (2<<8))
cec0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ced0: 57 41 52 4e 49 4e 47 5f 41 55 54 4f 49 4e 44 45  WARNING_AUTOINDE
cee0: 58 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  X       (SQLITE_
cef0: 57 41 52 4e 49 4e 47 20 7c 20 28 31 3c 3c 38 29  WARNING | (1<<8)
cf00: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cf10: 5f 41 55 54 48 5f 55 53 45 52 20 20 20 20 20 20  _AUTH_USER      
cf20: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
cf30: 5f 41 55 54 48 20 7c 20 28 31 3c 3c 38 29 29 0a  _AUTH | (1<<8)).
cf40: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
cf50: 4b 5f 4c 4f 41 44 5f 50 45 52 4d 41 4e 45 4e 54  K_LOAD_PERMANENT
cf60: 4c 59 20 20 20 20 20 28 53 51 4c 49 54 45 5f 4f  LY     (SQLITE_O
cf70: 4b 20 7c 20 28 31 3c 3c 38 29 29 0a 0a 2f 2a 0a  K | (1<<8))../*.
cf80: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61  ** CAPI3REF: Fla
cf90: 67 73 20 46 6f 72 20 46 69 6c 65 20 4f 70 65 6e  gs For File Open
cfa0: 20 4f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 0a 2a   Operations.**.*
cfb0: 2a 20 54 68 65 73 65 20 62 69 74 20 76 61 6c 75  * These bit valu
cfc0: 65 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20  es are intended 
cfd0: 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 0a 2a  for use in the.*
cfe0: 2a 20 33 72 64 20 70 61 72 61 6d 65 74 65 72 20  * 3rd parameter 
cff0: 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
d000: 6f 70 65 6e 5f 76 32 28 29 5d 20 69 6e 74 65 72  open_v2()] inter
d010: 66 61 63 65 20 61 6e 64 0a 2a 2a 20 69 6e 20 74  face and.** in t
d020: 68 65 20 34 74 68 20 70 61 72 61 6d 65 74 65 72  he 4th parameter
d030: 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
d040: 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68  _vfs.xOpen] meth
d050: 6f 64 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  od..*/.#define S
d060: 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f  QLITE_OPEN_READO
d070: 4e 4c 59 20 20 20 20 20 20 20 20 20 30 78 30 30  NLY         0x00
d080: 30 30 30 30 30 31 20 20 2f 2a 20 4f 6b 20 66 6f  000001  /* Ok fo
d090: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d0a0: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d0b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57  QLITE_OPEN_READW
d0c0: 52 49 54 45 20 20 20 20 20 20 20 20 30 78 30 30  RITE        0x00
d0d0: 30 30 30 30 30 32 20 20 2f 2a 20 4f 6b 20 66 6f  000002  /* Ok fo
d0e0: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d0f0: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d100: 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54  QLITE_OPEN_CREAT
d110: 45 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30  E           0x00
d120: 30 30 30 30 30 34 20 20 2f 2a 20 4f 6b 20 66 6f  000004  /* Ok fo
d130: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d140: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d150: 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54  QLITE_OPEN_DELET
d160: 45 4f 4e 43 4c 4f 53 45 20 20 20 20 30 78 30 30  EONCLOSE    0x00
d170: 30 30 30 30 30 38 20 20 2f 2a 20 56 46 53 20 6f  000008  /* VFS o
d180: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d190: 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55  QLITE_OPEN_EXCLU
d1a0: 53 49 56 45 20 20 20 20 20 20 20 20 30 78 30 30  SIVE        0x00
d1b0: 30 30 30 30 31 30 20 20 2f 2a 20 56 46 53 20 6f  000010  /* VFS o
d1c0: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d1d0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 41 55 54 4f 50  QLITE_OPEN_AUTOP
d1e0: 52 4f 58 59 20 20 20 20 20 20 20 20 30 78 30 30  ROXY        0x00
d1f0: 30 30 30 30 32 30 20 20 2f 2a 20 56 46 53 20 6f  000020  /* VFS o
d200: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d210: 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 20 20  QLITE_OPEN_URI  
d220: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
d230: 30 30 30 30 34 30 20 20 2f 2a 20 4f 6b 20 66 6f  000040  /* Ok fo
d240: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d250: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d260: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 45 4d 4f 52  QLITE_OPEN_MEMOR
d270: 59 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30  Y           0x00
d280: 30 30 30 30 38 30 20 20 2f 2a 20 4f 6b 20 66 6f  000080  /* Ok fo
d290: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d2a0: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d2b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f  QLITE_OPEN_MAIN_
d2c0: 44 42 20 20 20 20 20 20 20 20 20 20 30 78 30 30  DB          0x00
d2d0: 30 30 30 31 30 30 20 20 2f 2a 20 56 46 53 20 6f  000100  /* VFS o
d2e0: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d2f0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f  QLITE_OPEN_TEMP_
d300: 44 42 20 20 20 20 20 20 20 20 20 20 30 78 30 30  DB          0x00
d310: 30 30 30 32 30 30 20 20 2f 2a 20 56 46 53 20 6f  000200  /* VFS o
d320: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d330: 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 52 41 4e 53  QLITE_OPEN_TRANS
d340: 49 45 4e 54 5f 44 42 20 20 20 20 20 30 78 30 30  IENT_DB     0x00
d350: 30 30 30 34 30 30 20 20 2f 2a 20 56 46 53 20 6f  000400  /* VFS o
d360: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d370: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f  QLITE_OPEN_MAIN_
d380: 4a 4f 55 52 4e 41 4c 20 20 20 20 20 30 78 30 30  JOURNAL     0x00
d390: 30 30 30 38 30 30 20 20 2f 2a 20 56 46 53 20 6f  000800  /* VFS o
d3a0: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d3b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f  QLITE_OPEN_TEMP_
d3c0: 4a 4f 55 52 4e 41 4c 20 20 20 20 20 30 78 30 30  JOURNAL     0x00
d3d0: 30 30 31 30 30 30 20 20 2f 2a 20 56 46 53 20 6f  001000  /* VFS o
d3e0: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d3f0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f  QLITE_OPEN_SUBJO
d400: 55 52 4e 41 4c 20 20 20 20 20 20 20 30 78 30 30  URNAL       0x00
d410: 30 30 32 30 30 30 20 20 2f 2a 20 56 46 53 20 6f  002000  /* VFS o
d420: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d430: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 53 54 45  QLITE_OPEN_MASTE
d440: 52 5f 4a 4f 55 52 4e 41 4c 20 20 20 30 78 30 30  R_JOURNAL   0x00
d450: 30 30 34 30 30 30 20 20 2f 2a 20 56 46 53 20 6f  004000  /* VFS o
d460: 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nly */.#define S
d470: 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
d480: 45 58 20 20 20 20 20 20 20 20 20 20 30 78 30 30  EX          0x00
d490: 30 30 38 30 30 30 20 20 2f 2a 20 4f 6b 20 66 6f  008000  /* Ok fo
d4a0: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d4b0: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d4c0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d  QLITE_OPEN_FULLM
d4d0: 55 54 45 58 20 20 20 20 20 20 20 20 30 78 30 30  UTEX        0x00
d4e0: 30 31 30 30 30 30 20 20 2f 2a 20 4f 6b 20 66 6f  010000  /* Ok fo
d4f0: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d500: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d510: 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45  QLITE_OPEN_SHARE
d520: 44 43 41 43 48 45 20 20 20 20 20 20 30 78 30 30  DCACHE      0x00
d530: 30 32 30 30 30 30 20 20 2f 2a 20 4f 6b 20 66 6f  020000  /* Ok fo
d540: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d550: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d560: 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41  QLITE_OPEN_PRIVA
d570: 54 45 43 41 43 48 45 20 20 20 20 20 30 78 30 30  TECACHE     0x00
d580: 30 34 30 30 30 30 20 20 2f 2a 20 4f 6b 20 66 6f  040000  /* Ok fo
d590: 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
d5a0: 32 28 29 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  2() */.#define S
d5b0: 51 4c 49 54 45 5f 4f 50 45 4e 5f 57 41 4c 20 20  QLITE_OPEN_WAL  
d5c0: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
d5d0: 30 38 30 30 30 30 20 20 2f 2a 20 56 46 53 20 6f  080000  /* VFS o
d5e0: 6e 6c 79 20 2a 2f 0a 0a 2f 2a 20 52 65 73 65 72  nly */../* Reser
d5f0: 76 65 64 3a 20 20 20 20 20 20 20 20 20 20 20 20  ved:            
d600: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
d610: 30 46 30 30 30 30 30 20 2a 2f 0a 0a 2f 2a 0a 2a  0F00000 */../*.*
d620: 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 76 69  * CAPI3REF: Devi
d630: 63 65 20 43 68 61 72 61 63 74 65 72 69 73 74 69  ce Characteristi
d640: 63 73 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 44 65  cs.**.** The xDe
d650: 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
d660: 69 63 73 20 6d 65 74 68 6f 64 20 6f 66 20 74 68  ics method of th
d670: 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  e [sqlite3_io_me
d680: 74 68 6f 64 73 5d 0a 2a 2a 20 6f 62 6a 65 63 74  thods].** object
d690: 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65   returns an inte
d6a0: 67 65 72 20 77 68 69 63 68 20 69 73 20 61 20 76  ger which is a v
d6b0: 65 63 74 6f 72 20 6f 66 20 74 68 65 73 65 0a 2a  ector of these.*
d6c0: 2a 20 62 69 74 20 76 61 6c 75 65 73 20 65 78 70  * bit values exp
d6d0: 72 65 73 73 69 6e 67 20 49 2f 4f 20 63 68 61 72  ressing I/O char
d6e0: 61 63 74 65 72 69 73 74 69 63 73 20 6f 66 20 74  acteristics of t
d6f0: 68 65 20 6d 61 73 73 20 73 74 6f 72 61 67 65 0a  he mass storage.
d700: 2a 2a 20 64 65 76 69 63 65 20 74 68 61 74 20 68  ** device that h
d710: 6f 6c 64 73 20 74 68 65 20 66 69 6c 65 20 74 68  olds the file th
d720: 61 74 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  at the [sqlite3_
d730: 69 6f 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 72  io_methods].** r
d740: 65 66 65 72 73 20 74 6f 2e 0a 2a 2a 0a 2a 2a 20  efers to..**.** 
d750: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  The SQLITE_IOCAP
d760: 5f 41 54 4f 4d 49 43 20 70 72 6f 70 65 72 74 79  _ATOMIC property
d770: 20 6d 65 61 6e 73 20 74 68 61 74 20 61 6c 6c 20   means that all 
d780: 77 72 69 74 65 73 20 6f 66 0a 2a 2a 20 61 6e 79  writes of.** any
d790: 20 73 69 7a 65 20 61 72 65 20 61 74 6f 6d 69 63   size are atomic
d7a0: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
d7b0: 43 41 50 5f 41 54 4f 4d 49 43 6e 6e 6e 20 76 61  CAP_ATOMICnnn va
d7c0: 6c 75 65 73 0a 2a 2a 20 6d 65 61 6e 20 74 68 61  lues.** mean tha
d7d0: 74 20 77 72 69 74 65 73 20 6f 66 20 62 6c 6f 63  t writes of bloc
d7e0: 6b 73 20 74 68 61 74 20 61 72 65 20 6e 6e 6e 20  ks that are nnn 
d7f0: 62 79 74 65 73 20 69 6e 20 73 69 7a 65 20 61 6e  bytes in size an
d800: 64 0a 2a 2a 20 61 72 65 20 61 6c 69 67 6e 65 64  d.** are aligned
d810: 20 74 6f 20 61 6e 20 61 64 64 72 65 73 73 20 77   to an address w
d820: 68 69 63 68 20 69 73 20 61 6e 20 69 6e 74 65 67  hich is an integ
d830: 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f 66 0a 2a  er multiple of.*
d840: 2a 20 6e 6e 6e 20 61 72 65 20 61 74 6f 6d 69 63  * nnn are atomic
d850: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
d860: 43 41 50 5f 53 41 46 45 5f 41 50 50 45 4e 44 20  CAP_SAFE_APPEND 
d870: 76 61 6c 75 65 20 6d 65 61 6e 73 0a 2a 2a 20 74  value means.** t
d880: 68 61 74 20 77 68 65 6e 20 64 61 74 61 20 69 73  hat when data is
d890: 20 61 70 70 65 6e 64 65 64 20 74 6f 20 61 20 66   appended to a f
d8a0: 69 6c 65 2c 20 74 68 65 20 64 61 74 61 20 69 73  ile, the data is
d8b0: 20 61 70 70 65 6e 64 65 64 0a 2a 2a 20 66 69 72   appended.** fir
d8c0: 73 74 20 74 68 65 6e 20 74 68 65 20 73 69 7a 65  st then the size
d8d0: 20 6f 66 20 74 68 65 20 66 69 6c 65 20 69 73 20   of the file is 
d8e0: 65 78 74 65 6e 64 65 64 2c 20 6e 65 76 65 72 20  extended, never 
d8f0: 74 68 65 20 6f 74 68 65 72 0a 2a 2a 20 77 61 79  the other.** way
d900: 20 61 72 6f 75 6e 64 2e 20 20 54 68 65 20 53 51   around.  The SQ
d910: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45  LITE_IOCAP_SEQUE
d920: 4e 54 49 41 4c 20 70 72 6f 70 65 72 74 79 20 6d  NTIAL property m
d930: 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20 69 6e 66  eans that.** inf
d940: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 77 72 69 74  ormation is writ
d950: 74 65 6e 20 74 6f 20 64 69 73 6b 20 69 6e 20 74  ten to disk in t
d960: 68 65 20 73 61 6d 65 20 6f 72 64 65 72 20 61 73  he same order as
d970: 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f 20 78 57 72   calls.** to xWr
d980: 69 74 65 28 29 2e 20 20 54 68 65 20 53 51 4c 49  ite().  The SQLI
d990: 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53 41  TE_IOCAP_POWERSA
d9a0: 46 45 5f 4f 56 45 52 57 52 49 54 45 20 70 72 6f  FE_OVERWRITE pro
d9b0: 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74  perty means that
d9c0: 0a 2a 2a 20 61 66 74 65 72 20 72 65 62 6f 6f 74  .** after reboot
d9d0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 63 72 61   following a cra
d9e0: 73 68 20 6f 72 20 70 6f 77 65 72 20 6c 6f 73 73  sh or power loss
d9f0: 2c 20 74 68 65 20 6f 6e 6c 79 20 62 79 74 65 73  , the only bytes
da00: 20 69 6e 20 61 0a 2a 2a 20 66 69 6c 65 20 74 68   in a.** file th
da10: 61 74 20 77 65 72 65 20 77 72 69 74 74 65 6e 20  at were written 
da20: 61 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  at the applicati
da30: 6f 6e 20 6c 65 76 65 6c 20 6d 69 67 68 74 20 68  on level might h
da40: 61 76 65 20 63 68 61 6e 67 65 64 0a 2a 2a 20 61  ave changed.** a
da50: 6e 64 20 74 68 61 74 20 61 64 6a 61 63 65 6e 74  nd that adjacent
da60: 20 62 79 74 65 73 2c 20 65 76 65 6e 20 62 79 74   bytes, even byt
da70: 65 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61  es within the sa
da80: 6d 65 20 73 65 63 74 6f 72 20 61 72 65 0a 2a 2a  me sector are.**
da90: 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62   guaranteed to b
daa0: 65 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 54 68  e unchanged.  Th
dab0: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55  e SQLITE_IOCAP_U
dac0: 4e 44 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f  NDELETABLE_WHEN_
dad0: 4f 50 45 4e 0a 2a 2a 20 66 6c 61 67 20 69 6e 64  OPEN.** flag ind
dae0: 69 63 61 74 65 73 20 74 68 61 74 20 61 20 66 69  icates that a fi
daf0: 6c 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 6c  le cannot be del
db00: 65 74 65 64 20 77 68 65 6e 20 6f 70 65 6e 2e 20  eted when open. 
db10: 20 54 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 49   The.** SQLITE_I
db20: 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 20 66  OCAP_IMMUTABLE f
db30: 6c 61 67 20 69 6e 64 69 63 61 74 65 73 20 74 68  lag indicates th
db40: 61 74 20 74 68 65 20 66 69 6c 65 20 69 73 20 6f  at the file is o
db50: 6e 0a 2a 2a 20 72 65 61 64 2d 6f 6e 6c 79 20 6d  n.** read-only m
db60: 65 64 69 61 20 61 6e 64 20 63 61 6e 6e 6f 74 20  edia and cannot 
db70: 62 65 20 63 68 61 6e 67 65 64 20 65 76 65 6e 20  be changed even 
db80: 62 79 20 70 72 6f 63 65 73 73 65 73 20 77 69 74  by processes wit
db90: 68 0a 2a 2a 20 65 6c 65 76 61 74 65 64 20 70 72  h.** elevated pr
dba0: 69 76 69 6c 65 67 65 73 2e 0a 2a 2a 0a 2a 2a 20  ivileges..**.** 
dbb0: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  The SQLITE_IOCAP
dbc0: 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 20 70 72  _BATCH_ATOMIC pr
dbd0: 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61  operty means tha
dbe0: 74 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  t the underlying
dbf0: 0a 2a 2a 20 66 69 6c 65 73 79 73 74 65 6d 20 73  .** filesystem s
dc00: 75 70 70 6f 72 74 73 20 64 6f 69 6e 67 20 6d 75  upports doing mu
dc10: 6c 74 69 70 6c 65 20 77 72 69 74 65 20 6f 70 65  ltiple write ope
dc20: 72 61 74 69 6f 6e 73 20 61 74 6f 6d 69 63 61 6c  rations atomical
dc30: 6c 79 20 77 68 65 6e 20 74 68 6f 73 65 0a 2a 2a  ly when those.**
dc40: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
dc50: 73 20 61 72 65 20 62 72 61 63 6b 65 74 65 64 20  s are bracketed 
dc60: 62 79 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  by [SQLITE_FCNTL
dc70: 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52  _BEGIN_ATOMIC_WR
dc80: 49 54 45 5d 20 61 6e 64 0a 2a 2a 20 5b 53 51 4c  ITE] and.** [SQL
dc90: 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
dca0: 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a  _ATOMIC_WRITE]..
dcb0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
dcc0: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20 20  E_IOCAP_ATOMIC  
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                 0
dce0: 78 30 30 30 30 30 30 30 31 0a 23 64 65 66 69 6e  x00000001.#defin
dcf0: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
dd00: 54 4f 4d 49 43 35 31 32 20 20 20 20 20 20 20 20  TOMIC512        
dd10: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30 32        0x00000002
dd20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
dd30: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 4b 20 20  IOCAP_ATOMIC1K  
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
dd50: 30 30 30 30 30 30 34 0a 23 64 65 66 69 6e 65 20  0000004.#define 
dd60: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
dd70: 4d 49 43 32 4b 20 20 20 20 20 20 20 20 20 20 20  MIC2K           
dd80: 20 20 20 20 30 78 30 30 30 30 30 30 30 38 0a 23      0x00000008.#
dd90: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
dda0: 43 41 50 5f 41 54 4f 4d 49 43 34 4b 20 20 20 20  CAP_ATOMIC4K    
ddb0: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
ddc0: 30 30 30 31 30 0a 23 64 65 66 69 6e 65 20 53 51  00010.#define SQ
ddd0: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
dde0: 43 38 4b 20 20 20 20 20 20 20 20 20 20 20 20 20  C8K             
ddf0: 20 20 30 78 30 30 30 30 30 30 32 30 0a 23 64 65    0x00000020.#de
de00: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
de10: 50 5f 41 54 4f 4d 49 43 31 36 4b 20 20 20 20 20  P_ATOMIC16K     
de20: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
de30: 30 34 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  040.#define SQLI
de40: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 33  TE_IOCAP_ATOMIC3
de50: 32 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  2K              
de60: 30 78 30 30 30 30 30 30 38 30 0a 23 64 65 66 69  0x00000080.#defi
de70: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
de80: 41 54 4f 4d 49 43 36 34 4b 20 20 20 20 20 20 20  ATOMIC64K       
de90: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 31 30         0x0000010
dea0: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
deb0: 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50 45  _IOCAP_SAFE_APPE
dec0: 4e 44 20 20 20 20 20 20 20 20 20 20 20 20 30 78  ND            0x
ded0: 30 30 30 30 30 32 30 30 0a 23 64 65 66 69 6e 65  00000200.#define
dee0: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45   SQLITE_IOCAP_SE
def0: 51 55 45 4e 54 49 41 4c 20 20 20 20 20 20 20 20  QUENTIAL        
df00: 20 20 20 20 20 30 78 30 30 30 30 30 34 30 30 0a       0x00000400.
df10: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
df20: 4f 43 41 50 5f 55 4e 44 45 4c 45 54 41 42 4c 45  OCAP_UNDELETABLE
df30: 5f 57 48 45 4e 5f 4f 50 45 4e 20 20 30 78 30 30  _WHEN_OPEN  0x00
df40: 30 30 30 38 30 30 0a 23 64 65 66 69 6e 65 20 53  000800.#define S
df50: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45  QLITE_IOCAP_POWE
df60: 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 20  RSAFE_OVERWRITE 
df70: 20 20 20 30 78 30 30 30 30 31 30 30 30 0a 23 64     0x00001000.#d
df80: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
df90: 41 50 5f 49 4d 4d 55 54 41 42 4c 45 20 20 20 20  AP_IMMUTABLE    
dfa0: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
dfb0: 32 30 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c  2000.#define SQL
dfc0: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
dfd0: 41 54 4f 4d 49 43 20 20 20 20 20 20 20 20 20 20  ATOMIC          
dfe0: 20 30 78 30 30 30 30 34 30 30 30 0a 0a 2f 2a 0a   0x00004000../*.
dff0: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46 69 6c  ** CAPI3REF: Fil
e000: 65 20 4c 6f 63 6b 69 6e 67 20 4c 65 76 65 6c 73  e Locking Levels
e010: 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73  .**.** SQLite us
e020: 65 73 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20  es one of these 
e030: 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 20 61  integer values a
e040: 73 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20  s the second.** 
e050: 61 72 67 75 6d 65 6e 74 20 74 6f 20 63 61 6c 6c  argument to call
e060: 73 20 69 74 20 6d 61 6b 65 73 20 74 6f 20 74 68  s it makes to th
e070: 65 20 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78 55  e xLock() and xU
e080: 6e 6c 6f 63 6b 28 29 20 6d 65 74 68 6f 64 73 0a  nlock() methods.
e090: 2a 2a 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65  ** of an [sqlite
e0a0: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62  3_io_methods] ob
e0b0: 6a 65 63 74 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  ject..*/.#define
e0c0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e   SQLITE_LOCK_NON
e0d0: 45 20 20 20 20 20 20 20 20 20 20 30 0a 23 64 65  E          0.#de
e0e0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
e0f0: 5f 53 48 41 52 45 44 20 20 20 20 20 20 20 20 31  _SHARED        1
e100: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e110: 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44 20 20 20  LOCK_RESERVED   
e120: 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c     2.#define SQL
e130: 49 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47  ITE_LOCK_PENDING
e140: 20 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65         3.#define
e150: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43   SQLITE_LOCK_EXC
e160: 4c 55 53 49 56 45 20 20 20 20 20 34 0a 0a 2f 2a  LUSIVE     4../*
e170: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 79  .** CAPI3REF: Sy
e180: 6e 63 68 72 6f 6e 69 7a 61 74 69 6f 6e 20 54 79  nchronization Ty
e190: 70 65 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 57  pe Flags.**.** W
e1a0: 68 65 6e 20 53 51 4c 69 74 65 20 69 6e 76 6f 6b  hen SQLite invok
e1b0: 65 73 20 74 68 65 20 78 53 79 6e 63 28 29 20 6d  es the xSync() m
e1c0: 65 74 68 6f 64 20 6f 66 20 61 6e 0a 2a 2a 20 5b  ethod of an.** [
e1d0: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
e1e0: 64 73 5d 20 6f 62 6a 65 63 74 20 69 74 20 75 73  ds] object it us
e1f0: 65 73 20 61 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  es a combination
e200: 20 6f 66 0a 2a 2a 20 74 68 65 73 65 20 69 6e 74   of.** these int
e210: 65 67 65 72 20 76 61 6c 75 65 73 20 61 73 20 74  eger values as t
e220: 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
e230: 6e 74 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74  nt..**.** When t
e240: 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44  he SQLITE_SYNC_D
e250: 41 54 41 4f 4e 4c 59 20 66 6c 61 67 20 69 73 20  ATAONLY flag is 
e260: 75 73 65 64 2c 20 69 74 20 6d 65 61 6e 73 20 74  used, it means t
e270: 68 61 74 20 74 68 65 0a 2a 2a 20 73 79 6e 63 20  hat the.** sync 
e280: 6f 70 65 72 61 74 69 6f 6e 20 6f 6e 6c 79 20 6e  operation only n
e290: 65 65 64 73 20 74 6f 20 66 6c 75 73 68 20 64 61  eeds to flush da
e2a0: 74 61 20 74 6f 20 6d 61 73 73 20 73 74 6f 72 61  ta to mass stora
e2b0: 67 65 2e 20 20 49 6e 6f 64 65 0a 2a 2a 20 69 6e  ge.  Inode.** in
e2c0: 66 6f 72 6d 61 74 69 6f 6e 20 6e 65 65 64 20 6e  formation need n
e2d0: 6f 74 20 62 65 20 66 6c 75 73 68 65 64 2e 20 49  ot be flushed. I
e2e0: 66 20 74 68 65 20 6c 6f 77 65 72 20 66 6f 75 72  f the lower four
e2f0: 20 62 69 74 73 20 6f 66 20 74 68 65 20 66 6c 61   bits of the fla
e300: 67 0a 2a 2a 20 65 71 75 61 6c 20 53 51 4c 49 54  g.** equal SQLIT
e310: 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 2c 20 74  E_SYNC_NORMAL, t
e320: 68 61 74 20 6d 65 61 6e 73 20 74 6f 20 75 73 65  hat means to use
e330: 20 6e 6f 72 6d 61 6c 20 66 73 79 6e 63 28 29 20   normal fsync() 
e340: 73 65 6d 61 6e 74 69 63 73 2e 0a 2a 2a 20 49 66  semantics..** If
e350: 20 74 68 65 20 6c 6f 77 65 72 20 66 6f 75 72 20   the lower four 
e360: 62 69 74 73 20 65 71 75 61 6c 20 53 51 4c 49 54  bits equal SQLIT
e370: 45 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 74 68 61  E_SYNC_FULL, tha
e380: 74 20 6d 65 61 6e 73 0a 2a 2a 20 74 6f 20 75 73  t means.** to us
e390: 65 20 4d 61 63 20 4f 53 20 58 20 73 74 79 6c 65  e Mac OS X style
e3a0: 20 66 75 6c 6c 73 79 6e 63 20 69 6e 73 74 65 61   fullsync instea
e3b0: 64 20 6f 66 20 66 73 79 6e 63 28 29 2e 0a 2a 2a  d of fsync()..**
e3c0: 0a 2a 2a 20 44 6f 20 6e 6f 74 20 63 6f 6e 66 75  .** Do not confu
e3d0: 73 65 20 74 68 65 20 53 51 4c 49 54 45 5f 53 59  se the SQLITE_SY
e3e0: 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51  NC_NORMAL and SQ
e3f0: 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 66  LITE_SYNC_FULL f
e400: 6c 61 67 73 0a 2a 2a 20 77 69 74 68 20 74 68 65  lags.** with the
e410: 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f   [PRAGMA synchro
e420: 6e 6f 75 73 5d 3d 4e 4f 52 4d 41 4c 20 61 6e 64  nous]=NORMAL and
e430: 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f   [PRAGMA synchro
e440: 6e 6f 75 73 5d 3d 46 55 4c 4c 0a 2a 2a 20 73 65  nous]=FULL.** se
e450: 74 74 69 6e 67 73 2e 20 20 54 68 65 20 5b 73 79  ttings.  The [sy
e460: 6e 63 68 72 6f 6e 6f 75 73 20 70 72 61 67 6d 61  nchronous pragma
e470: 5d 20 64 65 74 65 72 6d 69 6e 65 73 20 77 68 65  ] determines whe
e480: 6e 20 63 61 6c 6c 73 20 74 6f 20 74 68 65 0a 2a  n calls to the.*
e490: 2a 20 78 53 79 6e 63 20 56 46 53 20 6d 65 74 68  * xSync VFS meth
e4a0: 6f 64 20 6f 63 63 75 72 20 61 6e 64 20 61 70 70  od occur and app
e4b0: 6c 69 65 73 20 75 6e 69 66 6f 72 6d 6c 79 20 61  lies uniformly a
e4c0: 63 72 6f 73 73 20 61 6c 6c 20 70 6c 61 74 66 6f  cross all platfo
e4d0: 72 6d 73 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49  rms..** The SQLI
e4e0: 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61  TE_SYNC_NORMAL a
e4f0: 6e 64 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46  nd SQLITE_SYNC_F
e500: 55 4c 4c 20 66 6c 61 67 73 20 64 65 74 65 72 6d  ULL flags determ
e510: 69 6e 65 20 68 6f 77 0a 2a 2a 20 65 6e 65 72 67  ine how.** energ
e520: 65 74 69 63 20 6f 72 20 72 69 67 6f 72 6f 75 73  etic or rigorous
e530: 20 6f 72 20 66 6f 72 63 65 66 75 6c 20 74 68 65   or forceful the
e540: 20 73 79 6e 63 20 6f 70 65 72 61 74 69 6f 6e 73   sync operations
e550: 20 61 72 65 20 61 6e 64 0a 2a 2a 20 6f 6e 6c 79   are and.** only
e560: 20 6d 61 6b 65 20 61 20 64 69 66 66 65 72 65 6e   make a differen
e570: 63 65 20 6f 6e 20 4d 61 63 20 4f 53 58 20 66 6f  ce on Mac OSX fo
e580: 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 53 51  r the default SQ
e590: 4c 69 74 65 20 63 6f 64 65 2e 0a 2a 2a 20 28 54  Lite code..** (T
e5a0: 68 69 72 64 2d 70 61 72 74 79 20 56 46 53 20 69  hird-party VFS i
e5b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6d  mplementations m
e5c0: 69 67 68 74 20 61 6c 73 6f 20 6d 61 6b 65 20 74  ight also make t
e5d0: 68 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 0a 2a  he distinction.*
e5e0: 2a 20 62 65 74 77 65 65 6e 20 53 51 4c 49 54 45  * between SQLITE
e5f0: 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 61 6e 64  _SYNC_NORMAL and
e600: 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c   SQLITE_SYNC_FUL
e610: 4c 2c 20 62 75 74 20 61 6d 6f 6e 67 20 74 68 65  L, but among the
e620: 0a 2a 2a 20 6f 70 65 72 61 74 69 6e 67 20 73 79  .** operating sy
e630: 73 74 65 6d 73 20 6e 61 74 69 76 65 6c 79 20 73  stems natively s
e640: 75 70 70 6f 72 74 65 64 20 62 79 20 53 51 4c 69  upported by SQLi
e650: 74 65 2c 20 6f 6e 6c 79 20 4d 61 63 20 4f 53 58  te, only Mac OSX
e660: 0a 2a 2a 20 63 61 72 65 73 20 61 62 6f 75 74 20  .** cares about 
e670: 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 2e 29  the difference.)
e680: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
e690: 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 20 20  TE_SYNC_NORMAL  
e6a0: 20 20 20 20 20 20 30 78 30 30 30 30 32 0a 23 64        0x00002.#d
e6b0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e  efine SQLITE_SYN
e6c0: 43 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 20 20  C_FULL          
e6d0: 30 78 30 30 30 30 33 0a 23 64 65 66 69 6e 65 20  0x00003.#define 
e6e0: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41 54 41  SQLITE_SYNC_DATA
e6f0: 4f 4e 4c 59 20 20 20 20 20 20 30 78 30 30 30 31  ONLY      0x0001
e700: 30 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  0../*.** CAPI3RE
e710: 46 3a 20 4f 53 20 49 6e 74 65 72 66 61 63 65 20  F: OS Interface 
e720: 4f 70 65 6e 20 46 69 6c 65 20 48 61 6e 64 6c 65  Open File Handle
e730: 0a 2a 2a 0a 2a 2a 20 41 6e 20 5b 73 71 6c 69 74  .**.** An [sqlit
e740: 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20  e3_file] object 
e750: 72 65 70 72 65 73 65 6e 74 73 20 61 6e 20 6f 70  represents an op
e760: 65 6e 20 66 69 6c 65 20 69 6e 20 74 68 65 20 0a  en file in the .
e770: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 20  ** [sqlite3_vfs 
e780: 7c 20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c  | OS interface l
e790: 61 79 65 72 5d 2e 20 20 49 6e 64 69 76 69 64 75  ayer].  Individu
e7a0: 61 6c 20 4f 53 20 69 6e 74 65 72 66 61 63 65 0a  al OS interface.
e7b0: 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
e7c0: 6e 73 20 77 69 6c 6c 0a 2a 2a 20 77 61 6e 74 20  ns will.** want 
e7d0: 74 6f 20 73 75 62 63 6c 61 73 73 20 74 68 69 73  to subclass this
e7e0: 20 6f 62 6a 65 63 74 20 62 79 20 61 70 70 65 6e   object by appen
e7f0: 64 69 6e 67 20 61 64 64 69 74 69 6f 6e 61 6c 20  ding additional 
e800: 66 69 65 6c 64 73 0a 2a 2a 20 66 6f 72 20 74 68  fields.** for th
e810: 65 69 72 20 6f 77 6e 20 75 73 65 2e 20 20 54 68  eir own use.  Th
e820: 65 20 70 4d 65 74 68 6f 64 73 20 65 6e 74 72 79  e pMethods entry
e830: 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
e840: 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   an.** [sqlite3_
e850: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
e860: 63 74 20 74 68 61 74 20 64 65 66 69 6e 65 73 20  ct that defines 
e870: 6d 65 74 68 6f 64 73 20 66 6f 72 20 70 65 72 66  methods for perf
e880: 6f 72 6d 69 6e 67 0a 2a 2a 20 49 2f 4f 20 6f 70  orming.** I/O op
e890: 65 72 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20  erations on the 
e8a0: 6f 70 65 6e 20 66 69 6c 65 2e 0a 2a 2f 0a 74 79  open file..*/.ty
e8b0: 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c  pedef struct sql
e8c0: 69 74 65 33 5f 66 69 6c 65 20 73 71 6c 69 74 65  ite3_file sqlite
e8d0: 33 5f 66 69 6c 65 3b 0a 73 74 72 75 63 74 20 73  3_file;.struct s
e8e0: 71 6c 69 74 65 33 5f 66 69 6c 65 20 7b 0a 20 20  qlite3_file {.  
e8f0: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 73 71 6c  const struct sql
e900: 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 20  ite3_io_methods 
e910: 2a 70 4d 65 74 68 6f 64 73 3b 20 20 2f 2a 20 4d  *pMethods;  /* M
e920: 65 74 68 6f 64 73 20 66 6f 72 20 61 6e 20 6f 70  ethods for an op
e930: 65 6e 20 66 69 6c 65 20 2a 2f 0a 7d 3b 0a 0a 2f  en file */.};../
e940: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f  *.** CAPI3REF: O
e950: 53 20 49 6e 74 65 72 66 61 63 65 20 46 69 6c 65  S Interface File
e960: 20 56 69 72 74 75 61 6c 20 4d 65 74 68 6f 64 73   Virtual Methods
e970: 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 45 76   Object.**.** Ev
e980: 65 72 79 20 66 69 6c 65 20 6f 70 65 6e 65 64 20  ery file opened 
e990: 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  by the [sqlite3_
e9a0: 76 66 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f  vfs.xOpen] metho
e9b0: 64 20 70 6f 70 75 6c 61 74 65 73 20 61 6e 0a 2a  d populates an.*
e9c0: 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d  * [sqlite3_file]
e9d0: 20 6f 62 6a 65 63 74 20 28 6f 72 2c 20 6d 6f 72   object (or, mor
e9e0: 65 20 63 6f 6d 6d 6f 6e 6c 79 2c 20 61 20 73 75  e commonly, a su
e9f0: 62 63 6c 61 73 73 20 6f 66 20 74 68 65 0a 2a 2a  bclass of the.**
ea00: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
ea10: 6f 62 6a 65 63 74 29 20 77 69 74 68 20 61 20 70  object) with a p
ea20: 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73  ointer to an ins
ea30: 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62  tance of this ob
ea40: 6a 65 63 74 2e 0a 2a 2a 20 54 68 69 73 20 6f 62  ject..** This ob
ea50: 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74 68 65  ject defines the
ea60: 20 6d 65 74 68 6f 64 73 20 75 73 65 64 20 74 6f   methods used to
ea70: 20 70 65 72 66 6f 72 6d 20 76 61 72 69 6f 75 73   perform various
ea80: 20 6f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20 61   operations.** a
ea90: 67 61 69 6e 73 74 20 74 68 65 20 6f 70 65 6e 20  gainst the open 
eaa0: 66 69 6c 65 20 72 65 70 72 65 73 65 6e 74 65 64  file represented
eab0: 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65 33   by the [sqlite3
eac0: 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 2e 0a 2a  _file] object..*
ead0: 2a 0a 2a 2a 20 49 66 20 74 68 65 20 5b 73 71 6c  *.** If the [sql
eae0: 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20  ite3_vfs.xOpen] 
eaf0: 6d 65 74 68 6f 64 20 73 65 74 73 20 74 68 65 20  method sets the 
eb00: 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65  sqlite3_file.pMe
eb10: 74 68 6f 64 73 20 65 6c 65 6d 65 6e 74 20 0a 2a  thods element .*
eb20: 2a 20 74 6f 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20  * to a non-NULL 
eb30: 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 74 68  pointer, then th
eb40: 65 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74  e sqlite3_io_met
eb50: 68 6f 64 73 2e 78 43 6c 6f 73 65 20 6d 65 74 68  hods.xClose meth
eb60: 6f 64 0a 2a 2a 20 6d 61 79 20 62 65 20 69 6e 76  od.** may be inv
eb70: 6f 6b 65 64 20 65 76 65 6e 20 69 66 20 74 68 65  oked even if the
eb80: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f   [sqlite3_vfs.xO
eb90: 70 65 6e 5d 20 72 65 70 6f 72 74 65 64 20 74 68  pen] reported th
eba0: 61 74 20 69 74 20 66 61 69 6c 65 64 2e 20 20 54  at it failed.  T
ebb0: 68 65 0a 2a 2a 20 6f 6e 6c 79 20 77 61 79 20 74  he.** only way t
ebc0: 6f 20 70 72 65 76 65 6e 74 20 61 20 63 61 6c 6c  o prevent a call
ebd0: 20 74 6f 20 78 43 6c 6f 73 65 20 66 6f 6c 6c 6f   to xClose follo
ebe0: 77 69 6e 67 20 61 20 66 61 69 6c 65 64 20 5b 73  wing a failed [s
ebf0: 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e  qlite3_vfs.xOpen
ec00: 5d 0a 2a 2a 20 69 73 20 66 6f 72 20 74 68 65 20  ].** is for the 
ec10: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
ec20: 65 6e 5d 20 74 6f 20 73 65 74 20 74 68 65 20 73  en] to set the s
ec30: 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
ec40: 68 6f 64 73 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20  hods element.** 
ec50: 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 54  to NULL..**.** T
ec60: 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
ec70: 74 20 74 6f 20 78 53 79 6e 63 20 6d 61 79 20 62  t to xSync may b
ec80: 65 20 6f 6e 65 20 6f 66 20 5b 53 51 4c 49 54 45  e one of [SQLITE
ec90: 5f 53 59 4e 43 5f 4e 4f 52 4d 41 4c 5d 20 6f 72  _SYNC_NORMAL] or
eca0: 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43  .** [SQLITE_SYNC
ecb0: 5f 46 55 4c 4c 5d 2e 20 20 54 68 65 20 66 69 72  _FULL].  The fir
ecc0: 73 74 20 63 68 6f 69 63 65 20 69 73 20 74 68 65  st choice is the
ecd0: 20 6e 6f 72 6d 61 6c 20 66 73 79 6e 63 28 29 2e   normal fsync().
ece0: 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 63  .** The second c
ecf0: 68 6f 69 63 65 20 69 73 20 61 20 4d 61 63 20 4f  hoice is a Mac O
ed00: 53 20 58 20 73 74 79 6c 65 20 66 75 6c 6c 73 79  S X style fullsy
ed10: 6e 63 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45  nc.  The [SQLITE
ed20: 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 5d 0a  _SYNC_DATAONLY].
ed30: 2a 2a 20 66 6c 61 67 20 6d 61 79 20 62 65 20 4f  ** flag may be O
ed40: 52 65 64 20 69 6e 20 74 6f 20 69 6e 64 69 63 61  Red in to indica
ed50: 74 65 20 74 68 61 74 20 6f 6e 6c 79 20 74 68 65  te that only the
ed60: 20 64 61 74 61 20 6f 66 20 74 68 65 20 66 69 6c   data of the fil
ed70: 65 0a 2a 2a 20 61 6e 64 20 6e 6f 74 20 69 74 73  e.** and not its
ed80: 20 69 6e 6f 64 65 20 6e 65 65 64 73 20 74 6f 20   inode needs to 
ed90: 62 65 20 73 79 6e 63 65 64 2e 0a 2a 2a 0a 2a 2a  be synced..**.**
eda0: 20 54 68 65 20 69 6e 74 65 67 65 72 20 76 61 6c   The integer val
edb0: 75 65 73 20 74 6f 20 78 4c 6f 63 6b 28 29 20 61  ues to xLock() a
edc0: 6e 64 20 78 55 6e 6c 6f 63 6b 28 29 20 61 72 65  nd xUnlock() are
edd0: 20 6f 6e 65 20 6f 66 0a 2a 2a 20 3c 75 6c 3e 0a   one of.** <ul>.
ede0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
edf0: 4c 4f 43 4b 5f 4e 4f 4e 45 5d 2c 0a 2a 2a 20 3c  LOCK_NONE],.** <
ee00: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  li> [SQLITE_LOCK
ee10: 5f 53 48 41 52 45 44 5d 2c 0a 2a 2a 20 3c 6c 69  _SHARED],.** <li
ee20: 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52  > [SQLITE_LOCK_R
ee30: 45 53 45 52 56 45 44 5d 2c 0a 2a 2a 20 3c 6c 69  ESERVED],.** <li
ee40: 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50  > [SQLITE_LOCK_P
ee50: 45 4e 44 49 4e 47 5d 2c 20 6f 72 0a 2a 2a 20 3c  ENDING], or.** <
ee60: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b  li> [SQLITE_LOCK
ee70: 5f 45 58 43 4c 55 53 49 56 45 5d 2e 0a 2a 2a 20  _EXCLUSIVE]..** 
ee80: 3c 2f 75 6c 3e 0a 2a 2a 20 78 4c 6f 63 6b 28 29  </ul>.** xLock()
ee90: 20 69 6e 63 72 65 61 73 65 73 20 74 68 65 20 6c   increases the l
eea0: 6f 63 6b 2e 20 78 55 6e 6c 6f 63 6b 28 29 20 64  ock. xUnlock() d
eeb0: 65 63 72 65 61 73 65 73 20 74 68 65 20 6c 6f 63  ecreases the loc
eec0: 6b 2e 0a 2a 2a 20 54 68 65 20 78 43 68 65 63 6b  k..** The xCheck
eed0: 52 65 73 65 72 76 65 64 4c 6f 63 6b 28 29 20 6d  ReservedLock() m
eee0: 65 74 68 6f 64 20 63 68 65 63 6b 73 20 77 68 65  ethod checks whe
eef0: 74 68 65 72 20 61 6e 79 20 64 61 74 61 62 61 73  ther any databas
ef00: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0a 2a 2a  e connection,.**
ef10: 20 65 69 74 68 65 72 20 69 6e 20 74 68 69 73 20   either in this 
ef20: 70 72 6f 63 65 73 73 20 6f 72 20 69 6e 20 73 6f  process or in so
ef30: 6d 65 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73  me other process
ef40: 2c 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 52  , is holding a R
ef50: 45 53 45 52 56 45 44 2c 0a 2a 2a 20 50 45 4e 44  ESERVED,.** PEND
ef60: 49 4e 47 2c 20 6f 72 20 45 58 43 4c 55 53 49 56  ING, or EXCLUSIV
ef70: 45 20 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 66 69  E lock on the fi
ef80: 6c 65 2e 20 20 49 74 20 72 65 74 75 72 6e 73 20  le.  It returns 
ef90: 74 72 75 65 0a 2a 2a 20 69 66 20 73 75 63 68 20  true.** if such 
efa0: 61 20 6c 6f 63 6b 20 65 78 69 73 74 73 20 61 6e  a lock exists an
efb0: 64 20 66 61 6c 73 65 20 6f 74 68 65 72 77 69 73  d false otherwis
efc0: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 46 69  e..**.** The xFi
efd0: 6c 65 43 6f 6e 74 72 6f 6c 28 29 20 6d 65 74 68  leControl() meth
efe0: 6f 64 20 69 73 20 61 20 67 65 6e 65 72 69 63 20  od is a generic 
eff0: 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 61  interface that a
f000: 6c 6c 6f 77 73 20 63 75 73 74 6f 6d 0a 2a 2a 20  llows custom.** 
f010: 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
f020: 6f 6e 73 20 74 6f 20 64 69 72 65 63 74 6c 79 20  ons to directly 
f030: 63 6f 6e 74 72 6f 6c 20 61 6e 20 6f 70 65 6e 20  control an open 
f040: 66 69 6c 65 20 75 73 69 6e 67 20 74 68 65 0a 2a  file using the.*
f050: 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  * [sqlite3_file_
f060: 63 6f 6e 74 72 6f 6c 28 29 5d 20 69 6e 74 65 72  control()] inter
f070: 66 61 63 65 2e 20 20 54 68 65 20 73 65 63 6f 6e  face.  The secon
f080: 64 20 22 6f 70 22 20 61 72 67 75 6d 65 6e 74 20  d "op" argument 
f090: 69 73 20 61 6e 0a 2a 2a 20 69 6e 74 65 67 65 72  is an.** integer
f0a0: 20 6f 70 63 6f 64 65 2e 20 20 54 68 65 20 74 68   opcode.  The th
f0b0: 69 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20  ird argument is 
f0c0: 61 20 67 65 6e 65 72 69 63 20 70 6f 69 6e 74 65  a generic pointe
f0d0: 72 20 69 6e 74 65 6e 64 65 64 20 74 6f 0a 2a 2a  r intended to.**
f0e0: 20 70 6f 69 6e 74 20 74 6f 20 61 20 73 74 72 75   point to a stru
f0f0: 63 74 75 72 65 20 74 68 61 74 20 6d 61 79 20 63  cture that may c
f100: 6f 6e 74 61 69 6e 20 61 72 67 75 6d 65 6e 74 73  ontain arguments
f110: 20 6f 72 20 73 70 61 63 65 20 69 6e 20 77 68 69   or space in whi
f120: 63 68 20 74 6f 0a 2a 2a 20 77 72 69 74 65 20 72  ch to.** write r
f130: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 20 20 50  eturn values.  P
f140: 6f 74 65 6e 74 69 61 6c 20 75 73 65 73 20 66 6f  otential uses fo
f150: 72 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 28 29  r xFileControl()
f160: 20 6d 69 67 68 74 20 62 65 0a 2a 2a 20 66 75 6e   might be.** fun
f170: 63 74 69 6f 6e 73 20 74 6f 20 65 6e 61 62 6c 65  ctions to enable
f180: 20 62 6c 6f 63 6b 69 6e 67 20 6c 6f 63 6b 73 20   blocking locks 
f190: 77 69 74 68 20 74 69 6d 65 6f 75 74 73 2c 20 74  with timeouts, t
f1a0: 6f 20 63 68 61 6e 67 65 20 74 68 65 0a 2a 2a 20  o change the.** 
f1b0: 6c 6f 63 6b 69 6e 67 20 73 74 72 61 74 65 67 79  locking strategy
f1c0: 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 6f   (for example to
f1d0: 20 75 73 65 20 64 6f 74 2d 66 69 6c 65 20 6c 6f   use dot-file lo
f1e0: 63 6b 73 29 2c 20 74 6f 20 69 6e 71 75 69 72 65  cks), to inquire
f1f0: 0a 2a 2a 20 61 62 6f 75 74 20 74 68 65 20 73 74  .** about the st
f200: 61 74 75 73 20 6f 66 20 61 20 6c 6f 63 6b 2c 20  atus of a lock, 
f210: 6f 72 20 74 6f 20 62 72 65 61 6b 20 73 74 61 6c  or to break stal
f220: 65 20 6c 6f 63 6b 73 2e 20 20 54 68 65 20 53 51  e locks.  The SQ
f230: 4c 69 74 65 0a 2a 2a 20 63 6f 72 65 20 72 65 73  Lite.** core res
f240: 65 72 76 65 73 20 61 6c 6c 20 6f 70 63 6f 64 65  erves all opcode
f250: 73 20 6c 65 73 73 20 74 68 61 6e 20 31 30 30 20  s less than 100 
f260: 66 6f 72 20 69 74 73 20 6f 77 6e 20 75 73 65 2e  for its own use.
f270: 0a 2a 2a 20 41 20 5b 66 69 6c 65 20 63 6f 6e 74  .** A [file cont
f280: 72 6f 6c 20 6f 70 63 6f 64 65 73 20 7c 20 6c 69  rol opcodes | li
f290: 73 74 20 6f 66 20 6f 70 63 6f 64 65 73 5d 20 6c  st of opcodes] l
f2a0: 65 73 73 20 74 68 61 6e 20 31 30 30 20 69 73 20  ess than 100 is 
f2b0: 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 20 41 70  available..** Ap
f2c0: 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
f2d0: 64 65 66 69 6e 65 20 61 20 63 75 73 74 6f 6d 20  define a custom 
f2e0: 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74  xFileControl met
f2f0: 68 6f 64 20 73 68 6f 75 6c 64 20 75 73 65 20 6f  hod should use o
f300: 70 63 6f 64 65 73 0a 2a 2a 20 67 72 65 61 74 65  pcodes.** greate
f310: 72 20 74 68 61 6e 20 31 30 30 20 74 6f 20 61 76  r than 100 to av
f320: 6f 69 64 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20  oid conflicts.  
f330: 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
f340: 6f 6e 73 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65  ons should.** re
f350: 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f 54  turn [SQLITE_NOT
f360: 46 4f 55 4e 44 5d 20 66 6f 72 20 66 69 6c 65 20  FOUND] for file 
f370: 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65 73 20  control opcodes 
f380: 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74  that they do not
f390: 0a 2a 2a 20 72 65 63 6f 67 6e 69 7a 65 2e 0a 2a  .** recognize..*
f3a0: 2a 0a 2a 2a 20 54 68 65 20 78 53 65 63 74 6f 72  *.** The xSector
f3b0: 53 69 7a 65 28 29 20 6d 65 74 68 6f 64 20 72 65  Size() method re
f3c0: 74 75 72 6e 73 20 74 68 65 20 73 65 63 74 6f 72  turns the sector
f3d0: 20 73 69 7a 65 20 6f 66 20 74 68 65 0a 2a 2a 20   size of the.** 
f3e0: 64 65 76 69 63 65 20 74 68 61 74 20 75 6e 64 65  device that unde
f3f0: 72 6c 69 65 73 20 74 68 65 20 66 69 6c 65 2e 20  rlies the file. 
f400: 20 54 68 65 20 73 65 63 74 6f 72 20 73 69 7a 65   The sector size
f410: 20 69 73 20 74 68 65 0a 2a 2a 20 6d 69 6e 69 6d   is the.** minim
f420: 75 6d 20 77 72 69 74 65 20 74 68 61 74 20 63 61  um write that ca
f430: 6e 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 77  n be performed w
f440: 69 74 68 6f 75 74 20 64 69 73 74 75 72 62 69 6e  ithout disturbin
f450: 67 0a 2a 2a 20 6f 74 68 65 72 20 62 79 74 65 73  g.** other bytes
f460: 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 20 20 54   in the file.  T
f470: 68 65 20 78 44 65 76 69 63 65 43 68 61 72 61 63  he xDeviceCharac
f480: 74 65 72 69 73 74 69 63 73 28 29 0a 2a 2a 20 6d  teristics().** m
f490: 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 61 20  ethod returns a 
f4a0: 62 69 74 20 76 65 63 74 6f 72 20 64 65 73 63 72  bit vector descr
f4b0: 69 62 69 6e 67 20 62 65 68 61 76 69 6f 72 73 20  ibing behaviors 
f4c0: 6f 66 20 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c  of the.** underl
f4d0: 79 69 6e 67 20 64 65 76 69 63 65 3a 0a 2a 2a 0a  ying device:.**.
f4e0: 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ul>.** <li> 
f4f0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54  [SQLITE_IOCAP_AT
f500: 4f 4d 49 43 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  OMIC].** <li> [S
f510: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f520: 49 43 35 31 32 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  IC512].** <li> [
f530: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f540: 4d 49 43 31 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  MIC1K].** <li> [
f550: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f560: 4d 49 43 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  MIC2K].** <li> [
f570: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f580: 4d 49 43 34 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  MIC4K].** <li> [
f590: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f5a0: 4d 49 43 38 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  MIC8K].** <li> [
f5b0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
f5c0: 4d 49 43 31 36 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20  MIC16K].** <li> 
f5d0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54  [SQLITE_IOCAP_AT
f5e0: 4f 4d 49 43 33 32 4b 5d 0a 2a 2a 20 3c 6c 69 3e  OMIC32K].** <li>
f5f0: 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41   [SQLITE_IOCAP_A
f600: 54 4f 4d 49 43 36 34 4b 5d 0a 2a 2a 20 3c 6c 69  TOMIC64K].** <li
f610: 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  > [SQLITE_IOCAP_
f620: 53 41 46 45 5f 41 50 50 45 4e 44 5d 0a 2a 2a 20  SAFE_APPEND].** 
f630: 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43  <li> [SQLITE_IOC
f640: 41 50 5f 53 45 51 55 45 4e 54 49 41 4c 5d 0a 2a  AP_SEQUENTIAL].*
f650: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f660: 4f 43 41 50 5f 55 4e 44 45 4c 45 54 41 42 4c 45  OCAP_UNDELETABLE
f670: 5f 57 48 45 4e 5f 4f 50 45 4e 5d 0a 2a 2a 20 3c  _WHEN_OPEN].** <
f680: 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  li> [SQLITE_IOCA
f690: 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52  P_POWERSAFE_OVER
f6a0: 57 52 49 54 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  WRITE].** <li> [
f6b0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d  SQLITE_IOCAP_IMM
f6c0: 55 54 41 42 4c 45 5d 0a 2a 2a 20 3c 6c 69 3e 20  UTABLE].** <li> 
f6d0: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 42 41  [SQLITE_IOCAP_BA
f6e0: 54 43 48 5f 41 54 4f 4d 49 43 5d 0a 2a 2a 20 3c  TCH_ATOMIC].** <
f6f0: 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53  /ul>.**.** The S
f700: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
f710: 49 43 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e  IC property mean
f720: 73 20 74 68 61 74 20 61 6c 6c 20 77 72 69 74 65  s that all write
f730: 73 20 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a 65  s of.** any size
f740: 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68   are atomic.  Th
f750: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
f760: 54 4f 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73 0a  TOMICnnn values.
f770: 2a 2a 20 6d 65 61 6e 20 74 68 61 74 20 77 72 69  ** mean that wri
f780: 74 65 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74 68  tes of blocks th
f790: 61 74 20 61 72 65 20 6e 6e 6e 20 62 79 74 65 73  at are nnn bytes
f7a0: 20 69 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a 20   in size and.** 
f7b0: 61 72 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61  are aligned to a
f7c0: 6e 20 61 64 64 72 65 73 73 20 77 68 69 63 68 20  n address which 
f7d0: 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6d 75  is an integer mu
f7e0: 6c 74 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e  ltiple of.** nnn
f7f0: 20 61 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68   are atomic.  Th
f800: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53  e SQLITE_IOCAP_S
f810: 41 46 45 5f 41 50 50 45 4e 44 20 76 61 6c 75 65  AFE_APPEND value
f820: 20 6d 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20 77   means.** that w
f830: 68 65 6e 20 64 61 74 61 20 69 73 20 61 70 70 65  hen data is appe
f840: 6e 64 65 64 20 74 6f 20 61 20 66 69 6c 65 2c 20  nded to a file, 
f850: 74 68 65 20 64 61 74 61 20 69 73 20 61 70 70 65  the data is appe
f860: 6e 64 65 64 0a 2a 2a 20 66 69 72 73 74 20 74 68  nded.** first th
f870: 65 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  en the size of t
f880: 68 65 20 66 69 6c 65 20 69 73 20 65 78 74 65 6e  he file is exten
f890: 64 65 64 2c 20 6e 65 76 65 72 20 74 68 65 20 6f  ded, never the o
f8a0: 74 68 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f 75  ther.** way arou
f8b0: 6e 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f  nd.  The SQLITE_
f8c0: 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41 4c  IOCAP_SEQUENTIAL
f8d0: 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20   property means 
f8e0: 74 68 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74  that.** informat
f8f0: 69 6f 6e 20 69 73 20 77 72 69 74 74 65 6e 20 74  ion is written t
f900: 6f 20 64 69 73 6b 20 69 6e 20 74 68 65 20 73 61  o disk in the sa
f910: 6d 65 20 6f 72 64 65 72 20 61 73 20 63 61 6c 6c  me order as call
f920: 73 0a 2a 2a 20 74 6f 20 78 57 72 69 74 65 28 29  s.** to xWrite()
f930: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 78 52 65 61 64  ..**.** If xRead
f940: 28 29 20 72 65 74 75 72 6e 73 20 53 51 4c 49 54  () returns SQLIT
f950: 45 5f 49 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45  E_IOERR_SHORT_RE
f960: 41 44 20 69 74 20 6d 75 73 74 20 61 6c 73 6f 20  AD it must also 
f970: 66 69 6c 6c 0a 2a 2a 20 69 6e 20 74 68 65 20 75  fill.** in the u
f980: 6e 72 65 61 64 20 70 6f 72 74 69 6f 6e 73 20 6f  nread portions o
f990: 66 20 74 68 65 20 62 75 66 66 65 72 20 77 69 74  f the buffer wit
f9a0: 68 20 7a 65 72 6f 73 2e 20 20 41 20 56 46 53 20  h zeros.  A VFS 
f9b0: 74 68 61 74 0a 2a 2a 20 66 61 69 6c 73 20 74 6f  that.** fails to
f9c0: 20 7a 65 72 6f 2d 66 69 6c 6c 20 73 68 6f 72 74   zero-fill short
f9d0: 20 72 65 61 64 73 20 6d 69 67 68 74 20 73 65 65   reads might see
f9e0: 6d 20 74 6f 20 77 6f 72 6b 2e 20 20 48 6f 77 65  m to work.  Howe
f9f0: 76 65 72 2c 0a 2a 2a 20 66 61 69 6c 75 72 65 20  ver,.** failure 
fa00: 74 6f 20 7a 65 72 6f 2d 66 69 6c 6c 20 73 68 6f  to zero-fill sho
fa10: 72 74 20 72 65 61 64 73 20 77 69 6c 6c 20 65 76  rt reads will ev
fa20: 65 6e 74 75 61 6c 6c 79 20 6c 65 61 64 20 74 6f  entually lead to
fa30: 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 72  .** database cor
fa40: 72 75 70 74 69 6f 6e 2e 0a 2a 2f 0a 74 79 70 65  ruption..*/.type
fa50: 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
fa60: 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 73 71  e3_io_methods sq
fa70: 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73  lite3_io_methods
fa80: 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  ;.struct sqlite3
fa90: 5f 69 6f 5f 6d 65 74 68 6f 64 73 20 7b 0a 20 20  _io_methods {.  
faa0: 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b 0a 20 20  int iVersion;.  
fab0: 69 6e 74 20 28 2a 78 43 6c 6f 73 65 29 28 73 71  int (*xClose)(sq
fac0: 6c 69 74 65 33 5f 66 69 6c 65 2a 29 3b 0a 20 20  lite3_file*);.  
fad0: 69 6e 74 20 28 2a 78 52 65 61 64 29 28 73 71 6c  int (*xRead)(sql
fae0: 69 74 65 33 5f 66 69 6c 65 2a 2c 20 76 6f 69 64  ite3_file*, void
faf0: 2a 2c 20 69 6e 74 20 69 41 6d 74 2c 20 73 71 6c  *, int iAmt, sql
fb00: 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66 73 74  ite3_int64 iOfst
fb10: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 57 72 69 74  );.  int (*xWrit
fb20: 65 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  e)(sqlite3_file*
fb30: 2c 20 63 6f 6e 73 74 20 76 6f 69 64 2a 2c 20 69  , const void*, i
fb40: 6e 74 20 69 41 6d 74 2c 20 73 71 6c 69 74 65 33  nt iAmt, sqlite3
fb50: 5f 69 6e 74 36 34 20 69 4f 66 73 74 29 3b 0a 20  _int64 iOfst);. 
fb60: 20 69 6e 74 20 28 2a 78 54 72 75 6e 63 61 74 65   int (*xTruncate
fb70: 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c  )(sqlite3_file*,
fb80: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73   sqlite3_int64 s
fb90: 69 7a 65 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53  ize);.  int (*xS
fba0: 79 6e 63 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ync)(sqlite3_fil
fbb0: 65 2a 2c 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a  e*, int flags);.
fbc0: 20 20 69 6e 74 20 28 2a 78 46 69 6c 65 53 69 7a    int (*xFileSiz
fbd0: 65 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  e)(sqlite3_file*
fbe0: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
fbf0: 2a 70 53 69 7a 65 29 3b 0a 20 20 69 6e 74 20 28  *pSize);.  int (
fc00: 2a 78 4c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f  *xLock)(sqlite3_
fc10: 66 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20 20 69  file*, int);.  i
fc20: 6e 74 20 28 2a 78 55 6e 6c 6f 63 6b 29 28 73 71  nt (*xUnlock)(sq
fc30: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74  lite3_file*, int
fc40: 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43 68 65 63  );.  int (*xChec
fc50: 6b 52 65 73 65 72 76 65 64 4c 6f 63 6b 29 28 73  kReservedLock)(s
fc60: 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
fc70: 74 20 2a 70 52 65 73 4f 75 74 29 3b 0a 20 20 69  t *pResOut);.  i
fc80: 6e 74 20 28 2a 78 46 69 6c 65 43 6f 6e 74 72 6f  nt (*xFileContro
fc90: 6c 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  l)(sqlite3_file*
fca0: 2c 20 69 6e 74 20 6f 70 2c 20 76 6f 69 64 20 2a  , int op, void *
fcb0: 70 41 72 67 29 3b 0a 20 20 69 6e 74 20 28 2a 78  pArg);.  int (*x
fcc0: 53 65 63 74 6f 72 53 69 7a 65 29 28 73 71 6c 69  SectorSize)(sqli
fcd0: 74 65 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e  te3_file*);.  in
fce0: 74 20 28 2a 78 44 65 76 69 63 65 43 68 61 72 61  t (*xDeviceChara
fcf0: 63 74 65 72 69 73 74 69 63 73 29 28 73 71 6c 69  cteristics)(sqli
fd00: 74 65 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 2f 2a  te3_file*);.  /*
fd10: 20 4d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61   Methods above a
fd20: 72 65 20 76 61 6c 69 64 20 66 6f 72 20 76 65 72  re valid for ver
fd30: 73 69 6f 6e 20 31 20 2a 2f 0a 20 20 69 6e 74 20  sion 1 */.  int 
fd40: 28 2a 78 53 68 6d 4d 61 70 29 28 73 71 6c 69 74  (*xShmMap)(sqlit
fd50: 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 69 50  e3_file*, int iP
fd60: 67 2c 20 69 6e 74 20 70 67 73 7a 2c 20 69 6e 74  g, int pgsz, int
fd70: 2c 20 76 6f 69 64 20 76 6f 6c 61 74 69 6c 65 2a  , void volatile*
fd80: 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d  *);.  int (*xShm
fd90: 4c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f 66 69  Lock)(sqlite3_fi
fda0: 6c 65 2a 2c 20 69 6e 74 20 6f 66 66 73 65 74 2c  le*, int offset,
fdb0: 20 69 6e 74 20 6e 2c 20 69 6e 74 20 66 6c 61 67   int n, int flag
fdc0: 73 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 53 68  s);.  void (*xSh
fdd0: 6d 42 61 72 72 69 65 72 29 28 73 71 6c 69 74 65  mBarrier)(sqlite
fde0: 33 5f 66 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20  3_file*);.  int 
fdf0: 28 2a 78 53 68 6d 55 6e 6d 61 70 29 28 73 71 6c  (*xShmUnmap)(sql
fe00: 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20  ite3_file*, int 
fe10: 64 65 6c 65 74 65 46 6c 61 67 29 3b 0a 20 20 2f  deleteFlag);.  /
fe20: 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  * Methods above 
fe30: 61 72 65 20 76 61 6c 69 64 20 66 6f 72 20 76 65  are valid for ve
fe40: 72 73 69 6f 6e 20 32 20 2a 2f 0a 20 20 69 6e 74  rsion 2 */.  int
fe50: 20 28 2a 78 46 65 74 63 68 29 28 73 71 6c 69 74   (*xFetch)(sqlit
fe60: 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74 65  e3_file*, sqlite
fe70: 33 5f 69 6e 74 36 34 20 69 4f 66 73 74 2c 20 69  3_int64 iOfst, i
fe80: 6e 74 20 69 41 6d 74 2c 20 76 6f 69 64 20 2a 2a  nt iAmt, void **
fe90: 70 70 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55 6e  pp);.  int (*xUn
fea0: 66 65 74 63 68 29 28 73 71 6c 69 74 65 33 5f 66  fetch)(sqlite3_f
feb0: 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  ile*, sqlite3_in
fec0: 74 36 34 20 69 4f 66 73 74 2c 20 76 6f 69 64 20  t64 iOfst, void 
fed0: 2a 70 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f 64  *p);.  /* Method
fee0: 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c 69  s above are vali
fef0: 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 33 20  d for version 3 
ff00: 2a 2f 0a 20 20 2f 2a 20 41 64 64 69 74 69 6f 6e  */.  /* Addition
ff10: 61 6c 20 6d 65 74 68 6f 64 73 20 6d 61 79 20 62  al methods may b
ff20: 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72  e added in futur
ff30: 65 20 72 65 6c 65 61 73 65 73 20 2a 2f 0a 7d 3b  e releases */.};
ff40: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
ff50: 3a 20 53 74 61 6e 64 61 72 64 20 46 69 6c 65 20  : Standard File 
ff60: 43 6f 6e 74 72 6f 6c 20 4f 70 63 6f 64 65 73 0a  Control Opcodes.
ff70: 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 66 69  ** KEYWORDS: {fi
ff80: 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64  le control opcod
ff90: 65 73 7d 20 7b 66 69 6c 65 20 63 6f 6e 74 72 6f  es} {file contro
ffa0: 6c 20 6f 70 63 6f 64 65 7d 0a 2a 2a 0a 2a 2a 20  l opcode}.**.** 
ffb0: 54 68 65 73 65 20 69 6e 74 65 67 65 72 20 63 6f  These integer co
ffc0: 6e 73 74 61 6e 74 73 20 61 72 65 20 6f 70 63 6f  nstants are opco
ffd0: 64 65 73 20 66 6f 72 20 74 68 65 20 78 46 69 6c  des for the xFil
ffe0: 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 0a  eControl method.
fff0: 2a 2a 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  ** of the [sqlit
10000 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f  e3_io_methods] o
10010 62 6a 65 63 74 20 61 6e 64 20 66 6f 72 20 74 68  bject and for th
10020 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  e [sqlite3_file_
10030 63 6f 6e 74 72 6f 6c 28 29 5d 0a 2a 2a 20 69 6e  control()].** in
10040 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 3c  terface..**.** <
10050 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  ul>.** <li>[[SQL
10060 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53 54  ITE_FCNTL_LOCKST
10070 41 54 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  ATE]].** The [SQ
10080 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53  LITE_FCNTL_LOCKS
10090 54 41 54 45 5d 20 6f 70 63 6f 64 65 20 69 73 20  TATE] opcode is 
100a0 75 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69  used for debuggi
100b0 6e 67 2e 20 20 54 68 69 73 0a 2a 2a 20 6f 70 63  ng.  This.** opc
100c0 6f 64 65 20 63 61 75 73 65 73 20 74 68 65 20 78  ode causes the x
100d0 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68  FileControl meth
100e0 6f 64 20 74 6f 20 77 72 69 74 65 20 74 68 65 20  od to write the 
100f0 63 75 72 72 65 6e 74 20 73 74 61 74 65 20 6f 66  current state of
10100 0a 2a 2a 20 74 68 65 20 6c 6f 63 6b 20 28 6f 6e  .** the lock (on
10110 65 20 6f 66 20 5b 53 51 4c 49 54 45 5f 4c 4f 43  e of [SQLITE_LOC
10120 4b 5f 4e 4f 4e 45 5d 2c 20 5b 53 51 4c 49 54 45  K_NONE], [SQLITE
10130 5f 4c 4f 43 4b 5f 53 48 41 52 45 44 5d 2c 0a 2a  _LOCK_SHARED],.*
10140 2a 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52  * [SQLITE_LOCK_R
10150 45 53 45 52 56 45 44 5d 2c 20 5b 53 51 4c 49 54  ESERVED], [SQLIT
10160 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c  E_LOCK_PENDING],
10170 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b   or [SQLITE_LOCK
10180 5f 45 58 43 4c 55 53 49 56 45 5d 29 0a 2a 2a 20  _EXCLUSIVE]).** 
10190 69 6e 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20  into an integer 
101a0 74 68 61 74 20 74 68 65 20 70 41 72 67 20 61 72  that the pArg ar
101b0 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73 20 74 6f  gument points to
101c0 2e 20 54 68 69 73 20 63 61 70 61 62 69 6c 69 74  . This capabilit
101d0 79 0a 2a 2a 20 69 73 20 75 73 65 64 20 64 75 72  y.** is used dur
101e0 69 6e 67 20 74 65 73 74 69 6e 67 20 61 6e 64 20  ing testing and 
101f0 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
10200 65 20 77 68 65 6e 20 74 68 65 20 53 51 4c 49 54  e when the SQLIT
10210 45 5f 54 45 53 54 0a 2a 2a 20 63 6f 6d 70 69 6c  E_TEST.** compil
10220 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73  e-time option is
10230 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69   used..**.** <li
10240 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
10250 53 49 5a 45 5f 48 49 4e 54 5d 5d 0a 2a 2a 20 54  SIZE_HINT]].** T
10260 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
10270 5f 53 49 5a 45 5f 48 49 4e 54 5d 20 6f 70 63 6f  _SIZE_HINT] opco
10280 64 65 20 69 73 20 75 73 65 64 20 62 79 20 53 51  de is used by SQ
10290 4c 69 74 65 20 74 6f 20 67 69 76 65 20 74 68 65  Lite to give the
102a0 20 56 46 53 0a 2a 2a 20 6c 61 79 65 72 20 61 20   VFS.** layer a 
102b0 68 69 6e 74 20 6f 66 20 68 6f 77 20 6c 61 72 67  hint of how larg
102c0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  e the database f
102d0 69 6c 65 20 77 69 6c 6c 20 67 72 6f 77 20 74 6f  ile will grow to
102e0 20 62 65 20 64 75 72 69 6e 67 20 74 68 65 0a 2a   be during the.*
102f0 2a 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61  * current transa
10300 63 74 69 6f 6e 2e 20 20 54 68 69 73 20 68 69 6e  ction.  This hin
10310 74 20 69 73 20 6e 6f 74 20 67 75 61 72 61 6e 74  t is not guarant
10320 65 65 64 20 74 6f 20 62 65 20 61 63 63 75 72 61  eed to be accura
10330 74 65 20 62 75 74 20 69 74 0a 2a 2a 20 69 73 20  te but it.** is 
10340 6f 66 74 65 6e 20 63 6c 6f 73 65 2e 20 20 54 68  often close.  Th
10350 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 56 46 53  e underlying VFS
10360 20 6d 69 67 68 74 20 63 68 6f 6f 73 65 20 74 6f   might choose to
10370 20 70 72 65 61 6c 6c 6f 63 61 74 65 20 64 61 74   preallocate dat
10380 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20 73 70  abase.** file sp
10390 61 63 65 20 62 61 73 65 64 20 6f 6e 20 74 68 69  ace based on thi
103a0 73 20 68 69 6e 74 20 69 6e 20 6f 72 64 65 72 20  s hint in order 
103b0 74 6f 20 68 65 6c 70 20 77 72 69 74 65 73 20 74  to help writes t
103c0 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a  o the database.*
103d0 2a 20 66 69 6c 65 20 72 75 6e 20 66 61 73 74 65  * file run faste
103e0 72 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  r..**.** <li>[[S
103f0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e  QLITE_FCNTL_CHUN
10400 4b 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20  K_SIZE]].** The 
10410 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48  [SQLITE_FCNTL_CH
10420 55 4e 4b 5f 53 49 5a 45 5d 20 6f 70 63 6f 64 65  UNK_SIZE] opcode
10430 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 71 75   is used to requ
10440 65 73 74 20 74 68 61 74 20 74 68 65 20 56 46 53  est that the VFS
10450 0a 2a 2a 20 65 78 74 65 6e 64 73 20 61 6e 64 20  .** extends and 
10460 74 72 75 6e 63 61 74 65 73 20 74 68 65 20 64 61  truncates the da
10470 74 61 62 61 73 65 20 66 69 6c 65 20 69 6e 20 63  tabase file in c
10480 68 75 6e 6b 73 20 6f 66 20 61 20 73 69 7a 65 20  hunks of a size 
10490 73 70 65 63 69 66 69 65 64 0a 2a 2a 20 62 79 20  specified.** by 
104a0 74 68 65 20 75 73 65 72 2e 20 54 68 65 20 66 6f  the user. The fo
104b0 75 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f  urth argument to
104c0 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63   [sqlite3_file_c
104d0 6f 6e 74 72 6f 6c 28 29 5d 20 73 68 6f 75 6c 64  ontrol()] should
104e0 20 0a 2a 2a 20 70 6f 69 6e 74 20 74 6f 20 61 6e   .** point to an
104f0 20 69 6e 74 65 67 65 72 20 28 74 79 70 65 20 69   integer (type i
10500 6e 74 29 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  nt) containing t
10510 68 65 20 6e 65 77 20 63 68 75 6e 6b 2d 73 69 7a  he new chunk-siz
10520 65 20 74 6f 20 75 73 65 0a 2a 2a 20 66 6f 72 20  e to use.** for 
10530 74 68 65 20 6e 6f 6d 69 6e 61 74 65 64 20 64 61  the nominated da
10540 74 61 62 61 73 65 2e 20 41 6c 6c 6f 63 61 74 69  tabase. Allocati
10550 6e 67 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ng database file
10560 20 73 70 61 63 65 20 69 6e 20 6c 61 72 67 65 0a   space in large.
10570 2a 2a 20 63 68 75 6e 6b 73 20 28 73 61 79 20 31  ** chunks (say 1
10580 4d 42 20 61 74 20 61 20 74 69 6d 65 29 2c 20 6d  MB at a time), m
10590 61 79 20 72 65 64 75 63 65 20 66 69 6c 65 2d 73  ay reduce file-s
105a0 79 73 74 65 6d 20 66 72 61 67 6d 65 6e 74 61 74  ystem fragmentat
105b0 69 6f 6e 20 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f  ion and.** impro
105c0 76 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f  ve performance o
105d0 6e 20 73 6f 6d 65 20 73 79 73 74 65 6d 73 2e 0a  n some systems..
105e0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
105f0 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
10600 49 4e 54 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b  INTER]].** The [
10610 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c  SQLITE_FCNTL_FIL
10620 45 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64  E_POINTER] opcod
10630 65 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74  e is used to obt
10640 61 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a  ain a pointer.**
10650 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
10660 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73  _file] object as
10670 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20  sociated with a 
10680 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
10690 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
106a0 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51  n.  See also [SQ
106b0 4c 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e  LITE_FCNTL_JOURN
106c0 41 4c 5f 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a  AL_POINTER]..**.
106d0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
106e0 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f  FCNTL_JOURNAL_PO
106f0 49 4e 54 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b  INTER]].** The [
10700 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55  SQLITE_FCNTL_JOU
10710 52 4e 41 4c 5f 50 4f 49 4e 54 45 52 5d 20 6f 70  RNAL_POINTER] op
10720 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
10730 6f 62 74 61 69 6e 20 61 20 70 6f 69 6e 74 65 72  obtain a pointer
10740 0a 2a 2a 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  .** to the [sqli
10750 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74  te3_file] object
10760 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
10770 20 74 68 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c   the journal fil
10780 65 20 28 65 69 74 68 65 72 0a 2a 2a 20 74 68 65  e (either.** the
10790 20 5b 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e   [rollback journ
107a0 61 6c 5d 20 6f 72 20 74 68 65 20 5b 77 72 69 74  al] or the [writ
107b0 65 2d 61 68 65 61 64 20 6c 6f 67 5d 29 20 66 6f  e-ahead log]) fo
107c0 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 64  r a particular d
107d0 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65  atabase.** conne
107e0 63 74 69 6f 6e 2e 20 20 53 65 65 20 61 6c 73 6f  ction.  See also
107f0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 46   [SQLITE_FCNTL_F
10800 49 4c 45 5f 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a  ILE_POINTER]..**
10810 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
10820 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54  _FCNTL_SYNC_OMIT
10830 54 45 44 5d 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67  TED]].** No long
10840 65 72 20 69 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a  er in use..**.**
10850 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
10860 4e 54 4c 5f 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68  NTL_SYNC]].** Th
10870 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
10880 53 59 4e 43 5d 20 6f 70 63 6f 64 65 20 69 73 20  SYNC] opcode is 
10890 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72 6e  generated intern
108a0 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 20 61  ally by SQLite a
108b0 6e 64 0a 2a 2a 20 73 65 6e 74 20 74 6f 20 74 68  nd.** sent to th
108c0 65 20 56 46 53 20 69 6d 6d 65 64 69 61 74 65 6c  e VFS immediatel
108d0 79 20 62 65 66 6f 72 65 20 74 68 65 20 78 53 79  y before the xSy
108e0 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76  nc method is inv
108f0 6f 6b 65 64 20 6f 6e 20 61 0a 2a 2a 20 64 61 74  oked on a.** dat
10900 61 62 61 73 65 20 66 69 6c 65 20 64 65 73 63 72  abase file descr
10910 69 70 74 6f 72 2e 20 4f 72 2c 20 69 66 20 74 68  iptor. Or, if th
10920 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 20 69  e xSync method i
10930 73 20 6e 6f 74 20 69 6e 76 6f 6b 65 64 20 0a 2a  s not invoked .*
10940 2a 20 62 65 63 61 75 73 65 20 74 68 65 20 75 73  * because the us
10950 65 72 20 68 61 73 20 63 6f 6e 66 69 67 75 72 65  er has configure
10960 64 20 53 51 4c 69 74 65 20 77 69 74 68 20 0a 2a  d SQLite with .*
10970 2a 20 5b 50 52 41 47 4d 41 20 73 79 6e 63 68 72  * [PRAGMA synchr
10980 6f 6e 6f 75 73 20 7c 20 50 52 41 47 4d 41 20 73  onous | PRAGMA s
10990 79 6e 63 68 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20  ynchronous=OFF] 
109a0 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 69 6e  it is invoked in
109b0 20 70 6c 61 63 65 20 0a 2a 2a 20 6f 66 20 74 68   place .** of th
109c0 65 20 78 53 79 6e 63 20 6d 65 74 68 6f 64 2e 20  e xSync method. 
109d0 49 6e 20 6d 6f 73 74 20 63 61 73 65 73 2c 20 74  In most cases, t
109e0 68 65 20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d  he pointer argum
109f0 65 6e 74 20 70 61 73 73 65 64 20 77 69 74 68 0a  ent passed with.
10a00 2a 2a 20 74 68 69 73 20 66 69 6c 65 2d 63 6f 6e  ** this file-con
10a10 74 72 6f 6c 20 69 73 20 4e 55 4c 4c 2e 20 48 6f  trol is NULL. Ho
10a20 77 65 76 65 72 2c 20 69 66 20 74 68 65 20 64 61  wever, if the da
10a30 74 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 62  tabase file is b
10a40 65 69 6e 67 20 73 79 6e 63 65 64 0a 2a 2a 20 61  eing synced.** a
10a50 73 20 70 61 72 74 20 6f 66 20 61 20 6d 75 6c 74  s part of a mult
10a60 69 2d 64 61 74 61 62 61 73 65 20 63 6f 6d 6d 69  i-database commi
10a70 74 2c 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20  t, the argument 
10a80 70 6f 69 6e 74 73 20 74 6f 20 61 20 6e 75 6c 2d  points to a nul-
10a90 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74  terminated.** st
10aa0 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ring containing 
10ab0 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  the transactions
10ac0 20 6d 61 73 74 65 72 2d 6a 6f 75 72 6e 61 6c 20   master-journal 
10ad0 66 69 6c 65 20 6e 61 6d 65 2e 20 56 46 53 65 73  file name. VFSes
10ae0 20 74 68 61 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74   that .** do not
10af0 20 6e 65 65 64 20 74 68 69 73 20 73 69 67 6e 61   need this signa
10b00 6c 20 73 68 6f 75 6c 64 20 73 69 6c 65 6e 74 6c  l should silentl
10b10 79 20 69 67 6e 6f 72 65 20 74 68 69 73 20 6f 70  y ignore this op
10b20 63 6f 64 65 2e 20 41 70 70 6c 69 63 61 74 69 6f  code. Applicatio
10b30 6e 73 20 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f  ns .** should no
10b40 74 20 63 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f  t call [sqlite3_
10b50 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20  file_control()] 
10b60 77 69 74 68 20 74 68 69 73 20 6f 70 63 6f 64 65  with this opcode
10b70 20 61 73 20 64 6f 69 6e 67 20 73 6f 20 6d 61 79   as doing so may
10b80 20 0a 2a 2a 20 64 69 73 72 75 70 74 20 74 68 65   .** disrupt the
10b90 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68   operation of th
10ba0 65 20 73 70 65 63 69 61 6c 69 7a 65 64 20 56 46  e specialized VF
10bb0 53 65 73 20 74 68 61 74 20 64 6f 20 72 65 71 75  Ses that do requ
10bc0 69 72 65 20 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20  ire it.  .**.** 
10bd0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
10be0 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41 53 45 54  TL_COMMIT_PHASET
10bf0 57 4f 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  WO]].** The [SQL
10c00 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
10c10 5f 50 48 41 53 45 54 57 4f 5d 20 6f 70 63 6f 64  _PHASETWO] opcod
10c20 65 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 69  e is generated i
10c30 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20 53 51 4c  nternally by SQL
10c40 69 74 65 0a 2a 2a 20 61 6e 64 20 73 65 6e 74 20  ite.** and sent 
10c50 74 6f 20 74 68 65 20 56 46 53 20 61 66 74 65 72  to the VFS after
10c60 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 68   a transaction h
10c70 61 73 20 62 65 65 6e 20 63 6f 6d 6d 69 74 74 65  as been committe
10c80 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a  d immediately.**
10c90 20 62 75 74 20 62 65 66 6f 72 65 20 74 68 65 20   but before the 
10ca0 64 61 74 61 62 61 73 65 20 69 73 20 75 6e 6c 6f  database is unlo
10cb0 63 6b 65 64 2e 20 56 46 53 65 73 20 74 68 61 74  cked. VFSes that
10cc0 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 68 69   do not need thi
10cd0 73 20 73 69 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75  s signal.** shou
10ce0 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f  ld silently igno
10cf0 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 20  re this opcode. 
10d00 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f  Applications sho
10d10 75 6c 64 20 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20  uld not call.** 
10d20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f  [sqlite3_file_co
10d30 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68 20 74 68  ntrol()] with th
10d40 69 73 20 6f 70 63 6f 64 65 20 61 73 20 64 6f 69  is opcode as doi
10d50 6e 67 20 73 6f 20 6d 61 79 20 64 69 73 72 75 70  ng so may disrup
10d60 74 20 74 68 65 20 0a 2a 2a 20 6f 70 65 72 61 74  t the .** operat
10d70 69 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69  ion of the speci
10d80 61 6c 69 7a 65 64 20 56 46 53 65 73 20 74 68 61  alized VFSes tha
10d90 74 20 64 6f 20 72 65 71 75 69 72 65 20 69 74 2e  t do require it.
10da0 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53    .**.** <li>[[S
10db0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
10dc0 32 5f 41 56 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20  2_AV_RETRY]].** 
10dd0 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e  ^The [SQLITE_FCN
10de0 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54 52  TL_WIN32_AV_RETR
10df0 59 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  Y] opcode is use
10e00 64 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 61  d to configure a
10e10 75 74 6f 6d 61 74 69 63 0a 2a 2a 20 72 65 74 72  utomatic.** retr
10e20 79 20 63 6f 75 6e 74 73 20 61 6e 64 20 69 6e 74  y counts and int
10e30 65 72 76 61 6c 73 20 66 6f 72 20 63 65 72 74 61  ervals for certa
10e40 69 6e 20 64 69 73 6b 20 49 2f 4f 20 6f 70 65 72  in disk I/O oper
10e50 61 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 0a 2a  ations for the.*
10e60 2a 20 77 69 6e 64 6f 77 73 20 5b 56 46 53 5d 20  * windows [VFS] 
10e70 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 76  in order to prov
10e80 69 64 65 20 72 6f 62 75 73 74 6e 65 73 73 20 69  ide robustness i
10e90 6e 20 74 68 65 20 70 72 65 73 65 6e 63 65 20 6f  n the presence o
10ea0 66 0a 2a 2a 20 61 6e 74 69 2d 76 69 72 75 73 20  f.** anti-virus 
10eb0 70 72 6f 67 72 61 6d 73 2e 20 20 42 79 20 64 65  programs.  By de
10ec0 66 61 75 6c 74 2c 20 74 68 65 20 77 69 6e 64 6f  fault, the windo
10ed0 77 73 20 56 46 53 20 77 69 6c 6c 20 72 65 74 72  ws VFS will retr
10ee0 79 20 66 69 6c 65 20 72 65 61 64 2c 0a 2a 2a 20  y file read,.** 
10ef0 66 69 6c 65 20 77 72 69 74 65 2c 20 61 6e 64 20  file write, and 
10f00 66 69 6c 65 20 64 65 6c 65 74 65 20 6f 70 65 72  file delete oper
10f10 61 74 69 6f 6e 73 20 75 70 20 74 6f 20 31 30 20  ations up to 10 
10f20 74 69 6d 65 73 2c 20 77 69 74 68 20 61 20 64 65  times, with a de
10f30 6c 61 79 0a 2a 2a 20 6f 66 20 32 35 20 6d 69 6c  lay.** of 25 mil
10f40 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72 65  liseconds before
10f50 20 74 68 65 20 66 69 72 73 74 20 72 65 74 72 79   the first retry
10f60 20 61 6e 64 20 77 69 74 68 20 74 68 65 20 64 65   and with the de
10f70 6c 61 79 20 69 6e 63 72 65 61 73 69 6e 67 0a 2a  lay increasing.*
10f80 2a 20 62 79 20 61 6e 20 61 64 64 69 74 69 6f 6e  * by an addition
10f90 61 6c 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e  al 25 millisecon
10fa0 64 73 20 77 69 74 68 20 65 61 63 68 20 73 75 62  ds with each sub
10fb0 73 65 71 75 65 6e 74 20 72 65 74 72 79 2e 20 20  sequent retry.  
10fc0 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 61  This.** opcode a
10fd0 6c 6c 6f 77 73 20 74 68 65 73 65 20 74 77 6f 20  llows these two 
10fe0 76 61 6c 75 65 73 20 28 31 30 20 72 65 74 72 69  values (10 retri
10ff0 65 73 20 61 6e 64 20 32 35 20 6d 69 6c 6c 69 73  es and 25 millis
11000 65 63 6f 6e 64 73 20 6f 66 20 64 65 6c 61 79 29  econds of delay)
11010 0a 2a 2a 20 74 6f 20 62 65 20 61 64 6a 75 73 74  .** to be adjust
11020 65 64 2e 20 20 54 68 65 20 76 61 6c 75 65 73 20  ed.  The values 
11030 61 72 65 20 63 68 61 6e 67 65 64 20 66 6f 72 20  are changed for 
11040 61 6c 6c 20 64 61 74 61 62 61 73 65 20 63 6f 6e  all database con
11050 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68  nections.** with
11060 69 6e 20 74 68 65 20 73 61 6d 65 20 70 72 6f 63  in the same proc
11070 65 73 73 2e 20 20 54 68 65 20 61 72 67 75 6d 65  ess.  The argume
11080 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
11090 74 6f 20 61 6e 20 61 72 72 61 79 20 6f 66 20 74  to an array of t
110a0 77 6f 0a 2a 2a 20 69 6e 74 65 67 65 72 73 20 77  wo.** integers w
110b0 68 65 72 65 20 74 68 65 20 66 69 72 73 74 20 69  here the first i
110c0 6e 74 65 67 65 72 20 69 73 20 74 68 65 20 6e 65  nteger is the ne
110d0 77 20 72 65 74 72 79 20 63 6f 75 6e 74 20 61 6e  w retry count an
110e0 64 20 74 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20  d the second.** 
110f0 69 6e 74 65 67 65 72 20 69 73 20 74 68 65 20 64  integer is the d
11100 65 6c 61 79 2e 20 20 49 66 20 65 69 74 68 65 72  elay.  If either
11110 20 69 6e 74 65 67 65 72 20 69 73 20 6e 65 67 61   integer is nega
11120 74 69 76 65 2c 20 74 68 65 6e 20 74 68 65 20 73  tive, then the s
11130 65 74 74 69 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74  etting.** is not
11140 20 63 68 61 6e 67 65 64 20 62 75 74 20 69 6e 73   changed but ins
11150 74 65 61 64 20 74 68 65 20 70 72 69 6f 72 20 76  tead the prior v
11160 61 6c 75 65 20 6f 66 20 74 68 61 74 20 73 65 74  alue of that set
11170 74 69 6e 67 20 69 73 20 77 72 69 74 74 65 6e 0a  ting is written.
11180 2a 2a 20 69 6e 74 6f 20 74 68 65 20 61 72 72 61  ** into the arra
11190 79 20 65 6e 74 72 79 2c 20 61 6c 6c 6f 77 69 6e  y entry, allowin
111a0 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72 65  g the current re
111b0 74 72 79 20 73 65 74 74 69 6e 67 73 20 74 6f 20  try settings to 
111c0 62 65 0a 2a 2a 20 69 6e 74 65 72 72 6f 67 61 74  be.** interrogat
111d0 65 64 2e 20 20 54 68 65 20 7a 44 62 4e 61 6d 65  ed.  The zDbName
111e0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 69 67   parameter is ig
111f0 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  nored..**.** <li
11200 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
11210 50 45 52 53 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a  PERSIST_WAL]].**
11220 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
11230 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57 41 4c 5d  NTL_PERSIST_WAL]
11240 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20   opcode is used 
11250 74 6f 20 73 65 74 20 6f 72 20 71 75 65 72 79 20  to set or query 
11260 74 68 65 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e  the.** persisten
11270 74 20 5b 57 41 4c 20 7c 20 57 72 69 74 65 20 41  t [WAL | Write A
11280 68 65 61 64 20 4c 6f 67 5d 20 73 65 74 74 69 6e  head Log] settin
11290 67 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20  g.  By default, 
112a0 74 68 65 20 61 75 78 69 6c 69 61 72 79 0a 2a 2a  the auxiliary.**
112b0 20 77 72 69 74 65 20 61 68 65 61 64 20 6c 6f 67   write ahead log
112c0 20 61 6e 64 20 73 68 61 72 65 64 20 6d 65 6d 6f   and shared memo
112d0 72 79 20 66 69 6c 65 73 20 75 73 65 64 20 66 6f  ry files used fo
112e0 72 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f  r transaction co
112f0 6e 74 72 6f 6c 0a 2a 2a 20 61 72 65 20 61 75 74  ntrol.** are aut
11300 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65 74  omatically delet
11310 65 64 20 77 68 65 6e 20 74 68 65 20 6c 61 74 65  ed when the late
11320 73 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f  st connection to
11330 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a   the database.**
11340 20 63 6c 6f 73 65 73 2e 20 20 53 65 74 74 69 6e   closes.  Settin
11350 67 20 70 65 72 73 69 73 74 65 6e 74 20 57 41 4c  g persistent WAL
11360 20 6d 6f 64 65 20 63 61 75 73 65 73 20 74 68 6f   mode causes tho
11370 73 65 20 66 69 6c 65 73 20 74 6f 20 70 65 72 73  se files to pers
11380 69 73 74 20 61 66 74 65 72 0a 2a 2a 20 63 6c 6f  ist after.** clo
11390 73 65 2e 20 20 50 65 72 73 69 73 74 69 6e 67 20  se.  Persisting 
113a0 74 68 65 20 66 69 6c 65 73 20 69 73 20 75 73 65  the files is use
113b0 66 75 6c 20 77 68 65 6e 20 6f 74 68 65 72 20 70  ful when other p
113c0 72 6f 63 65 73 73 65 73 20 74 68 61 74 20 64 6f  rocesses that do
113d0 20 6e 6f 74 0a 2a 2a 20 68 61 76 65 20 77 72 69   not.** have wri
113e0 74 65 20 70 65 72 6d 69 73 73 69 6f 6e 20 6f 6e  te permission on
113f0 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 63   the directory c
11400 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 64 61  ontaining the da
11410 74 61 62 61 73 65 20 66 69 6c 65 20 77 61 6e 74  tabase file want
11420 0a 2a 2a 20 74 6f 20 72 65 61 64 20 74 68 65 20  .** to read the 
11430 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 61  database file, a
11440 73 20 74 68 65 20 57 41 4c 20 61 6e 64 20 73 68  s the WAL and sh
11450 61 72 65 64 20 6d 65 6d 6f 72 79 20 66 69 6c 65  ared memory file
11460 73 20 6d 75 73 74 20 65 78 69 73 74 0a 2a 2a 20  s must exist.** 
11470 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68 65  in order for the
11480 20 64 61 74 61 62 61 73 65 20 74 6f 20 62 65 20   database to be 
11490 72 65 61 64 61 62 6c 65 2e 20 20 54 68 65 20 66  readable.  The f
114a0 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
114b0 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  to.** [sqlite3_f
114c0 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 66  ile_control()] f
114d0 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 20 73  or this opcode s
114e0 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69 6e 74  hould be a point
114f0 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
11500 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65 67 65  ..** That intege
11510 72 20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c  r is 0 to disabl
11520 65 20 70 65 72 73 69 73 74 65 6e 74 20 57 41 4c  e persistent WAL
11530 20 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e   mode or 1 to en
11540 61 62 6c 65 20 70 65 72 73 69 73 74 65 6e 74 0a  able persistent.
11550 2a 2a 20 57 41 4c 20 6d 6f 64 65 2e 20 20 49 66  ** WAL mode.  If
11560 20 74 68 65 20 69 6e 74 65 67 65 72 20 69 73 20   the integer is 
11570 2d 31 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6f  -1, then it is o
11580 76 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 20  verwritten with 
11590 74 68 65 20 63 75 72 72 65 6e 74 0a 2a 2a 20 57  the current.** W
115a0 41 4c 20 70 65 72 73 69 73 74 65 6e 63 65 20 73  AL persistence s
115b0 65 74 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  etting..**.** <l
115c0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
115d0 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
115e0 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b  RITE]].** ^The [
115f0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57  SQLITE_FCNTL_POW
11600 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
11610 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
11620 20 74 6f 20 73 65 74 20 6f 72 20 71 75 65 72 79   to set or query
11630 20 74 68 65 0a 2a 2a 20 70 65 72 73 69 73 74 65   the.** persiste
11640 6e 74 20 22 70 6f 77 65 72 73 61 66 65 2d 6f 76  nt "powersafe-ov
11650 65 72 77 72 69 74 65 22 20 6f 72 20 22 50 53 4f  erwrite" or "PSO
11660 57 22 20 73 65 74 74 69 6e 67 2e 20 20 54 68 65  W" setting.  The
11670 20 50 53 4f 57 20 73 65 74 74 69 6e 67 0a 2a 2a   PSOW setting.**
11680 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 65 20   determines the 
11690 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f  [SQLITE_IOCAP_PO
116a0 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
116b0 45 5d 20 62 69 74 20 6f 66 20 74 68 65 0a 2a 2a  E] bit of the.**
116c0 20 78 44 65 76 69 63 65 43 68 61 72 61 63 74 65   xDeviceCharacte
116d0 72 69 73 74 69 63 73 20 6d 65 74 68 6f 64 73 2e  ristics methods.
116e0 20 54 68 65 20 66 6f 75 72 74 68 20 70 61 72 61   The fourth para
116f0 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c  meter to.** [sql
11700 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
11710 6c 28 29 5d 20 66 6f 72 20 74 68 69 73 20 6f 70  l()] for this op
11720 63 6f 64 65 20 73 68 6f 75 6c 64 20 62 65 20 61  code should be a
11730 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
11740 6e 74 65 67 65 72 2e 0a 2a 2a 20 54 68 61 74 20  nteger..** That 
11750 69 6e 74 65 67 65 72 20 69 73 20 30 20 74 6f 20  integer is 0 to 
11760 64 69 73 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d  disable zero-dam
11770 61 67 65 20 6d 6f 64 65 20 6f 72 20 31 20 74 6f  age mode or 1 to
11780 20 65 6e 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d   enable zero-dam
11790 61 67 65 0a 2a 2a 20 6d 6f 64 65 2e 20 20 49 66  age.** mode.  If
117a0 20 74 68 65 20 69 6e 74 65 67 65 72 20 69 73 20   the integer is 
117b0 2d 31 2c 20 74 68 65 6e 20 69 74 20 69 73 20 6f  -1, then it is o
117c0 76 65 72 77 72 69 74 74 65 6e 20 77 69 74 68 20  verwritten with 
117d0 74 68 65 20 63 75 72 72 65 6e 74 0a 2a 2a 20 7a  the current.** z
117e0 65 72 6f 2d 64 61 6d 61 67 65 20 6d 6f 64 65 20  ero-damage mode 
117f0 73 65 74 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c  setting..**.** <
11800 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
11810 4c 5f 4f 56 45 52 57 52 49 54 45 5d 5d 0a 2a 2a  L_OVERWRITE]].**
11820 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
11830 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f  NTL_OVERWRITE] o
11840 70 63 6f 64 65 20 69 73 20 69 6e 76 6f 6b 65 64  pcode is invoked
11850 20 62 79 20 53 51 4c 69 74 65 20 61 66 74 65 72   by SQLite after
11860 20 6f 70 65 6e 69 6e 67 0a 2a 2a 20 61 20 77 72   opening.** a wr
11870 69 74 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ite transaction 
11880 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
11890 2c 20 75 6e 6c 65 73 73 20 69 74 20 69 73 20 72  , unless it is r
118a0 6f 6c 6c 65 64 20 62 61 63 6b 20 66 6f 72 20 73  olled back for s
118b0 6f 6d 65 0a 2a 2a 20 72 65 61 73 6f 6e 2c 20 74  ome.** reason, t
118c0 68 65 20 65 6e 74 69 72 65 20 64 61 74 61 62 61  he entire databa
118d0 73 65 20 66 69 6c 65 20 77 69 6c 6c 20 62 65 20  se file will be 
118e0 6f 76 65 72 77 72 69 74 74 65 6e 20 62 79 20 74  overwritten by t
118f0 68 65 20 63 75 72 72 65 6e 74 20 0a 2a 2a 20 74  he current .** t
11900 72 61 6e 73 61 63 74 69 6f 6e 2e 20 54 68 69 73  ransaction. This
11910 20 69 73 20 75 73 65 64 20 62 79 20 56 41 43 55   is used by VACU
11920 55 4d 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a  UM operations..*
11930 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
11940 45 5f 46 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d  E_FCNTL_VFSNAME]
11950 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54  ].** ^The [SQLIT
11960 45 5f 46 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d  E_FCNTL_VFSNAME]
11970 20 6f 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75   opcode can be u
11980 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68  sed to obtain th
11990 65 20 6e 61 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c  e names of.** al
119a0 6c 20 5b 56 46 53 65 73 5d 20 69 6e 20 74 68 65  l [VFSes] in the
119b0 20 56 46 53 20 73 74 61 63 6b 2e 20 20 54 68 65   VFS stack.  The
119c0 20 6e 61 6d 65 73 20 61 72 65 20 6f 66 20 61 6c   names are of al
119d0 6c 20 56 46 53 20 73 68 69 6d 73 20 61 6e 64 20  l VFS shims and 
119e0 74 68 65 0a 2a 2a 20 66 69 6e 61 6c 20 62 6f 74  the.** final bot
119f0 74 6f 6d 2d 6c 65 76 65 6c 20 56 46 53 20 61 72  tom-level VFS ar
11a00 65 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d  e written into m
11a10 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
11a20 72 6f 6d 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  rom .** [sqlite3
11a30 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 74  _malloc()] and t
11a40 68 65 20 72 65 73 75 6c 74 20 69 73 20 73 74 6f  he result is sto
11a50 72 65 64 20 69 6e 20 74 68 65 20 63 68 61 72 2a  red in the char*
11a60 20 76 61 72 69 61 62 6c 65 0a 2a 2a 20 74 68 61   variable.** tha
11a70 74 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72  t the fourth par
11a80 61 6d 65 74 65 72 20 6f 66 20 5b 73 71 6c 69 74  ameter of [sqlit
11a90 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
11aa0 29 5d 20 70 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a  )] points to..**
11ab0 20 54 68 65 20 63 61 6c 6c 65 72 20 69 73 20 72   The caller is r
11ac0 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 66  esponsible for f
11ad0 72 65 65 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72  reeing the memor
11ae0 79 20 77 68 65 6e 20 64 6f 6e 65 2e 20 20 41 73  y when done.  As
11af0 20 77 69 74 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c   with.** all fil
11b00 65 2d 63 6f 6e 74 72 6f 6c 20 61 63 74 69 6f 6e  e-control action
11b10 73 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 67  s, there is no g
11b20 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68  uarantee that th
11b30 69 73 20 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79  is will actually
11b40 0a 2a 2a 20 64 6f 20 61 6e 79 74 68 69 6e 67 2e  .** do anything.
11b50 20 20 43 61 6c 6c 65 72 73 20 73 68 6f 75 6c 64    Callers should
11b60 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20   initialize the 
11b70 63 68 61 72 2a 20 76 61 72 69 61 62 6c 65 20 74  char* variable t
11b80 6f 20 61 20 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e  o a NULL.** poin
11b90 74 65 72 20 69 6e 20 63 61 73 65 20 74 68 69 73  ter in case this
11ba0 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 20 69 73   file-control is
11bb0 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64   not implemented
11bc0 2e 20 20 54 68 69 73 20 66 69 6c 65 2d 63 6f 6e  .  This file-con
11bd0 74 72 6f 6c 0a 2a 2a 20 69 73 20 69 6e 74 65 6e  trol.** is inten
11be0 64 65 64 20 66 6f 72 20 64 69 61 67 6e 6f 73 74  ded for diagnost
11bf0 69 63 20 75 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a  ic use only..**.
11c00 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
11c10 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
11c20 52 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  R]].** ^The [SQL
11c30 49 54 45 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f  ITE_FCNTL_VFS_PO
11c40 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 66 69  INTER] opcode fi
11c50 6e 64 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  nds a pointer to
11c60 20 74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a   the top-level.*
11c70 2a 20 5b 56 46 53 65 73 5d 20 63 75 72 72 65 6e  * [VFSes] curren
11c80 74 6c 79 20 69 6e 20 75 73 65 2e 20 20 5e 28 54  tly in use.  ^(T
11c90 68 65 20 61 72 67 75 6d 65 6e 74 20 58 20 69 6e  he argument X in
11ca0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  .** sqlite3_file
11cb0 5f 63 6f 6e 74 72 6f 6c 28 64 62 2c 53 51 4c 49  _control(db,SQLI
11cc0 54 45 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49  TE_FCNTL_VFS_POI
11cd0 4e 54 45 52 2c 58 29 20 6d 75 73 74 20 62 65 0a  NTER,X) must be.
11ce0 2a 2a 20 6f 66 20 74 79 70 65 20 22 5b 73 71 6c  ** of type "[sql
11cf0 69 74 65 33 5f 76 66 73 5d 20 2a 2a 22 2e 20 20  ite3_vfs] **".  
11d00 54 68 69 73 20 6f 70 63 6f 64 65 73 20 77 69 6c  This opcodes wil
11d10 6c 20 73 65 74 20 2a 58 0a 2a 2a 20 74 6f 20 61  l set *X.** to a
11d20 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
11d30 74 6f 70 2d 6c 65 76 65 6c 20 56 46 53 2e 29 5e  top-level VFS.)^
11d40 0a 2a 2a 20 5e 57 68 65 6e 20 74 68 65 72 65 20  .** ^When there 
11d50 61 72 65 20 6d 75 6c 74 69 70 6c 65 20 56 46 53  are multiple VFS
11d60 20 73 68 69 6d 73 20 69 6e 20 74 68 65 20 73 74   shims in the st
11d70 61 63 6b 2c 20 74 68 69 73 20 6f 70 63 6f 64 65  ack, this opcode
11d80 20 66 69 6e 64 73 20 74 68 65 0a 2a 2a 20 75 70   finds the.** up
11d90 70 65 72 2d 6d 6f 73 74 20 73 68 69 6d 20 6f 6e  per-most shim on
11da0 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ly..**.** <li>[[
11db0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41  SQLITE_FCNTL_PRA
11dc0 47 4d 41 5d 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76  GMA]].** ^Whenev
11dd0 65 72 20 61 20 5b 50 52 41 47 4d 41 5d 20 73 74  er a [PRAGMA] st
11de0 61 74 65 6d 65 6e 74 20 69 73 20 70 61 72 73 65  atement is parse
11df0 64 2c 20 61 6e 20 5b 53 51 4c 49 54 45 5f 46 43  d, an [SQLITE_FC
11e00 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 0a 2a 2a 20  NTL_PRAGMA] .** 
11e10 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20  file control is 
11e20 73 65 6e 74 20 74 6f 20 74 68 65 20 6f 70 65 6e  sent to the open
11e30 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
11e40 6f 62 6a 65 63 74 20 63 6f 72 72 65 73 70 6f 6e  object correspon
11e50 64 69 6e 67 0a 2a 2a 20 74 6f 20 74 68 65 20 64  ding.** to the d
11e60 61 74 61 62 61 73 65 20 66 69 6c 65 20 74 6f 20  atabase file to 
11e70 77 68 69 63 68 20 74 68 65 20 70 72 61 67 6d 61  which the pragma
11e80 20 73 74 61 74 65 6d 65 6e 74 20 72 65 66 65 72   statement refer
11e90 73 2e 20 5e 54 68 65 20 61 72 67 75 6d 65 6e 74  s. ^The argument
11ea0 0a 2a 2a 20 74 6f 20 74 68 65 20 5b 53 51 4c 49  .** to the [SQLI
11eb0 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
11ec0 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73   file control is
11ed0 20 61 6e 20 61 72 72 61 79 20 6f 66 0a 2a 2a 20   an array of.** 
11ee0 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69  pointers to stri
11ef0 6e 67 73 20 28 63 68 61 72 2a 2a 29 20 69 6e 20  ngs (char**) in 
11f00 77 68 69 63 68 20 74 68 65 20 73 65 63 6f 6e 64  which the second
11f10 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20   element of the 
11f20 61 72 72 61 79 0a 2a 2a 20 69 73 20 74 68 65 20  array.** is the 
11f30 6e 61 6d 65 20 6f 66 20 74 68 65 20 70 72 61 67  name of the prag
11f40 6d 61 20 61 6e 64 20 74 68 65 20 74 68 69 72 64  ma and the third
11f50 20 65 6c 65 6d 65 6e 74 20 69 73 20 74 68 65 20   element is the 
11f60 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 0a  argument to the.
11f70 2a 2a 20 70 72 61 67 6d 61 20 6f 72 20 4e 55 4c  ** pragma or NUL
11f80 4c 20 69 66 20 74 68 65 20 70 72 61 67 6d 61 20  L if the pragma 
11f90 68 61 73 20 6e 6f 20 61 72 67 75 6d 65 6e 74 2e  has no argument.
11fa0 20 20 5e 54 68 65 20 68 61 6e 64 6c 65 72 20 66    ^The handler f
11fb0 6f 72 20 61 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45  or an.** [SQLITE
11fc0 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66  _FCNTL_PRAGMA] f
11fd0 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 63 61 6e 20  ile control can 
11fe0 6f 70 74 69 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20  optionally make 
11ff0 74 68 65 20 66 69 72 73 74 20 65 6c 65 6d 65 6e  the first elemen
12000 74 0a 2a 2a 20 6f 66 20 74 68 65 20 63 68 61 72  t.** of the char
12010 2a 2a 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e  ** argument poin
12020 74 20 74 6f 20 61 20 73 74 72 69 6e 67 20 6f 62  t to a string ob
12030 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c  tained from [sql
12040 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 5d 0a  ite3_mprintf()].
12050 2a 2a 20 6f 72 20 74 68 65 20 65 71 75 69 76 61  ** or the equiva
12060 6c 65 6e 74 20 61 6e 64 20 74 68 61 74 20 73 74  lent and that st
12070 72 69 6e 67 20 77 69 6c 6c 20 62 65 63 6f 6d 65  ring will become
12080 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74   the result of t
12090 68 65 20 70 72 61 67 6d 61 20 6f 72 0a 2a 2a 20  he pragma or.** 
120a0 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
120b0 65 20 69 66 20 74 68 65 20 70 72 61 67 6d 61 20  e if the pragma 
120c0 66 61 69 6c 73 2e 20 5e 49 66 20 74 68 65 0a 2a  fails. ^If the.*
120d0 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  * [SQLITE_FCNTL_
120e0 50 52 41 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e  PRAGMA] file con
120f0 74 72 6f 6c 20 72 65 74 75 72 6e 73 20 5b 53 51  trol returns [SQ
12100 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20  LITE_NOTFOUND], 
12110 74 68 65 6e 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20  then normal .** 
12120 5b 50 52 41 47 4d 41 5d 20 70 72 6f 63 65 73 73  [PRAGMA] process
12130 69 6e 67 20 63 6f 6e 74 69 6e 75 65 73 2e 20 20  ing continues.  
12140 5e 49 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ^If the [SQLITE_
12150 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a  FCNTL_PRAGMA].**
12160 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65   file control re
12170 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b  turns [SQLITE_OK
12180 5d 2c 20 74 68 65 6e 20 74 68 65 20 70 61 72 73  ], then the pars
12190 65 72 20 61 73 73 75 6d 65 73 20 74 68 61 74 20  er assumes that 
121a0 74 68 65 0a 2a 2a 20 56 46 53 20 68 61 73 20 68  the.** VFS has h
121b0 61 6e 64 6c 65 64 20 74 68 65 20 50 52 41 47 4d  andled the PRAGM
121c0 41 20 69 74 73 65 6c 66 20 61 6e 64 20 74 68 65  A itself and the
121d0 20 70 61 72 73 65 72 20 67 65 6e 65 72 61 74 65   parser generate
121e0 73 20 61 20 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65  s a no-op.** pre
121f0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
12200 69 66 20 72 65 73 75 6c 74 20 73 74 72 69 6e 67  if result string
12210 20 69 73 20 4e 55 4c 4c 2c 20 6f 72 20 74 68 61   is NULL, or tha
12220 74 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  t returns a copy
12230 0a 2a 2a 20 6f 66 20 74 68 65 20 72 65 73 75 6c  .** of the resul
12240 74 20 73 74 72 69 6e 67 20 69 66 20 74 68 65 20  t string if the 
12250 73 74 72 69 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55  string is non-NU
12260 4c 4c 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b  LL..** ^If the [
12270 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41  SQLITE_FCNTL_PRA
12280 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  GMA] file contro
12290 6c 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 6e 79  l returns.** any
122a0 20 72 65 73 75 6c 74 20 63 6f 64 65 20 6f 74 68   result code oth
122b0 65 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f  er than [SQLITE_
122c0 4f 4b 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4e  OK] or [SQLITE_N
122d0 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 61 74 20 6d  OTFOUND], that m
122e0 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20 74 68 65  eans.** that the
122f0 20 56 46 53 20 65 6e 63 6f 75 6e 74 65 72 65 64   VFS encountered
12300 20 61 6e 20 65 72 72 6f 72 20 77 68 69 6c 65 20   an error while 
12310 68 61 6e 64 6c 69 6e 67 20 74 68 65 20 5b 50 52  handling the [PR
12320 41 47 4d 41 5d 20 61 6e 64 20 74 68 65 0a 2a 2a  AGMA] and the.**
12330 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20   compilation of 
12340 74 68 65 20 50 52 41 47 4d 41 20 66 61 69 6c 73  the PRAGMA fails
12350 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 20   with an error. 
12360 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
12370 4e 54 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66  NTL_PRAGMA].** f
12380 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 63 63 75  ile control occu
12390 72 73 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  rs at the beginn
123a0 69 6e 67 20 6f 66 20 70 72 61 67 6d 61 20 73 74  ing of pragma st
123b0 61 74 65 6d 65 6e 74 20 61 6e 61 6c 79 73 69 73  atement analysis
123c0 20 61 6e 64 20 73 6f 0a 2a 2a 20 69 74 20 69 73   and so.** it is
123d0 20 61 62 6c 65 20 74 6f 20 6f 76 65 72 72 69 64   able to overrid
123e0 65 20 62 75 69 6c 74 2d 69 6e 20 5b 50 52 41 47  e built-in [PRAG
123f0 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a  MA] statements..
12400 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
12410 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e  TE_FCNTL_BUSYHAN
12420 44 4c 45 52 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b  DLER]].** ^The [
12430 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53  SQLITE_FCNTL_BUS
12440 59 48 41 4e 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c  YHANDLER].** fil
12450 65 2d 63 6f 6e 74 72 6f 6c 20 6d 61 79 20 62 65  e-control may be
12460 20 69 6e 76 6f 6b 65 64 20 62 79 20 53 51 4c 69   invoked by SQLi
12470 74 65 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61  te on the databa
12480 73 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 0a 2a  se file handle.*
12490 2a 20 73 68 6f 72 74 6c 79 20 61 66 74 65 72 20  * shortly after 
124a0 69 74 20 69 73 20 6f 70 65 6e 65 64 20 69 6e 20  it is opened in 
124b0 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65  order to provide
124c0 20 61 20 63 75 73 74 6f 6d 20 56 46 53 20 77 69   a custom VFS wi
124d0 74 68 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20  th access.** to 
124e0 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  the connections 
124f0 62 75 73 79 2d 68 61 6e 64 6c 65 72 20 63 61 6c  busy-handler cal
12500 6c 62 61 63 6b 2e 20 54 68 65 20 61 72 67 75 6d  lback. The argum
12510 65 6e 74 20 69 73 20 6f 66 20 74 79 70 65 20 28  ent is of type (
12520 76 6f 69 64 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e  void **).** - an
12530 20 61 72 72 61 79 20 6f 66 20 74 77 6f 20 28 76   array of two (v
12540 6f 69 64 20 2a 29 20 76 61 6c 75 65 73 2e 20 54  oid *) values. T
12550 68 65 20 66 69 72 73 74 20 28 76 6f 69 64 20 2a  he first (void *
12560 29 20 61 63 74 75 61 6c 6c 79 20 70 6f 69 6e 74  ) actually point
12570 73 0a 2a 2a 20 74 6f 20 61 20 66 75 6e 63 74 69  s.** to a functi
12580 6f 6e 20 6f 66 20 74 79 70 65 20 28 69 6e 74 20  on of type (int 
12590 28 2a 29 28 76 6f 69 64 20 2a 29 29 2e 20 49 6e  (*)(void *)). In
125a0 20 6f 72 64 65 72 20 74 6f 20 69 6e 76 6f 6b 65   order to invoke
125b0 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73   the connections
125c0 0a 2a 2a 20 62 75 73 79 2d 68 61 6e 64 6c 65 72  .** busy-handler
125d0 2c 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  , this function 
125e0 73 68 6f 75 6c 64 20 62 65 20 69 6e 76 6f 6b 65  should be invoke
125f0 64 20 77 69 74 68 20 74 68 65 20 73 65 63 6f 6e  d with the secon
12600 64 20 28 76 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a  d (void *) in.**
12610 20 74 68 65 20 61 72 72 61 79 20 61 73 20 74 68   the array as th
12620 65 20 6f 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e  e only argument.
12630 20 49 66 20 69 74 20 72 65 74 75 72 6e 73 20 6e   If it returns n
12640 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 74 68  on-zero, then th
12650 65 20 6f 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 73  e operation.** s
12660 68 6f 75 6c 64 20 62 65 20 72 65 74 72 69 65 64  hould be retried
12670 2e 20 49 66 20 69 74 20 72 65 74 75 72 6e 73 20  . If it returns 
12680 7a 65 72 6f 2c 20 74 68 65 20 63 75 73 74 6f 6d  zero, the custom
12690 20 56 46 53 20 73 68 6f 75 6c 64 20 61 62 61 6e   VFS should aban
126a0 64 6f 6e 20 74 68 65 0a 2a 2a 20 63 75 72 72 65  don the.** curre
126b0 6e 74 20 6f 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a  nt operation..**
126c0 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
126d0 5f 46 43 4e 54 4c 5f 54 45 4d 50 46 49 4c 45 4e  _FCNTL_TEMPFILEN
126e0 41 4d 45 5d 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63  AME]].** ^Applic
126f0 61 74 69 6f 6e 20 63 61 6e 20 69 6e 76 6f 6b 65  ation can invoke
12700 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   the [SQLITE_FCN
12710 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d  TL_TEMPFILENAME]
12720 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a   file-control.**
12730 20 74 6f 20 68 61 76 65 20 53 51 4c 69 74 65 20   to have SQLite 
12740 67 65 6e 65 72 61 74 65 20 61 0a 2a 2a 20 74 65  generate a.** te
12750 6d 70 6f 72 61 72 79 20 66 69 6c 65 6e 61 6d 65  mporary filename
12760 20 75 73 69 6e 67 20 74 68 65 20 73 61 6d 65 20   using the same 
12770 61 6c 67 6f 72 69 74 68 6d 20 74 68 61 74 20 69  algorithm that i
12780 73 20 66 6f 6c 6c 6f 77 65 64 20 74 6f 20 67 65  s followed to ge
12790 6e 65 72 61 74 65 0a 2a 2a 20 74 65 6d 70 6f 72  nerate.** tempor
127a0 61 72 79 20 66 69 6c 65 6e 61 6d 65 73 20 66 6f  ary filenames fo
127b0 72 20 54 45 4d 50 20 74 61 62 6c 65 73 20 61 6e  r TEMP tables an
127c0 64 20 6f 74 68 65 72 20 69 6e 74 65 72 6e 61 6c  d other internal
127d0 20 75 73 65 73 2e 20 20 54 68 65 0a 2a 2a 20 61   uses.  The.** a
127e0 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62  rgument should b
127f0 65 20 61 20 63 68 61 72 2a 2a 20 77 68 69 63 68  e a char** which
12800 20 77 69 6c 6c 20 62 65 20 66 69 6c 6c 65 64 20   will be filled 
12810 77 69 74 68 20 74 68 65 20 66 69 6c 65 6e 61 6d  with the filenam
12820 65 0a 2a 2a 20 77 72 69 74 74 65 6e 20 69 6e 74  e.** written int
12830 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65  o memory obtaine
12840 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  d from [sqlite3_
12850 6d 61 6c 6c 6f 63 28 29 5d 2e 20 20 54 68 65 20  malloc()].  The 
12860 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 0a 2a 2a  caller should.**
12870 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33   invoke [sqlite3
12880 5f 66 72 65 65 28 29 5d 20 6f 6e 20 74 68 65 20  _free()] on the 
12890 72 65 73 75 6c 74 20 74 6f 20 61 76 6f 69 64 20  result to avoid 
128a0 61 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a  a memory leak..*
128b0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
128c0 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a  E_FCNTL_MMAP_SIZ
128d0 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
128e0 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49  TE_FCNTL_MMAP_SI
128f0 5a 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  ZE] file control
12900 20 69 73 20 75 73 65 64 20 74 6f 20 71 75 65 72   is used to quer
12910 79 20 6f 72 20 73 65 74 20 74 68 65 0a 2a 2a 20  y or set the.** 
12920 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
12930 66 20 62 79 74 65 73 20 74 68 61 74 20 77 69 6c  f bytes that wil
12940 6c 20 62 65 20 75 73 65 64 20 66 6f 72 20 6d 65  l be used for me
12950 6d 6f 72 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e  mory-mapped I/O.
12960 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74  .** The argument
12970 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
12980 20 61 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65   a value of type
12990 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 74   sqlite3_int64 t
129a0 68 61 74 0a 2a 2a 20 69 73 20 61 6e 20 61 64 76  hat.** is an adv
129b0 69 73 6f 72 79 20 6d 61 78 69 6d 75 6d 20 6e 75  isory maximum nu
129c0 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e  mber of bytes in
129d0 20 74 68 65 20 66 69 6c 65 20 74 6f 20 6d 65 6d   the file to mem
129e0 6f 72 79 20 6d 61 70 2e 20 20 54 68 65 0a 2a 2a  ory map.  The.**
129f0 20 70 6f 69 6e 74 65 72 20 69 73 20 6f 76 65 72   pointer is over
12a00 77 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65  written with the
12a10 20 6f 6c 64 20 76 61 6c 75 65 2e 20 20 54 68 65   old value.  The
12a20 20 6c 69 6d 69 74 20 69 73 20 6e 6f 74 20 63 68   limit is not ch
12a30 61 6e 67 65 64 20 69 66 0a 2a 2a 20 74 68 65 20  anged if.** the 
12a40 76 61 6c 75 65 20 6f 72 69 67 69 6e 61 6c 6c 79  value originally
12a50 20 70 6f 69 6e 74 65 64 20 74 6f 20 69 73 20 6e   pointed to is n
12a60 65 67 61 74 69 76 65 2c 20 61 6e 64 20 73 6f 20  egative, and so 
12a70 74 68 65 20 63 75 72 72 65 6e 74 20 6c 69 6d 69  the current limi
12a80 74 20 0a 2a 2a 20 63 61 6e 20 62 65 20 71 75 65  t .** can be que
12a90 72 69 65 64 20 62 79 20 70 61 73 73 69 6e 67 20  ried by passing 
12aa0 69 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  in a pointer to 
12ab0 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65  a negative numbe
12ac0 72 2e 20 20 54 68 69 73 0a 2a 2a 20 66 69 6c 65  r.  This.** file
12ad0 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 75 73 65 64  -control is used
12ae0 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74 6f 20 69   internally to i
12af0 6d 70 6c 65 6d 65 6e 74 20 5b 50 52 41 47 4d 41  mplement [PRAGMA
12b00 20 6d 6d 61 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a   mmap_size]..**.
12b10 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
12b20 46 43 4e 54 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a  FCNTL_TRACE]].**
12b30 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
12b40 54 4c 5f 54 52 41 43 45 5d 20 66 69 6c 65 20 63  TL_TRACE] file c
12b50 6f 6e 74 72 6f 6c 20 70 72 6f 76 69 64 65 73 20  ontrol provides 
12b60 61 64 76 69 73 6f 72 79 20 69 6e 66 6f 72 6d 61  advisory informa
12b70 74 69 6f 6e 0a 2a 2a 20 74 6f 20 74 68 65 20 56  tion.** to the V
12b80 46 53 20 61 62 6f 75 74 20 77 68 61 74 20 74 68  FS about what th
12b90 65 20 68 69 67 68 65 72 20 6c 61 79 65 72 73 20  e higher layers 
12ba0 6f 66 20 74 68 65 20 53 51 4c 69 74 65 20 73 74  of the SQLite st
12bb0 61 63 6b 20 61 72 65 20 64 6f 69 6e 67 2e 0a 2a  ack are doing..*
12bc0 2a 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74  * This file cont
12bd0 72 6f 6c 20 69 73 20 75 73 65 64 20 62 79 20 73  rol is used by s
12be0 6f 6d 65 20 56 46 53 20 61 63 74 69 76 69 74 79  ome VFS activity
12bf0 20 74 72 61 63 69 6e 67 20 5b 73 68 69 6d 73 5d   tracing [shims]
12c00 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e  ..** The argumen
12c10 74 20 69 73 20 61 20 7a 65 72 6f 2d 74 65 72 6d  t is a zero-term
12c20 69 6e 61 74 65 64 20 73 74 72 69 6e 67 2e 20 20  inated string.  
12c30 48 69 67 68 65 72 20 6c 61 79 65 72 73 20 69 6e  Higher layers in
12c40 20 74 68 65 0a 2a 2a 20 53 51 4c 69 74 65 20 73   the.** SQLite s
12c50 74 61 63 6b 20 6d 61 79 20 67 65 6e 65 72 61 74  tack may generat
12c60 65 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 74  e instances of t
12c70 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
12c80 20 69 66 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49   if.** the [SQLI
12c90 54 45 5f 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41  TE_USE_FCNTL_TRA
12ca0 43 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  CE] compile-time
12cb0 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c   option is enabl
12cc0 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ed..**.** <li>[[
12cd0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53  SQLITE_FCNTL_HAS
12ce0 5f 4d 4f 56 45 44 5d 5d 0a 2a 2a 20 54 68 65 20  _MOVED]].** The 
12cf0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41  [SQLITE_FCNTL_HA
12d00 53 5f 4d 4f 56 45 44 5d 20 66 69 6c 65 20 63 6f  S_MOVED] file co
12d10 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73  ntrol interprets
12d20 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73   its argument as
12d30 20 61 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f   a.** pointer to
12d40 20 61 6e 20 69 6e 74 65 67 65 72 20 61 6e 64 20   an integer and 
12d50 69 74 20 77 72 69 74 65 73 20 61 20 62 6f 6f 6c  it writes a bool
12d60 65 61 6e 20 69 6e 74 6f 20 74 68 61 74 20 69 6e  ean into that in
12d70 74 65 67 65 72 20 64 65 70 65 6e 64 69 6e 67 0a  teger depending.
12d80 2a 2a 20 6f 6e 20 77 68 65 74 68 65 72 20 6f 72  ** on whether or
12d90 20 6e 6f 74 20 74 68 65 20 66 69 6c 65 20 68 61   not the file ha
12da0 73 20 62 65 65 6e 20 72 65 6e 61 6d 65 64 2c 20  s been renamed, 
12db0 6d 6f 76 65 64 2c 20 6f 72 20 64 65 6c 65 74 65  moved, or delete
12dc0 64 20 73 69 6e 63 65 20 69 74 0a 2a 2a 20 77 61  d since it.** wa
12dd0 73 20 66 69 72 73 74 20 6f 70 65 6e 65 64 2e 0a  s first opened..
12de0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
12df0 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47  TE_FCNTL_WIN32_G
12e00 45 54 5f 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54  ET_HANDLE]].** T
12e10 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12e20 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c  _WIN32_GET_HANDL
12e30 45 5d 20 6f 70 63 6f 64 65 20 63 61 6e 20 62 65  E] opcode can be
12e40 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
12e50 74 68 65 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e  the.** underlyin
12e60 67 20 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61  g native file ha
12e70 6e 64 6c 65 20 61 73 73 6f 63 69 61 74 65 64 20  ndle associated 
12e80 77 69 74 68 20 61 20 66 69 6c 65 20 68 61 6e 64  with a file hand
12e90 6c 65 2e 20 20 54 68 69 73 20 66 69 6c 65 0a 2a  le.  This file.*
12ea0 2a 20 63 6f 6e 74 72 6f 6c 20 69 6e 74 65 72 70  * control interp
12eb0 72 65 74 73 20 69 74 73 20 61 72 67 75 6d 65 6e  rets its argumen
12ec0 74 20 61 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t as a pointer t
12ed0 6f 20 61 20 6e 61 74 69 76 65 20 66 69 6c 65 20  o a native file 
12ee0 68 61 6e 64 6c 65 20 61 6e 64 0a 2a 2a 20 77 72  handle and.** wr
12ef0 69 74 65 73 20 74 68 65 20 72 65 73 75 6c 74 69  ites the resulti
12f00 6e 67 20 76 61 6c 75 65 20 74 68 65 72 65 2e 0a  ng value there..
12f10 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
12f20 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53  TE_FCNTL_WIN32_S
12f30 45 54 5f 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54  ET_HANDLE]].** T
12f40 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12f50 5f 57 49 4e 33 32 5f 53 45 54 5f 48 41 4e 44 4c  _WIN32_SET_HANDL
12f60 45 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  E] opcode is use
12f70 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e  d for debugging.
12f80 20 20 54 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65    This.** opcode
12f90 20 63 61 75 73 65 73 20 74 68 65 20 78 46 69 6c   causes the xFil
12fa0 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20  eControl method 
12fb0 74 6f 20 73 77 61 70 20 74 68 65 20 66 69 6c 65  to swap the file
12fc0 20 68 61 6e 64 6c 65 20 77 69 74 68 20 74 68 65   handle with the
12fd0 20 6f 6e 65 0a 2a 2a 20 70 6f 69 6e 74 65 64 20   one.** pointed 
12fe0 74 6f 20 62 79 20 74 68 65 20 70 41 72 67 20 61  to by the pArg a
12ff0 72 67 75 6d 65 6e 74 2e 20 20 54 68 69 73 20 63  rgument.  This c
13000 61 70 61 62 69 6c 69 74 79 20 69 73 20 75 73 65  apability is use
13010 64 20 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67  d during testing
13020 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79 20 6e 65 65  .** and only nee
13030 64 73 20 74 6f 20 62 65 20 73 75 70 70 6f 72 74  ds to be support
13040 65 64 20 77 68 65 6e 20 53 51 4c 49 54 45 5f 54  ed when SQLITE_T
13050 45 53 54 20 69 73 20 64 65 66 69 6e 65 64 2e 0a  EST is defined..
13060 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13070 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f  TE_FCNTL_WAL_BLO
13080 43 4b 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  CK]].** The [SQL
13090 49 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c  ITE_FCNTL_WAL_BL
130a0 4f 43 4b 5d 20 69 73 20 61 20 73 69 67 6e 61 6c  OCK] is a signal
130b0 20 74 6f 20 74 68 65 20 56 46 53 20 6c 61 79 65   to the VFS laye
130c0 72 20 74 68 61 74 20 69 74 20 6d 69 67 68 74 0a  r that it might.
130d0 2a 2a 20 62 65 20 61 64 76 61 6e 74 61 67 65 6f  ** be advantageo
130e0 75 73 20 74 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74  us to block on t
130f0 68 65 20 6e 65 78 74 20 57 41 4c 20 6c 6f 63 6b  he next WAL lock
13100 20 69 66 20 74 68 65 20 6c 6f 63 6b 20 69 73 20   if the lock is 
13110 6e 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a  not immediately.
13120 2a 2a 20 61 76 61 69 6c 61 62 6c 65 2e 20 20 54  ** available.  T
13130 68 65 20 57 41 4c 20 73 75 62 73 79 73 74 65 6d  he WAL subsystem
13140 20 69 73 73 75 65 73 20 74 68 69 73 20 73 69 67   issues this sig
13150 6e 61 6c 20 64 75 72 69 6e 67 20 72 61 72 65 0a  nal during rare.
13160 2a 2a 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73  ** circumstances
13170 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69 78   in order to fix
13180 20 61 20 70 72 6f 62 6c 65 6d 20 77 69 74 68 20   a problem with 
13190 70 72 69 6f 72 69 74 79 20 69 6e 76 65 72 73 69  priority inversi
131a0 6f 6e 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  on..** Applicati
131b0 6f 6e 73 20 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e  ons should <em>n
131c0 6f 74 3c 2f 65 6d 3e 20 75 73 65 20 74 68 69 73  ot</em> use this
131d0 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a   file-control..*
131e0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
131f0 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d  E_FCNTL_ZIPVFS]]
13200 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
13210 46 43 4e 54 4c 5f 5a 49 50 56 46 53 5d 20 6f 70  FCNTL_ZIPVFS] op
13220 63 6f 64 65 20 69 73 20 69 6d 70 6c 65 6d 65 6e  code is implemen
13230 74 65 64 20 62 79 20 7a 69 70 76 66 73 20 6f 6e  ted by zipvfs on
13240 6c 79 2e 20 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a  ly. All other.**
13250 20 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75   VFS should retu
13260 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  rn SQLITE_NOTFOU
13270 4e 44 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f  ND for this opco
13280 64 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  de..**.** <li>[[
13290 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 42 55  SQLITE_FCNTL_RBU
132a0 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
132b0 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 20 6f 70 63  E_FCNTL_RBU] opc
132c0 6f 64 65 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74  ode is implement
132d0 65 64 20 62 79 20 74 68 65 20 73 70 65 63 69 61  ed by the specia
132e0 6c 20 56 46 53 20 75 73 65 64 20 62 79 0a 2a 2a  l VFS used by.**
132f0 20 74 68 65 20 52 42 55 20 65 78 74 65 6e 73 69   the RBU extensi
13300 6f 6e 20 6f 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74  on only.  All ot
13310 68 65 72 20 56 46 53 20 73 68 6f 75 6c 64 20 72  her VFS should r
13320 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 54  eturn SQLITE_NOT
13330 46 4f 55 4e 44 20 66 6f 72 0a 2a 2a 20 74 68 69  FOUND for.** thi
13340 73 20 6f 70 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a  s opcode.  .**.*
13350 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13360 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49  CNTL_BEGIN_ATOMI
13370 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a 20 49 66 20  C_WRITE]].** If 
13380 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  the [SQLITE_FCNT
13390 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57  L_BEGIN_ATOMIC_W
133a0 52 49 54 45 5d 20 6f 70 63 6f 64 65 20 72 65 74  RITE] opcode ret
133b0 75 72 6e 73 20 53 51 4c 49 54 45 5f 4f 4b 2c 20  urns SQLITE_OK, 
133c0 74 68 65 6e 0a 2a 2a 20 74 68 65 20 66 69 6c 65  then.** the file
133d0 20 64 65 73 63 72 69 70 74 6f 72 20 69 73 20 70   descriptor is p
133e0 6c 61 63 65 64 20 69 6e 20 22 62 61 74 63 68 20  laced in "batch 
133f0 77 72 69 74 65 20 6d 6f 64 65 22 2c 20 77 68 69  write mode", whi
13400 63 68 0a 2a 2a 20 6d 65 61 6e 73 20 61 6c 6c 20  ch.** means all 
13410 73 75 62 73 65 71 75 65 6e 74 20 77 72 69 74 65  subsequent write
13420 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c   operations will
13430 20 62 65 20 64 65 66 65 72 72 65 64 20 61 6e 64   be deferred and
13440 20 64 6f 6e 65 0a 2a 2a 20 61 74 6f 6d 69 63 61   done.** atomica
13450 6c 6c 79 20 61 74 20 74 68 65 20 6e 65 78 74 20  lly at the next 
13460 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f  [SQLITE_FCNTL_CO
13470 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54  MMIT_ATOMIC_WRIT
13480 45 5d 2e 20 20 53 79 73 74 65 6d 73 0a 2a 2a 20  E].  Systems.** 
13490 74 68 61 74 20 64 6f 20 6e 6f 74 20 73 75 70 70  that do not supp
134a0 6f 72 74 20 62 61 74 63 68 20 61 74 6f 6d 69 63  ort batch atomic
134b0 20 77 72 69 74 65 73 20 77 69 6c 6c 20 72 65 74   writes will ret
134c0 75 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  urn SQLITE_NOTFO
134d0 55 4e 44 2e 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69  UND..** ^Followi
134e0 6e 67 20 61 20 73 75 63 63 65 73 73 66 75 6c 20  ng a successful 
134f0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
13500 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 20  IN_ATOMIC_WRITE 
13510 61 6e 64 20 70 72 69 6f 72 20 74 6f 0a 2a 2a 20  and prior to.** 
13520 74 68 65 20 63 6c 6f 73 69 6e 67 20 5b 53 51 4c  the closing [SQL
13530 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
13540 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f  _ATOMIC_WRITE] o
13550 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  r.** [SQLITE_FCN
13560 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d  TL_ROLLBACK_ATOM
13570 49 43 5f 57 52 49 54 45 5d 2c 20 53 51 4c 69 74  IC_WRITE], SQLit
13580 65 20 77 69 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e  e will make.** n
13590 6f 20 56 46 53 20 69 6e 74 65 72 66 61 63 65 20  o VFS interface 
135a0 63 61 6c 6c 73 20 6f 6e 20 74 68 65 20 73 61 6d  calls on the sam
135b0 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d  e [sqlite3_file]
135c0 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72   file descriptor
135d0 0a 2a 2a 20 65 78 63 65 70 74 20 66 6f 72 20 63  .** except for c
135e0 61 6c 6c 73 20 74 6f 20 74 68 65 20 78 57 72 69  alls to the xWri
135f0 74 65 20 6d 65 74 68 6f 64 20 61 6e 64 20 74 68  te method and th
13600 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d  e xFileControl m
13610 65 74 68 6f 64 0a 2a 2a 20 77 69 74 68 20 5b 53  ethod.** with [S
13620 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
13630 5f 48 49 4e 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  _HINT]..**.** <l
13640 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13650 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57  _COMMIT_ATOMIC_W
13660 52 49 54 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  RITE]].** The [S
13670 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d  QLITE_FCNTL_COMM
13680 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IT_ATOMIC_WRITE]
13690 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73 20 61   opcode causes a
136a0 6c 6c 20 77 72 69 74 65 0a 2a 2a 20 6f 70 65 72  ll write.** oper
136b0 61 74 69 6f 6e 73 20 73 69 6e 63 65 20 74 68 65  ations since the
136c0 20 70 72 65 76 69 6f 75 73 20 73 75 63 63 65 73   previous succes
136d0 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a  sful call to .**
136e0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42   [SQLITE_FCNTL_B
136f0 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54  EGIN_ATOMIC_WRIT
13700 45 5d 20 74 6f 20 62 65 20 70 65 72 66 6f 72 6d  E] to be perform
13710 65 64 20 61 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a  ed atomically..*
13720 2a 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74  * This file cont
13730 72 6f 6c 20 72 65 74 75 72 6e 73 20 5b 53 51 4c  rol returns [SQL
13740 49 54 45 5f 4f 4b 5d 20 69 66 20 61 6e 64 20 6f  ITE_OK] if and o
13750 6e 6c 79 20 69 66 20 74 68 65 20 77 72 69 74 65  nly if the write
13760 73 20 77 65 72 65 0a 2a 2a 20 61 6c 6c 20 70 65  s were.** all pe
13770 72 66 6f 72 6d 65 64 20 73 75 63 63 65 73 73 66  rformed successf
13780 75 6c 6c 79 20 61 6e 64 20 68 61 76 65 20 62 65  ully and have be
13790 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 74 6f 20  en committed to 
137a0 70 65 72 73 69 73 74 65 6e 74 20 73 74 6f 72 61  persistent stora
137b0 67 65 2e 0a 2a 2a 20 5e 52 65 67 61 72 64 6c 65  ge..** ^Regardle
137c0 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ss of whether or
137d0 20 6e 6f 74 20 69 74 20 69 73 20 73 75 63 63 65   not it is succe
137e0 73 73 66 75 6c 2c 20 74 68 69 73 20 66 69 6c 65  ssful, this file
137f0 20 63 6f 6e 74 72 6f 6c 20 74 61 6b 65 73 0a 2a   control takes.*
13800 2a 20 74 68 65 20 66 69 6c 65 20 64 65 73 63 72  * the file descr
13810 69 70 74 6f 72 20 6f 75 74 20 6f 66 20 62 61 74  iptor out of bat
13820 63 68 20 77 72 69 74 65 20 6d 6f 64 65 20 73 6f  ch write mode so
13830 20 74 68 61 74 20 61 6c 6c 20 73 75 62 73 65 71   that all subseq
13840 75 65 6e 74 0a 2a 2a 20 77 72 69 74 65 20 6f 70  uent.** write op
13850 65 72 61 74 69 6f 6e 73 20 61 72 65 20 69 6e 64  erations are ind
13860 65 70 65 6e 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51  ependent..** ^SQ
13870 4c 69 74 65 20 77 69 6c 6c 20 6e 65 76 65 72 20  Lite will never 
13880 69 6e 76 6f 6b 65 20 53 51 4c 49 54 45 5f 46 43  invoke SQLITE_FC
13890 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49  NTL_COMMIT_ATOMI
138a0 43 5f 57 52 49 54 45 20 77 69 74 68 6f 75 74 0a  C_WRITE without.
138b0 2a 2a 20 61 20 70 72 69 6f 72 20 73 75 63 63 65  ** a prior succe
138c0 73 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 53  ssful call to [S
138d0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49  QLITE_FCNTL_BEGI
138e0 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e  N_ATOMIC_WRITE].
138f0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
13900 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41  ITE_FCNTL_ROLLBA
13910 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  CK_ATOMIC_WRITE]
13920 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
13930 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f  _FCNTL_ROLLBACK_
13940 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70  ATOMIC_WRITE] op
13950 63 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20  code causes all 
13960 77 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69  write.** operati
13970 6f 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72  ons since the pr
13980 65 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75  evious successfu
13990 6c 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53  l call to .** [S
139a0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49  QLITE_FCNTL_BEGI
139b0 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20  N_ATOMIC_WRITE] 
139c0 74 6f 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63  to be rolled bac
139d0 6b 2e 0a 2a 2a 20 5e 54 68 69 73 20 66 69 6c 65  k..** ^This file
139e0 20 63 6f 6e 74 72 6f 6c 20 74 61 6b 65 73 20 74   control takes t
139f0 68 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  he file descript
13a00 6f 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20  or out of batch 
13a10 77 72 69 74 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f  write mode.** so
13a20 20 74 68 61 74 20 61 6c 6c 20 73 75 62 73 65 71   that all subseq
13a30 75 65 6e 74 20 77 72 69 74 65 20 6f 70 65 72 61  uent write opera
13a40 74 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65  tions are indepe
13a50 6e 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74  ndent..** ^SQLit
13a60 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76  e will never inv
13a70 6f 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  oke SQLITE_FCNTL
13a80 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43  _ROLLBACK_ATOMIC
13a90 5f 57 52 49 54 45 20 77 69 74 68 6f 75 74 0a 2a  _WRITE without.*
13aa0 2a 20 61 20 70 72 69 6f 72 20 73 75 63 63 65 73  * a prior succes
13ab0 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51  sful call to [SQ
13ac0 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e  LITE_FCNTL_BEGIN
13ad0 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a  _ATOMIC_WRITE]..
13ae0 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66  ** </ul>.*/.#def
13af0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13b00 5f 4c 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20  _LOCKSTATE      
13b10 20 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69           1.#defi
13b20 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13b30 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c  GET_LOCKPROXYFIL
13b40 45 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e  E       2.#defin
13b50 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53  e SQLITE_FCNTL_S
13b60 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
13b70 20 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65         3.#define
13b80 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41   SQLITE_FCNTL_LA
13b90 53 54 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20  ST_ERRNO        
13ba0 20 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20        4.#define 
13bb0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
13bc0 45 5f 48 49 4e 54 20 20 20 20 20 20 20 20 20 20  E_HINT          
13bd0 20 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53       5.#define S
13be0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e  QLITE_FCNTL_CHUN
13bf0 4b 5f 53 49 5a 45 20 20 20 20 20 20 20 20 20 20  K_SIZE          
13c00 20 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51      6.#define SQ
13c10 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
13c20 50 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 20  POINTER         
13c30 20 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c     7.#define SQL
13c40 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f  ITE_FCNTL_SYNC_O
13c50 4d 49 54 54 45 44 20 20 20 20 20 20 20 20 20 20  MITTED          
13c60 20 20 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    8.#define SQLI
13c70 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41  TE_FCNTL_WIN32_A
13c80 56 5f 52 45 54 52 59 20 20 20 20 20 20 20 20 20  V_RETRY         
13c90 20 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   9.#define SQLIT
13ca0 45 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f  E_FCNTL_PERSIST_
13cb0 57 41 4c 20 20 20 20 20 20 20 20 20 20 20 20 31  WAL            1
13cc0 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
13cd0 5f 46 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45  _FCNTL_OVERWRITE
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31                11
13cf0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13d00 46 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20  FCNTL_VFSNAME   
13d10 20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 0a               12.
13d20 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
13d30 43 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f  CNTL_POWERSAFE_O
13d40 56 45 52 57 52 49 54 45 20 20 20 20 31 33 0a 23  VERWRITE    13.#
13d50 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
13d60 4e 54 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20  NTL_PRAGMA      
13d70 20 20 20 20 20 20 20 20 20 20 20 31 34 0a 23 64             14.#d
13d80 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
13d90 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20  TL_BUSYHANDLER  
13da0 20 20 20 20 20 20 20 20 20 20 31 35 0a 23 64 65            15.#de
13db0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
13dc0 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20  L_TEMPFILENAME  
13dd0 20 20 20 20 20 20 20 20 20 31 36 0a 23 64 65 66           16.#def
13de0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
13df0 5f 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20  _MMAP_SIZE      
13e00 20 20 20 20 20 20 20 20 31 38 0a 23 64 65 66 69          18.#defi
13e10 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
13e20 54 52 41 43 45 20 20 20 20 20 20 20 20 20 20 20  TRACE           
13e30 20 20 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e         19.#defin
13e40 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48  e SQLITE_FCNTL_H
13e50 41 53 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20  AS_MOVED        
13e60 20 20 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65        20.#define
13e70 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59   SQLITE_FCNTL_SY
13e80 4e 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NC              
13e90 20 20 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20       21.#define 
13ea0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
13eb0 4d 49 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20  MIT_PHASETWO    
13ec0 20 20 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53      22.#define S
13ed0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33  QLITE_FCNTL_WIN3
13ee0 32 5f 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20  2_SET_HANDLE    
13ef0 20 20 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51     23.#define SQ
13f00 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42  LITE_FCNTL_WAL_B
13f10 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
13f20 20 20 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c    24.#define SQL
13f30 49 54 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53  ITE_FCNTL_ZIPVFS
13f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f50 20 32 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   25.#define SQLI
13f60 54 45 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20  TE_FCNTL_RBU    
13f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13f80 32 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  26.#define SQLIT
13f90 45 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e  E_FCNTL_VFS_POIN
13fa0 54 45 52 20 20 20 20 20 20 20 20 20 20 20 20 32  TER            2
13fb0 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  7.#define SQLITE
13fc0 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
13fd0 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 32 38  OINTER        28
13fe0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
13ff0 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f  FCNTL_WIN32_GET_
14000 48 41 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a  HANDLE       29.
14010 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14020 43 4e 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20  CNTL_PDB        
14030 20 20 20 20 20 20 20 20 20 20 20 20 33 30 0a 23              30.#
14040 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14050 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
14060 5f 57 52 49 54 45 20 20 20 20 20 33 31 0a 23 64  _WRITE     31.#d
14070 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14080 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43  TL_COMMIT_ATOMIC
14090 5f 57 52 49 54 45 20 20 20 20 33 32 0a 23 64 65  _WRITE    32.#de
140a0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
140b0 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49  L_ROLLBACK_ATOMI
140c0 43 5f 57 52 49 54 45 20 20 33 33 0a 0a 2f 2a 20  C_WRITE  33../* 
140d0 64 65 70 72 65 63 61 74 65 64 20 6e 61 6d 65 73  deprecated names
140e0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
140f0 54 45 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TE_GET_LOCKPROXY
14100 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54 45  FILE      SQLITE
14110 5f 46 43 4e 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50  _FCNTL_GET_LOCKP
14120 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e 65  ROXYFILE.#define
14130 20 53 51 4c 49 54 45 5f 53 45 54 5f 4c 4f 43 4b   SQLITE_SET_LOCK
14140 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20 20 53  PROXYFILE      S
14150 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45 54 5f  QLITE_FCNTL_SET_
14160 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 0a 23 64  LOCKPROXYFILE.#d
14170 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 41 53  efine SQLITE_LAS
14180 54 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20  T_ERRNO         
14190 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c      SQLITE_FCNTL
141a0 5f 4c 41 53 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a  _LAST_ERRNO.../*
141b0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 75  .** CAPI3REF: Mu
141c0 74 65 78 20 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a  tex Handle.**.**
141d0 20 54 68 65 20 6d 75 74 65 78 20 6d 6f 64 75 6c   The mutex modul
141e0 65 20 77 69 74 68 69 6e 20 53 51 4c 69 74 65 20  e within SQLite 
141f0 64 65 66 69 6e 65 73 20 5b 73 71 6c 69 74 65 33  defines [sqlite3
14200 5f 6d 75 74 65 78 5d 20 74 6f 20 62 65 20 61 6e  _mutex] to be an
14210 0a 2a 2a 20 61 62 73 74 72 61 63 74 20 74 79 70  .** abstract typ
14220 65 20 66 6f 72 20 61 20 6d 75 74 65 78 20 6f 62  e for a mutex ob
14230 6a 65 63 74 2e 20 20 54 68 65 20 53 51 4c 69 74  ject.  The SQLit
14240 65 20 63 6f 72 65 20 6e 65 76 65 72 20 6c 6f 6f  e core never loo
14250 6b 73 0a 2a 2a 20 61 74 20 74 68 65 20 69 6e 74  ks.** at the int
14260 65 72 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61  ernal representa
14270 74 69 6f 6e 20 6f 66 20 61 6e 20 5b 73 71 6c 69  tion of an [sqli
14280 74 65 33 5f 6d 75 74 65 78 5d 2e 20 20 49 74 20  te3_mutex].  It 
14290 6f 6e 6c 79 0a 2a 2a 20 64 65 61 6c 73 20 77 69  only.** deals wi
142a0 74 68 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 74  th pointers to t
142b0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  he [sqlite3_mute
142c0 78 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a  x] object..**.**
142d0 20 4d 75 74 65 78 65 73 20 61 72 65 20 63 72 65   Mutexes are cre
142e0 61 74 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69  ated using [sqli
142f0 74 65 33 5f 6d 75 74 65 78 5f 61 6c 6c 6f 63 28  te3_mutex_alloc(
14300 29 5d 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  )]..*/.typedef s
14310 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 6d 75  truct sqlite3_mu
14320 74 65 78 20 73 71 6c 69 74 65 33 5f 6d 75 74 65  tex sqlite3_mute
14330 78 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  x;../*.** CAPI3R
14340 45 46 3a 20 4c 6f 61 64 61 62 6c 65 20 45 78 74  EF: Loadable Ext
14350 65 6e 73 69 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a  ension Thunk.**.
14360 2a 2a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20  ** A pointer to 
14370 74 68 65 20 6f 70 61 71 75 65 20 73 71 6c 69 74  the opaque sqlit
14380 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20  e3_api_routines 
14390 73 74 72 75 63 74 75 72 65 20 69 73 20 70 61 73  structure is pas
143a0 73 65 64 20 61 73 0a 2a 2a 20 74 68 65 20 74 68  sed as.** the th
143b0 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ird parameter to
143c0 20 65 6e 74 72 79 20 70 6f 69 6e 74 73 20 6f 66   entry points of
143d0 20 5b 6c 6f 61 64 61 62 6c 65 20 65 78 74 65 6e   [loadable exten
143e0 73 69 6f 6e 73 5d 2e 20 20 54 68 69 73 0a 2a 2a  sions].  This.**
143f0 20 73 74 72 75 63 74 75 72 65 20 6d 75 73 74 20   structure must 
14400 62 65 20 74 79 70 65 64 65 66 65 64 20 69 6e 20  be typedefed in 
14410 6f 72 64 65 72 20 74 6f 20 77 6f 72 6b 20 61 72  order to work ar
14420 6f 75 6e 64 20 63 6f 6d 70 69 6c 65 72 20 77 61  ound compiler wa
14430 72 6e 69 6e 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d  rnings.** on som
14440 65 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a  e platforms..*/.
14450 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
14460 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74 69  qlite3_api_routi
14470 6e 65 73 20 73 71 6c 69 74 65 33 5f 61 70 69 5f  nes sqlite3_api_
14480 72 6f 75 74 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a  routines;../*.**
14490 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e   CAPI3REF: OS In
144a0 74 65 72 66 61 63 65 20 4f 62 6a 65 63 74 0a 2a  terface Object.*
144b0 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65  *.** An instance
144c0 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f   of the sqlite3_
144d0 76 66 73 20 6f 62 6a 65 63 74 20 64 65 66 69 6e  vfs object defin
144e0 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  es the interface
144f0 20 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68 65 20   between.** the 
14500 53 51 4c 69 74 65 20 63 6f 72 65 20 61 6e 64 20  SQLite core and 
14510 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 6f  the underlying o
14520 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
14530 20 20 54 68 65 20 22 76 66 73 22 0a 2a 2a 20 69    The "vfs".** i
14540 6e 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  n the name of th
14550 65 20 6f 62 6a 65 63 74 20 73 74 61 6e 64 73 20  e object stands 
14560 66 6f 72 20 22 76 69 72 74 75 61 6c 20 66 69 6c  for "virtual fil
14570 65 20 73 79 73 74 65 6d 22 2e 20 20 53 65 65 0a  e system".  See.
14580 2a 2a 20 74 68 65 20 5b 56 46 53 20 7c 20 56 46  ** the [VFS | VF
14590 53 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d  S documentation]
145a0 20 66 6f 72 20 66 75 72 74 68 65 72 20 69 6e 66   for further inf
145b0 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  ormation..**.** 
145c0 54 68 65 20 56 46 53 20 69 6e 74 65 72 66 61 63  The VFS interfac
145d0 65 20 69 73 20 73 6f 6d 65 74 69 6d 65 73 20 65  e is sometimes e
145e0 78 74 65 6e 64 65 64 20 62 79 20 61 64 64 69 6e  xtended by addin
145f0 67 20 6e 65 77 20 6d 65 74 68 6f 64 73 20 6f 6e  g new methods on
14600 74 6f 0a 2a 2a 20 74 68 65 20 65 6e 64 2e 20 20  to.** the end.  
14610 45 61 63 68 20 74 69 6d 65 20 73 75 63 68 20 61  Each time such a
14620 6e 20 65 78 74 65 6e 73 69 6f 6e 20 6f 63 63 75  n extension occu
14630 72 73 2c 20 74 68 65 20 69 56 65 72 73 69 6f 6e  rs, the iVersion
14640 20 66 69 65 6c 64 0a 2a 2a 20 69 73 20 69 6e 63   field.** is inc
14650 72 65 6d 65 6e 74 65 64 2e 20 20 54 68 65 20 69  remented.  The i
14660 56 65 72 73 69 6f 6e 20 76 61 6c 75 65 20 73 74  Version value st
14670 61 72 74 65 64 20 6f 75 74 20 61 73 20 31 20 69  arted out as 1 i
14680 6e 0a 2a 2a 20 53 51 4c 69 74 65 20 5b 76 65 72  n.** SQLite [ver
14690 73 69 6f 6e 20 33 2e 35 2e 30 5d 20 6f 6e 20 5b  sion 3.5.0] on [
146a0 64 61 74 65 6f 66 3a 33 2e 35 2e 30 5d 2c 20 74  dateof:3.5.0], t
146b0 68 65 6e 20 69 6e 63 72 65 61 73 65 64 20 74 6f  hen increased to
146c0 20 32 0a 2a 2a 20 77 69 74 68 20 53 51 4c 69 74   2.** with SQLit
146d0 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37 2e 30  e [version 3.7.0
146e0 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33 2e 37  ] on [dateof:3.7
146f0 2e 30 5d 2c 20 61 6e 64 20 74 68 65 6e 20 69 6e  .0], and then in
14700 63 72 65 61 73 65 64 0a 2a 2a 20 74 6f 20 33 20  creased.** to 3 
14710 77 69 74 68 20 53 51 4c 69 74 65 20 5b 76 65 72  with SQLite [ver
14720 73 69 6f 6e 20 33 2e 37 2e 36 5d 20 6f 6e 20 5b  sion 3.7.6] on [
14730 64 61 74 65 6f 66 3a 33 2e 37 2e 36 5d 2e 20 20  dateof:3.7.6].  
14740 41 64 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64  Additional field
14750 73 0a 2a 2a 20 6d 61 79 20 62 65 20 61 70 70 65  s.** may be appe
14760 6e 64 65 64 20 74 6f 20 74 68 65 20 73 71 6c 69  nded to the sqli
14770 74 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 61  te3_vfs object a
14780 6e 64 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20  nd the iVersion 
14790 76 61 6c 75 65 0a 2a 2a 20 6d 61 79 20 69 6e 63  value.** may inc
147a0 72 65 61 73 65 20 61 67 61 69 6e 20 69 6e 20 66  rease again in f
147b0 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
147c0 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 4e 6f 74  f SQLite..** Not
147d0 65 20 74 68 61 74 20 74 68 65 20 73 74 72 75 63  e that the struc
147e0 74 75 72 65 0a 2a 2a 20 6f 66 20 74 68 65 20 73  ture.** of the s
147f0 71 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a 65 63  qlite3_vfs objec
14800 74 20 63 68 61 6e 67 65 73 20 69 6e 20 74 68 65  t changes in the
14810 20 74 72 61 6e 73 69 74 69 6f 6e 20 66 72 6f 6d   transition from
14820 0a 2a 2a 20 53 51 4c 69 74 65 20 5b 76 65 72 73  .** SQLite [vers
14830 69 6f 6e 20 33 2e 35 2e 39 5d 20 74 6f 20 5b 76  ion 3.5.9] to [v
14840 65 72 73 69 6f 6e 20 33 2e 36 2e 30 5d 20 6f 6e  ersion 3.6.0] on
14850 20 5b 64 61 74 65 6f 66 3a 33 2e 36 2e 30 5d 0a   [dateof:3.6.0].
14860 2a 2a 20 61 6e 64 20 79 65 74 20 74 68 65 20 69  ** and yet the i
14870 56 65 72 73 69 6f 6e 20 66 69 65 6c 64 20 77 61  Version field wa
14880 73 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 2e 0a  s not modified..
14890 2a 2a 0a 2a 2a 20 54 68 65 20 73 7a 4f 73 46 69  **.** The szOsFi
148a0 6c 65 20 66 69 65 6c 64 20 69 73 20 74 68 65 20  le field is the 
148b0 73 69 7a 65 20 6f 66 20 74 68 65 20 73 75 62 63  size of the subc
148c0 6c 61 73 73 65 64 20 5b 73 71 6c 69 74 65 33 5f  lassed [sqlite3_
148d0 66 69 6c 65 5d 0a 2a 2a 20 73 74 72 75 63 74 75  file].** structu
148e0 72 65 20 75 73 65 64 20 62 79 20 74 68 69 73 20  re used by this 
148f0 56 46 53 2e 20 20 6d 78 50 61 74 68 6e 61 6d 65  VFS.  mxPathname
14900 20 69 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20   is the maximum 
14910 6c 65 6e 67 74 68 20 6f 66 0a 2a 2a 20 61 20 70  length of.** a p
14920 61 74 68 6e 61 6d 65 20 69 6e 20 74 68 69 73 20  athname in this 
14930 56 46 53 2e 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73  VFS..**.** Regis
14940 74 65 72 65 64 20 73 71 6c 69 74 65 33 5f 76 66  tered sqlite3_vf
14950 73 20 6f 62 6a 65 63 74 73 20 61 72 65 20 6b 65  s objects are ke
14960 70 74 20 6f 6e 20 61 20 6c 69 6e 6b 65 64 20 6c  pt on a linked l
14970 69 73 74 20 66 6f 72 6d 65 64 20 62 79 0a 2a 2a  ist formed by.**
14980 20 74 68 65 20 70 4e 65 78 74 20 70 6f 69 6e 74   the pNext point
14990 65 72 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  er.  The [sqlite
149a0 33 5f 76 66 73 5f 72 65 67 69 73 74 65 72 28 29  3_vfs_register()
149b0 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65  ].** and [sqlite
149c0 33 5f 76 66 73 5f 75 6e 72 65 67 69 73 74 65 72  3_vfs_unregister
149d0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 6d  ()] interfaces m
149e0 61 6e 61 67 65 20 74 68 69 73 20 6c 69 73 74 0a  anage this list.
149f0 2a 2a 20 69 6e 20 61 20 74 68 72 65 61 64 2d 73  ** in a thread-s
14a00 61 66 65 20 77 61 79 2e 20 20 54 68 65 20 5b 73  afe way.  The [s
14a10 71 6c 69 74 65 33 5f 76 66 73 5f 66 69 6e 64 28  qlite3_vfs_find(
14a20 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20  )] interface.** 
14a30 73 65 61 72 63 68 65 73 20 74 68 65 20 6c 69 73  searches the lis
14a40 74 2e 20 20 4e 65 69 74 68 65 72 20 74 68 65 20  t.  Neither the 
14a50 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f 64 65  application code
14a60 20 6e 6f 72 20 74 68 65 20 56 46 53 0a 2a 2a 20   nor the VFS.** 
14a70 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73  implementation s
14a80 68 6f 75 6c 64 20 75 73 65 20 74 68 65 20 70 4e  hould use the pN
14a90 65 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a  ext pointer..**.
14aa0 2a 2a 20 54 68 65 20 70 4e 65 78 74 20 66 69 65  ** The pNext fie
14ab0 6c 64 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 66  ld is the only f
14ac0 69 65 6c 64 20 69 6e 20 74 68 65 20 73 71 6c 69  ield in the sqli
14ad0 74 65 33 5f 76 66 73 0a 2a 2a 20 73 74 72 75 63  te3_vfs.** struc
14ae0 74 75 72 65 20 74 68 61 74 20 53 51 4c 69 74 65  ture that SQLite
14af0 20 77 69 6c 6c 20 65 76 65 72 20 6d 6f 64 69 66   will ever modif
14b00 79 2e 20 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  y.  SQLite will 
14b10 6f 6e 6c 79 20 61 63 63 65 73 73 0a 2a 2a 20 6f  only access.** o
14b20 72 20 6d 6f 64 69 66 79 20 74 68 69 73 20 66 69  r modify this fi
14b30 65 6c 64 20 77 68 69 6c 65 20 68 6f 6c 64 69 6e  eld while holdin
14b40 67 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 73  g a particular s
14b50 74 61 74 69 63 20 6d 75 74 65 78 2e 0a 2a 2a 20  tatic mutex..** 
14b60 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
14b70 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 6d 6f 64  should never mod
14b80 69 66 79 20 61 6e 79 74 68 69 6e 67 20 77 69 74  ify anything wit
14b90 68 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f  hin the sqlite3_
14ba0 76 66 73 0a 2a 2a 20 6f 62 6a 65 63 74 20 6f 6e  vfs.** object on
14bb0 63 65 20 74 68 65 20 6f 62 6a 65 63 74 20 68 61  ce the object ha
14bc0 73 20 62 65 65 6e 20 72 65 67 69 73 74 65 72 65  s been registere
14bd0 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 7a 4e 61  d..**.** The zNa
14be0 6d 65 20 66 69 65 6c 64 20 68 6f 6c 64 73 20 74  me field holds t
14bf0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 56  he name of the V
14c00 46 53 20 6d 6f 64 75 6c 65 2e 20 20 54 68 65 20  FS module.  The 
14c10 6e 61 6d 65 20 6d 75 73 74 0a 2a 2a 20 62 65 20  name must.** be 
14c20 75 6e 69 71 75 65 20 61 63 72 6f 73 73 20 61 6c  unique across al
14c30 6c 20 56 46 53 20 6d 6f 64 75 6c 65 73 2e 0a 2a  l VFS modules..*
14c40 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76  *.** [[sqlite3_v
14c50 66 73 2e 78 4f 70 65 6e 5d 5d 0a 2a 2a 20 5e 53  fs.xOpen]].** ^S
14c60 51 4c 69 74 65 20 67 75 61 72 61 6e 74 65 65 73  QLite guarantees
14c70 20 74 68 61 74 20 74 68 65 20 7a 46 69 6c 65 6e   that the zFilen
14c80 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ame parameter to
14c90 20 78 4f 70 65 6e 0a 2a 2a 20 69 73 20 65 69 74   xOpen.** is eit
14ca0 68 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74  her a NULL point
14cb0 65 72 20 6f 72 20 73 74 72 69 6e 67 20 6f 62 74  er or string obt
14cc0 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 78 46  ained.** from xF
14cd0 75 6c 6c 50 61 74 68 6e 61 6d 65 28 29 20 77 69  ullPathname() wi
14ce0 74 68 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 73  th an optional s
14cf0 75 66 66 69 78 20 61 64 64 65 64 2e 0a 2a 2a 20  uffix added..** 
14d00 5e 49 66 20 61 20 73 75 66 66 69 78 20 69 73 20  ^If a suffix is 
14d10 61 64 64 65 64 20 74 6f 20 74 68 65 20 7a 46 69  added to the zFi
14d20 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72  lename parameter
14d30 2c 20 69 74 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e  , it will.** con
14d40 73 69 73 74 20 6f 66 20 61 20 73 69 6e 67 6c 65  sist of a single
14d50 20 22 2d 22 20 63 68 61 72 61 63 74 65 72 20 66   "-" character f
14d60 6f 6c 6c 6f 77 65 64 20 62 79 20 6e 6f 20 6d 6f  ollowed by no mo
14d70 72 65 20 74 68 61 6e 0a 2a 2a 20 31 31 20 61 6c  re than.** 11 al
14d80 70 68 61 6e 75 6d 65 72 69 63 20 61 6e 64 2f 6f  phanumeric and/o
14d90 72 20 22 2d 22 20 63 68 61 72 61 63 74 65 72 73  r "-" characters
14da0 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 66 75 72  ..** ^SQLite fur
14db0 74 68 65 72 20 67 75 61 72 61 6e 74 65 65 73 20  ther guarantees 
14dc0 74 68 61 74 0a 2a 2a 20 74 68 65 20 73 74 72 69  that.** the stri
14dd0 6e 67 20 77 69 6c 6c 20 62 65 20 76 61 6c 69 64  ng will be valid
14de0 20 61 6e 64 20 75 6e 63 68 61 6e 67 65 64 20 75   and unchanged u
14df0 6e 74 69 6c 20 78 43 6c 6f 73 65 28 29 20 69 73  ntil xClose() is
14e00 0a 2a 2a 20 63 61 6c 6c 65 64 2e 20 42 65 63 61  .** called. Beca
14e10 75 73 65 20 6f 66 20 74 68 65 20 70 72 65 76 69  use of the previ
14e20 6f 75 73 20 73 65 6e 74 65 6e 63 65 2c 0a 2a 2a  ous sentence,.**
14e30 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69   the [sqlite3_fi
14e40 6c 65 5d 20 63 61 6e 20 73 61 66 65 6c 79 20 73  le] can safely s
14e50 74 6f 72 65 20 61 20 70 6f 69 6e 74 65 72 20 74  tore a pointer t
14e60 6f 20 74 68 65 0a 2a 2a 20 66 69 6c 65 6e 61 6d  o the.** filenam
14e70 65 20 69 66 20 69 74 20 6e 65 65 64 73 20 74 6f  e if it needs to
14e80 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 66 69   remember the fi
14e90 6c 65 6e 61 6d 65 20 66 6f 72 20 73 6f 6d 65 20  lename for some 
14ea0 72 65 61 73 6f 6e 2e 0a 2a 2a 20 49 66 20 74 68  reason..** If th
14eb0 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61 72 61  e zFilename para
14ec0 6d 65 74 65 72 20 74 6f 20 78 4f 70 65 6e 20 69  meter to xOpen i
14ed0 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
14ee0 20 74 68 65 6e 20 78 4f 70 65 6e 0a 2a 2a 20 6d   then xOpen.** m
14ef0 75 73 74 20 69 6e 76 65 6e 74 20 69 74 73 20 6f  ust invent its o
14f00 77 6e 20 74 65 6d 70 6f 72 61 72 79 20 6e 61 6d  wn temporary nam
14f10 65 20 66 6f 72 20 74 68 65 20 66 69 6c 65 2e 20  e for the file. 
14f20 20 5e 57 68 65 6e 65 76 65 72 20 74 68 65 20 0a   ^Whenever the .
14f30 2a 2a 20 78 46 69 6c 65 6e 61 6d 65 20 70 61 72  ** xFilename par
14f40 61 6d 65 74 65 72 20 69 73 20 4e 55 4c 4c 20 69  ameter is NULL i
14f50 74 20 77 69 6c 6c 20 61 6c 73 6f 20 62 65 20 74  t will also be t
14f60 68 65 20 63 61 73 65 20 74 68 61 74 20 74 68 65  he case that the
14f70 0a 2a 2a 20 66 6c 61 67 73 20 70 61 72 61 6d 65  .** flags parame
14f80 74 65 72 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65  ter will include
14f90 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45   [SQLITE_OPEN_DE
14fa0 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a  LETEONCLOSE]..**
14fb0 0a 2a 2a 20 54 68 65 20 66 6c 61 67 73 20 61 72  .** The flags ar
14fc0 67 75 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e 28  gument to xOpen(
14fd0 29 20 69 6e 63 6c 75 64 65 73 20 61 6c 6c 20 62  ) includes all b
14fe0 69 74 73 20 73 65 74 20 69 6e 0a 2a 2a 20 74 68  its set in.** th
14ff0 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74  e flags argument
15000 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65   to [sqlite3_ope
15010 6e 5f 76 32 28 29 5d 2e 20 20 4f 72 20 69 66 20  n_v2()].  Or if 
15020 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d  [sqlite3_open()]
15030 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f  .** or [sqlite3_
15040 6f 70 65 6e 31 36 28 29 5d 20 69 73 20 75 73 65  open16()] is use
15050 64 2c 20 74 68 65 6e 20 66 6c 61 67 73 20 69 6e  d, then flags in
15060 63 6c 75 64 65 73 20 61 74 20 6c 65 61 73 74 0a  cludes at least.
15070 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ** [SQLITE_OPEN_
15080 52 45 41 44 57 52 49 54 45 5d 20 7c 20 5b 53 51  READWRITE] | [SQ
15090 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45  LITE_OPEN_CREATE
150a0 5d 2e 20 0a 2a 2a 20 49 66 20 78 4f 70 65 6e 28  ]. .** If xOpen(
150b0 29 20 6f 70 65 6e 73 20 61 20 66 69 6c 65 20 72  ) opens a file r
150c0 65 61 64 2d 6f 6e 6c 79 20 74 68 65 6e 20 69 74  ead-only then it
150d0 20 73 65 74 73 20 2a 70 4f 75 74 46 6c 61 67 73   sets *pOutFlags
150e0 20 74 6f 0a 2a 2a 20 69 6e 63 6c 75 64 65 20 5b   to.** include [
150f0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
15100 4f 4e 4c 59 5d 2e 20 20 4f 74 68 65 72 20 62 69  ONLY].  Other bi
15110 74 73 20 69 6e 20 2a 70 4f 75 74 46 6c 61 67 73  ts in *pOutFlags
15120 20 6d 61 79 20 62 65 20 73 65 74 2e 0a 2a 2a 0a   may be set..**.
15130 2a 2a 20 5e 28 53 51 4c 69 74 65 20 77 69 6c 6c  ** ^(SQLite will
15140 20 61 6c 73 6f 20 61 64 64 20 6f 6e 65 20 6f 66   also add one of
15150 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66   the following f
15160 6c 61 67 73 20 74 6f 20 74 68 65 20 78 4f 70 65  lags to the xOpe
15170 6e 28 29 0a 2a 2a 20 63 61 6c 6c 2c 20 64 65 70  n().** call, dep
15180 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 6f 62  ending on the ob
15190 6a 65 63 74 20 62 65 69 6e 67 20 6f 70 65 6e 65  ject being opene
151a0 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a  d:.**.** <ul>.**
151b0 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f   <li>  [SQLITE_O
151c0 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d 0a 2a 2a 20  PEN_MAIN_DB].** 
151d0 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50  <li>  [SQLITE_OP
151e0 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41 4c 5d  EN_MAIN_JOURNAL]
151f0 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54  .** <li>  [SQLIT
15200 45 5f 4f 50 45 4e 5f 54 45 4d 50 5f 44 42 5d 0a  E_OPEN_TEMP_DB].
15210 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
15220 5f 4f 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e  _OPEN_TEMP_JOURN
15230 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  AL].** <li>  [SQ
15240 4c 49 54 45 5f 4f 50 45 4e 5f 54 52 41 4e 53 49  LITE_OPEN_TRANSI
15250 45 4e 54 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20  ENT_DB].** <li> 
15260 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 55   [SQLITE_OPEN_SU
15270 42 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69  BJOURNAL].** <li
15280 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  >  [SQLITE_OPEN_
15290 4d 41 53 54 45 52 5f 4a 4f 55 52 4e 41 4c 5d 0a  MASTER_JOURNAL].
152a0 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
152b0 5f 4f 50 45 4e 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f  _OPEN_WAL].** </
152c0 75 6c 3e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ul>)^.**.** The 
152d0 66 69 6c 65 20 49 2f 4f 20 69 6d 70 6c 65 6d 65  file I/O impleme
152e0 6e 74 61 74 69 6f 6e 20 63 61 6e 20 75 73 65 20  ntation can use 
152f0 74 68 65 20 6f 62 6a 65 63 74 20 74 79 70 65 20  the object type 
15300 66 6c 61 67 73 20 74 6f 0a 2a 2a 20 63 68 61 6e  flags to.** chan
15310 67 65 20 74 68 65 20 77 61 79 20 69 74 20 64 65  ge the way it de
15320 61 6c 73 20 77 69 74 68 20 66 69 6c 65 73 2e 20  als with files. 
15330 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 61 6e   For example, an
15340 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20   application.** 
15350 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 63 61  that does not ca
15360 72 65 20 61 62 6f 75 74 20 63 72 61 73 68 20 72  re about crash r
15370 65 63 6f 76 65 72 79 20 6f 72 20 72 6f 6c 6c 62  ecovery or rollb
15380 61 63 6b 20 6d 69 67 68 74 20 6d 61 6b 65 0a 2a  ack might make.*
15390 2a 20 74 68 65 20 6f 70 65 6e 20 6f 66 20 61 20  * the open of a 
153a0 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 61 20 6e  journal file a n
153b0 6f 2d 6f 70 2e 20 20 57 72 69 74 65 73 20 74 6f  o-op.  Writes to
153c0 20 74 68 69 73 20 6a 6f 75 72 6e 61 6c 20 77 6f   this journal wo
153d0 75 6c 64 0a 2a 2a 20 61 6c 73 6f 20 62 65 20 6e  uld.** also be n
153e0 6f 2d 6f 70 73 2c 20 61 6e 64 20 61 6e 79 20 61  o-ops, and any a
153f0 74 74 65 6d 70 74 20 74 6f 20 72 65 61 64 20 74  ttempt to read t
15400 68 65 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64  he journal would
15410 20 72 65 74 75 72 6e 0a 2a 2a 20 53 51 4c 49 54   return.** SQLIT
15420 45 5f 49 4f 45 52 52 2e 20 20 4f 72 20 74 68 65  E_IOERR.  Or the
15430 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
15440 6d 69 67 68 74 20 72 65 63 6f 67 6e 69 7a 65 20  might recognize 
15450 74 68 61 74 20 61 20 64 61 74 61 62 61 73 65 0a  that a database.
15460 2a 2a 20 66 69 6c 65 20 77 69 6c 6c 20 62 65 20  ** file will be 
15470 64 6f 69 6e 67 20 70 61 67 65 2d 61 6c 69 67 6e  doing page-align
15480 65 64 20 73 65 63 74 6f 72 20 72 65 61 64 73 20  ed sector reads 
15490 61 6e 64 20 77 72 69 74 65 73 20 69 6e 20 61 20  and writes in a 
154a0 72 61 6e 64 6f 6d 0a 2a 2a 20 6f 72 64 65 72 20  random.** order 
154b0 61 6e 64 20 73 65 74 20 75 70 20 69 74 73 20 49  and set up its I
154c0 2f 4f 20 73 75 62 73 79 73 74 65 6d 20 61 63 63  /O subsystem acc
154d0 6f 72 64 69 6e 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20  ordingly..**.** 
154e0 53 51 4c 69 74 65 20 6d 69 67 68 74 20 61 6c 73  SQLite might als
154f0 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65  o add one of the
15500 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73   following flags
15510 20 74 6f 20 74 68 65 20 78 4f 70 65 6e 20 6d 65   to the xOpen me
15520 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e  thod:.**.** <ul>
15530 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
15540 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c  _OPEN_DELETEONCL
15550 4f 53 45 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  OSE].** <li> [SQ
15560 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53  LITE_OPEN_EXCLUS
15570 49 56 45 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  IVE].** </ul>.**
15580 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
15590 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f  OPEN_DELETEONCLO
155a0 53 45 5d 20 66 6c 61 67 20 6d 65 61 6e 73 20 74  SE] flag means t
155b0 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62  he file should b
155c0 65 0a 2a 2a 20 64 65 6c 65 74 65 64 20 77 68 65  e.** deleted whe
155d0 6e 20 69 74 20 69 73 20 63 6c 6f 73 65 64 2e 20  n it is closed. 
155e0 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50   ^The [SQLITE_OP
155f0 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45  EN_DELETEONCLOSE
15600 5d 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 73 65 74  ].** will be set
15610 20 66 6f 72 20 54 45 4d 50 20 64 61 74 61 62 61   for TEMP databa
15620 73 65 73 20 61 6e 64 20 74 68 65 69 72 20 6a 6f  ses and their jo
15630 75 72 6e 61 6c 73 2c 20 74 72 61 6e 73 69 65 6e  urnals, transien
15640 74 0a 2a 2a 20 64 61 74 61 62 61 73 65 73 2c 20  t.** databases, 
15650 61 6e 64 20 73 75 62 6a 6f 75 72 6e 61 6c 73 2e  and subjournals.
15660 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  .**.** ^The [SQL
15670 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49  ITE_OPEN_EXCLUSI
15680 56 45 5d 20 66 6c 61 67 20 69 73 20 61 6c 77 61  VE] flag is alwa
15690 79 73 20 75 73 65 64 20 69 6e 20 63 6f 6e 6a 75  ys used in conju
156a0 6e 63 74 69 6f 6e 0a 2a 2a 20 77 69 74 68 20 74  nction.** with t
156b0 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
156c0 43 52 45 41 54 45 5d 20 66 6c 61 67 2c 20 77 68  CREATE] flag, wh
156d0 69 63 68 20 61 72 65 20 62 6f 74 68 20 64 69 72  ich are both dir
156e0 65 63 74 6c 79 0a 2a 2a 20 61 6e 61 6c 6f 67 6f  ectly.** analogo
156f0 75 73 20 74 6f 20 74 68 65 20 4f 5f 45 58 43 4c  us to the O_EXCL
15700 20 61 6e 64 20 4f 5f 43 52 45 41 54 20 66 6c 61   and O_CREAT fla
15710 67 73 20 6f 66 20 74 68 65 20 50 4f 53 49 58 20  gs of the POSIX 
15720 6f 70 65 6e 28 29 0a 2a 2a 20 41 50 49 2e 20 20  open().** API.  
15730 54 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  The SQLITE_OPEN_
15740 45 58 43 4c 55 53 49 56 45 20 66 6c 61 67 2c 20  EXCLUSIVE flag, 
15750 77 68 65 6e 20 70 61 69 72 65 64 20 77 69 74 68  when paired with
15760 20 74 68 65 20 0a 2a 2a 20 53 51 4c 49 54 45 5f   the .** SQLITE_
15770 4f 50 45 4e 5f 43 52 45 41 54 45 2c 20 69 73 20  OPEN_CREATE, is 
15780 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61 74 65  used to indicate
15790 20 74 68 61 74 20 66 69 6c 65 20 73 68 6f 75 6c   that file shoul
157a0 64 20 61 6c 77 61 79 73 0a 2a 2a 20 62 65 20 63  d always.** be c
157b0 72 65 61 74 65 64 2c 20 61 6e 64 20 74 68 61 74  reated, and that
157c0 20 69 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20   it is an error 
157d0 69 66 20 69 74 20 61 6c 72 65 61 64 79 20 65 78  if it already ex
157e0 69 73 74 73 2e 0a 2a 2a 20 49 74 20 69 73 20 3c  ists..** It is <
157f0 69 3e 6e 6f 74 3c 2f 69 3e 20 75 73 65 64 20 74  i>not</i> used t
15800 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 20 66  o indicate the f
15810 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 6f 70  ile should be op
15820 65 6e 65 64 20 0a 2a 2a 20 66 6f 72 20 65 78 63  ened .** for exc
15830 6c 75 73 69 76 65 20 61 63 63 65 73 73 2e 0a 2a  lusive access..*
15840 2a 0a 2a 2a 20 5e 41 74 20 6c 65 61 73 74 20 73  *.** ^At least s
15850 7a 4f 73 46 69 6c 65 20 62 79 74 65 73 20 6f 66  zOsFile bytes of
15860 20 6d 65 6d 6f 72 79 20 61 72 65 20 61 6c 6c 6f   memory are allo
15870 63 61 74 65 64 20 62 79 20 53 51 4c 69 74 65 0a  cated by SQLite.
15880 2a 2a 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 20  ** to hold the  
15890 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 73  [sqlite3_file] s
158a0 74 72 75 63 74 75 72 65 20 70 61 73 73 65 64 20  tructure passed 
158b0 61 73 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20  as the third.** 
158c0 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 4f 70 65  argument to xOpe
158d0 6e 2e 20 20 54 68 65 20 78 4f 70 65 6e 20 6d 65  n.  The xOpen me
158e0 74 68 6f 64 20 64 6f 65 73 20 6e 6f 74 20 68 61  thod does not ha
158f0 76 65 20 74 6f 0a 2a 2a 20 61 6c 6c 6f 63 61 74  ve to.** allocat
15900 65 20 74 68 65 20 73 74 72 75 63 74 75 72 65 3b  e the structure;
15910 20 69 74 20 73 68 6f 75 6c 64 20 6a 75 73 74 20   it should just 
15920 66 69 6c 6c 20 69 74 20 69 6e 2e 20 20 4e 6f 74  fill it in.  Not
15930 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 78 4f  e that.** the xO
15940 70 65 6e 20 6d 65 74 68 6f 64 20 6d 75 73 74 20  pen method must 
15950 73 65 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f  set the sqlite3_
15960 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 74 6f  file.pMethods to
15970 20 65 69 74 68 65 72 0a 2a 2a 20 61 20 76 61 6c   either.** a val
15980 69 64 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  id [sqlite3_io_m
15990 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 6f  ethods] object o
159a0 72 20 74 6f 20 4e 55 4c 4c 2e 20 20 78 4f 70 65  r to NULL.  xOpe
159b0 6e 20 6d 75 73 74 20 64 6f 0a 2a 2a 20 74 68 69  n must do.** thi
159c0 73 20 65 76 65 6e 20 69 66 20 74 68 65 20 6f 70  s even if the op
159d0 65 6e 20 66 61 69 6c 73 2e 20 20 53 51 4c 69 74  en fails.  SQLit
159e0 65 20 65 78 70 65 63 74 73 20 74 68 61 74 20 74  e expects that t
159f0 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e  he sqlite3_file.
15a00 70 4d 65 74 68 6f 64 73 0a 2a 2a 20 65 6c 65 6d  pMethods.** elem
15a10 65 6e 74 20 77 69 6c 6c 20 62 65 20 76 61 6c 69  ent will be vali
15a20 64 20 61 66 74 65 72 20 78 4f 70 65 6e 20 72 65  d after xOpen re
15a30 74 75 72 6e 73 20 72 65 67 61 72 64 6c 65 73 73  turns regardless
15a40 20 6f 66 20 74 68 65 20 73 75 63 63 65 73 73 0a   of the success.
15a50 2a 2a 20 6f 72 20 66 61 69 6c 75 72 65 20 6f 66  ** or failure of
15a60 20 74 68 65 20 78 4f 70 65 6e 20 63 61 6c 6c 2e   the xOpen call.
15a70 0a 2a 2a 0a 2a 2a 20 5b 5b 73 71 6c 69 74 65 33  .**.** [[sqlite3
15a80 5f 76 66 73 2e 78 41 63 63 65 73 73 5d 5d 0a 2a  _vfs.xAccess]].*
15a90 2a 20 5e 54 68 65 20 66 6c 61 67 73 20 61 72 67  * ^The flags arg
15aa0 75 6d 65 6e 74 20 74 6f 20 78 41 63 63 65 73 73  ument to xAccess
15ab0 28 29 20 6d 61 79 20 62 65 20 5b 53 51 4c 49 54  () may be [SQLIT
15ac0 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 5d  E_ACCESS_EXISTS]
15ad0 0a 2a 2a 20 74 6f 20 74 65 73 74 20 66 6f 72 20  .** to test for 
15ae0 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66  the existence of
15af0 20 61 20 66 69 6c 65 2c 20 6f 72 20 5b 53 51 4c   a file, or [SQL
15b00 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57  ITE_ACCESS_READW
15b10 52 49 54 45 5d 20 74 6f 0a 2a 2a 20 74 65 73 74  RITE] to.** test
15b20 20 77 68 65 74 68 65 72 20 61 20 66 69 6c 65 20   whether a file 
15b30 69 73 20 72 65 61 64 61 62 6c 65 20 61 6e 64 20  is readable and 
15b40 77 72 69 74 61 62 6c 65 2c 20 6f 72 20 5b 53 51  writable, or [SQ
15b50 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
15b60 5d 0a 2a 2a 20 74 6f 20 74 65 73 74 20 77 68 65  ].** to test whe
15b70 74 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 61  ther a file is a
15b80 74 20 6c 65 61 73 74 20 72 65 61 64 61 62 6c 65  t least readable
15b90 2e 20 20 20 54 68 65 20 66 69 6c 65 20 63 61 6e  .   The file can
15ba0 20 62 65 20 61 0a 2a 2a 20 64 69 72 65 63 74 6f   be a.** directo
15bb0 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74  ry..**.** ^SQLit
15bc0 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 61 6c  e will always al
15bd0 6c 6f 63 61 74 65 20 61 74 20 6c 65 61 73 74 20  locate at least 
15be0 6d 78 50 61 74 68 6e 61 6d 65 2b 31 20 62 79 74  mxPathname+1 byt
15bf0 65 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 6f 75  es for the.** ou
15c00 74 70 75 74 20 62 75 66 66 65 72 20 78 46 75 6c  tput buffer xFul
15c10 6c 50 61 74 68 6e 61 6d 65 2e 20 20 54 68 65 20  lPathname.  The 
15c20 65 78 61 63 74 20 73 69 7a 65 20 6f 66 20 74 68  exact size of th
15c30 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 0a  e output buffer.
15c40 2a 2a 20 69 73 20 61 6c 73 6f 20 70 61 73 73 65  ** is also passe
15c50 64 20 61 73 20 61 20 70 61 72 61 6d 65 74 65 72  d as a parameter
15c60 20 74 6f 20 62 6f 74 68 20 20 6d 65 74 68 6f 64   to both  method
15c70 73 2e 20 49 66 20 74 68 65 20 6f 75 74 70 75 74  s. If the output
15c80 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 6e 6f   buffer.** is no
15c90 74 20 6c 61 72 67 65 20 65 6e 6f 75 67 68 2c 20  t large enough, 
15ca0 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45 4e  [SQLITE_CANTOPEN
15cb0 5d 20 73 68 6f 75 6c 64 20 62 65 20 72 65 74 75  ] should be retu
15cc0 72 6e 65 64 2e 20 53 69 6e 63 65 20 74 68 69 73  rned. Since this
15cd0 20 69 73 0a 2a 2a 20 68 61 6e 64 6c 65 64 20 61   is.** handled a
15ce0 73 20 61 20 66 61 74 61 6c 20 65 72 72 6f 72 20  s a fatal error 
15cf0 62 79 20 53 51 4c 69 74 65 2c 20 76 66 73 20 69  by SQLite, vfs i
15d00 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73  mplementations s
15d10 68 6f 75 6c 64 20 65 6e 64 65 61 76 6f 72 0a 2a  hould endeavor.*
15d20 2a 20 74 6f 20 70 72 65 76 65 6e 74 20 74 68 69  * to prevent thi
15d30 73 20 62 79 20 73 65 74 74 69 6e 67 20 6d 78 50  s by setting mxP
15d40 61 74 68 6e 61 6d 65 20 74 6f 20 61 20 73 75 66  athname to a suf
15d50 66 69 63 69 65 6e 74 6c 79 20 6c 61 72 67 65 20  ficiently large 
15d60 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  value..**.** The
15d70 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29 2c 20   xRandomness(), 
15d80 78 53 6c 65 65 70 28 29 2c 20 78 43 75 72 72 65  xSleep(), xCurre
15d90 6e 74 54 69 6d 65 28 29 2c 20 61 6e 64 20 78 43  ntTime(), and xC
15da0 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28  urrentTimeInt64(
15db0 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  ).** interfaces 
15dc0 61 72 65 20 6e 6f 74 20 73 74 72 69 63 74 6c 79  are not strictly
15dd0 20 61 20 70 61 72 74 20 6f 66 20 74 68 65 20 66   a part of the f
15de0 69 6c 65 73 79 73 74 65 6d 2c 20 62 75 74 20 74  ilesystem, but t
15df0 68 65 79 20 61 72 65 0a 2a 2a 20 69 6e 63 6c 75  hey are.** inclu
15e00 64 65 64 20 69 6e 20 74 68 65 20 56 46 53 20 73  ded in the VFS s
15e10 74 72 75 63 74 75 72 65 20 66 6f 72 20 63 6f 6d  tructure for com
15e20 70 6c 65 74 65 6e 65 73 73 2e 0a 2a 2a 20 54 68  pleteness..** Th
15e30 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 28 29 20  e xRandomness() 
15e40 66 75 6e 63 74 69 6f 6e 20 61 74 74 65 6d 70 74  function attempt
15e50 73 20 74 6f 20 72 65 74 75 72 6e 20 6e 42 79 74  s to return nByt
15e60 65 73 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 67  es bytes.** of g
15e70 6f 6f 64 2d 71 75 61 6c 69 74 79 20 72 61 6e 64  ood-quality rand
15e80 6f 6d 6e 65 73 73 20 69 6e 74 6f 20 7a 4f 75 74  omness into zOut
15e90 2e 20 20 54 68 65 20 72 65 74 75 72 6e 20 76 61  .  The return va
15ea0 6c 75 65 20 69 73 0a 2a 2a 20 74 68 65 20 61 63  lue is.** the ac
15eb0 74 75 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 62  tual number of b
15ec0 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65  ytes of randomne
15ed0 73 73 20 6f 62 74 61 69 6e 65 64 2e 0a 2a 2a 20  ss obtained..** 
15ee0 54 68 65 20 78 53 6c 65 65 70 28 29 20 6d 65 74  The xSleep() met
15ef0 68 6f 64 20 63 61 75 73 65 73 20 74 68 65 20 63  hod causes the c
15f00 61 6c 6c 69 6e 67 20 74 68 72 65 61 64 20 74 6f  alling thread to
15f10 20 73 6c 65 65 70 20 66 6f 72 20 61 74 0a 2a 2a   sleep for at.**
15f20 20 6c 65 61 73 74 20 74 68 65 20 6e 75 6d 62 65   least the numbe
15f30 72 20 6f 66 20 6d 69 63 72 6f 73 65 63 6f 6e 64  r of microsecond
15f40 73 20 67 69 76 65 6e 2e 20 20 5e 54 68 65 20 78  s given.  ^The x
15f50 43 75 72 72 65 6e 74 54 69 6d 65 28 29 0a 2a 2a  CurrentTime().**
15f60 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
15f70 61 20 4a 75 6c 69 61 6e 20 44 61 79 20 4e 75 6d  a Julian Day Num
15f80 62 65 72 20 66 6f 72 20 74 68 65 20 63 75 72 72  ber for the curr
15f90 65 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 6d  ent date and tim
15fa0 65 20 61 73 0a 2a 2a 20 61 20 66 6c 6f 61 74 69  e as.** a floati
15fb0 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65 2e 0a  ng point value..
15fc0 2a 2a 20 5e 54 68 65 20 78 43 75 72 72 65 6e 74  ** ^The xCurrent
15fd0 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65 74 68  TimeInt64() meth
15fe0 6f 64 20 72 65 74 75 72 6e 73 2c 20 61 73 20 61  od returns, as a
15ff0 6e 20 69 6e 74 65 67 65 72 2c 20 74 68 65 20 4a  n integer, the J
16000 75 6c 69 61 6e 0a 2a 2a 20 44 61 79 20 4e 75 6d  ulian.** Day Num
16010 62 65 72 20 6d 75 6c 74 69 70 6c 69 65 64 20 62  ber multiplied b
16020 79 20 38 36 34 30 30 30 30 30 20 28 74 68 65 20  y 86400000 (the 
16030 6e 75 6d 62 65 72 20 6f 66 20 6d 69 6c 6c 69 73  number of millis
16040 65 63 6f 6e 64 73 20 69 6e 20 0a 2a 2a 20 61 20  econds in .** a 
16050 32 34 2d 68 6f 75 72 20 64 61 79 29 2e 20 20 0a  24-hour day).  .
16060 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20  ** ^SQLite will 
16070 75 73 65 20 74 68 65 20 78 43 75 72 72 65 6e 74  use the xCurrent
16080 54 69 6d 65 49 6e 74 36 34 28 29 20 6d 65 74 68  TimeInt64() meth
16090 6f 64 20 74 6f 20 67 65 74 20 74 68 65 20 63 75  od to get the cu
160a0 72 72 65 6e 74 0a 2a 2a 20 64 61 74 65 20 61 6e  rrent.** date an
160b0 64 20 74 69 6d 65 20 69 66 20 74 68 61 74 20 6d  d time if that m
160c0 65 74 68 6f 64 20 69 73 20 61 76 61 69 6c 61 62  ethod is availab
160d0 6c 65 20 28 69 66 20 69 56 65 72 73 69 6f 6e 20  le (if iVersion 
160e0 69 73 20 32 20 6f 72 20 0a 2a 2a 20 67 72 65 61  is 2 or .** grea
160f0 74 65 72 20 61 6e 64 20 74 68 65 20 66 75 6e 63  ter and the func
16100 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20  tion pointer is 
16110 6e 6f 74 20 4e 55 4c 4c 29 20 61 6e 64 20 77 69  not NULL) and wi
16120 6c 6c 20 66 61 6c 6c 20 62 61 63 6b 0a 2a 2a 20  ll fall back.** 
16130 74 6f 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28  to xCurrentTime(
16140 29 20 69 66 20 78 43 75 72 72 65 6e 74 54 69 6d  ) if xCurrentTim
16150 65 49 6e 74 36 34 28 29 20 69 73 20 75 6e 61 76  eInt64() is unav
16160 61 69 6c 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 5e  ailable..**.** ^
16170 54 68 65 20 78 53 65 74 53 79 73 74 65 6d 43 61  The xSetSystemCa
16180 6c 6c 28 29 2c 20 78 47 65 74 53 79 73 74 65 6d  ll(), xGetSystem
16190 43 61 6c 6c 28 29 2c 20 61 6e 64 20 78 4e 65 73  Call(), and xNes
161a0 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 20 69 6e  tSystemCall() in
161b0 74 65 72 66 61 63 65 73 0a 2a 2a 20 61 72 65 20  terfaces.** are 
161c0 6e 6f 74 20 75 73 65 64 20 62 79 20 74 68 65 20  not used by the 
161d0 53 51 4c 69 74 65 20 63 6f 72 65 2e 20 20 54 68  SQLite core.  Th
161e0 65 73 65 20 6f 70 74 69 6f 6e 61 6c 20 69 6e 74  ese optional int
161f0 65 72 66 61 63 65 73 20 61 72 65 20 70 72 6f 76  erfaces are prov
16200 69 64 65 64 0a 2a 2a 20 62 79 20 73 6f 6d 65 20  ided.** by some 
16210 56 46 53 65 73 20 74 6f 20 66 61 63 69 6c 69 74  VFSes to facilit
16220 61 74 65 20 74 65 73 74 69 6e 67 20 6f 66 20 74  ate testing of t
16230 68 65 20 56 46 53 20 63 6f 64 65 2e 20 42 79 20  he VFS code. By 
16240 6f 76 65 72 72 69 64 69 6e 67 20 0a 2a 2a 20 73  overriding .** s
16250 79 73 74 65 6d 20 63 61 6c 6c 73 20 77 69 74 68  ystem calls with
16260 20 66 75 6e 63 74 69 6f 6e 73 20 75 6e 64 65 72   functions under
16270 20 69 74 73 20 63 6f 6e 74 72 6f 6c 2c 20 61 20   its control, a 
16280 74 65 73 74 20 70 72 6f 67 72 61 6d 20 63 61 6e  test program can
16290 0a 2a 2a 20 73 69 6d 75 6c 61 74 65 20 66 61 75  .** simulate fau
162a0 6c 74 73 20 61 6e 64 20 65 72 72 6f 72 20 63 6f  lts and error co
162b0 6e 64 69 74 69 6f 6e 73 20 74 68 61 74 20 77 6f  nditions that wo
162c0 75 6c 64 20 6f 74 68 65 72 77 69 73 65 20 62 65  uld otherwise be
162d0 20 64 69 66 66 69 63 75 6c 74 0a 2a 2a 20 6f 72   difficult.** or
162e0 20 69 6d 70 6f 73 73 69 62 6c 65 20 74 6f 20 69   impossible to i
162f0 6e 64 75 63 65 2e 20 20 54 68 65 20 73 65 74 20  nduce.  The set 
16300 6f 66 20 73 79 73 74 65 6d 20 63 61 6c 6c 73 20  of system calls 
16310 74 68 61 74 20 63 61 6e 20 62 65 20 6f 76 65 72  that can be over
16320 72 69 64 64 65 6e 0a 2a 2a 20 76 61 72 69 65 73  ridden.** varies
16330 20 66 72 6f 6d 20 6f 6e 65 20 56 46 53 20 74 6f   from one VFS to
16340 20 61 6e 6f 74 68 65 72 2c 20 61 6e 64 20 66 72   another, and fr
16350 6f 6d 20 6f 6e 65 20 76 65 72 73 69 6f 6e 20 6f  om one version o
16360 66 20 74 68 65 20 73 61 6d 65 20 56 46 53 20 74  f the same VFS t
16370 6f 20 74 68 65 0a 2a 2a 20 6e 65 78 74 2e 20 20  o the.** next.  
16380 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61  Applications tha
16390 74 20 75 73 65 20 74 68 65 73 65 20 69 6e 74 65  t use these inte
163a0 72 66 61 63 65 73 20 6d 75 73 74 20 62 65 20 70  rfaces must be p
163b0 72 65 70 61 72 65 64 20 66 6f 72 20 61 6e 79 0a  repared for any.
163c0 2a 2a 20 6f 72 20 61 6c 6c 20 6f 66 20 74 68 65  ** or all of the
163d0 73 65 20 69 6e 74 65 72 66 61 63 65 73 20 74 6f  se interfaces to
163e0 20 62 65 20 4e 55 4c 4c 20 6f 72 20 66 6f 72 20   be NULL or for 
163f0 74 68 65 69 72 20 62 65 68 61 76 69 6f 72 20 74  their behavior t
16400 6f 20 63 68 61 6e 67 65 0a 2a 2a 20 66 72 6f 6d  o change.** from
16410 20 6f 6e 65 20 72 65 6c 65 61 73 65 20 74 6f 20   one release to 
16420 74 68 65 20 6e 65 78 74 2e 20 20 41 70 70 6c 69  the next.  Appli
16430 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 6e 6f 74  cations must not
16440 20 61 74 74 65 6d 70 74 20 74 6f 20 61 63 63 65   attempt to acce
16450 73 73 0a 2a 2a 20 61 6e 79 20 6f 66 20 74 68 65  ss.** any of the
16460 73 65 20 6d 65 74 68 6f 64 73 20 69 66 20 74 68  se methods if th
16470 65 20 69 56 65 72 73 69 6f 6e 20 6f 66 20 74 68  e iVersion of th
16480 65 20 56 46 53 20 69 73 20 6c 65 73 73 20 74 68  e VFS is less th
16490 61 6e 20 33 2e 0a 2a 2f 0a 74 79 70 65 64 65 66  an 3..*/.typedef
164a0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
164b0 76 66 73 20 73 71 6c 69 74 65 33 5f 76 66 73 3b  vfs sqlite3_vfs;
164c0 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 2a  .typedef void (*
164d0 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f  sqlite3_syscall_
164e0 70 74 72 29 28 76 6f 69 64 29 3b 0a 73 74 72 75  ptr)(void);.stru
164f0 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73 20 7b  ct sqlite3_vfs {
16500 0a 20 20 69 6e 74 20 69 56 65 72 73 69 6f 6e 3b  .  int iVersion;
16510 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53              /* S
16520 74 72 75 63 74 75 72 65 20 76 65 72 73 69 6f 6e  tructure version
16530 20 6e 75 6d 62 65 72 20 28 63 75 72 72 65 6e 74   number (current
16540 6c 79 20 33 29 20 2a 2f 0a 20 20 69 6e 74 20 73  ly 3) */.  int s
16550 7a 4f 73 46 69 6c 65 3b 20 20 20 20 20 20 20 20  zOsFile;        
16560 20 20 20 20 2f 2a 20 53 69 7a 65 20 6f 66 20 73      /* Size of s
16570 75 62 63 6c 61 73 73 65 64 20 73 71 6c 69 74 65  ubclassed sqlite
16580 33 5f 66 69 6c 65 20 2a 2f 0a 20 20 69 6e 74 20  3_file */.  int 
16590 6d 78 50 61 74 68 6e 61 6d 65 3b 20 20 20 20 20  mxPathname;     
165a0 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20       /* Maximum 
165b0 66 69 6c 65 20 70 61 74 68 6e 61 6d 65 20 6c 65  file pathname le
165c0 6e 67 74 68 20 2a 2f 0a 20 20 73 71 6c 69 74 65  ngth */.  sqlite
165d0 33 5f 76 66 73 20 2a 70 4e 65 78 74 3b 20 20 20  3_vfs *pNext;   
165e0 20 20 20 2f 2a 20 4e 65 78 74 20 72 65 67 69 73     /* Next regis
165f0 74 65 72 65 64 20 56 46 53 20 2a 2f 0a 20 20 63  tered VFS */.  c
16600 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65  onst char *zName
16610 3b 20 20 20 20 20 20 20 2f 2a 20 4e 61 6d 65 20  ;       /* Name 
16620 6f 66 20 74 68 69 73 20 76 69 72 74 75 61 6c 20  of this virtual 
16630 66 69 6c 65 20 73 79 73 74 65 6d 20 2a 2f 0a 20  file system */. 
16640 20 76 6f 69 64 20 2a 70 41 70 70 44 61 74 61 3b   void *pAppData;
16650 20 20 20 20 20 20 20 20 20 20 2f 2a 20 50 6f 69            /* Poi
16660 6e 74 65 72 20 74 6f 20 61 70 70 6c 69 63 61 74  nter to applicat
16670 69 6f 6e 2d 73 70 65 63 69 66 69 63 20 64 61 74  ion-specific dat
16680 61 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 4f 70  a */.  int (*xOp
16690 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  en)(sqlite3_vfs*
166a0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
166b0 61 6d 65 2c 20 73 71 6c 69 74 65 33 5f 66 69 6c  ame, sqlite3_fil
166c0 65 2a 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  e*,.            
166d0 20 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e     int flags, in
166e0 74 20 2a 70 4f 75 74 46 6c 61 67 73 29 3b 0a 20  t *pOutFlags);. 
166f0 20 69 6e 74 20 28 2a 78 44 65 6c 65 74 65 29 28   int (*xDelete)(
16700 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f  sqlite3_vfs*, co
16710 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
16720 20 69 6e 74 20 73 79 6e 63 44 69 72 29 3b 0a 20   int syncDir);. 
16730 20 69 6e 74 20 28 2a 78 41 63 63 65 73 73 29 28   int (*xAccess)(
16740 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f  sqlite3_vfs*, co
16750 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
16760 20 69 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20   int flags, int 
16770 2a 70 52 65 73 4f 75 74 29 3b 0a 20 20 69 6e 74  *pResOut);.  int
16780 20 28 2a 78 46 75 6c 6c 50 61 74 68 6e 61 6d 65   (*xFullPathname
16790 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
167a0 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
167b0 65 2c 20 69 6e 74 20 6e 4f 75 74 2c 20 63 68 61  e, int nOut, cha
167c0 72 20 2a 7a 4f 75 74 29 3b 0a 20 20 76 6f 69 64  r *zOut);.  void
167d0 20 2a 28 2a 78 44 6c 4f 70 65 6e 29 28 73 71 6c   *(*xDlOpen)(sql
167e0 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74  ite3_vfs*, const
167f0 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61 6d 65   char *zFilename
16800 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44 6c 45  );.  void (*xDlE
16810 72 72 6f 72 29 28 73 71 6c 69 74 65 33 5f 76 66  rror)(sqlite3_vf
16820 73 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c 20 63  s*, int nByte, c
16830 68 61 72 20 2a 7a 45 72 72 4d 73 67 29 3b 0a 20  har *zErrMsg);. 
16840 20 76 6f 69 64 20 28 2a 28 2a 78 44 6c 53 79 6d   void (*(*xDlSym
16850 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 76  )(sqlite3_vfs*,v
16860 6f 69 64 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  oid*, const char
16870 20 2a 7a 53 79 6d 62 6f 6c 29 29 28 76 6f 69 64   *zSymbol))(void
16880 29 3b 0a 20 20 76 6f 69 64 20 28 2a 78 44 6c 43  );.  void (*xDlC
16890 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f 76 66  lose)(sqlite3_vf
168a0 73 2a 2c 20 76 6f 69 64 2a 29 3b 0a 20 20 69 6e  s*, void*);.  in
168b0 74 20 28 2a 78 52 61 6e 64 6f 6d 6e 65 73 73 29  t (*xRandomness)
168c0 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69  (sqlite3_vfs*, i
168d0 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72 20 2a  nt nByte, char *
168e0 7a 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78  zOut);.  int (*x
168f0 53 6c 65 65 70 29 28 73 71 6c 69 74 65 33 5f 76  Sleep)(sqlite3_v
16900 66 73 2a 2c 20 69 6e 74 20 6d 69 63 72 6f 73 65  fs*, int microse
16910 63 6f 6e 64 73 29 3b 0a 20 20 69 6e 74 20 28 2a  conds);.  int (*
16920 78 43 75 72 72 65 6e 74 54 69 6d 65 29 28 73 71  xCurrentTime)(sq
16930 6c 69 74 65 33 5f 76 66 73 2a 2c 20 64 6f 75 62  lite3_vfs*, doub
16940 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 47  le*);.  int (*xG
16950 65 74 4c 61 73 74 45 72 72 6f 72 29 28 73 71 6c  etLastError)(sql
16960 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 2c 20  ite3_vfs*, int, 
16970 63 68 61 72 20 2a 29 3b 0a 20 20 2f 2a 0a 20 20  char *);.  /*.  
16980 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  ** The methods a
16990 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
169a0 69 6f 6e 20 31 20 6f 66 20 74 68 65 20 73 71 6c  ion 1 of the sql
169b0 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 0a 20  ite_vfs object. 
169c0 20 2a 2a 20 64 65 66 69 6e 69 74 69 6f 6e 2e 20   ** definition. 
169d0 20 54 68 6f 73 65 20 74 68 61 74 20 66 6f 6c 6c   Those that foll
169e0 6f 77 20 61 72 65 20 61 64 64 65 64 20 69 6e 20  ow are added in 
169f0 76 65 72 73 69 6f 6e 20 32 20 6f 72 20 6c 61 74  version 2 or lat
16a00 65 72 0a 20 20 2a 2f 0a 20 20 69 6e 74 20 28 2a  er.  */.  int (*
16a10 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
16a20 34 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  4)(sqlite3_vfs*,
16a30 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2a 29   sqlite3_int64*)
16a40 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20  ;.  /*.  ** The 
16a50 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72  methods above ar
16a60 65 20 69 6e 20 76 65 72 73 69 6f 6e 73 20 31 20  e in versions 1 
16a70 61 6e 64 20 32 20 6f 66 20 74 68 65 20 73 71 6c  and 2 of the sql
16a80 69 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 2e 0a  ite_vfs object..
16a90 20 20 2a 2a 20 54 68 6f 73 65 20 62 65 6c 6f 77    ** Those below
16aa0 20 61 72 65 20 66 6f 72 20 76 65 72 73 69 6f 6e   are for version
16ab0 20 33 20 61 6e 64 20 67 72 65 61 74 65 72 2e 0a   3 and greater..
16ac0 20 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 65    */.  int (*xSe
16ad0 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c  tSystemCall)(sql
16ae0 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74  ite3_vfs*, const
16af0 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 73 71   char *zName, sq
16b00 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74  lite3_syscall_pt
16b10 72 29 3b 0a 20 20 73 71 6c 69 74 65 33 5f 73 79  r);.  sqlite3_sy
16b20 73 63 61 6c 6c 5f 70 74 72 20 28 2a 78 47 65 74  scall_ptr (*xGet
16b30 53 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69  SystemCall)(sqli
16b40 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
16b50 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20  char *zName);.  
16b60 63 6f 6e 73 74 20 63 68 61 72 20 2a 28 2a 78 4e  const char *(*xN
16b70 65 78 74 53 79 73 74 65 6d 43 61 6c 6c 29 28 73  extSystemCall)(s
16b80 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
16b90 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 29 3b  st char *zName);
16ba0 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d  .  /*.  ** The m
16bb0 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
16bc0 20 69 6e 20 76 65 72 73 69 6f 6e 73 20 31 20 74   in versions 1 t
16bd0 68 72 6f 75 67 68 20 33 20 6f 66 20 74 68 65 20  hrough 3 of the 
16be0 73 71 6c 69 74 65 5f 76 66 73 20 6f 62 6a 65 63  sqlite_vfs objec
16bf0 74 2e 0a 20 20 2a 2a 20 4e 65 77 20 66 69 65 6c  t..  ** New fiel
16c00 64 73 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64  ds may be append
16c10 65 64 20 69 6e 20 66 75 74 75 72 65 20 76 65 72  ed in future ver
16c20 73 69 6f 6e 73 2e 20 20 54 68 65 20 69 56 65 72  sions.  The iVer
16c30 73 69 6f 6e 0a 20 20 2a 2a 20 76 61 6c 75 65 20  sion.  ** value 
16c40 77 69 6c 6c 20 69 6e 63 72 65 6d 65 6e 74 20 77  will increment w
16c50 68 65 6e 65 76 65 72 20 74 68 69 73 20 68 61 70  henever this hap
16c60 70 65 6e 73 2e 20 0a 20 20 2a 2f 0a 7d 3b 0a 0a  pens. .  */.};..
16c70 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
16c80 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20 78 41  Flags for the xA
16c90 63 63 65 73 73 20 56 46 53 20 6d 65 74 68 6f 64  ccess VFS method
16ca0 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74  .**.** These int
16cb0 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 63  eger constants c
16cc0 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 74 68  an be used as th
16cd0 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
16ce0 72 20 74 6f 0a 2a 2a 20 74 68 65 20 78 41 63 63  r to.** the xAcc
16cf0 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 20 61 6e  ess method of an
16d00 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f   [sqlite3_vfs] o
16d10 62 6a 65 63 74 2e 20 20 54 68 65 79 20 64 65 74  bject.  They det
16d20 65 72 6d 69 6e 65 0a 2a 2a 20 77 68 61 74 20 6b  ermine.** what k
16d30 69 6e 64 20 6f 66 20 70 65 72 6d 69 73 73 69 6f  ind of permissio
16d40 6e 73 20 74 68 65 20 78 41 63 63 65 73 73 20 6d  ns the xAccess m
16d50 65 74 68 6f 64 20 69 73 20 6c 6f 6f 6b 69 6e 67  ethod is looking
16d60 20 66 6f 72 2e 0a 2a 2a 20 57 69 74 68 20 53 51   for..** With SQ
16d70 4c 49 54 45 5f 41 43 43 45 53 53 5f 45 58 49 53  LITE_ACCESS_EXIS
16d80 54 53 2c 20 74 68 65 20 78 41 63 63 65 73 73 20  TS, the xAccess 
16d90 6d 65 74 68 6f 64 0a 2a 2a 20 73 69 6d 70 6c 79  method.** simply
16da0 20 63 68 65 63 6b 73 20 77 68 65 74 68 65 72 20   checks whether 
16db0 74 68 65 20 66 69 6c 65 20 65 78 69 73 74 73 2e  the file exists.
16dc0 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45 5f  .** With SQLITE_
16dd0 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
16de0 2c 20 74 68 65 20 78 41 63 63 65 73 73 20 6d 65  , the xAccess me
16df0 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73 20 77  thod.** checks w
16e00 68 65 74 68 65 72 20 74 68 65 20 6e 61 6d 65 64  hether the named
16e10 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 62 6f   directory is bo
16e20 74 68 20 72 65 61 64 61 62 6c 65 20 61 6e 64 20  th readable and 
16e30 77 72 69 74 61 62 6c 65 0a 2a 2a 20 28 69 6e 20  writable.** (in 
16e40 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69 66 20  other words, if 
16e50 66 69 6c 65 73 20 63 61 6e 20 62 65 20 61 64 64  files can be add
16e60 65 64 2c 20 72 65 6d 6f 76 65 64 2c 20 61 6e 64  ed, removed, and
16e70 20 72 65 6e 61 6d 65 64 20 77 69 74 68 69 6e 0a   renamed within.
16e80 2a 2a 20 74 68 65 20 64 69 72 65 63 74 6f 72 79  ** the directory
16e90 29 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45  )..** The SQLITE
16ea0 5f 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54  _ACCESS_READWRIT
16eb0 45 20 63 6f 6e 73 74 61 6e 74 20 69 73 20 63 75  E constant is cu
16ec0 72 72 65 6e 74 6c 79 20 75 73 65 64 20 6f 6e 6c  rrently used onl
16ed0 79 20 62 79 20 74 68 65 0a 2a 2a 20 5b 74 65 6d  y by the.** [tem
16ee0 70 5f 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72  p_store_director
16ef0 79 20 70 72 61 67 6d 61 5d 2c 20 74 68 6f 75 67  y pragma], thoug
16f00 68 20 74 68 69 73 20 63 6f 75 6c 64 20 63 68 61  h this could cha
16f10 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72 65 0a  nge in a future.
16f20 2a 2a 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51  ** release of SQ
16f30 4c 69 74 65 2e 0a 2a 2a 20 57 69 74 68 20 53 51  Lite..** With SQ
16f40 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
16f50 2c 20 74 68 65 20 78 41 63 63 65 73 73 20 6d 65  , the xAccess me
16f60 74 68 6f 64 0a 2a 2a 20 63 68 65 63 6b 73 20 77  thod.** checks w
16f70 68 65 74 68 65 72 20 74 68 65 20 66 69 6c 65 20  hether the file 
16f80 69 73 20 72 65 61 64 61 62 6c 65 2e 20 20 54 68  is readable.  Th
16f90 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  e SQLITE_ACCESS_
16fa0 52 45 41 44 20 63 6f 6e 73 74 61 6e 74 20 69 73  READ constant is
16fb0 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20 75 6e  .** currently un
16fc0 75 73 65 64 2c 20 74 68 6f 75 67 68 20 69 74 20  used, though it 
16fd0 6d 69 67 68 74 20 62 65 20 75 73 65 64 20 69 6e  might be used in
16fe0 20 61 20 66 75 74 75 72 65 20 72 65 6c 65 61 73   a future releas
16ff0 65 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65 2e 0a  e of.** SQLite..
17000 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
17010 45 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 20  E_ACCESS_EXISTS 
17020 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51 4c     0.#define SQL
17030 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 57  ITE_ACCESS_READW
17040 52 49 54 45 20 31 20 20 20 2f 2a 20 55 73 65 64  RITE 1   /* Used
17050 20 62 79 20 50 52 41 47 4d 41 20 74 65 6d 70 5f   by PRAGMA temp_
17060 73 74 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20  store_directory 
17070 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
17080 45 5f 41 43 43 45 53 53 5f 52 45 41 44 20 20 20  E_ACCESS_READ   
17090 20 20 20 32 20 20 20 2f 2a 20 55 6e 75 73 65 64     2   /* Unused
170a0 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
170b0 52 45 46 3a 20 46 6c 61 67 73 20 66 6f 72 20 74  REF: Flags for t
170c0 68 65 20 78 53 68 6d 4c 6f 63 6b 20 56 46 53 20  he xShmLock VFS 
170d0 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65  method.**.** The
170e0 73 65 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74  se integer const
170f0 61 6e 74 73 20 64 65 66 69 6e 65 20 74 68 65 20  ants define the 
17100 76 61 72 69 6f 75 73 20 6c 6f 63 6b 69 6e 67 20  various locking 
17110 6f 70 65 72 61 74 69 6f 6e 73 0a 2a 2a 20 61 6c  operations.** al
17120 6c 6f 77 65 64 20 62 79 20 74 68 65 20 78 53 68  lowed by the xSh
17130 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f 66 20  mLock method of 
17140 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
17150 6f 64 73 5d 2e 20 20 54 68 65 0a 2a 2a 20 66 6f  ods].  The.** fo
17160 6c 6c 6f 77 69 6e 67 20 61 72 65 20 74 68 65 20  llowing are the 
17170 6f 6e 6c 79 20 6c 65 67 61 6c 20 63 6f 6d 62 69  only legal combi
17180 6e 61 74 69 6f 6e 73 20 6f 66 20 66 6c 61 67 73  nations of flags
17190 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53 68 6d 4c   to the.** xShmL
171a0 6f 63 6b 20 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a  ock method:.**.*
171b0 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20  * <ul>.** <li>  
171c0 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20  SQLITE_SHM_LOCK 
171d0 7c 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41  | SQLITE_SHM_SHA
171e0 52 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c  RED.** <li>  SQL
171f0 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53  ITE_SHM_LOCK | S
17200 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53  QLITE_SHM_EXCLUS
17210 49 56 45 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c  IVE.** <li>  SQL
17220 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c  ITE_SHM_UNLOCK |
17230 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52   SQLITE_SHM_SHAR
17240 45 44 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49  ED.** <li>  SQLI
17250 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20  TE_SHM_UNLOCK | 
17260 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55  SQLITE_SHM_EXCLU
17270 53 49 56 45 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  SIVE.** </ul>.**
17280 0a 2a 2a 20 57 68 65 6e 20 75 6e 6c 6f 63 6b 69  .** When unlocki
17290 6e 67 2c 20 74 68 65 20 73 61 6d 65 20 53 48 41  ng, the same SHA
172a0 52 45 44 20 6f 72 20 45 58 43 4c 55 53 49 56 45  RED or EXCLUSIVE
172b0 20 66 6c 61 67 20 6d 75 73 74 20 62 65 20 73 75   flag must be su
172c0 70 70 6c 69 65 64 20 61 73 0a 2a 2a 20 77 61 73  pplied as.** was
172d0 20 67 69 76 65 6e 20 6f 6e 20 74 68 65 20 63 6f   given on the co
172e0 72 72 65 73 70 6f 6e 64 69 6e 67 20 6c 6f 63 6b  rresponding lock
172f0 2e 20 20 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 53  .  .**.** The xS
17300 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 63 61  hmLock method ca
17310 6e 20 74 72 61 6e 73 69 74 69 6f 6e 20 62 65 74  n transition bet
17320 77 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20 61 6e  ween unlocked an
17330 64 20 53 48 41 52 45 44 20 6f 72 0a 2a 2a 20 62  d SHARED or.** b
17340 65 74 77 65 65 6e 20 75 6e 6c 6f 63 6b 65 64 20  etween unlocked 
17350 61 6e 64 20 45 58 43 4c 55 53 49 56 45 2e 20 20  and EXCLUSIVE.  
17360 49 74 20 63 61 6e 6e 6f 74 20 74 72 61 6e 73 69  It cannot transi
17370 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 53 48 41  tion between SHA
17380 52 45 44 0a 2a 2a 20 61 6e 64 20 45 58 43 4c 55  RED.** and EXCLU
17390 53 49 56 45 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  SIVE..*/.#define
173a0 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f   SQLITE_SHM_UNLO
173b0 43 4b 20 20 20 20 20 20 20 31 0a 23 64 65 66 69  CK       1.#defi
173c0 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f  ne SQLITE_SHM_LO
173d0 43 4b 20 20 20 20 20 20 20 20 20 32 0a 23 64 65  CK         2.#de
173e0 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f  fine SQLITE_SHM_
173f0 53 48 41 52 45 44 20 20 20 20 20 20 20 34 0a 23  SHARED       4.#
17400 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48  define SQLITE_SH
17410 4d 5f 45 58 43 4c 55 53 49 56 45 20 20 20 20 38  M_EXCLUSIVE    8
17420 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
17430 3a 20 4d 61 78 69 6d 75 6d 20 78 53 68 6d 4c 6f  : Maximum xShmLo
17440 63 6b 20 69 6e 64 65 78 0a 2a 2a 0a 2a 2a 20 54  ck index.**.** T
17450 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68  he xShmLock meth
17460 6f 64 20 6f 6e 20 5b 73 71 6c 69 74 65 33 5f 69  od on [sqlite3_i
17470 6f 5f 6d 65 74 68 6f 64 73 5d 20 6d 61 79 20 75  o_methods] may u
17480 73 65 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74  se values.** bet
17490 77 65 65 6e 20 30 20 61 6e 64 20 74 68 69 73 20  ween 0 and this 
174a0 75 70 70 65 72 20 62 6f 75 6e 64 20 61 73 20 69  upper bound as i
174b0 74 73 20 22 6f 66 66 73 65 74 22 20 61 72 67 75  ts "offset" argu
174c0 6d 65 6e 74 2e 0a 2a 2a 20 54 68 65 20 53 51 4c  ment..** The SQL
174d0 69 74 65 20 63 6f 72 65 20 77 69 6c 6c 20 6e 65  ite core will ne
174e0 76 65 72 20 61 74 74 65 6d 70 74 20 74 6f 20 61  ver attempt to a
174f0 63 71 75 69 72 65 20 6f 72 20 72 65 6c 65 61 73  cquire or releas
17500 65 20 61 0a 2a 2a 20 6c 6f 63 6b 20 6f 75 74 73  e a.** lock outs
17510 69 64 65 20 6f 66 20 74 68 69 73 20 72 61 6e 67  ide of this rang
17520 65 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e.*/.#define SQL
17530 49 54 45 5f 53 48 4d 5f 4e 4c 4f 43 4b 20 20 20  ITE_SHM_NLOCK   
17540 20 20 20 20 20 38 0a 0a 0a 2f 2a 0a 2a 2a 20 43       8.../*.** C
17550 41 50 49 33 52 45 46 3a 20 49 6e 69 74 69 61 6c  API3REF: Initial
17560 69 7a 65 20 54 68 65 20 53 51 4c 69 74 65 20 4c  ize The SQLite L
17570 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 5e 54 68  ibrary.**.** ^Th
17580 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
17590 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65 20 69  lize() routine i
175a0 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 0a 2a  nitializes the.*
175b0 2a 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  * SQLite library
175c0 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  .  ^The sqlite3_
175d0 73 68 75 74 64 6f 77 6e 28 29 20 72 6f 75 74 69  shutdown() routi
175e0 6e 65 0a 2a 2a 20 64 65 61 6c 6c 6f 63 61 74 65  ne.** deallocate
175f0 73 20 61 6e 79 20 72 65 73 6f 75 72 63 65 73 20  s any resources 
17600 74 68 61 74 20 77 65 72 65 20 61 6c 6c 6f 63 61  that were alloca
17610 74 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69  ted by sqlite3_i
17620 6e 69 74 69 61 6c 69 7a 65 28 29 2e 0a 2a 2a 20  nitialize()..** 
17630 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61  These routines a
17640 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f 20 61  re designed to a
17650 69 64 20 69 6e 20 70 72 6f 63 65 73 73 20 69 6e  id in process in
17660 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64  itialization and
17670 0a 2a 2a 20 73 68 75 74 64 6f 77 6e 20 6f 6e 20  .** shutdown on 
17680 65 6d 62 65 64 64 65 64 20 73 79 73 74 65 6d 73  embedded systems
17690 2e 20 20 57 6f 72 6b 73 74 61 74 69 6f 6e 20 61  .  Workstation a
176a0 70 70 6c 69 63 61 74 69 6f 6e 73 20 75 73 69 6e  pplications usin
176b0 67 0a 2a 2a 20 53 51 4c 69 74 65 20 6e 6f 72 6d  g.** SQLite norm
176c0 61 6c 6c 79 20 64 6f 20 6e 6f 74 20 6e 65 65 64  ally do not need
176d0 20 74 6f 20 69 6e 76 6f 6b 65 20 65 69 74 68 65   to invoke eithe
176e0 72 20 6f 66 20 74 68 65 73 65 20 72 6f 75 74 69  r of these routi
176f0 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c  nes..**.** A cal
17700 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 69  l to sqlite3_ini
17710 74 69 61 6c 69 7a 65 28 29 20 69 73 20 61 6e 20  tialize() is an 
17720 22 65 66 66 65 63 74 69 76 65 22 20 63 61 6c 6c  "effective" call
17730 20 69 66 20 69 74 20 69 73 0a 2a 2a 20 74 68 65   if it is.** the
17740 20 66 69 72 73 74 20 74 69 6d 65 20 73 71 6c 69   first time sqli
17750 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
17760 20 69 73 20 69 6e 76 6f 6b 65 64 20 64 75 72 69   is invoked duri
17770 6e 67 20 74 68 65 20 6c 69 66 65 74 69 6d 65 20  ng the lifetime 
17780 6f 66 0a 2a 2a 20 74 68 65 20 70 72 6f 63 65 73  of.** the proces
17790 73 2c 20 6f 72 20 69 66 20 69 74 20 69 73 20 74  s, or if it is t
177a0 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 73 71  he first time sq
177b0 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
177c0 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a  () is invoked.**
177d0 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 63 61 6c   following a cal
177e0 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75  l to sqlite3_shu
177f0 74 64 6f 77 6e 28 29 2e 20 20 5e 28 4f 6e 6c 79  tdown().  ^(Only
17800 20 61 6e 20 65 66 66 65 63 74 69 76 65 20 63 61   an effective ca
17810 6c 6c 0a 2a 2a 20 6f 66 20 73 71 6c 69 74 65 33  ll.** of sqlite3
17820 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64 6f  _initialize() do
17830 65 73 20 61 6e 79 20 69 6e 69 74 69 61 6c 69 7a  es any initializ
17840 61 74 69 6f 6e 2e 20 20 41 6c 6c 20 6f 74 68 65  ation.  All othe
17850 72 20 63 61 6c 6c 73 0a 2a 2a 20 61 72 65 20 68  r calls.** are h
17860 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73 2e 29  armless no-ops.)
17870 5e 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c 20 74  ^.**.** A call t
17880 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  o sqlite3_shutdo
17890 77 6e 28 29 20 69 73 20 61 6e 20 22 65 66 66 65  wn() is an "effe
178a0 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66 20 69  ctive" call if i
178b0 74 20 69 73 20 74 68 65 20 66 69 72 73 74 0a 2a  t is the first.*
178c0 2a 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  * call to sqlite
178d0 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 73 69 6e  3_shutdown() sin
178e0 63 65 20 74 68 65 20 6c 61 73 74 20 73 71 6c 69  ce the last sqli
178f0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
17900 2e 20 20 5e 28 4f 6e 6c 79 0a 2a 2a 20 61 6e 20  .  ^(Only.** an 
17910 65 66 66 65 63 74 69 76 65 20 63 61 6c 6c 20 74  effective call t
17920 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  o sqlite3_shutdo
17930 77 6e 28 29 20 64 6f 65 73 20 61 6e 79 20 64 65  wn() does any de
17940 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a  initialization..
17950 2a 2a 20 41 6c 6c 20 6f 74 68 65 72 20 76 61 6c  ** All other val
17960 69 64 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69  id calls to sqli
17970 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 61  te3_shutdown() a
17980 72 65 20 68 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f  re harmless no-o
17990 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ps.)^.**.** The 
179a0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
179b0 7a 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ze() interface i
179c0 73 20 74 68 72 65 61 64 73 61 66 65 2c 20 62 75  s threadsafe, bu
179d0 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  t sqlite3_shutdo
179e0 77 6e 28 29 0a 2a 2a 20 69 73 20 6e 6f 74 2e 20  wn().** is not. 
179f0 20 54 68 65 20 73 71 6c 69 74 65 33 5f 73 68 75   The sqlite3_shu
17a00 74 64 6f 77 6e 28 29 20 69 6e 74 65 72 66 61 63  tdown() interfac
17a10 65 20 6d 75 73 74 20 6f 6e 6c 79 20 62 65 20 63  e must only be c
17a20 61 6c 6c 65 64 20 66 72 6f 6d 20 61 0a 2a 2a 20  alled from a.** 
17a30 73 69 6e 67 6c 65 20 74 68 72 65 61 64 2e 20 20  single thread.  
17a40 41 6c 6c 20 6f 70 65 6e 20 5b 64 61 74 61 62 61  All open [databa
17a50 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20  se connections] 
17a60 6d 75 73 74 20 62 65 20 63 6c 6f 73 65 64 20 61  must be closed a
17a70 6e 64 20 61 6c 6c 0a 2a 2a 20 6f 74 68 65 72 20  nd all.** other 
17a80 53 51 4c 69 74 65 20 72 65 73 6f 75 72 63 65 73  SQLite resources
17a90 20 6d 75 73 74 20 62 65 20 64 65 61 6c 6c 6f 63   must be dealloc
17aa0 61 74 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e  ated prior to in
17ab0 76 6f 6b 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65  voking.** sqlite
17ac0 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 0a 2a 2a  3_shutdown()..**
17ad0 0a 2a 2a 20 41 6d 6f 6e 67 20 6f 74 68 65 72 20  .** Among other 
17ae0 74 68 69 6e 67 73 2c 20 5e 73 71 6c 69 74 65 33  things, ^sqlite3
17af0 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 77 69  _initialize() wi
17b00 6c 6c 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c  ll invoke.** sql
17b10 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 2e 20  ite3_os_init(). 
17b20 20 53 69 6d 69 6c 61 72 6c 79 2c 20 5e 73 71 6c   Similarly, ^sql
17b30 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 0a  ite3_shutdown().
17b40 2a 2a 20 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 73  ** will invoke s
17b50 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 2e  qlite3_os_end().
17b60 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
17b70 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
17b80 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73   routine returns
17b90 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20   [SQLITE_OK] on 
17ba0 73 75 63 63 65 73 73 2e 0a 2a 2a 20 5e 49 66 20  success..** ^If 
17bb0 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2c  for some reason,
17bc0 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
17bd0 69 7a 65 28 29 20 69 73 20 75 6e 61 62 6c 65 20  ize() is unable 
17be0 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 0a 2a 2a  to initialize.**
17bf0 20 74 68 65 20 6c 69 62 72 61 72 79 20 28 70 65   the library (pe
17c00 72 68 61 70 73 20 69 74 20 69 73 20 75 6e 61 62  rhaps it is unab
17c10 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 61  le to allocate a
17c20 20 6e 65 65 64 65 64 20 72 65 73 6f 75 72 63 65   needed resource
17c30 20 73 75 63 68 0a 2a 2a 20 61 73 20 61 20 6d 75   such.** as a mu
17c40 74 65 78 29 20 69 74 20 72 65 74 75 72 6e 73 20  tex) it returns 
17c50 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20  an [error code] 
17c60 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
17c70 54 45 5f 4f 4b 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54  TE_OK]..**.** ^T
17c80 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  he sqlite3_initi
17c90 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65 20  alize() routine 
17ca0 69 73 20 63 61 6c 6c 65 64 20 69 6e 74 65 72 6e  is called intern
17cb0 61 6c 6c 79 20 62 79 20 6d 61 6e 79 20 6f 74 68  ally by many oth
17cc0 65 72 0a 2a 2a 20 53 51 4c 69 74 65 20 69 6e 74  er.** SQLite int
17cd0 65 72 66 61 63 65 73 20 73 6f 20 74 68 61 74 20  erfaces so that 
17ce0 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 75  an application u
17cf0 73 75 61 6c 6c 79 20 64 6f 65 73 20 6e 6f 74 20  sually does not 
17d00 6e 65 65 64 20 74 6f 0a 2a 2a 20 69 6e 76 6f 6b  need to.** invok
17d10 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  e sqlite3_initia
17d20 6c 69 7a 65 28 29 20 64 69 72 65 63 74 6c 79 2e  lize() directly.
17d30 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 5b    For example, [
17d40 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a  sqlite3_open()].
17d50 2a 2a 20 63 61 6c 6c 73 20 73 71 6c 69 74 65 33  ** calls sqlite3
17d60 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 73 6f  _initialize() so
17d70 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
17d80 61 72 79 20 77 69 6c 6c 20 62 65 20 61 75 74 6f  ary will be auto
17d90 6d 61 74 69 63 61 6c 6c 79 0a 2a 2a 20 69 6e 69  matically.** ini
17da0 74 69 61 6c 69 7a 65 64 20 77 68 65 6e 20 5b 73  tialized when [s
17db0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 20 69  qlite3_open()] i
17dc0 73 20 63 61 6c 6c 65 64 20 69 66 20 69 74 20 68  s called if it h
17dd0 61 73 20 6e 6f 74 20 62 65 20 69 6e 69 74 69 61  as not be initia
17de0 6c 69 7a 65 64 0a 2a 2a 20 61 6c 72 65 61 64 79  lized.** already
17df0 2e 20 20 5e 48 6f 77 65 76 65 72 2c 20 69 66 20  .  ^However, if 
17e00 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
17e10 65 64 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c  ed with the [SQL
17e20 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 49  ITE_OMIT_AUTOINI
17e30 54 5d 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69  T].** compile-ti
17e40 6d 65 20 6f 70 74 69 6f 6e 2c 20 74 68 65 6e 20  me option, then 
17e50 74 68 65 20 61 75 74 6f 6d 61 74 69 63 20 63 61  the automatic ca
17e60 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 69  lls to sqlite3_i
17e70 6e 69 74 69 61 6c 69 7a 65 28 29 0a 2a 2a 20 61  nitialize().** a
17e80 72 65 20 6f 6d 69 74 74 65 64 20 61 6e 64 20 74  re omitted and t
17e90 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
17ea0 75 73 74 20 63 61 6c 6c 20 73 71 6c 69 74 65 33  ust call sqlite3
17eb0 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64 69  _initialize() di
17ec0 72 65 63 74 6c 79 0a 2a 2a 20 70 72 69 6f 72 20  rectly.** prior 
17ed0 74 6f 20 75 73 69 6e 67 20 61 6e 79 20 6f 74 68  to using any oth
17ee0 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  er SQLite interf
17ef0 61 63 65 2e 20 20 46 6f 72 20 6d 61 78 69 6d 75  ace.  For maximu
17f00 6d 20 70 6f 72 74 61 62 69 6c 69 74 79 2c 0a 2a  m portability,.*
17f10 2a 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65 6e  * it is recommen
17f20 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63 61  ded that applica
17f30 74 69 6f 6e 73 20 61 6c 77 61 79 73 20 69 6e 76  tions always inv
17f40 6f 6b 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  oke sqlite3_init
17f50 69 61 6c 69 7a 65 28 29 0a 2a 2a 20 64 69 72 65  ialize().** dire
17f60 63 74 6c 79 20 70 72 69 6f 72 20 74 6f 20 75 73  ctly prior to us
17f70 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 53 51  ing any other SQ
17f80 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20  Lite interface. 
17f90 20 46 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   Future releases
17fa0 0a 2a 2a 20 6f 66 20 53 51 4c 69 74 65 20 6d 61  .** of SQLite ma
17fb0 79 20 72 65 71 75 69 72 65 20 74 68 69 73 2e 20  y require this. 
17fc0 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c   In other words,
17fd0 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 65 78   the behavior ex
17fe0 68 69 62 69 74 65 64 0a 2a 2a 20 77 68 65 6e 20  hibited.** when 
17ff0 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
18000 65 64 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f  ed with [SQLITE_
18010 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d 20 6d  OMIT_AUTOINIT] m
18020 69 67 68 74 20 62 65 63 6f 6d 65 20 74 68 65 0a  ight become the.
18030 2a 2a 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  ** default behav
18040 69 6f 72 20 69 6e 20 73 6f 6d 65 20 66 75 74 75  ior in some futu
18050 72 65 20 72 65 6c 65 61 73 65 20 6f 66 20 53 51  re release of SQ
18060 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  Lite..**.** The 
18070 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
18080 29 20 72 6f 75 74 69 6e 65 20 64 6f 65 73 20 6f  ) routine does o
18090 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65 6d 20  perating-system 
180a0 73 70 65 63 69 66 69 63 0a 2a 2a 20 69 6e 69 74  specific.** init
180b0 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68  ialization of th
180c0 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79  e SQLite library
180d0 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f  .  The sqlite3_o
180e0 73 5f 65 6e 64 28 29 0a 2a 2a 20 72 6f 75 74 69  s_end().** routi
180f0 6e 65 20 75 6e 64 6f 65 73 20 74 68 65 20 65 66  ne undoes the ef
18100 66 65 63 74 20 6f 66 20 73 71 6c 69 74 65 33 5f  fect of sqlite3_
18110 6f 73 5f 69 6e 69 74 28 29 2e 20 20 54 79 70 69  os_init().  Typi
18120 63 61 6c 20 74 61 73 6b 73 0a 2a 2a 20 70 65 72  cal tasks.** per
18130 66 6f 72 6d 65 64 20 62 79 20 74 68 65 73 65 20  formed by these 
18140 72 6f 75 74 69 6e 65 73 20 69 6e 63 6c 75 64 65  routines include
18150 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6f 72 20 64   allocation or d
18160 65 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f  eallocation.** o
18170 66 20 73 74 61 74 69 63 20 72 65 73 6f 75 72 63  f static resourc
18180 65 73 2c 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  es, initializati
18190 6f 6e 20 6f 66 20 67 6c 6f 62 61 6c 20 76 61 72  on of global var
181a0 69 61 62 6c 65 73 2c 0a 2a 2a 20 73 65 74 74 69  iables,.** setti
181b0 6e 67 20 75 70 20 61 20 64 65 66 61 75 6c 74 20  ng up a default 
181c0 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6d 6f  [sqlite3_vfs] mo
181d0 64 75 6c 65 2c 20 6f 72 20 73 65 74 74 69 6e 67  dule, or setting
181e0 20 75 70 0a 2a 2a 20 61 20 64 65 66 61 75 6c 74   up.** a default
181f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 75   configuration u
18200 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 63 6f  sing [sqlite3_co
18210 6e 66 69 67 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54  nfig()]..**.** T
18220 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73  he application s
18230 68 6f 75 6c 64 20 6e 65 76 65 72 20 69 6e 76 6f  hould never invo
18240 6b 65 20 65 69 74 68 65 72 20 73 71 6c 69 74 65  ke either sqlite
18250 33 5f 6f 73 5f 69 6e 69 74 28 29 0a 2a 2a 20 6f  3_os_init().** o
18260 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64  r sqlite3_os_end
18270 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20 54 68  () directly.  Th
18280 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68  e application sh
18290 6f 75 6c 64 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65  ould only invoke
182a0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  .** sqlite3_init
182b0 69 61 6c 69 7a 65 28 29 20 61 6e 64 20 73 71 6c  ialize() and sql
182c0 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e  ite3_shutdown().
182d0 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f 73    The sqlite3_os
182e0 5f 69 6e 69 74 28 29 0a 2a 2a 20 69 6e 74 65 72  _init().** inter
182f0 66 61 63 65 20 69 73 20 63 61 6c 6c 65 64 20 61  face is called a
18300 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20  utomatically by 
18310 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18320 7a 65 28 29 20 61 6e 64 0a 2a 2a 20 73 71 6c 69  ze() and.** sqli
18330 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 69 73 20  te3_os_end() is 
18340 63 61 6c 6c 65 64 20 62 79 20 73 71 6c 69 74 65  called by sqlite
18350 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 41  3_shutdown().  A
18360 70 70 72 6f 70 72 69 61 74 65 0a 2a 2a 20 69 6d  ppropriate.** im
18370 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 66 6f  plementations fo
18380 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  r sqlite3_os_ini
18390 74 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  t() and sqlite3_
183a0 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 61 72 65 20  os_end().** are 
183b0 62 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74  built into SQLit
183c0 65 20 77 68 65 6e 20 69 74 20 69 73 20 63 6f 6d  e when it is com
183d0 70 69 6c 65 64 20 66 6f 72 20 55 6e 69 78 2c 20  piled for Unix, 
183e0 57 69 6e 64 6f 77 73 2c 20 6f 72 20 4f 53 2f 32  Windows, or OS/2
183f0 2e 0a 2a 2a 20 57 68 65 6e 20 5b 63 75 73 74 6f  ..** When [custo
18400 6d 20 62 75 69 6c 64 73 20 7c 20 62 75 69 6c 74  m builds | built
18410 20 66 6f 72 20 6f 74 68 65 72 20 70 6c 61 74 66   for other platf
18420 6f 72 6d 73 5d 0a 2a 2a 20 28 75 73 69 6e 67 20  orms].** (using 
18430 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 53 5f 4f  the [SQLITE_OS_O
18440 54 48 45 52 3d 31 5d 20 63 6f 6d 70 69 6c 65 2d  THER=1] compile-
18450 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 29 20  time.** option) 
18460 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
18470 6d 75 73 74 20 73 75 70 70 6c 79 20 61 20 73 75  must supply a su
18480 69 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  itable implement
18490 61 74 69 6f 6e 20 66 6f 72 0a 2a 2a 20 73 71 6c  ation for.** sql
184a0 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 61  ite3_os_init() a
184b0 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  nd sqlite3_os_en
184c0 64 28 29 2e 20 20 41 6e 20 61 70 70 6c 69 63 61  d().  An applica
184d0 74 69 6f 6e 2d 73 75 70 70 6c 69 65 64 0a 2a 2a  tion-supplied.**
184e0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
184f0 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  of sqlite3_os_in
18500 69 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  it() or sqlite3_
18510 6f 73 5f 65 6e 64 28 29 0a 2a 2a 20 6d 75 73 74  os_end().** must
18520 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
18530 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 20 61  OK] on success a
18540 6e 64 20 73 6f 6d 65 20 6f 74 68 65 72 20 5b 65  nd some other [e
18550 72 72 6f 72 20 63 6f 64 65 5d 20 75 70 6f 6e 0a  rror code] upon.
18560 2a 2a 20 66 61 69 6c 75 72 65 2e 0a 2a 2f 0a 53  ** failure..*/.S
18570 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
18580 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18590 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41  (void);.SQLITE_A
185a0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73  PI int sqlite3_s
185b0 68 75 74 64 6f 77 6e 28 76 6f 69 64 29 3b 0a 53  hutdown(void);.S
185c0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
185d0 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 76 6f  lite3_os_init(vo
185e0 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  id);.SQLITE_API 
185f0 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65  int sqlite3_os_e
18600 6e 64 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  nd(void);../*.**
18610 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69   CAPI3REF: Confi
18620 67 75 72 69 6e 67 20 54 68 65 20 53 51 4c 69 74  guring The SQLit
18630 65 20 4c 69 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20  e Library.**.** 
18640 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  The sqlite3_conf
18650 69 67 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ig() interface i
18660 73 20 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 67  s used to make g
18670 6c 6f 62 61 6c 20 63 6f 6e 66 69 67 75 72 61 74  lobal configurat
18680 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74  ion.** changes t
18690 6f 20 53 51 4c 69 74 65 20 69 6e 20 6f 72 64 65  o SQLite in orde
186a0 72 20 74 6f 20 74 75 6e 65 20 53 51 4c 69 74 65  r to tune SQLite
186b0 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 63   to the specific
186c0 20 6e 65 65 64 73 20 6f 66 0a 2a 2a 20 74 68 65   needs of.** the
186d0 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20 54   application.  T
186e0 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69  he default confi
186f0 67 75 72 61 74 69 6f 6e 20 69 73 20 72 65 63 6f  guration is reco
18700 6d 6d 65 6e 64 65 64 20 66 6f 72 20 6d 6f 73 74  mmended for most
18710 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  .** applications
18720 20 61 6e 64 20 73 6f 20 74 68 69 73 20 72 6f 75   and so this rou
18730 74 69 6e 65 20 69 73 20 75 73 75 61 6c 6c 79 20  tine is usually 
18740 6e 6f 74 20 6e 65 63 65 73 73 61 72 79 2e 20 20  not necessary.  
18750 49 74 20 69 73 0a 2a 2a 20 70 72 6f 76 69 64 65  It is.** provide
18760 64 20 74 6f 20 73 75 70 70 6f 72 74 20 72 61 72  d to support rar
18770 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77  e applications w
18780 69 74 68 20 75 6e 75 73 75 61 6c 20 6e 65 65 64  ith unusual need
18790 73 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 54 68 65 20  s..**.** <b>The 
187a0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
187b0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e 6f   interface is no
187c0 74 20 74 68 72 65 61 64 73 61 66 65 2e 20 54 68  t threadsafe. Th
187d0 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a  e application.**
187e0 20 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68 61   must ensure tha
187f0 74 20 6e 6f 20 6f 74 68 65 72 20 53 51 4c 69 74  t no other SQLit
18800 65 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  e interfaces are
18810 20 69 6e 76 6f 6b 65 64 20 62 79 20 6f 74 68 65   invoked by othe
18820 72 0a 2a 2a 20 74 68 72 65 61 64 73 20 77 68 69  r.** threads whi
18830 6c 65 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  le sqlite3_confi
18840 67 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e 3c  g() is running.<
18850 2f 62 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  /b>.**.** The sq
18860 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69  lite3_config() i
18870 6e 74 65 72 66 61 63 65 0a 2a 2a 20 6d 61 79 20  nterface.** may 
18880 6f 6e 6c 79 20 62 65 20 69 6e 76 6f 6b 65 64 20  only be invoked 
18890 70 72 69 6f 72 20 74 6f 20 6c 69 62 72 61 72 79  prior to library
188a0 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20   initialization 
188b0 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  using.** [sqlite
188c0 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
188d0 6f 72 20 61 66 74 65 72 20 73 68 75 74 64 6f 77  or after shutdow
188e0 6e 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 68  n by [sqlite3_sh
188f0 75 74 64 6f 77 6e 28 29 5d 2e 0a 2a 2a 20 5e 49  utdown()]..** ^I
18900 66 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  f sqlite3_config
18910 28 29 20 69 73 20 63 61 6c 6c 65 64 20 61 66 74  () is called aft
18920 65 72 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74  er [sqlite3_init
18930 69 61 6c 69 7a 65 28 29 5d 20 61 6e 64 20 62 65  ialize()] and be
18940 66 6f 72 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  fore.** [sqlite3
18950 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 74 68 65  _shutdown()] the
18960 6e 20 69 74 20 77 69 6c 6c 20 72 65 74 75 72 6e  n it will return
18970 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2e 0a   SQLITE_MISUSE..
18980 2a 2a 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65 72  ** Note, however
18990 2c 20 74 68 61 74 20 5e 73 71 6c 69 74 65 33 5f  , that ^sqlite3_
189a0 63 6f 6e 66 69 67 28 29 20 63 61 6e 20 62 65 20  config() can be 
189b0 63 61 6c 6c 65 64 20 61 73 20 70 61 72 74 20 6f  called as part o
189c0 66 20 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65  f the.** impleme
189d0 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 70  ntation of an ap
189e0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
189f0 64 20 5b 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  d [sqlite3_os_in
18a00 69 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  it()]..**.** The
18a10 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
18a20 74 6f 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  to sqlite3_confi
18a30 67 28 29 20 69 73 20 61 6e 20 69 6e 74 65 67 65  g() is an intege
18a40 72 0a 2a 2a 20 5b 63 6f 6e 66 69 67 75 72 61 74  r.** [configurat
18a50 69 6f 6e 20 6f 70 74 69 6f 6e 5d 20 74 68 61 74  ion option] that
18a60 20 64 65 74 65 72 6d 69 6e 65 73 0a 2a 2a 20 77   determines.** w
18a70 68 61 74 20 70 72 6f 70 65 72 74 79 20 6f 66 20  hat property of 
18a80 53 51 4c 69 74 65 20 69 73 20 74 6f 20 62 65 20  SQLite is to be 
18a90 63 6f 6e 66 69 67 75 72 65 64 2e 20 20 53 75 62  configured.  Sub
18aa0 73 65 71 75 65 6e 74 20 61 72 67 75 6d 65 6e 74  sequent argument
18ab0 73 0a 2a 2a 20 76 61 72 79 20 64 65 70 65 6e 64  s.** vary depend
18ac0 69 6e 67 20 6f 6e 20 74 68 65 20 5b 63 6f 6e 66  ing on the [conf
18ad0 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
18ae0 5d 0a 2a 2a 20 69 6e 20 74 68 65 20 66 69 72 73  ].** in the firs
18af0 74 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a  t argument..**.*
18b00 2a 20 5e 57 68 65 6e 20 61 20 63 6f 6e 66 69 67  * ^When a config
18b10 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69  uration option i
18b20 73 20 73 65 74 2c 20 73 71 6c 69 74 65 33 5f 63  s set, sqlite3_c
18b30 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e 73 20  onfig() returns 
18b40 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 20  [SQLITE_OK]..** 
18b50 5e 49 66 20 74 68 65 20 6f 70 74 69 6f 6e 20 69  ^If the option i
18b60 73 20 75 6e 6b 6e 6f 77 6e 20 6f 72 20 53 51 4c  s unknown or SQL
18b70 69 74 65 20 69 73 20 75 6e 61 62 6c 65 20 74 6f  ite is unable to
18b80 20 73 65 74 20 74 68 65 20 6f 70 74 69 6f 6e 0a   set the option.
18b90 2a 2a 20 74 68 65 6e 20 74 68 69 73 20 72 6f 75  ** then this rou
18ba0 74 69 6e 65 20 72 65 74 75 72 6e 73 20 61 20 6e  tine returns a n
18bb0 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63  on-zero [error c
18bc0 6f 64 65 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  ode]..*/.SQLITE_
18bd0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
18be0 63 6f 6e 66 69 67 28 69 6e 74 2c 20 2e 2e 2e 29  config(int, ...)
18bf0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
18c00 46 3a 20 43 6f 6e 66 69 67 75 72 65 20 64 61 74  F: Configure dat
18c10 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
18c20 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
18c30 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ite3.**.** The s
18c40 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
18c50 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
18c60 75 73 65 64 20 74 6f 20 6d 61 6b 65 20 63 6f 6e  used to make con
18c70 66 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20 63 68  figuration.** ch
18c80 61 6e 67 65 73 20 74 6f 20 61 20 5b 64 61 74 61  anges to a [data
18c90 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
18ca0 2e 20 20 54 68 65 20 69 6e 74 65 72 66 61 63 65  .  The interface
18cb0 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 0a 2a   is similar to.*
18cc0 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  * [sqlite3_confi
18cd0 67 28 29 5d 20 65 78 63 65 70 74 20 74 68 61 74  g()] except that
18ce0 20 74 68 65 20 63 68 61 6e 67 65 73 20 61 70 70   the changes app
18cf0 6c 79 20 74 6f 20 61 20 73 69 6e 67 6c 65 0a 2a  ly to a single.*
18d00 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
18d10 65 63 74 69 6f 6e 5d 20 28 73 70 65 63 69 66 69  ection] (specifi
18d20 65 64 20 69 6e 20 74 68 65 20 66 69 72 73 74 20  ed in the first 
18d30 61 72 67 75 6d 65 6e 74 29 2e 0a 2a 2a 0a 2a 2a  argument)..**.**
18d40 20 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75   The second argu
18d50 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
18d60 64 62 5f 63 6f 6e 66 69 67 28 44 2c 56 2c 2e 2e  db_config(D,V,..
18d70 2e 29 20 20 69 73 20 74 68 65 0a 2a 2a 20 5b 53  .)  is the.** [S
18d80 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c  QLITE_DBCONFIG_L
18d90 4f 4f 4b 41 53 49 44 45 20 7c 20 63 6f 6e 66 69  OOKASIDE | confi
18da0 67 75 72 61 74 69 6f 6e 20 76 65 72 62 5d 20 2d  guration verb] -
18db0 20 61 6e 20 69 6e 74 65 67 65 72 20 63 6f 64 65   an integer code
18dc0 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69 63 61   .** that indica
18dd0 74 65 73 20 77 68 61 74 20 61 73 70 65 63 74 20  tes what aspect 
18de0 6f 66 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  of the [database
18df0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 69 73 20   connection] is 
18e00 62 65 69 6e 67 20 63 6f 6e 66 69 67 75 72 65 64  being configured
18e10 2e 0a 2a 2a 20 53 75 62 73 65 71 75 65 6e 74 20  ..** Subsequent 
18e20 61 72 67 75 6d 65 6e 74 73 20 76 61 72 79 20 64  arguments vary d
18e30 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
18e40 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 76 65  configuration ve
18e50 72 62 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 73  rb..**.** ^Calls
18e60 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 62 5f 63   to sqlite3_db_c
18e70 6f 6e 66 69 67 28 29 20 72 65 74 75 72 6e 20 53  onfig() return S
18e80 51 4c 49 54 45 5f 4f 4b 20 69 66 20 61 6e 64 20  QLITE_OK if and 
18e90 6f 6e 6c 79 20 69 66 0a 2a 2a 20 74 68 65 20 63  only if.** the c
18ea0 61 6c 6c 20 69 73 20 63 6f 6e 73 69 64 65 72 65  all is considere
18eb0 64 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 2a 2f  d successful..*/
18ec0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
18ed0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
18ee0 67 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20  g(sqlite3*, int 
18ef0 6f 70 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a  op, ...);../*.**
18f00 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d 6f 72   CAPI3REF: Memor
18f10 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 52 6f 75  y Allocation Rou
18f20 74 69 6e 65 73 0a 2a 2a 0a 2a 2a 20 41 6e 20 69  tines.**.** An i
18f30 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
18f40 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74  object defines t
18f50 68 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74  he interface bet
18f60 77 65 65 6e 20 53 51 4c 69 74 65 0a 2a 2a 20 61  ween SQLite.** a
18f70 6e 64 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d  nd low-level mem
18f80 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72  ory allocation r
18f90 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 54  outines..**.** T
18fa0 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 75 73  his object is us
18fb0 65 64 20 69 6e 20 6f 6e 6c 79 20 6f 6e 65 20 70  ed in only one p
18fc0 6c 61 63 65 20 69 6e 20 74 68 65 20 53 51 4c 69  lace in the SQLi
18fd0 74 65 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a  te interface..**
18fe0 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   A pointer to an
18ff0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69   instance of thi
19000 73 20 6f 62 6a 65 63 74 20 69 73 20 74 68 65 20  s object is the 
19010 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 5b  argument to.** [
19020 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
19030 5d 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 66 69  ] when the confi
19040 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
19050 69 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f  is.** [SQLITE_CO
19060 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 20 6f 72 20  NFIG_MALLOC] or 
19070 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47  [SQLITE_CONFIG_G
19080 45 54 4d 41 4c 4c 4f 43 5d 2e 20 20 0a 2a 2a 20  ETMALLOC].  .** 
19090 42 79 20 63 72 65 61 74 69 6e 67 20 61 6e 20 69  By creating an i
190a0 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20  nstance of this 
190b0 6f 62 6a 65 63 74 0a 2a 2a 20 61 6e 64 20 70 61  object.** and pa
190c0 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71 6c  ssing it to [sql
190d0 69 74 65 33 5f 63 6f 6e 66 69 67 5d 28 5b 53 51  ite3_config]([SQ
190e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c  LITE_CONFIG_MALL
190f0 4f 43 5d 29 0a 2a 2a 20 64 75 72 69 6e 67 20 63  OC]).** during c
19100 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 20 61 6e  onfiguration, an
19110 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 61 6e   application can
19120 20 73 70 65 63 69 66 79 20 61 6e 20 61 6c 74 65   specify an alte
19130 72 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72  rnative.** memor
19140 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 75 62  y allocation sub
19150 73 79 73 74 65 6d 20 66 6f 72 20 53 51 4c 69 74  system for SQLit
19160 65 20 74 6f 20 75 73 65 20 66 6f 72 20 61 6c 6c  e to use for all
19170 20 6f 66 20 69 74 73 0a 2a 2a 20 64 79 6e 61 6d   of its.** dynam
19180 69 63 20 6d 65 6d 6f 72 79 20 6e 65 65 64 73 2e  ic memory needs.
19190 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74  .**.** Note that
191a0 20 53 51 4c 69 74 65 20 63 6f 6d 65 73 20 77 69   SQLite comes wi
191b0 74 68 20 73 65 76 65 72 61 6c 20 5b 62 75 69 6c  th several [buil
191c0 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  t-in memory allo
191d0 63 61 74 6f 72 73 5d 0a 2a 2a 20 74 68 61 74 20  cators].** that 
191e0 61 72 65 20 70 65 72 66 65 63 74 6c 79 20 61 64  are perfectly ad
191f0 65 71 75 61 74 65 20 66 6f 72 20 74 68 65 20 6f  equate for the o
19200 76 65 72 77 68 65 6c 6d 69 6e 67 20 6d 61 6a 6f  verwhelming majo
19210 72 69 74 79 20 6f 66 20 61 70 70 6c 69 63 61 74  rity of applicat
19220 69 6f 6e 73 0a 2a 2a 20 61 6e 64 20 74 68 61 74  ions.** and that
19230 20 74 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20   this object is 
19240 6f 6e 6c 79 20 75 73 65 66 75 6c 20 74 6f 20 61  only useful to a
19250 20 74 69 6e 79 20 6d 69 6e 6f 72 69 74 79 20 6f   tiny minority o
19260 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a  f applications.*
19270 2a 20 77 69 74 68 20 73 70 65 63 69 61 6c 69 7a  * with specializ
19280 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ed memory alloca
19290 74 69 6f 6e 20 72 65 71 75 69 72 65 6d 65 6e 74  tion requirement
192a0 73 2e 20 20 54 68 69 73 20 6f 62 6a 65 63 74 20  s.  This object 
192b0 69 73 0a 2a 2a 20 61 6c 73 6f 20 75 73 65 64 20  is.** also used 
192c0 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20 6f  during testing o
192d0 66 20 53 51 4c 69 74 65 20 69 6e 20 6f 72 64 65  f SQLite in orde
192e0 72 20 74 6f 20 73 70 65 63 69 66 79 20 61 6e 20  r to specify an 
192f0 61 6c 74 65 72 6e 61 74 69 76 65 0a 2a 2a 20 6d  alternative.** m
19300 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
19310 74 68 61 74 20 73 69 6d 75 6c 61 74 65 73 20 6d  that simulates m
19320 65 6d 6f 72 79 20 6f 75 74 2d 6f 66 2d 6d 65 6d  emory out-of-mem
19330 6f 72 79 20 63 6f 6e 64 69 74 69 6f 6e 73 20 69  ory conditions i
19340 6e 0a 2a 2a 20 6f 72 64 65 72 20 74 6f 20 76 65  n.** order to ve
19350 72 69 66 79 20 74 68 61 74 20 53 51 4c 69 74 65  rify that SQLite
19360 20 72 65 63 6f 76 65 72 73 20 67 72 61 63 65 66   recovers gracef
19370 75 6c 6c 79 20 66 72 6f 6d 20 73 75 63 68 0a 2a  ully from such.*
19380 2a 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 2a 2a  * conditions..**
19390 0a 2a 2a 20 54 68 65 20 78 4d 61 6c 6c 6f 63 2c  .** The xMalloc,
193a0 20 78 52 65 61 6c 6c 6f 63 2c 20 61 6e 64 20 78   xRealloc, and x
193b0 46 72 65 65 20 6d 65 74 68 6f 64 73 20 6d 75 73  Free methods mus
193c0 74 20 77 6f 72 6b 20 6c 69 6b 65 20 74 68 65 0a  t work like the.
193d0 2a 2a 20 6d 61 6c 6c 6f 63 28 29 2c 20 72 65 61  ** malloc(), rea
193e0 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28  lloc() and free(
193f0 29 20 66 75 6e 63 74 69 6f 6e 73 20 66 72 6f 6d  ) functions from
19400 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20   the standard C 
19410 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 5e 53 51 4c  library..** ^SQL
19420 69 74 65 20 67 75 61 72 61 6e 74 65 65 73 20 74  ite guarantees t
19430 68 61 74 20 74 68 65 20 73 65 63 6f 6e 64 20 61  hat the second a
19440 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 78 52  rgument to.** xR
19450 65 61 6c 6c 6f 63 20 69 73 20 61 6c 77 61 79 73  ealloc is always
19460 20 61 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65   a value returne
19470 64 20 62 79 20 61 20 70 72 69 6f 72 20 63 61 6c  d by a prior cal
19480 6c 20 74 6f 20 78 52 6f 75 6e 64 75 70 2e 0a 2a  l to xRoundup..*
19490 2a 0a 2a 2a 20 78 53 69 7a 65 20 73 68 6f 75 6c  *.** xSize shoul
194a0 64 20 72 65 74 75 72 6e 20 74 68 65 20 61 6c 6c  d return the all
194b0 6f 63 61 74 65 64 20 73 69 7a 65 20 6f 66 20 61  ocated size of a
194c0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
194d0 6f 6e 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79  on.** previously
194e0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 78   obtained from x
194f0 4d 61 6c 6c 6f 63 20 6f 72 20 78 52 65 61 6c 6c  Malloc or xReall
19500 6f 63 2e 20 20 54 68 65 20 61 6c 6c 6f 63 61 74  oc.  The allocat
19510 65 64 20 73 69 7a 65 0a 2a 2a 20 69 73 20 61 6c  ed size.** is al
19520 77 61 79 73 20 61 74 20 6c 65 61 73 74 20 61 73  ways at least as
19530 20 62 69 67 20 61 73 20 74 68 65 20 72 65 71 75   big as the requ
19540 65 73 74 65 64 20 73 69 7a 65 20 62 75 74 20 6d  ested size but m
19550 61 79 20 62 65 20 6c 61 72 67 65 72 2e 0a 2a 2a  ay be larger..**
19560 0a 2a 2a 20 54 68 65 20 78 52 6f 75 6e 64 75 70  .** The xRoundup
19570 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20   method returns 
19580 77 68 61 74 20 77 6f 75 6c 64 20 62 65 20 74 68  what would be th
19590 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65  e allocated size
195a0 20 6f 66 0a 2a 2a 20 61 20 6d 65 6d 6f 72 79 20   of.** a memory 
195b0 61 6c 6c 6f 63 61 74 69 6f 6e 20 67 69 76 65 6e  allocation given
195c0 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 72 65   a particular re
195d0 71 75 65 73 74 65 64 20 73 69 7a 65 2e 20 20 4d  quested size.  M
195e0 6f 73 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c  ost memory.** al
195f0 6c 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64 20 75  locators round u
19600 70 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  p memory allocat
19610 69 6f 6e 73 20 61 74 20 6c 65 61 73 74 20 74 6f  ions at least to
19620 20 74 68 65 20 6e 65 78 74 20 6d 75 6c 74 69 70   the next multip
19630 6c 65 0a 2a 2a 20 6f 66 20 38 2e 20 20 53 6f 6d  le.** of 8.  Som
19640 65 20 61 6c 6c 6f 63 61 74 6f 72 73 20 72 6f 75  e allocators rou
19650 6e 64 20 75 70 20 74 6f 20 61 20 6c 61 72 67 65  nd up to a large
19660 72 20 6d 75 6c 74 69 70 6c 65 20 6f 72 20 74 6f  r multiple or to
19670 20 61 20 70 6f 77 65 72 20 6f 66 20 32 2e 0a 2a   a power of 2..*
19680 2a 20 45 76 65 72 79 20 6d 65 6d 6f 72 79 20 61  * Every memory a
19690 6c 6c 6f 63 61 74 69 6f 6e 20 72 65 71 75 65 73  llocation reques
196a0 74 20 63 6f 6d 69 6e 67 20 69 6e 20 74 68 72 6f  t coming in thro
196b0 75 67 68 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ugh [sqlite3_mal
196c0 6c 6f 63 28 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71  loc()].** or [sq
196d0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d  lite3_realloc()]
196e0 20 66 69 72 73 74 20 63 61 6c 6c 73 20 78 52 6f   first calls xRo
196f0 75 6e 64 75 70 2e 20 20 49 66 20 78 52 6f 75 6e  undup.  If xRoun
19700 64 75 70 20 72 65 74 75 72 6e 73 20 30 2c 20 0a  dup returns 0, .
19710 2a 2a 20 74 68 61 74 20 63 61 75 73 65 73 20 74  ** that causes t
19720 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  he corresponding
19730 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
19740 6f 6e 20 74 6f 20 66 61 69 6c 2e 0a 2a 2a 0a 2a  on to fail..**.*
19750 2a 20 54 68 65 20 78 49 6e 69 74 20 6d 65 74 68  * The xInit meth
19760 6f 64 20 69 6e 69 74 69 61 6c 69 7a 65 73 20 74  od initializes t
19770 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  he memory alloca
19780 74 6f 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  tor.  For exampl
19790 65 2c 0a 2a 2a 20 69 74 20 6d 69 67 68 74 20 61  e,.** it might a
197a0 6c 6c 6f 63 61 74 65 20 61 6e 79 20 72 65 71 75  llocate any requ
197b0 69 72 65 20 6d 75 74 65 78 65 73 20 6f 72 20 69  ire mutexes or i
197c0 6e 69 74 69 61 6c 69 7a 65 20 69 6e 74 65 72 6e  nitialize intern
197d0 61 6c 20 64 61 74 61 0a 2a 2a 20 73 74 72 75 63  al data.** struc
197e0 74 75 72 65 73 2e 20 20 54 68 65 20 78 53 68 75  tures.  The xShu
197f0 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69 73 20  tdown method is 
19800 69 6e 76 6f 6b 65 64 20 28 69 6e 64 69 72 65 63  invoked (indirec
19810 74 6c 79 29 20 62 79 0a 2a 2a 20 5b 73 71 6c 69  tly) by.** [sqli
19820 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20  te3_shutdown()] 
19830 61 6e 64 20 73 68 6f 75 6c 64 20 64 65 61 6c 6c  and should deall
19840 6f 63 61 74 65 20 61 6e 79 20 72 65 73 6f 75 72  ocate any resour
19850 63 65 73 20 61 63 71 75 69 72 65 64 0a 2a 2a 20  ces acquired.** 
19860 62 79 20 78 49 6e 69 74 2e 20 20 54 68 65 20 70  by xInit.  The p
19870 41 70 70 44 61 74 61 20 70 6f 69 6e 74 65 72 20  AppData pointer 
19880 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 6f  is used as the o
19890 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 20 74 6f  nly parameter to
198a0 0a 2a 2a 20 78 49 6e 69 74 20 61 6e 64 20 78 53  .** xInit and xS
198b0 68 75 74 64 6f 77 6e 2e 0a 2a 2a 0a 2a 2a 20 53  hutdown..**.** S
198c0 51 4c 69 74 65 20 68 6f 6c 64 73 20 74 68 65 20  QLite holds the 
198d0 5b 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f 53 54  [SQLITE_MUTEX_ST
198e0 41 54 49 43 5f 4d 41 53 54 45 52 5d 20 6d 75 74  ATIC_MASTER] mut
198f0 65 78 20 77 68 65 6e 20 69 74 20 69 6e 76 6f 6b  ex when it invok
19900 65 73 0a 2a 2a 20 74 68 65 20 78 49 6e 69 74 20  es.** the xInit 
19910 6d 65 74 68 6f 64 2c 20 73 6f 20 74 68 65 20 78  method, so the x
19920 49 6e 69 74 20 6d 65 74 68 6f 64 20 6e 65 65 64  Init method need
19930 20 6e 6f 74 20 62 65 20 74 68 72 65 61 64 73 61   not be threadsa
19940 66 65 2e 20 20 54 68 65 0a 2a 2a 20 78 53 68 75  fe.  The.** xShu
19950 74 64 6f 77 6e 20 6d 65 74 68 6f 64 20 69 73 20  tdown method is 
19960 6f 6e 6c 79 20 63 61 6c 6c 65 64 20 66 72 6f 6d  only called from
19970 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f   [sqlite3_shutdo
19980 77 6e 28 29 5d 20 73 6f 20 69 74 20 64 6f 65 73  wn()] so it does
19990 0a 2a 2a 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  .** not need to 
199a0 62 65 20 74 68 72 65 61 64 73 61 66 65 20 65 69  be threadsafe ei
199b0 74 68 65 72 2e 20 20 46 6f 72 20 61 6c 6c 20 6f  ther.  For all o
199c0 74 68 65 72 20 6d 65 74 68 6f 64 73 2c 20 53 51  ther methods, SQ
199d0 4c 69 74 65 0a 2a 2a 20 68 6f 6c 64 73 20 74 68  Lite.** holds th
199e0 65 20 5b 53 51 4c 49 54 45 5f 4d 55 54 45 58 5f  e [SQLITE_MUTEX_
199f0 53 54 41 54 49 43 5f 4d 45 4d 5d 20 6d 75 74 65  STATIC_MEM] mute
19a00 78 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65  x as long as the
19a10 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  .** [SQLITE_CONF
19a20 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20 63 6f  IG_MEMSTATUS] co
19a30 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
19a40 6f 6e 20 69 73 20 74 75 72 6e 65 64 20 6f 6e 20  on is turned on 
19a50 28 77 68 69 63 68 0a 2a 2a 20 69 74 20 69 73 20  (which.** it is 
19a60 62 79 20 64 65 66 61 75 6c 74 29 20 61 6e 64 20  by default) and 
19a70 73 6f 20 74 68 65 20 6d 65 74 68 6f 64 73 20 61  so the methods a
19a80 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
19a90 20 73 65 72 69 61 6c 69 7a 65 64 2e 0a 2a 2a 20   serialized..** 
19aa0 48 6f 77 65 76 65 72 2c 20 69 66 20 5b 53 51 4c  However, if [SQL
19ab0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
19ac0 41 54 55 53 5d 20 69 73 20 64 69 73 61 62 6c 65  ATUS] is disable
19ad0 64 2c 20 74 68 65 6e 20 74 68 65 20 6f 74 68 65  d, then the othe
19ae0 72 0a 2a 2a 20 6d 65 74 68 6f 64 73 20 6d 75 73  r.** methods mus
19af0 74 20 62 65 20 74 68 72 65 61 64 73 61 66 65 20  t be threadsafe 
19b00 6f 72 20 65 6c 73 65 20 6d 61 6b 65 20 74 68 65  or else make the
19b10 69 72 20 6f 77 6e 20 61 72 72 61 6e 67 65 6d 65  ir own arrangeme
19b20 6e 74 73 20 66 6f 72 0a 2a 2a 20 73 65 72 69 61  nts for.** seria
19b30 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  lization..**.** 
19b40 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e 65 76 65  SQLite will neve
19b50 72 20 69 6e 76 6f 6b 65 20 78 49 6e 69 74 28 29  r invoke xInit()
19b60 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 20   more than once 
19b70 77 69 74 68 6f 75 74 20 61 6e 20 69 6e 74 65 72  without an inter
19b80 76 65 6e 69 6e 67 0a 2a 2a 20 63 61 6c 6c 20 74  vening.** call t
19b90 6f 20 78 53 68 75 74 64 6f 77 6e 28 29 2e 0a 2a  o xShutdown()..*
19ba0 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74  /.typedef struct
19bb0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
19bc0 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 6d 65 6d  hods sqlite3_mem
19bd0 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75 63 74  _methods;.struct
19be0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
19bf0 68 6f 64 73 20 7b 0a 20 20 76 6f 69 64 20 2a 28  hods {.  void *(
19c00 2a 78 4d 61 6c 6c 6f 63 29 28 69 6e 74 29 3b 20  *xMalloc)(int); 
19c10 20 20 20 20 20 20 20 20 2f 2a 20 4d 65 6d 6f 72          /* Memor
19c20 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 75 6e  y allocation fun
19c30 63 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20  ction */.  void 
19c40 28 2a 78 46 72 65 65 29 28 76 6f 69 64 2a 29 3b  (*xFree)(void*);
19c50 20 20 20 20 20 20 20 20 20 20 2f 2a 20 46 72 65            /* Fre
19c60 65 20 61 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61  e a prior alloca
19c70 74 69 6f 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 2a  tion */.  void *
19c80 28 2a 78 52 65 61 6c 6c 6f 63 29 28 76 6f 69 64  (*xRealloc)(void
19c90 2a 2c 69 6e 74 29 3b 20 20 2f 2a 20 52 65 73 69  *,int);  /* Resi
19ca0 7a 65 20 61 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e  ze an allocation
19cb0 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 69 7a   */.  int (*xSiz
19cc0 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20  e)(void*);      
19cd0 20 20 20 20 20 2f 2a 20 52 65 74 75 72 6e 20 74       /* Return t
19ce0 68 65 20 73 69 7a 65 20 6f 66 20 61 6e 20 61 6c  he size of an al
19cf0 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e  location */.  in
19d00 74 20 28 2a 78 52 6f 75 6e 64 75 70 29 28 69 6e  t (*xRoundup)(in
19d10 74 29 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20  t);          /* 
19d20 52 6f 75 6e 64 20 75 70 20 72 65 71 75 65 73 74  Round up request
19d30 20 73 69 7a 65 20 74 6f 20 61 6c 6c 6f 63 61 74   size to allocat
19d40 69 6f 6e 20 73 69 7a 65 20 2a 2f 0a 20 20 69 6e  ion size */.  in
19d50 74 20 28 2a 78 49 6e 69 74 29 28 76 6f 69 64 2a  t (*xInit)(void*
19d60 29 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  );           /* 
19d70 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6d  Initialize the m
19d80 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20  emory allocator 
19d90 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 53 68 75  */.  void (*xShu
19da0 74 64 6f 77 6e 29 28 76 6f 69 64 2a 29 3b 20 20  tdown)(void*);  
19db0 20 20 20 20 2f 2a 20 44 65 69 6e 69 74 69 61 6c      /* Deinitial
19dc0 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 61  ize the memory a
19dd0 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20 76 6f  llocator */.  vo
19de0 69 64 20 2a 70 41 70 70 44 61 74 61 3b 20 20 20  id *pAppData;   
19df0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
19e00 41 72 67 75 6d 65 6e 74 20 74 6f 20 78 49 6e 69  Argument to xIni
19e10 74 28 29 20 61 6e 64 20 78 53 68 75 74 64 6f 77  t() and xShutdow
19e20 6e 28 29 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  n() */.};../*.**
19e30 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69   CAPI3REF: Confi
19e40 67 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73  guration Options
19e50 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 63  .** KEYWORDS: {c
19e60 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
19e70 69 6f 6e 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ion}.**.** These
19e80 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 74   constants are t
19e90 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74  he available int
19ea0 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69  eger configurati
19eb0 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 0a  on options that.
19ec0 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73 65 64  ** can be passed
19ed0 20 61 73 20 74 68 65 20 66 69 72 73 74 20 61 72   as the first ar
19ee0 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 73  gument to the [s
19ef0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
19f00 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a   interface..**.*
19f10 2a 20 4e 65 77 20 63 6f 6e 66 69 67 75 72 61 74  * New configurat
19f20 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20  ion options may 
19f30 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75  be added in futu
19f40 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
19f50 51 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73 74 69  QLite..** Existi
19f60 6e 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ng configuration
19f70 20 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 62   options might b
19f80 65 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 2e 20  e discontinued. 
19f90 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a   Applications.**
19fa0 20 73 68 6f 75 6c 64 20 63 68 65 63 6b 20 74 68   should check th
19fb0 65 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66 72  e return code fr
19fc0 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  om [sqlite3_conf
19fd0 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20 73 75  ig()] to make su
19fe0 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 63  re that.** the c
19ff0 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 54 68 65  all worked.  The
1a000 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
1a010 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69  ()] interface wi
1a020 6c 6c 20 72 65 74 75 72 6e 20 61 0a 2a 2a 20 6e  ll return a.** n
1a030 6f 6e 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63  on-zero [error c
1a040 6f 64 65 5d 20 69 66 20 61 20 64 69 73 63 6f 6e  ode] if a discon
1a050 74 69 6e 75 65 64 20 6f 72 20 75 6e 73 75 70 70  tinued or unsupp
1a060 6f 72 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74  orted configurat
1a070 69 6f 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73  ion option.** is
1a080 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20   invoked..**.** 
1a090 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  <dl>.** [[SQLITE
1a0a0 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48  _CONFIG_SINGLETH
1a0b0 52 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  READ]] <dt>SQLIT
1a0c0 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54  E_CONFIG_SINGLET
1a0d0 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  HREAD</dt>.** <d
1a0e0 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  d>There are no a
1a0f0 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69 73  rguments to this
1a100 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20   option.  ^This 
1a110 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 0a  option sets the.
1a120 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  ** [threading mo
1a130 64 65 5d 20 74 6f 20 53 69 6e 67 6c 65 2d 74 68  de] to Single-th
1a140 72 65 61 64 2e 20 20 49 6e 20 6f 74 68 65 72 20  read.  In other 
1a150 77 6f 72 64 73 2c 20 69 74 20 64 69 73 61 62 6c  words, it disabl
1a160 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75 74 65 78 69  es.** all mutexi
1a170 6e 67 20 61 6e 64 20 70 75 74 73 20 53 51 4c 69  ng and puts SQLi
1a180 74 65 20 69 6e 74 6f 20 61 20 6d 6f 64 65 20 77  te into a mode w
1a190 68 65 72 65 20 69 74 20 63 61 6e 20 6f 6e 6c 79  here it can only
1a1a0 20 62 65 20 75 73 65 64 0a 2a 2a 20 62 79 20 61   be used.** by a
1a1b0 20 73 69 6e 67 6c 65 20 74 68 72 65 61 64 2e 20   single thread. 
1a1c0 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20    ^If SQLite is 
1a1d0 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
1a1e0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52   the [SQLITE_THR
1a1f0 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45  EADSAFE | SQLITE
1a200 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63  _THREADSAFE=0] c
1a210 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1a220 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73  on then.** it is
1a230 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f   not possible to
1a240 20 63 68 61 6e 67 65 20 74 68 65 20 5b 74 68 72   change the [thr
1a250 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 66 72 6f  eading mode] fro
1a260 6d 20 69 74 73 20 64 65 66 61 75 6c 74 0a 2a 2a  m its default.**
1a270 20 76 61 6c 75 65 20 6f 66 20 53 69 6e 67 6c 65   value of Single
1a280 2d 74 68 72 65 61 64 20 61 6e 64 20 73 6f 20 5b  -thread and so [
1a290 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
1a2a0 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 0a 2a  ] will return .*
1a2b0 2a 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  * [SQLITE_ERROR]
1a2c0 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20   if called with 
1a2d0 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  the SQLITE_CONFI
1a2e0 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 0a 2a  G_SINGLETHREAD.*
1a2f0 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  * configuration 
1a300 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a  option.</dd>.**.
1a310 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1a320 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 5d  IG_MULTITHREAD]]
1a330 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1a340 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 3c 2f  IG_MULTITHREAD</
1a350 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65  dt>.** <dd>There
1a360 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74   are no argument
1a370 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e  s to this option
1a380 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20  .  ^This option 
1a390 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72  sets the.** [thr
1a3a0 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20  eading mode] to 
1a3b0 4d 75 6c 74 69 2d 74 68 72 65 61 64 2e 20 20 49  Multi-thread.  I
1a3c0 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69  n other words, i
1a3d0 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20 6d 75  t disables.** mu
1a3e0 74 65 78 69 6e 67 20 6f 6e 20 5b 64 61 74 61 62  texing on [datab
1a3f0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
1a400 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73 74  and [prepared st
1a410 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74 73  atement] objects
1a420 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61  ..** The applica
1a430 74 69 6f 6e 20 69 73 20 72 65 73 70 6f 6e 73 69  tion is responsi
1a440 62 6c 65 20 66 6f 72 20 73 65 72 69 61 6c 69 7a  ble for serializ
1a450 69 6e 67 20 61 63 63 65 73 73 20 74 6f 0a 2a 2a  ing access to.**
1a460 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
1a470 63 74 69 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65  ctions] and [pre
1a480 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
1a490 5d 2e 20 20 42 75 74 20 6f 74 68 65 72 20 6d 75  ].  But other mu
1a4a0 74 65 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61  texes.** are ena
1a4b0 62 6c 65 64 20 73 6f 20 74 68 61 74 20 53 51 4c  bled so that SQL
1a4c0 69 74 65 20 77 69 6c 6c 20 62 65 20 73 61 66 65  ite will be safe
1a4d0 20 74 6f 20 75 73 65 20 69 6e 20 61 20 6d 75 6c   to use in a mul
1a4e0 74 69 2d 74 68 72 65 61 64 65 64 0a 2a 2a 20 65  ti-threaded.** e
1a4f0 6e 76 69 72 6f 6e 6d 65 6e 74 20 61 73 20 6c 6f  nvironment as lo
1a500 6e 67 20 61 73 20 6e 6f 20 74 77 6f 20 74 68 72  ng as no two thr
1a510 65 61 64 73 20 61 74 74 65 6d 70 74 20 74 6f 20  eads attempt to 
1a520 75 73 65 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20  use the same.** 
1a530 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
1a540 74 69 6f 6e 5d 20 61 74 20 74 68 65 20 73 61 6d  tion] at the sam
1a550 65 20 74 69 6d 65 2e 20 20 5e 49 66 20 53 51 4c  e time.  ^If SQL
1a560 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ite is compiled 
1a570 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c  with.** the [SQL
1a580 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c  ITE_THREADSAFE |
1a590 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41   SQLITE_THREADSA
1a5a0 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  FE=0] compile-ti
1a5b0 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a  me option then.*
1a5c0 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73  * it is not poss
1a5d0 69 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20  ible to set the 
1a5e0 4d 75 6c 74 69 2d 74 68 72 65 61 64 20 5b 74 68  Multi-thread [th
1a5f0 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 6e  reading mode] an
1a600 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  d.** [sqlite3_co
1a610 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72 65 74  nfig()] will ret
1a620 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f  urn [SQLITE_ERRO
1a630 52 5d 20 69 66 20 63 61 6c 6c 65 64 20 77 69 74  R] if called wit
1a640 68 20 74 68 65 0a 2a 2a 20 53 51 4c 49 54 45 5f  h the.** SQLITE_
1a650 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
1a660 41 44 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  AD configuration
1a670 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a   option.</dd>.**
1a680 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1a690 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 5d 5d  FIG_SERIALIZED]]
1a6a0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1a6b0 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 3c 2f 64  IG_SERIALIZED</d
1a6c0 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20  t>.** <dd>There 
1a6d0 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73  are no arguments
1a6e0 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e   to this option.
1a6f0 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 73    ^This option s
1a700 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65  ets the.** [thre
1a710 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53  ading mode] to S
1a720 65 72 69 61 6c 69 7a 65 64 2e 20 49 6e 20 6f 74  erialized. In ot
1a730 68 65 72 20 77 6f 72 64 73 2c 20 74 68 69 73 20  her words, this 
1a740 6f 70 74 69 6f 6e 20 65 6e 61 62 6c 65 73 0a 2a  option enables.*
1a750 2a 20 61 6c 6c 20 6d 75 74 65 78 65 73 20 69 6e  * all mutexes in
1a760 63 6c 75 64 69 6e 67 20 74 68 65 20 72 65 63 75  cluding the recu
1a770 72 73 69 76 65 0a 2a 2a 20 6d 75 74 65 78 65 73  rsive.** mutexes
1a780 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f   on [database co
1a790 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20 5b 70  nnection] and [p
1a7a0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
1a7b0 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20 49  t] objects..** I
1a7c0 6e 20 74 68 69 73 20 6d 6f 64 65 20 28 77 68 69  n this mode (whi
1a7d0 63 68 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  ch is the defaul
1a7e0 74 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69 73  t when SQLite is
1a7f0 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a   compiled with.*
1a800 2a 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  * [SQLITE_THREAD
1a810 53 41 46 45 3d 31 5d 29 20 74 68 65 20 53 51 4c  SAFE=1]) the SQL
1a820 69 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ite library will
1a830 20 69 74 73 65 6c 66 20 73 65 72 69 61 6c 69 7a   itself serializ
1a840 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 5b  e access.** to [
1a850 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1a860 69 6f 6e 73 5d 20 61 6e 64 20 5b 70 72 65 70 61  ions] and [prepa
1a870 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 20  red statements] 
1a880 73 6f 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 61  so that the.** a
1a890 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 66 72  pplication is fr
1a8a0 65 65 20 74 6f 20 75 73 65 20 74 68 65 20 73 61  ee to use the sa
1a8b0 6d 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  me [database con
1a8c0 6e 65 63 74 69 6f 6e 5d 20 6f 72 20 74 68 65 0a  nection] or the.
1a8d0 2a 2a 20 73 61 6d 65 20 5b 70 72 65 70 61 72 65  ** same [prepare
1a8e0 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 69 6e 20  d statement] in 
1a8f0 64 69 66 66 65 72 65 6e 74 20 74 68 72 65 61 64  different thread
1a900 73 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69  s at the same ti
1a910 6d 65 2e 0a 2a 2a 20 5e 49 66 20 53 51 4c 69 74  me..** ^If SQLit
1a920 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1a930 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54  th.** the [SQLIT
1a940 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53  E_THREADSAFE | S
1a950 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1a960 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  =0] compile-time
1a970 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20   option then.** 
1a980 69 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  it is not possib
1a990 6c 65 20 74 6f 20 73 65 74 20 74 68 65 20 53 65  le to set the Se
1a9a0 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65 61 64  rialized [thread
1a9b0 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a  ing mode] and.**
1a9c0 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
1a9d0 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ()] will return 
1a9e0 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69  [SQLITE_ERROR] i
1a9f0 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68  f called with th
1aa00 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 46  e.** SQLITE_CONF
1aa10 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20 63 6f  IG_SERIALIZED co
1aa20 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1aa30 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  on.</dd>.**.** [
1aa40 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1aa50 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51 4c 49  ALLOC]] <dt>SQLI
1aa60 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1aa70 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28  </dt>.** <dd> ^(
1aa80 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1aa90 47 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20  G_MALLOC option 
1aaa0 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61  takes a single a
1aab0 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73  rgument which is
1aac0 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74   .** a pointer t
1aad0 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  o an instance of
1aae0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65   the [sqlite3_me
1aaf0 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63  m_methods] struc
1ab00 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61 72 67  ture..** The arg
1ab10 75 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 0a  ument specifies.
1ab20 2a 2a 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c  ** alternative l
1ab30 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72 79 20  ow-level memory 
1ab40 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69  allocation routi
1ab50 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64 20 69  nes to be used i
1ab60 6e 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 74 68  n place of.** th
1ab70 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
1ab80 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 62 75 69  ion routines bui
1ab90 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 29  lt into SQLite.)
1aba0 5e 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 0a  ^ ^SQLite makes.
1abb0 2a 2a 20 69 74 73 20 6f 77 6e 20 70 72 69 76 61  ** its own priva
1abc0 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63  te copy of the c
1abd0 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 5b 73  ontent of the [s
1abe0 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
1abf0 64 73 5d 20 73 74 72 75 63 74 75 72 65 0a 2a 2a  ds] structure.**
1ac00 20 62 65 66 6f 72 65 20 74 68 65 20 5b 73 71 6c   before the [sql
1ac10 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 63  ite3_config()] c
1ac20 61 6c 6c 20 72 65 74 75 72 6e 73 2e 3c 2f 64 64  all returns.</dd
1ac30 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1ac40 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
1ac50 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  C]] <dt>SQLITE_C
1ac60 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 3c  ONFIG_GETMALLOC<
1ac70 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
1ac80 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1ac90 5f 47 45 54 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f  _GETMALLOC optio
1aca0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1acb0 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 0a   argument which.
1acc0 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  ** is a pointer 
1acd0 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  to an instance o
1ace0 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d  f the [sqlite3_m
1acf0 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75  em_methods] stru
1ad00 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 5b 73  cture..** The [s
1ad10 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
1ad20 64 73 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  ds].** structure
1ad30 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20   is filled with 
1ad40 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65  the currently de
1ad50 66 69 6e 65 64 20 6d 65 6d 6f 72 79 20 61 6c 6c  fined memory all
1ad60 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73  ocation routines
1ad70 2e 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69  .)^.** This opti
1ad80 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  on can be used t
1ad90 6f 20 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 64  o overload the d
1ada0 65 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c  efault memory al
1adb0 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f 75 74  location.** rout
1adc0 69 6e 65 73 20 77 69 74 68 20 61 20 77 72 61 70  ines with a wrap
1add0 70 65 72 20 74 68 61 74 20 73 69 6d 75 6c 61 74  per that simulat
1ade0 69 6f 6e 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ions memory allo
1adf0 63 61 74 69 6f 6e 20 66 61 69 6c 75 72 65 20 6f  cation failure o
1ae00 72 0a 2a 2a 20 74 72 61 63 6b 73 20 6d 65 6d 6f  r.** tracks memo
1ae10 72 79 20 75 73 61 67 65 2c 20 66 6f 72 20 65 78  ry usage, for ex
1ae20 61 6d 70 6c 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a  ample. </dd>.**.
1ae30 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1ae40 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 5d  IG_SMALL_MALLOC]
1ae50 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1ae60 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43  FIG_SMALL_MALLOC
1ae70 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54  </dt>.** <dd> ^T
1ae80 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1ae90 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20 6f 70  _SMALL_MALLOC op
1aea0 74 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e 67 6c  tion takes singl
1aeb0 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 0a 2a 2a  e argument of.**
1aec0 20 74 79 70 65 20 69 6e 74 2c 20 69 6e 74 65 72   type int, inter
1aed0 70 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c  preted as a bool
1aee0 65 61 6e 2c 20 77 68 69 63 68 20 69 66 20 74 72  ean, which if tr
1aef0 75 65 20 70 72 6f 76 69 64 65 73 20 61 20 68 69  ue provides a hi
1af00 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20  nt to.** SQLite 
1af10 74 68 61 74 20 69 74 20 73 68 6f 75 6c 64 20 61  that it should a
1af20 76 6f 69 64 20 6c 61 72 67 65 20 6d 65 6d 6f 72  void large memor
1af30 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 69 66  y allocations if
1af40 20 70 6f 73 73 69 62 6c 65 2e 0a 2a 2a 20 53 51   possible..** SQ
1af50 4c 69 74 65 20 77 69 6c 6c 20 72 75 6e 20 66 61  Lite will run fa
1af60 73 74 65 72 20 69 66 20 69 74 20 69 73 20 66 72  ster if it is fr
1af70 65 65 20 74 6f 20 6d 61 6b 65 20 6c 61 72 67 65  ee to make large
1af80 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1af90 6f 6e 73 2c 0a 2a 2a 20 62 75 74 20 73 6f 6d 65  ons,.** but some
1afa0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 69 67   application mig
1afb0 68 74 20 70 72 65 66 65 72 20 74 6f 20 72 75 6e  ht prefer to run
1afc0 20 73 6c 6f 77 65 72 20 69 6e 20 65 78 63 68 61   slower in excha
1afd0 6e 67 65 20 66 6f 72 0a 2a 2a 20 67 75 61 72 61  nge for.** guara
1afe0 6e 74 65 65 73 20 61 62 6f 75 74 20 6d 65 6d 6f  ntees about memo
1aff0 72 79 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  ry fragmentation
1b000 20 74 68 61 74 20 61 72 65 20 70 6f 73 73 69 62   that are possib
1b010 6c 65 20 69 66 20 6c 61 72 67 65 0a 2a 2a 20 61  le if large.** a
1b020 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 72 65 20 61  llocations are a
1b030 76 6f 69 64 65 64 2e 20 20 54 68 69 73 20 68 69  voided.  This hi
1b040 6e 74 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f  nt is normally o
1b050 66 66 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a  ff..** </dd>.**.
1b060 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1b070 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 5d 20 3c  IG_MEMSTATUS]] <
1b080 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1b090 5f 4d 45 4d 53 54 41 54 55 53 3c 2f 64 74 3e 0a  _MEMSTATUS</dt>.
1b0a0 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c  ** <dd> ^The SQL
1b0b0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
1b0c0 41 54 55 53 20 6f 70 74 69 6f 6e 20 74 61 6b 65  ATUS option take
1b0d0 73 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  s single argumen
1b0e0 74 20 6f 66 20 74 79 70 65 20 69 6e 74 2c 0a 2a  t of type int,.*
1b0f0 2a 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  * interpreted as
1b100 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68 69 63   a boolean, whic
1b110 68 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69 73  h enables or dis
1b120 61 62 6c 65 73 20 74 68 65 20 63 6f 6c 6c 65 63  ables the collec
1b130 74 69 6f 6e 20 6f 66 0a 2a 2a 20 6d 65 6d 6f 72  tion of.** memor
1b140 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61  y allocation sta
1b150 74 69 73 74 69 63 73 2e 20 5e 28 57 68 65 6e 20  tistics. ^(When 
1b160 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1b170 6e 20 73 74 61 74 69 73 74 69 63 73 20 61 72 65  n statistics are
1b180 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2c 20 74 68  .** disabled, th
1b190 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51 4c 69  e following SQLi
1b1a0 74 65 20 69 6e 74 65 72 66 61 63 65 73 20 62 65  te interfaces be
1b1b0 63 6f 6d 65 20 6e 6f 6e 2d 6f 70 65 72 61 74 69  come non-operati
1b1c0 6f 6e 61 6c 3a 0a 2a 2a 20 20 20 3c 75 6c 3e 0a  onal:.**   <ul>.
1b1d0 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74  **   <li> [sqlit
1b1e0 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29  e3_memory_used()
1b1f0 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c  ].**   <li> [sql
1b200 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
1b210 77 61 74 65 72 28 29 5d 0a 2a 2a 20 20 20 3c 6c  water()].**   <l
1b220 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 6f 66 74  i> [sqlite3_soft
1b230 5f 68 65 61 70 5f 6c 69 6d 69 74 36 34 28 29 5d  _heap_limit64()]
1b240 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  .**   <li> [sqli
1b250 74 65 33 5f 73 74 61 74 75 73 36 34 28 29 5d 0a  te3_status64()].
1b260 2a 2a 20 20 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a 20  **   </ul>)^.** 
1b270 5e 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69  ^Memory allocati
1b280 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20 61 72  on statistics ar
1b290 65 20 65 6e 61 62 6c 65 64 20 62 79 20 64 65 66  e enabled by def
1b2a0 61 75 6c 74 20 75 6e 6c 65 73 73 20 53 51 4c 69  ault unless SQLi
1b2b0 74 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65  te is.** compile
1b2c0 64 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 44  d with [SQLITE_D
1b2d0 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54 55 53  EFAULT_MEMSTATUS
1b2e0 5d 3d 30 20 69 6e 20 77 68 69 63 68 20 63 61 73  ]=0 in which cas
1b2f0 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f  e memory.** allo
1b300 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63  cation statistic
1b310 73 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 62  s are disabled b
1b320 79 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 20 3c 2f  y default..** </
1b330 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1b340 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43  TE_CONFIG_SCRATC
1b350 48 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  H]] <dt>SQLITE_C
1b360 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 3c 2f 64  ONFIG_SCRATCH</d
1b370 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 20 53  t>.** <dd> The S
1b380 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52  QLITE_CONFIG_SCR
1b390 41 54 43 48 20 6f 70 74 69 6f 6e 20 69 73 20 6e  ATCH option is n
1b3a0 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 2e 0a 2a  o longer used..*
1b3b0 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
1b3c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41  SQLITE_CONFIG_PA
1b3d0 47 45 43 41 43 48 45 5d 5d 20 3c 64 74 3e 53 51  GECACHE]] <dt>SQ
1b3e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45  LITE_CONFIG_PAGE
1b3f0 43 41 43 48 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  CACHE</dt>.** <d
1b400 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  d> ^The SQLITE_C
1b410 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 20  ONFIG_PAGECACHE 
1b420 6f 70 74 69 6f 6e 20 73 70 65 63 69 66 69 65 73  option specifies
1b430 20 61 20 6d 65 6d 6f 72 79 20 70 6f 6f 6c 0a 2a   a memory pool.*
1b440 2a 20 74 68 61 74 20 53 51 4c 69 74 65 20 63 61  * that SQLite ca
1b450 6e 20 75 73 65 20 66 6f 72 20 74 68 65 20 64 61  n use for the da
1b460 74 61 62 61 73 65 20 70 61 67 65 20 63 61 63 68  tabase page cach
1b470 65 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75  e with the defau
1b480 6c 74 20 70 61 67 65 0a 2a 2a 20 63 61 63 68 65  lt page.** cache
1b490 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
1b4a0 20 20 0a 2a 2a 20 54 68 69 73 20 63 6f 6e 66 69    .** This confi
1b4b0 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
1b4c0 69 73 20 61 20 6e 6f 2d 6f 70 20 69 66 20 61 6e  is a no-op if an
1b4d0 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
1b4e0 69 6e 65 20 70 61 67 65 0a 2a 2a 20 63 61 63 68  ine page.** cach
1b4f0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
1b500 20 69 73 20 6c 6f 61 64 65 64 20 75 73 69 6e 67   is loaded using
1b510 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f 4e   the [SQLITE_CON
1b520 46 49 47 5f 50 43 41 43 48 45 32 5d 2e 0a 2a 2a  FIG_PCACHE2]..**
1b530 20 5e 54 68 65 72 65 20 61 72 65 20 74 68 72 65   ^There are thre
1b540 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 53  e arguments to S
1b550 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
1b560 45 43 41 43 48 45 3a 20 41 20 70 6f 69 6e 74 65  ECACHE: A pointe
1b570 72 20 74 6f 0a 2a 2a 20 38 2d 62 79 74 65 20 61  r to.** 8-byte a
1b580 6c 69 67 6e 65 64 20 6d 65 6d 6f 72 79 20 28 70  ligned memory (p
1b590 4d 65 6d 29 2c 20 74 68 65 20 73 69 7a 65 20 6f  Mem), the size o
1b5a0 66 20 65 61 63 68 20 70 61 67 65 20 63 61 63 68  f each page cach
1b5b0 65 20 6c 69 6e 65 20 28 73 7a 29 2c 0a 2a 2a 20  e line (sz),.** 
1b5c0 61 6e 64 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  and the number o
1b5d0 66 20 63 61 63 68 65 20 6c 69 6e 65 73 20 28 4e  f cache lines (N
1b5e0 29 2e 0a 2a 2a 20 54 68 65 20 73 7a 20 61 72 67  )..** The sz arg
1b5f0 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20  ument should be 
1b600 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
1b610 6c 61 72 67 65 73 74 20 64 61 74 61 62 61 73 65  largest database
1b620 20 70 61 67 65 0a 2a 2a 20 28 61 20 70 6f 77 65   page.** (a powe
1b630 72 20 6f 66 20 74 77 6f 20 62 65 74 77 65 65 6e  r of two between
1b640 20 35 31 32 20 61 6e 64 20 36 35 35 33 36 29 20   512 and 65536) 
1b650 70 6c 75 73 20 73 6f 6d 65 20 65 78 74 72 61 20  plus some extra 
1b660 62 79 74 65 73 20 66 6f 72 20 65 61 63 68 0a 2a  bytes for each.*
1b670 2a 20 70 61 67 65 20 68 65 61 64 65 72 2e 20 20  * page header.  
1b680 5e 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65  ^The number of e
1b690 78 74 72 61 20 62 79 74 65 73 20 6e 65 65 64 65  xtra bytes neede
1b6a0 64 20 62 79 20 74 68 65 20 70 61 67 65 20 68 65  d by the page he
1b6b0 61 64 65 72 0a 2a 2a 20 63 61 6e 20 62 65 20 64  ader.** can be d
1b6c0 65 74 65 72 6d 69 6e 65 64 20 75 73 69 6e 67 20  etermined using 
1b6d0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1b6e0 43 41 43 48 45 5f 48 44 52 53 5a 5d 2e 0a 2a 2a  CACHE_HDRSZ]..**
1b6f0 20 5e 49 74 20 69 73 20 68 61 72 6d 6c 65 73 73   ^It is harmless
1b700 2c 20 61 70 61 72 74 20 66 72 6f 6d 20 74 68 65  , apart from the
1b710 20 77 61 73 74 65 64 20 6d 65 6d 6f 72 79 2c 0a   wasted memory,.
1b720 2a 2a 20 66 6f 72 20 74 68 65 20 73 7a 20 70 61  ** for the sz pa
1b730 72 61 6d 65 74 65 72 20 74 6f 20 62 65 20 6c 61  rameter to be la
1b740 72 67 65 72 20 74 68 61 6e 20 6e 65 63 65 73 73  rger than necess
1b750 61 72 79 2e 20 20 54 68 65 20 70 4d 65 6d 0a 2a  ary.  The pMem.*
1b760 2a 20 61 72 67 75 6d 65 6e 74 20 6d 75 73 74 20  * argument must 
1b770 62 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c  be either a NULL
1b780 20 70 6f 69 6e 74 65 72 20 6f 72 20 61 20 70 6f   pointer or a po
1b790 69 6e 74 65 72 20 74 6f 20 61 6e 20 38 2d 62 79  inter to an 8-by
1b7a0 74 65 0a 2a 2a 20 61 6c 69 67 6e 65 64 20 62 6c  te.** aligned bl
1b7b0 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20 6f 66  ock of memory of
1b7c0 20 61 74 20 6c 65 61 73 74 20 73 7a 2a 4e 20 62   at least sz*N b
1b7d0 79 74 65 73 2c 20 6f 74 68 65 72 77 69 73 65 0a  ytes, otherwise.
1b7e0 2a 2a 20 73 75 62 73 65 71 75 65 6e 74 20 62 65  ** subsequent be
1b7f0 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69  havior is undefi
1b800 6e 65 64 2e 0a 2a 2a 20 5e 57 68 65 6e 20 70 4d  ned..** ^When pM
1b810 65 6d 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20  em is not NULL, 
1b820 53 51 4c 69 74 65 20 77 69 6c 6c 20 73 74 72 69  SQLite will stri
1b830 76 65 20 74 6f 20 75 73 65 20 74 68 65 20 6d 65  ve to use the me
1b840 6d 6f 72 79 20 70 72 6f 76 69 64 65 64 0a 2a 2a  mory provided.**
1b850 20 74 6f 20 73 61 74 69 73 66 79 20 70 61 67 65   to satisfy page
1b860 20 63 61 63 68 65 20 6e 65 65 64 73 2c 20 66 61   cache needs, fa
1b870 6c 6c 69 6e 67 20 62 61 63 6b 20 74 6f 20 5b 73  lling back to [s
1b880 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d  qlite3_malloc()]
1b890 20 69 66 0a 2a 2a 20 61 20 70 61 67 65 20 63 61   if.** a page ca
1b8a0 63 68 65 20 6c 69 6e 65 20 69 73 20 6c 61 72 67  che line is larg
1b8b0 65 72 20 74 68 61 6e 20 73 7a 20 62 79 74 65 73  er than sz bytes
1b8c0 20 6f 72 20 69 66 20 61 6c 6c 20 6f 66 20 74 68   or if all of th
1b8d0 65 20 70 4d 65 6d 20 62 75 66 66 65 72 0a 2a 2a  e pMem buffer.**
1b8e0 20 69 73 20 65 78 68 61 75 73 74 65 64 2e 0a 2a   is exhausted..*
1b8f0 2a 20 5e 49 66 20 70 4d 65 6d 20 69 73 20 4e 55  * ^If pMem is NU
1b900 4c 4c 20 61 6e 64 20 4e 20 69 73 20 6e 6f 6e 2d  LL and N is non-
1b910 7a 65 72 6f 2c 20 74 68 65 6e 20 65 61 63 68 20  zero, then each 
1b920 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1b930 69 6f 6e 0a 2a 2a 20 64 6f 65 73 20 61 6e 20 69  ion.** does an i
1b940 6e 69 74 69 61 6c 20 62 75 6c 6b 20 61 6c 6c 6f  nitial bulk allo
1b950 63 61 74 69 6f 6e 20 66 6f 72 20 70 61 67 65 20  cation for page 
1b960 63 61 63 68 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20  cache memory.** 
1b970 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61  from [sqlite3_ma
1b980 6c 6c 6f 63 28 29 5d 20 73 75 66 66 69 63 69 65  lloc()] sufficie
1b990 6e 74 20 66 6f 72 20 4e 20 63 61 63 68 65 20 6c  nt for N cache l
1b9a0 69 6e 65 73 20 69 66 20 4e 20 69 73 20 70 6f 73  ines if N is pos
1b9b0 69 74 69 76 65 20 6f 72 0a 2a 2a 20 6f 66 20 2d  itive or.** of -
1b9c0 31 30 32 34 2a 4e 20 62 79 74 65 73 20 69 66 20  1024*N bytes if 
1b9d0 4e 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 2e  N is negative, .
1b9e0 20 5e 49 66 20 61 64 64 69 74 69 6f 6e 61 6c 0a   ^If additional.
1b9f0 2a 2a 20 70 61 67 65 20 63 61 63 68 65 20 6d 65  ** page cache me
1ba00 6d 6f 72 79 20 69 73 20 6e 65 65 64 65 64 20 62  mory is needed b
1ba10 65 79 6f 6e 64 20 77 68 61 74 20 69 73 20 70 72  eyond what is pr
1ba20 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 69 6e  ovided by the in
1ba30 69 74 69 61 6c 0a 2a 2a 20 61 6c 6c 6f 63 61 74  itial.** allocat
1ba40 69 6f 6e 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  ion, then SQLite
1ba50 20 67 6f 65 73 20 74 6f 20 5b 73 71 6c 69 74 65   goes to [sqlite
1ba60 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 73 65 70 61  3_malloc()] sepa
1ba70 72 61 74 65 6c 79 20 66 6f 72 20 65 61 63 68 0a  rately for each.
1ba80 2a 2a 20 61 64 64 69 74 69 6f 6e 61 6c 20 63 61  ** additional ca
1ba90 63 68 65 20 6c 69 6e 65 2e 20 3c 2f 64 64 3e 0a  che line. </dd>.
1baa0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1bab0 4f 4e 46 49 47 5f 48 45 41 50 5d 5d 20 3c 64 74  ONFIG_HEAP]] <dt
1bac0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48  >SQLITE_CONFIG_H
1bad0 45 41 50 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  EAP</dt>.** <dd>
1bae0 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e   ^The SQLITE_CON
1baf0 46 49 47 5f 48 45 41 50 20 6f 70 74 69 6f 6e 20  FIG_HEAP option 
1bb00 73 70 65 63 69 66 69 65 73 20 61 20 73 74 61 74  specifies a stat
1bb10 69 63 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72  ic memory buffer
1bb20 20 0a 2a 2a 20 74 68 61 74 20 53 51 4c 69 74 65   .** that SQLite
1bb30 20 77 69 6c 6c 20 75 73 65 20 66 6f 72 20 61 6c   will use for al
1bb40 6c 20 6f 66 20 69 74 73 20 64 79 6e 61 6d 69 63  l of its dynamic
1bb50 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1bb60 6f 6e 20 6e 65 65 64 73 0a 2a 2a 20 62 65 79 6f  on needs.** beyo
1bb70 6e 64 20 74 68 6f 73 65 20 70 72 6f 76 69 64 65  nd those provide
1bb80 64 20 66 6f 72 20 62 79 20 5b 53 51 4c 49 54 45  d for by [SQLITE
1bb90 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48  _CONFIG_PAGECACH
1bba0 45 5d 2e 0a 2a 2a 20 5e 54 68 65 20 53 51 4c 49  E]..** ^The SQLI
1bbb0 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 6f  TE_CONFIG_HEAP o
1bbc0 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76  ption is only av
1bbd0 61 69 6c 61 62 6c 65 20 69 66 20 53 51 4c 69 74  ailable if SQLit
1bbe0 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a  e is compiled.**
1bbf0 20 77 69 74 68 20 65 69 74 68 65 72 20 5b 53 51   with either [SQ
1bc00 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53  LITE_ENABLE_MEMS
1bc10 59 53 33 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f  YS3] or [SQLITE_
1bc20 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 5d 20  ENABLE_MEMSYS5] 
1bc30 61 6e 64 20 72 65 74 75 72 6e 73 0a 2a 2a 20 5b  and returns.** [
1bc40 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66  SQLITE_ERROR] if
1bc50 20 69 6e 76 6f 6b 65 64 20 6f 74 68 65 72 77 69   invoked otherwi
1bc60 73 65 2e 0a 2a 2a 20 5e 54 68 65 72 65 20 61 72  se..** ^There ar
1bc70 65 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e 74  e three argument
1bc80 73 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46  s to SQLITE_CONF
1bc90 49 47 5f 48 45 41 50 3a 0a 2a 2a 20 41 6e 20 38  IG_HEAP:.** An 8
1bca0 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 70 6f  -byte aligned po
1bcb0 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6d 65 6d  inter to the mem
1bcc0 6f 72 79 2c 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  ory,.** the numb
1bcd0 65 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74  er of bytes in t
1bce0 68 65 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72  he memory buffer
1bcf0 2c 20 61 6e 64 20 74 68 65 20 6d 69 6e 69 6d 75  , and the minimu
1bd00 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a  m allocation siz
1bd10 65 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69  e..** ^If the fi
1bd20 72 73 74 20 70 6f 69 6e 74 65 72 20 28 74 68 65  rst pointer (the
1bd30 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 29   memory pointer)
1bd40 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 53   is NULL, then S
1bd50 51 4c 69 74 65 20 72 65 76 65 72 74 73 0a 2a 2a  QLite reverts.**
1bd60 20 74 6f 20 75 73 69 6e 67 20 69 74 73 20 64 65   to using its de
1bd70 66 61 75 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c  fault memory all
1bd80 6f 63 61 74 6f 72 20 28 74 68 65 20 73 79 73 74  ocator (the syst
1bd90 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 69 6d 70 6c  em malloc() impl
1bda0 65 6d 65 6e 74 61 74 69 6f 6e 29 2c 0a 2a 2a 20  ementation),.** 
1bdb0 75 6e 64 6f 69 6e 67 20 61 6e 79 20 70 72 69 6f  undoing any prio
1bdc0 72 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20  r invocation of 
1bdd0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1bde0 41 4c 4c 4f 43 5d 2e 20 20 5e 49 66 20 74 68 65  ALLOC].  ^If the
1bdf0 0a 2a 2a 20 6d 65 6d 6f 72 79 20 70 6f 69 6e 74  .** memory point
1be00 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74  er is not NULL t
1be10 68 65 6e 20 74 68 65 20 61 6c 74 65 72 6e 61 74  hen the alternat
1be20 69 76 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c  ive memory.** al
1be30 6c 6f 63 61 74 6f 72 20 69 73 20 65 6e 67 61 67  locator is engag
1be40 65 64 20 74 6f 20 68 61 6e 64 6c 65 20 61 6c 6c  ed to handle all
1be50 20 6f 66 20 53 51 4c 69 74 65 73 20 6d 65 6d 6f   of SQLites memo
1be60 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65  ry allocation ne
1be70 65 64 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73  eds..** The firs
1be80 74 20 70 6f 69 6e 74 65 72 20 28 74 68 65 20 6d  t pointer (the m
1be90 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 29 20 6d  emory pointer) m
1bea0 75 73 74 20 62 65 20 61 6c 69 67 6e 65 64 20 74  ust be aligned t
1beb0 6f 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20 62  o an 8-byte.** b
1bec0 6f 75 6e 64 61 72 79 20 6f 72 20 73 75 62 73 65  oundary or subse
1bed0 71 75 65 6e 74 20 62 65 68 61 76 69 6f 72 20 6f  quent behavior o
1bee0 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 62 65  f SQLite will be
1bef0 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 54   undefined..** T
1bf00 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63  he minimum alloc
1bf10 61 74 69 6f 6e 20 73 69 7a 65 20 69 73 20 63 61  ation size is ca
1bf20 70 70 65 64 20 61 74 20 32 2a 2a 31 32 2e 20 52  pped at 2**12. R
1bf30 65 61 73 6f 6e 61 62 6c 65 20 76 61 6c 75 65 73  easonable values
1bf40 0a 2a 2a 20 66 6f 72 20 74 68 65 20 6d 69 6e 69  .** for the mini
1bf50 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  mum allocation s
1bf60 69 7a 65 20 61 72 65 20 32 2a 2a 35 20 74 68 72  ize are 2**5 thr
1bf70 6f 75 67 68 20 32 2a 2a 38 2e 3c 2f 64 64 3e 0a  ough 2**8.</dd>.
1bf80 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1bf90 4f 4e 46 49 47 5f 4d 55 54 45 58 5d 5d 20 3c 64  ONFIG_MUTEX]] <d
1bfa0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1bfb0 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  MUTEX</dt>.** <d
1bfc0 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  d> ^(The SQLITE_
1bfd0 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 6f 70 74  CONFIG_MUTEX opt
1bfe0 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1bff0 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
1c000 68 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e 74 65  h is a.** pointe
1c010 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65  r to an instance
1c020 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
1c030 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20  _mutex_methods] 
1c040 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a 20 54 68  structure..** Th
1c050 65 20 61 72 67 75 6d 65 6e 74 20 73 70 65 63 69  e argument speci
1c060 66 69 65 73 20 61 6c 74 65 72 6e 61 74 69 76 65  fies alternative
1c070 20 6c 6f 77 2d 6c 65 76 65 6c 20 6d 75 74 65 78   low-level mutex
1c080 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62 65 20   routines to be 
1c090 75 73 65 64 0a 2a 2a 20 69 6e 20 70 6c 61 63 65  used.** in place
1c0a0 20 74 68 65 20 6d 75 74 65 78 20 72 6f 75 74 69   the mutex routi
1c0b0 6e 65 73 20 62 75 69 6c 74 20 69 6e 74 6f 20 53  nes built into S
1c0c0 51 4c 69 74 65 2e 29 5e 20 20 5e 53 51 4c 69 74  QLite.)^  ^SQLit
1c0d0 65 20 6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f  e makes a copy o
1c0e0 66 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74  f.** the content
1c0f0 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
1c100 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20  _mutex_methods] 
1c110 73 74 72 75 63 74 75 72 65 20 62 65 66 6f 72 65  structure before
1c120 20 74 68 65 20 63 61 6c 6c 20 74 6f 0a 2a 2a 20   the call to.** 
1c130 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1c140 29 5d 20 72 65 74 75 72 6e 73 2e 20 5e 49 66 20  )] returns. ^If 
1c150 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c  SQLite is compil
1c160 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b  ed with.** the [
1c170 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
1c180 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41  E | SQLITE_THREA
1c190 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65  DSAFE=0] compile
1c1a0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65  -time option the
1c1b0 6e 0a 2a 2a 20 74 68 65 20 65 6e 74 69 72 65 20  n.** the entire 
1c1c0 6d 75 74 65 78 69 6e 67 20 73 75 62 73 79 73 74  mutexing subsyst
1c1d0 65 6d 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72  em is omitted fr
1c1e0 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e 64  om the build and
1c1f0 20 68 65 6e 63 65 20 63 61 6c 6c 73 20 74 6f 0a   hence calls to.
1c200 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66  ** [sqlite3_conf
1c210 69 67 28 29 5d 20 77 69 74 68 20 74 68 65 20 53  ig()] with the S
1c220 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54  QLITE_CONFIG_MUT
1c230 45 58 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  EX configuration
1c240 20 6f 70 74 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20   option will.** 
1c250 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 45  return [SQLITE_E
1c260 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  RROR].</dd>.**.*
1c270 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1c280 47 5f 47 45 54 4d 55 54 45 58 5d 5d 20 3c 64 74  G_GETMUTEX]] <dt
1c290 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47  >SQLITE_CONFIG_G
1c2a0 45 54 4d 55 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20  ETMUTEX</dt>.** 
1c2b0 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1c2c0 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45  E_CONFIG_GETMUTE
1c2d0 58 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  X option takes a
1c2e0 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
1c2f0 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70   which.** is a p
1c300 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73  ointer to an ins
1c310 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71  tance of the [sq
1c320 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68  lite3_mutex_meth
1c330 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 20  ods] structure. 
1c340 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   The.** [sqlite3
1c350 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 0a  _mutex_methods].
1c360 2a 2a 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ** structure is 
1c370 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20  filled with the 
1c380 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65  currently define
1c390 64 20 6d 75 74 65 78 20 72 6f 75 74 69 6e 65 73  d mutex routines
1c3a0 2e 29 5e 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69  .)^.** This opti
1c3b0 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  on can be used t
1c3c0 6f 20 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 64  o overload the d
1c3d0 65 66 61 75 6c 74 20 6d 75 74 65 78 20 61 6c 6c  efault mutex all
1c3e0 6f 63 61 74 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69  ocation.** routi
1c3f0 6e 65 73 20 77 69 74 68 20 61 20 77 72 61 70 70  nes with a wrapp
1c400 65 72 20 75 73 65 64 20 74 6f 20 74 72 61 63 6b  er used to track
1c410 20 6d 75 74 65 78 20 75 73 61 67 65 20 66 6f 72   mutex usage for
1c420 20 70 65 72 66 6f 72 6d 61 6e 63 65 0a 2a 2a 20   performance.** 
1c430 70 72 6f 66 69 6c 69 6e 67 20 6f 72 20 74 65 73  profiling or tes
1c440 74 69 6e 67 2c 20 66 6f 72 20 65 78 61 6d 70 6c  ting, for exampl
1c450 65 2e 20 20 20 5e 49 66 20 53 51 4c 69 74 65 20  e.   ^If SQLite 
1c460 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
1c470 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
1c480 54 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c  THREADSAFE | SQL
1c490 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
1c4a0 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
1c4b0 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 74 68  ption then.** th
1c4c0 65 20 65 6e 74 69 72 65 20 6d 75 74 65 78 69 6e  e entire mutexin
1c4d0 67 20 73 75 62 73 79 73 74 65 6d 20 69 73 20 6f  g subsystem is o
1c4e0 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
1c4f0 62 75 69 6c 64 20 61 6e 64 20 68 65 6e 63 65 20  build and hence 
1c500 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c  calls to.** [sql
1c510 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77  ite3_config()] w
1c520 69 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43  ith the SQLITE_C
1c530 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 63  ONFIG_GETMUTEX c
1c540 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1c550 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65 74 75  ion will.** retu
1c560 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52  rn [SQLITE_ERROR
1c570 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  ].</dd>.**.** [[
1c580 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f  SQLITE_CONFIG_LO
1c590 4f 4b 41 53 49 44 45 5d 5d 20 3c 64 74 3e 53 51  OKASIDE]] <dt>SQ
1c5a0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b  LITE_CONFIG_LOOK
1c5b0 41 53 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ASIDE</dt>.** <d
1c5c0 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  d> ^(The SQLITE_
1c5d0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
1c5e0 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 74 77   option takes tw
1c5f0 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61 74  o arguments that
1c600 20 64 65 74 65 72 6d 69 6e 65 0a 2a 2a 20 74 68   determine.** th
1c610 65 20 64 65 66 61 75 6c 74 20 73 69 7a 65 20 6f  e default size o
1c620 66 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f  f lookaside memo
1c630 72 79 20 6f 6e 20 65 61 63 68 20 5b 64 61 74 61  ry on each [data
1c640 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
1c650 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  ..** The first a
1c660 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a  rgument is the.*
1c670 2a 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 6c  * size of each l
1c680 6f 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72 20  ookaside buffer 
1c690 73 6c 6f 74 20 61 6e 64 20 74 68 65 20 73 65 63  slot and the sec
1c6a0 6f 6e 64 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ond is the numbe
1c6b0 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 20 61 6c  r of.** slots al
1c6c0 6c 6f 63 61 74 65 64 20 74 6f 20 65 61 63 68 20  located to each 
1c6d0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1c6e0 69 6f 6e 2e 29 5e 20 20 5e 28 53 51 4c 49 54 45  ion.)^  ^(SQLITE
1c6f0 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  _CONFIG_LOOKASID
1c700 45 0a 2a 2a 20 73 65 74 73 20 74 68 65 20 3c 69  E.** sets the <i
1c710 3e 64 65 66 61 75 6c 74 3c 2f 69 3e 20 6c 6f 6f  >default</i> loo
1c720 6b 61 73 69 64 65 20 73 69 7a 65 2e 20 54 68 65  kaside size. The
1c730 20 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49   [SQLITE_DBCONFI
1c740 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 0a 2a 2a 20  G_LOOKASIDE].** 
1c750 6f 70 74 69 6f 6e 20 74 6f 20 5b 73 71 6c 69 74  option to [sqlit
1c760 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20  e3_db_config()] 
1c770 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63  can be used to c
1c780 68 61 6e 67 65 20 74 68 65 20 6c 6f 6f 6b 61 73  hange the lookas
1c790 69 64 65 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61  ide.** configura
1c7a0 74 69 6f 6e 20 6f 6e 20 69 6e 64 69 76 69 64 75  tion on individu
1c7b0 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 29  al connections.)
1c7c0 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  ^ </dd>.**.** [[
1c7d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1c7e0 41 43 48 45 32 5d 5d 20 3c 64 74 3e 53 51 4c 49  ACHE2]] <dt>SQLI
1c7f0 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1c800 32 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  2</dt>.** <dd> ^
1c810 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1c820 49 47 5f 50 43 41 43 48 45 32 20 6f 70 74 69 6f  IG_PCACHE2 optio
1c830 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1c840 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20   argument which 
1c850 69 73 20 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72  is .** a pointer
1c860 20 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   to an [sqlite3_
1c870 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d  pcache_methods2]
1c880 20 6f 62 6a 65 63 74 2e 20 20 54 68 69 73 20 6f   object.  This o
1c890 62 6a 65 63 74 20 73 70 65 63 69 66 69 65 73 0a  bject specifies.
1c8a0 2a 2a 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  ** the interface
1c8b0 20 74 6f 20 61 20 63 75 73 74 6f 6d 20 70 61 67   to a custom pag
1c8c0 65 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e  e cache implemen
1c8d0 74 61 74 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e 53 51  tation.)^.** ^SQ
1c8e0 4c 69 74 65 20 6d 61 6b 65 73 20 61 20 63 6f 70  Lite makes a cop
1c8f0 79 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65  y of the [sqlite
1c900 33 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73  3_pcache_methods
1c910 32 5d 20 6f 62 6a 65 63 74 2e 3c 2f 64 64 3e 0a  2] object.</dd>.
1c920 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1c930 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32  ONFIG_GETPCACHE2
1c940 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1c950 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45 32 3c  NFIG_GETPCACHE2<
1c960 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
1c970 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1c980 5f 47 45 54 50 43 41 43 48 45 32 20 6f 70 74 69  _GETPCACHE2 opti
1c990 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  on takes a singl
1c9a0 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68  e argument which
1c9b0 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72  .** is a pointer
1c9c0 20 74 6f 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   to an [sqlite3_
1c9d0 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d  pcache_methods2]
1c9e0 20 6f 62 6a 65 63 74 2e 20 20 53 51 4c 69 74 65   object.  SQLite
1c9f0 20 63 6f 70 69 65 73 20 6f 66 0a 2a 2a 20 74 68   copies of.** th
1ca00 65 20 63 75 72 72 65 6e 74 20 70 61 67 65 20 63  e current page c
1ca10 61 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ache implementat
1ca20 69 6f 6e 20 69 6e 74 6f 20 74 68 61 74 20 6f 62  ion into that ob
1ca30 6a 65 63 74 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a  ject.)^ </dd>.**
1ca40 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1ca50 46 49 47 5f 4c 4f 47 5d 5d 20 3c 64 74 3e 53 51  FIG_LOG]] <dt>SQ
1ca60 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 3c  LITE_CONFIG_LOG<
1ca70 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 54 68 65  /dt>.** <dd> The
1ca80 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
1ca90 4f 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  OG option is use
1caa0 64 20 74 6f 20 63 6f 6e 66 69 67 75 72 65 20 74  d to configure t
1cab0 68 65 20 53 51 4c 69 74 65 0a 2a 2a 20 67 6c 6f  he SQLite.** glo
1cac0 62 61 6c 20 5b 65 72 72 6f 72 20 6c 6f 67 5d 2e  bal [error log].
1cad0 0a 2a 2a 20 28 5e 54 68 65 20 53 51 4c 49 54 45  .** (^The SQLITE
1cae0 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70 74 69  _CONFIG_LOG opti
1caf0 6f 6e 20 74 61 6b 65 73 20 74 77 6f 20 61 72 67  on takes two arg
1cb00 75 6d 65 6e 74 73 3a 20 61 20 70 6f 69 6e 74 65  uments: a pointe
1cb10 72 20 74 6f 20 61 0a 2a 2a 20 66 75 6e 63 74 69  r to a.** functi
1cb20 6f 6e 20 77 69 74 68 20 61 20 63 61 6c 6c 20 73  on with a call s
1cb30 69 67 6e 61 74 75 72 65 20 6f 66 20 76 6f 69 64  ignature of void
1cb40 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f  (*)(void*,int,co
1cb50 6e 73 74 20 63 68 61 72 2a 29 2c 20 0a 2a 2a 20  nst char*), .** 
1cb60 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  and a pointer to
1cb70 20 76 6f 69 64 2e 20 5e 49 66 20 74 68 65 20 66   void. ^If the f
1cb80 75 6e 63 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20  unction pointer 
1cb90 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 69 74 20  is not NULL, it 
1cba0 69 73 0a 2a 2a 20 69 6e 76 6f 6b 65 64 20 62 79  is.** invoked by
1cbb0 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d   [sqlite3_log()]
1cbc0 20 74 6f 20 70 72 6f 63 65 73 73 20 65 61 63 68   to process each
1cbd0 20 6c 6f 67 67 69 6e 67 20 65 76 65 6e 74 2e 20   logging event. 
1cbe0 20 5e 49 66 20 74 68 65 0a 2a 2a 20 66 75 6e 63   ^If the.** func
1cbf0 74 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20  tion pointer is 
1cc00 4e 55 4c 4c 2c 20 74 68 65 20 5b 73 71 6c 69 74  NULL, the [sqlit
1cc10 65 33 5f 6c 6f 67 28 29 5d 20 69 6e 74 65 72 66  e3_log()] interf
1cc20 61 63 65 20 62 65 63 6f 6d 65 73 20 61 20 6e 6f  ace becomes a no
1cc30 2d 6f 70 2e 0a 2a 2a 20 5e 54 68 65 20 76 6f 69  -op..** ^The voi
1cc40 64 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 69  d pointer that i
1cc50 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  s the second arg
1cc60 75 6d 65 6e 74 20 74 6f 20 53 51 4c 49 54 45 5f  ument to SQLITE_
1cc70 43 4f 4e 46 49 47 5f 4c 4f 47 20 69 73 0a 2a 2a  CONFIG_LOG is.**
1cc80 20 70 61 73 73 65 64 20 74 68 72 6f 75 67 68 20   passed through 
1cc90 61 73 20 74 68 65 20 66 69 72 73 74 20 70 61 72  as the first par
1cca0 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61 70  ameter to the ap
1ccb0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
1ccc0 64 20 6c 6f 67 67 65 72 0a 2a 2a 20 66 75 6e 63  d logger.** func
1ccd0 74 69 6f 6e 20 77 68 65 6e 65 76 65 72 20 74 68  tion whenever th
1cce0 61 74 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69  at function is i
1ccf0 6e 76 6f 6b 65 64 2e 20 20 5e 54 68 65 20 73 65  nvoked.  ^The se
1cd00 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74  cond parameter t
1cd10 6f 0a 2a 2a 20 74 68 65 20 6c 6f 67 67 65 72 20  o.** the logger 
1cd20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 63 6f  function is a co
1cd30 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
1cd40 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
1cd50 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a   corresponding.*
1cd60 2a 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  * [sqlite3_log()
1cd70 5d 20 63 61 6c 6c 20 61 6e 64 20 69 73 20 69 6e  ] call and is in
1cd80 74 65 6e 64 65 64 20 74 6f 20 62 65 20 61 20 5b  tended to be a [
1cd90 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 6f 72 20  result code] or 
1cda0 61 6e 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20  an.** [extended 
1cdb0 72 65 73 75 6c 74 20 63 6f 64 65 5d 2e 20 20 5e  result code].  ^
1cdc0 54 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  The third parame
1cdd0 74 65 72 20 70 61 73 73 65 64 20 74 6f 20 74 68  ter passed to th
1cde0 65 20 6c 6f 67 67 65 72 20 69 73 0a 2a 2a 20 6c  e logger is.** l
1cdf0 6f 67 20 6d 65 73 73 61 67 65 20 61 66 74 65 72  og message after
1ce00 20 66 6f 72 6d 61 74 74 69 6e 67 20 76 69 61 20   formatting via 
1ce10 5b 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74  [sqlite3_snprint
1ce20 66 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 53 51 4c  f()]..** The SQL
1ce30 69 74 65 20 6c 6f 67 67 69 6e 67 20 69 6e 74 65  ite logging inte
1ce40 72 66 61 63 65 20 69 73 20 6e 6f 74 20 72 65 65  rface is not ree
1ce50 6e 74 72 61 6e 74 3b 20 74 68 65 20 6c 6f 67 67  ntrant; the logg
1ce60 65 72 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 73  er function.** s
1ce70 75 70 70 6c 69 65 64 20 62 79 20 74 68 65 20 61  upplied by the a
1ce80 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20  pplication must 
1ce90 6e 6f 74 20 69 6e 76 6f 6b 65 20 61 6e 79 20 53  not invoke any S
1cea0 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e  QLite interface.
1ceb0 0a 2a 2a 20 49 6e 20 61 20 6d 75 6c 74 69 2d 74  .** In a multi-t
1cec0 68 72 65 61 64 65 64 20 61 70 70 6c 69 63 61 74  hreaded applicat
1ced0 69 6f 6e 2c 20 74 68 65 20 61 70 70 6c 69 63 61  ion, the applica
1cee0 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c 6f 67  tion-defined log
1cef0 67 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ger.** function 
1cf00 6d 75 73 74 20 62 65 20 74 68 72 65 61 64 73 61  must be threadsa
1cf10 66 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  fe. </dd>.**.** 
1cf20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1cf30 55 52 49 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  URI]] <dt>SQLITE
1cf40 5f 43 4f 4e 46 49 47 5f 55 52 49 0a 2a 2a 20 3c  _CONFIG_URI.** <
1cf50 64 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f  dd>^(The SQLITE_
1cf60 43 4f 4e 46 49 47 5f 55 52 49 20 6f 70 74 69 6f  CONFIG_URI optio
1cf70 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1cf80 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 79 70   argument of typ
1cf90 65 20 69 6e 74 2e 0a 2a 2a 20 49 66 20 6e 6f 6e  e int..** If non
1cfa0 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 55 52 49 20  -zero, then URI 
1cfb0 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62  handling is glob
1cfc0 61 6c 6c 79 20 65 6e 61 62 6c 65 64 2e 20 49 66  ally enabled. If
1cfd0 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69   the parameter i
1cfe0 73 20 7a 65 72 6f 2c 0a 2a 2a 20 74 68 65 6e 20  s zero,.** then 
1cff0 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  URI handling is 
1d000 67 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62 6c 65  globally disable
1d010 64 2e 29 5e 20 5e 49 66 20 55 52 49 20 68 61 6e  d.)^ ^If URI han
1d020 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c  dling is globall
1d030 79 0a 2a 2a 20 65 6e 61 62 6c 65 64 2c 20 61 6c  y.** enabled, al
1d040 6c 20 66 69 6c 65 6e 61 6d 65 73 20 70 61 73 73  l filenames pass
1d050 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  ed to [sqlite3_o
1d060 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
1d070 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 0a 2a 2a 20  _open_v2()],.** 
1d080 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28  [sqlite3_open16(
1d090 29 5d 20 6f 72 0a 2a 2a 20 73 70 65 63 69 66 69  )] or.** specifi
1d0a0 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 5b 41  ed as part of [A
1d0b0 54 54 41 43 48 5d 20 63 6f 6d 6d 61 6e 64 73 20  TTACH] commands 
1d0c0 61 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 20  are interpreted 
1d0d0 61 73 20 55 52 49 73 2c 20 72 65 67 61 72 64 6c  as URIs, regardl
1d0e0 65 73 73 0a 2a 2a 20 6f 66 20 77 68 65 74 68 65  ess.** of whethe
1d0f0 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 5b 53 51  r or not the [SQ
1d100 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66  LITE_OPEN_URI] f
1d110 6c 61 67 20 69 73 20 73 65 74 20 77 68 65 6e 20  lag is set when 
1d120 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  the database.** 
1d130 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70  connection is op
1d140 65 6e 65 64 2e 20 5e 49 66 20 69 74 20 69 73 20  ened. ^If it is 
1d150 67 6c 6f 62 61 6c 6c 79 20 64 69 73 61 62 6c 65  globally disable
1d160 64 2c 20 66 69 6c 65 6e 61 6d 65 73 20 61 72 65  d, filenames are
1d170 0a 2a 2a 20 6f 6e 6c 79 20 69 6e 74 65 72 70 72  .** only interpr
1d180 65 74 65 64 20 61 73 20 55 52 49 73 20 69 66 20  eted as URIs if 
1d190 74 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  the SQLITE_OPEN_
1d1a0 55 52 49 20 66 6c 61 67 20 69 73 20 73 65 74 20  URI flag is set 
1d1b0 77 68 65 6e 20 74 68 65 0a 2a 2a 20 64 61 74 61  when the.** data
1d1c0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
1d1d0 69 73 20 6f 70 65 6e 65 64 2e 20 5e 28 42 79 20  is opened. ^(By 
1d1e0 64 65 66 61 75 6c 74 2c 20 55 52 49 20 68 61 6e  default, URI han
1d1f0 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c  dling is globall
1d200 79 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 20 54  y.** disabled. T
1d210 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
1d220 20 6d 61 79 20 62 65 20 63 68 61 6e 67 65 64 20   may be changed 
1d230 62 79 20 63 6f 6d 70 69 6c 69 6e 67 20 77 69 74  by compiling wit
1d240 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45  h the.** [SQLITE
1d250 5f 55 53 45 5f 55 52 49 5d 20 73 79 6d 62 6f 6c  _USE_URI] symbol
1d260 20 64 65 66 69 6e 65 64 2e 29 5e 0a 2a 2a 0a 2a   defined.)^.**.*
1d270 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1d280 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  G_COVERING_INDEX
1d290 5f 53 43 41 4e 5d 5d 20 3c 64 74 3e 53 51 4c 49  _SCAN]] <dt>SQLI
1d2a0 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
1d2b0 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 0a 2a 2a  NG_INDEX_SCAN.**
1d2c0 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45   <dd>^The SQLITE
1d2d0 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
1d2e0 5f 49 4e 44 45 58 5f 53 43 41 4e 20 6f 70 74 69  _INDEX_SCAN opti
1d2f0 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  on takes a singl
1d300 65 20 69 6e 74 65 67 65 72 0a 2a 2a 20 61 72 67  e integer.** arg
1d310 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 69  ument which is i
1d320 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20  nterpreted as a 
1d330 62 6f 6f 6c 65 61 6e 20 69 6e 20 6f 72 64 65 72  boolean in order
1d340 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
1d350 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 75 73 65  sable.** the use
1d360 20 6f 66 20 63 6f 76 65 72 69 6e 67 20 69 6e 64   of covering ind
1d370 69 63 65 73 20 66 6f 72 20 66 75 6c 6c 20 74 61  ices for full ta
1d380 62 6c 65 20 73 63 61 6e 73 20 69 6e 20 74 68 65  ble scans in the
1d390 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 65 72   query optimizer
1d3a0 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c  ..** ^The defaul
1d3b0 74 20 73 65 74 74 69 6e 67 20 69 73 20 64 65 74  t setting is det
1d3c0 65 72 6d 69 6e 65 64 0a 2a 2a 20 62 79 20 74 68  ermined.** by th
1d3d0 65 20 5b 53 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f  e [SQLITE_ALLOW_
1d3e0 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53  COVERING_INDEX_S
1d3f0 43 41 4e 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  CAN] compile-tim
1d400 65 20 6f 70 74 69 6f 6e 2c 20 6f 72 20 69 73 20  e option, or is 
1d410 22 6f 6e 22 0a 2a 2a 20 69 66 20 74 68 61 74 20  "on".** if that 
1d420 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1d430 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65 64 2e 0a  ion is omitted..
1d440 2a 2a 20 54 68 65 20 61 62 69 6c 69 74 79 20 74  ** The ability t
1d450 6f 20 64 69 73 61 62 6c 65 20 74 68 65 20 75 73  o disable the us
1d460 65 20 6f 66 20 63 6f 76 65 72 69 6e 67 20 69 6e  e of covering in
1d470 64 69 63 65 73 20 66 6f 72 20 66 75 6c 6c 20 74  dices for full t
1d480 61 62 6c 65 20 73 63 61 6e 73 0a 2a 2a 20 69 73  able scans.** is
1d490 20 62 65 63 61 75 73 65 20 73 6f 6d 65 20 69 6e   because some in
1d4a0 63 6f 72 72 65 63 74 6c 79 20 63 6f 64 65 64 20  correctly coded 
1d4b0 6c 65 67 61 63 79 20 61 70 70 6c 69 63 61 74 69  legacy applicati
1d4c0 6f 6e 73 20 6d 69 67 68 74 20 6d 61 6c 66 75 6e  ons might malfun
1d4d0 63 74 69 6f 6e 0a 2a 2a 20 77 68 65 6e 20 74 68  ction.** when th
1d4e0 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 69  e optimization i
1d4f0 73 20 65 6e 61 62 6c 65 64 2e 20 20 50 72 6f 76  s enabled.  Prov
1d500 69 64 69 6e 67 20 74 68 65 20 61 62 69 6c 69 74  iding the abilit
1d510 79 20 74 6f 0a 2a 2a 20 64 69 73 61 62 6c 65 20  y to.** disable 
1d520 74 68 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  the optimization
1d530 20 61 6c 6c 6f 77 73 20 74 68 65 20 6f 6c 64 65   allows the olde
1d540 72 2c 20 62 75 67 67 79 20 61 70 70 6c 69 63 61  r, buggy applica
1d550 74 69 6f 6e 20 63 6f 64 65 20 74 6f 20 77 6f 72  tion code to wor
1d560 6b 0a 2a 2a 20 77 69 74 68 6f 75 74 20 63 68 61  k.** without cha
1d570 6e 67 65 20 65 76 65 6e 20 77 69 74 68 20 6e 65  nge even with ne
1d580 77 65 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  wer versions of 
1d590 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  SQLite..**.** [[
1d5a0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1d5b0 41 43 48 45 5d 5d 20 5b 5b 53 51 4c 49 54 45 5f  ACHE]] [[SQLITE_
1d5c0 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45  CONFIG_GETPCACHE
1d5d0 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
1d5e0 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 20 61  _CONFIG_PCACHE a
1d5f0 6e 64 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  nd SQLITE_CONFIG
1d600 5f 47 45 54 50 43 41 43 48 45 0a 2a 2a 20 3c 64  _GETPCACHE.** <d
1d610 64 3e 20 54 68 65 73 65 20 6f 70 74 69 6f 6e 73  d> These options
1d620 20 61 72 65 20 6f 62 73 6f 6c 65 74 65 20 61 6e   are obsolete an
1d630 64 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20  d should not be 
1d640 75 73 65 64 20 62 79 20 6e 65 77 20 63 6f 64 65  used by new code
1d650 2e 0a 2a 2a 20 54 68 65 79 20 61 72 65 20 72 65  ..** They are re
1d660 74 61 69 6e 65 64 20 66 6f 72 20 62 61 63 6b 77  tained for backw
1d670 61 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69  ards compatibili
1d680 74 79 20 62 75 74 20 61 72 65 20 6e 6f 77 20 6e  ty but are now n
1d690 6f 2d 6f 70 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  o-ops..** </dd>.
1d6a0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1d6b0 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 5d 5d 0a 2a  ONFIG_SQLLOG]].*
1d6c0 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  * <dt>SQLITE_CON
1d6d0 46 49 47 5f 53 51 4c 4c 4f 47 0a 2a 2a 20 3c 64  FIG_SQLLOG.** <d
1d6e0 64 3e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  d>This option is
1d6f0 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
1d700 69 66 20 73 71 6c 69 74 65 20 69 73 20 63 6f 6d  if sqlite is com
1d710 70 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a  piled with the.*
1d720 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  * [SQLITE_ENABLE
1d730 5f 53 51 4c 4c 4f 47 5d 20 70 72 65 2d 70 72 6f  _SQLLOG] pre-pro
1d740 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 64 65 66  cessor macro def
1d750 69 6e 65 64 2e 20 54 68 65 20 66 69 72 73 74 20  ined. The first 
1d760 61 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 0a  argument should.
1d770 2a 2a 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20  ** be a pointer 
1d780 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66  to a function of
1d790 20 74 79 70 65 20 76 6f 69 64 28 2a 29 28 76 6f   type void(*)(vo
1d7a0 69 64 2a 2c 73 71 6c 69 74 65 33 2a 2c 63 6f 6e  id*,sqlite3*,con
1d7b0 73 74 20 63 68 61 72 2a 2c 20 69 6e 74 29 2e 0a  st char*, int)..
1d7c0 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 73 68  ** The second sh
1d7d0 6f 75 6c 64 20 62 65 20 6f 66 20 74 79 70 65 20  ould be of type 
1d7e0 28 76 6f 69 64 2a 29 2e 20 54 68 65 20 63 61 6c  (void*). The cal
1d7f0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
1d800 20 62 79 20 74 68 65 20 6c 69 62 72 61 72 79 0a   by the library.
1d810 2a 2a 20 69 6e 20 74 68 72 65 65 20 73 65 70 61  ** in three sepa
1d820 72 61 74 65 20 63 69 72 63 75 6d 73 74 61 6e 63  rate circumstanc
1d830 65 73 2c 20 69 64 65 6e 74 69 66 69 65 64 20 62  es, identified b
1d840 79 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73  y the value pass
1d850 65 64 20 61 73 20 74 68 65 0a 2a 2a 20 66 6f 75  ed as the.** fou
1d860 72 74 68 20 70 61 72 61 6d 65 74 65 72 2e 20 49  rth parameter. I
1d870 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72  f the fourth par
1d880 61 6d 65 74 65 72 20 69 73 20 30 2c 20 74 68 65  ameter is 0, the
1d890 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
1d8a0 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 70 61 73  onnection.** pas
1d8b0 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  sed as the secon
1d8c0 64 20 61 72 67 75 6d 65 6e 74 20 68 61 73 20 6a  d argument has j
1d8d0 75 73 74 20 62 65 65 6e 20 6f 70 65 6e 65 64 2e  ust been opened.
1d8e0 20 54 68 65 20 74 68 69 72 64 20 61 72 67 75 6d   The third argum
1d8f0 65 6e 74 0a 2a 2a 20 70 6f 69 6e 74 73 20 74 6f  ent.** points to
1d900 20 61 20 62 75 66 66 65 72 20 63 6f 6e 74 61 69   a buffer contai
1d910 6e 69 6e 67 20 74 68 65 20 6e 61 6d 65 20 6f 66  ning the name of
1d920 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
1d930 73 65 20 66 69 6c 65 2e 20 49 66 20 74 68 65 0a  se file. If the.
1d940 2a 2a 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  ** fourth parame
1d950 74 65 72 20 69 73 20 31 2c 20 74 68 65 6e 20 74  ter is 1, then t
1d960 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
1d970 20 74 68 61 74 20 74 68 65 20 74 68 69 72 64 20   that the third 
1d980 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 70 6f 69  parameter.** poi
1d990 6e 74 73 20 74 6f 20 68 61 73 20 6a 75 73 74 20  nts to has just 
1d9a0 62 65 65 6e 20 65 78 65 63 75 74 65 64 2e 20 4f  been executed. O
1d9b0 72 2c 20 69 66 20 74 68 65 20 66 6f 75 72 74 68  r, if the fourth
1d9c0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 32 2c   parameter is 2,
1d9d0 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 63 6f 6e   then.** the con
1d9e0 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 70 61  nection being pa
1d9f0 73 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f  ssed as the seco
1da00 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
1da10 62 65 69 6e 67 20 63 6c 6f 73 65 64 2e 20 54 68  being closed. Th
1da20 65 0a 2a 2a 20 74 68 69 72 64 20 70 61 72 61 6d  e.** third param
1da30 65 74 65 72 20 69 73 20 70 61 73 73 65 64 20 4e  eter is passed N
1da40 55 4c 4c 20 49 6e 20 74 68 69 73 20 63 61 73 65  ULL In this case
1da50 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66  .  An example of
1da60 20 75 73 69 6e 67 20 74 68 69 73 0a 2a 2a 20 63   using this.** c
1da70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1da80 69 6f 6e 20 63 61 6e 20 62 65 20 73 65 65 6e 20  ion can be seen 
1da90 69 6e 20 74 68 65 20 22 74 65 73 74 5f 73 71 6c  in the "test_sql
1daa0 6c 6f 67 2e 63 22 20 73 6f 75 72 63 65 20 66 69  log.c" source fi
1dab0 6c 65 20 69 6e 0a 2a 2a 20 74 68 65 20 63 61 6e  le in.** the can
1dac0 6f 6e 69 63 61 6c 20 53 51 4c 69 74 65 20 73 6f  onical SQLite so
1dad0 75 72 63 65 20 74 72 65 65 2e 3c 2f 64 64 3e 0a  urce tree.</dd>.
1dae0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1daf0 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d  ONFIG_MMAP_SIZE]
1db00 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1db10 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45  CONFIG_MMAP_SIZE
1db20 0a 2a 2a 20 3c 64 64 3e 5e 53 51 4c 49 54 45 5f  .** <dd>^SQLITE_
1db30 43 4f 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45  CONFIG_MMAP_SIZE
1db40 20 74 61 6b 65 73 20 74 77 6f 20 36 34 2d 62 69   takes two 64-bi
1db50 74 20 69 6e 74 65 67 65 72 20 28 73 71 6c 69 74  t integer (sqlit
1db60 65 33 5f 69 6e 74 36 34 29 20 76 61 6c 75 65 73  e3_int64) values
1db70 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 74 68 65  .** that are the
1db80 20 64 65 66 61 75 6c 74 20 6d 6d 61 70 20 73 69   default mmap si
1db90 7a 65 20 6c 69 6d 69 74 20 28 74 68 65 20 64 65  ze limit (the de
1dba0 66 61 75 6c 74 20 73 65 74 74 69 6e 67 20 66 6f  fault setting fo
1dbb0 72 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 6d 6d 61  r.** [PRAGMA mma
1dbc0 70 5f 73 69 7a 65 5d 29 20 61 6e 64 20 74 68 65  p_size]) and the
1dbd0 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77 65 64   maximum allowed
1dbe0 20 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d 69 74   mmap size limit
1dbf0 2e 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75 6c  ..** ^The defaul
1dc00 74 20 73 65 74 74 69 6e 67 20 63 61 6e 20 62 65  t setting can be
1dc10 20 6f 76 65 72 72 69 64 64 65 6e 20 62 79 20 65   overridden by e
1dc20 61 63 68 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ach database con
1dc30 6e 65 63 74 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a  nection using.**
1dc40 20 65 69 74 68 65 72 20 74 68 65 20 5b 50 52 41   either the [PRA
1dc50 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 20 63  GMA mmap_size] c
1dc60 6f 6d 6d 61 6e 64 2c 20 6f 72 20 62 79 20 75 73  ommand, or by us
1dc70 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  ing the.** [SQLI
1dc80 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49  TE_FCNTL_MMAP_SI
1dc90 5a 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  ZE] file control
1dca0 2e 20 20 5e 28 54 68 65 20 6d 61 78 69 6d 75 6d  .  ^(The maximum
1dcb0 20 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20 73 69   allowed mmap si
1dcc0 7a 65 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 73 69  ze.** will be si
1dcd0 6c 65 6e 74 6c 79 20 74 72 75 6e 63 61 74 65 64  lently truncated
1dce0 20 69 66 20 6e 65 63 65 73 73 61 72 79 20 73 6f   if necessary so
1dcf0 20 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f   that it does no
1dd00 74 20 65 78 63 65 65 64 20 74 68 65 0a 2a 2a 20  t exceed the.** 
1dd10 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 61 78  compile-time max
1dd20 69 6d 75 6d 20 6d 6d 61 70 20 73 69 7a 65 20 73  imum mmap size s
1dd30 65 74 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51  et by the.** [SQ
1dd40 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49  LITE_MAX_MMAP_SI
1dd50 5a 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  ZE] compile-time
1dd60 20 6f 70 74 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e 49   option.)^.** ^I
1dd70 66 20 65 69 74 68 65 72 20 61 72 67 75 6d 65 6e  f either argumen
1dd80 74 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e  t to this option
1dd90 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68   is negative, th
1dda0 65 6e 20 74 68 61 74 20 61 72 67 75 6d 65 6e 74  en that argument
1ddb0 20 69 73 0a 2a 2a 20 63 68 61 6e 67 65 64 20 74   is.** changed t
1ddc0 6f 20 69 74 73 20 63 6f 6d 70 69 6c 65 2d 74 69  o its compile-ti
1ddd0 6d 65 20 64 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a  me default..**.*
1dde0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1ddf0 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45  G_WIN32_HEAPSIZE
1de00 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
1de10 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45  _CONFIG_WIN32_HE
1de20 41 50 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 54  APSIZE.** <dd>^T
1de30 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1de40 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20  _WIN32_HEAPSIZE 
1de50 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61  option is only a
1de60 76 61 69 6c 61 62 6c 65 20 69 66 20 53 51 4c 69  vailable if SQLi
1de70 74 65 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65  te is.** compile
1de80 64 20 66 6f 72 20 57 69 6e 64 6f 77 73 20 77 69  d for Windows wi
1de90 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 57  th the [SQLITE_W
1dea0 49 4e 33 32 5f 4d 41 4c 4c 4f 43 5d 20 70 72 65  IN32_MALLOC] pre
1deb0 2d 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  -processor macro
1dec0 0a 2a 2a 20 64 65 66 69 6e 65 64 2e 20 5e 53 51  .** defined. ^SQ
1ded0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33  LITE_CONFIG_WIN3
1dee0 32 5f 48 45 41 50 53 49 5a 45 20 74 61 6b 65 73  2_HEAPSIZE takes
1def0 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67 6e   a 32-bit unsign
1df00 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65  ed integer value
1df10 0a 2a 2a 20 74 68 61 74 20 73 70 65 63 69 66 69  .** that specifi
1df20 65 73 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 73  es the maximum s
1df30 69 7a 65 20 6f 66 20 74 68 65 20 63 72 65 61 74  ize of the creat
1df40 65 64 20 68 65 61 70 2e 0a 2a 2a 0a 2a 2a 20 5b  ed heap..**.** [
1df50 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1df60 43 41 43 48 45 5f 48 44 52 53 5a 5d 5d 0a 2a 2a  CACHE_HDRSZ]].**
1df70 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1df80 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 0a  IG_PCACHE_HDRSZ.
1df90 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49  ** <dd>^The SQLI
1dfa0 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1dfb0 5f 48 44 52 53 5a 20 6f 70 74 69 6f 6e 20 74 61  _HDRSZ option ta
1dfc0 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72  kes a single par
1dfd0 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a 20  ameter which.** 
1dfe0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
1dff0 61 6e 20 69 6e 74 65 67 65 72 20 61 6e 64 20 77  an integer and w
1e000 72 69 74 65 73 20 69 6e 74 6f 20 74 68 61 74 20  rites into that 
1e010 69 6e 74 65 67 65 72 20 74 68 65 20 6e 75 6d 62  integer the numb
1e020 65 72 20 6f 66 20 65 78 74 72 61 0a 2a 2a 20 62  er of extra.** b
1e030 79 74 65 73 20 70 65 72 20 70 61 67 65 20 72 65  ytes per page re
1e040 71 75 69 72 65 64 20 66 6f 72 20 65 61 63 68 20  quired for each 
1e050 70 61 67 65 20 69 6e 20 5b 53 51 4c 49 54 45 5f  page in [SQLITE_
1e060 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45  CONFIG_PAGECACHE
1e070 5d 2e 0a 2a 2a 20 54 68 65 20 61 6d 6f 75 6e 74  ]..** The amount
1e080 20 6f 66 20 65 78 74 72 61 20 73 70 61 63 65 20   of extra space 
1e090 72 65 71 75 69 72 65 64 20 63 61 6e 20 63 68 61  required can cha
1e0a0 6e 67 65 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  nge depending on
1e0b0 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 2c 0a 2a   the compiler,.*
1e0c0 2a 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72  * target platfor
1e0d0 6d 2c 20 61 6e 64 20 53 51 4c 69 74 65 20 76 65  m, and SQLite ve
1e0e0 72 73 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  rsion..**.** [[S
1e0f0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41  QLITE_CONFIG_PMA
1e100 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  SZ]].** <dt>SQLI
1e110 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 0a  TE_CONFIG_PMASZ.
1e120 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49  ** <dd>^The SQLI
1e130 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20  TE_CONFIG_PMASZ 
1e140 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73  option takes a s
1e150 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20  ingle parameter 
1e160 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 6e 20 75  which.** is an u
1e170 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20  nsigned integer 
1e180 61 6e 64 20 73 65 74 73 20 74 68 65 20 22 4d 69  and sets the "Mi
1e190 6e 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65 22 20  nimum PMA Size" 
1e1a0 66 6f 72 20 74 68 65 20 6d 75 6c 74 69 74 68 72  for the multithr
1e1b0 65 61 64 65 64 0a 2a 2a 20 73 6f 72 74 65 72 20  eaded.** sorter 
1e1c0 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65 72 2e  to that integer.
1e1d0 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 6d 69    The default mi
1e1e0 6e 69 6d 75 6d 20 50 4d 41 20 53 69 7a 65 20 69  nimum PMA Size i
1e1f0 73 20 73 65 74 20 62 79 20 74 68 65 0a 2a 2a 20  s set by the.** 
1e200 5b 53 51 4c 49 54 45 5f 53 4f 52 54 45 52 5f 50  [SQLITE_SORTER_P
1e210 4d 41 53 5a 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  MASZ] compile-ti
1e220 6d 65 20 6f 70 74 69 6f 6e 2e 20 20 4e 65 77 20  me option.  New 
1e230 74 68 72 65 61 64 73 20 61 72 65 20 6c 61 75 6e  threads are laun
1e240 63 68 65 64 0a 2a 2a 20 74 6f 20 68 65 6c 70 20  ched.** to help 
1e250 77 69 74 68 20 73 6f 72 74 20 6f 70 65 72 61 74  with sort operat
1e260 69 6f 6e 73 20 77 68 65 6e 20 6d 75 6c 74 69 74  ions when multit
1e270 68 72 65 61 64 65 64 20 73 6f 72 74 69 6e 67 0a  hreaded sorting.
1e280 2a 2a 20 69 73 20 65 6e 61 62 6c 65 64 20 28 75  ** is enabled (u
1e290 73 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41  sing the [PRAGMA
1e2a0 20 74 68 72 65 61 64 73 5d 20 63 6f 6d 6d 61 6e   threads] comman
1e2b0 64 29 20 61 6e 64 20 74 68 65 20 61 6d 6f 75 6e  d) and the amoun
1e2c0 74 20 6f 66 20 63 6f 6e 74 65 6e 74 0a 2a 2a 20  t of content.** 
1e2d0 74 6f 20 62 65 20 73 6f 72 74 65 64 20 65 78 63  to be sorted exc
1e2e0 65 65 64 73 20 74 68 65 20 70 61 67 65 20 73 69  eeds the page si
1e2f0 7a 65 20 74 69 6d 65 73 20 74 68 65 20 6d 69 6e  ze times the min
1e300 69 6d 75 6d 20 6f 66 20 74 68 65 0a 2a 2a 20 5b  imum of the.** [
1e310 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
1e320 65 5d 20 73 65 74 74 69 6e 67 20 61 6e 64 20 74  e] setting and t
1e330 68 69 73 20 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a  his value..**.**
1e340 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1e350 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d  _STMTJRNL_SPILL]
1e360 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1e370 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f  CONFIG_STMTJRNL_
1e380 53 50 49 4c 4c 0a 2a 2a 20 3c 64 64 3e 5e 54 68  SPILL.** <dd>^Th
1e390 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1e3a0 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20 6f  STMTJRNL_SPILL o
1e3b0 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1e3c0 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77  ngle parameter w
1e3d0 68 69 63 68 0a 2a 2a 20 62 65 63 6f 6d 65 73 20  hich.** becomes 
1e3e0 74 68 65 20 5b 73 74 61 74 65 6d 65 6e 74 20 6a  the [statement j
1e3f0 6f 75 72 6e 61 6c 5d 20 73 70 69 6c 6c 2d 74 6f  ournal] spill-to
1e400 2d 64 69 73 6b 20 74 68 72 65 73 68 6f 6c 64 2e  -disk threshold.
1e410 20 20 0a 2a 2a 20 5b 53 74 61 74 65 6d 65 6e 74    .** [Statement
1e420 20 6a 6f 75 72 6e 61 6c 73 5d 20 61 72 65 20 68   journals] are h
1e430 65 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 75 6e  eld in memory un
1e440 74 69 6c 20 74 68 65 69 72 20 73 69 7a 65 20 28  til their size (
1e450 69 6e 20 62 79 74 65 73 29 0a 2a 2a 20 65 78 63  in bytes).** exc
1e460 65 65 64 73 20 74 68 69 73 20 74 68 72 65 73 68  eeds this thresh
1e470 6f 6c 64 2c 20 61 74 20 77 68 69 63 68 20 70 6f  old, at which po
1e480 69 6e 74 20 74 68 65 79 20 61 72 65 20 77 72 69  int they are wri
1e490 74 74 65 6e 20 74 6f 20 64 69 73 6b 2e 0a 2a 2a  tten to disk..**
1e4a0 20 4f 72 20 69 66 20 74 68 65 20 74 68 72 65 73   Or if the thres
1e4b0 68 6f 6c 64 20 69 73 20 2d 31 2c 20 73 74 61 74  hold is -1, stat
1e4c0 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 73 20 61  ement journals a
1e4d0 72 65 20 61 6c 77 61 79 73 20 68 65 6c 64 0a 2a  re always held.*
1e4e0 2a 20 65 78 63 6c 75 73 69 76 65 6c 79 20 69 6e  * exclusively in
1e4f0 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20 53 69 6e 63   memory..** Sinc
1e500 65 20 6d 61 6e 79 20 73 74 61 74 65 6d 65 6e 74  e many statement
1e510 20 6a 6f 75 72 6e 61 6c 73 20 6e 65 76 65 72 20   journals never 
1e520 62 65 63 6f 6d 65 20 6c 61 72 67 65 2c 20 73 65  become large, se
1e530 74 74 69 6e 67 20 74 68 65 20 73 70 69 6c 6c 0a  tting the spill.
1e540 2a 2a 20 74 68 72 65 73 68 6f 6c 64 20 74 6f 20  ** threshold to 
1e550 61 20 76 61 6c 75 65 20 73 75 63 68 20 61 73 20  a value such as 
1e560 36 34 4b 69 42 20 63 61 6e 20 67 72 65 61 74 6c  64KiB can greatl
1e570 79 20 72 65 64 75 63 65 20 74 68 65 20 61 6d 6f  y reduce the amo
1e580 75 6e 74 20 6f 66 0a 2a 2a 20 49 2f 4f 20 72 65  unt of.** I/O re
1e590 71 75 69 72 65 64 20 74 6f 20 73 75 70 70 6f 72  quired to suppor
1e5a0 74 20 73 74 61 74 65 6d 65 6e 74 20 72 6f 6c 6c  t statement roll
1e5b0 62 61 63 6b 2e 0a 2a 2a 20 54 68 65 20 64 65 66  back..** The def
1e5c0 61 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74  ault value for t
1e5d0 68 69 73 20 73 65 74 74 69 6e 67 20 69 73 20 63  his setting is c
1e5e0 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74 68 65  ontrolled by the
1e5f0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 53 54 4d 54  .** [SQLITE_STMT
1e600 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 20 63 6f 6d 70  JRNL_SPILL] comp
1e610 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  ile-time option.
1e620 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65  .** </dl>.*/.#de
1e630 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1e640 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 20  IG_SINGLETHREAD 
1e650 20 31 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23 64   1  /* nil */.#d
1e660 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1e670 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20  FIG_MULTITHREAD 
1e680 20 20 32 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a 23    2  /* nil */.#
1e690 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1e6a0 4e 46 49 47 5f 53 45 52 49 41 4c 49 5a 45 44 20  NFIG_SERIALIZED 
1e6b0 20 20 20 33 20 20 2f 2a 20 6e 69 6c 20 2a 2f 0a     3  /* nil */.
1e6c0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1e6d0 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 20 20 20 20  ONFIG_MALLOC    
1e6e0 20 20 20 20 34 20 20 2f 2a 20 73 71 6c 69 74 65      4  /* sqlite
1e6f0 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a 20 2a  3_mem_methods* *
1e700 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e710 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f  _CONFIG_GETMALLO
1e720 43 20 20 20 20 20 35 20 20 2f 2a 20 73 71 6c 69  C     5  /* sqli
1e730 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 2a  te3_mem_methods*
1e740 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1e750 54 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43  TE_CONFIG_SCRATC
1e760 48 20 20 20 20 20 20 20 36 20 20 2f 2a 20 4e 6f  H       6  /* No
1e770 20 6c 6f 6e 67 65 72 20 75 73 65 64 20 2a 2f 0a   longer used */.
1e780 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1e790 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 20  ONFIG_PAGECACHE 
1e7a0 20 20 20 20 37 20 20 2f 2a 20 76 6f 69 64 2a 2c      7  /* void*,
1e7b0 20 69 6e 74 20 73 7a 2c 20 69 6e 74 20 4e 20 2a   int sz, int N *
1e7c0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e7d0 5f 43 4f 4e 46 49 47 5f 48 45 41 50 20 20 20 20  _CONFIG_HEAP    
1e7e0 20 20 20 20 20 20 38 20 20 2f 2a 20 76 6f 69 64        8  /* void
1e7f0 2a 2c 20 69 6e 74 20 6e 42 79 74 65 2c 20 69 6e  *, int nByte, in
1e800 74 20 6d 69 6e 20 2a 2f 0a 23 64 65 66 69 6e 65  t min */.#define
1e810 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1e820 45 4d 53 54 41 54 55 53 20 20 20 20 20 39 20 20  EMSTATUS     9  
1e830 2f 2a 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64  /* boolean */.#d
1e840 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1e850 46 49 47 5f 4d 55 54 45 58 20 20 20 20 20 20 20  FIG_MUTEX       
1e860 20 31 30 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f   10  /* sqlite3_
1e870 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 2a 20 2a  mutex_methods* *
1e880 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1e890 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58  _CONFIG_GETMUTEX
1e8a0 20 20 20 20 20 31 31 20 20 2f 2a 20 73 71 6c 69       11  /* sqli
1e8b0 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64  te3_mutex_method
1e8c0 73 2a 20 2a 2f 0a 2f 2a 20 70 72 65 76 69 6f 75  s* */./* previou
1e8d0 73 6c 79 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  sly SQLITE_CONFI
1e8e0 47 5f 43 48 55 4e 4b 41 4c 4c 4f 43 20 31 32 20  G_CHUNKALLOC 12 
1e8f0 77 68 69 63 68 20 69 73 20 6e 6f 77 20 75 6e 75  which is now unu
1e900 73 65 64 2e 20 2a 2f 20 0a 23 64 65 66 69 6e 65  sed. */ .#define
1e910 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
1e920 4f 4f 4b 41 53 49 44 45 20 20 20 20 31 33 20 20  OOKASIDE    13  
1e930 2f 2a 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64  /* int int */.#d
1e940 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1e950 46 49 47 5f 50 43 41 43 48 45 20 20 20 20 20 20  FIG_PCACHE      
1e960 20 31 34 20 20 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f   14  /* no-op */
1e970 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1e980 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43 48 45  CONFIG_GETPCACHE
1e990 20 20 20 20 31 35 20 20 2f 2a 20 6e 6f 2d 6f 70      15  /* no-op
1e9a0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1e9b0 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 20 20  TE_CONFIG_LOG   
1e9c0 20 20 20 20 20 20 20 31 36 20 20 2f 2a 20 78 46         16  /* xF
1e9d0 75 6e 63 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23 64  unc, void* */.#d
1e9e0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1e9f0 46 49 47 5f 55 52 49 20 20 20 20 20 20 20 20 20  FIG_URI         
1ea00 20 31 37 20 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23   17  /* int */.#
1ea10 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1ea20 4e 46 49 47 5f 50 43 41 43 48 45 32 20 20 20 20  NFIG_PCACHE2    
1ea30 20 20 31 38 20 20 2f 2a 20 73 71 6c 69 74 65 33    18  /* sqlite3
1ea40 5f 70 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32  _pcache_methods2
1ea50 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1ea60 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43  ITE_CONFIG_GETPC
1ea70 41 43 48 45 32 20 20 20 31 39 20 20 2f 2a 20 73  ACHE2   19  /* s
1ea80 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d 65  qlite3_pcache_me
1ea90 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66 69  thods2* */.#defi
1eaa0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1eab0 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f  _COVERING_INDEX_
1eac0 53 43 41 4e 20 32 30 20 20 2f 2a 20 69 6e 74 20  SCAN 20  /* int 
1ead0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1eae0 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c 4f 47 20  E_CONFIG_SQLLOG 
1eaf0 20 20 20 20 20 20 32 31 20 20 2f 2a 20 78 53 71        21  /* xSq
1eb00 6c 6c 6f 67 2c 20 76 6f 69 64 2a 20 2a 2f 0a 23  llog, void* */.#
1eb10 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1eb20 4e 46 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 20  NFIG_MMAP_SIZE  
1eb30 20 20 32 32 20 20 2f 2a 20 73 71 6c 69 74 65 33    22  /* sqlite3
1eb40 5f 69 6e 74 36 34 2c 20 73 71 6c 69 74 65 33 5f  _int64, sqlite3_
1eb50 69 6e 74 36 34 20 2a 2f 0a 23 64 65 66 69 6e 65  int64 */.#define
1eb60 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57   SQLITE_CONFIG_W
1eb70 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 20 20 20  IN32_HEAPSIZE   
1eb80 20 20 20 32 33 20 20 2f 2a 20 69 6e 74 20 6e 42     23  /* int nB
1eb90 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  yte */.#define S
1eba0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
1ebb0 43 48 45 5f 48 44 52 53 5a 20 20 20 20 20 20 20  CHE_HDRSZ       
1ebc0 20 32 34 20 20 2f 2a 20 69 6e 74 20 2a 70 73 7a   24  /* int *psz
1ebd0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
1ebe0 54 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 20  TE_CONFIG_PMASZ 
1ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 35                25
1ec00 20 20 2f 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e    /* unsigned in
1ec10 74 20 73 7a 50 6d 61 20 2a 2f 0a 23 64 65 66 69  t szPma */.#defi
1ec20 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1ec30 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 20  _STMTJRNL_SPILL 
1ec40 20 20 20 20 20 32 36 20 20 2f 2a 20 69 6e 74 20       26  /* int 
1ec50 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65  nByte */.#define
1ec60 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
1ec70 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 20 20 20 20 20  MALL_MALLOC     
1ec80 20 20 20 32 37 20 20 2f 2a 20 62 6f 6f 6c 65 61     27  /* boolea
1ec90 6e 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  n */../*.** CAPI
1eca0 33 52 45 46 3a 20 44 61 74 61 62 61 73 65 20 43  3REF: Database C
1ecb0 6f 6e 6e 65 63 74 69 6f 6e 20 43 6f 6e 66 69 67  onnection Config
1ecc0 75 72 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a  uration Options.
1ecd0 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73  **.** These cons
1ece0 74 61 6e 74 73 20 61 72 65 20 74 68 65 20 61 76  tants are the av
1ecf0 61 69 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 20  ailable integer 
1ed00 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1ed10 74 69 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61  tions that.** ca
1ed20 6e 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74  n be passed as t
1ed30 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
1ed40 6e 74 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  nt to the [sqlit
1ed50 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20  e3_db_config()] 
1ed60 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a  interface..**.**
1ed70 20 4e 65 77 20 63 6f 6e 66 69 67 75 72 61 74 69   New configurati
1ed80 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62  on options may b
1ed90 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72  e added in futur
1eda0 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51  e releases of SQ
1edb0 4c 69 74 65 2e 0a 2a 2a 20 45 78 69 73 74 69 6e  Lite..** Existin
1edc0 67 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  g configuration 
1edd0 6f 70 74 69 6f 6e 73 20 6d 69 67 68 74 20 62 65  options might be
1ede0 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 2e 20 20   discontinued.  
1edf0 41 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20  Applications.** 
1ee00 73 68 6f 75 6c 64 20 63 68 65 63 6b 20 74 68 65  should check the
1ee10 20 72 65 74 75 72 6e 20 63 6f 64 65 20 66 72 6f   return code fro
1ee20 6d 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  m [sqlite3_db_co
1ee30 6e 66 69 67 28 29 5d 20 74 6f 20 6d 61 6b 65 20  nfig()] to make 
1ee40 73 75 72 65 20 74 68 61 74 0a 2a 2a 20 74 68 65  sure that.** the
1ee50 20 63 61 6c 6c 20 77 6f 72 6b 65 64 2e 20 20 5e   call worked.  ^
1ee60 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f  The [sqlite3_db_
1ee70 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66  config()] interf
1ee80 61 63 65 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ace will return 
1ee90 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 5b 65  a.** non-zero [e
1eea0 72 72 6f 72 20 63 6f 64 65 5d 20 69 66 20 61 20  rror code] if a 
1eeb0 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 6f 72 20  discontinued or 
1eec0 75 6e 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 66  unsupported conf
1eed0 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
1eee0 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64 2e 0a  .** is invoked..
1eef0 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 3c 64  **.** <dl>.** <d
1ef00 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  t>SQLITE_DBCONFI
1ef10 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64 74 3e  G_LOOKASIDE</dt>
1ef20 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f  .** <dd> ^This o
1ef30 70 74 69 6f 6e 20 74 61 6b 65 73 20 74 68 72 65  ption takes thre
1ef40 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67  e additional arg
1ef50 75 6d 65 6e 74 73 20 74 68 61 74 20 64 65 74 65  uments that dete
1ef60 72 6d 69 6e 65 20 74 68 65 20 0a 2a 2a 20 5b 6c  rmine the .** [l
1ef70 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20  ookaside memory 
1ef80 61 6c 6c 6f 63 61 74 6f 72 5d 20 63 6f 6e 66 69  allocator] confi
1ef90 67 75 72 61 74 69 6f 6e 20 66 6f 72 20 74 68 65  guration for the
1efa0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
1efb0 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 5e 54 68 65 20  ction]..** ^The 
1efc0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 28  first argument (
1efd0 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
1efe0 74 65 72 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ter to [sqlite3_
1eff0 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69 73 20  db_config()] is 
1f000 61 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20  a.** pointer to 
1f010 61 20 6d 65 6d 6f 72 79 20 62 75 66 66 65 72 20  a memory buffer 
1f020 74 6f 20 75 73 65 20 66 6f 72 20 6c 6f 6f 6b 61  to use for looka
1f030 73 69 64 65 20 6d 65 6d 6f 72 79 2e 0a 2a 2a 20  side memory..** 
1f040 5e 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d  ^The first argum
1f050 65 6e 74 20 61 66 74 65 72 20 74 68 65 20 53 51  ent after the SQ
1f060 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
1f070 4f 4b 41 53 49 44 45 20 76 65 72 62 0a 2a 2a 20  OKASIDE verb.** 
1f080 6d 61 79 20 62 65 20 4e 55 4c 4c 20 69 6e 20 77  may be NULL in w
1f090 68 69 63 68 20 63 61 73 65 20 53 51 4c 69 74 65  hich case SQLite
1f0a0 20 77 69 6c 6c 20 61 6c 6c 6f 63 61 74 65 20 74   will allocate t
1f0b0 68 65 0a 2a 2a 20 6c 6f 6f 6b 61 73 69 64 65 20  he.** lookaside 
1f0c0 62 75 66 66 65 72 20 69 74 73 65 6c 66 20 75 73  buffer itself us
1f0d0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  ing [sqlite3_mal
1f0e0 6c 6f 63 28 29 5d 2e 20 5e 54 68 65 20 73 65 63  loc()]. ^The sec
1f0f0 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20  ond argument is 
1f100 74 68 65 0a 2a 2a 20 73 69 7a 65 20 6f 66 20 65  the.** size of e
1f110 61 63 68 20 6c 6f 6f 6b 61 73 69 64 65 20 62 75  ach lookaside bu
1f120 66 66 65 72 20 73 6c 6f 74 2e 20 20 5e 54 68 65  ffer slot.  ^The
1f130 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20   third argument 
1f140 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
1f150 0a 2a 2a 20 73 6c 6f 74 73 2e 20 20 54 68 65 20  .** slots.  The 
1f160 73 69 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66  size of the buff
1f170 65 72 20 69 6e 20 74 68 65 20 66 69 72 73 74 20  er in the first 
1f180 61 72 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65  argument must be
1f190 20 67 72 65 61 74 65 72 20 74 68 61 6e 0a 2a 2a   greater than.**
1f1a0 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 74 68 65   or equal to the
1f1b0 20 70 72 6f 64 75 63 74 20 6f 66 20 74 68 65 20   product of the 
1f1c0 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 69 72 64  second and third
1f1d0 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 54 68 65   arguments.  The
1f1e0 20 62 75 66 66 65 72 0a 2a 2a 20 6d 75 73 74 20   buffer.** must 
1f1f0 62 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e  be aligned to an
1f200 20 38 2d 62 79 74 65 20 62 6f 75 6e 64 61 72 79   8-byte boundary
1f210 2e 20 20 5e 49 66 20 74 68 65 20 73 65 63 6f 6e  .  ^If the secon
1f220 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a  d argument to.**
1f230 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
1f240 5f 4c 4f 4f 4b 41 53 49 44 45 20 69 73 20 6e 6f  _LOOKASIDE is no
1f250 74 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20  t a multiple of 
1f260 38 2c 20 69 74 20 69 73 20 69 6e 74 65 72 6e 61  8, it is interna
1f270 6c 6c 79 0a 2a 2a 20 72 6f 75 6e 64 65 64 20 64  lly.** rounded d
1f280 6f 77 6e 20 74 6f 20 74 68 65 20 6e 65 78 74 20  own to the next 
1f290 73 6d 61 6c 6c 65 72 20 6d 75 6c 74 69 70 6c 65  smaller multiple
1f2a0 20 6f 66 20 38 2e 20 20 5e 28 54 68 65 20 6c 6f   of 8.  ^(The lo
1f2b0 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 0a 2a  okaside memory.*
1f2c0 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  * configuration 
1f2d0 66 6f 72 20 61 20 64 61 74 61 62 61 73 65 20 63  for a database c
1f2e0 6f 6e 6e 65 63 74 69 6f 6e 20 63 61 6e 20 6f 6e  onnection can on
1f2f0 6c 79 20 62 65 20 63 68 61 6e 67 65 64 20 77 68  ly be changed wh
1f300 65 6e 20 74 68 61 74 0a 2a 2a 20 63 6f 6e 6e 65  en that.** conne
1f310 63 74 69 6f 6e 20 69 73 20 6e 6f 74 20 63 75 72  ction is not cur
1f320 72 65 6e 74 6c 79 20 75 73 69 6e 67 20 6c 6f 6f  rently using loo
1f330 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 2c 20 6f  kaside memory, o
1f340 72 20 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  r in other words
1f350 0a 2a 2a 20 77 68 65 6e 20 74 68 65 20 22 63 75  .** when the "cu
1f360 72 72 65 6e 74 20 76 61 6c 75 65 22 20 72 65 74  rrent value" ret
1f370 75 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71 6c  urned by.** [sql
1f380 69 74 65 33 5f 64 62 5f 73 74 61 74 75 73 5d 28  ite3_db_status](
1f390 44 2c 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  D,[SQLITE_CONFIG
1f3a0 5f 4c 4f 4f 4b 41 53 49 44 45 5d 2c 2e 2e 2e 29  _LOOKASIDE],...)
1f3b0 20 69 73 20 7a 65 72 6f 2e 0a 2a 2a 20 41 6e 79   is zero..** Any
1f3c0 20 61 74 74 65 6d 70 74 20 74 6f 20 63 68 61 6e   attempt to chan
1f3d0 67 65 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65  ge the lookaside
1f3e0 20 6d 65 6d 6f 72 79 20 63 6f 6e 66 69 67 75 72   memory configur
1f3f0 61 74 69 6f 6e 20 77 68 65 6e 20 6c 6f 6f 6b 61  ation when looka
1f400 73 69 64 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 69  side.** memory i
1f410 73 20 69 6e 20 75 73 65 20 6c 65 61 76 65 73 20  s in use leaves 
1f420 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
1f430 6e 20 75 6e 63 68 61 6e 67 65 64 20 61 6e 64 20  n unchanged and 
1f440 72 65 74 75 72 6e 73 20 0a 2a 2a 20 5b 53 51 4c  returns .** [SQL
1f450 49 54 45 5f 42 55 53 59 5d 2e 29 5e 3c 2f 64 64  ITE_BUSY].)^</dd
1f460 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  >.**.** <dt>SQLI
1f470 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
1f480 4c 45 5f 46 4b 45 59 3c 2f 64 74 3e 0a 2a 2a 20  LE_FKEY</dt>.** 
1f490 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f  <dd> ^This optio
1f4a0 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e 61  n is used to ena
1f4b0 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20 74  ble or disable t
1f4c0 68 65 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 6f  he enforcement o
1f4d0 66 0a 2a 2a 20 5b 66 6f 72 65 69 67 6e 20 6b 65  f.** [foreign ke
1f4e0 79 20 63 6f 6e 73 74 72 61 69 6e 74 73 5d 2e 20  y constraints]. 
1f4f0 20 54 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65   There should be
1f500 20 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20   two additional 
1f510 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68  arguments..** Th
1f520 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
1f530 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77   is an integer w
1f540 68 69 63 68 20 69 73 20 30 20 74 6f 20 64 69 73  hich is 0 to dis
1f550 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d  able FK enforcem
1f560 65 6e 74 2c 0a 2a 2a 20 70 6f 73 69 74 69 76 65  ent,.** positive
1f570 20 74 6f 20 65 6e 61 62 6c 65 20 46 4b 20 65 6e   to enable FK en
1f580 66 6f 72 63 65 6d 65 6e 74 20 6f 72 20 6e 65 67  forcement or neg
1f590 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 46  ative to leave F
1f5a0 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 0a 2a 2a  K enforcement.**
1f5b0 20 75 6e 63 68 61 6e 67 65 64 2e 20 20 54 68 65   unchanged.  The
1f5c0 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
1f5d0 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  r is a pointer t
1f5e0 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74  o an integer int
1f5f0 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72  o which.** is wr
1f600 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20  itten 0 or 1 to 
1f610 69 6e 64 69 63 61 74 65 20 77 68 65 74 68 65 72  indicate whether
1f620 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20   FK enforcement 
1f630 69 73 20 6f 66 66 20 6f 72 20 6f 6e 0a 2a 2a 20  is off or on.** 
1f640 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63  following this c
1f650 61 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  all.  The second
1f660 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62   parameter may b
1f670 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  e a NULL pointer
1f680 2c 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61  , in.** which ca
1f690 73 65 20 74 68 65 20 46 4b 20 65 6e 66 6f 72 63  se the FK enforc
1f6a0 65 6d 65 6e 74 20 73 65 74 74 69 6e 67 20 69 73  ement setting is
1f6b0 20 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61   not reported ba
1f6c0 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ck. </dd>.**.** 
1f6d0 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e  <dt>SQLITE_DBCON
1f6e0 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47  FIG_ENABLE_TRIGG
1f6f0 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  ER</dt>.** <dd> 
1f700 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20  ^This option is 
1f710 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f  used to enable o
1f720 72 20 64 69 73 61 62 6c 65 20 5b 43 52 45 41 54  r disable [CREAT
1f730 45 20 54 52 49 47 47 45 52 20 7c 20 74 72 69 67  E TRIGGER | trig
1f740 67 65 72 73 5d 2e 0a 2a 2a 20 54 68 65 72 65 20  gers]..** There 
1f750 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
1f760 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
1f770 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
1f780 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
1f790 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
1f7a0 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 74 72   0 to disable tr
1f7b0 69 67 67 65 72 73 2c 0a 2a 2a 20 70 6f 73 69 74  iggers,.** posit
1f7c0 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 74 72  ive to enable tr
1f7d0 69 67 67 65 72 73 20 6f 72 20 6e 65 67 61 74 69  iggers or negati
1f7e0 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20  ve to leave the 
1f7f0 73 65 74 74 69 6e 67 20 75 6e 63 68 61 6e 67 65  setting unchange
1f800 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64  d..** The second
1f810 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
1f820 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
1f830 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68  teger into which
1f840 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30  .** is written 0
1f850 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74   or 1 to indicat
1f860 65 20 77 68 65 74 68 65 72 20 74 72 69 67 67 65  e whether trigge
1f870 72 73 20 61 72 65 20 64 69 73 61 62 6c 65 64 20  rs are disabled 
1f880 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f  or enabled.** fo
1f890 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c  llowing this cal
1f8a0 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70  l.  The second p
1f8b0 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20  arameter may be 
1f8c0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20  a NULL pointer, 
1f8d0 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65  in.** which case
1f8e0 20 74 68 65 20 74 72 69 67 67 65 72 20 73 65 74   the trigger set
1f8f0 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70 6f  ting is not repo
1f900 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e  rted back. </dd>
1f910 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  .**.** <dt>SQLIT
1f920 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
1f930 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52  E_FTS3_TOKENIZER
1f940 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54  </dt>.** <dd> ^T
1f950 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
1f960 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20  ed to enable or 
1f970 64 69 73 61 62 6c 65 20 74 68 65 20 74 77 6f 2d  disable the two-
1f980 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 76 65 72 73  argument.** vers
1f990 69 6f 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33  ion of the [fts3
1f9a0 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75  _tokenizer()] fu
1f9b0 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20  nction which is 
1f9c0 70 61 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b  part of the.** [
1f9d0 46 54 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20  FTS3] full-text 
1f9e0 73 65 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78  search engine ex
1f9f0 74 65 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72  tension..** Ther
1fa00 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
1fa10 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
1fa20 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ents..** The fir
1fa30 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  st argument is a
1fa40 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20  n integer which 
1fa50 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
1fa60 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29  fts3_tokenizer()
1fa70 20 6f 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20   or.** positive 
1fa80 74 6f 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74  to enable fts3_t
1fa90 6f 6b 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65  okenizer() or ne
1faa0 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20  gative to leave 
1fab0 74 68 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75  the setting.** u
1fac0 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65  nchanged..** The
1fad0 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
1fae0 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  r is a pointer t
1faf0 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74  o an integer int
1fb00 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72  o which.** is wr
1fb10 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20  itten 0 or 1 to 
1fb20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68 65 72  indicate whether
1fb30 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20   fts3_tokenizer 
1fb40 69 73 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65  is disabled or e
1fb50 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77  nabled.** follow
1fb60 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
1fb70 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
1fb80 65 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55  eter may be a NU
1fb90 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a  LL pointer, in.*
1fba0 2a 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  * which case the
1fbb0 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73 20   new setting is 
1fbc0 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
1fbd0 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c  k. </dd>.**.** <
1fbe0 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
1fbf0 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45  IG_ENABLE_LOAD_E
1fc00 58 54 45 4e 53 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a  XTENSION</dt>.**
1fc10 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69   <dd> ^This opti
1fc20 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e  on is used to en
1fc30 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20  able or disable 
1fc40 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  the [sqlite3_loa
1fc50 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 0a 2a  d_extension()].*
1fc60 2a 20 69 6e 74 65 72 66 61 63 65 20 69 6e 64 65  * interface inde
1fc70 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 65  pendently of the
1fc80 20 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e   [load_extension
1fc90 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ()] SQL function
1fca0 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  ..** The [sqlite
1fcb0 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
1fcc0 74 65 6e 73 69 6f 6e 28 29 5d 20 41 50 49 20 65  tension()] API e
1fcd0 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c  nables or disabl
1fce0 65 73 20 62 6f 74 68 20 74 68 65 0a 2a 2a 20 43  es both the.** C
1fcf0 2d 41 50 49 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  -API [sqlite3_lo
1fd00 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
1fd10 61 6e 64 20 74 68 65 20 53 51 4c 20 66 75 6e 63  and the SQL func
1fd20 74 69 6f 6e 20 5b 6c 6f 61 64 5f 65 78 74 65 6e  tion [load_exten
1fd30 73 69 6f 6e 28 29 5d 2e 0a 2a 2a 20 54 68 65 72  sion()]..** Ther
1fd40 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
1fd50 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
1fd60 65 6e 74 73 2e 0a 2a 2a 20 57 68 65 6e 20 74 68  ents..** When th
1fd70 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
1fd80 20 74 6f 20 74 68 69 73 20 69 6e 74 65 72 66 61   to this interfa
1fd90 63 65 20 69 73 20 31 2c 20 74 68 65 6e 20 6f 6e  ce is 1, then on
1fda0 6c 79 20 74 68 65 20 43 2d 41 50 49 20 69 73 0a  ly the C-API is.
1fdb0 2a 2a 20 65 6e 61 62 6c 65 64 20 61 6e 64 20 74  ** enabled and t
1fdc0 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
1fdd0 72 65 6d 61 69 6e 73 20 64 69 73 61 62 6c 65 64  remains disabled
1fde0 2e 20 20 49 66 20 74 68 65 20 66 69 72 73 74 20  .  If the first 
1fdf0 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74  argument to.** t
1fe00 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
1fe10 20 30 2c 20 74 68 65 6e 20 62 6f 74 68 20 74 68   0, then both th
1fe20 65 20 43 2d 41 50 49 20 61 6e 64 20 74 68 65 20  e C-API and the 
1fe30 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 61 72 65  SQL function are
1fe40 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a 20 49 66   disabled..** If
1fe50 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
1fe60 65 6e 74 20 69 73 20 2d 31 2c 20 74 68 65 6e 20  ent is -1, then 
1fe70 6e 6f 20 63 68 61 6e 67 65 73 20 61 72 65 20 6d  no changes are m
1fe80 61 64 65 20 74 6f 20 73 74 61 74 65 20 6f 66 20  ade to state of 
1fe90 65 69 74 68 65 72 20 74 68 65 0a 2a 2a 20 43 2d  either the.** C-
1fea0 41 50 49 20 6f 72 20 74 68 65 20 53 51 4c 20 66  API or the SQL f
1feb0 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 54 68 65 20  unction..** The 
1fec0 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
1fed0 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
1fee0 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f   an integer into
1fef0 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69   which.** is wri
1ff00 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69  tten 0 or 1 to i
1ff10 6e 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20  ndicate whether 
1ff20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
1ff30 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72  tension()] inter
1ff40 66 61 63 65 0a 2a 2a 20 69 73 20 64 69 73 61 62  face.** is disab
1ff50 6c 65 64 20 6f 72 20 65 6e 61 62 6c 65 64 20 66  led or enabled f
1ff60 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61  ollowing this ca
1ff70 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ll.  The second 
1ff80 70 61 72 61 6d 65 74 65 72 20 6d 61 79 0a 2a 2a  parameter may.**
1ff90 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   be a NULL point
1ffa0 65 72 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73  er, in which cas
1ffb0 65 20 74 68 65 20 6e 65 77 20 73 65 74 74 69 6e  e the new settin
1ffc0 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65  g is not reporte
1ffd0 64 20 62 61 63 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e  d back..** </dd>
1ffe0 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  .**.** <dt>SQLIT
1fff0 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44  E_DBCONFIG_MAIND
20000 42 4e 41 4d 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  BNAME</dt>.** <d
20010 64 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20  d> ^This option 
20020 69 73 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67  is used to chang
20030 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  e the name of th
20040 65 20 22 6d 61 69 6e 22 20 64 61 74 61 62 61 73  e "main" databas
20050 65 0a 2a 2a 20 73 63 68 65 6d 61 2e 20 20 5e 54  e.** schema.  ^T
20060 68 65 20 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74  he sole argument
20070 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
20080 20 61 20 63 6f 6e 73 74 61 6e 74 20 55 54 46 38   a constant UTF8
20090 20 73 74 72 69 6e 67 0a 2a 2a 20 77 68 69 63 68   string.** which
200a0 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
200b0 20 6e 65 77 20 73 63 68 65 6d 61 20 6e 61 6d 65   new schema name
200c0 20 69 6e 20 70 6c 61 63 65 20 6f 66 20 22 6d 61   in place of "ma
200d0 69 6e 22 2e 20 20 5e 53 51 4c 69 74 65 0a 2a 2a  in".  ^SQLite.**
200e0 20 64 6f 65 73 20 6e 6f 74 20 6d 61 6b 65 20 61   does not make a
200f0 20 63 6f 70 79 20 6f 66 20 74 68 65 20 6e 65 77   copy of the new
20100 20 6d 61 69 6e 20 73 63 68 65 6d 61 20 6e 61 6d   main schema nam
20110 65 20 73 74 72 69 6e 67 2c 20 73 6f 20 74 68 65  e string, so the
20120 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20   application.** 
20130 6d 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74  must ensure that
20140 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 70 61   the argument pa
20150 73 73 65 64 20 69 6e 74 6f 20 74 68 69 73 20 44  ssed into this D
20160 42 43 4f 4e 46 49 47 20 6f 70 74 69 6f 6e 20 69  BCONFIG option i
20170 73 20 75 6e 63 68 61 6e 67 65 64 0a 2a 2a 20 75  s unchanged.** u
20180 6e 74 69 6c 20 61 66 74 65 72 20 74 68 65 20 64  ntil after the d
20190 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
201a0 6f 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 3c 2f  on closes..** </
201b0 64 64 3e 0a 2a 2a 0a 2a 2a 20 3c 64 74 3e 53 51  dd>.**.** <dt>SQ
201c0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f  LITE_DBCONFIG_NO
201d0 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 3c 2f  _CKPT_ON_CLOSE</
201e0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55 73 75 61  dt>.** <dd> Usua
201f0 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64 61 74 61  lly, when a data
20200 62 61 73 65 20 69 6e 20 77 61 6c 20 6d 6f 64 65  base in wal mode
20210 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 64 65   is closed or de
20220 74 61 63 68 65 64 20 66 72 6f 6d 20 61 20 0a 2a  tached from a .*
20230 2a 20 64 61 74 61 62 61 73 65 20 68 61 6e 64 6c  * database handl
20240 65 2c 20 53 51 4c 69 74 65 20 63 68 65 63 6b 73  e, SQLite checks
20250 20 69 66 20 74 68 69 73 20 77 69 6c 6c 20 6d 65   if this will me
20260 61 6e 20 74 68 61 74 20 74 68 65 72 65 20 61 72  an that there ar
20270 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20 63 6f 6e  e now no .** con
20280 6e 65 63 74 69 6f 6e 73 20 61 74 20 61 6c 6c 20  nections at all 
20290 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  to the database.
202a0 20 49 66 20 73 6f 2c 20 69 74 20 70 65 72 66 6f   If so, it perfo
202b0 72 6d 73 20 61 20 63 68 65 63 6b 70 6f 69 6e 74  rms a checkpoint
202c0 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20 62   .** operation b
202d0 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67 20 74 68  efore closing th
202e0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 54 68  e connection. Th
202f0 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62 65  is option may be
20300 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f 76 65 72   used to.** over
20310 72 69 64 65 20 74 68 69 73 20 62 65 68 61 76 69  ride this behavi
20320 6f 75 72 2e 20 54 68 65 20 66 69 72 73 74 20 70  our. The first p
20330 61 72 61 6d 65 74 65 72 20 70 61 73 73 65 64 20  arameter passed 
20340 74 6f 20 74 68 69 73 20 6f 70 65 72 61 74 69 6f  to this operatio
20350 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e 74 65 67  n.** is an integ
20360 65 72 20 2d 20 6e 6f 6e 2d 7a 65 72 6f 20 74 6f  er - non-zero to
20370 20 64 69 73 61 62 6c 65 20 63 68 65 63 6b 70 6f   disable checkpo
20380 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65 2c 20 6f  ints-on-close, o
20390 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a 2a 20 64  r zero (the.** d
203a0 65 66 61 75 6c 74 29 20 74 6f 20 65 6e 61 62 6c  efault) to enabl
203b0 65 20 74 68 65 6d 2e 20 54 68 65 20 73 65 63 6f  e them. The seco
203c0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
203d0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
203e0 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e 74 6f 20  integer.** into 
203f0 77 68 69 63 68 20 69 73 20 77 72 69 74 74 65 6e  which is written
20400 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63   0 or 1 to indic
20410 61 74 65 20 77 68 65 74 68 65 72 20 63 68 65 63  ate whether chec
20420 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65  kpoints-on-close
20430 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e 20 64 69  .** have been di
20440 73 61 62 6c 65 64 20 2d 20 30 20 69 66 20 74 68  sabled - 0 if th
20450 65 79 20 61 72 65 20 6e 6f 74 20 64 69 73 61 62  ey are not disab
20460 6c 65 64 2c 20 31 20 69 66 20 74 68 65 79 20 61  led, 1 if they a
20470 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 20  re..** </dd>.** 
20480 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e  <dt>SQLITE_DBCON
20490 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 3c  FIG_ENABLE_QPSG<
204a0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 28 54 68  /dt>.** <dd>^(Th
204b0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
204c0 47 5f 45 4e 41 42 4c 45 5f 51 50 53 47 20 6f 70  G_ENABLE_QPSG op
204d0 74 69 6f 6e 20 61 63 74 69 76 61 74 65 73 20 6f  tion activates o
204e0 72 20 64 65 61 63 74 69 76 61 74 65 73 0a 2a 2a  r deactivates.**
204f0 20 74 68 65 20 5b 71 75 65 72 79 20 70 6c 61 6e   the [query plan
20500 6e 65 72 20 73 74 61 62 69 6c 69 74 79 20 67 75  ner stability gu
20510 61 72 61 6e 74 65 65 5d 20 28 51 50 53 47 29 2e  arantee] (QPSG).
20520 20 20 57 68 65 6e 20 74 68 65 20 51 50 53 47 20    When the QPSG 
20530 69 73 20 61 63 74 69 76 65 2c 0a 2a 2a 20 61 20  is active,.** a 
20540 73 69 6e 67 6c 65 20 53 51 4c 20 71 75 65 72 79  single SQL query
20550 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
20560 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 73  always use the s
20570 61 6d 65 20 61 6c 67 6f 72 69 74 68 6d 20 72 65  ame algorithm re
20580 67 61 72 64 6c 65 73 73 0a 2a 2a 20 6f 66 20 76  gardless.** of v
20590 61 6c 75 65 73 20 6f 66 20 5b 62 6f 75 6e 64 20  alues of [bound 
205a0 70 61 72 61 6d 65 74 65 72 73 5d 2e 29 5e 20 54  parameters].)^ T
205b0 68 65 20 51 50 53 47 20 64 69 73 61 62 6c 65 73  he QPSG disables
205c0 20 73 6f 6d 65 20 71 75 65 72 79 20 6f 70 74 69   some query opti
205d0 6d 69 7a 61 74 69 6f 6e 73 0a 2a 2a 20 74 68 61  mizations.** tha
205e0 74 20 6c 6f 6f 6b 20 61 74 20 74 68 65 20 76 61  t look at the va
205f0 6c 75 65 73 20 6f 66 20 62 6f 75 6e 64 20 70 61  lues of bound pa
20600 72 61 6d 65 74 65 72 73 2c 20 77 68 69 63 68 20  rameters, which 
20610 63 61 6e 20 6d 61 6b 65 20 73 6f 6d 65 20 71 75  can make some qu
20620 65 72 69 65 73 0a 2a 2a 20 73 6c 6f 77 65 72 2e  eries.** slower.
20630 20 20 42 75 74 20 74 68 65 20 51 50 53 47 20 68    But the QPSG h
20640 61 73 20 74 68 65 20 61 64 76 61 6e 74 61 67 65  as the advantage
20650 20 6f 66 20 6d 6f 72 65 20 70 72 65 64 69 63 74   of more predict
20660 61 62 6c 65 20 62 65 68 61 76 69 6f 72 2e 20 20  able behavior.  
20670 57 69 74 68 0a 2a 2a 20 74 68 65 20 51 50 53 47  With.** the QPSG
20680 20 61 63 74 69 76 65 2c 20 53 51 4c 69 74 65 20   active, SQLite 
20690 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20  will always use 
206a0 74 68 65 20 73 61 6d 65 20 71 75 65 72 79 20 70  the same query p
206b0 6c 61 6e 20 69 6e 20 74 68 65 20 66 69 65 6c 64  lan in the field
206c0 20 61 73 0a 2a 2a 20 77 61 73 20 75 73 65 64 20   as.** was used 
206d0 64 75 72 69 6e 67 20 74 65 73 74 69 6e 67 20 69  during testing i
206e0 6e 20 74 68 65 20 6c 61 62 2e 0a 2a 2a 20 3c 2f  n the lab..** </
206f0 64 64 3e 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  dd>.** <dt>SQLIT
20700 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52 49 47 47  E_DBCONFIG_TRIGG
20710 45 52 5f 45 51 50 3c 2f 64 74 3e 0a 2a 2a 20 3c  ER_EQP</dt>.** <
20720 64 64 3e 20 42 79 20 64 65 66 61 75 6c 74 2c 20  dd> By default, 
20730 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 45 58  the output of EX
20740 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41 4e  PLAIN QUERY PLAN
20750 20 63 6f 6d 6d 61 6e 64 73 20 64 6f 65 73 20 6e   commands does n
20760 6f 74 20 0a 2a 2a 20 69 6e 63 6c 75 64 65 20 6f  ot .** include o
20770 75 74 70 75 74 20 66 6f 72 20 61 6e 79 20 6f 70  utput for any op
20780 65 72 61 74 69 6f 6e 73 20 70 65 72 66 6f 72 6d  erations perform
20790 65 64 20 62 79 20 74 72 69 67 67 65 72 20 70 72  ed by trigger pr
207a0 6f 67 72 61 6d 73 2e 20 54 68 69 73 0a 2a 2a 20  ograms. This.** 
207b0 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
207c0 6f 20 73 65 74 20 6f 72 20 63 6c 65 61 72 20 28  o set or clear (
207d0 74 68 65 20 64 65 66 61 75 6c 74 29 20 61 20 66  the default) a f
207e0 6c 61 67 20 74 68 61 74 20 67 6f 76 65 72 6e 73  lag that governs
207f0 20 74 68 69 73 0a 2a 2a 20 62 65 68 61 76 69 6f   this.** behavio
20800 72 2e 20 54 68 65 20 66 69 72 73 74 20 70 61 72  r. The first par
20810 61 6d 65 74 65 72 20 70 61 73 73 65 64 20 74 6f  ameter passed to
20820 20 74 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20   this operation 
20830 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 2d 0a  is an integer -.
20840 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20 74 6f 20 65  ** non-zero to e
20850 6e 61 62 6c 65 20 6f 75 74 70 75 74 20 66 6f 72  nable output for
20860 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
20870 73 2c 20 6f 72 20 7a 65 72 6f 20 74 6f 20 64 69  s, or zero to di
20880 73 61 62 6c 65 20 69 74 2e 0a 2a 2a 20 54 68 65  sable it..** The
20890 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
208a0 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  r is a pointer t
208b0 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74  o an integer int
208c0 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74 74  o which is writt
208d0 65 6e 20 0a 2a 2a 20 30 20 6f 72 20 31 20 74 6f  en .** 0 or 1 to
208e0 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68 65   indicate whethe
208f0 72 20 6f 75 74 70 75 74 2d 66 6f 72 2d 74 72 69  r output-for-tri
20900 67 67 65 72 73 20 68 61 73 20 62 65 65 6e 20 64  ggers has been d
20910 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66 20 0a  isabled - 0 if .
20920 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 64 69 73  ** it is not dis
20930 61 62 6c 65 64 2c 20 31 20 69 66 20 69 74 20 69  abled, 1 if it i
20940 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  s.  .** </dd>.**
20950 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </dl>.*/.#defin
20960 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
20970 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 20 20 20 20  G_MAINDBNAME    
20980 20 20 20 20 20 20 20 20 31 30 30 30 20 2f 2a 20          1000 /* 
20990 63 6f 6e 73 74 20 63 68 61 72 2a 20 2a 2f 0a 23  const char* */.#
209a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42  define SQLITE_DB
209b0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30 30               100
209d0 31 20 2f 2a 20 76 6f 69 64 2a 20 69 6e 74 20 69  1 /* void* int i
209e0 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
209f0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20a00 41 42 4c 45 5f 46 4b 45 59 20 20 20 20 20 20 20  ABLE_FKEY       
20a10 20 20 20 20 31 30 30 32 20 2f 2a 20 69 6e 74 20      1002 /* int 
20a20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
20a30 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
20a40 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 20 20  ENABLE_TRIGGER  
20a50 20 20 20 20 20 20 31 30 30 33 20 2f 2a 20 69 6e        1003 /* in
20a60 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
20a70 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
20a80 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f  G_ENABLE_FTS3_TO
20a90 4b 45 4e 49 5a 45 52 20 31 30 30 34 20 2f 2a 20  KENIZER 1004 /* 
20aa0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
20ab0 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
20ac0 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f  FIG_ENABLE_LOAD_
20ad0 45 58 54 45 4e 53 49 4f 4e 20 31 30 30 35 20 2f  EXTENSION 1005 /
20ae0 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
20af0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
20b00 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
20b10 5f 43 4c 4f 53 45 20 20 20 20 20 20 31 30 30 36  _CLOSE      1006
20b20 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
20b30 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
20b40 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
20b50 50 53 47 20 20 20 20 20 20 20 20 20 20 20 31 30  PSG           10
20b60 30 37 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  07 /* int int* *
20b70 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
20b80 5f 44 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45  _DBCONFIG_TRIGGE
20b90 52 5f 45 51 50 20 20 20 20 20 20 20 20 20 20 20  R_EQP           
20ba0 31 30 30 38 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1008 /* int int*
20bb0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
20bc0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 58 20  TE_DBCONFIG_MAX 
20bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20be0 20 20 31 30 30 38 20 2f 2a 20 4c 61 72 67 65 73    1008 /* Larges
20bf0 74 20 44 42 43 4f 4e 46 49 47 20 2a 2f 0a 0a 2f  t DBCONFIG */../
20c00 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45  *.** CAPI3REF: E
20c10 6e 61 62 6c 65 20 4f 72 20 44 69 73 61 62 6c 65  nable Or Disable
20c20 20 45 78 74 65 6e 64 65 64 20 52 65 73 75 6c 74   Extended Result
20c30 20 43 6f 64 65 73 0a 2a 2a 20 4d 45 54 48 4f 44   Codes.** METHOD
20c40 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
20c50 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74  ^The sqlite3_ext
20c60 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
20c70 65 73 28 29 20 72 6f 75 74 69 6e 65 20 65 6e 61  es() routine ena
20c80 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73  bles or disables
20c90 20 74 68 65 0a 2a 2a 20 5b 65 78 74 65 6e 64 65   the.** [extende
20ca0 64 20 72 65 73 75 6c 74 20 63 6f 64 65 73 5d 20  d result codes] 
20cb0 66 65 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74  feature of SQLit
20cc0 65 2e 20 5e 54 68 65 20 65 78 74 65 6e 64 65 64  e. ^The extended
20cd0 20 72 65 73 75 6c 74 0a 2a 2a 20 63 6f 64 65 73   result.** codes
20ce0 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 62 79   are disabled by
20cf0 20 64 65 66 61 75 6c 74 20 66 6f 72 20 68 69 73   default for his
20d00 74 6f 72 69 63 61 6c 20 63 6f 6d 70 61 74 69 62  torical compatib
20d10 69 6c 69 74 79 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ility..*/.SQLITE
20d20 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
20d30 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75 6c 74  _extended_result
20d40 5f 63 6f 64 65 73 28 73 71 6c 69 74 65 33 2a 2c  _codes(sqlite3*,
20d50 20 69 6e 74 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a   int onoff);../*
20d60 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c 61  .** CAPI3REF: La
20d70 73 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 0a  st Insert Rowid.
20d80 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
20d90 65 33 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68 20 65  e3.**.** ^Each e
20da0 6e 74 72 79 20 69 6e 20 6d 6f 73 74 20 53 51 4c  ntry in most SQL
20db0 69 74 65 20 74 61 62 6c 65 73 20 28 65 78 63 65  ite tables (exce
20dc0 70 74 20 66 6f 72 20 5b 57 49 54 48 4f 55 54 20  pt for [WITHOUT 
20dd0 52 4f 57 49 44 5d 20 74 61 62 6c 65 73 29 0a 2a  ROWID] tables).*
20de0 2a 20 68 61 73 20 61 20 75 6e 69 71 75 65 20 36  * has a unique 6
20df0 34 2d 62 69 74 20 73 69 67 6e 65 64 0a 2a 2a 20  4-bit signed.** 
20e00 69 6e 74 65 67 65 72 20 6b 65 79 20 63 61 6c 6c  integer key call
20e10 65 64 20 74 68 65 20 5b 52 4f 57 49 44 20 7c 20  ed the [ROWID | 
20e20 22 72 6f 77 69 64 22 5d 2e 20 5e 54 68 65 20 72  "rowid"]. ^The r
20e30 6f 77 69 64 20 69 73 20 61 6c 77 61 79 73 20 61  owid is always a
20e40 76 61 69 6c 61 62 6c 65 0a 2a 2a 20 61 73 20 61  vailable.** as a
20e50 6e 20 75 6e 64 65 63 6c 61 72 65 64 20 63 6f 6c  n undeclared col
20e60 75 6d 6e 20 6e 61 6d 65 64 20 52 4f 57 49 44 2c  umn named ROWID,
20e70 20 4f 49 44 2c 20 6f 72 20 5f 52 4f 57 49 44 5f   OID, or _ROWID_
20e80 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 6f 73   as long as thos
20e90 65 0a 2a 2a 20 6e 61 6d 65 73 20 61 72 65 20 6e  e.** names are n
20ea0 6f 74 20 61 6c 73 6f 20 75 73 65 64 20 62 79 20  ot also used by 
20eb0 65 78 70 6c 69 63 69 74 6c 79 20 64 65 63 6c 61  explicitly decla
20ec0 72 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 5e 49 66  red columns. ^If
20ed0 0a 2a 2a 20 74 68 65 20 74 61 62 6c 65 20 68 61  .** the table ha
20ee0 73 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 79  s a column of ty
20ef0 70 65 20 5b 49 4e 54 45 47 45 52 20 50 52 49 4d  pe [INTEGER PRIM
20f00 41 52 59 20 4b 45 59 5d 20 74 68 65 6e 20 74 68  ARY KEY] then th
20f10 61 74 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 69 73 20  at column.** is 
20f20 61 6e 6f 74 68 65 72 20 61 6c 69 61 73 20 66 6f  another alias fo
20f30 72 20 74 68 65 20 72 6f 77 69 64 2e 0a 2a 2a 0a  r the rowid..**.
20f40 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
20f50 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
20f60 64 28 44 29 20 69 6e 74 65 72 66 61 63 65 20 75  d(D) interface u
20f70 73 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20 74  sually returns t
20f80 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 0a 2a 2a  he [rowid] of.**
20f90 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74   the most recent
20fa0 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53   successful [INS
20fb0 45 52 54 5d 20 69 6e 74 6f 20 61 20 72 6f 77 69  ERT] into a rowi
20fc0 64 20 74 61 62 6c 65 20 6f 72 20 5b 76 69 72 74  d table or [virt
20fd0 75 61 6c 20 74 61 62 6c 65 5d 0a 2a 2a 20 6f 6e  ual table].** on
20fe0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
20ff0 74 69 6f 6e 20 44 2e 20 5e 49 6e 73 65 72 74 73  tion D. ^Inserts
21000 20 69 6e 74 6f 20 5b 57 49 54 48 4f 55 54 20 52   into [WITHOUT R
21010 4f 57 49 44 5d 20 74 61 62 6c 65 73 20 61 72 65  OWID] tables are
21020 20 6e 6f 74 0a 2a 2a 20 72 65 63 6f 72 64 65 64   not.** recorded
21030 2e 20 5e 49 66 20 6e 6f 20 73 75 63 63 65 73 73  . ^If no success
21040 66 75 6c 20 5b 49 4e 53 45 52 54 5d 73 20 69 6e  ful [INSERT]s in
21050 74 6f 20 72 6f 77 69 64 20 74 61 62 6c 65 73 20  to rowid tables 
21060 68 61 76 65 20 65 76 65 72 20 6f 63 63 75 72 72  have ever occurr
21070 65 64 20 0a 2a 2a 20 6f 6e 20 74 68 65 20 64 61  ed .** on the da
21080 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
21090 6e 20 44 2c 20 74 68 65 6e 20 73 71 6c 69 74 65  n D, then sqlite
210a0 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
210b0 77 69 64 28 44 29 20 72 65 74 75 72 6e 73 20 0a  wid(D) returns .
210c0 2a 2a 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 41  ** zero..**.** A
210d0 73 20 77 65 6c 6c 20 61 73 20 62 65 69 6e 67 20  s well as being 
210e0 73 65 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  set automaticall
210f0 79 20 61 73 20 72 6f 77 73 20 61 72 65 20 69 6e  y as rows are in
21100 73 65 72 74 65 64 20 69 6e 74 6f 20 64 61 74 61  serted into data
21110 62 61 73 65 0a 2a 2a 20 74 61 62 6c 65 73 2c 20  base.** tables, 
21120 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
21130 65 64 20 62 79 20 74 68 69 73 20 66 75 6e 63 74  ed by this funct
21140 69 6f 6e 20 6d 61 79 20 62 65 20 73 65 74 20 65  ion may be set e
21150 78 70 6c 69 63 69 74 6c 79 20 62 79 0a 2a 2a 20  xplicitly by.** 
21160 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73  [sqlite3_set_las
21170 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
21180 5d 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 76 69 72  ].**.** Some vir
21190 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c 65  tual table imple
211a0 6d 65 6e 74 61 74 69 6f 6e 73 20 6d 61 79 20 49  mentations may I
211b0 4e 53 45 52 54 20 72 6f 77 73 20 69 6e 74 6f 20  NSERT rows into 
211c0 72 6f 77 69 64 20 74 61 62 6c 65 73 20 61 73 0a  rowid tables as.
211d0 2a 2a 20 70 61 72 74 20 6f 66 20 63 6f 6d 6d 69  ** part of commi
211e0 74 74 69 6e 67 20 61 20 74 72 61 6e 73 61 63 74  tting a transact
211f0 69 6f 6e 20 28 65 2e 67 2e 20 74 6f 20 66 6c 75  ion (e.g. to flu
21200 73 68 20 64 61 74 61 20 61 63 63 75 6d 75 6c 61  sh data accumula
21210 74 65 64 20 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a  ted in memory.**
21220 20 74 6f 20 64 69 73 6b 29 2e 20 49 6e 20 74 68   to disk). In th
21230 69 73 20 63 61 73 65 20 73 75 62 73 65 71 75 65  is case subseque
21240 6e 74 20 63 61 6c 6c 73 20 74 6f 20 74 68 69 73  nt calls to this
21250 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
21260 20 74 68 65 20 72 6f 77 69 64 0a 2a 2a 20 61 73   the rowid.** as
21270 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
21280 65 73 65 20 69 6e 74 65 72 6e 61 6c 20 49 4e 53  ese internal INS
21290 45 52 54 20 6f 70 65 72 61 74 69 6f 6e 73 2c 20  ERT operations, 
212a0 77 68 69 63 68 20 6c 65 61 64 73 20 74 6f 20 0a  which leads to .
212b0 2a 2a 20 75 6e 69 6e 74 75 69 74 69 76 65 20 72  ** unintuitive r
212c0 65 73 75 6c 74 73 2e 20 56 69 72 74 75 61 6c 20  esults. Virtual 
212d0 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61  table implementa
212e0 74 69 6f 6e 73 20 74 68 61 74 20 64 6f 20 77 72  tions that do wr
212f0 69 74 65 20 74 6f 20 72 6f 77 69 64 0a 2a 2a 20  ite to rowid.** 
21300 74 61 62 6c 65 73 20 69 6e 20 74 68 69 73 20 77  tables in this w
21310 61 79 20 63 61 6e 20 61 76 6f 69 64 20 74 68 69  ay can avoid thi
21320 73 20 70 72 6f 62 6c 65 6d 20 62 79 20 72 65 73  s problem by res
21330 74 6f 72 69 6e 67 20 74 68 65 20 6f 72 69 67 69  toring the origi
21340 6e 61 6c 20 0a 2a 2a 20 72 6f 77 69 64 20 76 61  nal .** rowid va
21350 6c 75 65 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  lue using [sqlit
21360 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65  e3_set_last_inse
21370 72 74 5f 72 6f 77 69 64 28 29 5d 20 62 65 66 6f  rt_rowid()] befo
21380 72 65 20 72 65 74 75 72 6e 69 6e 67 20 0a 2a 2a  re returning .**
21390 20 63 6f 6e 74 72 6f 6c 20 74 6f 20 74 68 65 20   control to the 
213a0 75 73 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66  user..**.** ^(If
213b0 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 6f 63 63   an [INSERT] occ
213c0 75 72 73 20 77 69 74 68 69 6e 20 61 20 74 72 69  urs within a tri
213d0 67 67 65 72 20 74 68 65 6e 20 74 68 69 73 20 72  gger then this r
213e0 6f 75 74 69 6e 65 20 77 69 6c 6c 20 0a 2a 2a 20  outine will .** 
213f0 72 65 74 75 72 6e 20 74 68 65 20 5b 72 6f 77 69  return the [rowi
21400 64 5d 20 6f 66 20 74 68 65 20 69 6e 73 65 72 74  d] of the insert
21410 65 64 20 72 6f 77 20 61 73 20 6c 6f 6e 67 20 61  ed row as long a
21420 73 20 74 68 65 20 74 72 69 67 67 65 72 20 69 73  s the trigger is
21430 20 0a 2a 2a 20 72 75 6e 6e 69 6e 67 2e 20 4f 6e   .** running. On
21440 63 65 20 74 68 65 20 74 72 69 67 67 65 72 20 70  ce the trigger p
21450 72 6f 67 72 61 6d 20 65 6e 64 73 2c 20 74 68 65  rogram ends, the
21460 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20   value returned 
21470 0a 2a 2a 20 62 79 20 74 68 69 73 20 72 6f 75 74  .** by this rout
21480 69 6e 65 20 72 65 76 65 72 74 73 20 74 6f 20 77  ine reverts to w
21490 68 61 74 20 69 74 20 77 61 73 20 62 65 66 6f 72  hat it was befor
214a0 65 20 74 68 65 20 74 72 69 67 67 65 72 20 77 61  e the trigger wa
214b0 73 20 66 69 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a  s fired.)^.**.**
214c0 20 5e 41 6e 20 5b 49 4e 53 45 52 54 5d 20 74 68   ^An [INSERT] th
214d0 61 74 20 66 61 69 6c 73 20 64 75 65 20 74 6f 20  at fails due to 
214e0 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f  a constraint vio
214f0 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 0a  lation is not a.
21500 2a 2a 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49  ** successful [I
21510 4e 53 45 52 54 5d 20 61 6e 64 20 64 6f 65 73 20  NSERT] and does 
21520 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 76  not change the v
21530 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
21540 20 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69 6e 65   this.** routine
21550 2e 20 20 5e 54 68 75 73 20 49 4e 53 45 52 54 20  .  ^Thus INSERT 
21560 4f 52 20 46 41 49 4c 2c 20 49 4e 53 45 52 54 20  OR FAIL, INSERT 
21570 4f 52 20 49 47 4e 4f 52 45 2c 20 49 4e 53 45 52  OR IGNORE, INSER
21580 54 20 4f 52 20 52 4f 4c 4c 42 41 43 4b 2c 0a 2a  T OR ROLLBACK,.*
21590 2a 20 61 6e 64 20 49 4e 53 45 52 54 20 4f 52 20  * and INSERT OR 
215a0 41 42 4f 52 54 20 6d 61 6b 65 20 6e 6f 20 63 68  ABORT make no ch
215b0 61 6e 67 65 73 20 74 6f 20 74 68 65 20 72 65 74  anges to the ret
215c0 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69  urn value of thi
215d0 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 77 68 65  s.** routine whe
215e0 6e 20 74 68 65 69 72 20 69 6e 73 65 72 74 69 6f  n their insertio
215f0 6e 20 66 61 69 6c 73 2e 20 20 5e 28 57 68 65 6e  n fails.  ^(When
21600 20 49 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41   INSERT OR REPLA
21610 43 45 0a 2a 2a 20 65 6e 63 6f 75 6e 74 65 72 73  CE.** encounters
21620 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
21630 6f 6c 61 74 69 6f 6e 2c 20 69 74 20 64 6f 65 73  olation, it does
21640 20 6e 6f 74 20 66 61 69 6c 2e 20 20 54 68 65 0a   not fail.  The.
21650 2a 2a 20 49 4e 53 45 52 54 20 63 6f 6e 74 69 6e  ** INSERT contin
21660 75 65 73 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f  ues to completio
21670 6e 20 61 66 74 65 72 20 64 65 6c 65 74 69 6e 67  n after deleting
21680 20 72 6f 77 73 20 74 68 61 74 20 63 61 75 73 65   rows that cause
21690 64 0a 2a 2a 20 74 68 65 20 63 6f 6e 73 74 72 61  d.** the constra
216a0 69 6e 74 20 70 72 6f 62 6c 65 6d 20 73 6f 20 49  int problem so I
216b0 4e 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45  NSERT OR REPLACE
216c0 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 63 68 61   will always cha
216d0 6e 67 65 0a 2a 2a 20 74 68 65 20 72 65 74 75 72  nge.** the retur
216e0 6e 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20  n value of this 
216f0 69 6e 74 65 72 66 61 63 65 2e 29 5e 0a 2a 2a 0a  interface.)^.**.
21700 2a 2a 20 5e 46 6f 72 20 74 68 65 20 70 75 72 70  ** ^For the purp
21710 6f 73 65 73 20 6f 66 20 74 68 69 73 20 72 6f 75  oses of this rou
21720 74 69 6e 65 2c 20 61 6e 20 5b 49 4e 53 45 52 54  tine, an [INSERT
21730 5d 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  ] is considered 
21740 74 6f 0a 2a 2a 20 62 65 20 73 75 63 63 65 73 73  to.** be success
21750 66 75 6c 20 65 76 65 6e 20 69 66 20 69 74 20 69  ful even if it i
21760 73 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20 72  s subsequently r
21770 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a  olled back..**.*
21780 2a 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  * This function 
21790 69 73 20 61 63 63 65 73 73 69 62 6c 65 20 74 6f  is accessible to
217a0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
217b0 76 69 61 20 74 68 65 0a 2a 2a 20 5b 6c 61 73 74  via the.** [last
217c0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 20  _insert_rowid() 
217d0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a  SQL function]..*
217e0 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61  *.** If a separa
217f0 74 65 20 74 68 72 65 61 64 20 70 65 72 66 6f 72  te thread perfor
21800 6d 73 20 61 20 6e 65 77 20 5b 49 4e 53 45 52 54  ms a new [INSERT
21810 5d 20 6f 6e 20 74 68 65 20 73 61 6d 65 0a 2a 2a  ] on the same.**
21820 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
21830 74 69 6f 6e 20 77 68 69 6c 65 20 74 68 65 20 5b  tion while the [
21840 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
21850 65 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 20  ert_rowid()].** 
21860 66 75 6e 63 74 69 6f 6e 20 69 73 20 72 75 6e 6e  function is runn
21870 69 6e 67 20 61 6e 64 20 74 68 75 73 20 63 68 61  ing and thus cha
21880 6e 67 65 73 20 74 68 65 20 6c 61 73 74 20 69 6e  nges the last in
21890 73 65 72 74 20 5b 72 6f 77 69 64 5d 2c 0a 2a 2a  sert [rowid],.**
218a0 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20   then the value 
218b0 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c  returned by [sql
218c0 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74  ite3_last_insert
218d0 5f 72 6f 77 69 64 28 29 5d 20 69 73 0a 2a 2a 20  _rowid()] is.** 
218e0 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
218f0 64 20 6d 69 67 68 74 20 6e 6f 74 20 65 71 75 61  d might not equa
21900 6c 20 65 69 74 68 65 72 20 74 68 65 20 6f 6c 64  l either the old
21910 20 6f 72 20 74 68 65 20 6e 65 77 0a 2a 2a 20 6c   or the new.** l
21920 61 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77 69  ast insert [rowi
21930 64 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  d]..*/.SQLITE_AP
21940 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  I sqlite3_int64 
21950 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
21960 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65  ert_rowid(sqlite
21970 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  3*);../*.** CAPI
21980 33 52 45 46 3a 20 53 65 74 20 74 68 65 20 4c 61  3REF: Set the La
21990 73 74 20 49 6e 73 65 72 74 20 52 6f 77 69 64 20  st Insert Rowid 
219a0 76 61 6c 75 65 2e 0a 2a 2a 20 4d 45 54 48 4f 44  value..** METHOD
219b0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
219c0 54 68 65 20 73 71 6c 69 74 65 33 5f 73 65 74 5f  The sqlite3_set_
219d0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
219e0 64 28 44 2c 20 52 29 20 6d 65 74 68 6f 64 20 61  d(D, R) method a
219f0 6c 6c 6f 77 73 20 74 68 65 20 61 70 70 6c 69 63  llows the applic
21a00 61 74 69 6f 6e 20 74 6f 0a 2a 2a 20 73 65 74 20  ation to.** set 
21a10 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
21a20 65 64 20 62 79 20 63 61 6c 6c 69 6e 67 20 73 71  ed by calling sq
21a30 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
21a40 74 5f 72 6f 77 69 64 28 44 29 20 74 6f 20 52 20  t_rowid(D) to R 
21a50 0a 2a 2a 20 77 69 74 68 6f 75 74 20 69 6e 73 65  .** without inse
21a60 72 74 69 6e 67 20 61 20 72 6f 77 20 69 6e 74 6f  rting a row into
21a70 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 2a   the database..*
21a80 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  /.SQLITE_API voi
21a90 64 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61  d sqlite3_set_la
21aa0 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
21ab0 73 71 6c 69 74 65 33 2a 2c 73 71 6c 69 74 65 33  sqlite3*,sqlite3
21ac0 5f 69 6e 74 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20  _int64);../*.** 
21ad0 43 41 50 49 33 52 45 46 3a 20 43 6f 75 6e 74 20  CAPI3REF: Count 
21ae0 54 68 65 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f  The Number Of Ro
21af0 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d  ws Modified.** M
21b00 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
21b10 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74  *.** ^This funct
21b20 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
21b30 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d  number of rows m
21b40 6f 64 69 66 69 65 64 2c 20 69 6e 73 65 72 74 65  odified, inserte
21b50 64 20 6f 72 0a 2a 2a 20 64 65 6c 65 74 65 64 20  d or.** deleted 
21b60 62 79 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  by the most rece
21b70 6e 74 6c 79 20 63 6f 6d 70 6c 65 74 65 64 20 49  ntly completed I
21b80 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72  NSERT, UPDATE or
21b90 20 44 45 4c 45 54 45 0a 2a 2a 20 73 74 61 74 65   DELETE.** state
21ba0 6d 65 6e 74 20 6f 6e 20 74 68 65 20 64 61 74 61  ment on the data
21bb0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
21bc0 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
21bd0 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65 72 2e   only parameter.
21be0 0a 2a 2a 20 5e 45 78 65 63 75 74 69 6e 67 20 61  .** ^Executing a
21bf0 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66  ny other type of
21c00 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 64   SQL statement d
21c10 6f 65 73 20 6e 6f 74 20 6d 6f 64 69 66 79 20 74  oes not modify t
21c20 68 65 20 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75  he value.** retu
21c30 72 6e 65 64 20 62 79 20 74 68 69 73 20 66 75 6e  rned by this fun
21c40 63 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e  ction..**.** ^On
21c50 6c 79 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20  ly changes made 
21c60 64 69 72 65 63 74 6c 79 20 62 79 20 74 68 65 20  directly by the 
21c70 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f  INSERT, UPDATE o
21c80 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65  r DELETE stateme
21c90 6e 74 20 61 72 65 0a 2a 2a 20 63 6f 6e 73 69 64  nt are.** consid
21ca0 65 72 65 64 20 2d 20 61 75 78 69 6c 69 61 72 79  ered - auxiliary
21cb0 20 63 68 61 6e 67 65 73 20 63 61 75 73 65 64 20   changes caused 
21cc0 62 79 20 5b 43 52 45 41 54 45 20 54 52 49 47 47  by [CREATE TRIGG
21cd0 45 52 20 7c 20 74 72 69 67 67 65 72 73 5d 2c 20  ER | triggers], 
21ce0 0a 2a 2a 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79  .** [foreign key
21cf0 20 61 63 74 69 6f 6e 73 5d 20 6f 72 20 5b 52 45   actions] or [RE
21d00 50 4c 41 43 45 5d 20 63 6f 6e 73 74 72 61 69 6e  PLACE] constrain
21d10 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65  t resolution are
21d20 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a   not counted..**
21d30 20 0a 2a 2a 20 43 68 61 6e 67 65 73 20 74 6f 20   .** Changes to 
21d40 61 20 76 69 65 77 20 74 68 61 74 20 61 72 65 20  a view that are 
21d50 69 6e 74 65 72 63 65 70 74 65 64 20 62 79 20 0a  intercepted by .
21d60 2a 2a 20 5b 49 4e 53 54 45 41 44 20 4f 46 20 74  ** [INSTEAD OF t
21d70 72 69 67 67 65 72 20 7c 20 49 4e 53 54 45 41 44  rigger | INSTEAD
21d80 20 4f 46 20 74 72 69 67 67 65 72 73 5d 20 61 72   OF triggers] ar
21d90 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 20 5e  e not counted. ^
21da0 54 68 65 20 76 61 6c 75 65 20 0a 2a 2a 20 72 65  The value .** re
21db0 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
21dc0 33 5f 63 68 61 6e 67 65 73 28 29 20 69 6d 6d 65  3_changes() imme
21dd0 64 69 61 74 65 6c 79 20 61 66 74 65 72 20 61 6e  diately after an
21de0 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
21df0 6f 72 20 0a 2a 2a 20 44 45 4c 45 54 45 20 73 74  or .** DELETE st
21e00 61 74 65 6d 65 6e 74 20 72 75 6e 20 6f 6e 20 61  atement run on a
21e10 20 76 69 65 77 20 69 73 20 61 6c 77 61 79 73 20   view is always 
21e20 7a 65 72 6f 2e 20 4f 6e 6c 79 20 63 68 61 6e 67  zero. Only chang
21e30 65 73 20 6d 61 64 65 20 74 6f 20 72 65 61 6c 20  es made to real 
21e40 0a 2a 2a 20 74 61 62 6c 65 73 20 61 72 65 20 63  .** tables are c
21e50 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  ounted..**.** Th
21e60 69 6e 67 73 20 61 72 65 20 6d 6f 72 65 20 63 6f  ings are more co
21e70 6d 70 6c 69 63 61 74 65 64 20 69 66 20 74 68 65  mplicated if the
21e80 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
21e90 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 0a 2a  () function is.*
21ea0 2a 20 65 78 65 63 75 74 65 64 20 77 68 69 6c 65  * executed while
21eb0 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72   a trigger progr
21ec0 61 6d 20 69 73 20 72 75 6e 6e 69 6e 67 2e 20 54  am is running. T
21ed0 68 69 73 20 6d 61 79 20 68 61 70 70 65 6e 20 69  his may happen i
21ee0 66 20 74 68 65 0a 2a 2a 20 70 72 6f 67 72 61 6d  f the.** program
21ef0 20 75 73 65 73 20 74 68 65 20 5b 63 68 61 6e 67   uses the [chang
21f00 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  es() SQL functio
21f10 6e 5d 2c 20 6f 72 20 69 66 20 73 6f 6d 65 20 6f  n], or if some o
21f20 74 68 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  ther callback.**
21f30 20 66 75 6e 63 74 69 6f 6e 20 69 6e 76 6f 6b 65   function invoke
21f40 73 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65  s sqlite3_change
21f50 73 28 29 20 64 69 72 65 63 74 6c 79 2e 20 45 73  s() directly. Es
21f60 73 65 6e 74 69 61 6c 6c 79 3a 0a 2a 2a 20 0a 2a  sentially:.** .*
21f70 2a 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e  * <ul>.**   <li>
21f80 20 5e 28 42 65 66 6f 72 65 20 65 6e 74 65 72 69   ^(Before enteri
21f90 6e 67 20 61 20 74 72 69 67 67 65 72 20 70 72 6f  ng a trigger pro
21fa0 67 72 61 6d 20 74 68 65 20 76 61 6c 75 65 20 72  gram the value r
21fb0 65 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20 20 20  eturned by.**   
21fc0 20 20 20 20 20 73 71 6c 69 74 65 33 5f 63 68 61       sqlite3_cha
21fd0 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f 6e 20  nges() function 
21fe0 69 73 20 73 61 76 65 64 2e 20 41 66 74 65 72 20  is saved. After 
21ff0 74 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67  the trigger prog
22000 72 61 6d 20 0a 2a 2a 20 20 20 20 20 20 20 20 68  ram .**        h
22010 61 73 20 66 69 6e 69 73 68 65 64 2c 20 74 68 65  as finished, the
22020 20 6f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20   original value 
22030 69 73 20 72 65 73 74 6f 72 65 64 2e 29 5e 0a 2a  is restored.)^.*
22040 2a 20 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 57  * .**   <li> ^(W
22050 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 20  ithin a trigger 
22060 70 72 6f 67 72 61 6d 20 65 61 63 68 20 49 4e 53  program each INS
22070 45 52 54 2c 20 55 50 44 41 54 45 20 61 6e 64 20  ERT, UPDATE and 
22080 44 45 4c 45 54 45 20 0a 2a 2a 20 20 20 20 20 20  DELETE .**      
22090 20 20 73 74 61 74 65 6d 65 6e 74 20 73 65 74 73    statement sets
220a0 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
220b0 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63  ned by sqlite3_c
220c0 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20 20 20  hanges() .**    
220d0 20 20 20 20 75 70 6f 6e 20 63 6f 6d 70 6c 65 74      upon complet
220e0 69 6f 6e 20 61 73 20 6e 6f 72 6d 61 6c 2e 20 4f  ion as normal. O
220f0 66 20 63 6f 75 72 73 65 2c 20 74 68 69 73 20 76  f course, this v
22100 61 6c 75 65 20 77 69 6c 6c 20 6e 6f 74 20 69 6e  alue will not in
22110 63 6c 75 64 65 20 0a 2a 2a 20 20 20 20 20 20 20  clude .**       
22120 20 61 6e 79 20 63 68 61 6e 67 65 73 20 70 65 72   any changes per
22130 66 6f 72 6d 65 64 20 62 79 20 73 75 62 2d 74 72  formed by sub-tr
22140 69 67 67 65 72 73 2c 20 61 73 20 74 68 65 20 73  iggers, as the s
22150 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
22160 20 0a 2a 2a 20 20 20 20 20 20 20 20 76 61 6c 75   .**        valu
22170 65 20 77 69 6c 6c 20 62 65 20 73 61 76 65 64 20  e will be saved 
22180 61 6e 64 20 72 65 73 74 6f 72 65 64 20 61 66 74  and restored aft
22190 65 72 20 65 61 63 68 20 73 75 62 2d 74 72 69 67  er each sub-trig
221a0 67 65 72 20 68 61 73 20 72 75 6e 2e 29 5e 0a 2a  ger has run.)^.*
221b0 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20 0a 2a 2a 20 5e  * </ul>.** .** ^
221c0 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20  This means that 
221d0 69 66 20 74 68 65 20 63 68 61 6e 67 65 73 28 29  if the changes()
221e0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 28 6f   SQL function (o
221f0 72 20 73 69 6d 69 6c 61 72 29 20 69 73 20 75 73  r similar) is us
22200 65 64 0a 2a 2a 20 62 79 20 74 68 65 20 66 69 72  ed.** by the fir
22210 73 74 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  st INSERT, UPDAT
22220 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74  E or DELETE stat
22230 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20 74  ement within a t
22240 72 69 67 67 65 72 2c 20 69 74 20 0a 2a 2a 20 72  rigger, it .** r
22250 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c 75 65  eturns the value
22260 20 61 73 20 73 65 74 20 77 68 65 6e 20 74 68 65   as set when the
22270 20 63 61 6c 6c 69 6e 67 20 73 74 61 74 65 6d 65   calling stateme
22280 6e 74 20 62 65 67 61 6e 20 65 78 65 63 75 74 69  nt began executi
22290 6e 67 2e 0a 2a 2a 20 5e 49 66 20 69 74 20 69 73  ng..** ^If it is
222a0 20 75 73 65 64 20 62 79 20 74 68 65 20 73 65 63   used by the sec
222b0 6f 6e 64 20 6f 72 20 73 75 62 73 65 71 75 65 6e  ond or subsequen
222c0 74 20 73 75 63 68 20 73 74 61 74 65 6d 65 6e 74  t such statement
222d0 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65   within a trigge
222e0 72 20 0a 2a 2a 20 70 72 6f 67 72 61 6d 2c 20 74  r .** program, t
222f0 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
22300 64 20 72 65 66 6c 65 63 74 73 20 74 68 65 20 6e  d reflects the n
22310 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6d 6f  umber of rows mo
22320 64 69 66 69 65 64 20 62 79 20 74 68 65 20 0a 2a  dified by the .*
22330 2a 20 70 72 65 76 69 6f 75 73 20 49 4e 53 45 52  * previous INSER
22340 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
22350 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69  ETE statement wi
22360 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72  thin the same tr
22370 69 67 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  igger..**.** See
22380 20 61 6c 73 6f 20 74 68 65 20 5b 73 71 6c 69 74   also the [sqlit
22390 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
223a0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2c 20 74  ()] interface, t
223b0 68 65 0a 2a 2a 20 5b 63 6f 75 6e 74 5f 63 68 61  he.** [count_cha
223c0 6e 67 65 73 20 70 72 61 67 6d 61 5d 2c 20 61 6e  nges pragma], an
223d0 64 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29  d the [changes()
223e0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2e 0a   SQL function]..
223f0 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61 72  **.** If a separ
22400 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65 73  ate thread makes
22410 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65 20   changes on the 
22420 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63 6f  same database co
22430 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c  nnection.** whil
22440 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  e [sqlite3_chang
22450 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67  es()] is running
22460 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20   then the value 
22470 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20 75  returned.** is u
22480 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64  npredictable and
22490 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e   not meaningful.
224a0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
224b0 6e 74 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  nt sqlite3_chang
224c0 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f  es(sqlite3*);../
224d0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54  *.** CAPI3REF: T
224e0 6f 74 61 6c 20 4e 75 6d 62 65 72 20 4f 66 20 52  otal Number Of R
224f0 6f 77 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20  ows Modified.** 
22500 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
22510 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63  **.** ^This func
22520 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
22530 20 74 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66   total number of
22540 20 72 6f 77 73 20 69 6e 73 65 72 74 65 64 2c 20   rows inserted, 
22550 6d 6f 64 69 66 69 65 64 20 6f 72 0a 2a 2a 20 64  modified or.** d
22560 65 6c 65 74 65 64 20 62 79 20 61 6c 6c 20 5b 49  eleted by all [I
22570 4e 53 45 52 54 5d 2c 20 5b 55 50 44 41 54 45 5d  NSERT], [UPDATE]
22580 20 6f 72 20 5b 44 45 4c 45 54 45 5d 20 73 74 61   or [DELETE] sta
22590 74 65 6d 65 6e 74 73 20 63 6f 6d 70 6c 65 74 65  tements complete
225a0 64 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 64  d.** since the d
225b0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
225c0 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2c 20 69  on was opened, i
225d0 6e 63 6c 75 64 69 6e 67 20 74 68 6f 73 65 20 65  ncluding those e
225e0 78 65 63 75 74 65 64 20 61 73 0a 2a 2a 20 70 61  xecuted as.** pa
225f0 72 74 20 6f 66 20 74 72 69 67 67 65 72 20 70 72  rt of trigger pr
22600 6f 67 72 61 6d 73 2e 20 5e 45 78 65 63 75 74 69  ograms. ^Executi
22610 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70  ng any other typ
22620 65 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65  e of SQL stateme
22630 6e 74 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 61  nt.** does not a
22640 66 66 65 63 74 20 74 68 65 20 76 61 6c 75 65 20  ffect the value 
22650 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69  returned by sqli
22660 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65  te3_total_change
22670 73 28 29 2e 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61  s()..** .** ^Cha
22680 6e 67 65 73 20 6d 61 64 65 20 61 73 20 70 61 72  nges made as par
22690 74 20 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65  t of [foreign ke
226a0 79 20 61 63 74 69 6f 6e 73 5d 20 61 72 65 20 69  y actions] are i
226b0 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 0a 2a  ncluded in the.*
226c0 2a 20 63 6f 75 6e 74 2c 20 62 75 74 20 74 68 6f  * count, but tho
226d0 73 65 20 6d 61 64 65 20 61 73 20 70 61 72 74 20  se made as part 
226e0 6f 66 20 52 45 50 4c 41 43 45 20 63 6f 6e 73 74  of REPLACE const
226f0 72 61 69 6e 74 20 72 65 73 6f 6c 75 74 69 6f 6e  raint resolution
22700 20 61 72 65 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68   are.** not. ^Ch
22710 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77 20  anges to a view 
22720 74 68 61 74 20 61 72 65 20 69 6e 74 65 72 63 65  that are interce
22730 70 74 65 64 20 62 79 20 49 4e 53 54 45 41 44 20  pted by INSTEAD 
22740 4f 46 20 74 72 69 67 67 65 72 73 20 0a 2a 2a 20  OF triggers .** 
22750 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e  are not counted.
22760 0a 2a 2a 20 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  .** .** See also
22770 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68   the [sqlite3_ch
22780 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61  anges()] interfa
22790 63 65 2c 20 74 68 65 0a 2a 2a 20 5b 63 6f 75 6e  ce, the.** [coun
227a0 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67 6d 61  t_changes pragma
227b0 5d 2c 20 61 6e 64 20 74 68 65 20 5b 74 6f 74 61  ], and the [tota
227c0 6c 5f 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20  l_changes() SQL 
227d0 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a  function]..**.**
227e0 20 49 66 20 61 20 73 65 70 61 72 61 74 65 20 74   If a separate t
227f0 68 72 65 61 64 20 6d 61 6b 65 73 20 63 68 61 6e  hread makes chan
22800 67 65 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20  ges on the same 
22810 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
22820 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b 73 71  ion.** while [sq
22830 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e  lite3_total_chan
22840 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e  ges()] is runnin
22850 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  g then the value
22860 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 73 20  .** returned is 
22870 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
22880 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c  d not meaningful
22890 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
228a0 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f 74 61  int sqlite3_tota
228b0 6c 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74 65  l_changes(sqlite
228c0 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  3*);../*.** CAPI
228d0 33 52 45 46 3a 20 49 6e 74 65 72 72 75 70 74 20  3REF: Interrupt 
228e0 41 20 4c 6f 6e 67 2d 52 75 6e 6e 69 6e 67 20 51  A Long-Running Q
228f0 75 65 72 79 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  uery.** METHOD: 
22900 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
22910 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 75  his function cau
22920 73 65 73 20 61 6e 79 20 70 65 6e 64 69 6e 67 20  ses any pending 
22930 64 61 74 61 62 61 73 65 20 6f 70 65 72 61 74 69  database operati
22940 6f 6e 20 74 6f 20 61 62 6f 72 74 20 61 6e 64 0a  on to abort and.
22950 2a 2a 20 72 65 74 75 72 6e 20 61 74 20 69 74 73  ** return at its
22960 20 65 61 72 6c 69 65 73 74 20 6f 70 70 6f 72 74   earliest opport
22970 75 6e 69 74 79 2e 20 54 68 69 73 20 72 6f 75 74  unity. This rout
22980 69 6e 65 20 69 73 20 74 79 70 69 63 61 6c 6c 79  ine is typically
22990 0a 2a 2a 20 63 61 6c 6c 65 64 20 69 6e 20 72 65  .** called in re
229a0 73 70 6f 6e 73 65 20 74 6f 20 61 20 75 73 65 72  sponse to a user
229b0 20 61 63 74 69 6f 6e 20 73 75 63 68 20 61 73 20   action such as 
229c0 70 72 65 73 73 69 6e 67 20 22 43 61 6e 63 65 6c  pressing "Cancel
229d0 22 0a 2a 2a 20 6f 72 20 43 74 72 6c 2d 43 20 77  ".** or Ctrl-C w
229e0 68 65 72 65 20 74 68 65 20 75 73 65 72 20 77 61  here the user wa
229f0 6e 74 73 20 61 20 6c 6f 6e 67 20 71 75 65 72 79  nts a long query
22a00 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 68 61   operation to ha
22a10 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69 61 74 65 6c  lt.** immediatel
22a20 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 74 20 69 73 20  y..**.** ^It is 
22a30 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 74 68 69  safe to call thi
22a40 73 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d 20 61  s routine from a
22a50 20 74 68 72 65 61 64 20 64 69 66 66 65 72 65 6e   thread differen
22a60 74 20 66 72 6f 6d 20 74 68 65 0a 2a 2a 20 74 68  t from the.** th
22a70 72 65 61 64 20 74 68 61 74 20 69 73 20 63 75 72  read that is cur
22a80 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 74  rently running t
22a90 68 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72  he database oper
22aa0 61 74 69 6f 6e 2e 20 20 42 75 74 20 69 74 0a 2a  ation.  But it.*
22ab0 2a 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f  * is not safe to
22ac0 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69   call this routi
22ad0 6e 65 20 77 69 74 68 20 61 20 5b 64 61 74 61 62  ne with a [datab
22ae0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
22af0 74 68 61 74 0a 2a 2a 20 69 73 20 63 6c 6f 73 65  that.** is close
22b00 64 20 6f 72 20 6d 69 67 68 74 20 63 6c 6f 73 65  d or might close
22b10 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f   before sqlite3_
22b20 69 6e 74 65 72 72 75 70 74 28 29 20 72 65 74 75  interrupt() retu
22b30 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61  rns..**.** ^If a
22b40 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20  n SQL operation 
22b50 69 73 20 76 65 72 79 20 6e 65 61 72 6c 79 20 66  is very nearly f
22b60 69 6e 69 73 68 65 64 20 61 74 20 74 68 65 20 74  inished at the t
22b70 69 6d 65 20 77 68 65 6e 0a 2a 2a 20 73 71 6c 69  ime when.** sqli
22b80 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20  te3_interrupt() 
22b90 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65 6e 20  is called, then 
22ba0 69 74 20 6d 69 67 68 74 20 6e 6f 74 20 68 61 76  it might not hav
22bb0 65 20 61 6e 20 6f 70 70 6f 72 74 75 6e 69 74 79  e an opportunity
22bc0 0a 2a 2a 20 74 6f 20 62 65 20 69 6e 74 65 72 72  .** to be interr
22bd0 75 70 74 65 64 20 61 6e 64 20 6d 69 67 68 74 20  upted and might 
22be0 63 6f 6e 74 69 6e 75 65 20 74 6f 20 63 6f 6d 70  continue to comp
22bf0 6c 65 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 41  letion..**.** ^A
22c00 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20  n SQL operation 
22c10 74 68 61 74 20 69 73 20 69 6e 74 65 72 72 75 70  that is interrup
22c20 74 65 64 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ted will return 
22c30 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52 55 50  [SQLITE_INTERRUP
22c40 54 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 69  T]..** ^If the i
22c50 6e 74 65 72 72 75 70 74 65 64 20 53 51 4c 20 6f  nterrupted SQL o
22c60 70 65 72 61 74 69 6f 6e 20 69 73 20 61 6e 20 49  peration is an I
22c70 4e 53 45 52 54 2c 20 55 50 44 41 54 45 2c 20 6f  NSERT, UPDATE, o
22c80 72 20 44 45 4c 45 54 45 0a 2a 2a 20 74 68 61 74  r DELETE.** that
22c90 20 69 73 20 69 6e 73 69 64 65 20 61 6e 20 65 78   is inside an ex
22ca0 70 6c 69 63 69 74 20 74 72 61 6e 73 61 63 74 69  plicit transacti
22cb0 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 65 6e 74  on, then the ent
22cc0 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a  ire transaction.
22cd0 2a 2a 20 77 69 6c 6c 20 62 65 20 72 6f 6c 6c 65  ** will be rolle
22ce0 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74 69 63  d back automatic
22cf0 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ally..**.** ^The
22d00 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
22d10 70 74 28 44 29 20 63 61 6c 6c 20 69 73 20 69 6e  pt(D) call is in
22d20 20 65 66 66 65 63 74 20 75 6e 74 69 6c 20 61 6c   effect until al
22d30 6c 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e  l currently runn
22d40 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  ing.** SQL state
22d50 6d 65 6e 74 73 20 6f 6e 20 5b 64 61 74 61 62 61  ments on [databa
22d60 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
22d70 20 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 41 6e 79   complete.  ^Any
22d80 20 6e 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65   new SQL stateme
22d90 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20  nts.** that are 
22da0 73 74 61 72 74 65 64 20 61 66 74 65 72 20 74 68  started after th
22db0 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  e sqlite3_interr
22dc0 75 70 74 28 29 20 63 61 6c 6c 20 61 6e 64 20 62  upt() call and b
22dd0 65 66 6f 72 65 20 74 68 65 20 0a 2a 2a 20 72 75  efore the .** ru
22de0 6e 6e 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 73  nning statements
22df0 20 72 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72   reaches zero ar
22e00 65 20 69 6e 74 65 72 72 75 70 74 65 64 20 61 73  e interrupted as
22e10 20 69 66 20 74 68 65 79 20 68 61 64 20 62 65 65   if they had bee
22e20 6e 0a 2a 2a 20 72 75 6e 6e 69 6e 67 20 70 72 69  n.** running pri
22e30 6f 72 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  or to the sqlite
22e40 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20 63 61  3_interrupt() ca
22e50 6c 6c 2e 20 20 5e 4e 65 77 20 53 51 4c 20 73 74  ll.  ^New SQL st
22e60 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74  atements.** that
22e70 20 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74   are started aft
22e80 65 72 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 73  er the running s
22e90 74 61 74 65 6d 65 6e 74 20 63 6f 75 6e 74 20 72  tatement count r
22ea0 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72 65 0a  eaches zero are.
22eb0 2a 2a 20 6e 6f 74 20 65 66 66 65 63 74 65 64 20  ** not effected 
22ec0 62 79 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69  by the sqlite3_i
22ed0 6e 74 65 72 72 75 70 74 28 29 2e 0a 2a 2a 20 5e  nterrupt()..** ^
22ee0 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  A call to sqlite
22ef0 33 5f 69 6e 74 65 72 72 75 70 74 28 44 29 20 74  3_interrupt(D) t
22f00 68 61 74 20 6f 63 63 75 72 73 20 77 68 65 6e 20  hat occurs when 
22f10 74 68 65 72 65 20 61 72 65 20 6e 6f 20 72 75 6e  there are no run
22f20 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61 74  ning.** SQL stat
22f30 65 6d 65 6e 74 73 20 69 73 20 61 20 6e 6f 2d 6f  ements is a no-o
22f40 70 20 61 6e 64 20 68 61 73 20 6e 6f 20 65 66 66  p and has no eff
22f50 65 63 74 20 6f 6e 20 53 51 4c 20 73 74 61 74 65  ect on SQL state
22f60 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72  ments.** that ar
22f70 65 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20  e started after 
22f80 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  the sqlite3_inte
22f90 72 72 75 70 74 28 29 20 63 61 6c 6c 20 72 65 74  rrupt() call ret
22fa0 75 72 6e 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  urns..*/.SQLITE_
22fb0 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
22fc0 5f 69 6e 74 65 72 72 75 70 74 28 73 71 6c 69 74  _interrupt(sqlit
22fd0 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  e3*);../*.** CAP
22fe0 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65  I3REF: Determine
22ff0 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61 74 65   If An SQL State
23000 6d 65 6e 74 20 49 73 20 43 6f 6d 70 6c 65 74 65  ment Is Complete
23010 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75  .**.** These rou
23020 74 69 6e 65 73 20 61 72 65 20 75 73 65 66 75 6c  tines are useful
23030 20 64 75 72 69 6e 67 20 63 6f 6d 6d 61 6e 64 2d   during command-
23040 6c 69 6e 65 20 69 6e 70 75 74 20 74 6f 20 64 65  line input to de
23050 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65 0a 2a  termine if the.*
23060 2a 20 63 75 72 72 65 6e 74 6c 79 20 65 6e 74 65  * currently ente
23070 72 65 64 20 74 65 78 74 20 73 65 65 6d 73 20 74  red text seems t
23080 6f 20 66 6f 72 6d 20 61 20 63 6f 6d 70 6c 65 74  o form a complet
23090 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
230a0 6f 72 0a 2a 2a 20 69 66 20 61 64 64 69 74 69 6f  or.** if additio
230b0 6e 61 6c 20 69 6e 70 75 74 20 69 73 20 6e 65 65  nal input is nee
230c0 64 65 64 20 62 65 66 6f 72 65 20 73 65 6e 64 69  ded before sendi
230d0 6e 67 20 74 68 65 20 74 65 78 74 20 69 6e 74 6f  ng the text into
230e0 0a 2a 2a 20 53 51 4c 69 74 65 20 66 6f 72 20 70  .** SQLite for p
230f0 61 72 73 69 6e 67 2e 20 20 5e 54 68 65 73 65 20  arsing.  ^These 
23100 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
23110 31 20 69 66 20 74 68 65 20 69 6e 70 75 74 20 73  1 if the input s
23120 74 72 69 6e 67 0a 2a 2a 20 61 70 70 65 61 72 73  tring.** appears
23130 20 74 6f 20 62 65 20 61 20 63 6f 6d 70 6c 65 74   to be a complet
23140 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  e SQL statement.
23150 20 20 5e 41 20 73 74 61 74 65 6d 65 6e 74 20 69    ^A statement i
23160 73 20 6a 75 64 67 65 64 20 74 6f 20 62 65 0a 2a  s judged to be.*
23170 2a 20 63 6f 6d 70 6c 65 74 65 20 69 66 20 69 74  * complete if it
23180 20 65 6e 64 73 20 77 69 74 68 20 61 20 73 65 6d   ends with a sem
23190 69 63 6f 6c 6f 6e 20 74 6f 6b 65 6e 20 61 6e 64  icolon token and
231a0 20 69 73 20 6e 6f 74 20 61 20 70 72 65 66 69 78   is not a prefix
231b0 20 6f 66 20 61 0a 2a 2a 20 77 65 6c 6c 2d 66 6f   of a.** well-fo
231c0 72 6d 65 64 20 43 52 45 41 54 45 20 54 52 49 47  rmed CREATE TRIG
231d0 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  GER statement.  
231e0 5e 53 65 6d 69 63 6f 6c 6f 6e 73 20 74 68 61 74  ^Semicolons that
231f0 20 61 72 65 20 65 6d 62 65 64 64 65 64 20 77 69   are embedded wi
23200 74 68 69 6e 0a 2a 2a 20 73 74 72 69 6e 67 20 6c  thin.** string l
23210 69 74 65 72 61 6c 73 20 6f 72 20 71 75 6f 74 65  iterals or quote
23220 64 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d  d identifier nam
23230 65 73 20 6f 72 20 63 6f 6d 6d 65 6e 74 73 20 61  es or comments a
23240 72 65 20 6e 6f 74 0a 2a 2a 20 69 6e 64 65 70 65  re not.** indepe
23250 6e 64 65 6e 74 20 74 6f 6b 65 6e 73 20 28 74 68  ndent tokens (th
23260 65 79 20 61 72 65 20 70 61 72 74 20 6f 66 20 74  ey are part of t
23270 68 65 20 74 6f 6b 65 6e 20 69 6e 20 77 68 69 63  he token in whic
23280 68 20 74 68 65 79 20 61 72 65 0a 2a 2a 20 65 6d  h they are.** em
23290 62 65 64 64 65 64 29 20 61 6e 64 20 74 68 75 73  bedded) and thus
232a0 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20 61 73   do not count as
232b0 20 61 20 73 74 61 74 65 6d 65 6e 74 20 74 65 72   a statement ter
232c0 6d 69 6e 61 74 6f 72 2e 20 20 5e 57 68 69 74 65  minator.  ^White
232d0 73 70 61 63 65 0a 2a 2a 20 61 6e 64 20 63 6f 6d  space.** and com
232e0 6d 65 6e 74 73 20 74 68 61 74 20 66 6f 6c 6c 6f  ments that follo
232f0 77 20 74 68 65 20 66 69 6e 61 6c 20 73 65 6d 69  w the final semi
23300 63 6f 6c 6f 6e 20 61 72 65 20 69 67 6e 6f 72 65  colon are ignore
23310 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20  d..**.** ^These 
23320 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
23330 30 20 69 66 20 74 68 65 20 73 74 61 74 65 6d 65  0 if the stateme
23340 6e 74 20 69 73 20 69 6e 63 6f 6d 70 6c 65 74 65  nt is incomplete
23350 2e 20 20 5e 49 66 20 61 0a 2a 2a 20 6d 65 6d 6f  .  ^If a.** memo
23360 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61  ry allocation fa
23370 69 6c 73 2c 20 74 68 65 6e 20 53 51 4c 49 54 45  ils, then SQLITE
23380 5f 4e 4f 4d 45 4d 20 69 73 20 72 65 74 75 72 6e  _NOMEM is return
23390 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65  ed..**.** ^These
233a0 20 72 6f 75 74 69 6e 65 73 20 64 6f 20 6e 6f 74   routines do not
233b0 20 70 61 72 73 65 20 74 68 65 20 53 51 4c 20 73   parse the SQL s
233c0 74 61 74 65 6d 65 6e 74 73 20 74 68 75 73 0a 2a  tatements thus.*
233d0 2a 20 77 69 6c 6c 20 6e 6f 74 20 64 65 74 65 63  * will not detec
233e0 74 20 73 79 6e 74 61 63 74 69 63 61 6c 6c 79 20  t syntactically 
233f0 69 6e 63 6f 72 72 65 63 74 20 53 51 4c 2e 0a 2a  incorrect SQL..*
23400 2a 0a 2a 2a 20 5e 28 49 66 20 53 51 4c 69 74 65  *.** ^(If SQLite
23410 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69 6e   has not been in
23420 69 74 69 61 6c 69 7a 65 64 20 75 73 69 6e 67 20  itialized using 
23430 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  [sqlite3_initial
23440 69 7a 65 28 29 5d 20 70 72 69 6f 72 20 0a 2a 2a  ize()] prior .**
23450 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 20 73 71 6c   to invoking sql
23460 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
23470 29 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 69  ) then sqlite3_i
23480 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69  nitialize() is i
23490 6e 76 6f 6b 65 64 0a 2a 2a 20 61 75 74 6f 6d 61  nvoked.** automa
234a0 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69 74  tically by sqlit
234b0 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 2e  e3_complete16().
234c0 20 20 49 66 20 74 68 61 74 20 69 6e 69 74 69 61    If that initia
234d0 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73 2c 0a  lization fails,.
234e0 2a 2a 20 74 68 65 6e 20 74 68 65 20 72 65 74 75  ** then the retu
234f0 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 73 71  rn value from sq
23500 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36  lite3_complete16
23510 28 29 20 77 69 6c 6c 20 62 65 20 6e 6f 6e 2d 7a  () will be non-z
23520 65 72 6f 0a 2a 2a 20 72 65 67 61 72 64 6c 65 73  ero.** regardles
23530 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20  s of whether or 
23540 6e 6f 74 20 74 68 65 20 69 6e 70 75 74 20 53 51  not the input SQ
23550 4c 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e 29 5e  L is complete.)^
23560 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70 75 74  .**.** The input
23570 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6d   to [sqlite3_com
23580 70 6c 65 74 65 28 29 5d 20 6d 75 73 74 20 62 65  plete()] must be
23590 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
235a0 65 64 0a 2a 2a 20 55 54 46 2d 38 20 73 74 72 69  ed.** UTF-8 stri
235b0 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e  ng..**.** The in
235c0 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  put to [sqlite3_
235d0 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 20 6d 75  complete16()] mu
235e0 73 74 20 62 65 20 61 20 7a 65 72 6f 2d 74 65 72  st be a zero-ter
235f0 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 31  minated.** UTF-1
23600 36 20 73 74 72 69 6e 67 20 69 6e 20 6e 61 74 69  6 string in nati
23610 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a  ve byte order..*
23620 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
23630 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
23640 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  e(const char *sq
23650 6c 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  l);.SQLITE_API i
23660 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  nt sqlite3_compl
23670 65 74 65 31 36 28 63 6f 6e 73 74 20 76 6f 69 64  ete16(const void
23680 20 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43   *sql);../*.** C
23690 41 50 49 33 52 45 46 3a 20 52 65 67 69 73 74 65  API3REF: Registe
236a0 72 20 41 20 43 61 6c 6c 62 61 63 6b 20 54 6f 20  r A Callback To 
236b0 48 61 6e 64 6c 65 20 53 51 4c 49 54 45 5f 42 55  Handle SQLITE_BU
236c0 53 59 20 45 72 72 6f 72 73 0a 2a 2a 20 4b 45 59  SY Errors.** KEY
236d0 57 4f 52 44 53 3a 20 7b 62 75 73 79 2d 68 61 6e  WORDS: {busy-han
236e0 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 7d 20 7b  dler callback} {
236f0 62 75 73 79 20 68 61 6e 64 6c 65 72 7d 0a 2a 2a  busy handler}.**
23700 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
23710 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
23720 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
23730 28 44 2c 58 2c 50 29 20 72 6f 75 74 69 6e 65 20  (D,X,P) routine 
23740 73 65 74 73 20 61 20 63 61 6c 6c 62 61 63 6b 20  sets a callback 
23750 66 75 6e 63 74 69 6f 6e 20 58 0a 2a 2a 20 74 68  function X.** th
23760 61 74 20 6d 69 67 68 74 20 62 65 20 69 6e 76 6f  at might be invo
23770 6b 65 64 20 77 69 74 68 20 61 72 67 75 6d 65 6e  ked with argumen
23780 74 20 50 20 77 68 65 6e 65 76 65 72 0a 2a 2a 20  t P whenever.** 
23790 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20 6d 61  an attempt is ma
237a0 64 65 20 74 6f 20 61 63 63 65 73 73 20 61 20 64  de to access a d
237b0 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 61 73  atabase table as
237c0 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a 2a 2a  sociated with.**
237d0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
237e0 63 74 69 6f 6e 5d 20 44 20 77 68 65 6e 20 61 6e  ction] D when an
237f0 6f 74 68 65 72 20 74 68 72 65 61 64 0a 2a 2a 20  other thread.** 
23800 6f 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 74  or process has t
23810 68 65 20 74 61 62 6c 65 20 6c 6f 63 6b 65 64 2e  he table locked.
23820 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
23830 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29 20 69  busy_handler() i
23840 6e 74 65 72 66 61 63 65 20 69 73 20 75 73 65 64  nterface is used
23850 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 0a 2a 2a   to implement.**
23860 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74   [sqlite3_busy_t
23870 69 6d 65 6f 75 74 28 29 5d 20 61 6e 64 20 5b 50  imeout()] and [P
23880 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f  RAGMA busy_timeo
23890 75 74 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ut]..**.** ^If t
238a0 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  he busy callback
238b0 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 5b   is NULL, then [
238c0 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a 2a 20  SQLITE_BUSY].** 
238d0 69 73 20 72 65 74 75 72 6e 65 64 20 69 6d 6d 65  is returned imme
238e0 64 69 61 74 65 6c 79 20 75 70 6f 6e 20 65 6e 63  diately upon enc
238f0 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20 6c 6f  ountering the lo
23900 63 6b 2e 20 20 5e 49 66 20 74 68 65 20 62 75 73  ck.  ^If the bus
23910 79 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73  y callback.** is
23920 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   not NULL, then 
23930 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6d 69 67  the callback mig
23940 68 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ht be invoked wi
23950 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73  th two arguments
23960 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ..**.** ^The fir
23970 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
23980 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  he busy handler 
23990 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  is a copy of the
239a0 20 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72 20 77   void* pointer w
239b0 68 69 63 68 0a 2a 2a 20 69 73 20 74 68 65 20 74  hich.** is the t
239c0 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  hird argument to
239d0 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
239e0 6e 64 6c 65 72 28 29 2e 20 20 5e 54 68 65 20 73  ndler().  ^The s
239f0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74  econd argument t
23a00 6f 0a 2a 2a 20 74 68 65 20 62 75 73 79 20 68 61  o.** the busy ha
23a10 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  ndler callback i
23a20 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
23a30 74 69 6d 65 73 20 74 68 61 74 20 74 68 65 20 62  times that the b
23a40 75 73 79 20 68 61 6e 64 6c 65 72 20 68 61 73 0a  usy handler has.
23a50 2a 2a 20 62 65 65 6e 20 69 6e 76 6f 6b 65 64 20  ** been invoked 
23a60 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 72 20 74  previously for t
23a70 68 65 20 73 61 6d 65 20 6c 6f 63 6b 69 6e 67 20  he same locking 
23a80 65 76 65 6e 74 2e 20 20 5e 49 66 20 74 68 65 0a  event.  ^If the.
23a90 2a 2a 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  ** busy callback
23aa0 20 72 65 74 75 72 6e 73 20 30 2c 20 74 68 65 6e   returns 0, then
23ab0 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61   no additional a
23ac0 74 74 65 6d 70 74 73 20 61 72 65 20 6d 61 64 65  ttempts are made
23ad0 20 74 6f 0a 2a 2a 20 61 63 63 65 73 73 20 74 68   to.** access th
23ae0 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 5b  e database and [
23af0 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69 73 20  SQLITE_BUSY] is 
23b00 72 65 74 75 72 6e 65 64 0a 2a 2a 20 74 6f 20 74  returned.** to t
23b10 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0a  he application..
23b20 2a 2a 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62  ** ^If the callb
23b30 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d  ack returns non-
23b40 7a 65 72 6f 2c 20 74 68 65 6e 20 61 6e 6f 74 68  zero, then anoth
23b50 65 72 20 61 74 74 65 6d 70 74 0a 2a 2a 20 69 73  er attempt.** is
23b60 20 6d 61 64 65 20 74 6f 20 61 63 63 65 73 73 20   made to access 
23b70 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
23b80 20 74 68 65 20 63 79 63 6c 65 20 72 65 70 65 61   the cycle repea
23b90 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72  ts..**.** The pr
23ba0 65 73 65 6e 63 65 20 6f 66 20 61 20 62 75 73 79  esence of a busy
23bb0 20 68 61 6e 64 6c 65 72 20 64 6f 65 73 20 6e 6f   handler does no
23bc0 74 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74  t guarantee that
23bd0 20 69 74 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f   it will be invo
23be0 6b 65 64 0a 2a 2a 20 77 68 65 6e 20 74 68 65 72  ked.** when ther
23bf0 65 20 69 73 20 6c 6f 63 6b 20 63 6f 6e 74 65 6e  e is lock conten
23c00 74 69 6f 6e 2e 20 5e 49 66 20 53 51 4c 69 74 65  tion. ^If SQLite
23c10 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68 61 74   determines that
23c20 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20 62 75   invoking the bu
23c30 73 79 0a 2a 2a 20 68 61 6e 64 6c 65 72 20 63 6f  sy.** handler co
23c40 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 20 61 20  uld result in a 
23c50 64 65 61 64 6c 6f 63 6b 2c 20 69 74 20 77 69 6c  deadlock, it wil
23c60 6c 20 67 6f 20 61 68 65 61 64 20 61 6e 64 20 72  l go ahead and r
23c70 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55  eturn [SQLITE_BU
23c80 53 59 5d 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70  SY].** to the ap
23c90 70 6c 69 63 61 74 69 6f 6e 20 69 6e 73 74 65 61  plication instea
23ca0 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20 74 68  d of invoking th
23cb0 65 20 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c  e .** busy handl
23cc0 65 72 2e 0a 2a 2a 20 43 6f 6e 73 69 64 65 72 20  er..** Consider 
23cd0 61 20 73 63 65 6e 61 72 69 6f 20 77 68 65 72 65  a scenario where
23ce0 20 6f 6e 65 20 70 72 6f 63 65 73 73 20 69 73 20   one process is 
23cf0 68 6f 6c 64 69 6e 67 20 61 20 72 65 61 64 20 6c  holding a read l
23d00 6f 63 6b 20 74 68 61 74 0a 2a 2a 20 69 74 20 69  ock that.** it i
23d10 73 20 74 72 79 69 6e 67 20 74 6f 20 70 72 6f 6d  s trying to prom
23d20 6f 74 65 20 74 6f 20 61 20 72 65 73 65 72 76 65  ote to a reserve
23d30 64 20 6c 6f 63 6b 20 61 6e 64 0a 2a 2a 20 61 20  d lock and.** a 
23d40 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 69  second process i
23d50 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 73 65  s holding a rese
23d60 72 76 65 64 20 6c 6f 63 6b 20 74 68 61 74 20 69  rved lock that i
23d70 74 20 69 73 20 74 72 79 69 6e 67 0a 2a 2a 20 74  t is trying.** t
23d80 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 6e 20  o promote to an 
23d90 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b 2e 20  exclusive lock. 
23da0 20 54 68 65 20 66 69 72 73 74 20 70 72 6f 63 65   The first proce
23db0 73 73 20 63 61 6e 6e 6f 74 20 70 72 6f 63 65 65  ss cannot procee
23dc0 64 0a 2a 2a 20 62 65 63 61 75 73 65 20 69 74 20  d.** because it 
23dd0 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68  is blocked by th
23de0 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74 68 65  e second and the
23df0 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73 20   second process 
23e00 63 61 6e 6e 6f 74 0a 2a 2a 20 70 72 6f 63 65 65  cannot.** procee
23e10 64 20 62 65 63 61 75 73 65 20 69 74 20 69 73 20  d because it is 
23e20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65 20 66  blocked by the f
23e30 69 72 73 74 2e 20 20 49 66 20 62 6f 74 68 20 70  irst.  If both p
23e40 72 6f 63 65 73 73 65 73 0a 2a 2a 20 69 6e 76 6f  rocesses.** invo
23e50 6b 65 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  ke the busy hand
23e60 6c 65 72 73 2c 20 6e 65 69 74 68 65 72 20 77 69  lers, neither wi
23e70 6c 6c 20 6d 61 6b 65 20 61 6e 79 20 70 72 6f 67  ll make any prog
23e80 72 65 73 73 2e 20 20 54 68 65 72 65 66 6f 72 65  ress.  Therefore
23e90 2c 0a 2a 2a 20 53 51 4c 69 74 65 20 72 65 74 75  ,.** SQLite retu
23ea0 72 6e 73 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  rns [SQLITE_BUSY
23eb0 5d 20 66 6f 72 20 74 68 65 20 66 69 72 73 74 20  ] for the first 
23ec0 70 72 6f 63 65 73 73 2c 20 68 6f 70 69 6e 67 20  process, hoping 
23ed0 74 68 61 74 20 74 68 69 73 0a 2a 2a 20 77 69 6c  that this.** wil
23ee0 6c 20 69 6e 64 75 63 65 20 74 68 65 20 66 69 72  l induce the fir
23ef0 73 74 20 70 72 6f 63 65 73 73 20 74 6f 20 72 65  st process to re
23f00 6c 65 61 73 65 20 69 74 73 20 72 65 61 64 20 6c  lease its read l
23f10 6f 63 6b 20 61 6e 64 20 61 6c 6c 6f 77 0a 2a 2a  ock and allow.**
23f20 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63   the second proc
23f30 65 73 73 20 74 6f 20 70 72 6f 63 65 65 64 2e 0a  ess to proceed..
23f40 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75  **.** ^The defau
23f50 6c 74 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b  lt busy callback
23f60 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20   is NULL..**.** 
23f70 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c 79  ^(There can only
23f80 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75 73   be a single bus
23f90 79 20 68 61 6e 64 6c 65 72 20 64 65 66 69 6e 65  y handler define
23fa0 64 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 5b 64  d for each.** [d
23fb0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
23fc0 6f 6e 5d 2e 20 20 53 65 74 74 69 6e 67 20 61 20  on].  Setting a 
23fd0 6e 65 77 20 62 75 73 79 20 68 61 6e 64 6c 65 72  new busy handler
23fe0 20 63 6c 65 61 72 73 20 61 6e 79 0a 2a 2a 20 70   clears any.** p
23ff0 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20 68 61  reviously set ha
24000 6e 64 6c 65 72 2e 29 5e 20 20 5e 4e 6f 74 65 20  ndler.)^  ^Note 
24010 74 68 61 74 20 63 61 6c 6c 69 6e 67 20 5b 73 71  that calling [sq
24020 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
24030 75 74 28 29 5d 0a 2a 2a 20 6f 72 20 65 76 61 6c  ut()].** or eval
24040 75 61 74 69 6e 67 20 5b 50 52 41 47 4d 41 20 62  uating [PRAGMA b
24050 75 73 79 5f 74 69 6d 65 6f 75 74 3d 4e 5d 20 77  usy_timeout=N] w
24060 69 6c 6c 20 63 68 61 6e 67 65 20 74 68 65 0a 2a  ill change the.*
24070 2a 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 61  * busy handler a
24080 6e 64 20 74 68 75 73 20 63 6c 65 61 72 20 61 6e  nd thus clear an
24090 79 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74  y previously set
240a0 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a   busy handler..*
240b0 2a 0a 2a 2a 20 54 68 65 20 62 75 73 79 20 63 61  *.** The busy ca
240c0 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20 6e 6f  llback should no
240d0 74 20 74 61 6b 65 20 61 6e 79 20 61 63 74 69 6f  t take any actio
240e0 6e 73 20 77 68 69 63 68 20 6d 6f 64 69 66 79 20  ns which modify 
240f0 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  the.** database 
24100 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20  connection that 
24110 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73 79  invoked the busy
24120 20 68 61 6e 64 6c 65 72 2e 20 20 49 6e 20 6f 74   handler.  In ot
24130 68 65 72 20 77 6f 72 64 73 2c 0a 2a 2a 20 74 68  her words,.** th
24140 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69  e busy handler i
24150 73 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74 2e  s not reentrant.
24160 20 20 41 6e 79 20 73 75 63 68 20 61 63 74 69 6f    Any such actio
24170 6e 73 0a 2a 2a 20 72 65 73 75 6c 74 20 69 6e 20  ns.** result in 
24180 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69  undefined behavi
24190 6f 72 2e 0a 2a 2a 20 0a 2a 2a 20 41 20 62 75 73  or..** .** A bus
241a0 79 20 68 61 6e 64 6c 65 72 20 6d 75 73 74 20 6e  y handler must n
241b0 6f 74 20 63 6c 6f 73 65 20 74 68 65 20 64 61 74  ot close the dat
241c0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
241d0 0a 2a 2a 20 6f 72 20 5b 70 72 65 70 61 72 65 64  .** or [prepared
241e0 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74   statement] that
241f0 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75 73   invoked the bus
24200 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2f 0a 53 51  y handler..*/.SQ
24210 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
24220 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
24230 72 28 73 71 6c 69 74 65 33 2a 2c 69 6e 74 28 2a  r(sqlite3*,int(*
24240 29 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 76 6f 69  )(void*,int),voi
24250 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  d*);../*.** CAPI
24260 33 52 45 46 3a 20 53 65 74 20 41 20 42 75 73 79  3REF: Set A Busy
24270 20 54 69 6d 65 6f 75 74 0a 2a 2a 20 4d 45 54 48   Timeout.** METH
24280 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
24290 2a 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65 20  * ^This routine 
242a0 73 65 74 73 20 61 20 5b 73 71 6c 69 74 65 33 5f  sets a [sqlite3_
242b0 62 75 73 79 5f 68 61 6e 64 6c 65 72 20 7c 20 62  busy_handler | b
242c0 75 73 79 20 68 61 6e 64 6c 65 72 5d 20 74 68 61  usy handler] tha
242d0 74 20 73 6c 65 65 70 73 0a 2a 2a 20 66 6f 72 20  t sleeps.** for 
242e0 61 20 73 70 65 63 69 66 69 65 64 20 61 6d 6f 75  a specified amou
242f0 6e 74 20 6f 66 20 74 69 6d 65 20 77 68 65 6e 20  nt of time when 
24300 61 20 74 61 62 6c 65 20 69 73 20 6c 6f 63 6b 65  a table is locke
24310 64 2e 20 20 5e 54 68 65 20 68 61 6e 64 6c 65 72  d.  ^The handler
24320 0a 2a 2a 20 77 69 6c 6c 20 73 6c 65 65 70 20 6d  .** will sleep m
24330 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 6e  ultiple times un
24340 74 69 6c 20 61 74 20 6c 65 61 73 74 20 22 6d 73  til at least "ms
24350 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f  " milliseconds o
24360 66 20 73 6c 65 65 70 69 6e 67 0a 2a 2a 20 68 61  f sleeping.** ha
24370 76 65 20 61 63 63 75 6d 75 6c 61 74 65 64 2e 20  ve accumulated. 
24380 20 5e 41 66 74 65 72 20 61 74 20 6c 65 61 73 74   ^After at least
24390 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e   "ms" millisecon
243a0 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 2c 0a  ds of sleeping,.
243b0 2a 2a 20 74 68 65 20 68 61 6e 64 6c 65 72 20 72  ** the handler r
243c0 65 74 75 72 6e 73 20 30 20 77 68 69 63 68 20 63  eturns 0 which c
243d0 61 75 73 65 73 20 5b 73 71 6c 69 74 65 33 5f 73  auses [sqlite3_s
243e0 74 65 70 28 29 5d 20 74 6f 20 72 65 74 75 72 6e  tep()] to return
243f0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  .** [SQLITE_BUSY
24400 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e  ]..**.** ^Callin
24410 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77  g this routine w
24420 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e 74 20  ith an argument 
24430 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75  less than or equ
24440 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20 74 75  al to zero.** tu
24450 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75 73 79  rns off all busy
24460 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2a 0a 2a 2a   handlers..**.**
24470 20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e 6c   ^(There can onl
24480 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62 75  y be a single bu
24490 73 79 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  sy handler for a
244a0 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a 20 5b   particular.** [
244b0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
244c0 69 6f 6e 5d 20 61 74 20 61 6e 79 20 67 69 76 65  ion] at any give
244d0 6e 20 6d 6f 6d 65 6e 74 2e 20 20 49 66 20 61 6e  n moment.  If an
244e0 6f 74 68 65 72 20 62 75 73 79 20 68 61 6e 64 6c  other busy handl
244f0 65 72 0a 2a 2a 20 77 61 73 20 64 65 66 69 6e 65  er.** was define
24500 64 20 20 28 75 73 69 6e 67 20 5b 73 71 6c 69 74  d  (using [sqlit
24510 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28  e3_busy_handler(
24520 29 5d 29 20 70 72 69 6f 72 20 74 6f 20 63 61 6c  )]) prior to cal
24530 6c 69 6e 67 0a 2a 2a 20 74 68 69 73 20 72 6f 75  ling.** this rou
24540 74 69 6e 65 2c 20 74 68 61 74 20 6f 74 68 65 72  tine, that other
24550 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 69 73   busy handler is
24560 20 63 6c 65 61 72 65 64 2e 29 5e 0a 2a 2a 0a 2a   cleared.)^.**.*
24570 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 50 52  * See also:  [PR
24580 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75  AGMA busy_timeou
24590 74 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  t].*/.SQLITE_API
245a0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 75 73   int sqlite3_bus
245b0 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c 69 74 65  y_timeout(sqlite
245c0 33 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a 2f 2a  3*, int ms);../*
245d0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f  .** CAPI3REF: Co
245e0 6e 76 65 6e 69 65 6e 63 65 20 52 6f 75 74 69 6e  nvenience Routin
245f0 65 73 20 46 6f 72 20 52 75 6e 6e 69 6e 67 20 51  es For Running Q
24600 75 65 72 69 65 73 0a 2a 2a 20 4d 45 54 48 4f 44  ueries.** METHOD
24610 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
24620 54 68 69 73 20 69 73 20 61 20 6c 65 67 61 63 79  This is a legacy
24630 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20   interface that 
24640 69 73 20 70 72 65 73 65 72 76 65 64 20 66 6f 72  is preserved for
24650 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61   backwards compa
24660 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 20 55 73 65  tibility..** Use
24670 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66 61   of this interfa
24680 63 65 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d  ce is not recomm
24690 65 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 44 65 66  ended..**.** Def
246a0 69 6e 69 74 69 6f 6e 3a 20 41 20 3c 62 3e 72 65  inition: A <b>re
246b0 73 75 6c 74 20 74 61 62 6c 65 3c 2f 62 3e 20 69  sult table</b> i
246c0 73 20 6d 65 6d 6f 72 79 20 64 61 74 61 20 73 74  s memory data st
246d0 72 75 63 74 75 72 65 20 63 72 65 61 74 65 64 20  ructure created 
246e0 62 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  by the.** [sqlit
246f0 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20  e3_get_table()] 
24700 69 6e 74 65 72 66 61 63 65 2e 20 20 41 20 72 65  interface.  A re
24710 73 75 6c 74 20 74 61 62 6c 65 20 72 65 63 6f 72  sult table recor
24720 64 73 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 6c 65  ds the.** comple
24730 74 65 20 71 75 65 72 79 20 72 65 73 75 6c 74 73  te query results
24740 20 66 72 6f 6d 20 6f 6e 65 20 6f 72 20 6d 6f 72   from one or mor
24750 65 20 71 75 65 72 69 65 73 2e 0a 2a 2a 0a 2a 2a  e queries..**.**
24760 20 54 68 65 20 74 61 62 6c 65 20 63 6f 6e 63 65   The table conce
24770 70 74 75 61 6c 6c 79 20 68 61 73 20 61 20 6e 75  ptually has a nu
24780 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 61 6e 64  mber of rows and
24790 20 63 6f 6c 75 6d 6e 73 2e 20 20 42 75 74 0a 2a   columns.  But.*
247a0 2a 20 74 68 65 73 65 20 6e 75 6d 62 65 72 73 20  * these numbers 
247b0 61 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20  are not part of 
247c0 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
247d0 20 69 74 73 65 6c 66 2e 20 20 54 68 65 73 65 0a   itself.  These.
247e0 2a 2a 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6f  ** numbers are o
247f0 62 74 61 69 6e 65 64 20 73 65 70 61 72 61 74 65  btained separate
24800 6c 79 2e 20 20 4c 65 74 20 4e 20 62 65 20 74 68  ly.  Let N be th
24810 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  e number of rows
24820 0a 2a 2a 20 61 6e 64 20 4d 20 62 65 20 74 68 65  .** and M be the
24830 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
24840 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73 75  ns..**.** A resu
24850 6c 74 20 74 61 62 6c 65 20 69 73 20 61 6e 20 61  lt table is an a
24860 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73  rray of pointers
24870 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61   to zero-termina
24880 74 65 64 20 55 54 46 2d 38 20 73 74 72 69 6e 67  ted UTF-8 string
24890 73 2e 0a 2a 2a 20 54 68 65 72 65 20 61 72 65 20  s..** There are 
248a0 28 4e 2b 31 29 2a 4d 20 65 6c 65 6d 65 6e 74 73  (N+1)*M elements
248b0 20 69 6e 20 74 68 65 20 61 72 72 61 79 2e 20 20   in the array.  
248c0 54 68 65 20 66 69 72 73 74 20 4d 20 70 6f 69 6e  The first M poin
248d0 74 65 72 73 20 70 6f 69 6e 74 0a 2a 2a 20 74 6f  ters point.** to
248e0 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
248f0 20 73 74 72 69 6e 67 73 20 74 68 61 74 20 20 63   strings that  c
24900 6f 6e 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 73  ontain the names
24910 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 2e   of the columns.
24920 0a 2a 2a 20 54 68 65 20 72 65 6d 61 69 6e 69 6e  .** The remainin
24930 67 20 65 6e 74 72 69 65 73 20 61 6c 6c 20 70 6f  g entries all po
24940 69 6e 74 20 74 6f 20 71 75 65 72 79 20 72 65 73  int to query res
24950 75 6c 74 73 2e 20 20 4e 55 4c 4c 20 76 61 6c 75  ults.  NULL valu
24960 65 73 20 72 65 73 75 6c 74 0a 2a 2a 20 69 6e 20  es result.** in 
24970 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 2e 20 20  NULL pointers.  
24980 41 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75 65 73  All other values
24990 20 61 72 65 20 69 6e 20 74 68 65 69 72 20 55 54   are in their UT
249a0 46 2d 38 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  F-8 zero-termina
249b0 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 72 65  ted.** string re
249c0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 61 73 20  presentation as 
249d0 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c  returned by [sql
249e0 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74  ite3_column_text
249f0 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65 73  ()]..**.** A res
24a00 75 6c 74 20 74 61 62 6c 65 20 6d 69 67 68 74 20  ult table might 
24a10 63 6f 6e 73 69 73 74 20 6f 66 20 6f 6e 65 20 6f  consist of one o
24a20 72 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 20 61 6c  r more memory al
24a30 6c 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a 20 49 74  locations..** It
24a40 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74 6f 20   is not safe to 
24a50 70 61 73 73 20 61 20 72 65 73 75 6c 74 20 74 61  pass a result ta
24a60 62 6c 65 20 64 69 72 65 63 74 6c 79 20 74 6f 20  ble directly to 
24a70 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
24a80 2e 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61  ..** A result ta
24a90 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 64 65  ble should be de
24aa0 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e 67 20  allocated using 
24ab0 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61  [sqlite3_free_ta
24ac0 62 6c 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 28  ble()]..**.** ^(
24ad0 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66  As an example of
24ae0 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c   the result tabl
24af0 65 20 66 6f 72 6d 61 74 2c 20 73 75 70 70 6f 73  e format, suppos
24b00 65 20 61 20 71 75 65 72 79 20 72 65 73 75 6c 74  e a query result
24b10 0a 2a 2a 20 69 73 20 61 73 20 66 6f 6c 6c 6f 77  .** is as follow
24b20 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71  s:.**.** <blockq
24b30 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20  uote><pre>.**   
24b40 20 20 20 20 20 4e 61 6d 65 20 20 20 20 20 20 20       Name       
24b50 20 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20 20 20   | Age.**       
24b60 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
24b70 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20 20 20  --------.**     
24b80 20 20 20 41 6c 69 63 65 20 20 20 20 20 20 20 7c     Alice       |
24b90 20 34 33 0a 2a 2a 20 20 20 20 20 20 20 20 42 6f   43.**        Bo
24ba0 62 20 20 20 20 20 20 20 20 20 7c 20 32 38 0a 2a  b         | 28.*
24bb0 2a 20 20 20 20 20 20 20 20 43 69 6e 64 79 20 20  *        Cindy  
24bc0 20 20 20 20 20 7c 20 32 31 0a 2a 2a 20 3c 2f 70       | 21.** </p
24bd0 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
24be0 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 61 72 65  .**.** There are
24bf0 20 74 77 6f 20 63 6f 6c 75 6d 6e 20 28 4d 3d 3d   two column (M==
24c00 32 29 20 61 6e 64 20 74 68 72 65 65 20 72 6f 77  2) and three row
24c10 73 20 28 4e 3d 3d 33 29 2e 20 20 54 68 75 73 20  s (N==3).  Thus 
24c20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20 74 61  the.** result ta
24c30 62 6c 65 20 68 61 73 20 38 20 65 6e 74 72 69 65  ble has 8 entrie
24c40 73 2e 20 20 53 75 70 70 6f 73 65 20 74 68 65 20  s.  Suppose the 
24c50 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69 73 20  result table is 
24c60 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61 6e 20  stored.** in an 
24c70 61 72 72 61 79 20 6e 61 6d 65 73 20 61 7a 52 65  array names azRe
24c80 73 75 6c 74 2e 20 20 54 68 65 6e 20 61 7a 52 65  sult.  Then azRe
24c90 73 75 6c 74 20 68 6f 6c 64 73 20 74 68 69 73 20  sult holds this 
24ca0 63 6f 6e 74 65 6e 74 3a 0a 2a 2a 0a 2a 2a 20 3c  content:.**.** <
24cb0 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
24cc0 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
24cd0 75 6c 74 26 23 39 31 3b 30 5d 20 3d 20 22 4e 61  ult&#91;0] = "Na
24ce0 6d 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61  me";.**        a
24cf0 7a 52 65 73 75 6c 74 26 23 39 31 3b 31 5d 20 3d  zResult&#91;1] =
24d00 20 22 41 67 65 22 3b 0a 2a 2a 20 20 20 20 20 20   "Age";.**      
24d10 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 32    azResult&#91;2
24d20 5d 20 3d 20 22 41 6c 69 63 65 22 3b 0a 2a 2a 20  ] = "Alice";.** 
24d30 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
24d40 23 39 31 3b 33 5d 20 3d 20 22 34 33 22 3b 0a 2a  #91;3] = "43";.*
24d50 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
24d60 74 26 23 39 31 3b 34 5d 20 3d 20 22 42 6f 62 22  t&#91;4] = "Bob"
24d70 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
24d80 73 75 6c 74 26 23 39 31 3b 35 5d 20 3d 20 22 32  sult&#91;5] = "2
24d90 38 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  8";.**        az
24da0 52 65 73 75 6c 74 26 23 39 31 3b 36 5d 20 3d 20  Result&#91;6] = 
24db0 22 43 69 6e 64 79 22 3b 0a 2a 2a 20 20 20 20 20  "Cindy";.**     
24dc0 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b     azResult&#91;
24dd0 37 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 20 3c 2f  7] = "21";.** </
24de0 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
24df0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  >)^.**.** ^The s
24e00 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
24e10 28 29 20 66 75 6e 63 74 69 6f 6e 20 65 76 61 6c  () function eval
24e20 75 61 74 65 73 20 6f 6e 65 20 6f 72 20 6d 6f 72  uates one or mor
24e30 65 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e 2d 73  e.** semicolon-s
24e40 65 70 61 72 61 74 65 64 20 53 51 4c 20 73 74 61  eparated SQL sta
24e50 74 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 7a  tements in the z
24e60 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 55  ero-terminated U
24e70 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 6f  TF-8.** string o
24e80 66 20 69 74 73 20 32 6e 64 20 70 61 72 61 6d 65  f its 2nd parame
24e90 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ter and returns 
24ea0 61 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 74  a result table t
24eb0 6f 20 74 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72  o the.** pointer
24ec0 20 67 69 76 65 6e 20 69 6e 20 69 74 73 20 33 72   given in its 3r
24ed0 64 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a  d parameter..**.
24ee0 2a 2a 20 41 66 74 65 72 20 74 68 65 20 61 70 70  ** After the app
24ef0 6c 69 63 61 74 69 6f 6e 20 68 61 73 20 66 69 6e  lication has fin
24f00 69 73 68 65 64 20 77 69 74 68 20 74 68 65 20 72  ished with the r
24f10 65 73 75 6c 74 20 66 72 6f 6d 20 73 71 6c 69 74  esult from sqlit
24f20 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2c 0a  e3_get_table(),.
24f30 2a 2a 20 69 74 20 6d 75 73 74 20 70 61 73 73 20  ** it must pass 
24f40 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
24f50 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69   pointer to sqli
24f60 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
24f70 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 2a 2a 20   in order to.** 
24f80 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d 6f  release the memo
24f90 72 79 20 74 68 61 74 20 77 61 73 20 6d 61 6c 6c  ry that was mall
24fa0 6f 63 65 64 2e 20 20 42 65 63 61 75 73 65 20 6f  oced.  Because o
24fb0 66 20 74 68 65 20 77 61 79 20 74 68 65 0a 2a 2a  f the way the.**
24fc0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
24fd0 28 29 5d 20 68 61 70 70 65 6e 73 20 77 69 74 68  ()] happens with
24fe0 69 6e 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  in sqlite3_get_t
24ff0 61 62 6c 65 28 29 2c 20 74 68 65 20 63 61 6c 6c  able(), the call
25000 69 6e 67 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ing.** function 
25010 6d 75 73 74 20 6e 6f 74 20 74 72 79 20 74 6f 20  must not try to 
25020 63 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 72  call [sqlite3_fr
25030 65 65 28 29 5d 20 64 69 72 65 63 74 6c 79 2e 20  ee()] directly. 
25040 20 4f 6e 6c 79 0a 2a 2a 20 5b 73 71 6c 69 74 65   Only.** [sqlite
25050 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 20  3_free_table()] 
25060 69 73 20 61 62 6c 65 20 74 6f 20 72 65 6c 65 61  is able to relea
25070 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72  se the memory pr
25080 6f 70 65 72 6c 79 20 61 6e 64 20 73 61 66 65 6c  operly and safel
25090 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  y..**.** The sql
250a0 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
250b0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 69 6d   interface is im
250c0 70 6c 65 6d 65 6e 74 65 64 20 61 73 20 61 20 77  plemented as a w
250d0 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a  rapper around.**
250e0 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29   [sqlite3_exec()
250f0 5d 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  ].  The sqlite3_
25100 67 65 74 5f 74 61 62 6c 65 28 29 20 72 6f 75 74  get_table() rout
25110 69 6e 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76  ine does not hav
25120 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 61  e access.** to a
25130 6e 79 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61  ny internal data
25140 20 73 74 72 75 63 74 75 72 65 73 20 6f 66 20 53   structures of S
25150 51 4c 69 74 65 2e 20 20 49 74 20 75 73 65 73 20  QLite.  It uses 
25160 6f 6e 6c 79 20 74 68 65 20 70 75 62 6c 69 63 0a  only the public.
25170 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 64 65 66  ** interface def
25180 69 6e 65 64 20 68 65 72 65 2e 20 20 41 73 20 61  ined here.  As a
25190 20 63 6f 6e 73 65 71 75 65 6e 63 65 2c 20 65 72   consequence, er
251a0 72 6f 72 73 20 74 68 61 74 20 6f 63 63 75 72 20  rors that occur 
251b0 69 6e 20 74 68 65 0a 2a 2a 20 77 72 61 70 70 65  in the.** wrappe
251c0 72 20 6c 61 79 65 72 20 6f 75 74 73 69 64 65 20  r layer outside 
251d0 6f 66 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  of the internal 
251e0 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 5d  [sqlite3_exec()]
251f0 20 63 61 6c 6c 20 61 72 65 20 6e 6f 74 0a 2a 2a   call are not.**
25200 20 72 65 66 6c 65 63 74 65 64 20 69 6e 20 73 75   reflected in su
25210 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74  bsequent calls t
25220 6f 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 63 6f  o [sqlite3_errco
25230 64 65 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c  de()] or.** [sql
25240 69 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 2e 0a  ite3_errmsg()]..
25250 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
25260 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61  t sqlite3_get_ta
25270 62 6c 65 28 0a 20 20 73 71 6c 69 74 65 33 20 2a  ble(.  sqlite3 *
25280 64 62 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  db,          /* 
25290 41 6e 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65  An open database
252a0 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
252b0 20 2a 7a 53 71 6c 2c 20 20 20 20 20 2f 2a 20 53   *zSql,     /* S
252c0 51 4c 20 74 6f 20 62 65 20 65 76 61 6c 75 61 74  QL to be evaluat
252d0 65 64 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a 2a  ed */.  char ***
252e0 70 61 7a 52 65 73 75 6c 74 2c 20 20 20 20 2f 2a  pazResult,    /*
252f0 20 52 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20   Results of the 
25300 71 75 65 72 79 20 2a 2f 0a 20 20 69 6e 74 20 2a  query */.  int *
25310 70 6e 52 6f 77 2c 20 20 20 20 20 20 20 20 20 20  pnRow,          
25320 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72 65   /* Number of re
25330 73 75 6c 74 20 72 6f 77 73 20 77 72 69 74 74 65  sult rows writte
25340 6e 20 68 65 72 65 20 2a 2f 0a 20 20 69 6e 74 20  n here */.  int 
25350 2a 70 6e 43 6f 6c 75 6d 6e 2c 20 20 20 20 20 20  *pnColumn,      
25360 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20 72    /* Number of r
25370 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 20 77 72  esult columns wr
25380 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20  itten here */.  
25390 63 68 61 72 20 2a 2a 70 7a 45 72 72 6d 73 67 20  char **pzErrmsg 
253a0 20 20 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 6d        /* Error m
253b0 73 67 20 77 72 69 74 74 65 6e 20 68 65 72 65 20  sg written here 
253c0 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  */.);.SQLITE_API
253d0 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72   void sqlite3_fr
253e0 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20 2a 2a  ee_table(char **
253f0 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  result);../*.** 
25400 43 41 50 49 33 52 45 46 3a 20 46 6f 72 6d 61 74  CAPI3REF: Format
25410 74 65 64 20 53 74 72 69 6e 67 20 50 72 69 6e 74  ted String Print
25420 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a  ing Functions.**
25430 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
25440 65 73 20 61 72 65 20 77 6f 72 6b 2d 61 6c 69 6b  es are work-alik
25450 65 73 20 6f 66 20 74 68 65 20 22 70 72 69 6e 74  es of the "print
25460 66 28 29 22 20 66 61 6d 69 6c 79 20 6f 66 20 66  f()" family of f
25470 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 66 72 6f 6d  unctions.** from
25480 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 43 20   the standard C 
25490 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 54 68 65 73  library..** Thes
254a0 65 20 72 6f 75 74 69 6e 65 73 20 75 6e 64 65 72  e routines under
254b0 73 74 61 6e 64 20 6d 6f 73 74 20 6f 66 20 74 68  stand most of th
254c0 65 20 63 6f 6d 6d 6f 6e 20 4b 26 52 20 66 6f 72  e common K&R for
254d0 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 2c  matting options,
254e0 0a 2a 2a 20 70 6c 75 73 20 73 6f 6d 65 20 61 64  .** plus some ad
254f0 64 69 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 73 74 61  ditional non-sta
25500 6e 64 61 72 64 20 66 6f 72 6d 61 74 73 2c 20 64  ndard formats, d
25510 65 74 61 69 6c 65 64 20 62 65 6c 6f 77 2e 0a 2a  etailed below..*
25520 2a 20 4e 6f 74 65 20 74 68 61 74 20 73 6f 6d 65  * Note that some
25530 20 6f 66 20 74 68 65 20 6d 6f 72 65 20 6f 62 73   of the more obs
25540 63 75 72 65 20 66 6f 72 6d 61 74 74 69 6e 67 20  cure formatting 
25550 6f 70 74 69 6f 6e 73 20 66 72 6f 6d 20 72 65 63  options from rec
25560 65 6e 74 0a 2a 2a 20 43 2d 6c 69 62 72 61 72 79  ent.** C-library
25570 20 73 74 61 6e 64 61 72 64 73 20 61 72 65 20 6f   standards are o
25580 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 69 73  mitted from this
25590 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e   implementation.
255a0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
255b0 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 61 6e  te3_mprintf() an
255c0 64 20 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e  d sqlite3_vmprin
255d0 74 66 28 29 20 72 6f 75 74 69 6e 65 73 20 77 72  tf() routines wr
255e0 69 74 65 20 74 68 65 69 72 0a 2a 2a 20 72 65 73  ite their.** res
255f0 75 6c 74 73 20 69 6e 74 6f 20 6d 65 6d 6f 72 79  ults into memory
25600 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
25610 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
25620 5d 2e 0a 2a 2a 20 54 68 65 20 73 74 72 69 6e 67  ]..** The string
25630 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  s returned by th
25640 65 73 65 20 74 77 6f 20 72 6f 75 74 69 6e 65 73  ese two routines
25650 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 72 65   should be.** re
25660 6c 65 61 73 65 64 20 62 79 20 5b 73 71 6c 69 74  leased by [sqlit
25670 65 33 5f 66 72 65 65 28 29 5d 2e 20 20 5e 42 6f  e3_free()].  ^Bo
25680 74 68 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  th routines retu
25690 72 6e 20 61 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69  rn a.** NULL poi
256a0 6e 74 65 72 20 69 66 20 5b 73 71 6c 69 74 65 33  nter if [sqlite3
256b0 5f 6d 61 6c 6c 6f 63 28 29 5d 20 69 73 20 75 6e  _malloc()] is un
256c0 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65  able to allocate
256d0 20 65 6e 6f 75 67 68 0a 2a 2a 20 6d 65 6d 6f 72   enough.** memor
256e0 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65  y to hold the re
256f0 73 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0a  sulting string..
25700 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 73 71 6c 69  **.** ^(The sqli
25710 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 20 72  te3_snprintf() r
25720 6f 75 74 69 6e 65 20 69 73 20 73 69 6d 69 6c 61  outine is simila
25730 72 20 74 6f 20 22 73 6e 70 72 69 6e 74 66 28 29  r to "snprintf()
25740 22 20 66 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 74  " from.** the st
25750 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79  andard C library
25760 2e 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73  .  The result is
25770 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68   written into th
25780 65 0a 2a 2a 20 62 75 66 66 65 72 20 73 75 70 70  e.** buffer supp
25790 6c 69 65 64 20 61 73 20 74 68 65 20 73 65 63 6f  lied as the seco
257a0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 77 68 6f  nd parameter who
257b0 73 65 20 73 69 7a 65 20 69 73 20 67 69 76 65 6e  se size is given
257c0 20 62 79 0a 2a 2a 20 74 68 65 20 66 69 72 73 74   by.** the first
257d0 20 70 61 72 61 6d 65 74 65 72 2e 20 4e 6f 74 65   parameter. Note
257e0 20 74 68 61 74 20 74 68 65 20 6f 72 64 65 72 20   that the order 
257f0 6f 66 20 74 68 65 0a 2a 2a 20 66 69 72 73 74 20  of the.** first 
25800 74 77 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69  two parameters i
25810 73 20 72 65 76 65 72 73 65 64 20 66 72 6f 6d 20  s reversed from 
25820 73 6e 70 72 69 6e 74 66 28 29 2e 29 5e 20 20 54  snprintf().)^  T
25830 68 69 73 20 69 73 20 61 6e 0a 2a 2a 20 68 69 73  his is an.** his
25840 74 6f 72 69 63 61 6c 20 61 63 63 69 64 65 6e 74  torical accident
25850 20 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20   that cannot be 
25860 66 69 78 65 64 20 77 69 74 68 6f 75 74 20 62 72  fixed without br
25870 65 61 6b 69 6e 67 0a 2a 2a 20 62 61 63 6b 77 61  eaking.** backwa
25880 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  rds compatibilit
25890 79 2e 20 20 5e 28 4e 6f 74 65 20 61 6c 73 6f 20  y.  ^(Note also 
258a0 74 68 61 74 20 73 71 6c 69 74 65 33 5f 73 6e 70  that sqlite3_snp
258b0 72 69 6e 74 66 28 29 0a 2a 2a 20 72 65 74 75 72  rintf().** retur
258c0 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ns a pointer to 
258d0 69 74 73 20 62 75 66 66 65 72 20 69 6e 73 74 65  its buffer inste
258e0 61 64 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72  ad of the number
258f0 20 6f 66 0a 2a 2a 20 63 68 61 72 61 63 74 65 72   of.** character
25900 73 20 61 63 74 75 61 6c 6c 79 20 77 72 69 74 74  s actually writt
25910 65 6e 20 69 6e 74 6f 20 74 68 65 20 62 75 66 66  en into the buff
25920 65 72 2e 29 5e 20 20 57 65 20 61 64 6d 69 74 20  er.)^  We admit 
25930 74 68 61 74 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  that.** the numb
25940 65 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73  er of characters
25950 20 77 72 69 74 74 65 6e 20 77 6f 75 6c 64 20 62   written would b
25960 65 20 61 20 6d 6f 72 65 20 75 73 65 66 75 6c 20  e a more useful 
25970 72 65 74 75 72 6e 0a 2a 2a 20 76 61 6c 75 65 20  return.** value 
25980 62 75 74 20 77 65 20 63 61 6e 6e 6f 74 20 63 68  but we cannot ch
25990 61 6e 67 65 20 74 68 65 20 69 6d 70 6c 65 6d 65  ange the impleme
259a0 6e 74 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74  ntation of sqlit
259b0 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a  e3_snprintf().**
259c0 20 6e 6f 77 20 77 69 74 68 6f 75 74 20 62 72 65   now without bre
259d0 61 6b 69 6e 67 20 63 6f 6d 70 61 74 69 62 69 6c  aking compatibil
259e0 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 73 20 6c  ity..**.** ^As l
259f0 6f 6e 67 20 61 73 20 74 68 65 20 62 75 66 66 65  ong as the buffe
25a00 72 20 73 69 7a 65 20 69 73 20 67 72 65 61 74 65  r size is greate
25a10 72 20 74 68 61 6e 20 7a 65 72 6f 2c 20 73 71 6c  r than zero, sql
25a20 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a  ite3_snprintf().
25a30 2a 2a 20 67 75 61 72 61 6e 74 65 65 73 20 74 68  ** guarantees th
25a40 61 74 20 74 68 65 20 62 75 66 66 65 72 20 69 73  at the buffer is
25a50 20 61 6c 77 61 79 73 20 7a 65 72 6f 2d 74 65 72   always zero-ter
25a60 6d 69 6e 61 74 65 64 2e 20 20 5e 54 68 65 20 66  minated.  ^The f
25a70 69 72 73 74 0a 2a 2a 20 70 61 72 61 6d 65 74 65  irst.** paramete
25a80 72 20 22 6e 22 20 69 73 20 74 68 65 20 74 6f 74  r "n" is the tot
25a90 61 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 62  al size of the b
25aa0 75 66 66 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67  uffer, including
25ab0 20 73 70 61 63 65 20 66 6f 72 0a 2a 2a 20 74 68   space for.** th
25ac0 65 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f  e zero terminato
25ad0 72 2e 20 20 53 6f 20 74 68 65 20 6c 6f 6e 67 65  r.  So the longe
25ae0 73 74 20 73 74 72 69 6e 67 20 74 68 61 74 20 63  st string that c
25af0 61 6e 20 62 65 20 63 6f 6d 70 6c 65 74 65 6c 79  an be completely
25b00 0a 2a 2a 20 77 72 69 74 74 65 6e 20 77 69 6c 6c  .** written will
25b10 20 62 65 20 6e 2d 31 20 63 68 61 72 61 63 74 65   be n-1 characte
25b20 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  rs..**.** ^The s
25b30 71 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e 74 66  qlite3_vsnprintf
25b40 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 61 20  () routine is a 
25b50 76 61 72 61 72 67 73 20 76 65 72 73 69 6f 6e 20  varargs version 
25b60 6f 66 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69  of sqlite3_snpri
25b70 6e 74 66 28 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ntf()..**.** The
25b80 73 65 20 72 6f 75 74 69 6e 65 73 20 61 6c 6c 20  se routines all 
25b90 69 6d 70 6c 65 6d 65 6e 74 20 73 6f 6d 65 20 61  implement some a
25ba0 64 64 69 74 69 6f 6e 61 6c 20 66 6f 72 6d 61 74  dditional format
25bb0 74 69 6e 67 0a 2a 2a 20 6f 70 74 69 6f 6e 73 20  ting.** options 
25bc0 74 68 61 74 20 61 72 65 20 75 73 65 66 75 6c 20  that are useful 
25bd0 66 6f 72 20 63 6f 6e 73 74 72 75 63 74 69 6e 67  for constructing
25be0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
25bf0 0a 2a 2a 20 41 6c 6c 20 6f 66 20 74 68 65 20 75  .** All of the u
25c00 73 75 61 6c 20 70 72 69 6e 74 66 28 29 20 66 6f  sual printf() fo
25c10 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73  rmatting options
25c20 20 61 70 70 6c 79 2e 20 20 49 6e 20 61 64 64 69   apply.  In addi
25c30 74 69 6f 6e 2c 20 74 68 65 72 65 0a 2a 2a 20 69  tion, there.** i
25c40 73 20 61 72 65 20 22 25 71 22 2c 20 22 25 51 22  s are "%q", "%Q"
25c50 2c 20 22 25 77 22 20 61 6e 64 20 22 25 7a 22 20  , "%w" and "%z" 
25c60 6f 70 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e  options..**.** ^
25c70 28 54 68 65 20 25 71 20 6f 70 74 69 6f 6e 20 77  (The %q option w
25c80 6f 72 6b 73 20 6c 69 6b 65 20 25 73 20 69 6e 20  orks like %s in 
25c90 74 68 61 74 20 69 74 20 73 75 62 73 74 69 74 75  that it substitu
25ca0 74 65 73 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e  tes a nul-termin
25cb0 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 66  ated.** string f
25cc0 72 6f 6d 20 74 68 65 20 61 72 67 75 6d 65 6e 74  rom the argument
25cd0 20 6c 69 73 74 2e 20 20 42 75 74 20 25 71 20 61   list.  But %q a
25ce0 6c 73 6f 20 64 6f 75 62 6c 65 73 20 65 76 65 72  lso doubles ever
25cf0 79 20 27 5c 27 27 20 63 68 61 72 61 63 74 65 72  y '\'' character
25d00 2e 0a 2a 2a 20 25 71 20 69 73 20 64 65 73 69 67  ..** %q is desig
25d10 6e 65 64 20 66 6f 72 20 75 73 65 20 69 6e 73 69  ned for use insi
25d20 64 65 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65  de a string lite
25d30 72 61 6c 2e 29 5e 20 20 42 79 20 64 6f 75 62 6c  ral.)^  By doubl
25d40 69 6e 67 20 65 61 63 68 20 27 5c 27 27 0a 2a 2a  ing each '\''.**
25d50 20 63 68 61 72 61 63 74 65 72 20 69 74 20 65 73   character it es
25d60 63 61 70 65 73 20 74 68 61 74 20 63 68 61 72 61  capes that chara
25d70 63 74 65 72 20 61 6e 64 20 61 6c 6c 6f 77 73 20  cter and allows 
25d80 69 74 20 74 6f 20 62 65 20 69 6e 73 65 72 74 65  it to be inserte
25d90 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20 73 74  d into.** the st
25da0 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 46 6f 72 20  ring..**.** For 
25db0 65 78 61 6d 70 6c 65 2c 20 61 73 73 75 6d 65 20  example, assume 
25dc0 74 68 65 20 73 74 72 69 6e 67 20 76 61 72 69 61  the string varia
25dd0 62 6c 65 20 7a 54 65 78 74 20 63 6f 6e 74 61 69  ble zText contai
25de0 6e 73 20 74 65 78 74 20 61 73 20 66 6f 6c 6c 6f  ns text as follo
25df0 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b  ws:.**.** <block
25e00 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20  quote><pre>.**  
25e10 63 68 61 72 20 2a 7a 54 65 78 74 20 3d 20 22 49  char *zText = "I
25e20 74 27 73 20 61 20 68 61 70 70 79 20 64 61 79 21  t's a happy day!
25e30 22 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c  ";.** </pre></bl
25e40 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20  ockquote>.**.** 
25e50 4f 6e 65 20 63 61 6e 20 75 73 65 20 74 68 69 73  One can use this
25e60 20 74 65 78 74 20 69 6e 20 61 6e 20 53 51 4c 20   text in an SQL 
25e70 73 74 61 74 65 6d 65 6e 74 20 61 73 20 66 6f 6c  statement as fol
25e80 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f  lows:.**.** <blo
25e90 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a  ckquote><pre>.**
25ea0 20 20 63 68 61 72 20 2a 7a 53 51 4c 20 3d 20 73    char *zSQL = s
25eb0 71 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 22  qlite3_mprintf("
25ec0 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c  INSERT INTO tabl
25ed0 65 20 56 41 4c 55 45 53 28 27 25 71 27 29 22 2c  e VALUES('%q')",
25ee0 20 7a 54 65 78 74 29 3b 0a 2a 2a 20 20 73 71 6c   zText);.**  sql
25ef0 69 74 65 33 5f 65 78 65 63 28 64 62 2c 20 7a 53  ite3_exec(db, zS
25f00 51 4c 2c 20 30 2c 20 30 2c 20 30 29 3b 0a 2a 2a  QL, 0, 0, 0);.**
25f10 20 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 7a    sqlite3_free(z
25f20 53 51 4c 29 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c  SQL);.** </pre><
25f30 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a  /blockquote>.**.
25f40 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65 20 25  ** Because the %
25f50 71 20 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20  q format string 
25f60 69 73 20 75 73 65 64 2c 20 74 68 65 20 27 5c 27  is used, the '\'
25f70 27 20 63 68 61 72 61 63 74 65 72 20 69 6e 20 7a  ' character in z
25f80 54 65 78 74 0a 2a 2a 20 69 73 20 65 73 63 61 70  Text.** is escap
25f90 65 64 20 61 6e 64 20 74 68 65 20 53 51 4c 20 67  ed and the SQL g
25fa0 65 6e 65 72 61 74 65 64 20 69 73 20 61 73 20 66  enerated is as f
25fb0 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62  ollows:.**.** <b
25fc0 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
25fd0 2a 2a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  **  INSERT INTO 
25fe0 74 61 62 6c 65 31 20 56 41 4c 55 45 53 28 27 49  table1 VALUES('I
25ff0 74 27 27 73 20 61 20 68 61 70 70 79 20 64 61 79  t''s a happy day
26000 21 27 29 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62  !').** </pre></b
26010 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a  lockquote>.**.**
26020 20 54 68 69 73 20 69 73 20 63 6f 72 72 65 63 74   This is correct
26030 2e 20 20 48 61 64 20 77 65 20 75 73 65 64 20 25  .  Had we used %
26040 73 20 69 6e 73 74 65 61 64 20 6f 66 20 25 71 2c  s instead of %q,
26050 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 53   the generated S
26060 51 4c 0a 2a 2a 20 77 6f 75 6c 64 20 68 61 76 65  QL.** would have
26070 20 6c 6f 6f 6b 65 64 20 6c 69 6b 65 20 74 68 69   looked like thi
26080 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71  s:.**.** <blockq
26090 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 49  uote><pre>.**  I
260a0 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 6c 65  NSERT INTO table
260b0 31 20 56 41 4c 55 45 53 28 27 49 74 27 73 20 61  1 VALUES('It's a
260c0 20 68 61 70 70 79 20 64 61 79 21 27 29 3b 0a 2a   happy day!');.*
260d0 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  * </pre></blockq
260e0 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  uote>.**.** This
260f0 20 73 65 63 6f 6e 64 20 65 78 61 6d 70 6c 65 20   second example 
26100 69 73 20 61 6e 20 53 51 4c 20 73 79 6e 74 61 78  is an SQL syntax
26110 20 65 72 72 6f 72 2e 20 20 41 73 20 61 20 67 65   error.  As a ge
26120 6e 65 72 61 6c 20 72 75 6c 65 20 79 6f 75 20 73  neral rule you s
26130 68 6f 75 6c 64 0a 2a 2a 20 61 6c 77 61 79 73 20  hould.** always 
26140 75 73 65 20 25 71 20 69 6e 73 74 65 61 64 20 6f  use %q instead o
26150 66 20 25 73 20 77 68 65 6e 20 69 6e 73 65 72 74  f %s when insert
26160 69 6e 67 20 74 65 78 74 20 69 6e 74 6f 20 61 20  ing text into a 
26170 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2e 0a  string literal..
26180 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 25 51 20 6f  **.** ^(The %Q o
26190 70 74 69 6f 6e 20 77 6f 72 6b 73 20 6c 69 6b 65  ption works like
261a0 20 25 71 20 65 78 63 65 70 74 20 69 74 20 61 6c   %q except it al
261b0 73 6f 20 61 64 64 73 20 73 69 6e 67 6c 65 20 71  so adds single q
261c0 75 6f 74 65 73 20 61 72 6f 75 6e 64 0a 2a 2a 20  uotes around.** 
261d0 74 68 65 20 6f 75 74 73 69 64 65 20 6f 66 20 74  the outside of t
261e0 68 65 20 74 6f 74 61 6c 20 73 74 72 69 6e 67 2e  he total string.
261f0 20 20 41 64 64 69 74 69 6f 6e 61 6c 6c 79 2c 20    Additionally, 
26200 69 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72  if the parameter
26210 20 69 6e 20 74 68 65 0a 2a 2a 20 61 72 67 75 6d   in the.** argum
26220 65 6e 74 20 6c 69 73 74 20 69 73 20 61 20 4e 55  ent list is a NU
26230 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 25 51 20 73  LL pointer, %Q s
26240 75 62 73 74 69 74 75 74 65 73 20 74 68 65 20 74  ubstitutes the t
26250 65 78 74 20 22 4e 55 4c 4c 22 20 28 77 69 74 68  ext "NULL" (with
26260 6f 75 74 0a 2a 2a 20 73 69 6e 67 6c 65 20 71 75  out.** single qu
26270 6f 74 65 73 29 2e 29 5e 20 20 53 6f 2c 20 66 6f  otes).)^  So, fo
26280 72 20 65 78 61 6d 70 6c 65 2c 20 6f 6e 65 20 63  r example, one c
26290 6f 75 6c 64 20 73 61 79 3a 0a 2a 2a 0a 2a 2a 20  ould say:.**.** 
262a0 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65  <blockquote><pre
262b0 3e 0a 2a 2a 20 20 63 68 61 72 20 2a 7a 53 51 4c  >.**  char *zSQL
262c0 20 3d 20 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e   = sqlite3_mprin
262d0 74 66 28 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  tf("INSERT INTO 
262e0 74 61 62 6c 65 20 56 41 4c 55 45 53 28 25 51 29  table VALUES(%Q)
262f0 22 2c 20 7a 54 65 78 74 29 3b 0a 2a 2a 20 20 73  ", zText);.**  s
26300 71 6c 69 74 65 33 5f 65 78 65 63 28 64 62 2c 20  qlite3_exec(db, 
26310 7a 53 51 4c 2c 20 30 2c 20 30 2c 20 30 29 3b 0a  zSQL, 0, 0, 0);.
26320 2a 2a 20 20 73 71 6c 69 74 65 33 5f 66 72 65 65  **  sqlite3_free
26330 28 7a 53 51 4c 29 3b 0a 2a 2a 20 3c 2f 70 72 65  (zSQL);.** </pre
26340 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a  ></blockquote>.*
26350 2a 0a 2a 2a 20 54 68 65 20 63 6f 64 65 20 61 62  *.** The code ab
26360 6f 76 65 20 77 69 6c 6c 20 72 65 6e 64 65 72 20  ove will render 
26370 61 20 63 6f 72 72 65 63 74 20 53 51 4c 20 73 74  a correct SQL st
26380 61 74 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 7a  atement in the z
26390 53 51 4c 0a 2a 2a 20 76 61 72 69 61 62 6c 65 20  SQL.** variable 
263a0 65 76 65 6e 20 69 66 20 74 68 65 20 7a 54 65 78  even if the zTex
263b0 74 20 76 61 72 69 61 62 6c 65 20 69 73 20 61 20  t variable is a 
263c0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a  NULL pointer..**
263d0 0a 2a 2a 20 5e 28 54 68 65 20 22 25 77 22 20 66  .** ^(The "%w" f
263e0 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e  ormatting option
263f0 20 69 73 20 6c 69 6b 65 20 22 25 71 22 20 65 78   is like "%q" ex
26400 63 65 70 74 20 74 68 61 74 20 69 74 20 65 78 70  cept that it exp
26410 65 63 74 73 20 74 6f 0a 2a 2a 20 62 65 20 63 6f  ects to.** be co
26420 6e 74 61 69 6e 65 64 20 77 69 74 68 69 6e 20 64  ntained within d
26430 6f 75 62 6c 65 2d 71 75 6f 74 65 73 20 69 6e 73  ouble-quotes ins
26440 74 65 61 64 20 6f 66 20 73 69 6e 67 6c 65 20 71  tead of single q
26450 75 6f 74 65 73 2c 20 61 6e 64 20 69 74 0a 2a 2a  uotes, and it.**
26460 20 65 73 63 61 70 65 73 20 74 68 65 20 64 6f 75   escapes the dou
26470 62 6c 65 2d 71 75 6f 74 65 20 63 68 61 72 61 63  ble-quote charac
26480 74 65 72 20 69 6e 73 74 65 61 64 20 6f 66 20 74  ter instead of t
26490 68 65 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65 0a  he single-quote.
264a0 2a 2a 20 63 68 61 72 61 63 74 65 72 2e 29 5e 20  ** character.)^ 
264b0 20 54 68 65 20 22 25 77 22 20 66 6f 72 6d 61 74   The "%w" format
264c0 74 69 6e 67 20 6f 70 74 69 6f 6e 20 69 73 20 69  ting option is i
264d0 6e 74 65 6e 64 65 64 20 66 6f 72 20 73 61 66 65  ntended for safe
264e0 6c 79 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a 20  ly inserting.** 
264f0 74 61 62 6c 65 20 61 6e 64 20 63 6f 6c 75 6d 6e  table and column
26500 20 6e 61 6d 65 73 20 69 6e 74 6f 20 61 20 63 6f   names into a co
26510 6e 73 74 72 75 63 74 65 64 20 53 51 4c 20 73 74  nstructed SQL st
26520 61 74 65 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5e  atement..**.** ^
26530 28 54 68 65 20 22 25 7a 22 20 66 6f 72 6d 61 74  (The "%z" format
26540 74 69 6e 67 20 6f 70 74 69 6f 6e 20 77 6f 72 6b  ting option work
26550 73 20 6c 69 6b 65 20 22 25 73 22 20 62 75 74 20  s like "%s" but 
26560 77 69 74 68 20 74 68 65 0a 2a 2a 20 61 64 64 69  with the.** addi
26570 74 69 6f 6e 20 74 68 61 74 20 61 66 74 65 72 20  tion that after 
26580 74 68 65 20 73 74 72 69 6e 67 20 68 61 73 20 62  the string has b
26590 65 65 6e 20 72 65 61 64 20 61 6e 64 20 63 6f 70  een read and cop
265a0 69 65 64 20 69 6e 74 6f 0a 2a 2a 20 74 68 65 20  ied into.** the 
265b0 72 65 73 75 6c 74 2c 20 5b 73 71 6c 69 74 65 33  result, [sqlite3
265c0 5f 66 72 65 65 28 29 5d 20 69 73 20 63 61 6c 6c  _free()] is call
265d0 65 64 20 6f 6e 20 74 68 65 20 69 6e 70 75 74 20  ed on the input 
265e0 73 74 72 69 6e 67 2e 29 5e 0a 2a 2f 0a 53 51 4c  string.)^.*/.SQL
265f0 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71  ITE_API char *sq
26600 6c 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63 6f  lite3_mprintf(co
26610 6e 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b 0a  nst char*,...);.
26620 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20  SQLITE_API char 
26630 2a 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e 74  *sqlite3_vmprint
26640 66 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76  f(const char*, v
26650 61 5f 6c 69 73 74 29 3b 0a 53 51 4c 49 54 45 5f  a_list);.SQLITE_
26660 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65  API char *sqlite
26670 33 5f 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63  3_snprintf(int,c
26680 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  har*,const char*
26690 2c 20 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41  , ...);.SQLITE_A
266a0 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  PI char *sqlite3
266b0 5f 76 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63  _vsnprintf(int,c
266c0 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  har*,const char*
266d0 2c 20 76 61 5f 6c 69 73 74 29 3b 0a 0a 2f 2a 0a  , va_list);../*.
266e0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d  ** CAPI3REF: Mem
266f0 6f 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 53  ory Allocation S
26700 75 62 73 79 73 74 65 6d 0a 2a 2a 0a 2a 2a 20 54  ubsystem.**.** T
26710 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 75  he SQLite core u
26720 73 65 73 20 74 68 65 73 65 20 74 68 72 65 65 20  ses these three 
26730 72 6f 75 74 69 6e 65 73 20 66 6f 72 20 61 6c 6c  routines for all
26740 20 6f 66 20 69 74 73 20 6f 77 6e 0a 2a 2a 20 69   of its own.** i
26750 6e 74 65 72 6e 61 6c 20 6d 65 6d 6f 72 79 20 61  nternal memory a
26760 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e  llocation needs.
26770 20 22 43 6f 72 65 22 20 69 6e 20 74 68 65 20 70   "Core" in the p
26780 72 65 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65  revious sentence
26790 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63  .** does not inc
267a0 6c 75 64 65 20 6f 70 65 72 61 74 69 6e 67 2d 73  lude operating-s
267b0 79 73 74 65 6d 20 73 70 65 63 69 66 69 63 20 56  ystem specific V
267c0 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
267d0 6e 2e 20 20 54 68 65 0a 2a 2a 20 57 69 6e 64 6f  n.  The.** Windo
267e0 77 73 20 56 46 53 20 75 73 65 73 20 6e 61 74 69  ws VFS uses nati
267f0 76 65 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20  ve malloc() and 
26800 66 72 65 65 28 29 20 66 6f 72 20 73 6f 6d 65 20  free() for some 
26810 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a  operations..**.*
26820 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d  * ^The sqlite3_m
26830 61 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 20  alloc() routine 
26840 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65  returns a pointe
26850 72 20 74 6f 20 61 20 62 6c 6f 63 6b 0a 2a 2a 20  r to a block.** 
26860 6f 66 20 6d 65 6d 6f 72 79 20 61 74 20 6c 65 61  of memory at lea
26870 73 74 20 4e 20 62 79 74 65 73 20 69 6e 20 6c 65  st N bytes in le
26880 6e 67 74 68 2c 20 77 68 65 72 65 20 4e 20 69 73  ngth, where N is
26890 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e 0a   the parameter..
268a0 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6d  ** ^If sqlite3_m
268b0 61 6c 6c 6f 63 28 29 20 69 73 20 75 6e 61 62 6c  alloc() is unabl
268c0 65 20 74 6f 20 6f 62 74 61 69 6e 20 73 75 66 66  e to obtain suff
268d0 69 63 69 65 6e 74 20 66 72 65 65 0a 2a 2a 20 6d  icient free.** m
268e0 65 6d 6f 72 79 2c 20 69 74 20 72 65 74 75 72 6e  emory, it return
268f0 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
26900 2e 20 20 5e 49 66 20 74 68 65 20 70 61 72 61 6d  .  ^If the param
26910 65 74 65 72 20 4e 20 74 6f 0a 2a 2a 20 73 71 6c  eter N to.** sql
26920 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73  ite3_malloc() is
26930 20 7a 65 72 6f 20 6f 72 20 6e 65 67 61 74 69 76   zero or negativ
26940 65 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 6d  e then sqlite3_m
26950 61 6c 6c 6f 63 28 29 20 72 65 74 75 72 6e 73 0a  alloc() returns.
26960 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ** a NULL pointe
26970 72 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  r..**.** ^The sq
26980 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 4e  lite3_malloc64(N
26990 29 20 72 6f 75 74 69 6e 65 20 77 6f 72 6b 73 20  ) routine works 
269a0 6a 75 73 74 20 6c 69 6b 65 0a 2a 2a 20 73 71 6c  just like.** sql
269b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 20 65  ite3_malloc(N) e
269c0 78 63 65 70 74 20 74 68 61 74 20 4e 20 69 73 20  xcept that N is 
269d0 61 6e 20 75 6e 73 69 67 6e 65 64 20 36 34 2d 62  an unsigned 64-b
269e0 69 74 20 69 6e 74 65 67 65 72 20 69 6e 73 74 65  it integer inste
269f0 61 64 0a 2a 2a 20 6f 66 20 61 20 73 69 67 6e 65  ad.** of a signe
26a00 64 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 72  d 32-bit integer
26a10 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67  ..**.** ^Calling
26a20 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
26a30 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20 70  with a pointer p
26a40 72 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e  reviously return
26a50 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33  ed.** by sqlite3
26a60 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c  _malloc() or sql
26a70 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 20 72  ite3_realloc() r
26a80 65 6c 65 61 73 65 73 20 74 68 61 74 20 6d 65 6d  eleases that mem
26a90 6f 72 79 20 73 6f 0a 2a 2a 20 74 68 61 74 20 69  ory so.** that i
26aa0 74 20 6d 69 67 68 74 20 62 65 20 72 65 75 73 65  t might be reuse
26ab0 64 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33  d.  ^The sqlite3
26ac0 5f 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 20  _free() routine 
26ad0 69 73 0a 2a 2a 20 61 20 6e 6f 2d 6f 70 20 69 66  is.** a no-op if
26ae0 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20   is called with 
26af0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20  a NULL pointer. 
26b00 20 50 61 73 73 69 6e 67 20 61 20 4e 55 4c 4c 20   Passing a NULL 
26b10 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 73 71  pointer.** to sq
26b20 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 73 20  lite3_free() is 
26b30 68 61 72 6d 6c 65 73 73 2e 20 20 41 66 74 65 72  harmless.  After
26b40 20 62 65 69 6e 67 20 66 72 65 65 64 2c 20 6d 65   being freed, me
26b50 6d 6f 72 79 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e  mory.** should n
26b60 65 69 74 68 65 72 20 62 65 20 72 65 61 64 20 6e  either be read n
26b70 6f 72 20 77 72 69 74 74 65 6e 2e 20 20 45 76 65  or written.  Eve
26b80 6e 20 72 65 61 64 69 6e 67 20 70 72 65 76 69 6f  n reading previo
26b90 75 73 6c 79 20 66 72 65 65 64 0a 2a 2a 20 6d 65  usly freed.** me
26ba0 6d 6f 72 79 20 6d 69 67 68 74 20 72 65 73 75 6c  mory might resul
26bb0 74 20 69 6e 20 61 20 73 65 67 6d 65 6e 74 61 74  t in a segmentat
26bc0 69 6f 6e 20 66 61 75 6c 74 20 6f 72 20 6f 74 68  ion fault or oth
26bd0 65 72 20 73 65 76 65 72 65 20 65 72 72 6f 72 2e  er severe error.
26be0 0a 2a 2a 20 4d 65 6d 6f 72 79 20 63 6f 72 72 75  .** Memory corru
26bf0 70 74 69 6f 6e 2c 20 61 20 73 65 67 6d 65 6e 74  ption, a segment
26c00 61 74 69 6f 6e 20 66 61 75 6c 74 2c 20 6f 72 20  ation fault, or 
26c10 6f 74 68 65 72 20 73 65 76 65 72 65 20 65 72 72  other severe err
26c20 6f 72 0a 2a 2a 20 6d 69 67 68 74 20 72 65 73 75  or.** might resu
26c30 6c 74 20 69 66 20 73 71 6c 69 74 65 33 5f 66 72  lt if sqlite3_fr
26c40 65 65 28 29 20 69 73 20 63 61 6c 6c 65 64 20 77  ee() is called w
26c50 69 74 68 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70  ith a non-NULL p
26c60 6f 69 6e 74 65 72 20 74 68 61 74 0a 2a 2a 20 77  ointer that.** w
26c70 61 73 20 6e 6f 74 20 6f 62 74 61 69 6e 65 64 20  as not obtained 
26c80 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c  from sqlite3_mal
26c90 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33  loc() or sqlite3
26ca0 5f 72 65 61 6c 6c 6f 63 28 29 2e 0a 2a 2a 0a 2a  _realloc()..**.*
26cb0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 72  * ^The sqlite3_r
26cc0 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 6e 74 65  ealloc(X,N) inte
26cd0 72 66 61 63 65 20 61 74 74 65 6d 70 74 73 20 74  rface attempts t
26ce0 6f 20 72 65 73 69 7a 65 20 61 0a 2a 2a 20 70 72  o resize a.** pr
26cf0 69 6f 72 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ior memory alloc
26d00 61 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 61 74  ation X to be at
26d10 20 6c 65 61 73 74 20 4e 20 62 79 74 65 73 2e 0a   least N bytes..
26d20 2a 2a 20 5e 49 66 20 74 68 65 20 58 20 70 61 72  ** ^If the X par
26d30 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65  ameter to sqlite
26d40 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 0a 2a  3_realloc(X,N).*
26d50 2a 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  * is a NULL poin
26d60 74 65 72 20 74 68 65 6e 20 69 74 73 20 62 65 68  ter then its beh
26d70 61 76 69 6f 72 20 69 73 20 69 64 65 6e 74 69 63  avior is identic
26d80 61 6c 20 74 6f 20 63 61 6c 6c 69 6e 67 0a 2a 2a  al to calling.**
26d90 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
26da0 4e 29 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 4e  N)..** ^If the N
26db0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
26dc0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c  lite3_realloc(X,
26dd0 4e 29 20 69 73 20 7a 65 72 6f 20 6f 72 0a 2a 2a  N) is zero or.**
26de0 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e 20 74   negative then t
26df0 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 65  he behavior is e
26e00 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20  xactly the same 
26e10 61 73 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71  as calling.** sq
26e20 6c 69 74 65 33 5f 66 72 65 65 28 58 29 2e 0a 2a  lite3_free(X)..*
26e30 2a 20 5e 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  * ^sqlite3_reall
26e40 6f 63 28 58 2c 4e 29 20 72 65 74 75 72 6e 73 20  oc(X,N) returns 
26e50 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6d  a pointer to a m
26e60 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
26e70 0a 2a 2a 20 6f 66 20 61 74 20 6c 65 61 73 74 20  .** of at least 
26e80 4e 20 62 79 74 65 73 20 69 6e 20 73 69 7a 65 20  N bytes in size 
26e90 6f 72 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66  or NULL if insuf
26ea0 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 69  ficient memory i
26eb0 73 20 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 20  s available..** 
26ec0 5e 49 66 20 4d 20 69 73 20 74 68 65 20 73 69 7a  ^If M is the siz
26ed0 65 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61  e of the prior a
26ee0 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e 20  llocation, then 
26ef0 6d 69 6e 28 4e 2c 4d 29 20 62 79 74 65 73 0a 2a  min(N,M) bytes.*
26f00 2a 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61  * of the prior a
26f10 6c 6c 6f 63 61 74 69 6f 6e 20 61 72 65 20 63 6f  llocation are co
26f20 70 69 65 64 20 69 6e 74 6f 20 74 68 65 20 62 65  pied into the be
26f30 67 69 6e 6e 69 6e 67 20 6f 66 20 62 75 66 66 65  ginning of buffe
26f40 72 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79  r returned.** by
26f50 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
26f60 28 58 2c 4e 29 20 61 6e 64 20 74 68 65 20 70 72  (X,N) and the pr
26f70 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69  ior allocation i
26f80 73 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66 20  s freed..** ^If 
26f90 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
26fa0 58 2c 4e 29 20 72 65 74 75 72 6e 73 20 4e 55 4c  X,N) returns NUL
26fb0 4c 20 61 6e 64 20 4e 20 69 73 20 70 6f 73 69 74  L and N is posit
26fc0 69 76 65 2c 20 74 68 65 6e 20 74 68 65 0a 2a 2a  ive, then the.**
26fd0 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f   prior allocatio
26fe0 6e 20 69 73 20 6e 6f 74 20 66 72 65 65 64 2e 0a  n is not freed..
26ff0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
27000 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 58 2c 4e  e3_realloc64(X,N
27010 29 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f 72  ) interfaces wor
27020 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 2a  ks the same as.*
27030 2a 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  * sqlite3_reallo
27040 63 28 58 2c 4e 29 20 65 78 63 65 70 74 20 74 68  c(X,N) except th
27050 61 74 20 4e 20 69 73 20 61 20 36 34 2d 62 69 74  at N is a 64-bit
27060 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65   unsigned intege
27070 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20  r instead.** of 
27080 61 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20  a 32-bit signed 
27090 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e  integer..**.** ^
270a0 49 66 20 58 20 69 73 20 61 20 6d 65 6d 6f 72 79  If X is a memory
270b0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 72 65 76   allocation prev
270c0 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20  iously obtained 
270d0 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c  from sqlite3_mal
270e0 6c 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65  loc(),.** sqlite
270f0 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 73 71  3_malloc64(), sq
27100 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2c  lite3_realloc(),
27110 20 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c   or sqlite3_real
27120 6c 6f 63 36 34 28 29 2c 20 74 68 65 6e 0a 2a 2a  loc64(), then.**
27130 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58   sqlite3_msize(X
27140 29 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 69  ) returns the si
27150 7a 65 20 6f 66 20 74 68 61 74 20 6d 65 6d 6f 72  ze of that memor
27160 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 20  y allocation in 
27170 62 79 74 65 73 2e 0a 2a 2a 20 5e 54 68 65 20 76  bytes..** ^The v
27180 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
27190 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58   sqlite3_msize(X
271a0 29 20 6d 69 67 68 74 20 62 65 20 6c 61 72 67 65  ) might be large
271b0 72 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65  r than the numbe
271c0 72 0a 2a 2a 20 6f 66 20 62 79 74 65 73 20 72 65  r.** of bytes re
271d0 71 75 65 73 74 65 64 20 77 68 65 6e 20 58 20 77  quested when X w
271e0 61 73 20 61 6c 6c 6f 63 61 74 65 64 2e 20 20 5e  as allocated.  ^
271f0 49 66 20 58 20 69 73 20 61 20 4e 55 4c 4c 20 70  If X is a NULL p
27200 6f 69 6e 74 65 72 20 74 68 65 6e 0a 2a 2a 20 73  ointer then.** s
27210 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20  qlite3_msize(X) 
27220 72 65 74 75 72 6e 73 20 7a 65 72 6f 2e 20 20 49  returns zero.  I
27230 66 20 58 20 70 6f 69 6e 74 73 20 74 6f 20 73 6f  f X points to so
27240 6d 65 74 68 69 6e 67 20 74 68 61 74 20 69 73 20  mething that is 
27250 6e 6f 74 0a 2a 2a 20 74 68 65 20 62 65 67 69 6e  not.** the begin
27260 6e 69 6e 67 20 6f 66 20 6d 65 6d 6f 72 79 20 61  ning of memory a
27270 6c 6c 6f 63 61 74 69 6f 6e 2c 20 6f 72 20 69 66  llocation, or if
27280 20 69 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20   it points to a 
27290 66 6f 72 6d 65 72 6c 79 0a 2a 2a 20 76 61 6c 69  formerly.** vali
272a0 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
272b0 69 6f 6e 20 74 68 61 74 20 68 61 73 20 6e 6f 77  ion that has now
272c0 20 62 65 65 6e 20 66 72 65 65 64 2c 20 74 68 65   been freed, the
272d0 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 0a 2a  n the behavior.*
272e0 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 73 69  * of sqlite3_msi
272f0 7a 65 28 58 29 20 69 73 20 75 6e 64 65 66 69 6e  ze(X) is undefin
27300 65 64 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20  ed and possibly 
27310 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 5e  harmful..**.** ^
27320 54 68 65 20 6d 65 6d 6f 72 79 20 72 65 74 75 72  The memory retur
27330 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 6d  ned by sqlite3_m
27340 61 6c 6c 6f 63 28 29 2c 20 73 71 6c 69 74 65 33  alloc(), sqlite3
27350 5f 72 65 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73  _realloc(),.** s
27360 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28  qlite3_malloc64(
27370 29 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 72  ), and sqlite3_r
27380 65 61 6c 6c 6f 63 36 34 28 29 0a 2a 2a 20 69 73  ealloc64().** is
27390 20 61 6c 77 61 79 73 20 61 6c 69 67 6e 65 64 20   always aligned 
273a0 74 6f 20 61 74 20 6c 65 61 73 74 20 61 6e 20 38  to at least an 8
273b0 20 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2c 20   byte boundary, 
273c0 6f 72 20 74 6f 20 61 0a 2a 2a 20 34 20 62 79 74  or to a.** 4 byt
273d0 65 20 62 6f 75 6e 64 61 72 79 20 69 66 20 74 68  e boundary if th
273e0 65 20 5b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45  e [SQLITE_4_BYTE
273f0 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 5d  _ALIGNED_MALLOC]
27400 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a   compile-time.**
27410 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e   option is used.
27420 0a 2a 2a 0a 2a 2a 20 49 6e 20 53 51 4c 69 74 65  .**.** In SQLite
27430 20 76 65 72 73 69 6f 6e 20 33 2e 35 2e 30 20 61   version 3.5.0 a
27440 6e 64 20 33 2e 35 2e 31 2c 20 69 74 20 77 61 73  nd 3.5.1, it was
27450 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 64 65 66   possible to def
27460 69 6e 65 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54  ine.** the SQLIT
27470 45 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 5f 41 4c  E_OMIT_MEMORY_AL
27480 4c 4f 43 41 54 49 4f 4e 20 77 68 69 63 68 20 77  LOCATION which w
27490 6f 75 6c 64 20 63 61 75 73 65 20 74 68 65 20 62  ould cause the b
274a0 75 69 6c 74 2d 69 6e 0a 2a 2a 20 69 6d 70 6c 65  uilt-in.** imple
274b0 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65  mentation of the
274c0 73 65 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62  se routines to b
274d0 65 20 6f 6d 69 74 74 65 64 2e 20 20 54 68 61 74  e omitted.  That
274e0 20 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69   capability.** i
274f0 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 72 6f 76  s no longer prov
27500 69 64 65 64 2e 20 20 4f 6e 6c 79 20 62 75 69 6c  ided.  Only buil
27510 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  t-in memory allo
27520 63 61 74 6f 72 73 20 63 61 6e 20 62 65 20 75 73  cators can be us
27530 65 64 2e 0a 2a 2a 0a 2a 2a 20 50 72 69 6f 72 20  ed..**.** Prior 
27540 74 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  to SQLite versio
27550 6e 20 33 2e 37 2e 31 30 2c 20 74 68 65 20 57 69  n 3.7.10, the Wi
27560 6e 64 6f 77 73 20 4f 53 20 69 6e 74 65 72 66 61  ndows OS interfa
27570 63 65 20 6c 61 79 65 72 20 63 61 6c 6c 65 64 0a  ce layer called.
27580 2a 2a 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61  ** the system ma
27590 6c 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28  lloc() and free(
275a0 29 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20  ) directly when 
275b0 63 6f 6e 76 65 72 74 69 6e 67 0a 2a 2a 20 66 69  converting.** fi
275c0 6c 65 6e 61 6d 65 73 20 62 65 74 77 65 65 6e 20  lenames between 
275d0 74 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69  the UTF-8 encodi
275e0 6e 67 20 75 73 65 64 20 62 79 20 53 51 4c 69 74  ng used by SQLit
275f0 65 0a 2a 2a 20 61 6e 64 20 77 68 61 74 65 76 65  e.** and whateve
27600 72 20 66 69 6c 65 6e 61 6d 65 20 65 6e 63 6f 64  r filename encod
27610 69 6e 67 20 69 73 20 75 73 65 64 20 62 79 20 74  ing is used by t
27620 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 57 69  he particular Wi
27630 6e 64 6f 77 73 0a 2a 2a 20 69 6e 73 74 61 6c 6c  ndows.** install
27640 61 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20 61  ation.  Memory a
27650 6c 6c 6f 63 61 74 69 6f 6e 20 65 72 72 6f 72 73  llocation errors
27660 20 77 65 72 65 20 64 65 74 65 63 74 65 64 2c 20   were detected, 
27670 62 75 74 0a 2a 2a 20 74 68 65 79 20 77 65 72 65  but.** they were
27680 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 20 61   reported back a
27690 73 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  s [SQLITE_CANTOP
276a0 45 4e 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54  EN] or.** [SQLIT
276b0 45 5f 49 4f 45 52 52 5d 20 72 61 74 68 65 72 20  E_IOERR] rather 
276c0 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d  than [SQLITE_NOM
276d0 45 4d 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70  EM]..**.** The p
276e0 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73  ointer arguments
276f0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65   to [sqlite3_fre
27700 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65  e()] and [sqlite
27710 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20  3_realloc()].** 
27720 6d 75 73 74 20 62 65 20 65 69 74 68 65 72 20 4e  must be either N
27730 55 4c 4c 20 6f 72 20 65 6c 73 65 20 70 6f 69 6e  ULL or else poin
27740 74 65 72 73 20 6f 62 74 61 69 6e 65 64 20 66 72  ters obtained fr
27750 6f 6d 20 61 20 70 72 69 6f 72 0a 2a 2a 20 69 6e  om a prior.** in
27760 76 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c  vocation of [sql
27770 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6f  ite3_malloc()] o
27780 72 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  r [sqlite3_reall
27790 6f 63 28 29 5d 20 74 68 61 74 20 68 61 76 65 0a  oc()] that have.
277a0 2a 2a 20 6e 6f 74 20 79 65 74 20 62 65 65 6e 20  ** not yet been 
277b0 72 65 6c 65 61 73 65 64 2e 0a 2a 2a 0a 2a 2a 20  released..**.** 
277c0 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
277d0 6d 75 73 74 20 6e 6f 74 20 72 65 61 64 20 6f 72  must not read or
277e0 20 77 72 69 74 65 20 61 6e 79 20 70 61 72 74 20   write any part 
277f0 6f 66 0a 2a 2a 20 61 20 62 6c 6f 63 6b 20 6f 66  of.** a block of
27800 20 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74   memory after it
27810 20 68 61 73 20 62 65 65 6e 20 72 65 6c 65 61 73   has been releas
27820 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c  ed using.** [sql
27830 69 74 65 33 5f 66 72 65 65 28 29 5d 20 6f 72 20  ite3_free()] or 
27840 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63  [sqlite3_realloc
27850 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ()]..*/.SQLITE_A
27860 50 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  PI void *sqlite3
27870 5f 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 53 51  _malloc(int);.SQ
27880 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73  LITE_API void *s
27890 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28  qlite3_malloc64(
278a0 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 3b  sqlite3_uint64);
278b0 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
278c0 20 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   *sqlite3_reallo
278d0 63 28 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a 53  c(void*, int);.S
278e0 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a  QLITE_API void *
278f0 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36  sqlite3_realloc6
27900 34 28 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65 33  4(void*, sqlite3
27910 5f 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54 45  _uint64);.SQLITE
27920 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65  _API void sqlite
27930 33 5f 66 72 65 65 28 76 6f 69 64 2a 29 3b 0a 53  3_free(void*);.S
27940 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65  QLITE_API sqlite
27950 33 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65 33  3_uint64 sqlite3
27960 5f 6d 73 69 7a 65 28 76 6f 69 64 2a 29 3b 0a 0a  _msize(void*);..
27970 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
27980 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 6f 72  Memory Allocator
27990 20 53 74 61 74 69 73 74 69 63 73 0a 2a 2a 0a 2a   Statistics.**.*
279a0 2a 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65  * SQLite provide
279b0 73 20 74 68 65 73 65 20 74 77 6f 20 69 6e 74 65  s these two inte
279c0 72 66 61 63 65 73 20 66 6f 72 20 72 65 70 6f 72  rfaces for repor
279d0 74 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74  ting on the stat
279e0 75 73 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 73 71  us.** of the [sq
279f0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c  lite3_malloc()],
27a00 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29   [sqlite3_free()
27a10 5d 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f  ], and [sqlite3_
27a20 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 72 6f  realloc()].** ro
27a30 75 74 69 6e 65 73 2c 20 77 68 69 63 68 20 66 6f  utines, which fo
27a40 72 6d 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  rm the built-in 
27a50 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
27a60 6e 20 73 75 62 73 79 73 74 65 6d 2e 0a 2a 2a 0a  n subsystem..**.
27a70 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33  ** ^The [sqlite3
27a80 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20  _memory_used()] 
27a90 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
27aa0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
27ab0 74 65 73 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79  tes.** of memory
27ac0 20 63 75 72 72 65 6e 74 6c 79 20 6f 75 74 73 74   currently outst
27ad0 61 6e 64 69 6e 67 20 28 6d 61 6c 6c 6f 63 65 64  anding (malloced
27ae0 20 62 75 74 20 6e 6f 74 20 66 72 65 65 64 29 2e   but not freed).
27af0 0a 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65  .** ^The [sqlite
27b00 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74  3_memory_highwat
27b10 65 72 28 29 5d 20 72 6f 75 74 69 6e 65 20 72 65  er()] routine re
27b20 74 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d 75  turns the maximu
27b30 6d 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 5b 73  m.** value of [s
27b40 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73  qlite3_memory_us
27b50 65 64 28 29 5d 20 73 69 6e 63 65 20 74 68 65 20  ed()] since the 
27b60 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 0a  high-water mark.
27b70 2a 2a 20 77 61 73 20 6c 61 73 74 20 72 65 73 65  ** was last rese
27b80 74 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 73 20  t.  ^The values 
27b90 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c  returned by [sql
27ba0 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64  ite3_memory_used
27bb0 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69  ()] and.** [sqli
27bc0 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
27bd0 61 74 65 72 28 29 5d 20 69 6e 63 6c 75 64 65 20  ater()] include 
27be0 61 6e 79 20 6f 76 65 72 68 65 61 64 0a 2a 2a 20  any overhead.** 
27bf0 61 64 64 65 64 20 62 79 20 53 51 4c 69 74 65 20  added by SQLite 
27c00 69 6e 20 69 74 73 20 69 6d 70 6c 65 6d 65 6e 74  in its implement
27c10 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65  ation of [sqlite
27c20 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 0a 2a 2a 20  3_malloc()],.** 
27c30 62 75 74 20 6e 6f 74 20 6f 76 65 72 68 65 61 64  but not overhead
27c40 20 61 64 64 65 64 20 62 79 20 74 68 65 20 61 6e   added by the an
27c50 79 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 79 73  y underlying sys
27c60 74 65 6d 20 6c 69 62 72 61 72 79 0a 2a 2a 20 72  tem library.** r
27c70 6f 75 74 69 6e 65 73 20 74 68 61 74 20 5b 73 71  outines that [sq
27c80 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
27c90 6d 61 79 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20  may call..**.** 
27ca0 5e 54 68 65 20 6d 65 6d 6f 72 79 20 68 69 67 68  ^The memory high
27cb0 2d 77 61 74 65 72 20 6d 61 72 6b 20 69 73 20 72  -water mark is r
27cc0 65 73 65 74 20 74 6f 20 74 68 65 20 63 75 72 72  eset to the curr
27cd0 65 6e 74 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20  ent value of.** 
27ce0 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
27cf0 75 73 65 64 28 29 5d 20 69 66 20 61 6e 64 20 6f  used()] if and o
27d00 6e 6c 79 20 69 66 20 74 68 65 20 70 61 72 61 6d  nly if the param
27d10 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  eter to.** [sqli
27d20 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
27d30 61 74 65 72 28 29 5d 20 69 73 20 74 72 75 65 2e  ater()] is true.
27d40 20 20 5e 54 68 65 20 76 61 6c 75 65 20 72 65 74    ^The value ret
27d50 75 72 6e 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c  urned.** by [sql
27d60 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68  ite3_memory_high
27d70 77 61 74 65 72 28 31 29 5d 20 69 73 20 74 68 65  water(1)] is the
27d80 20 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b   high-water mark
27d90 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 74 68 65  .** prior to the
27da0 20 72 65 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49 54   reset..*/.SQLIT
27db0 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e  E_API sqlite3_in
27dc0 74 36 34 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  t64 sqlite3_memo
27dd0 72 79 5f 75 73 65 64 28 76 6f 69 64 29 3b 0a 53  ry_used(void);.S
27de0 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65  QLITE_API sqlite
27df0 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  3_int64 sqlite3_
27e00 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
27e10 28 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b  (int resetFlag);
27e20 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
27e30 3a 20 50 73 65 75 64 6f 2d 52 61 6e 64 6f 6d 20  : Pseudo-Random 
27e40 4e 75 6d 62 65 72 20 47 65 6e 65 72 61 74 6f 72  Number Generator
27e50 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 63 6f  .**.** SQLite co
27e60 6e 74 61 69 6e 73 20 61 20 68 69 67 68 2d 71 75  ntains a high-qu
27e70 61 6c 69 74 79 20 70 73 65 75 64 6f 2d 72 61 6e  ality pseudo-ran
27e80 64 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72  dom number gener
27e90 61 74 6f 72 20 28 50 52 4e 47 29 20 75 73 65 64  ator (PRNG) used
27ea0 20 74 6f 0a 2a 2a 20 73 65 6c 65 63 74 20 72 61   to.** select ra
27eb0 6e 64 6f 6d 20 5b 52 4f 57 49 44 20 7c 20 52 4f  ndom [ROWID | RO
27ec0 57 49 44 73 5d 20 77 68 65 6e 20 69 6e 73 65 72  WIDs] when inser
27ed0 74 69 6e 67 20 6e 65 77 20 72 65 63 6f 72 64 73  ting new records
27ee0 20 69 6e 74 6f 20 61 20 74 61 62 6c 65 20 74 68   into a table th
27ef0 61 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 75 73  at.** already us
27f00 65 73 20 74 68 65 20 6c 61 72 67 65 73 74 20 70  es the largest p
27f10 6f 73 73 69 62 6c 65 20 5b 52 4f 57 49 44 5d 2e  ossible [ROWID].
27f20 20 20 54 68 65 20 50 52 4e 47 20 69 73 20 61 6c    The PRNG is al
27f30 73 6f 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74  so used for.** t
27f40 68 65 20 62 75 69 6c 64 2d 69 6e 20 72 61 6e 64  he build-in rand
27f50 6f 6d 28 29 20 61 6e 64 20 72 61 6e 64 6f 6d 62  om() and randomb
27f60 6c 6f 62 28 29 20 53 51 4c 20 66 75 6e 63 74 69  lob() SQL functi
27f70 6f 6e 73 2e 20 20 54 68 69 73 20 69 6e 74 65 72  ons.  This inter
27f80 66 61 63 65 20 61 6c 6c 6f 77 73 0a 2a 2a 20 61  face allows.** a
27f90 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 61  pplications to a
27fa0 63 63 65 73 73 20 74 68 65 20 73 61 6d 65 20 50  ccess the same P
27fb0 52 4e 47 20 66 6f 72 20 6f 74 68 65 72 20 70 75  RNG for other pu
27fc0 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41  rposes..**.** ^A
27fd0 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72 6f   call to this ro
27fe0 75 74 69 6e 65 20 73 74 6f 72 65 73 20 4e 20 62  utine stores N b
27ff0 79 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65  ytes of randomne
28000 73 73 20 69 6e 74 6f 20 62 75 66 66 65 72 20 50  ss into buffer P
28010 2e 0a 2a 2a 20 5e 54 68 65 20 50 20 70 61 72 61  ..** ^The P para
28020 6d 65 74 65 72 20 63 61 6e 20 62 65 20 61 20 4e  meter can be a N
28030 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a  ULL pointer..**.
28040 2a 2a 20 5e 49 66 20 74 68 69 73 20 72 6f 75 74  ** ^If this rout
28050 69 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e  ine has not been
28060 20 70 72 65 76 69 6f 75 73 6c 79 20 63 61 6c 6c   previously call
28070 65 64 20 6f 72 20 69 66 20 74 68 65 20 70 72 65  ed or if the pre
28080 76 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c 20 68 61  vious.** call ha
28090 64 20 4e 20 6c 65 73 73 20 74 68 61 6e 20 6f 6e  d N less than on
280a0 65 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  e or a NULL poin
280b0 74 65 72 20 66 6f 72 20 50 2c 20 74 68 65 6e 20  ter for P, then 
280c0 74 68 65 20 50 52 4e 47 20 69 73 0a 2a 2a 20 73  the PRNG is.** s
280d0 65 65 64 65 64 20 75 73 69 6e 67 20 72 61 6e 64  eeded using rand
280e0 6f 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 20  omness obtained 
280f0 66 72 6f 6d 20 74 68 65 20 78 52 61 6e 64 6f 6d  from the xRandom
28100 6e 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 0a 2a  ness method of.*
28110 2a 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 73  * the default [s
28120 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65  qlite3_vfs] obje
28130 63 74 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 70  ct..** ^If the p
28140 72 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20  revious call to 
28150 74 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61 64  this routine had
28160 20 61 6e 20 4e 20 6f 66 20 31 20 6f 72 20 6d 6f   an N of 1 or mo
28170 72 65 20 61 6e 64 20 61 0a 2a 2a 20 6e 6f 6e 2d  re and a.** non-
28180 4e 55 4c 4c 20 50 20 74 68 65 6e 20 74 68 65 20  NULL P then the 
28190 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6e 65 73  pseudo-randomnes
281a0 73 20 69 73 20 67 65 6e 65 72 61 74 65 64 0a 2a  s is generated.*
281b0 2a 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64  * internally and
281c0 20 77 69 74 68 6f 75 74 20 72 65 63 6f 75 72 73   without recours
281d0 65 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65  e to the [sqlite
281e0 33 5f 76 66 73 5d 20 78 52 61 6e 64 6f 6d 6e 65  3_vfs] xRandomne
281f0 73 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e 0a 2a 2f  ss.** method..*/
28200 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64  .SQLITE_API void
28210 20 73 71 6c 69 74 65 33 5f 72 61 6e 64 6f 6d 6e   sqlite3_randomn
28220 65 73 73 28 69 6e 74 20 4e 2c 20 76 6f 69 64 20  ess(int N, void 
28230 2a 50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  *P);../*.** CAPI
28240 33 52 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54 69  3REF: Compile-Ti
28250 6d 65 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e  me Authorization
28260 20 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d 45   Callbacks.** ME
28270 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
28280 20 4b 45 59 57 4f 52 44 53 3a 20 7b 61 75 74 68   KEYWORDS: {auth
28290 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 7d  orizer callback}
282a0 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75  .**.** ^This rou
282b0 74 69 6e 65 20 72 65 67 69 73 74 65 72 73 20 61  tine registers a
282c0 6e 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  n authorizer cal
282d0 6c 62 61 63 6b 20 77 69 74 68 20 61 20 70 61 72  lback with a par
282e0 74 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74 61  ticular.** [data
282f0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
28300 2c 20 73 75 70 70 6c 69 65 64 20 69 6e 20 74 68  , supplied in th
28310 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
28320 2e 0a 2a 2a 20 5e 54 68 65 20 61 75 74 68 6f 72  ..** ^The author
28330 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73  izer callback is
28340 20 69 6e 76 6f 6b 65 64 20 61 73 20 53 51 4c 20   invoked as SQL 
28350 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 62  statements are b
28360 65 69 6e 67 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a  eing compiled.**
28370 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72 65   by [sqlite3_pre
28380 70 61 72 65 28 29 5d 20 6f 72 20 69 74 73 20 76  pare()] or its v
28390 61 72 69 61 6e 74 73 20 5b 73 71 6c 69 74 65 33  ariants [sqlite3
283a0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 0a  _prepare_v2()],.
283b0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
283c0 61 72 65 5f 76 33 28 29 5d 2c 20 5b 73 71 6c 69  are_v3()], [sqli
283d0 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d  te3_prepare16()]
283e0 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  , [sqlite3_prepa
283f0 72 65 31 36 5f 76 32 28 29 5d 2c 0a 2a 2a 20 61  re16_v2()],.** a
28400 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  nd [sqlite3_prep
28410 61 72 65 31 36 5f 76 33 28 29 5d 2e 20 20 5e 41  are16_v3()].  ^A
28420 74 20 76 61 72 69 6f 75 73 0a 2a 2a 20 70 6f 69  t various.** poi
28430 6e 74 73 20 64 75 72 69 6e 67 20 74 68 65 20 63  nts during the c
28440 6f 6d 70 69 6c 61 74 69 6f 6e 20 70 72 6f 63 65  ompilation proce
28450 73 73 2c 20 61 73 20 6c 6f 67 69 63 20 69 73 20  ss, as logic is 
28460 62 65 69 6e 67 20 63 72 65 61 74 65 64 0a 2a 2a  being created.**
28470 20 74 6f 20 70 65 72 66 6f 72 6d 20 76 61 72 69   to perform vari
28480 6f 75 73 20 61 63 74 69 6f 6e 73 2c 20 74 68 65  ous actions, the
28490 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
284a0 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
284b0 74 6f 0a 2a 2a 20 73 65 65 20 69 66 20 74 68 6f  to.** see if tho
284c0 73 65 20 61 63 74 69 6f 6e 73 20 61 72 65 20 61  se actions are a
284d0 6c 6c 6f 77 65 64 2e 20 20 5e 54 68 65 20 61 75  llowed.  ^The au
284e0 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
284f0 6b 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75  k should.** retu
28500 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 74  rn [SQLITE_OK] t
28510 6f 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74 69  o allow the acti
28520 6f 6e 2c 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f  on, [SQLITE_IGNO
28530 52 45 5d 20 74 6f 20 64 69 73 61 6c 6c 6f 77 20  RE] to disallow 
28540 74 68 65 0a 2a 2a 20 73 70 65 63 69 66 69 63 20  the.** specific 
28550 61 63 74 69 6f 6e 20 62 75 74 20 61 6c 6c 6f 77  action but allow
28560 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
28570 6e 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74  nt to continue t
28580 6f 20 62 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  o be.** compiled
28590 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e  , or [SQLITE_DEN
285a0 59 5d 20 74 6f 20 63 61 75 73 65 20 74 68 65 20  Y] to cause the 
285b0 65 6e 74 69 72 65 20 53 51 4c 20 73 74 61 74 65  entire SQL state
285c0 6d 65 6e 74 20 74 6f 20 62 65 0a 2a 2a 20 72 65  ment to be.** re
285d0 6a 65 63 74 65 64 20 77 69 74 68 20 61 6e 20 65  jected with an e
285e0 72 72 6f 72 2e 20 20 5e 49 66 20 74 68 65 20 61  rror.  ^If the a
285f0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
28600 63 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 6e  ck returns.** an
28610 79 20 76 61 6c 75 65 20 6f 74 68 65 72 20 74 68  y value other th
28620 61 6e 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52  an [SQLITE_IGNOR
28630 45 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c  E], [SQLITE_OK],
28640 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59   or [SQLITE_DENY
28650 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 5b 73  ].** then the [s
28660 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
28670 32 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65  2()] or equivale
28680 6e 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69  nt call that tri
28690 67 67 65 72 65 64 0a 2a 2a 20 74 68 65 20 61 75  ggered.** the au
286a0 74 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61  thorizer will fa
286b0 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  il with an error
286c0 20 6d 65 73 73 61 67 65 2e 0a 2a 2a 0a 2a 2a 20   message..**.** 
286d0 57 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63  When the callbac
286e0 6b 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54  k returns [SQLIT
286f0 45 5f 4f 4b 5d 2c 20 74 68 61 74 20 6d 65 61 6e  E_OK], that mean
28700 73 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a  s the operation.
28710 2a 2a 20 72 65 71 75 65 73 74 65 64 20 69 73 20  ** requested is 
28720 6f 6b 2e 20 20 5e 57 68 65 6e 20 74 68 65 20 63  ok.  ^When the c
28730 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
28740 5b 53 51 4c 49 54 45 5f 44 45 4e 59 5d 2c 20 74  [SQLITE_DENY], t
28750 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70  he.** [sqlite3_p
28760 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20  repare_v2()] or 
28770 65 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20  equivalent call 
28780 74 68 61 74 20 74 72 69 67 67 65 72 65 64 20 74  that triggered t
28790 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 72  he.** authorizer
287a0 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20   will fail with 
287b0 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
287c0 20 65 78 70 6c 61 69 6e 69 6e 67 20 74 68 61 74   explaining that
287d0 0a 2a 2a 20 61 63 63 65 73 73 20 69 73 20 64 65  .** access is de
287e0 6e 69 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54 68  nied. .**.** ^Th
287f0 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
28800 72 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69  r to the authori
28810 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
28820 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 74 68  a copy of the th
28830 69 72 64 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  ird.** parameter
28840 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
28850 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29  set_authorizer()
28860 20 69 6e 74 65 72 66 61 63 65 2e 20 5e 54 68 65   interface. ^The
28870 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
28880 72 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c 6c  r.** to the call
28890 62 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67  back is an integ
288a0 65 72 20 5b 53 51 4c 49 54 45 5f 43 4f 50 59 20  er [SQLITE_COPY 
288b0 7c 20 61 63 74 69 6f 6e 20 63 6f 64 65 5d 20 74  | action code] t
288c0 68 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a  hat specifies.**
288d0 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20   the particular 
288e0 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75 74  action to be aut
288f0 68 6f 72 69 7a 65 64 2e 20 5e 54 68 65 20 74 68  horized. ^The th
28900 69 72 64 20 74 68 72 6f 75 67 68 20 73 69 78 74  ird through sixt
28910 68 20 70 61 72 61 6d 65 74 65 72 73 0a 2a 2a 20  h parameters.** 
28920 74 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  to the callback 
28930 61 72 65 20 65 69 74 68 65 72 20 4e 55 4c 4c 20  are either NULL 
28940 70 6f 69 6e 74 65 72 73 20 6f 72 20 7a 65 72 6f  pointers or zero
28950 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69  -terminated stri
28960 6e 67 73 0a 2a 2a 20 74 68 61 74 20 63 6f 6e 74  ngs.** that cont
28970 61 69 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64  ain additional d
28980 65 74 61 69 6c 73 20 61 62 6f 75 74 20 74 68 65  etails about the
28990 20 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75   action to be au
289a0 74 68 6f 72 69 7a 65 64 2e 0a 2a 2a 20 41 70 70  thorized..** App
289b0 6c 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61  lications must a
289c0 6c 77 61 79 73 20 62 65 20 70 72 65 70 61 72 65  lways be prepare
289d0 64 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 20 61  d to encounter a
289e0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 6e   NULL pointer in
289f0 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 74   any.** of the t
28a00 68 69 72 64 20 74 68 72 6f 75 67 68 20 74 68 65  hird through the
28a10 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72   sixth parameter
28a20 73 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 69  s of the authori
28a30 7a 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 2e  zation callback.
28a40 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 61  .**.** ^If the a
28a50 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b 53  ction code is [S
28a60 51 4c 49 54 45 5f 52 45 41 44 5d 0a 2a 2a 20 61  QLITE_READ].** a
28a70 6e 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  nd the callback 
28a80 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
28a90 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74 68 65  IGNORE] then the
28aa0 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74  .** [prepared st
28ab0 61 74 65 6d 65 6e 74 5d 20 73 74 61 74 65 6d 65  atement] stateme
28ac0 6e 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65  nt is constructe
28ad0 64 20 74 6f 20 73 75 62 73 74 69 74 75 74 65 0a  d to substitute.
28ae0 2a 2a 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20  ** a NULL value 
28af0 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20  in place of the 
28b00 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 61  table column tha
28b10 74 20 77 6f 75 6c 64 20 68 61 76 65 0a 2a 2a 20  t would have.** 
28b20 62 65 65 6e 20 72 65 61 64 20 69 66 20 5b 53 51  been read if [SQ
28b30 4c 49 54 45 5f 4f 4b 5d 20 68 61 64 20 62 65 65  LITE_OK] had bee
28b40 6e 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65  n returned.  The
28b50 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d   [SQLITE_IGNORE]
28b60 0a 2a 2a 20 72 65 74 75 72 6e 20 63 61 6e 20 62  .** return can b
28b70 65 20 75 73 65 64 20 74 6f 20 64 65 6e 79 20 61  e used to deny a
28b80 6e 20 75 6e 74 72 75 73 74 65 64 20 75 73 65 72  n untrusted user
28b90 20 61 63 63 65 73 73 20 74 6f 20 69 6e 64 69 76   access to indiv
28ba0 69 64 75 61 6c 0a 2a 2a 20 63 6f 6c 75 6d 6e 73  idual.** columns
28bb0 20 6f 66 20 61 20 74 61 62 6c 65 2e 0a 2a 2a 20   of a table..** 
28bc0 5e 57 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73  ^When a table is
28bd0 20 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 61   referenced by a
28be0 20 5b 53 45 4c 45 43 54 5d 20 62 75 74 20 6e 6f   [SELECT] but no
28bf0 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 61   column values a
28c00 72 65 0a 2a 2a 20 65 78 74 72 61 63 74 65 64 20  re.** extracted 
28c10 66 72 6f 6d 20 74 68 61 74 20 74 61 62 6c 65 20  from that table 
28c20 28 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e 20  (for example in 
28c30 61 20 71 75 65 72 79 20 6c 69 6b 65 0a 2a 2a 20  a query like.** 
28c40 22 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  "SELECT count(*)
28c50 20 46 52 4f 4d 20 74 61 62 22 29 20 74 68 65 6e   FROM tab") then
28c60 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 52 45 41   the [SQLITE_REA
28c70 44 5d 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  D] authorizer ca
28c80 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 69 6e 76  llback.** is inv
28c90 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 74 68  oked once for th
28ca0 61 74 20 74 61 62 6c 65 20 77 69 74 68 20 61 20  at table with a 
28cb0 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 68 61 74  column name that
28cc0 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72   is an empty str
28cd0 69 6e 67 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ing..** ^If the 
28ce0 61 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b  action code is [
28cf0 53 51 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20 61  SQLITE_DELETE] a
28d00 6e 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  nd the callback 
28d10 72 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49  returns.** [SQLI
28d20 54 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20  TE_IGNORE] then 
28d30 74 68 65 20 5b 44 45 4c 45 54 45 5d 20 6f 70 65  the [DELETE] ope
28d40 72 61 74 69 6f 6e 20 70 72 6f 63 65 65 64 73 20  ration proceeds 
28d50 62 75 74 20 74 68 65 0a 2a 2a 20 5b 74 72 75 6e  but the.** [trun
28d60 63 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f  cate optimizatio
28d70 6e 5d 20 69 73 20 64 69 73 61 62 6c 65 64 20 61  n] is disabled a
28d80 6e 64 20 61 6c 6c 20 72 6f 77 73 20 61 72 65 20  nd all rows are 
28d90 64 65 6c 65 74 65 64 20 69 6e 64 69 76 69 64 75  deleted individu
28da0 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 61  ally..**.** An a
28db0 75 74 68 6f 72 69 7a 65 72 20 69 73 20 75 73 65  uthorizer is use
28dc0 64 20 77 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f  d when [sqlite3_
28dd0 70 72 65 70 61 72 65 20 7c 20 70 72 65 70 61 72  prepare | prepar
28de0 69 6e 67 5d 0a 2a 2a 20 53 51 4c 20 73 74 61 74  ing].** SQL stat
28df0 65 6d 65 6e 74 73 20 66 72 6f 6d 20 61 6e 20 75  ements from an u
28e00 6e 74 72 75 73 74 65 64 20 73 6f 75 72 63 65 2c  ntrusted source,
28e10 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20   to ensure that 
28e20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
28e30 74 73 0a 2a 2a 20 64 6f 20 6e 6f 74 20 74 72 79  ts.** do not try
28e40 20 74 6f 20 61 63 63 65 73 73 20 64 61 74 61 20   to access data 
28e50 74 68 65 79 20 61 72 65 20 6e 6f 74 20 61 6c 6c  they are not all
28e60 6f 77 65 64 20 74 6f 20 73 65 65 2c 20 6f 72 20  owed to see, or 
28e70 74 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74  that they do not
28e80 0a 2a 2a 20 74 72 79 20 74 6f 20 65 78 65 63 75  .** try to execu
28e90 74 65 20 6d 61 6c 69 63 69 6f 75 73 20 73 74 61  te malicious sta
28ea0 74 65 6d 65 6e 74 73 20 74 68 61 74 20 64 61 6d  tements that dam
28eb0 61 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65  age the database
28ec0 2e 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c  .  For.** exampl
28ed0 65 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  e, an applicatio
28ee0 6e 20 6d 61 79 20 61 6c 6c 6f 77 20 61 20 75 73  n may allow a us
28ef0 65 72 20 74 6f 20 65 6e 74 65 72 20 61 72 62 69  er to enter arbi
28f00 74 72 61 72 79 0a 2a 2a 20 53 51 4c 20 71 75 65  trary.** SQL que
28f10 72 69 65 73 20 66 6f 72 20 65 76 61 6c 75 61 74  ries for evaluat
28f20 69 6f 6e 20 62 79 20 61 20 64 61 74 61 62 61 73  ion by a databas
28f30 65 2e 20 20 42 75 74 20 74 68 65 20 61 70 70 6c  e.  But the appl
28f40 69 63 61 74 69 6f 6e 20 64 6f 65 73 0a 2a 2a 20  ication does.** 
28f50 6e 6f 74 20 77 61 6e 74 20 74 68 65 20 75 73 65  not want the use
28f60 72 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20  r to be able to 
28f70 6d 61 6b 65 20 61 72 62 69 74 72 61 72 79 20 63  make arbitrary c
28f80 68 61 6e 67 65 73 20 74 6f 20 74 68 65 0a 2a 2a  hanges to the.**
28f90 20 64 61 74 61 62 61 73 65 2e 20 20 41 6e 20 61   database.  An a
28fa0 75 74 68 6f 72 69 7a 65 72 20 63 6f 75 6c 64 20  uthorizer could 
28fb0 74 68 65 6e 20 62 65 20 70 75 74 20 69 6e 20 70  then be put in p
28fc0 6c 61 63 65 20 77 68 69 6c 65 20 74 68 65 0a 2a  lace while the.*
28fd0 2a 20 75 73 65 72 2d 65 6e 74 65 72 65 64 20 53  * user-entered S
28fe0 51 4c 20 69 73 20 62 65 69 6e 67 20 5b 73 71 6c  QL is being [sql
28ff0 69 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20 70  ite3_prepare | p
29000 72 65 70 61 72 65 64 5d 20 74 68 61 74 0a 2a 2a  repared] that.**
29010 20 64 69 73 61 6c 6c 6f 77 73 20 65 76 65 72 79   disallows every
29020 74 68 69 6e 67 20 65 78 63 65 70 74 20 5b 53 45  thing except [SE
29030 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73  LECT] statements
29040 2e 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74  ..**.** Applicat
29050 69 6f 6e 73 20 74 68 61 74 20 6e 65 65 64 20 74  ions that need t
29060 6f 20 70 72 6f 63 65 73 73 20 53 51 4c 20 66 72  o process SQL fr
29070 6f 6d 20 75 6e 74 72 75 73 74 65 64 20 73 6f 75  om untrusted sou
29080 72 63 65 73 0a 2a 2a 20 6d 69 67 68 74 20 61 6c  rces.** might al
29090 73 6f 20 63 6f 6e 73 69 64 65 72 20 6c 6f 77 65  so consider lowe
290a0 72 69 6e 67 20 72 65 73 6f 75 72 63 65 20 6c 69  ring resource li
290b0 6d 69 74 73 20 75 73 69 6e 67 20 5b 73 71 6c 69  mits using [sqli
290c0 74 65 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20  te3_limit()].** 
290d0 61 6e 64 20 6c 69 6d 69 74 69 6e 67 20 64 61 74  and limiting dat
290e0 61 62 61 73 65 20 73 69 7a 65 20 75 73 69 6e 67  abase size using
290f0 20 74 68 65 20 5b 6d 61 78 5f 70 61 67 65 5f 63   the [max_page_c
29100 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 0a 2a  ount] [PRAGMA].*
29110 2a 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f  * in addition to
29120 20 75 73 69 6e 67 20 61 6e 20 61 75 74 68 6f 72   using an author
29130 69 7a 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 4f 6e  izer..**.** ^(On
29140 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 75 74 68  ly a single auth
29150 6f 72 69 7a 65 72 20 63 61 6e 20 62 65 20 69 6e  orizer can be in
29160 20 70 6c 61 63 65 20 6f 6e 20 61 20 64 61 74 61   place on a data
29170 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a  base connection.
29180 2a 2a 20 61 74 20 61 20 74 69 6d 65 2e 20 20 45  ** at a time.  E
29190 61 63 68 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69  ach call to sqli
291a0 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
291b0 65 72 20 6f 76 65 72 72 69 64 65 73 20 74 68 65  er overrides the
291c0 0a 2a 2a 20 70 72 65 76 69 6f 75 73 20 63 61 6c  .** previous cal
291d0 6c 2e 29 5e 20 20 5e 44 69 73 61 62 6c 65 20 74  l.)^  ^Disable t
291e0 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 62 79  he authorizer by
291f0 20 69 6e 73 74 61 6c 6c 69 6e 67 20 61 20 4e 55   installing a NU
29200 4c 4c 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20  LL callback..** 
29210 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 69  The authorizer i
29220 73 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  s disabled by de
29230 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  fault..**.** The
29240 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
29250 62 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64 6f  back must not do
29260 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 77   anything that w
29270 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74 68  ill modify.** th
29280 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
29290 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b  ction that invok
292a0 65 64 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65  ed the authorize
292b0 72 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 4e  r callback..** N
292c0 6f 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74 65  ote that [sqlite
292d0 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
292e0 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  and [sqlite3_ste
292f0 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66 79  p()] both modify
29300 20 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62 61   their.** databa
29310 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66  se connections f
29320 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f  or the meaning o
29330 66 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74 68  f "modify" in th
29340 69 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a 2a  is paragraph..**
29350 0a 2a 2a 20 5e 57 68 65 6e 20 5b 73 71 6c 69 74  .** ^When [sqlit
29360 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
29370 20 69 73 20 75 73 65 64 20 74 6f 20 70 72 65 70   is used to prep
29380 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74 2c  are a statement,
29390 20 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65 6e   the.** statemen
293a0 74 20 6d 69 67 68 74 20 62 65 20 72 65 2d 70 72  t might be re-pr
293b0 65 70 61 72 65 64 20 64 75 72 69 6e 67 20 5b 73  epared during [s
293c0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 64  qlite3_step()] d
293d0 75 65 20 74 6f 20 61 20 0a 2a 2a 20 73 63 68 65  ue to a .** sche
293e0 6d 61 20 63 68 61 6e 67 65 2e 20 20 48 65 6e 63  ma change.  Henc
293f0 65 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  e, the applicati
29400 6f 6e 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65  on should ensure
29410 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 63 6f 72   that the.** cor
29420 72 65 63 74 20 61 75 74 68 6f 72 69 7a 65 72 20  rect authorizer 
29430 63 61 6c 6c 62 61 63 6b 20 72 65 6d 61 69 6e 73  callback remains
29440 20 69 6e 20 70 6c 61 63 65 20 64 75 72 69 6e 67   in place during
29450 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74   the [sqlite3_st
29460 65 70 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 4e 6f  ep()]..**.** ^No
29470 74 65 20 74 68 61 74 20 74 68 65 20 61 75 74 68  te that the auth
29480 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
29490 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 6c 79 20  is invoked only 
294a0 64 75 72 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74  during.** [sqlit
294b0 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f 72  e3_prepare()] or
294c0 20 69 74 73 20 76 61 72 69 61 6e 74 73 2e 20 20   its variants.  
294d0 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 69 73  Authorization is
294e0 20 6e 6f 74 0a 2a 2a 20 70 65 72 66 6f 72 6d 65   not.** performe
294f0 64 20 64 75 72 69 6e 67 20 73 74 61 74 65 6d 65  d during stateme
29500 6e 74 20 65 76 61 6c 75 61 74 69 6f 6e 20 69 6e  nt evaluation in
29510 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
29520 5d 2c 20 75 6e 6c 65 73 73 0a 2a 2a 20 61 73 20  ], unless.** as 
29530 73 74 61 74 65 64 20 69 6e 20 74 68 65 20 70 72  stated in the pr
29540 65 76 69 6f 75 73 20 70 61 72 61 67 72 61 70 68  evious paragraph
29550 2c 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  , sqlite3_step()
29560 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20 73 71 6c 69   invokes.** sqli
29570 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
29580 20 74 6f 20 72 65 70 72 65 70 61 72 65 20 61 20   to reprepare a 
29590 73 74 61 74 65 6d 65 6e 74 20 61 66 74 65 72 20  statement after 
295a0 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2e  a schema change.
295b0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
295c0 6e 74 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  nt sqlite3_set_a
295d0 75 74 68 6f 72 69 7a 65 72 28 0a 20 20 73 71 6c  uthorizer(.  sql
295e0 69 74 65 33 2a 2c 0a 20 20 69 6e 74 20 28 2a 78  ite3*,.  int (*x
295f0 41 75 74 68 29 28 76 6f 69 64 2a 2c 69 6e 74 2c  Auth)(void*,int,
29600 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73  const char*,cons
29610 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68  t char*,const ch
29620 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29  ar*,const char*)
29630 2c 0a 20 20 76 6f 69 64 20 2a 70 55 73 65 72 44  ,.  void *pUserD
29640 61 74 61 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  ata.);../*.** CA
29650 50 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a  PI3REF: Authoriz
29660 65 72 20 52 65 74 75 72 6e 20 43 6f 64 65 73 0a  er Return Codes.
29670 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74  **.** The [sqlit
29680 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
29690 72 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20 63  r | authorizer c
296a0 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
296b0 5d 20 6d 75 73 74 0a 2a 2a 20 72 65 74 75 72 6e  ] must.** return
296c0 20 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45 5f   either [SQLITE_
296d0 4f 4b 5d 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68  OK] or one of th
296e0 65 73 65 20 74 77 6f 20 63 6f 6e 73 74 61 6e 74  ese two constant
296f0 73 20 69 6e 20 6f 72 64 65 72 0a 2a 2a 20 74 6f  s in order.** to
29700 20 73 69 67 6e 61 6c 20 53 51 4c 69 74 65 20 77   signal SQLite w
29710 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
29720 65 20 61 63 74 69 6f 6e 20 69 73 20 70 65 72 6d  e action is perm
29730 69 74 74 65 64 2e 20 20 53 65 65 20 74 68 65 0a  itted.  See the.
29740 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f  ** [sqlite3_set_
29750 61 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75 74  authorizer | aut
29760 68 6f 72 69 7a 65 72 20 64 6f 63 75 6d 65 6e 74  horizer document
29770 61 74 69 6f 6e 5d 20 66 6f 72 20 61 64 64 69 74  ation] for addit
29780 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61  ional.** informa
29790 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65  tion..**.** Note
297a0 20 74 68 61 74 20 53 51 4c 49 54 45 5f 49 47 4e   that SQLITE_IGN
297b0 4f 52 45 20 69 73 20 61 6c 73 6f 20 75 73 65 64  ORE is also used
297c0 20 61 73 20 61 20 5b 63 6f 6e 66 6c 69 63 74 20   as a [conflict 
297d0 72 65 73 6f 6c 75 74 69 6f 6e 20 6d 6f 64 65 5d  resolution mode]
297e0 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72 6f  .** returned fro
297f0 6d 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  m the [sqlite3_v
29800 74 61 62 5f 6f 6e 5f 63 6f 6e 66 6c 69 63 74 28  tab_on_conflict(
29810 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f  )] interface..*/
29820 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
29830 44 45 4e 59 20 20 20 31 20 20 20 2f 2a 20 41 62  DENY   1   /* Ab
29840 6f 72 74 20 74 68 65 20 53 51 4c 20 73 74 61 74  ort the SQL stat
29850 65 6d 65 6e 74 20 77 69 74 68 20 61 6e 20 65 72  ement with an er
29860 72 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ror */.#define S
29870 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20 32 20 20  QLITE_IGNORE 2  
29880 20 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c 6f 77 20   /* Don't allow 
29890 61 63 63 65 73 73 2c 20 62 75 74 20 64 6f 6e 27  access, but don'
298a0 74 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65 72  t generate an er
298b0 72 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41  ror */../*.** CA
298c0 50 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a  PI3REF: Authoriz
298d0 65 72 20 41 63 74 69 6f 6e 20 43 6f 64 65 73 0a  er Action Codes.
298e0 2a 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74  **.** The [sqlit
298f0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
29900 72 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 72  r()] interface r
29910 65 67 69 73 74 65 72 73 20 61 20 63 61 6c 6c 62  egisters a callb
29920 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20  ack function.** 
29930 74 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 20  that is invoked 
29940 74 6f 20 61 75 74 68 6f 72 69 7a 65 20 63 65 72  to authorize cer
29950 74 61 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  tain SQL stateme
29960 6e 74 20 61 63 74 69 6f 6e 73 2e 20 20 54 68 65  nt actions.  The
29970 0a 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  .** second param
29980 65 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c  eter to the call
29990 62 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67  back is an integ
299a0 65 72 20 63 6f 64 65 20 74 68 61 74 20 73 70 65  er code that spe
299b0 63 69 66 69 65 73 0a 2a 2a 20 77 68 61 74 20 61  cifies.** what a
299c0 63 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 61  ction is being a
299d0 75 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65 73  uthorized.  Thes
299e0 65 20 61 72 65 20 74 68 65 20 69 6e 74 65 67 65  e are the intege
299f0 72 20 61 63 74 69 6f 6e 20 63 6f 64 65 73 20 74  r action codes t
29a00 68 61 74 0a 2a 2a 20 74 68 65 20 61 75 74 68 6f  hat.** the autho
29a10 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d  rizer callback m
29a20 61 79 20 62 65 20 70 61 73 73 65 64 2e 0a 2a 2a  ay be passed..**
29a30 0a 2a 2a 20 54 68 65 73 65 20 61 63 74 69 6f 6e  .** These action
29a40 20 63 6f 64 65 20 76 61 6c 75 65 73 20 73 69 67   code values sig
29a50 6e 69 66 79 20 77 68 61 74 20 6b 69 6e 64 20 6f  nify what kind o
29a60 66 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 74  f operation is t
29a70 6f 20 62 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a  o be.** authoriz
29a80 65 64 2e 20 20 54 68 65 20 33 72 64 20 61 6e 64  ed.  The 3rd and
29a90 20 34 74 68 20 70 61 72 61 6d 65 74 65 72 73 20   4th parameters 
29aa0 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61  to the authoriza
29ab0 74 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b  tion.** callback
29ac0 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62   function will b
29ad0 65 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20  e parameters or 
29ae0 4e 55 4c 4c 20 64 65 70 65 6e 64 69 6e 67 20 6f  NULL depending o
29af0 6e 20 77 68 69 63 68 20 6f 66 20 74 68 65 73 65  n which of these
29b00 0a 2a 2a 20 63 6f 64 65 73 20 69 73 20 75 73 65  .** codes is use
29b10 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20  d as the second 
29b20 70 61 72 61 6d 65 74 65 72 2e 20 20 5e 28 54 68  parameter.  ^(Th
29b30 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20  e 5th parameter 
29b40 74 6f 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f 72  to the.** author
29b50 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73  izer callback is
29b60 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
29b70 20 64 61 74 61 62 61 73 65 20 28 22 6d 61 69 6e   database ("main
29b80 22 2c 20 22 74 65 6d 70 22 2c 0a 2a 2a 20 65 74  ", "temp",.** et
29b90 63 2e 29 20 69 66 20 61 70 70 6c 69 63 61 62 6c  c.) if applicabl
29ba0 65 2e 29 5e 20 20 5e 54 68 65 20 36 74 68 20 70  e.)^  ^The 6th p
29bb0 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
29bc0 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
29bd0 61 63 6b 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61  ack.** is the na
29be0 6d 65 20 6f 66 20 74 68 65 20 69 6e 6e 65 72 2d  me of the inner-
29bf0 6d 6f 73 74 20 74 72 69 67 67 65 72 20 6f 72 20  most trigger or 
29c00 76 69 65 77 20 74 68 61 74 20 69 73 20 72 65 73  view that is res
29c10 70 6f 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a 20  ponsible for.** 
29c20 74 68 65 20 61 63 63 65 73 73 20 61 74 74 65 6d  the access attem
29c30 70 74 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68  pt or NULL if th
29c40 69 73 20 61 63 63 65 73 73 20 61 74 74 65 6d 70  is access attemp
29c50 74 20 69 73 20 64 69 72 65 63 74 6c 79 20 66 72  t is directly fr
29c60 6f 6d 0a 2a 2a 20 74 6f 70 2d 6c 65 76 65 6c 20  om.** top-level 
29c70 53 51 4c 20 63 6f 64 65 2e 0a 2a 2f 0a 2f 2a 2a  SQL code..*/./**
29c80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
29c90 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
29ca0 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 33 72 64 20 2a 2a  ********* 3rd **
29cb0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 34 74 68 20 2a  ********** 4th *
29cc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65 66  **********/.#def
29cd0 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54  ine SQLITE_CREAT
29ce0 45 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  E_INDEX         
29cf0 20 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61   1   /* Index Na
29d00 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61  me      Table Na
29d10 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
29d20 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
29d30 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20  _TABLE          
29d40 32 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  2   /* Table Nam
29d50 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
29d60 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
29d70 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
29d80 54 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 33  TEMP_INDEX     3
29d90 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65     /* Index Name
29da0 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65        Table Name
29db0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
29dc0 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
29dd0 45 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34 20  EMP_TABLE     4 
29de0 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
29df0 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
29e00 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
29e10 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
29e20 4d 50 5f 54 52 49 47 47 45 52 20 20 20 35 20 20  MP_TRIGGER   5  
29e30 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65   /* Trigger Name
29e40 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20      Table Name  
29e50 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
29e60 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d  QLITE_CREATE_TEM
29e70 50 5f 56 49 45 57 20 20 20 20 20 20 36 20 20 20  P_VIEW      6   
29e80 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20  /* View Name    
29e90 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
29ea0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
29eb0 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49 47  LITE_CREATE_TRIG
29ec0 47 45 52 20 20 20 20 20 20 20 20 37 20 20 20 2f  GER        7   /
29ed0 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20  * Trigger Name  
29ee0 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
29ef0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
29f00 49 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57 20  ITE_CREATE_VIEW 
29f10 20 20 20 20 20 20 20 20 20 20 38 20 20 20 2f 2a            8   /*
29f20 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20   View Name      
29f30 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
29f40 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
29f50 54 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20  TE_DELETE       
29f60 20 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a 20           9   /* 
29f70 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
29f80 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
29f90 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
29fa0 45 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20 20  E_DROP_INDEX    
29fb0 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 49         10   /* I
29fc0 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54  ndex Name      T
29fd0 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
29fe0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
29ff0 5f 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20 20  _DROP_TABLE     
2a000 20 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 61        11   /* Ta
2a010 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  ble Name      NU
2a020 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2a030 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2a040 44 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58 20  DROP_TEMP_INDEX 
2a050 20 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e 64       12   /* Ind
2a060 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62  ex Name      Tab
2a070 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a  le Name      */.
2a080 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2a090 52 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20  ROP_TEMP_TABLE  
2a0a0 20 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62 6c      13   /* Tabl
2a0b0 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
2a0c0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
2a0d0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
2a0e0 4f 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20  OP_TEMP_TRIGGER 
2a0f0 20 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67 67     14   /* Trigg
2a100 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65  er Name    Table
2a110 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64   Name      */.#d
2a120 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
2a130 50 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20  P_TEMP_VIEW     
2a140 20 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20 4e    15   /* View N
2a150 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20  ame       NULL  
2a160 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2a170 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
2a180 5f 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20  _TRIGGER        
2a190 20 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65 72   16   /* Trigger
2a1a0 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e   Name    Table N
2a1b0 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
2a1c0 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
2a1d0 56 49 45 57 20 20 20 20 20 20 20 20 20 20 20 20  VIEW            
2a1e0 31 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d  17   /* View Nam
2a1f0 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  e       NULL    
2a200 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2a210 6e 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52 54  ne SQLITE_INSERT
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31                 1
2a230 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  8   /* Table Nam
2a240 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
2a250 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
2a260 65 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41 20  e SQLITE_PRAGMA 
2a270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39                19
2a280 20 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61 6d     /* Pragma Nam
2a290 65 20 20 20 20 20 31 73 74 20 61 72 67 20 6f 72  e     1st arg or
2a2a0 20 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e 65   NULL */.#define
2a2b0 20 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20 20   SQLITE_READ    
2a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 32 30 20               20 
2a2d0 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
2a2e0 20 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65       Column Name
2a2f0 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2a300 53 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20 20  SQLITE_SELECT   
2a310 20 20 20 20 20 20 20 20 20 20 20 20 32 31 20 20              21  
2a320 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20   /* NULL        
2a330 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2a340 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2a350 51 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49 4f  QLITE_TRANSACTIO
2a360 4e 20 20 20 20 20 20 20 20 20 20 32 32 20 20 20  N          22   
2a370 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20 20 20  /* Operation    
2a380 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
2a390 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2a3a0 4c 49 54 45 5f 55 50 44 41 54 45 20 20 20 20 20  LITE_UPDATE     
2a3b0 20 20 20 20 20 20 20 20 20 20 32 33 20 20 20 2f            23   /
2a3c0 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20  * Table Name    
2a3d0 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20    Column Name   
2a3e0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2a3f0 49 54 45 5f 41 54 54 41 43 48 20 20 20 20 20 20  ITE_ATTACH      
2a400 20 20 20 20 20 20 20 20 20 32 34 20 20 20 2f 2a           24   /*
2a410 20 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20 20   Filename       
2a420 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2a430 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2a440 54 45 5f 44 45 54 41 43 48 20 20 20 20 20 20 20  TE_DETACH       
2a450 20 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20          25   /* 
2a460 44 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20  Database Name   
2a470 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2a480 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2a490 45 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20 20  E_ALTER_TABLE   
2a4a0 20 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 44         26   /* D
2a4b0 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 54  atabase Name   T
2a4c0 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a  able Name      *
2a4d0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2a4e0 5f 52 45 49 4e 44 45 58 20 20 20 20 20 20 20 20  _REINDEX        
2a4f0 20 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49 6e        27   /* In
2a500 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e 55  dex Name      NU
2a510 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2a520 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2a530 41 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20 20  ANALYZE         
2a540 20 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61 62       28   /* Tab
2a550 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
2a560 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2a570 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
2a580 52 45 41 54 45 5f 56 54 41 42 4c 45 20 20 20 20  REATE_VTABLE    
2a590 20 20 20 20 32 39 20 20 20 2f 2a 20 54 61 62 6c      29   /* Tabl
2a5a0 65 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75  e Name      Modu
2a5b0 6c 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23  le Name     */.#
2a5c0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
2a5d0 4f 50 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20  OP_VTABLE       
2a5e0 20 20 20 33 30 20 20 20 2f 2a 20 54 61 62 6c 65     30   /* Table
2a5f0 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c   Name      Modul
2a600 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  e Name     */.#d
2a610 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4e  efine SQLITE_FUN
2a620 43 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20  CTION           
2a630 20 20 33 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20    31   /* NULL  
2a640 20 20 20 20 20 20 20 20 20 20 46 75 6e 63 74 69            Functi
2a650 6f 6e 20 4e 61 6d 65 20 20 20 2a 2f 0a 23 64 65  on Name   */.#de
2a660 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 41 56 45  fine SQLITE_SAVE
2a670 50 4f 49 4e 54 20 20 20 20 20 20 20 20 20 20 20  POINT           
2a680 20 33 32 20 20 20 2f 2a 20 4f 70 65 72 61 74 69   32   /* Operati
2a690 6f 6e 20 20 20 20 20 20 20 53 61 76 65 70 6f 69  on       Savepoi
2a6a0 6e 74 20 4e 61 6d 65 20 20 2a 2f 0a 23 64 65 66  nt Name  */.#def
2a6b0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59 20  ine SQLITE_COPY 
2a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6d0 20 30 20 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65   0   /* No longe
2a6e0 72 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e  r used */.#defin
2a6f0 65 20 53 51 4c 49 54 45 5f 52 45 43 55 52 53 49  e SQLITE_RECURSI
2a700 56 45 20 20 20 20 20 20 20 20 20 20 20 20 33 33  VE            33
2a710 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20     /* NULL      
2a720 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2a730 20 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20        */../*.** 
2a740 43 41 50 49 33 52 45 46 3a 20 54 72 61 63 69 6e  CAPI3REF: Tracin
2a750 67 20 41 6e 64 20 50 72 6f 66 69 6c 69 6e 67 20  g And Profiling 
2a760 46 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54  Functions.** MET
2a770 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
2a780 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65  ** These routine
2a790 73 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64  s are deprecated
2a7a0 2e 20 55 73 65 20 74 68 65 20 5b 73 71 6c 69 74  . Use the [sqlit
2a7b0 65 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 69  e3_trace_v2()] i
2a7c0 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 6e 73 74  nterface.** inst
2a7d0 65 61 64 20 6f 66 20 74 68 65 20 72 6f 75 74 69  ead of the routi
2a7e0 6e 65 73 20 64 65 73 63 72 69 62 65 64 20 68 65  nes described he
2a7f0 72 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  re..**.** These 
2a800 72 6f 75 74 69 6e 65 73 20 72 65 67 69 73 74 65  routines registe
2a810 72 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  r callback funct
2a820 69 6f 6e 73 20 74 68 61 74 20 63 61 6e 20 62 65  ions that can be
2a830 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 72 61   used for.** tra
2a840 63 69 6e 67 20 61 6e 64 20 70 72 6f 66 69 6c 69  cing and profili
2a850 6e 67 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e  ng the execution
2a860 20 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   of SQL statemen
2a870 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63  ts..**.** ^The c
2a880 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
2a890 20 72 65 67 69 73 74 65 72 65 64 20 62 79 20 73   registered by s
2a8a0 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 69  qlite3_trace() i
2a8b0 73 20 69 6e 76 6f 6b 65 64 20 61 74 0a 2a 2a 20  s invoked at.** 
2a8c0 76 61 72 69 6f 75 73 20 74 69 6d 65 73 20 77 68  various times wh
2a8d0 65 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d  en an SQL statem
2a8e0 65 6e 74 20 69 73 20 62 65 69 6e 67 20 72 75 6e  ent is being run
2a8f0 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 74 65   by [sqlite3_ste
2a900 70 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71  p()]..** ^The sq
2a910 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 63 61  lite3_trace() ca
2a920 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65  llback is invoke
2a930 64 20 77 69 74 68 20 61 20 55 54 46 2d 38 20 72  d with a UTF-8 r
2a940 65 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65 0a  endering of the.
2a950 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ** SQL statement
2a960 20 74 65 78 74 20 61 73 20 74 68 65 20 73 74 61   text as the sta
2a970 74 65 6d 65 6e 74 20 66 69 72 73 74 20 62 65 67  tement first beg
2a980 69 6e 73 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a  ins executing..*
2a990 2a 20 5e 28 41 64 64 69 74 69 6f 6e 61 6c 20 73  * ^(Additional s
2a9a0 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 63  qlite3_trace() c
2a9b0 61 6c 6c 62 61 63 6b 73 20 6d 69 67 68 74 20 6f  allbacks might o
2a9c0 63 63 75 72 0a 2a 2a 20 61 73 20 65 61 63 68 20  ccur.** as each 
2a9d0 74 72 69 67 67 65 72 65 64 20 73 75 62 70 72 6f  triggered subpro
2a9e0 67 72 61 6d 20 69 73 20 65 6e 74 65 72 65 64 2e  gram is entered.
2a9f0 20 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73 20    The callbacks 
2aa00 66 6f 72 20 74 72 69 67 67 65 72 73 0a 2a 2a 20  for triggers.** 
2aa10 63 6f 6e 74 61 69 6e 20 61 20 55 54 46 2d 38 20  contain a UTF-8 
2aa20 53 51 4c 20 63 6f 6d 6d 65 6e 74 20 74 68 61 74  SQL comment that
2aa30 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20   identifies the 
2aa40 74 72 69 67 67 65 72 2e 29 5e 0a 2a 2a 0a 2a 2a  trigger.)^.**.**
2aa50 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41   The [SQLITE_TRA
2aa60 43 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63  CE_SIZE_LIMIT] c
2aa70 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
2aa80 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  on can be used t
2aa90 6f 20 6c 69 6d 69 74 0a 2a 2a 20 74 68 65 20 6c  o limit.** the l
2aaa0 65 6e 67 74 68 20 6f 66 20 5b 62 6f 75 6e 64 20  ength of [bound 
2aab0 70 61 72 61 6d 65 74 65 72 5d 20 65 78 70 61 6e  parameter] expan
2aac0 73 69 6f 6e 20 69 6e 20 74 68 65 20 6f 75 74 70  sion in the outp
2aad0 75 74 20 6f 66 20 73 71 6c 69 74 65 33 5f 74 72  ut of sqlite3_tr
2aae0 61 63 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ace()..**.** ^Th
2aaf0 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
2ab00 69 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20 62  ion registered b
2ab10 79 20 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c  y sqlite3_profil
2ab20 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a  e() is invoked.*
2ab30 2a 20 61 73 20 65 61 63 68 20 53 51 4c 20 73 74  * as each SQL st
2ab40 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73  atement finishes
2ab50 2e 20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65 20  .  ^The profile 
2ab60 63 61 6c 6c 62 61 63 6b 20 63 6f 6e 74 61 69 6e  callback contain
2ab70 73 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e 61  s.** the origina
2ab80 6c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74  l statement text
2ab90 20 61 6e 64 20 61 6e 20 65 73 74 69 6d 61 74 65   and an estimate
2aba0 20 6f 66 20 77 61 6c 6c 2d 63 6c 6f 63 6b 20 74   of wall-clock t
2abb0 69 6d 65 0a 2a 2a 20 6f 66 20 68 6f 77 20 6c 6f  ime.** of how lo
2abc0 6e 67 20 74 68 61 74 20 73 74 61 74 65 6d 65 6e  ng that statemen
2abd0 74 20 74 6f 6f 6b 20 74 6f 20 72 75 6e 2e 20 20  t took to run.  
2abe0 5e 54 68 65 20 70 72 6f 66 69 6c 65 20 63 61 6c  ^The profile cal
2abf0 6c 62 61 63 6b 0a 2a 2a 20 74 69 6d 65 20 69 73  lback.** time is
2ac00 20 69 6e 20 75 6e 69 74 73 20 6f 66 20 6e 61 6e   in units of nan
2ac10 6f 73 65 63 6f 6e 64 73 2c 20 68 6f 77 65 76 65  oseconds, howeve
2ac20 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 69 6d  r the current im
2ac30 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20  plementation.** 
2ac40 69 73 20 6f 6e 6c 79 20 63 61 70 61 62 6c 65 20  is only capable 
2ac50 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 72  of millisecond r
2ac60 65 73 6f 6c 75 74 69 6f 6e 20 73 6f 20 74 68 65  esolution so the
2ac70 20 73 69 78 20 6c 65 61 73 74 20 73 69 67 6e 69   six least signi
2ac80 66 69 63 61 6e 74 0a 2a 2a 20 64 69 67 69 74 73  ficant.** digits
2ac90 20 69 6e 20 74 68 65 20 74 69 6d 65 20 61 72 65   in the time are
2aca0 20 6d 65 61 6e 69 6e 67 6c 65 73 73 2e 20 20 46   meaningless.  F
2acb0 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f  uture versions o
2acc0 66 20 53 51 4c 69 74 65 0a 2a 2a 20 6d 69 67 68  f SQLite.** migh
2acd0 74 20 70 72 6f 76 69 64 65 20 67 72 65 61 74 65  t provide greate
2ace0 72 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6f 6e 20  r resolution on 
2acf0 74 68 65 20 70 72 6f 66 69 6c 65 72 20 63 61 6c  the profiler cal
2ad00 6c 62 61 63 6b 2e 20 20 54 68 65 0a 2a 2a 20 73  lback.  The.** s
2ad10 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
2ad20 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 6f 6e   function is con
2ad30 73 69 64 65 72 65 64 20 65 78 70 65 72 69 6d 65  sidered experime
2ad40 6e 74 61 6c 20 61 6e 64 20 69 73 0a 2a 2a 20 73  ntal and is.** s
2ad50 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
2ad60 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69   in future versi
2ad70 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a  ons of SQLite..*
2ad80 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 53 51 4c  /.SQLITE_API SQL
2ad90 49 54 45 5f 44 45 50 52 45 43 41 54 45 44 20 76  ITE_DEPRECATED v
2ada0 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 74 72 61  oid *sqlite3_tra
2adb0 63 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20  ce(sqlite3*,.   
2adc0 76 6f 69 64 28 2a 78 54 72 61 63 65 29 28 76 6f  void(*xTrace)(vo
2add0 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29  id*,const char*)
2ade0 2c 20 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45  , void*);.SQLITE
2adf0 5f 41 50 49 20 53 51 4c 49 54 45 5f 44 45 50 52  _API SQLITE_DEPR
2ae00 45 43 41 54 45 44 20 76 6f 69 64 20 2a 73 71 6c  ECATED void *sql
2ae10 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 73 71 6c  ite3_profile(sql
2ae20 69 74 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a  ite3*,.   void(*
2ae30 78 50 72 6f 66 69 6c 65 29 28 76 6f 69 64 2a 2c  xProfile)(void*,
2ae40 63 6f 6e 73 74 20 63 68 61 72 2a 2c 73 71 6c 69  const char*,sqli
2ae50 74 65 33 5f 75 69 6e 74 36 34 29 2c 20 76 6f 69  te3_uint64), voi
2ae60 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  d*);../*.** CAPI
2ae70 33 52 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20  3REF: SQL Trace 
2ae80 45 76 65 6e 74 20 43 6f 64 65 73 0a 2a 2a 20 4b  Event Codes.** K
2ae90 45 59 57 4f 52 44 53 3a 20 53 51 4c 49 54 45 5f  EYWORDS: SQLITE_
2aea0 54 52 41 43 45 0a 2a 2a 0a 2a 2a 20 54 68 65 73  TRACE.**.** Thes
2aeb0 65 20 63 6f 6e 73 74 61 6e 74 73 20 69 64 65 6e  e constants iden
2aec0 74 69 66 79 20 63 6c 61 73 73 65 73 20 6f 66 20  tify classes of 
2aed0 65 76 65 6e 74 73 20 74 68 61 74 20 63 61 6e 20  events that can 
2aee0 62 65 20 6d 6f 6e 69 74 6f 72 65 64 0a 2a 2a 20  be monitored.** 
2aef0 75 73 69 6e 67 20 74 68 65 20 5b 73 71 6c 69 74  using the [sqlit
2af00 65 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 74  e3_trace_v2()] t
2af10 72 61 63 69 6e 67 20 6c 6f 67 69 63 2e 20 20 54  racing logic.  T
2af20 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
2af30 74 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74 65 33  t.** to [sqlite3
2af40 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 69 73 20  _trace_v2()] is 
2af50 61 6e 20 4f 52 2d 65 64 20 63 6f 6d 62 69 6e 61  an OR-ed combina
2af60 74 69 6f 6e 20 6f 66 20 6f 6e 65 20 6f 72 20 6d  tion of one or m
2af70 6f 72 65 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f  ore of.** the fo
2af80 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74  llowing constant
2af90 73 2e 20 20 5e 54 68 65 20 66 69 72 73 74 20 61  s.  ^The first a
2afa0 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 74  rgument to the t
2afb0 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  race callback.**
2afc0 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 66   is one of the f
2afd0 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e  ollowing constan
2afe0 74 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 74 72  ts..**.** New tr
2aff0 61 63 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20  acing constants 
2b000 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20  may be added in 
2b010 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e  future releases.
2b020 0a 2a 2a 0a 2a 2a 20 5e 41 20 74 72 61 63 65 20  .**.** ^A trace 
2b030 63 61 6c 6c 62 61 63 6b 20 68 61 73 20 66 6f 75  callback has fou
2b040 72 20 61 72 67 75 6d 65 6e 74 73 3a 20 78 43 61  r arguments: xCa
2b050 6c 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e  llback(T,C,P,X).
2b060 0a 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d  .** ^The T argum
2b070 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68  ent is one of th
2b080 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 63  e integer type c
2b090 6f 64 65 73 20 61 62 6f 76 65 2e 0a 2a 2a 20 5e  odes above..** ^
2b0a0 54 68 65 20 43 20 61 72 67 75 6d 65 6e 74 20 69  The C argument i
2b0b0 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
2b0c0 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20  context pointer 
2b0d0 70 61 73 73 65 64 20 69 6e 20 61 73 20 74 68 65  passed in as the
2b0e0 0a 2a 2a 20 66 6f 75 72 74 68 20 61 72 67 75 6d  .** fourth argum
2b0f0 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f  ent to [sqlite3_
2b100 74 72 61 63 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20  trace_v2()]..** 
2b110 54 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75  The P and X argu
2b120 6d 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65  ments are pointe
2b130 72 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67  rs whose meaning
2b140 73 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a  s depend on T..*
2b150 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53  *.** <dl>.** [[S
2b160 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54  QLITE_TRACE_STMT
2b170 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52  ]] <dt>SQLITE_TR
2b180 41 43 45 5f 53 54 4d 54 3c 2f 64 74 3e 0a 2a 2a  ACE_STMT</dt>.**
2b190 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f   <dd>^An SQLITE_
2b1a0 54 52 41 43 45 5f 53 54 4d 54 20 63 61 6c 6c 62  TRACE_STMT callb
2b1b0 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77  ack is invoked w
2b1c0 68 65 6e 20 61 20 70 72 65 70 61 72 65 64 20 73  hen a prepared s
2b1d0 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 66 69 72 73  tatement.** firs
2b1e0 74 20 62 65 67 69 6e 73 20 72 75 6e 6e 69 6e 67  t begins running
2b1f0 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 61 74   and possibly at
2b200 20 6f 74 68 65 72 20 74 69 6d 65 73 20 64 75 72   other times dur
2b210 69 6e 67 20 74 68 65 0a 2a 2a 20 65 78 65 63 75  ing the.** execu
2b220 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 72 65 70  tion of the prep
2b230 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c 20  ared statement, 
2b240 73 75 63 68 20 61 73 20 61 74 20 74 68 65 20 73  such as at the s
2b250 74 61 72 74 20 6f 66 20 65 61 63 68 0a 2a 2a 20  tart of each.** 
2b260 74 72 69 67 67 65 72 20 73 75 62 70 72 6f 67 72  trigger subprogr
2b270 61 6d 2e 20 5e 54 68 65 20 50 20 61 72 67 75 6d  am. ^The P argum
2b280 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ent is a pointer
2b290 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70   to the.** [prep
2b2a0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e  ared statement].
2b2b0 20 5e 54 68 65 20 58 20 61 72 67 75 6d 65 6e 74   ^The X argument
2b2c0 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2b2d0 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0a   a string which.
2b2e0 2a 2a 20 69 73 20 74 68 65 20 75 6e 65 78 70 61  ** is the unexpa
2b2f0 6e 64 65 64 20 53 51 4c 20 74 65 78 74 20 6f 66  nded SQL text of
2b300 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74   the prepared st
2b310 61 74 65 6d 65 6e 74 20 6f 72 20 61 6e 20 53 51  atement or an SQ
2b320 4c 20 63 6f 6d 6d 65 6e 74 20 0a 2a 2a 20 74 68  L comment .** th
2b330 61 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 65  at indicates the
2b340 20 69 6e 76 6f 63 61 74 69 6f 6e 20 6f 66 20 61   invocation of a
2b350 20 74 72 69 67 67 65 72 2e 20 20 5e 54 68 65 20   trigger.  ^The 
2b360 63 61 6c 6c 62 61 63 6b 20 63 61 6e 20 63 6f 6d  callback can com
2b370 70 75 74 65 0a 2a 2a 20 74 68 65 20 73 61 6d 65  pute.** the same
2b380 20 74 65 78 74 20 74 68 61 74 20 77 6f 75 6c 64   text that would
2b390 20 68 61 76 65 20 62 65 65 6e 20 72 65 74 75 72   have been retur
2b3a0 6e 65 64 20 62 79 20 74 68 65 20 6c 65 67 61 63  ned by the legac
2b3b0 79 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  y [sqlite3_trace
2b3c0 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ()].** interface
2b3d0 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 58 20   by using the X 
2b3e0 61 72 67 75 6d 65 6e 74 20 77 68 65 6e 20 58 20  argument when X 
2b3f0 62 65 67 69 6e 73 20 77 69 74 68 20 22 2d 2d 22  begins with "--"
2b400 20 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a   and invoking.**
2b410 20 5b 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64   [sqlite3_expand
2b420 65 64 5f 73 71 6c 28 50 29 5d 20 6f 74 68 65 72  ed_sql(P)] other
2b430 77 69 73 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  wise..**.** [[SQ
2b440 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2b450 4c 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  LE]] <dt>SQLITE_
2b460 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 3c 2f 64  TRACE_PROFILE</d
2b470 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51  t>.** <dd>^An SQ
2b480 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2b490 4c 45 20 63 61 6c 6c 62 61 63 6b 20 70 72 6f 76  LE callback prov
2b4a0 69 64 65 73 20 61 70 70 72 6f 78 69 6d 61 74 65  ides approximate
2b4b0 6c 79 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 69  ly the same.** i
2b4c0 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20 69 73  nformation as is
2b4d0 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65   provided by the
2b4e0 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c   [sqlite3_profil
2b4f0 65 28 29 5d 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a  e()] callback..*
2b500 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e  * ^The P argumen
2b510 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t is a pointer t
2b520 6f 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  o the [prepared 
2b530 73 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74  statement] and t
2b540 68 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74  he.** X argument
2b550 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 36 34 2d   points to a 64-
2b560 62 69 74 20 69 6e 74 65 67 65 72 20 77 68 69 63  bit integer whic
2b570 68 20 69 73 20 74 68 65 20 65 73 74 69 6d 61 74  h is the estimat
2b580 65 64 20 6f 66 0a 2a 2a 20 74 68 65 20 6e 75 6d  ed of.** the num
2b590 62 65 72 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e  ber of nanosecon
2b5a0 64 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61  d that the prepa
2b5b0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  red statement to
2b5c0 6f 6b 20 74 6f 20 72 75 6e 2e 0a 2a 2a 20 5e 54  ok to run..** ^T
2b5d0 68 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  he SQLITE_TRACE_
2b5e0 50 52 4f 46 49 4c 45 20 63 61 6c 6c 62 61 63 6b  PROFILE callback
2b5f0 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
2b600 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 66   the statement f
2b610 69 6e 69 73 68 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b  inishes..**.** [
2b620 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f  [SQLITE_TRACE_RO
2b630 57 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54  W]] <dt>SQLITE_T
2b640 52 41 43 45 5f 52 4f 57 3c 2f 64 74 3e 0a 2a 2a  RACE_ROW</dt>.**
2b650 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f   <dd>^An SQLITE_
2b660 54 52 41 43 45 5f 52 4f 57 20 63 61 6c 6c 62 61  TRACE_ROW callba
2b670 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68  ck is invoked wh
2b680 65 6e 65 76 65 72 20 61 20 70 72 65 70 61 72 65  enever a prepare
2b690 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 67  d.** statement g
2b6a0 65 6e 65 72 61 74 65 73 20 61 20 73 69 6e 67 6c  enerates a singl
2b6b0 65 20 72 6f 77 20 6f 66 20 72 65 73 75 6c 74 2e  e row of result.
2b6c0 20 20 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72 67    .** ^The P arg
2b6d0 75 6d 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74  ument is a point
2b6e0 65 72 20 74 6f 20 74 68 65 20 5b 70 72 65 70 61  er to the [prepa
2b6f0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 61  red statement] a
2b700 6e 64 20 74 68 65 0a 2a 2a 20 58 20 61 72 67 75  nd the.** X argu
2b710 6d 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a  ment is unused..
2b720 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54  **.** [[SQLITE_T
2b730 52 41 43 45 5f 43 4c 4f 53 45 5d 5d 20 3c 64 74  RACE_CLOSE]] <dt
2b740 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c  >SQLITE_TRACE_CL
2b750 4f 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  OSE</dt>.** <dd>
2b760 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ^An SQLITE_TRACE
2b770 5f 43 4c 4f 53 45 20 63 61 6c 6c 62 61 63 6b 20  _CLOSE callback 
2b780 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20  is invoked when 
2b790 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f  a database.** co
2b7a0 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e  nnection closes.
2b7b0 0a 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d  .** ^The P argum
2b7c0 65 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ent is a pointer
2b7d0 20 74 6f 20 74 68 65 20 5b 64 61 74 61 62 61 73   to the [databas
2b7e0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62  e connection] ob
2b7f0 6a 65 63 74 0a 2a 2a 20 61 6e 64 20 74 68 65 20  ject.** and the 
2b800 58 20 61 72 67 75 6d 65 6e 74 20 69 73 20 75 6e  X argument is un
2b810 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a  used..** </dl>.*
2b820 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b830 5f 54 52 41 43 45 5f 53 54 4d 54 20 20 20 20 20  _TRACE_STMT     
2b840 20 20 30 78 30 31 0a 23 64 65 66 69 6e 65 20 53    0x01.#define S
2b850 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46  QLITE_TRACE_PROF
2b860 49 4c 45 20 20 20 20 30 78 30 32 0a 23 64 65 66  ILE    0x02.#def
2b870 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ine SQLITE_TRACE
2b880 5f 52 4f 57 20 20 20 20 20 20 20 20 30 78 30 34  _ROW        0x04
2b890 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b8a0 54 52 41 43 45 5f 43 4c 4f 53 45 20 20 20 20 20  TRACE_CLOSE     
2b8b0 20 30 78 30 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50   0x08../*.** CAP
2b8c0 49 33 52 45 46 3a 20 53 51 4c 20 54 72 61 63 65  I3REF: SQL Trace
2b8d0 20 48 6f 6f 6b 0a 2a 2a 20 4d 45 54 48 4f 44 3a   Hook.** METHOD:
2b8e0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
2b8f0 54 68 65 20 73 71 6c 69 74 65 33 5f 74 72 61 63  The sqlite3_trac
2b900 65 5f 76 32 28 44 2c 4d 2c 58 2c 50 29 20 69 6e  e_v2(D,M,X,P) in
2b910 74 65 72 66 61 63 65 20 72 65 67 69 73 74 65 72  terface register
2b920 73 20 61 20 74 72 61 63 65 20 63 61 6c 6c 62 61  s a trace callba
2b930 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58  ck.** function X
2b940 20 61 67 61 69 6e 73 74 20 5b 64 61 74 61 62 61   against [databa
2b950 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
2b960 2c 20 75 73 69 6e 67 20 70 72 6f 70 65 72 74 79  , using property
2b970 20 6d 61 73 6b 20 4d 0a 2a 2a 20 61 6e 64 20 63   mask M.** and c
2b980 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 20 50  ontext pointer P
2b990 2e 20 20 5e 49 66 20 74 68 65 20 58 20 63 61 6c  .  ^If the X cal
2b9a0 6c 62 61 63 6b 20 69 73 0a 2a 2a 20 4e 55 4c 4c  lback is.** NULL
2b9b0 20 6f 72 20 69 66 20 74 68 65 20 4d 20 6d 61 73   or if the M mas
2b9c0 6b 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20  k is zero, then 
2b9d0 74 72 61 63 69 6e 67 20 69 73 20 64 69 73 61 62  tracing is disab
2b9e0 6c 65 64 2e 20 20 54 68 65 0a 2a 2a 20 4d 20 61  led.  The.** M a
2b9f0 72 67 75 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62  rgument should b
2ba00 65 20 74 68 65 20 62 69 74 77 69 73 65 20 4f 52  e the bitwise OR
2ba10 2d 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20  -ed combination 
2ba20 6f 66 0a 2a 2a 20 7a 65 72 6f 20 6f 72 20 6d 6f  of.** zero or mo
2ba30 72 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45  re [SQLITE_TRACE
2ba40 5d 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a  ] constants..**.
2ba50 2a 2a 20 5e 45 61 63 68 20 63 61 6c 6c 20 74 6f  ** ^Each call to
2ba60 20 65 69 74 68 65 72 20 73 71 6c 69 74 65 33 5f   either sqlite3_
2ba70 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74  trace() or sqlit
2ba80 65 33 5f 74 72 61 63 65 5f 76 32 28 29 20 6f 76  e3_trace_v2() ov
2ba90 65 72 72 69 64 65 73 20 0a 2a 2a 20 28 63 61 6e  errides .** (can
2baa0 63 65 6c 73 29 20 61 6e 79 20 70 72 69 6f 72 20  cels) any prior 
2bab0 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
2bac0 5f 74 72 61 63 65 28 29 20 6f 72 20 73 71 6c 69  _trace() or sqli
2bad0 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 2e 0a  te3_trace_v2()..
2bae0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 58 20 63 61 6c  **.** ^The X cal
2baf0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
2bb00 20 77 68 65 6e 65 76 65 72 20 61 6e 79 20 6f 66   whenever any of
2bb10 20 74 68 65 20 65 76 65 6e 74 73 20 69 64 65 6e   the events iden
2bb20 74 69 66 69 65 64 20 62 79 20 0a 2a 2a 20 6d 61  tified by .** ma
2bb30 73 6b 20 4d 20 6f 63 63 75 72 2e 20 20 5e 54 68  sk M occur.  ^Th
2bb40 65 20 69 6e 74 65 67 65 72 20 72 65 74 75 72 6e  e integer return
2bb50 20 76 61 6c 75 65 20 66 72 6f 6d 20 74 68 65 20   value from the 
2bb60 63 61 6c 6c 62 61 63 6b 20 69 73 20 63 75 72 72  callback is curr
2bb70 65 6e 74 6c 79 0a 2a 2a 20 69 67 6e 6f 72 65 64  ently.** ignored
2bb80 2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 6d 61  , though this ma
2bb90 79 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75  y change in futu
2bba0 72 65 20 72 65 6c 65 61 73 65 73 2e 20 20 43 61  re releases.  Ca
2bbb0 6c 6c 62 61 63 6b 0a 2a 2a 20 69 6d 70 6c 65 6d  llback.** implem
2bbc0 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64  entations should
2bbd0 20 72 65 74 75 72 6e 20 7a 65 72 6f 20 74 6f 20   return zero to 
2bbe0 65 6e 73 75 72 65 20 66 75 74 75 72 65 20 63 6f  ensure future co
2bbf0 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a  mpatibility..**.
2bc00 2a 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c 6c  ** ^A trace call
2bc10 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20  back is invoked 
2bc20 77 69 74 68 20 66 6f 75 72 20 61 72 67 75 6d 65  with four argume
2bc30 6e 74 73 3a 20 63 61 6c 6c 62 61 63 6b 28 54 2c  nts: callback(T,
2bc40 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65 20  C,P,X)..** ^The 
2bc50 54 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e  T argument is on
2bc60 65 20 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45  e of the [SQLITE
2bc70 5f 54 52 41 43 45 5d 0a 2a 2a 20 63 6f 6e 73 74  _TRACE].** const
2bc80 61 6e 74 73 20 74 6f 20 69 6e 64 69 63 61 74 65  ants to indicate
2bc90 20 77 68 79 20 74 68 65 20 63 61 6c 6c 62 61 63   why the callbac
2bca0 6b 20 77 61 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a  k was invoked..*
2bcb0 2a 20 5e 54 68 65 20 43 20 61 72 67 75 6d 65 6e  * ^The C argumen
2bcc0 74 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74  t is a copy of t
2bcd0 68 65 20 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74  he context point
2bce0 65 72 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e 64  er..** The P and
2bcf0 20 58 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65   X arguments are
2bd00 20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73 65 20   pointers whose 
2bd10 6d 65 61 6e 69 6e 67 73 20 64 65 70 65 6e 64 20  meanings depend 
2bd20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  on T..**.** The 
2bd30 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2bd40 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
2bd50 69 6e 74 65 6e 64 65 64 20 74 6f 20 72 65 70 6c  intended to repl
2bd60 61 63 65 20 74 68 65 20 6c 65 67 61 63 79 0a 2a  ace the legacy.*
2bd70 2a 20 69 6e 74 65 72 66 61 63 65 73 20 5b 73 71  * interfaces [sq
2bd80 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 20 61  lite3_trace()] a
2bd90 6e 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66  nd [sqlite3_prof
2bda0 69 6c 65 28 29 5d 2c 20 62 6f 74 68 20 6f 66 20  ile()], both of 
2bdb0 77 68 69 63 68 0a 2a 2a 20 61 72 65 20 64 65 70  which.** are dep
2bdc0 72 65 63 61 74 65 64 2e 0a 2a 2f 0a 53 51 4c 49  recated..*/.SQLI
2bdd0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
2bde0 65 33 5f 74 72 61 63 65 5f 76 32 28 0a 20 20 73  e3_trace_v2(.  s
2bdf0 71 6c 69 74 65 33 2a 2c 0a 20 20 75 6e 73 69 67  qlite3*,.  unsig
2be00 6e 65 64 20 75 4d 61 73 6b 2c 0a 20 20 69 6e 74  ned uMask,.  int
2be10 28 2a 78 43 61 6c 6c 62 61 63 6b 29 28 75 6e 73  (*xCallback)(uns
2be20 69 67 6e 65 64 2c 76 6f 69 64 2a 2c 76 6f 69 64  igned,void*,void
2be30 2a 2c 76 6f 69 64 2a 29 2c 0a 20 20 76 6f 69 64  *,void*),.  void
2be40 20 2a 70 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a   *pCtx.);../*.**
2be50 20 43 41 50 49 33 52 45 46 3a 20 51 75 65 72 79   CAPI3REF: Query
2be60 20 50 72 6f 67 72 65 73 73 20 43 61 6c 6c 62 61   Progress Callba
2be70 63 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  cks.** METHOD: s
2be80 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
2be90 65 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65  e sqlite3_progre
2bea0 73 73 5f 68 61 6e 64 6c 65 72 28 44 2c 4e 2c 58  ss_handler(D,N,X
2beb0 2c 50 29 20 69 6e 74 65 72 66 61 63 65 20 63 61  ,P) interface ca
2bec0 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63  uses the callbac
2bed0 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20  k.** function X 
2bee0 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 70 65  to be invoked pe
2bef0 72 69 6f 64 69 63 61 6c 6c 79 20 64 75 72 69 6e  riodically durin
2bf00 67 20 6c 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63  g long running c
2bf10 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  alls to.** [sqli
2bf20 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 5b 73 71  te3_exec()], [sq
2bf30 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 61 6e  lite3_step()] an
2bf40 64 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  d [sqlite3_get_t
2bf50 61 62 6c 65 28 29 5d 20 66 6f 72 0a 2a 2a 20 64  able()] for.** d
2bf60 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2bf70 6f 6e 20 44 2e 20 20 41 6e 20 65 78 61 6d 70 6c  on D.  An exampl
2bf80 65 20 75 73 65 20 66 6f 72 20 74 68 69 73 0a 2a  e use for this.*
2bf90 2a 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74  * interface is t
2bfa0 6f 20 6b 65 65 70 20 61 20 47 55 49 20 75 70 64  o keep a GUI upd
2bfb0 61 74 65 64 20 64 75 72 69 6e 67 20 61 20 6c 61  ated during a la
2bfc0 72 67 65 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a  rge query..**.**
2bfd0 20 5e 54 68 65 20 70 61 72 61 6d 65 74 65 72 20   ^The parameter 
2bfe0 50 20 69 73 20 70 61 73 73 65 64 20 74 68 72 6f  P is passed thro
2bff0 75 67 68 20 61 73 20 74 68 65 20 6f 6e 6c 79 20  ugh as the only 
2c000 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
2c010 20 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75   .** callback fu
2c020 6e 63 74 69 6f 6e 20 58 2e 20 20 5e 54 68 65 20  nction X.  ^The 
2c030 70 61 72 61 6d 65 74 65 72 20 4e 20 69 73 20 74  parameter N is t
2c040 68 65 20 61 70 70 72 6f 78 69 6d 61 74 65 20 6e  he approximate n
2c050 75 6d 62 65 72 20 6f 66 20 0a 2a 2a 20 5b 76 69  umber of .** [vi
2c060 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e  rtual machine in
2c070 73 74 72 75 63 74 69 6f 6e 73 5d 20 74 68 61 74  structions] that
2c080 20 61 72 65 20 65 76 61 6c 75 61 74 65 64 20 62   are evaluated b
2c090 65 74 77 65 65 6e 20 73 75 63 63 65 73 73 69 76  etween successiv
2c0a0 65 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 73  e.** invocations
2c0b0 20 6f 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b   of the callback
2c0c0 20 58 2e 20 20 5e 49 66 20 4e 20 69 73 20 6c 65   X.  ^If N is le
2c0d0 73 73 20 74 68 61 6e 20 6f 6e 65 20 74 68 65 6e  ss than one then
2c0e0 20 74 68 65 20 70 72 6f 67 72 65 73 73 0a 2a 2a   the progress.**
2c0f0 20 68 61 6e 64 6c 65 72 20 69 73 20 64 69 73 61   handler is disa
2c100 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c  bled..**.** ^Onl
2c110 79 20 61 20 73 69 6e 67 6c 65 20 70 72 6f 67 72  y a single progr
2c120 65 73 73 20 68 61 6e 64 6c 65 72 20 6d 61 79 20  ess handler may 
2c130 62 65 20 64 65 66 69 6e 65 64 20 61 74 20 6f 6e  be defined at on
2c140 65 20 74 69 6d 65 20 70 65 72 0a 2a 2a 20 5b 64  e time per.** [d
2c150 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2c160 6f 6e 5d 3b 20 73 65 74 74 69 6e 67 20 61 20 6e  on]; setting a n
2c170 65 77 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64  ew progress hand
2c180 6c 65 72 20 63 61 6e 63 65 6c 73 20 74 68 65 0a  ler cancels the.
2c190 2a 2a 20 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53 65  ** old one.  ^Se
2c1a0 74 74 69 6e 67 20 70 61 72 61 6d 65 74 65 72 20  tting parameter 
2c1b0 58 20 74 6f 20 4e 55 4c 4c 20 64 69 73 61 62 6c  X to NULL disabl
2c1c0 65 73 20 74 68 65 20 70 72 6f 67 72 65 73 73 20  es the progress 
2c1d0 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68 65  handler..** ^The
2c1e0 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65   progress handle
2c1f0 72 20 69 73 20 61 6c 73 6f 20 64 69 73 61 62 6c  r is also disabl
2c200 65 64 20 62 79 20 73 65 74 74 69 6e 67 20 4e 20  ed by setting N 
2c210 74 6f 20 61 20 76 61 6c 75 65 20 6c 65 73 73 0a  to a value less.
2c220 2a 2a 20 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a  ** than 1..**.**
2c230 20 5e 49 66 20 74 68 65 20 70 72 6f 67 72 65 73   ^If the progres
2c240 73 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72  s callback retur
2c250 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65  ns non-zero, the
2c260 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 0a 2a 2a   operation is.**
2c270 20 69 6e 74 65 72 72 75 70 74 65 64 2e 20 20 54   interrupted.  T
2c280 68 69 73 20 66 65 61 74 75 72 65 20 63 61 6e 20  his feature can 
2c290 62 65 20 75 73 65 64 20 74 6f 20 69 6d 70 6c 65  be used to imple
2c2a0 6d 65 6e 74 20 61 0a 2a 2a 20 22 43 61 6e 63 65  ment a.** "Cance
2c2b0 6c 22 20 62 75 74 74 6f 6e 20 6f 6e 20 61 20 47  l" button on a G
2c2c0 55 49 20 70 72 6f 67 72 65 73 73 20 64 69 61 6c  UI progress dial
2c2d0 6f 67 20 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54 68  og box..**.** Th
2c2e0 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c  e progress handl
2c2f0 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74  er callback must
2c300 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67   not do anything
2c310 20 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66   that will modif
2c320 79 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73  y.** the databas
2c330 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61  e connection tha
2c340 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 70 72  t invoked the pr
2c350 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a  ogress handler..
2c360 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b 73 71  ** Note that [sq
2c370 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
2c380 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
2c390 5f 73 74 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f  _step()] both mo
2c3a0 64 69 66 79 20 74 68 65 69 72 0a 2a 2a 20 64 61  dify their.** da
2c3b0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2c3c0 6e 73 20 66 6f 72 20 74 68 65 20 6d 65 61 6e 69  ns for the meani
2c3d0 6e 67 20 6f 66 20 22 6d 6f 64 69 66 79 22 20 69  ng of "modify" i
2c3e0 6e 20 74 68 69 73 20 70 61 72 61 67 72 61 70 68  n this paragraph
2c3f0 2e 0a 2a 2a 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ..**.*/.SQLITE_A
2c400 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  PI void sqlite3_
2c410 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c 65 72  progress_handler
2c420 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20  (sqlite3*, int, 
2c430 69 6e 74 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76  int(*)(void*), v
2c440 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  oid*);../*.** CA
2c450 50 49 33 52 45 46 3a 20 4f 70 65 6e 69 6e 67 20  PI3REF: Opening 
2c460 41 20 4e 65 77 20 44 61 74 61 62 61 73 65 20 43  A New Database C
2c470 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 43 4f 4e  onnection.** CON
2c480 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65  STRUCTOR: sqlite
2c490 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72  3.**.** ^These r
2c4a0 6f 75 74 69 6e 65 73 20 6f 70 65 6e 20 61 6e 20  outines open an 
2c4b0 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
2c4c0 66 69 6c 65 20 61 73 20 73 70 65 63 69 66 69 65  file as specifie
2c4d0 64 20 62 79 20 74 68 65 20 0a 2a 2a 20 66 69 6c  d by the .** fil
2c4e0 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 2e 20  ename argument. 
2c4f0 5e 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72  ^The filename ar
2c500 67 75 6d 65 6e 74 20 69 73 20 69 6e 74 65 72 70  gument is interp
2c510 72 65 74 65 64 20 61 73 20 55 54 46 2d 38 20 66  reted as UTF-8 f
2c520 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70  or.** sqlite3_op
2c530 65 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  en() and sqlite3
2c540 5f 6f 70 65 6e 5f 76 32 28 29 20 61 6e 64 20 61  _open_v2() and a
2c550 73 20 55 54 46 2d 31 36 20 69 6e 20 74 68 65 20  s UTF-16 in the 
2c560 6e 61 74 69 76 65 20 62 79 74 65 0a 2a 2a 20 6f  native byte.** o
2c570 72 64 65 72 20 66 6f 72 20 73 71 6c 69 74 65 33  rder for sqlite3
2c580 5f 6f 70 65 6e 31 36 28 29 2e 20 5e 28 41 20 5b  _open16(). ^(A [
2c590 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2c5a0 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 69 73 20 75  ion] handle is u
2c5b0 73 75 61 6c 6c 79 0a 2a 2a 20 72 65 74 75 72 6e  sually.** return
2c5c0 65 64 20 69 6e 20 2a 70 70 44 62 2c 20 65 76 65  ed in *ppDb, eve
2c5d0 6e 20 69 66 20 61 6e 20 65 72 72 6f 72 20 6f 63  n if an error oc
2c5e0 63 75 72 73 2e 20 20 54 68 65 20 6f 6e 6c 79 20  curs.  The only 
2c5f0 65 78 63 65 70 74 69 6f 6e 20 69 73 20 74 68 61  exception is tha
2c600 74 0a 2a 2a 20 69 66 20 53 51 4c 69 74 65 20 69  t.** if SQLite i
2c610 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f  s unable to allo
2c620 63 61 74 65 20 6d 65 6d 6f 72 79 20 74 6f 20 68  cate memory to h
2c630 6f 6c 64 20 74 68 65 20 5b 73 71 6c 69 74 65 33  old the [sqlite3
2c640 5d 20 6f 62 6a 65 63 74 2c 0a 2a 2a 20 61 20 4e  ] object,.** a N
2c650 55 4c 4c 20 77 69 6c 6c 20 62 65 20 77 72 69 74  ULL will be writ
2c660 74 65 6e 20 69 6e 74 6f 20 2a 70 70 44 62 20 69  ten into *ppDb i
2c670 6e 73 74 65 61 64 20 6f 66 20 61 20 70 6f 69 6e  nstead of a poin
2c680 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  ter to the [sqli
2c690 74 65 33 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2e 29  te3].** object.)
2c6a0 5e 20 5e 28 49 66 20 74 68 65 20 64 61 74 61 62  ^ ^(If the datab
2c6b0 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 28 61  ase is opened (a
2c6c0 6e 64 2f 6f 72 20 63 72 65 61 74 65 64 29 20 73  nd/or created) s
2c6d0 75 63 63 65 73 73 66 75 6c 6c 79 2c 20 74 68 65  uccessfully, the
2c6e0 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  n.** [SQLITE_OK]
2c6f0 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 4f   is returned.  O
2c700 74 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72 72  therwise an [err
2c710 6f 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74 75  or code] is retu
2c720 72 6e 65 64 2e 29 5e 20 5e 54 68 65 0a 2a 2a 20  rned.)^ ^The.** 
2c730 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28  [sqlite3_errmsg(
2c740 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 65  )] or [sqlite3_e
2c750 72 72 6d 73 67 31 36 28 29 5d 20 72 6f 75 74 69  rrmsg16()] routi
2c760 6e 65 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  nes can be used 
2c770 74 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20  to obtain.** an 
2c780 45 6e 67 6c 69 73 68 20 6c 61 6e 67 75 61 67 65  English language
2c790 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
2c7a0 74 68 65 20 65 72 72 6f 72 20 66 6f 6c 6c 6f 77  the error follow
2c7b0 69 6e 67 20 61 20 66 61 69 6c 75 72 65 20 6f 66  ing a failure of
2c7c0 20 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 73   any.** of the s
2c7d0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 72 6f  qlite3_open() ro
2c7e0 75 74 69 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  utines..**.** ^T
2c7f0 68 65 20 64 65 66 61 75 6c 74 20 65 6e 63 6f 64  he default encod
2c800 69 6e 67 20 77 69 6c 6c 20 62 65 20 55 54 46 2d  ing will be UTF-
2c810 38 20 66 6f 72 20 64 61 74 61 62 61 73 65 73 20  8 for databases 
2c820 63 72 65 61 74 65 64 20 75 73 69 6e 67 0a 2a 2a  created using.**
2c830 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
2c840 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  or sqlite3_open_
2c850 76 32 28 29 2e 20 20 5e 54 68 65 20 64 65 66 61  v2().  ^The defa
2c860 75 6c 74 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72  ult encoding for
2c870 20 64 61 74 61 62 61 73 65 73 0a 2a 2a 20 63 72   databases.** cr
2c880 65 61 74 65 64 20 75 73 69 6e 67 20 73 71 6c 69  eated using sqli
2c890 74 65 33 5f 6f 70 65 6e 31 36 28 29 20 77 69 6c  te3_open16() wil
2c8a0 6c 20 62 65 20 55 54 46 2d 31 36 20 69 6e 20 74  l be UTF-16 in t
2c8b0 68 65 20 6e 61 74 69 76 65 20 62 79 74 65 20 6f  he native byte o
2c8c0 72 64 65 72 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74  rder..**.** Whet
2c8d0 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20 65 72  her or not an er
2c8e0 72 6f 72 20 6f 63 63 75 72 73 20 77 68 65 6e 20  ror occurs when 
2c8f0 69 74 20 69 73 20 6f 70 65 6e 65 64 2c 20 72 65  it is opened, re
2c900 73 6f 75 72 63 65 73 0a 2a 2a 20 61 73 73 6f 63  sources.** assoc
2c910 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 5b  iated with the [
2c920 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2c930 69 6f 6e 5d 20 68 61 6e 64 6c 65 20 73 68 6f 75  ion] handle shou
2c940 6c 64 20 62 65 20 72 65 6c 65 61 73 65 64 20 62  ld be released b
2c950 79 0a 2a 2a 20 70 61 73 73 69 6e 67 20 69 74 20  y.** passing it 
2c960 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73  to [sqlite3_clos
2c970 65 28 29 5d 20 77 68 65 6e 20 69 74 20 69 73 20  e()] when it is 
2c980 6e 6f 20 6c 6f 6e 67 65 72 20 72 65 71 75 69 72  no longer requir
2c990 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  ed..**.** The sq
2c9a0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2c9b0 69 6e 74 65 72 66 61 63 65 20 77 6f 72 6b 73 20  interface works 
2c9c0 6c 69 6b 65 20 73 71 6c 69 74 65 33 5f 6f 70 65  like sqlite3_ope
2c9d0 6e 28 29 0a 2a 2a 20 65 78 63 65 70 74 20 74 68  n().** except th
2c9e0 61 74 20 69 74 20 61 63 63 65 70 74 73 20 74 77  at it accepts tw
2c9f0 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72  o additional par
2ca00 61 6d 65 74 65 72 73 20 66 6f 72 20 61 64 64 69  ameters for addi
2ca10 74 69 6f 6e 61 6c 20 63 6f 6e 74 72 6f 6c 0a 2a  tional control.*
2ca20 2a 20 6f 76 65 72 20 74 68 65 20 6e 65 77 20 64  * over the new d
2ca30 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
2ca40 6f 6e 2e 20 20 5e 28 54 68 65 20 66 6c 61 67 73  on.  ^(The flags
2ca50 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a   parameter to.**
2ca60 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2ca70 28 29 20 63 61 6e 20 74 61 6b 65 20 6f 6e 65 20  () can take one 
2ca80 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77  of.** the follow
2ca90 69 6e 67 20 74 68 72 65 65 20 76 61 6c 75 65 73  ing three values
2caa0 2c 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d  , optionally com
2cab0 62 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 0a  bined with the .
2cac0 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ** [SQLITE_OPEN_
2cad0 4e 4f 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49 54  NOMUTEX], [SQLIT
2cae0 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58  E_OPEN_FULLMUTEX
2caf0 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ], [SQLITE_OPEN_
2cb00 53 48 41 52 45 44 43 41 43 48 45 5d 2c 0a 2a 2a  SHAREDCACHE],.**
2cb10 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52   [SQLITE_OPEN_PR
2cb20 49 56 41 54 45 43 41 43 48 45 5d 2c 20 61 6e 64  IVATECACHE], and
2cb30 2f 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  /or [SQLITE_OPEN
2cb40 5f 55 52 49 5d 20 66 6c 61 67 73 3a 29 5e 0a 2a  _URI] flags:)^.*
2cb50 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5e 28 3c  *.** <dl>.** ^(<
2cb60 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  dt>[SQLITE_OPEN_
2cb70 52 45 41 44 4f 4e 4c 59 5d 3c 2f 64 74 3e 0a 2a  READONLY]</dt>.*
2cb80 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61  * <dd>The databa
2cb90 73 65 20 69 73 20 6f 70 65 6e 65 64 20 69 6e 20  se is opened in 
2cba0 72 65 61 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 20  read-only mode. 
2cbb0 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65   If the database
2cbc0 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 61 6c 72   does not.** alr
2cbd0 65 61 64 79 20 65 78 69 73 74 2c 20 61 6e 20 65  eady exist, an e
2cbe0 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
2cbf0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  .</dd>)^.**.** ^
2cc00 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45  (<dt>[SQLITE_OPE
2cc10 4e 5f 52 45 41 44 57 52 49 54 45 5d 3c 2f 64 74  N_READWRITE]</dt
2cc20 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61 74  >.** <dd>The dat
2cc30 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20  abase is opened 
2cc40 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20  for reading and 
2cc50 77 72 69 74 69 6e 67 20 69 66 20 70 6f 73 73 69  writing if possi
2cc60 62 6c 65 2c 20 6f 72 20 72 65 61 64 69 6e 67 0a  ble, or reading.
2cc70 2a 2a 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 66  ** only if the f
2cc80 69 6c 65 20 69 73 20 77 72 69 74 65 20 70 72 6f  ile is write pro
2cc90 74 65 63 74 65 64 20 62 79 20 74 68 65 20 6f 70  tected by the op
2cca0 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 20  erating system. 
2ccb0 20 49 6e 20 65 69 74 68 65 72 0a 2a 2a 20 63 61   In either.** ca
2ccc0 73 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  se the database 
2ccd0 6d 75 73 74 20 61 6c 72 65 61 64 79 20 65 78 69  must already exi
2cce0 73 74 2c 20 6f 74 68 65 72 77 69 73 65 20 61 6e  st, otherwise an
2ccf0 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
2cd00 65 64 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  ed.</dd>)^.**.**
2cd10 20 5e 28 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f   ^(<dt>[SQLITE_O
2cd20 50 45 4e 5f 52 45 41 44 57 52 49 54 45 5d 20 7c  PEN_READWRITE] |
2cd30 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52   [SQLITE_OPEN_CR
2cd40 45 41 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  EATE]</dt>.** <d
2cd50 64 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69  d>The database i
2cd60 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61  s opened for rea
2cd70 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67  ding and writing
2cd80 2c 20 61 6e 64 20 69 73 20 63 72 65 61 74 65 64  , and is created
2cd90 20 69 66 0a 2a 2a 20 69 74 20 64 6f 65 73 20 6e   if.** it does n
2cda0 6f 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74  ot already exist
2cdb0 2e 20 54 68 69 73 20 69 73 20 74 68 65 20 62 65  . This is the be
2cdc0 68 61 76 69 6f 72 20 74 68 61 74 20 69 73 20 61  havior that is a
2cdd0 6c 77 61 79 73 20 75 73 65 64 20 66 6f 72 0a 2a  lways used for.*
2cde0 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  * sqlite3_open()
2cdf0 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65   and sqlite3_ope
2ce00 6e 31 36 28 29 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  n16().</dd>)^.**
2ce10 20 3c 2f 64 6c 3e 0a 2a 2a 0a 2a 2a 20 49 66 20   </dl>.**.** If 
2ce20 74 68 65 20 33 72 64 20 70 61 72 61 6d 65 74 65  the 3rd paramete
2ce30 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65  r to sqlite3_ope
2ce40 6e 5f 76 32 28 29 20 69 73 20 6e 6f 74 20 6f 6e  n_v2() is not on
2ce50 65 20 6f 66 20 74 68 65 0a 2a 2a 20 63 6f 6d 62  e of the.** comb
2ce60 69 6e 61 74 69 6f 6e 73 20 73 68 6f 77 6e 20 61  inations shown a
2ce70 62 6f 76 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20  bove optionally 
2ce80 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 6f 74  combined with ot
2ce90 68 65 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f  her.** [SQLITE_O
2cea0 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 53  PEN_READONLY | S
2ceb0 51 4c 49 54 45 5f 4f 50 45 4e 5f 2a 20 62 69 74  QLITE_OPEN_* bit
2cec0 73 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 62  s].** then the b
2ced0 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66  ehavior is undef
2cee0 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  ined..**.** ^If 
2cef0 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  the [SQLITE_OPEN
2cf00 5f 4e 4f 4d 55 54 45 58 5d 20 66 6c 61 67 20 69  _NOMUTEX] flag i
2cf10 73 20 73 65 74 2c 20 74 68 65 6e 20 74 68 65 20  s set, then the 
2cf20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2cf30 69 6f 6e 0a 2a 2a 20 6f 70 65 6e 73 20 69 6e 20  ion.** opens in 
2cf40 74 68 65 20 6d 75 6c 74 69 2d 74 68 72 65 61 64  the multi-thread
2cf50 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
2cf60 5d 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65  ] as long as the
2cf70 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 0a 2a   single-thread.*
2cf80 2a 20 6d 6f 64 65 20 68 61 73 20 6e 6f 74 20 62  * mode has not b
2cf90 65 65 6e 20 73 65 74 20 61 74 20 63 6f 6d 70 69  een set at compi
2cfa0 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72 74  le-time or start
2cfb0 2d 74 69 6d 65 2e 20 20 5e 49 66 20 74 68 65 0a  -time.  ^If the.
2cfc0 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ** [SQLITE_OPEN_
2cfd0 46 55 4c 4c 4d 55 54 45 58 5d 20 66 6c 61 67 20  FULLMUTEX] flag 
2cfe0 69 73 20 73 65 74 20 74 68 65 6e 20 74 68 65 20  is set then the 
2cff0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
2d000 69 6f 6e 20 6f 70 65 6e 73 0a 2a 2a 20 69 6e 20  ion opens.** in 
2d010 74 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20 5b  the serialized [
2d020 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
2d030 75 6e 6c 65 73 73 20 73 69 6e 67 6c 65 2d 74 68  unless single-th
2d040 72 65 61 64 20 77 61 73 0a 2a 2a 20 70 72 65 76  read was.** prev
2d050 69 6f 75 73 6c 79 20 73 65 6c 65 63 74 65 64 20  iously selected 
2d060 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
2d070 6f 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 0a 2a  or start-time..*
2d080 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f  * ^The [SQLITE_O
2d090 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 5d  PEN_SHAREDCACHE]
2d0a0 20 66 6c 61 67 20 63 61 75 73 65 73 20 74 68 65   flag causes the
2d0b0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2d0c0 74 69 6f 6e 20 74 6f 20 62 65 0a 2a 2a 20 65 6c  tion to be.** el
2d0d0 69 67 69 62 6c 65 20 74 6f 20 75 73 65 20 5b 73  igible to use [s
2d0e0 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64 65  hared cache mode
2d0f0 5d 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66  ], regardless of
2d100 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20   whether or not 
2d110 73 68 61 72 65 64 0a 2a 2a 20 63 61 63 68 65 20  shared.** cache 
2d120 69 73 20 65 6e 61 62 6c 65 64 20 75 73 69 6e 67  is enabled using
2d130 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65   [sqlite3_enable
2d140 5f 73 68 61 72 65 64 5f 63 61 63 68 65 28 29 5d  _shared_cache()]
2d150 2e 20 20 5e 54 68 65 0a 2a 2a 20 5b 53 51 4c 49  .  ^The.** [SQLI
2d160 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43  TE_OPEN_PRIVATEC
2d170 41 43 48 45 5d 20 66 6c 61 67 20 63 61 75 73 65  ACHE] flag cause
2d180 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  s the database c
2d190 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 6e 6f 74  onnection to not
2d1a0 0a 2a 2a 20 70 61 72 74 69 63 69 70 61 74 65 20  .** participate 
2d1b0 69 6e 20 5b 73 68 61 72 65 64 20 63 61 63 68 65  in [shared cache
2d1c0 20 6d 6f 64 65 5d 20 65 76 65 6e 20 69 66 20 69   mode] even if i
2d1d0 74 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a  t is enabled..**
2d1e0 0a 2a 2a 20 5e 54 68 65 20 66 6f 75 72 74 68 20  .** ^The fourth 
2d1f0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
2d200 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69  ite3_open_v2() i
2d210 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
2d220 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66  e.** [sqlite3_vf
2d230 73 5d 20 6f 62 6a 65 63 74 20 74 68 61 74 20 64  s] object that d
2d240 65 66 69 6e 65 73 20 74 68 65 20 6f 70 65 72 61  efines the opera
2d250 74 69 6e 67 20 73 79 73 74 65 6d 20 69 6e 74 65  ting system inte
2d260 72 66 61 63 65 20 74 68 61 74 0a 2a 2a 20 74 68  rface that.** th
2d270 65 20 6e 65 77 20 64 61 74 61 62 61 73 65 20 63  e new database c
2d280 6f 6e 6e 65 63 74 69 6f 6e 20 73 68 6f 75 6c 64  onnection should
2d290 20 75 73 65 2e 20 20 5e 49 66 20 74 68 65 20 66   use.  ^If the f
2d2a0 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
2d2b0 69 73 0a 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69  is.** a NULL poi
2d2c0 6e 74 65 72 20 74 68 65 6e 20 74 68 65 20 64 65  nter then the de
2d2d0 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76  fault [sqlite3_v
2d2e0 66 73 5d 20 6f 62 6a 65 63 74 20 69 73 20 75 73  fs] object is us
2d2f0 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  ed..**.** ^If th
2d300 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 22 3a  e filename is ":
2d310 6d 65 6d 6f 72 79 3a 22 2c 20 74 68 65 6e 20 61  memory:", then a
2d320 20 70 72 69 76 61 74 65 2c 20 74 65 6d 70 6f 72   private, tempor
2d330 61 72 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61  ary in-memory da
2d340 74 61 62 61 73 65 0a 2a 2a 20 69 73 20 63 72 65  tabase.** is cre
2d350 61 74 65 64 20 66 6f 72 20 74 68 65 20 63 6f 6e  ated for the con
2d360 6e 65 63 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20  nection.  ^This 
2d370 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61  in-memory databa
2d380 73 65 20 77 69 6c 6c 20 76 61 6e 69 73 68 20 77  se will vanish w
2d390 68 65 6e 0a 2a 2a 20 74 68 65 20 64 61 74 61 62  hen.** the datab
2d3a0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
2d3b0 73 20 63 6c 6f 73 65 64 2e 20 20 46 75 74 75 72  s closed.  Futur
2d3c0 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
2d3d0 4c 69 74 65 20 6d 69 67 68 74 0a 2a 2a 20 6d 61  Lite might.** ma
2d3e0 6b 65 20 75 73 65 20 6f 66 20 61 64 64 69 74 69  ke use of additi
2d3f0 6f 6e 61 6c 20 73 70 65 63 69 61 6c 20 66 69 6c  onal special fil
2d400 65 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69  enames that begi
2d410 6e 20 77 69 74 68 20 74 68 65 20 22 3a 22 20 63  n with the ":" c
2d420 68 61 72 61 63 74 65 72 2e 0a 2a 2a 20 49 74 20  haracter..** It 
2d430 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74  is recommended t
2d440 68 61 74 20 77 68 65 6e 20 61 20 64 61 74 61 62  hat when a datab
2d450 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 61 63 74  ase filename act
2d460 75 61 6c 6c 79 20 64 6f 65 73 20 62 65 67 69 6e  ually does begin
2d470 20 77 69 74 68 0a 2a 2a 20 61 20 22 3a 22 20 63   with.** a ":" c
2d480 68 61 72 61 63 74 65 72 20 79 6f 75 20 73 68 6f  haracter you sho
2d490 75 6c 64 20 70 72 65 66 69 78 20 74 68 65 20 66  uld prefix the f
2d4a0 69 6c 65 6e 61 6d 65 20 77 69 74 68 20 61 20 70  ilename with a p
2d4b0 61 74 68 6e 61 6d 65 20 73 75 63 68 20 61 73 0a  athname such as.
2d4c0 2a 2a 20 22 2e 2f 22 20 74 6f 20 61 76 6f 69 64  ** "./" to avoid
2d4d0 20 61 6d 62 69 67 75 69 74 79 2e 0a 2a 2a 0a 2a   ambiguity..**.*
2d4e0 2a 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e 61  * ^If the filena
2d4f0 6d 65 20 69 73 20 61 6e 20 65 6d 70 74 79 20 73  me is an empty s
2d500 74 72 69 6e 67 2c 20 74 68 65 6e 20 61 20 70 72  tring, then a pr
2d510 69 76 61 74 65 2c 20 74 65 6d 70 6f 72 61 72 79  ivate, temporary
2d520 0a 2a 2a 20 6f 6e 2d 64 69 73 6b 20 64 61 74 61  .** on-disk data
2d530 62 61 73 65 20 77 69 6c 6c 20 62 65 20 63 72 65  base will be cre
2d540 61 74 65 64 2e 20 20 5e 54 68 69 73 20 70 72 69  ated.  ^This pri
2d550 76 61 74 65 20 64 61 74 61 62 61 73 65 20 77 69  vate database wi
2d560 6c 6c 20 62 65 0a 2a 2a 20 61 75 74 6f 6d 61 74  ll be.** automat
2d570 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 61  ically deleted a
2d580 73 20 73 6f 6f 6e 20 61 73 20 74 68 65 20 64 61  s soon as the da
2d590 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2d5a0 6e 20 69 73 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a  n is closed..**.
2d5b0 2a 2a 20 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d  ** [[URI filenam
2d5c0 65 73 20 69 6e 20 73 71 6c 69 74 65 33 5f 6f 70  es in sqlite3_op
2d5d0 65 6e 28 29 5d 5d 20 3c 68 33 3e 55 52 49 20 46  en()]] <h3>URI F
2d5e0 69 6c 65 6e 61 6d 65 73 3c 2f 68 33 3e 0a 2a 2a  ilenames</h3>.**
2d5f0 0a 2a 2a 20 5e 49 66 20 5b 55 52 49 20 66 69 6c  .** ^If [URI fil
2d600 65 6e 61 6d 65 5d 20 69 6e 74 65 72 70 72 65 74  ename] interpret
2d610 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64  ation is enabled
2d620 2c 20 61 6e 64 20 74 68 65 20 66 69 6c 65 6e 61  , and the filena
2d630 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 62  me argument.** b
2d640 65 67 69 6e 73 20 77 69 74 68 20 22 66 69 6c 65  egins with "file
2d650 3a 22 2c 20 74 68 65 6e 20 74 68 65 20 66 69 6c  :", then the fil
2d660 65 6e 61 6d 65 20 69 73 20 69 6e 74 65 72 70 72  ename is interpr
2d670 65 74 65 64 20 61 73 20 61 20 55 52 49 2e 20 5e  eted as a URI. ^
2d680 55 52 49 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20  URI.** filename 
2d690 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69  interpretation i
2d6a0 73 20 65 6e 61 62 6c 65 64 20 69 66 20 74 68 65  s enabled if the
2d6b0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52   [SQLITE_OPEN_UR
2d6c0 49 5d 20 66 6c 61 67 20 69 73 0a 2a 2a 20 73 65  I] flag is.** se
2d6d0 74 20 69 6e 20 74 68 65 20 74 68 69 72 64 20 61  t in the third a
2d6e0 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
2d6f0 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2c 20 6f 72  e3_open_v2(), or
2d700 20 69 66 20 69 74 20 68 61 73 0a 2a 2a 20 62 65   if it has.** be
2d710 65 6e 20 65 6e 61 62 6c 65 64 20 67 6c 6f 62 61  en enabled globa
2d720 6c 6c 79 20 75 73 69 6e 67 20 74 68 65 20 5b 53  lly using the [S
2d730 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49  QLITE_CONFIG_URI
2d740 5d 20 6f 70 74 69 6f 6e 20 77 69 74 68 20 74 68  ] option with th
2d750 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f  e.** [sqlite3_co
2d760 6e 66 69 67 28 29 5d 20 6d 65 74 68 6f 64 20 6f  nfig()] method o
2d770 72 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  r by the [SQLITE
2d780 5f 55 53 45 5f 55 52 49 5d 20 63 6f 6d 70 69 6c  _USE_URI] compil
2d790 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a  e-time option..*
2d7a0 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 69  * URI filename i
2d7b0 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73  nterpretation is
2d7c0 20 74 75 72 6e 65 64 20 6f 66 66 0a 2a 2a 20 62   turned off.** b
2d7d0 79 20 64 65 66 61 75 6c 74 2c 20 62 75 74 20 66  y default, but f
2d7e0 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f  uture releases o
2d7f0 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20 65  f SQLite might e
2d800 6e 61 62 6c 65 20 55 52 49 20 66 69 6c 65 6e 61  nable URI filena
2d810 6d 65 0a 2a 2a 20 69 6e 74 65 72 70 72 65 74 61  me.** interpreta
2d820 74 69 6f 6e 20 62 79 20 64 65 66 61 75 6c 74 2e  tion by default.
2d830 20 20 53 65 65 20 22 5b 55 52 49 20 66 69 6c 65    See "[URI file
2d840 6e 61 6d 65 73 5d 22 20 66 6f 72 20 61 64 64 69  names]" for addi
2d850 74 69 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d  tional.** inform
2d860 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 55 52 49  ation..**.** URI
2d870 20 66 69 6c 65 6e 61 6d 65 73 20 61 72 65 20 70   filenames are p
2d880 61 72 73 65 64 20 61 63 63 6f 72 64 69 6e 67 20  arsed according 
2d890 74 6f 20 52 46 43 20 33 39 38 36 2e 20 5e 49 66  to RFC 3986. ^If
2d8a0 20 74 68 65 20 55 52 49 20 63 6f 6e 74 61 69 6e   the URI contain
2d8b0 73 20 61 6e 0a 2a 2a 20 61 75 74 68 6f 72 69 74  s an.** authorit
2d8c0 79 2c 20 74 68 65 6e 20 69 74 20 6d 75 73 74 20  y, then it must 
2d8d0 62 65 20 65 69 74 68 65 72 20 61 6e 20 65 6d 70  be either an emp
2d8e0 74 79 20 73 74 72 69 6e 67 20 6f 72 20 74 68 65  ty string or the
2d8f0 20 73 74 72 69 6e 67 20 0a 2a 2a 20 22 6c 6f 63   string .** "loc
2d900 61 6c 68 6f 73 74 22 2e 20 5e 49 66 20 74 68 65  alhost". ^If the
2d910 20 61 75 74 68 6f 72 69 74 79 20 69 73 20 6e 6f   authority is no
2d920 74 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  t an empty strin
2d930 67 20 6f 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22  g or "localhost"
2d940 2c 20 61 6e 20 0a 2a 2a 20 65 72 72 6f 72 20 69  , an .** error i
2d950 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68  s returned to th
2d960 65 20 63 61 6c 6c 65 72 2e 20 5e 54 68 65 20 66  e caller. ^The f
2d970 72 61 67 6d 65 6e 74 20 63 6f 6d 70 6f 6e 65 6e  ragment componen
2d980 74 20 6f 66 20 61 20 55 52 49 2c 20 69 66 20 0a  t of a URI, if .
2d990 2a 2a 20 70 72 65 73 65 6e 74 2c 20 69 73 20 69  ** present, is i
2d9a0 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 53  gnored..**.** ^S
2d9b0 51 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 70  QLite uses the p
2d9c0 61 74 68 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66  ath component of
2d9d0 20 74 68 65 20 55 52 49 20 61 73 20 74 68 65 20   the URI as the 
2d9e0 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 69 73 6b  name of the disk
2d9f0 20 66 69 6c 65 0a 2a 2a 20 77 68 69 63 68 20 63   file.** which c
2da00 6f 6e 74 61 69 6e 73 20 74 68 65 20 64 61 74 61  ontains the data
2da10 62 61 73 65 2e 20 5e 49 66 20 74 68 65 20 70 61  base. ^If the pa
2da20 74 68 20 62 65 67 69 6e 73 20 77 69 74 68 20 61  th begins with a
2da30 20 27 2f 27 20 63 68 61 72 61 63 74 65 72 2c 20   '/' character, 
2da40 0a 2a 2a 20 74 68 65 6e 20 69 74 20 69 73 20 69  .** then it is i
2da50 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61 6e  nterpreted as an
2da60 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68 2e 20   absolute path. 
2da70 5e 49 66 20 74 68 65 20 70 61 74 68 20 64 6f 65  ^If the path doe
2da80 73 20 6e 6f 74 20 62 65 67 69 6e 20 0a 2a 2a 20  s not begin .** 
2da90 77 69 74 68 20 61 20 27 2f 27 20 28 6d 65 61 6e  with a '/' (mean
2daa0 69 6e 67 20 74 68 61 74 20 74 68 65 20 61 75 74  ing that the aut
2dab0 68 6f 72 69 74 79 20 73 65 63 74 69 6f 6e 20 69  hority section i
2dac0 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
2dad0 68 65 20 55 52 49 29 0a 2a 2a 20 74 68 65 6e 20  he URI).** then 
2dae0 74 68 65 20 70 61 74 68 20 69 73 20 69 6e 74 65  the path is inte
2daf0 72 70 72 65 74 65 64 20 61 73 20 61 20 72 65 6c  rpreted as a rel
2db00 61 74 69 76 65 20 70 61 74 68 2e 20 0a 2a 2a 20  ative path. .** 
2db10 5e 28 4f 6e 20 77 69 6e 64 6f 77 73 2c 20 74 68  ^(On windows, th
2db20 65 20 66 69 72 73 74 20 63 6f 6d 70 6f 6e 65 6e  e first componen
2db30 74 20 6f 66 20 61 6e 20 61 62 73 6f 6c 75 74 65  t of an absolute
2db40 20 70 61 74 68 20 0a 2a 2a 20 69 73 20 61 20 64   path .** is a d
2db50 72 69 76 65 20 73 70 65 63 69 66 69 63 61 74 69  rive specificati
2db60 6f 6e 20 28 65 2e 67 2e 20 22 43 3a 22 29 2e 29  on (e.g. "C:").)
2db70 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 63 6f 72 65 20 55  ^.**.** [[core U
2db80 52 49 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  RI query paramet
2db90 65 72 73 5d 5d 0a 2a 2a 20 54 68 65 20 71 75 65  ers]].** The que
2dba0 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20  ry component of 
2dbb0 61 20 55 52 49 20 6d 61 79 20 63 6f 6e 74 61 69  a URI may contai
2dbc0 6e 20 70 61 72 61 6d 65 74 65 72 73 20 74 68 61  n parameters tha
2dbd0 74 20 61 72 65 20 69 6e 74 65 72 70 72 65 74 65  t are interprete
2dbe0 64 0a 2a 2a 20 65 69 74 68 65 72 20 62 79 20 53  d.** either by S
2dbf0 51 4c 69 74 65 20 69 74 73 65 6c 66 2c 20 6f 72  QLite itself, or
2dc00 20 62 79 20 61 20 5b 56 46 53 20 7c 20 63 75 73   by a [VFS | cus
2dc10 74 6f 6d 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  tom VFS implemen
2dc20 74 61 74 69 6f 6e 5d 2e 0a 2a 2a 20 53 51 4c 69  tation]..** SQLi
2dc30 74 65 20 61 6e 64 20 69 74 73 20 62 75 69 6c 74  te and its built
2dc40 2d 69 6e 20 5b 56 46 53 65 73 5d 20 69 6e 74 65  -in [VFSes] inte
2dc50 72 70 72 65 74 20 74 68 65 0a 2a 2a 20 66 6f 6c  rpret the.** fol
2dc60 6c 6f 77 69 6e 67 20 71 75 65 72 79 20 70 61 72  lowing query par
2dc70 61 6d 65 74 65 72 73 3a 0a 2a 2a 0a 2a 2a 20 3c  ameters:.**.** <
2dc80 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62  ul>.**   <li> <b
2dc90 3e 76 66 73 3c 2f 62 3e 3a 20 5e 54 68 65 20 22  >vfs</b>: ^The "
2dca0 76 66 73 22 20 70 61 72 61 6d 65 74 65 72 20 6d  vfs" parameter m
2dcb0 61 79 20 62 65 20 75 73 65 64 20 74 6f 20 73 70  ay be used to sp
2dcc0 65 63 69 66 79 20 74 68 65 20 6e 61 6d 65 20 6f  ecify the name o
2dcd0 66 0a 2a 2a 20 20 20 20 20 61 20 56 46 53 20 6f  f.**     a VFS o
2dce0 62 6a 65 63 74 20 74 68 61 74 20 70 72 6f 76 69  bject that provi
2dcf0 64 65 73 20 74 68 65 20 6f 70 65 72 61 74 69 6e  des the operatin
2dd00 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
2dd10 63 65 20 74 68 61 74 20 73 68 6f 75 6c 64 0a 2a  ce that should.*
2dd20 2a 20 20 20 20 20 62 65 20 75 73 65 64 20 74 6f  *     be used to
2dd30 20 61 63 63 65 73 73 20 74 68 65 20 64 61 74 61   access the data
2dd40 62 61 73 65 20 66 69 6c 65 20 6f 6e 20 64 69 73  base file on dis
2dd50 6b 2e 20 5e 49 66 20 74 68 69 73 20 6f 70 74 69  k. ^If this opti
2dd60 6f 6e 20 69 73 20 73 65 74 20 74 6f 0a 2a 2a 20  on is set to.** 
2dd70 20 20 20 20 61 6e 20 65 6d 70 74 79 20 73 74 72      an empty str
2dd80 69 6e 67 20 74 68 65 20 64 65 66 61 75 6c 74 20  ing the default 
2dd90 56 46 53 20 6f 62 6a 65 63 74 20 69 73 20 75 73  VFS object is us
2dda0 65 64 2e 20 5e 53 70 65 63 69 66 79 69 6e 67 20  ed. ^Specifying 
2ddb0 61 6e 20 75 6e 6b 6e 6f 77 6e 0a 2a 2a 20 20 20  an unknown.**   
2ddc0 20 20 56 46 53 20 69 73 20 61 6e 20 65 72 72 6f    VFS is an erro
2ddd0 72 2e 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f  r. ^If sqlite3_o
2dde0 70 65 6e 5f 76 32 28 29 20 69 73 20 75 73 65 64  pen_v2() is used
2ddf0 20 61 6e 64 20 74 68 65 20 76 66 73 20 6f 70 74   and the vfs opt
2de00 69 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20 70 72  ion is.**     pr
2de10 65 73 65 6e 74 2c 20 74 68 65 6e 20 74 68 65 20  esent, then the 
2de20 56 46 53 20 73 70 65 63 69 66 69 65 64 20 62 79  VFS specified by
2de30 20 74 68 65 20 6f 70 74 69 6f 6e 20 74 61 6b 65   the option take
2de40 73 20 70 72 65 63 65 64 65 6e 63 65 20 6f 76 65  s precedence ove
2de50 72 0a 2a 2a 20 20 20 20 20 74 68 65 20 76 61 6c  r.**     the val
2de60 75 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65  ue passed as the
2de70 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
2de80 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65  r to sqlite3_ope
2de90 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20  n_v2()..**.**   
2dea0 3c 6c 69 3e 20 3c 62 3e 6d 6f 64 65 3c 2f 62 3e  <li> <b>mode</b>
2deb0 3a 20 5e 28 54 68 65 20 6d 6f 64 65 20 70 61 72  : ^(The mode par
2dec0 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 73 65  ameter may be se
2ded0 74 20 74 6f 20 65 69 74 68 65 72 20 22 72 6f 22  t to either "ro"
2dee0 2c 20 22 72 77 22 2c 0a 2a 2a 20 20 20 20 20 22  , "rw",.**     "
2def0 72 77 63 22 2c 20 6f 72 20 22 6d 65 6d 6f 72 79  rwc", or "memory
2df00 22 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f  ". Attempting to
2df10 20 73 65 74 20 69 74 20 74 6f 20 61 6e 79 20 6f   set it to any o
2df20 74 68 65 72 20 76 61 6c 75 65 20 69 73 0a 2a 2a  ther value is.**
2df30 20 20 20 20 20 61 6e 20 65 72 72 6f 72 29 5e 2e       an error)^.
2df40 20 0a 2a 2a 20 20 20 20 20 5e 49 66 20 22 72 6f   .**     ^If "ro
2df50 22 20 69 73 20 73 70 65 63 69 66 69 65 64 2c 20  " is specified, 
2df60 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73  then the databas
2df70 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20  e is opened for 
2df80 72 65 61 64 2d 6f 6e 6c 79 20 0a 2a 2a 20 20 20  read-only .**   
2df90 20 20 61 63 63 65 73 73 2c 20 6a 75 73 74 20 61    access, just a
2dfa0 73 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45  s if the [SQLITE
2dfb0 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 20  _OPEN_READONLY] 
2dfc0 66 6c 61 67 20 68 61 64 20 62 65 65 6e 20 73 65  flag had been se
2dfd0 74 20 69 6e 20 74 68 65 20 0a 2a 2a 20 20 20 20  t in the .**    
2dfe0 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20   third argument 
2dff0 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  to sqlite3_open_
2e000 76 32 28 29 2e 20 5e 49 66 20 74 68 65 20 6d 6f  v2(). ^If the mo
2e010 64 65 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74  de option is set
2e020 20 74 6f 20 0a 2a 2a 20 20 20 20 20 22 72 77 22   to .**     "rw"
2e030 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  , then the datab
2e040 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f  ase is opened fo
2e050 72 20 72 65 61 64 2d 77 72 69 74 65 20 28 62 75  r read-write (bu
2e060 74 20 6e 6f 74 20 63 72 65 61 74 65 29 20 0a 2a  t not create) .*
2e070 2a 20 20 20 20 20 61 63 63 65 73 73 2c 20 61 73  *     access, as
2e080 20 69 66 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f   if SQLITE_OPEN_
2e090 52 45 41 44 57 52 49 54 45 20 28 62 75 74 20 6e  READWRITE (but n
2e0a0 6f 74 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43  ot SQLITE_OPEN_C
2e0b0 52 45 41 54 45 29 20 68 61 64 20 0a 2a 2a 20 20  REATE) had .**  
2e0c0 20 20 20 62 65 65 6e 20 73 65 74 2e 20 5e 56 61     been set. ^Va
2e0d0 6c 75 65 20 22 72 77 63 22 20 69 73 20 65 71 75  lue "rwc" is equ
2e0e0 69 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74 69  ivalent to setti
2e0f0 6e 67 20 62 6f 74 68 20 0a 2a 2a 20 20 20 20 20  ng both .**     
2e100 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
2e110 57 52 49 54 45 20 61 6e 64 20 53 51 4c 49 54 45  WRITE and SQLITE
2e120 5f 4f 50 45 4e 5f 43 52 45 41 54 45 2e 20 20 5e  _OPEN_CREATE.  ^
2e130 49 66 20 74 68 65 20 6d 6f 64 65 20 6f 70 74 69  If the mode opti
2e140 6f 6e 20 69 73 0a 2a 2a 20 20 20 20 20 73 65 74  on is.**     set
2e150 20 74 6f 20 22 6d 65 6d 6f 72 79 22 20 74 68 65   to "memory" the
2e160 6e 20 61 20 70 75 72 65 20 5b 69 6e 2d 6d 65 6d  n a pure [in-mem
2e170 6f 72 79 20 64 61 74 61 62 61 73 65 5d 20 74 68  ory database] th
2e180 61 74 20 6e 65 76 65 72 20 72 65 61 64 73 0a 2a  at never reads.*
2e190 2a 20 20 20 20 20 6f 72 20 77 72 69 74 65 73 20  *     or writes 
2e1a0 66 72 6f 6d 20 64 69 73 6b 20 69 73 20 75 73 65  from disk is use
2e1b0 64 2e 20 5e 49 74 20 69 73 20 61 6e 20 65 72 72  d. ^It is an err
2e1c0 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 61 20  or to specify a 
2e1d0 76 61 6c 75 65 20 66 6f 72 0a 2a 2a 20 20 20 20  value for.**    
2e1e0 20 74 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65   the mode parame
2e1f0 74 65 72 20 74 68 61 74 20 69 73 20 6c 65 73 73  ter that is less
2e200 20 72 65 73 74 72 69 63 74 69 76 65 20 74 68 61   restrictive tha
2e210 6e 20 74 68 61 74 20 73 70 65 63 69 66 69 65 64  n that specified
2e220 20 62 79 0a 2a 2a 20 20 20 20 20 74 68 65 20 66   by.**     the f
2e230 6c 61 67 73 20 70 61 73 73 65 64 20 69 6e 20 74  lags passed in t
2e240 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74  he third paramet
2e250 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  er to sqlite3_op
2e260 65 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20  en_v2()..**.**  
2e270 20 3c 6c 69 3e 20 3c 62 3e 63 61 63 68 65 3c 2f   <li> <b>cache</
2e280 62 3e 3a 20 5e 54 68 65 20 63 61 63 68 65 20 70  b>: ^The cache p
2e290 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20  arameter may be 
2e2a0 73 65 74 20 74 6f 20 65 69 74 68 65 72 20 22 73  set to either "s
2e2b0 68 61 72 65 64 22 20 6f 72 0a 2a 2a 20 20 20 20  hared" or.**    
2e2c0 20 22 70 72 69 76 61 74 65 22 2e 20 5e 53 65 74   "private". ^Set
2e2d0 74 69 6e 67 20 69 74 20 74 6f 20 22 73 68 61 72  ting it to "shar
2e2e0 65 64 22 20 69 73 20 65 71 75 69 76 61 6c 65 6e  ed" is equivalen
2e2f0 74 20 74 6f 20 73 65 74 74 69 6e 67 20 74 68 65  t to setting the
2e300 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f 4f  .**     SQLITE_O
2e310 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20  PEN_SHAREDCACHE 
2e320 62 69 74 20 69 6e 20 74 68 65 20 66 6c 61 67 73  bit in the flags
2e330 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64   argument passed
2e340 20 74 6f 0a 2a 2a 20 20 20 20 20 73 71 6c 69 74   to.**     sqlit
2e350 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 5e 53  e3_open_v2(). ^S
2e360 65 74 74 69 6e 67 20 74 68 65 20 63 61 63 68 65  etting the cache
2e370 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 22 70   parameter to "p
2e380 72 69 76 61 74 65 22 20 69 73 20 0a 2a 2a 20 20  rivate" is .**  
2e390 20 20 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f     equivalent to
2e3a0 20 73 65 74 74 69 6e 67 20 74 68 65 20 53 51 4c   setting the SQL
2e3b0 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45  ITE_OPEN_PRIVATE
2e3c0 43 41 43 48 45 20 62 69 74 2e 0a 2a 2a 20 20 20  CACHE bit..**   
2e3d0 20 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f 70    ^If sqlite3_op
2e3e0 65 6e 5f 76 32 28 29 20 69 73 20 75 73 65 64 20  en_v2() is used 
2e3f0 61 6e 64 20 74 68 65 20 22 63 61 63 68 65 22 20  and the "cache" 
2e400 70 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 65  parameter is pre
2e410 73 65 6e 74 20 69 6e 0a 2a 2a 20 20 20 20 20 61  sent in.**     a
2e420 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 2c 20 69   URI filename, i
2e430 74 73 20 76 61 6c 75 65 20 6f 76 65 72 72 69 64  ts value overrid
2e440 65 73 20 61 6e 79 20 62 65 68 61 76 69 6f 72 20  es any behavior 
2e450 72 65 71 75 65 73 74 65 64 20 62 79 20 73 65 74  requested by set
2e460 74 69 6e 67 0a 2a 2a 20 20 20 20 20 53 51 4c 49  ting.**     SQLI
2e470 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43  TE_OPEN_PRIVATEC
2e480 41 43 48 45 20 6f 72 20 53 51 4c 49 54 45 5f 4f  ACHE or SQLITE_O
2e490 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20  PEN_SHAREDCACHE 
2e4a0 66 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69  flag..**.**  <li
2e4b0 3e 20 3c 62 3e 70 73 6f 77 3c 2f 62 3e 3a 20 5e  > <b>psow</b>: ^
2e4c0 54 68 65 20 70 73 6f 77 20 70 61 72 61 6d 65 74  The psow paramet
2e4d0 65 72 20 69 6e 64 69 63 61 74 65 73 20 77 68 65  er indicates whe
2e4e0 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 0a  ther or not the.
2e4f0 2a 2a 20 20 20 20 20 5b 70 6f 77 65 72 73 61 66  **     [powersaf
2e500 65 20 6f 76 65 72 77 72 69 74 65 5d 20 70 72 6f  e overwrite] pro
2e510 70 65 72 74 79 20 64 6f 65 73 20 6f 72 20 64 6f  perty does or do
2e520 65 73 20 6e 6f 74 20 61 70 70 6c 79 20 74 6f 20  es not apply to 
2e530 74 68 65 0a 2a 2a 20 20 20 20 20 73 74 6f 72 61  the.**     stora
2e540 67 65 20 6d 65 64 69 61 20 6f 6e 20 77 68 69 63  ge media on whic
2e550 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  h the database f
2e560 69 6c 65 20 72 65 73 69 64 65 73 2e 0a 2a 2a 0a  ile resides..**.
2e570 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 6e 6f 6c 6f  **  <li> <b>nolo
2e580 63 6b 3c 2f 62 3e 3a 20 5e 54 68 65 20 6e 6f 6c  ck</b>: ^The nol
2e590 6f 63 6b 20 70 61 72 61 6d 65 74 65 72 20 69 73  ock parameter is
2e5a0 20 61 20 62 6f 6f 6c 65 61 6e 20 71 75 65 72 79   a boolean query
2e5b0 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 20 20   parameter.**   
2e5c0 20 20 77 68 69 63 68 20 69 66 20 73 65 74 20 64    which if set d
2e5d0 69 73 61 62 6c 65 73 20 66 69 6c 65 20 6c 6f 63  isables file loc
2e5e0 6b 69 6e 67 20 69 6e 20 72 6f 6c 6c 62 61 63 6b  king in rollback
2e5f0 20 6a 6f 75 72 6e 61 6c 20 6d 6f 64 65 73 2e 20   journal modes. 
2e600 20 54 68 69 73 0a 2a 2a 20 20 20 20 20 69 73 20   This.**     is 
2e610 75 73 65 66 75 6c 20 66 6f 72 20 61 63 63 65 73  useful for acces
2e620 73 69 6e 67 20 61 20 64 61 74 61 62 61 73 65 20  sing a database 
2e630 6f 6e 20 61 20 66 69 6c 65 73 79 73 74 65 6d 20  on a filesystem 
2e640 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a  that does not.**
2e650 20 20 20 20 20 73 75 70 70 6f 72 74 20 6c 6f 63       support loc
2e660 6b 69 6e 67 2e 20 20 43 61 75 74 69 6f 6e 3a 20  king.  Caution: 
2e670 20 44 61 74 61 62 61 73 65 20 63 6f 72 72 75 70   Database corrup
2e680 74 69 6f 6e 20 6d 69 67 68 74 20 72 65 73 75 6c  tion might resul
2e690 74 20 69 66 20 74 77 6f 0a 2a 2a 20 20 20 20 20  t if two.**     
2e6a0 6f 72 20 6d 6f 72 65 20 70 72 6f 63 65 73 73 65  or more processe
2e6b0 73 20 77 72 69 74 65 20 74 6f 20 74 68 65 20 73  s write to the s
2e6c0 61 6d 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  ame database and
2e6d0 20 61 6e 79 20 6f 6e 65 20 6f 66 20 74 68 6f 73   any one of thos
2e6e0 65 0a 2a 2a 20 20 20 20 20 70 72 6f 63 65 73 73  e.**     process
2e6f0 65 73 20 75 73 65 73 20 6e 6f 6c 6f 63 6b 3d 31  es uses nolock=1
2e700 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62  ..**.**  <li> <b
2e710 3e 69 6d 6d 75 74 61 62 6c 65 3c 2f 62 3e 3a 20  >immutable</b>: 
2e720 5e 54 68 65 20 69 6d 6d 75 74 61 62 6c 65 20 70  ^The immutable p
2e730 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 62 6f  arameter is a bo
2e740 6f 6c 65 61 6e 20 71 75 65 72 79 0a 2a 2a 20 20  olean query.**  
2e750 20 20 20 70 61 72 61 6d 65 74 65 72 20 74 68 61     parameter tha
2e760 74 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74  t indicates that
2e770 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
2e780 6c 65 20 69 73 20 73 74 6f 72 65 64 20 6f 6e 0a  le is stored on.
2e790 2a 2a 20 20 20 20 20 72 65 61 64 2d 6f 6e 6c 79  **     read-only
2e7a0 20 6d 65 64 69 61 2e 20 20 5e 57 68 65 6e 20 69   media.  ^When i
2e7b0 6d 6d 75 74 61 62 6c 65 20 69 73 20 73 65 74 2c  mmutable is set,
2e7c0 20 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20   SQLite assumes 
2e7d0 74 68 61 74 20 74 68 65 0a 2a 2a 20 20 20 20 20  that the.**     
2e7e0 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 63 61  database file ca
2e7f0 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 2c  nnot be changed,
2e800 20 65 76 65 6e 20 62 79 20 61 20 70 72 6f 63 65   even by a proce
2e810 73 73 20 77 69 74 68 20 68 69 67 68 65 72 0a 2a  ss with higher.*
2e820 2a 20 20 20 20 20 70 72 69 76 69 6c 65 67 65 2c  *     privilege,
2e830 20 61 6e 64 20 73 6f 20 74 68 65 20 64 61 74 61   and so the data
2e840 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64 20 72  base is opened r
2e850 65 61 64 2d 6f 6e 6c 79 20 61 6e 64 20 61 6c 6c  ead-only and all
2e860 20 6c 6f 63 6b 69 6e 67 0a 2a 2a 20 20 20 20 20   locking.**     
2e870 61 6e 64 20 63 68 61 6e 67 65 20 64 65 74 65 63  and change detec
2e880 74 69 6f 6e 20 69 73 20 64 69 73 61 62 6c 65 64  tion is disabled
2e890 2e 20 20 43 61 75 74 69 6f 6e 3a 20 53 65 74 74  .  Caution: Sett
2e8a0 69 6e 67 20 74 68 65 20 69 6d 6d 75 74 61 62 6c  ing the immutabl
2e8b0 65 0a 2a 2a 20 20 20 20 20 70 72 6f 70 65 72 74  e.**     propert
2e8c0 79 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65 20  y on a database 
2e8d0 66 69 6c 65 20 74 68 61 74 20 64 6f 65 73 20 69  file that does i
2e8e0 6e 20 66 61 63 74 20 63 68 61 6e 67 65 20 63 61  n fact change ca
2e8f0 6e 20 72 65 73 75 6c 74 0a 2a 2a 20 20 20 20 20  n result.**     
2e900 69 6e 20 69 6e 63 6f 72 72 65 63 74 20 71 75 65  in incorrect que
2e910 72 79 20 72 65 73 75 6c 74 73 20 61 6e 64 2f 6f  ry results and/o
2e920 72 20 5b 53 51 4c 49 54 45 5f 43 4f 52 52 55 50  r [SQLITE_CORRUP
2e930 54 5d 20 65 72 72 6f 72 73 2e 0a 2a 2a 20 20 20  T] errors..**   
2e940 20 20 53 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c    See also: [SQL
2e950 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41  ITE_IOCAP_IMMUTA
2e960 42 4c 45 5d 2e 0a 2a 2a 20 20 20 20 20 20 20 0a  BLE]..**       .
2e970 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e  ** </ul>.**.** ^
2e980 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20 75 6e  Specifying an un
2e990 6b 6e 6f 77 6e 20 70 61 72 61 6d 65 74 65 72 20  known parameter 
2e9a0 69 6e 20 74 68 65 20 71 75 65 72 79 20 63 6f 6d  in the query com
2e9b0 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 20  ponent of a URI 
2e9c0 69 73 20 6e 6f 74 20 61 6e 0a 2a 2a 20 65 72 72  is not an.** err
2e9d0 6f 72 2e 20 20 46 75 74 75 72 65 20 76 65 72 73  or.  Future vers
2e9e0 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d  ions of SQLite m
2e9f0 69 67 68 74 20 75 6e 64 65 72 73 74 61 6e 64 20  ight understand 
2ea00 61 64 64 69 74 69 6f 6e 61 6c 20 71 75 65 72 79  additional query
2ea10 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 2e 20  .** parameters. 
2ea20 20 53 65 65 20 22 5b 71 75 65 72 79 20 70 61 72   See "[query par
2ea30 61 6d 65 74 65 72 73 20 77 69 74 68 20 73 70 65  ameters with spe
2ea40 63 69 61 6c 20 6d 65 61 6e 69 6e 67 20 74 6f 20  cial meaning to 
2ea50 53 51 4c 69 74 65 5d 22 20 66 6f 72 0a 2a 2a 20  SQLite]" for.** 
2ea60 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
2ea70 6d 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  mation..**.** [[
2ea80 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 65 78 61  URI filename exa
2ea90 6d 70 6c 65 73 5d 5d 20 3c 68 33 3e 55 52 49 20  mples]] <h3>URI 
2eaa0 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65  filename example
2eab0 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 3c 74 61  s</h3>.**.** <ta
2eac0 62 6c 65 20 62 6f 72 64 65 72 3d 22 31 22 20 61  ble border="1" a
2ead0 6c 69 67 6e 3d 63 65 6e 74 65 72 20 63 65 6c 6c  lign=center cell
2eae0 70 61 64 64 69 6e 67 3d 35 3e 0a 2a 2a 20 3c 74  padding=5>.** <t
2eaf0 72 3e 3c 74 68 3e 20 55 52 49 20 66 69 6c 65 6e  r><th> URI filen
2eb00 61 6d 65 73 20 3c 74 68 3e 20 52 65 73 75 6c 74  ames <th> Result
2eb10 73 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69  s.** <tr><td> fi
2eb20 6c 65 3a 64 61 74 61 2e 64 62 20 3c 74 64 3e 20  le:data.db <td> 
2eb30 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65  .**          Ope
2eb40 6e 20 74 68 65 20 66 69 6c 65 20 22 64 61 74 61  n the file "data
2eb50 2e 64 62 22 20 69 6e 20 74 68 65 20 63 75 72 72  .db" in the curr
2eb60 65 6e 74 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a  ent directory..*
2eb70 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
2eb80 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e  /home/fred/data.
2eb90 64 62 3c 62 72 3e 0a 2a 2a 20 20 20 20 20 20 20  db<br>.**       
2eba0 20 20 20 66 69 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f     file:///home/
2ebb0 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 62 72  fred/data.db <br
2ebc0 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66  > .**          f
2ebd0 69 6c 65 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 2f  ile://localhost/
2ebe0 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64  home/fred/data.d
2ebf0 62 20 3c 62 72 3e 20 3c 74 64 3e 20 0a 2a 2a 20  b <br> <td> .** 
2ec00 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74 68           Open th
2ec10 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2ec20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61  "/home/fred/data
2ec30 2e 64 62 22 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64  .db"..** <tr><td
2ec40 3e 20 66 69 6c 65 3a 2f 2f 64 61 72 6b 73 74 61  > file://darksta
2ec50 72 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61  r/home/fred/data
2ec60 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20  .db <td> .**    
2ec70 20 20 20 20 20 20 41 6e 20 65 72 72 6f 72 2e 20        An error. 
2ec80 22 64 61 72 6b 73 74 61 72 22 20 69 73 20 6e 6f  "darkstar" is no
2ec90 74 20 61 20 72 65 63 6f 67 6e 69 7a 65 64 20 61  t a recognized a
2eca0 75 74 68 6f 72 69 74 79 2e 0a 2a 2a 20 3c 74 72  uthority..** <tr
2ecb0 3e 3c 74 64 20 73 74 79 6c 65 3d 22 77 68 69 74  ><td style="whit
2ecc0 65 2d 73 70 61 63 65 3a 6e 6f 77 72 61 70 22 3e  e-space:nowrap">
2ecd0 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69   .**          fi
2ece0 6c 65 3a 2f 2f 2f 43 3a 2f 44 6f 63 75 6d 65 6e  le:///C:/Documen
2ecf0 74 73 25 32 30 61 6e 64 25 32 30 53 65 74 74 69  ts%20and%20Setti
2ed00 6e 67 73 2f 66 72 65 64 2f 44 65 73 6b 74 6f 70  ngs/fred/Desktop
2ed10 2f 64 61 74 61 2e 64 62 0a 2a 2a 20 20 20 20 20  /data.db.**     
2ed20 3c 74 64 3e 20 57 69 6e 64 6f 77 73 20 6f 6e 6c  <td> Windows onl
2ed30 79 3a 20 4f 70 65 6e 20 74 68 65 20 66 69 6c 65  y: Open the file
2ed40 20 22 64 61 74 61 2e 64 62 22 20 6f 6e 20 66 72   "data.db" on fr
2ed50 65 64 27 73 20 64 65 73 6b 74 6f 70 20 6f 6e 20  ed's desktop on 
2ed60 64 72 69 76 65 0a 2a 2a 20 20 20 20 20 20 20 20  drive.**        
2ed70 20 20 43 3a 2e 20 4e 6f 74 65 20 74 68 61 74 20    C:. Note that 
2ed80 74 68 65 20 25 32 30 20 65 73 63 61 70 69 6e 67  the %20 escaping
2ed90 20 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65   in this example
2eda0 20 69 73 20 6e 6f 74 20 73 74 72 69 63 74 6c 79   is not strictly
2edb0 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 6e 65   .**          ne
2edc0 63 65 73 73 61 72 79 20 2d 20 73 70 61 63 65 20  cessary - space 
2edd0 63 68 61 72 61 63 74 65 72 73 20 63 61 6e 20 62  characters can b
2ede0 65 20 75 73 65 64 20 6c 69 74 65 72 61 6c 6c 79  e used literally
2edf0 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 69 6e 20  .**          in 
2ee00 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 2a  URI filenames..*
2ee10 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
2ee20 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 6f 26  data.db?mode=ro&
2ee30 63 61 63 68 65 3d 70 72 69 76 61 74 65 20 3c 74  cache=private <t
2ee40 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  d> .**          
2ee50 4f 70 65 6e 20 66 69 6c 65 20 22 64 61 74 61 2e  Open file "data.
2ee60 64 62 22 20 69 6e 20 74 68 65 20 63 75 72 72 65  db" in the curre
2ee70 6e 74 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72  nt directory for
2ee80 20 72 65 61 64 2d 6f 6e 6c 79 20 61 63 63 65 73   read-only acces
2ee90 73 2e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 52  s..**          R
2eea0 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65  egardless of whe
2eeb0 74 68 65 72 20 6f 72 20 6e 6f 74 20 73 68 61 72  ther or not shar
2eec0 65 64 2d 63 61 63 68 65 20 6d 6f 64 65 20 69 73  ed-cache mode is
2eed0 20 65 6e 61 62 6c 65 64 20 62 79 0a 2a 2a 20 20   enabled by.**  
2eee0 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2c          default,
2eef0 20 75 73 65 20 61 20 70 72 69 76 61 74 65 20 63   use a private c
2ef00 61 63 68 65 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64  ache..** <tr><td
2ef10 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65  > file:/home/fre
2ef20 64 2f 64 61 74 61 2e 64 62 3f 76 66 73 3d 75 6e  d/data.db?vfs=un
2ef30 69 78 2d 64 6f 74 66 69 6c 65 20 3c 74 64 3e 0a  ix-dotfile <td>.
2ef40 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e  **          Open
2ef50 20 66 69 6c 65 20 22 2f 68 6f 6d 65 2f 66 72 65   file "/home/fre
2ef60 64 2f 64 61 74 61 2e 64 62 22 2e 20 55 73 65 20  d/data.db". Use 
2ef70 74 68 65 20 73 70 65 63 69 61 6c 20 56 46 53 20  the special VFS 
2ef80 22 75 6e 69 78 2d 64 6f 74 66 69 6c 65 22 0a 2a  "unix-dotfile".*
2ef90 2a 20 20 20 20 20 20 20 20 20 20 74 68 61 74 20  *          that 
2efa0 75 73 65 73 20 64 6f 74 2d 66 69 6c 65 73 20 69  uses dot-files i
2efb0 6e 20 70 6c 61 63 65 20 6f 66 20 70 6f 73 69 78  n place of posix
2efc0 20 61 64 76 69 73 6f 72 79 20 6c 6f 63 6b 69 6e   advisory lockin
2efd0 67 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66  g..** <tr><td> f
2efe0 69 6c 65 3a 64 61 74 61 2e 64 62 3f 6d 6f 64 65  ile:data.db?mode
2eff0 3d 72 65 61 64 6f 6e 6c 79 20 3c 74 64 3e 20 0a  =readonly <td> .
2f000 2a 2a 20 20 20 20 20 20 20 20 20 20 41 6e 20 65  **          An e
2f010 72 72 6f 72 2e 20 22 72 65 61 64 6f 6e 6c 79 22  rror. "readonly"
2f020 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20   is not a valid 
2f030 6f 70 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 22  option for the "
2f040 6d 6f 64 65 22 20 70 61 72 61 6d 65 74 65 72 2e  mode" parameter.
2f050 0a 2a 2a 20 3c 2f 74 61 62 6c 65 3e 0a 2a 2a 0a  .** </table>.**.
2f060 2a 2a 20 5e 55 52 49 20 68 65 78 61 64 65 63 69  ** ^URI hexadeci
2f070 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75 65  mal escape seque
2f080 6e 63 65 73 20 28 25 48 48 29 20 61 72 65 20 73  nces (%HH) are s
2f090 75 70 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20  upported within 
2f0a0 74 68 65 20 70 61 74 68 20 61 6e 64 0a 2a 2a 20  the path and.** 
2f0b0 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73  query components
2f0c0 20 6f 66 20 61 20 55 52 49 2e 20 41 20 68 65 78   of a URI. A hex
2f0d0 61 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20  adecimal escape 
2f0e0 73 65 71 75 65 6e 63 65 20 63 6f 6e 73 69 73 74  sequence consist
2f0f0 73 20 6f 66 20 61 0a 2a 2a 20 70 65 72 63 65 6e  s of a.** percen
2f100 74 20 73 69 67 6e 20 2d 20 22 25 22 20 2d 20 66  t sign - "%" - f
2f110 6f 6c 6c 6f 77 65 64 20 62 79 20 65 78 61 63 74  ollowed by exact
2f120 6c 79 20 74 77 6f 20 68 65 78 61 64 65 63 69 6d  ly two hexadecim
2f130 61 6c 20 64 69 67 69 74 73 20 0a 2a 2a 20 73 70  al digits .** sp
2f140 65 63 69 66 79 69 6e 67 20 61 6e 20 6f 63 74 65  ecifying an octe
2f150 74 20 76 61 6c 75 65 2e 20 5e 42 65 66 6f 72 65  t value. ^Before
2f160 20 74 68 65 20 70 61 74 68 20 6f 72 20 71 75 65   the path or que
2f170 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66  ry components of
2f180 20 61 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61   a.** URI filena
2f190 6d 65 20 61 72 65 20 69 6e 74 65 72 70 72 65 74  me are interpret
2f1a0 65 64 2c 20 74 68 65 79 20 61 72 65 20 65 6e 63  ed, they are enc
2f1b0 6f 64 65 64 20 75 73 69 6e 67 20 55 54 46 2d 38  oded using UTF-8
2f1c0 20 61 6e 64 20 61 6c 6c 20 0a 2a 2a 20 68 65 78   and all .** hex
2f1d0 61 64 65 63 69 6d 61 6c 20 65 73 63 61 70 65 20  adecimal escape 
2f1e0 73 65 71 75 65 6e 63 65 73 20 72 65 70 6c 61 63  sequences replac
2f1f0 65 64 20 62 79 20 61 20 73 69 6e 67 6c 65 20 62  ed by a single b
2f200 79 74 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74  yte containing t
2f210 68 65 0a 2a 2a 20 63 6f 72 72 65 73 70 6f 6e 64  he.** correspond
2f220 69 6e 67 20 6f 63 74 65 74 2e 20 49 66 20 74 68  ing octet. If th
2f230 69 73 20 70 72 6f 63 65 73 73 20 67 65 6e 65 72  is process gener
2f240 61 74 65 73 20 61 6e 20 69 6e 76 61 6c 69 64 20  ates an invalid 
2f250 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e 67 2c 0a  UTF-8 encoding,.
2f260 2a 2a 20 74 68 65 20 72 65 73 75 6c 74 73 20 61  ** the results a
2f270 72 65 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a  re undefined..**
2f280 0a 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74 6f 20 57  .** <b>Note to W
2f290 69 6e 64 6f 77 73 20 75 73 65 72 73 3a 3c 2f 62  indows users:</b
2f2a0 3e 20 20 54 68 65 20 65 6e 63 6f 64 69 6e 67 20  >  The encoding 
2f2b0 75 73 65 64 20 66 6f 72 20 74 68 65 20 66 69 6c  used for the fil
2f2c0 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a  ename argument.*
2f2d0 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 70 65  * of sqlite3_ope
2f2e0 6e 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  n() and sqlite3_
2f2f0 6f 70 65 6e 5f 76 32 28 29 20 6d 75 73 74 20 62  open_v2() must b
2f300 65 20 55 54 46 2d 38 2c 20 6e 6f 74 20 77 68 61  e UTF-8, not wha
2f310 74 65 76 65 72 0a 2a 2a 20 63 6f 64 65 70 61 67  tever.** codepag
2f320 65 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20 64  e is currently d
2f330 65 66 69 6e 65 64 2e 20 20 46 69 6c 65 6e 61 6d  efined.  Filenam
2f340 65 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e  es containing in
2f350 74 65 72 6e 61 74 69 6f 6e 61 6c 0a 2a 2a 20 63  ternational.** c
2f360 68 61 72 61 63 74 65 72 73 20 6d 75 73 74 20 62  haracters must b
2f370 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 55  e converted to U
2f380 54 46 2d 38 20 70 72 69 6f 72 20 74 6f 20 70 61  TF-8 prior to pa
2f390 73 73 69 6e 67 20 74 68 65 6d 20 69 6e 74 6f 0a  ssing them into.
2f3a0 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  ** sqlite3_open(
2f3b0 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65  ) or sqlite3_ope
2f3c0 6e 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 3c 62  n_v2()..**.** <b
2f3d0 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77 73  >Note to Windows
2f3e0 20 52 75 6e 74 69 6d 65 20 75 73 65 72 73 3a 3c   Runtime users:<
2f3f0 2f 62 3e 20 20 54 68 65 20 74 65 6d 70 6f 72 61  /b>  The tempora
2f400 72 79 20 64 69 72 65 63 74 6f 72 79 20 6d 75 73  ry directory mus
2f410 74 20 62 65 20 73 65 74 0a 2a 2a 20 70 72 69 6f  t be set.** prio
2f420 72 20 74 6f 20 63 61 6c 6c 69 6e 67 20 73 71 6c  r to calling sql
2f430 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73  ite3_open() or s
2f440 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2f450 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 76 61  .  Otherwise, va
2f460 72 69 6f 75 73 0a 2a 2a 20 66 65 61 74 75 72 65  rious.** feature
2f470 73 20 74 68 61 74 20 72 65 71 75 69 72 65 20 74  s that require t
2f480 68 65 20 75 73 65 20 6f 66 20 74 65 6d 70 6f 72  he use of tempor
2f490 61 72 79 20 66 69 6c 65 73 20 6d 61 79 20 66 61  ary files may fa
2f4a0 69 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  il..**.** See al
2f4b0 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 74 65 6d  so: [sqlite3_tem
2f4c0 70 5f 64 69 72 65 63 74 6f 72 79 5d 0a 2a 2f 0a  p_directory].*/.
2f4d0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
2f4e0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 0a 20 20 63  qlite3_open(.  c
2f4f0 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e  onst char *filen
2f500 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61  ame,   /* Databa
2f510 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46  se filename (UTF
2f520 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  -8) */.  sqlite3
2f530 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20 20   **ppDb         
2f540 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20   /* OUT: SQLite 
2f550 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a  db handle */.);.
2f560 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
2f570 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20  qlite3_open16(. 
2f580 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c   const void *fil
2f590 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61  ename,   /* Data
2f5a0 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55  base filename (U
2f5b0 54 46 2d 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69  TF-16) */.  sqli
2f5c0 74 65 33 20 2a 2a 70 70 44 62 20 20 20 20 20 20  te3 **ppDb      
2f5d0 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69      /* OUT: SQLi
2f5e0 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a  te db handle */.
2f5f0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
2f600 74 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  t sqlite3_open_v
2f610 32 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  2(.  const char 
2f620 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20  *filename,   /* 
2f630 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d  Database filenam
2f640 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20 20 73  e (UTF-8) */.  s
2f650 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 2c 20 20  qlite3 **ppDb,  
2f660 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53         /* OUT: S
2f670 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c 65 20  QLite db handle 
2f680 2a 2f 0a 20 20 69 6e 74 20 66 6c 61 67 73 2c 20  */.  int flags, 
2f690 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
2f6a0 46 6c 61 67 73 20 2a 2f 0a 20 20 63 6f 6e 73 74  Flags */.  const
2f6b0 20 63 68 61 72 20 2a 7a 56 66 73 20 20 20 20 20   char *zVfs     
2f6c0 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 56 46     /* Name of VF
2f6d0 53 20 6d 6f 64 75 6c 65 20 74 6f 20 75 73 65 20  S module to use 
2f6e0 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  */.);../*.** CAP
2f6f0 49 33 52 45 46 3a 20 4f 62 74 61 69 6e 20 56 61  I3REF: Obtain Va
2f700 6c 75 65 73 20 46 6f 72 20 55 52 49 20 50 61 72  lues For URI Par
2f710 61 6d 65 74 65 72 73 0a 2a 2a 0a 2a 2a 20 54 68  ameters.**.** Th
2f720 65 73 65 20 61 72 65 20 75 74 69 6c 69 74 79 20  ese are utility 
2f730 72 6f 75 74 69 6e 65 73 2c 20 75 73 65 66 75 6c  routines, useful
2f740 20 74 6f 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e   to VFS implemen
2f750 74 61 74 69 6f 6e 73 2c 20 74 68 61 74 20 63 68  tations, that ch
2f760 65 63 6b 0a 2a 2a 20 74 6f 20 73 65 65 20 69 66  eck.** to see if
2f770 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
2f780 20 77 61 73 20 61 20 55 52 49 20 74 68 61 74 20   was a URI that 
2f790 63 6f 6e 74 61 69 6e 65 64 20 61 20 73 70 65 63  contained a spec
2f7a0 69 66 69 63 20 71 75 65 72 79 20 0a 2a 2a 20 70  ific query .** p
2f7b0 61 72 61 6d 65 74 65 72 2c 20 61 6e 64 20 69 66  arameter, and if
2f7c0 20 73 6f 20 6f 62 74 61 69 6e 73 20 74 68 65 20   so obtains the 
2f7d0 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20 71 75  value of that qu
2f7e0 65 72 79 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  ery parameter..*
2f7f0 2a 0a 2a 2a 20 49 66 20 46 20 69 73 20 74 68 65  *.** If F is the
2f800 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 6e 61   database filena
2f810 6d 65 20 70 6f 69 6e 74 65 72 20 70 61 73 73 65  me pointer passe
2f820 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e  d into the xOpen
2f830 28 29 20 6d 65 74 68 6f 64 20 6f 66 20 0a 2a 2a  () method of .**
2f840 20 61 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74   a VFS implement
2f850 61 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 20 66  ation when the f
2f860 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20 74  lags parameter t
2f870 6f 20 78 4f 70 65 6e 28 29 20 68 61 73 20 6f 6e  o xOpen() has on
2f880 65 20 6f 72 20 0a 2a 2a 20 6d 6f 72 65 20 6f 66  e or .** more of
2f890 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   the [SQLITE_OPE
2f8a0 4e 5f 55 52 49 5d 20 6f 72 20 5b 53 51 4c 49 54  N_URI] or [SQLIT
2f8b0 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d 20  E_OPEN_MAIN_DB] 
2f8c0 62 69 74 73 20 73 65 74 20 61 6e 64 0a 2a 2a 20  bits set and.** 
2f8d0 50 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66  P is the name of
2f8e0 20 74 68 65 20 71 75 65 72 79 20 70 61 72 61 6d   the query param
2f8f0 65 74 65 72 2c 20 74 68 65 6e 0a 2a 2a 20 73 71  eter, then.** sq
2f900 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65  lite3_uri_parame
2f910 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73  ter(F,P) returns
2f920 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
2f930 65 20 50 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  e P.** parameter
2f940 20 69 66 20 69 74 20 65 78 69 73 74 73 20 6f 72   if it exists or
2f950 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
2f960 69 66 20 50 20 64 6f 65 73 20 6e 6f 74 20 61 70  if P does not ap
2f970 70 65 61 72 20 61 73 20 61 20 0a 2a 2a 20 71 75  pear as a .** qu
2f980 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 6f 6e  ery parameter on
2f990 20 46 2e 20 20 49 66 20 50 20 69 73 20 61 20 71   F.  If P is a q
2f9a0 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 6f  uery parameter o
2f9b0 66 20 46 0a 2a 2a 20 68 61 73 20 6e 6f 20 65 78  f F.** has no ex
2f9c0 70 6c 69 63 69 74 20 76 61 6c 75 65 2c 20 74 68  plicit value, th
2f9d0 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 70  en sqlite3_uri_p
2f9e0 61 72 61 6d 65 74 65 72 28 46 2c 50 29 20 72 65  arameter(F,P) re
2f9f0 74 75 72 6e 73 0a 2a 2a 20 61 20 70 6f 69 6e 74  turns.** a point
2fa00 65 72 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 73  er to an empty s
2fa10 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  tring..**.** The
2fa20 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f   sqlite3_uri_boo
2fa30 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74  lean(F,P,B) rout
2fa40 69 6e 65 20 61 73 73 75 6d 65 73 20 74 68 61 74  ine assumes that
2fa50 20 50 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 0a   P is a boolean.
2fa60 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64  ** parameter and
2fa70 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 31   returns true (1
2fa80 29 20 6f 72 20 66 61 6c 73 65 20 28 30 29 20 61  ) or false (0) a
2fa90 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20  ccording to the 
2faa0 76 61 6c 75 65 0a 2a 2a 20 6f 66 20 50 2e 20 20  value.** of P.  
2fab0 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f  The sqlite3_uri_
2fac0 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72  boolean(F,P,B) r
2fad0 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74  outine returns t
2fae0 72 75 65 20 28 31 29 20 69 66 20 74 68 65 0a 2a  rue (1) if the.*
2faf0 2a 20 76 61 6c 75 65 20 6f 66 20 71 75 65 72 79  * value of query
2fb00 20 70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20   parameter P is 
2fb10 6f 6e 65 20 6f 66 20 22 79 65 73 22 2c 20 22 74  one of "yes", "t
2fb20 72 75 65 22 2c 20 6f 72 20 22 6f 6e 22 20 69 6e  rue", or "on" in
2fb30 20 61 6e 79 0a 2a 2a 20 63 61 73 65 20 6f 72 20   any.** case or 
2fb40 69 66 20 74 68 65 20 76 61 6c 75 65 20 62 65 67  if the value beg
2fb50 69 6e 73 20 77 69 74 68 20 61 20 6e 6f 6e 2d 7a  ins with a non-z
2fb60 65 72 6f 20 6e 75 6d 62 65 72 2e 20 20 54 68 65  ero number.  The
2fb70 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72 69   .** sqlite3_uri
2fb80 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20  _boolean(F,P,B) 
2fb90 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 73  routines returns
2fba0 20 66 61 6c 73 65 20 28 30 29 20 69 66 20 74 68   false (0) if th
2fbb0 65 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20 71 75  e value of.** qu
2fbc0 65 72 79 20 70 61 72 61 6d 65 74 65 72 20 50 20  ery parameter P 
2fbd0 69 73 20 6f 6e 65 20 6f 66 20 22 6e 6f 22 2c 20  is one of "no", 
2fbe0 22 66 61 6c 73 65 22 2c 20 6f 72 20 22 6f 66 66  "false", or "off
2fbf0 22 20 69 6e 20 61 6e 79 20 63 61 73 65 20 6f 72  " in any case or
2fc00 0a 2a 2a 20 69 66 20 74 68 65 20 76 61 6c 75 65  .** if the value
2fc10 20 62 65 67 69 6e 73 20 77 69 74 68 20 61 20 6e   begins with a n
2fc20 75 6d 65 72 69 63 20 7a 65 72 6f 2e 20 20 49 66  umeric zero.  If
2fc30 20 50 20 69 73 20 6e 6f 74 20 61 20 71 75 65 72   P is not a quer
2fc40 79 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 6f  y.** parameter o
2fc50 6e 20 46 20 6f 72 20 69 66 20 74 68 65 20 76 61  n F or if the va
2fc60 6c 75 65 20 6f 66 20 50 20 69 73 20 64 6f 65 73  lue of P is does
2fc70 20 6e 6f 74 20 6d 61 74 63 68 20 61 6e 79 20 6f   not match any o
2fc80 66 20 74 68 65 0a 2a 2a 20 61 62 6f 76 65 2c 20  f the.** above, 
2fc90 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 75 72 69  then sqlite3_uri
2fca0 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20  _boolean(F,P,B) 
2fcb0 72 65 74 75 72 6e 73 20 28 42 21 3d 30 29 2e 0a  returns (B!=0)..
2fcc0 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
2fcd0 33 5f 75 72 69 5f 69 6e 74 36 34 28 46 2c 50 2c  3_uri_int64(F,P,
2fce0 44 29 20 72 6f 75 74 69 6e 65 20 63 6f 6e 76 65  D) routine conve
2fcf0 72 74 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66  rts the value of
2fd00 20 50 20 69 6e 74 6f 20 61 0a 2a 2a 20 36 34 2d   P into a.** 64-
2fd10 62 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67  bit signed integ
2fd20 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  er and returns t
2fd30 68 61 74 20 69 6e 74 65 67 65 72 2c 20 6f 72 20  hat integer, or 
2fd40 44 20 69 66 20 50 20 64 6f 65 73 20 6e 6f 74 0a  D if P does not.
2fd50 2a 2a 20 65 78 69 73 74 2e 20 20 49 66 20 74 68  ** exist.  If th
2fd60 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69 73 20  e value of P is 
2fd70 73 6f 6d 65 74 68 69 6e 67 20 6f 74 68 65 72 20  something other 
2fd80 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65 72 2c  than an integer,
2fd90 20 74 68 65 6e 0a 2a 2a 20 7a 65 72 6f 20 69 73   then.** zero is
2fda0 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 20 0a 2a   returned..** .*
2fdb0 2a 20 49 66 20 46 20 69 73 20 61 20 4e 55 4c 4c  * If F is a NULL
2fdc0 20 70 6f 69 6e 74 65 72 2c 20 74 68 65 6e 20 73   pointer, then s
2fdd0 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d  qlite3_uri_param
2fde0 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e  eter(F,P) return
2fdf0 73 20 4e 55 4c 4c 20 61 6e 64 0a 2a 2a 20 73 71  s NULL and.** sq
2fe00 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61  lite3_uri_boolea
2fe10 6e 28 46 2c 50 2c 42 29 20 72 65 74 75 72 6e 73  n(F,P,B) returns
2fe20 20 42 2e 20 20 49 66 20 46 20 69 73 20 6e 6f 74   B.  If F is not
2fe30 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
2fe40 61 6e 64 0a 2a 2a 20 69 73 20 6e 6f 74 20 61 20  and.** is not a 
2fe50 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 70 61  database file pa
2fe60 74 68 6e 61 6d 65 20 70 6f 69 6e 74 65 72 20 74  thname pointer t
2fe70 68 61 74 20 53 51 4c 69 74 65 20 70 61 73 73 65  hat SQLite passe
2fe80 64 20 69 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e  d into the xOpen
2fe90 0a 2a 2a 20 56 46 53 20 6d 65 74 68 6f 64 2c 20  .** VFS method, 
2fea0 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f  then the behavio
2feb0 72 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e  r of this routin
2fec0 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 61  e is undefined a
2fed0 6e 64 20 70 72 6f 62 61 62 6c 79 0a 2a 2a 20 75  nd probably.** u
2fee0 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2f 0a 53  ndesirable..*/.S
2fef0 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20  QLITE_API const 
2ff00 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 75 72  char *sqlite3_ur
2ff10 69 5f 70 61 72 61 6d 65 74 65 72 28 63 6f 6e 73  i_parameter(cons
2ff20 74 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61 6d  t char *zFilenam
2ff30 65 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  e, const char *z
2ff40 50 61 72 61 6d 29 3b 0a 53 51 4c 49 54 45 5f 41  Param);.SQLITE_A
2ff50 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 75  PI int sqlite3_u
2ff60 72 69 5f 62 6f 6f 6c 65 61 6e 28 63 6f 6e 73 74  ri_boolean(const
2ff70 20 63 68 61 72 20 2a 7a 46 69 6c 65 2c 20 63 6f   char *zFile, co
2ff80 6e 73 74 20 63 68 61 72 20 2a 7a 50 61 72 61 6d  nst char *zParam
2ff90 2c 20 69 6e 74 20 62 44 65 66 61 75 6c 74 29 3b  , int bDefault);
2ffa0 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69  .SQLITE_API sqli
2ffb0 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  te3_int64 sqlite
2ffc0 33 5f 75 72 69 5f 69 6e 74 36 34 28 63 6f 6e 73  3_uri_int64(cons
2ffd0 74 20 63 68 61 72 2a 2c 20 63 6f 6e 73 74 20 63  t char*, const c
2ffe0 68 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e  har*, sqlite3_in
2fff0 74 36 34 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41  t64);.../*.** CA
30000 50 49 33 52 45 46 3a 20 45 72 72 6f 72 20 43 6f  PI3REF: Error Co
30010 64 65 73 20 41 6e 64 20 4d 65 73 73 61 67 65 73  des And Messages
30020 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
30030 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  te3.**.** ^If th
30040 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 71  e most recent sq
30050 6c 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c  lite3_* API call
30060 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
30070 20 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63   .** [database c
30080 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 66 61 69  onnection] D fai
30090 6c 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 71  led, then the sq
300a0 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 44 29  lite3_errcode(D)
300b0 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 72 65   interface.** re
300c0 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 65 72 69  turns the numeri
300d0 63 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d 20  c [result code] 
300e0 6f 72 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73  or [extended res
300f0 75 6c 74 20 63 6f 64 65 5d 20 66 6f 72 20 74 68  ult code] for th
30100 61 74 0a 2a 2a 20 41 50 49 20 63 61 6c 6c 2e 0a  at.** API call..
30110 2a 2a 20 49 66 20 74 68 65 20 6d 6f 73 74 20 72  ** If the most r
30120 65 63 65 6e 74 20 41 50 49 20 63 61 6c 6c 20 77  ecent API call w
30130 61 73 20 73 75 63 63 65 73 73 66 75 6c 2c 0a 2a  as successful,.*
30140 2a 20 74 68 65 6e 20 74 68 65 20 72 65 74 75 72  * then the retur
30150 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20 73 71 6c  n value from sql
30160 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 20 69  ite3_errcode() i
30170 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20  s undefined..** 
30180 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74  ^The sqlite3_ext
30190 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 0a  ended_errcode().
301a0 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  ** interface is 
301b0 74 68 65 20 73 61 6d 65 20 65 78 63 65 70 74 20  the same except 
301c0 74 68 61 74 20 69 74 20 61 6c 77 61 79 73 20 72  that it always r
301d0 65 74 75 72 6e 73 20 74 68 65 20 0a 2a 2a 20 5b  eturns the .** [
301e0 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
301f0 63 6f 64 65 5d 20 65 76 65 6e 20 77 68 65 6e 20  code] even when 
30200 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
30210 63 6f 64 65 73 20 61 72 65 0a 2a 2a 20 64 69 73  codes are.** dis
30220 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  abled..**.** ^Th
30230 65 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67  e sqlite3_errmsg
30240 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65  () and sqlite3_e
30250 72 72 6d 73 67 31 36 28 29 20 72 65 74 75 72 6e  rrmsg16() return
30260 20 45 6e 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67   English-languag
30270 65 0a 2a 2a 20 74 65 78 74 20 74 68 61 74 20 64  e.** text that d
30280 65 73 63 72 69 62 65 73 20 74 68 65 20 65 72 72  escribes the err
30290 6f 72 2c 20 61 73 20 65 69 74 68 65 72 20 55 54  or, as either UT
302a0 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 20 72 65  F-8 or UTF-16 re
302b0 73 70 65 63 74 69 76 65 6c 79 2e 0a 2a 2a 20 5e  spectively..** ^
302c0 28 4d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20  (Memory to hold 
302d0 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67  the error messag
302e0 65 20 73 74 72 69 6e 67 20 69 73 20 6d 61 6e 61  e string is mana
302f0 67 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 2e 0a  ged internally..
30300 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74 69  ** The applicati
30310 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64  on does not need
30320 20 74 6f 20 77 6f 72 72 79 20 61 62 6f 75 74 20   to worry about 
30330 66 72 65 65 69 6e 67 20 74 68 65 20 72 65 73 75  freeing the resu
30340 6c 74 2e 0a 2a 2a 20 48 6f 77 65 76 65 72 2c 20  lt..** However, 
30350 74 68 65 20 65 72 72 6f 72 20 73 74 72 69 6e 67  the error string
30360 20 6d 69 67 68 74 20 62 65 20 6f 76 65 72 77 72   might be overwr
30370 69 74 74 65 6e 20 6f 72 20 64 65 61 6c 6c 6f 63  itten or dealloc
30380 61 74 65 64 20 62 79 0a 2a 2a 20 73 75 62 73 65  ated by.** subse
30390 71 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 6f  quent calls to o
303a0 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65  ther SQLite inte
303b0 72 66 61 63 65 20 66 75 6e 63 74 69 6f 6e 73 2e  rface functions.
303c0 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  )^.**.** ^The sq
303d0 6c 69 74 65 33 5f 65 72 72 73 74 72 28 29 20 69  lite3_errstr() i
303e0 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
303f0 20 74 68 65 20 45 6e 67 6c 69 73 68 2d 6c 61 6e   the English-lan
30400 67 75 61 67 65 20 74 65 78 74 0a 2a 2a 20 74 68  guage text.** th
30410 61 74 20 64 65 73 63 72 69 62 65 73 20 74 68 65  at describes the
30420 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d 2c 20   [result code], 
30430 61 73 20 55 54 46 2d 38 2e 0a 2a 2a 20 5e 28 4d  as UTF-8..** ^(M
30440 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68  emory to hold th
30450 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  e error message 
30460 73 74 72 69 6e 67 20 69 73 20 6d 61 6e 61 67 65  string is manage
30470 64 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20  d internally.** 
30480 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20  and must not be 
30490 66 72 65 65 64 20 62 79 20 74 68 65 20 61 70 70  freed by the app
304a0 6c 69 63 61 74 69 6f 6e 29 5e 2e 0a 2a 2a 0a 2a  lication)^..**.*
304b0 2a 20 57 68 65 6e 20 74 68 65 20 73 65 72 69 61  * When the seria
304c0 6c 69 7a 65 64 20 5b 74 68 72 65 61 64 69 6e 67  lized [threading
304d0 20 6d 6f 64 65 5d 20 69 73 20 69 6e 20 75 73 65   mode] is in use
304e0 2c 20 69 74 20 6d 69 67 68 74 20 62 65 20 74 68  , it might be th
304f0 65 0a 2a 2a 20 63 61 73 65 20 74 68 61 74 20 61  e.** case that a
30500 20 73 65 63 6f 6e 64 20 65 72 72 6f 72 20 6f 63   second error oc
30510 63 75 72 73 20 6f 6e 20 61 20 73 65 70 61 72 61  curs on a separa
30520 74 65 20 74 68 72 65 61 64 20 69 6e 20 62 65 74  te thread in bet
30530 77 65 65 6e 0a 2a 2a 20 74 68 65 20 74 69 6d 65  ween.** the time
30540 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 65 72   of the first er
30550 72 6f 72 20 61 6e 64 20 74 68 65 20 63 61 6c 6c  ror and the call
30560 20 74 6f 20 74 68 65 73 65 20 69 6e 74 65 72 66   to these interf
30570 61 63 65 73 2e 0a 2a 2a 20 57 68 65 6e 20 74 68  aces..** When th
30580 61 74 20 68 61 70 70 65 6e 73 2c 20 74 68 65 20  at happens, the 
30590 73 65 63 6f 6e 64 20 65 72 72 6f 72 20 77 69 6c  second error wil
305a0 6c 20 62 65 20 72 65 70 6f 72 74 65 64 20 73 69  l be reported si
305b0 6e 63 65 20 74 68 65 73 65 0a 2a 2a 20 69 6e 74  nce these.** int
305c0 65 72 66 61 63 65 73 20 61 6c 77 61 79 73 20 72  erfaces always r
305d0 65 70 6f 72 74 20 74 68 65 20 6d 6f 73 74 20 72  eport the most r
305e0 65 63 65 6e 74 20 72 65 73 75 6c 74 2e 20 20 54  ecent result.  T
305f0 6f 20 61 76 6f 69 64 0a 2a 2a 20 74 68 69 73 2c  o avoid.** this,
30600 20 65 61 63 68 20 74 68 72 65 61 64 20 63 61 6e   each thread can
30610 20 6f 62 74 61 69 6e 20 65 78 63 6c 75 73 69 76   obtain exclusiv
30620 65 20 75 73 65 20 6f 66 20 74 68 65 20 5b 64 61  e use of the [da
30630 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
30640 6e 5d 20 44 0a 2a 2a 20 62 79 20 69 6e 76 6f 6b  n] D.** by invok
30650 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  ing [sqlite3_mut
30660 65 78 5f 65 6e 74 65 72 5d 28 5b 73 71 6c 69 74  ex_enter]([sqlit
30670 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28 44 29 29  e3_db_mutex](D))
30680 20 62 65 66 6f 72 65 20 62 65 67 69 6e 6e 69 6e   before beginnin
30690 67 0a 2a 2a 20 74 6f 20 75 73 65 20 44 20 61 6e  g.** to use D an
306a0 64 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69  d invoking [sqli
306b0 74 65 33 5f 6d 75 74 65 78 5f 6c 65 61 76 65 5d  te3_mutex_leave]
306c0 28 5b 73 71 6c 69 74 65 33 5f 64 62 5f 6d 75 74  ([sqlite3_db_mut
306d0 65 78 5d 28 44 29 29 20 61 66 74 65 72 0a 2a 2a  ex](D)) after.**
306e0 20 61 6c 6c 20 63 61 6c 6c 73 20 74 6f 20 74 68   all calls to th
306f0 65 20 69 6e 74 65 72 66 61 63 65 73 20 6c 69 73  e interfaces lis
30700 74 65 64 20 68 65 72 65 20 61 72 65 20 63 6f 6d  ted here are com
30710 70 6c 65 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66  pleted..**.** If
30720 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 61   an interface fa
30730 69 6c 73 20 77 69 74 68 20 53 51 4c 49 54 45 5f  ils with SQLITE_
30740 4d 49 53 55 53 45 2c 20 74 68 61 74 20 6d 65 61  MISUSE, that mea
30750 6e 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65  ns the interface
30760 0a 2a 2a 20 77 61 73 20 69 6e 76 6f 6b 65 64 20  .** was invoked 
30770 69 6e 63 6f 72 72 65 63 74 6c 79 20 62 79 20 74  incorrectly by t
30780 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20  he application. 
30790 20 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 74   In that case, t
307a0 68 65 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 64 65  he.** error code
307b0 20 61 6e 64 20 6d 65 73 73 61 67 65 20 6d 61 79   and message may
307c0 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 73   or may not be s
307d0 65 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  et..*/.SQLITE_AP
307e0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 72  I int sqlite3_er
307f0 72 63 6f 64 65 28 73 71 6c 69 74 65 33 20 2a 64  rcode(sqlite3 *d
30800 62 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  b);.SQLITE_API i
30810 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  nt sqlite3_exten
30820 64 65 64 5f 65 72 72 63 6f 64 65 28 73 71 6c 69  ded_errcode(sqli
30830 74 65 33 20 2a 64 62 29 3b 0a 53 51 4c 49 54 45  te3 *db);.SQLITE
30840 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
30850 2a 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28  *sqlite3_errmsg(
30860 73 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54  sqlite3*);.SQLIT
30870 45 5f 41 50 49 20 63 6f 6e 73 74 20 76 6f 69 64  E_API const void
30880 20 2a 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   *sqlite3_errmsg
30890 31 36 28 73 71 6c 69 74 65 33 2a 29 3b 0a 53 51  16(sqlite3*);.SQ
308a0 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63  LITE_API const c
308b0 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72 72  har *sqlite3_err
308c0 73 74 72 28 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a  str(int);../*.**
308d0 20 43 41 50 49 33 52 45 46 3a 20 50 72 65 70 61   CAPI3REF: Prepa
308e0 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20 4f 62  red Statement Ob
308f0 6a 65 63 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53  ject.** KEYWORDS
30900 3a 20 7b 70 72 65 70 61 72 65 64 20 73 74 61 74  : {prepared stat
30910 65 6d 65 6e 74 7d 20 7b 70 72 65 70 61 72 65 64  ement} {prepared
30920 20 73 74 61 74 65 6d 65 6e 74 73 7d 0a 2a 2a 0a   statements}.**.
30930 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f  ** An instance o
30940 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 72 65  f this object re
30950 70 72 65 73 65 6e 74 73 20 61 20 73 69 6e 67 6c  presents a singl
30960 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
30970 74 68 61 74 0a 2a 2a 20 68 61 73 20 62 65 65 6e  that.** has been
30980 20 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 62   compiled into b
30990 69 6e 61 72 79 20 66 6f 72 6d 20 61 6e 64 20 69  inary form and i
309a0 73 20 72 65 61 64 79 20 74 6f 20 62 65 20 65 76  s ready to be ev
309b0 61 6c 75 61 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  aluated..**.** T
309c0 68 69 6e 6b 20 6f 66 20 65 61 63 68 20 53 51 4c  hink of each SQL
309d0 20 73 74 61 74 65 6d 65 6e 74 20 61 73 20 61 20   statement as a 
309e0 73 65 70 61 72 61 74 65 20 63 6f 6d 70 75 74 65  separate compute
309f0 72 20 70 72 6f 67 72 61 6d 2e 20 20 54 68 65 0a  r program.  The.
30a00 2a 2a 20 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20  ** original SQL 
30a10 74 65 78 74 20 69 73 20 73 6f 75 72 63 65 20 63  text is source c
30a20 6f 64 65 2e 20 20 41 20 70 72 65 70 61 72 65 64  ode.  A prepared
30a30 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63   statement objec
30a40 74 20 0a 2a 2a 20 69 73 20 74 68 65 20 63 6f 6d  t .** is the com
30a50 70 69 6c 65 64 20 6f 62 6a 65 63 74 20 63 6f 64  piled object cod
30a60 65 2e 20 20 41 6c 6c 20 53 51 4c 20 6d 75 73 74  e.  All SQL must
30a70 20 62 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   be converted in
30a80 74 6f 20 61 0a 2a 2a 20 70 72 65 70 61 72 65 64  to a.** prepared
30a90 20 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72   statement befor
30aa0 65 20 69 74 20 63 61 6e 20 62 65 20 72 75 6e 2e  e it can be run.
30ab0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6c 69 66 65 2d  .**.** The life-
30ac0 63 79 63 6c 65 20 6f 66 20 61 20 70 72 65 70 61  cycle of a prepa
30ad0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62  red statement ob
30ae0 6a 65 63 74 20 75 73 75 61 6c 6c 79 20 67 6f 65  ject usually goe
30af0 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a  s like this:.**.
30b00 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ol>.** <li> 
30b10 43 72 65 61 74 65 20 74 68 65 20 70 72 65 70 61  Create the prepa
30b20 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62  red statement ob
30b30 6a 65 63 74 20 75 73 69 6e 67 20 5b 73 71 6c 69  ject using [sqli
30b40 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
30b50 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 42 69 6e 64 20  ]..** <li> Bind 
30b60 76 61 6c 75 65 73 20 74 6f 20 5b 70 61 72 61 6d  values to [param
30b70 65 74 65 72 73 5d 20 75 73 69 6e 67 20 74 68 65  eters] using the
30b80 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
30b90 29 0a 2a 2a 20 20 20 20 20 20 69 6e 74 65 72 66  ).**      interf
30ba0 61 63 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 75  aces..** <li> Ru
30bb0 6e 20 74 68 65 20 53 51 4c 20 62 79 20 63 61 6c  n the SQL by cal
30bc0 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74  ling [sqlite3_st
30bd0 65 70 28 29 5d 20 6f 6e 65 20 6f 72 20 6d 6f 72  ep()] one or mor
30be0 65 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e  e times..** <li>
30bf0 20 52 65 73 65 74 20 74 68 65 20 70 72 65 70 61   Reset the prepa
30c00 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 75 73  red statement us
30c10 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  ing [sqlite3_res
30c20 65 74 28 29 5d 20 74 68 65 6e 20 67 6f 20 62 61  et()] then go ba
30c30 63 6b 0a 2a 2a 20 20 20 20 20 20 74 6f 20 73 74  ck.**      to st
30c40 65 70 20 32 2e 20 20 44 6f 20 74 68 69 73 20 7a  ep 2.  Do this z
30c50 65 72 6f 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65  ero or more time
30c60 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 44 65 73 74 72  s..** <li> Destr
30c70 6f 79 20 74 68 65 20 6f 62 6a 65 63 74 20 75 73  oy the object us
30c80 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e  ing [sqlite3_fin
30c90 61 6c 69 7a 65 28 29 5d 2e 0a 2a 2a 20 3c 2f 6f  alize()]..** </o
30ca0 6c 3e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  l>.*/.typedef st
30cb0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 73 74 6d  ruct sqlite3_stm
30cc0 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 3b 0a  t sqlite3_stmt;.
30cd0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
30ce0 20 52 75 6e 2d 74 69 6d 65 20 4c 69 6d 69 74 73   Run-time Limits
30cf0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
30d00 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73  te3.**.** ^(This
30d10 20 69 6e 74 65 72 66 61 63 65 20 61 6c 6c 6f 77   interface allow
30d20 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 76 61  s the size of va
30d30 72 69 6f 75 73 20 63 6f 6e 73 74 72 75 63 74 73  rious constructs
30d40 20 74 6f 20 62 65 20 6c 69 6d 69 74 65 64 0a 2a   to be limited.*
30d50 2a 20 6f 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f  * on a connectio
30d60 6e 20 62 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  n by connection 
30d70 62 61 73 69 73 2e 20 20 54 68 65 20 66 69 72 73  basis.  The firs
30d80 74 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  t parameter is t
30d90 68 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20  he.** [database 
30da0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77 68 6f 73  connection] whos
30db0 65 20 6c 69 6d 69 74 20 69 73 20 74 6f 20 62 65  e limit is to be
30dc0 20 73 65 74 20 6f 72 20 71 75 65 72 69 65 64 2e   set or queried.
30dd0 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20    The.** second 
30de0 70 61 72 61 6d 65 74 65 72 20 69 73 20 6f 6e 65  parameter is one
30df0 20 6f 66 20 74 68 65 20 5b 6c 69 6d 69 74 20 63   of the [limit c
30e00 61 74 65 67 6f 72 69 65 73 5d 20 74 68 61 74 20  ategories] that 
30e10 64 65 66 69 6e 65 20 61 0a 2a 2a 20 63 6c 61 73  define a.** clas
30e20 73 20 6f 66 20 63 6f 6e 73 74 72 75 63 74 73 20  s of constructs 
30e30 74 6f 20 62 65 20 73 69 7a 65 20 6c 69 6d 69 74  to be size limit
30e40 65 64 2e 20 20 54 68 65 20 74 68 69 72 64 20 70  ed.  The third p
30e50 61 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 0a  arameter is the.
30e60 2a 2a 20 6e 65 77 20 6c 69 6d 69 74 20 66 6f 72  ** new limit for
30e70 20 74 68 61 74 20 63 6f 6e 73 74 72 75 63 74 2e   that construct.
30e80 29 5e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  )^.**.** ^If the
30e90 20 6e 65 77 20 6c 69 6d 69 74 20 69 73 20 61 20   new limit is a 
30ea0 6e 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c  negative number,
30eb0 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20 75 6e   the limit is un
30ec0 63 68 61 6e 67 65 64 2e 0a 2a 2a 20 5e 28 46 6f  changed..** ^(Fo
30ed0 72 20 65 61 63 68 20 6c 69 6d 69 74 20 63 61 74  r each limit cat
30ee0 65 67 6f 72 79 20 53 51 4c 49 54 45 5f 4c 49 4d  egory SQLITE_LIM
30ef0 49 54 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 20 74  IT_<i>NAME</i> t
30f00 68 65 72 65 20 69 73 20 61 20 0a 2a 2a 20 5b 6c  here is a .** [l
30f10 69 6d 69 74 73 20 7c 20 68 61 72 64 20 75 70 70  imits | hard upp
30f20 65 72 20 62 6f 75 6e 64 5d 0a 2a 2a 20 73 65 74  er bound].** set
30f30 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65   at compile-time
30f40 20 62 79 20 61 20 43 20 70 72 65 70 72 6f 63 65   by a C preproce
30f50 73 73 6f 72 20 6d 61 63 72 6f 20 63 61 6c 6c 65  ssor macro calle
30f60 64 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c 20 53  d.** [limits | S
30f70 51 4c 49 54 45 5f 4d 41 58 5f 3c 69 3e 4e 41 4d  QLITE_MAX_<i>NAM
30f80 45 3c 2f 69 3e 5d 2e 0a 2a 2a 20 28 54 68 65 20  E</i>]..** (The 
30f90 22 5f 4c 49 4d 49 54 5f 22 20 69 6e 20 74 68 65  "_LIMIT_" in the
30fa0 20 6e 61 6d 65 20 69 73 20 63 68 61 6e 67 65 64   name is changed
30fb0 20 74 6f 20 22 5f 4d 41 58 5f 22 2e 29 29 5e 0a   to "_MAX_".))^.
30fc0 2a 2a 20 5e 41 74 74 65 6d 70 74 73 20 74 6f 20  ** ^Attempts to 
30fd0 69 6e 63 72 65 61 73 65 20 61 20 6c 69 6d 69 74  increase a limit
30fe0 20 61 62 6f 76 65 20 69 74 73 20 68 61 72 64 20   above its hard 
30ff0 75 70 70 65 72 20 62 6f 75 6e 64 20 61 72 65 0a  upper bound are.
31000 2a 2a 20 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e  ** silently trun
31010 63 61 74 65 64 20 74 6f 20 74 68 65 20 68 61 72  cated to the har
31020 64 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 2a  d upper bound..*
31030 2a 0a 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73  *.** ^Regardless
31040 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
31050 6f 74 20 74 68 65 20 6c 69 6d 69 74 20 77 61 73  ot the limit was
31060 20 63 68 61 6e 67 65 64 2c 20 74 68 65 20 0a 2a   changed, the .*
31070 2a 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  * [sqlite3_limit
31080 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 72 65  ()] interface re
31090 74 75 72 6e 73 20 74 68 65 20 70 72 69 6f 72 20  turns the prior 
310a0 76 61 6c 75 65 20 6f 66 20 74 68 65 20 6c 69 6d  value of the lim
310b0 69 74 2e 0a 2a 2a 20 5e 48 65 6e 63 65 2c 20 74  it..** ^Hence, t
310c0 6f 20 66 69 6e 64 20 74 68 65 20 63 75 72 72 65  o find the curre
310d0 6e 74 20 76 61 6c 75 65 20 6f 66 20 61 20 6c 69  nt value of a li
310e0 6d 69 74 20 77 69 74 68 6f 75 74 20 63 68 61 6e  mit without chan
310f0 67 69 6e 67 20 69 74 2c 0a 2a 2a 20 73 69 6d 70  ging it,.** simp
31100 6c 79 20 69 6e 76 6f 6b 65 20 74 68 69 73 20 69  ly invoke this i
31110 6e 74 65 72 66 61 63 65 20 77 69 74 68 20 74 68  nterface with th
31120 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
31130 72 20 73 65 74 20 74 6f 20 2d 31 2e 0a 2a 2a 0a  r set to -1..**.
31140 2a 2a 20 52 75 6e 2d 74 69 6d 65 20 6c 69 6d 69  ** Run-time limi
31150 74 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20  ts are intended 
31160 66 6f 72 20 75 73 65 20 69 6e 20 61 70 70 6c 69  for use in appli
31170 63 61 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 6e  cations that man
31180 61 67 65 0a 2a 2a 20 62 6f 74 68 20 74 68 65 69  age.** both thei
31190 72 20 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20 64  r own internal d
311a0 61 74 61 62 61 73 65 20 61 6e 64 20 61 6c 73 6f  atabase and also
311b0 20 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20   databases that 
311c0 61 72 65 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 2a  are controlled.*
311d0 2a 20 62 79 20 75 6e 74 72 75 73 74 65 64 20 65  * by untrusted e
311e0 78 74 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 2e  xternal sources.
311f0 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 61 70 70    An example app
31200 6c 69 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 62  lication might b
31210 65 20 61 0a 2a 2a 20 77 65 62 20 62 72 6f 77 73  e a.** web brows
31220 65 72 20 74 68 61 74 20 68 61 73 20 69 74 73 20  er that has its 
31230 6f 77 6e 20 64 61 74 61 62 61 73 65 73 20 66 6f  own databases fo
31240 72 20 73 74 6f 72 69 6e 67 20 68 69 73 74 6f 72  r storing histor
31250 79 20 61 6e 64 0a 2a 2a 20 73 65 70 61 72 61 74  y and.** separat
31260 65 20 64 61 74 61 62 61 73 65 73 20 63 6f 6e 74  e databases cont
31270 72 6f 6c 6c 65 64 20 62 79 20 4a 61 76 61 53 63  rolled by JavaSc
31280 72 69 70 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  ript application
31290 73 20 64 6f 77 6e 6c 6f 61 64 65 64 0a 2a 2a 20  s downloaded.** 
312a0 6f 66 66 20 74 68 65 20 49 6e 74 65 72 6e 65 74  off the Internet
312b0 2e 20 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20  .  The internal 
312c0 64 61 74 61 62 61 73 65 73 20 63 61 6e 20 62 65  databases can be
312d0 20 67 69 76 65 6e 20 74 68 65 0a 2a 2a 20 6c 61   given the.** la
312e0 72 67 65 2c 20 64 65 66 61 75 6c 74 20 6c 69 6d  rge, default lim
312f0 69 74 73 2e 20 20 44 61 74 61 62 61 73 65 73 20  its.  Databases 
31300 6d 61 6e 61 67 65 64 20 62 79 20 65 78 74 65 72  managed by exter
31310 6e 61 6c 20 73 6f 75 72 63 65 73 20 63 61 6e 0a  nal sources can.
31320 2a 2a 20 62 65 20 67 69 76 65 6e 20 6d 75 63 68  ** be given much
31330 20 73 6d 61 6c 6c 65 72 20 6c 69 6d 69 74 73 20   smaller limits 
31340 64 65 73 69 67 6e 65 64 20 74 6f 20 70 72 65 76  designed to prev
31350 65 6e 74 20 61 20 64 65 6e 69 61 6c 20 6f 66 20  ent a denial of 
31360 73 65 72 76 69 63 65 0a 2a 2a 20 61 74 74 61 63  service.** attac
31370 6b 2e 20 20 44 65 76 65 6c 6f 70 65 72 73 20 6d  k.  Developers m
31380 69 67 68 74 20 61 6c 73 6f 20 77 61 6e 74 20 74  ight also want t
31390 6f 20 75 73 65 20 74 68 65 20 5b 73 71 6c 69 74  o use the [sqlit
313a0 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
313b0 72 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63  r()].** interfac
313c0 65 20 74 6f 20 66 75 72 74 68 65 72 20 63 6f 6e  e to further con
313d0 74 72 6f 6c 20 75 6e 74 72 75 73 74 65 64 20 53  trol untrusted S
313e0 51 4c 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66  QL.  The size of
313f0 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a   the database.**
31400 20 63 72 65 61 74 65 64 20 62 79 20 61 6e 20 75   created by an u
31410 6e 74 72 75 73 74 65 64 20 73 63 72 69 70 74 20  ntrusted script 
31420 63 61 6e 20 62 65 20 63 6f 6e 74 61 69 6e 65 64  can be contained
31430 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 6d   using the.** [m
31440 61 78 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b  ax_page_count] [
31450 50 52 41 47 4d 41 5d 2e 0a 2a 2a 0a 2a 2a 20 4e  PRAGMA]..**.** N
31460 65 77 20 72 75 6e 2d 74 69 6d 65 20 6c 69 6d 69  ew run-time limi
31470 74 20 63 61 74 65 67 6f 72 69 65 73 20 6d 61 79  t categories may
31480 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74   be added in fut
31490 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2f  ure releases..*/
314a0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
314b0 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 73 71  sqlite3_limit(sq
314c0 6c 69 74 65 33 2a 2c 20 69 6e 74 20 69 64 2c 20  lite3*, int id, 
314d0 69 6e 74 20 6e 65 77 56 61 6c 29 3b 0a 0a 2f 2a  int newVal);../*
314e0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75  .** CAPI3REF: Ru
314f0 6e 2d 54 69 6d 65 20 4c 69 6d 69 74 20 43 61 74  n-Time Limit Cat
31500 65 67 6f 72 69 65 73 0a 2a 2a 20 4b 45 59 57 4f  egories.** KEYWO
31510 52 44 53 3a 20 7b 6c 69 6d 69 74 20 63 61 74 65  RDS: {limit cate
31520 67 6f 72 79 7d 20 7b 2a 6c 69 6d 69 74 20 63 61  gory} {*limit ca
31530 74 65 67 6f 72 69 65 73 7d 0a 2a 2a 0a 2a 2a 20  tegories}.**.** 
31540 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73 20  These constants 
31550 64 65 66 69 6e 65 20 76 61 72 69 6f 75 73 20 70  define various p
31560 65 72 66 6f 72 6d 61 6e 63 65 20 6c 69 6d 69 74  erformance limit
31570 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62 65  s.** that can be
31580 20 6c 6f 77 65 72 65 64 20 61 74 20 72 75 6e 2d   lowered at run-
31590 74 69 6d 65 20 75 73 69 6e 67 20 5b 73 71 6c 69  time using [sqli
315a0 74 65 33 5f 6c 69 6d 69 74 28 29 5d 2e 0a 2a 2a  te3_limit()]..**
315b0 20 54 68 65 20 73 79 6e 6f 70 73 69 73 20 6f 66   The synopsis of
315c0 20 74 68 65 20 6d 65 61 6e 69 6e 67 73 20 6f 66   the meanings of
315d0 20 74 68 65 20 76 61 72 69 6f 75 73 20 6c 69 6d   the various lim
315e0 69 74 73 20 69 73 20 73 68 6f 77 6e 20 62 65 6c  its is shown bel
315f0 6f 77 2e 0a 2a 2a 20 41 64 64 69 74 69 6f 6e 61  ow..** Additiona
31600 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  l information is
31610 20 61 76 61 69 6c 61 62 6c 65 20 61 74 20 5b 6c   available at [l
31620 69 6d 69 74 73 20 7c 20 4c 69 6d 69 74 73 20 69  imits | Limits i
31630 6e 20 53 51 4c 69 74 65 5d 2e 0a 2a 2a 0a 2a 2a  n SQLite]..**.**
31640 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54   <dl>.** [[SQLIT
31650 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 5d  E_LIMIT_LENGTH]]
31660 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
31670 4d 49 54 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a  MIT_LENGTH</dt>.
31680 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
31690 75 6d 20 73 69 7a 65 20 6f 66 20 61 6e 79 20 73  um size of any s
316a0 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 6f 72  tring or BLOB or
316b0 20 74 61 62 6c 65 20 72 6f 77 2c 20 69 6e 20 62   table row, in b
316c0 79 74 65 73 2e 3c 64 64 3e 29 5e 0a 2a 2a 0a 2a  ytes.<dd>)^.**.*
316d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
316e0 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28  _SQL_LENGTH]] ^(
316f0 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31700 5f 53 51 4c 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e  _SQL_LENGTH</dt>
31710 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
31720 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 61 6e  mum length of an
31730 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
31740 69 6e 20 62 79 74 65 73 2e 3c 2f 64 64 3e 29 5e  in bytes.</dd>)^
31750 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
31760 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d 5d 20 5e  LIMIT_COLUMN]] ^
31770 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
31780 54 5f 43 4f 4c 55 4d 4e 3c 2f 64 74 3e 0a 2a 2a  T_COLUMN</dt>.**
31790 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
317a0 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
317b0 6e 73 20 69 6e 20 61 20 74 61 62 6c 65 20 64 65  ns in a table de
317c0 66 69 6e 69 74 69 6f 6e 20 6f 72 20 69 6e 20 74  finition or in t
317d0 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20 73 65 74  he.** result set
317e0 20 6f 66 20 61 20 5b 53 45 4c 45 43 54 5d 20 6f   of a [SELECT] o
317f0 72 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  r the maximum nu
31800 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20  mber of columns 
31810 69 6e 20 61 6e 20 69 6e 64 65 78 0a 2a 2a 20 6f  in an index.** o
31820 72 20 69 6e 20 61 6e 20 4f 52 44 45 52 20 42 59  r in an ORDER BY
31830 20 6f 72 20 47 52 4f 55 50 20 42 59 20 63 6c 61   or GROUP BY cla
31840 75 73 65 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a  use.</dd>)^.**.*
31850 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
31860 5f 45 58 50 52 5f 44 45 50 54 48 5d 5d 20 5e 28  _EXPR_DEPTH]] ^(
31870 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31880 5f 45 58 50 52 5f 44 45 50 54 48 3c 2f 64 74 3e  _EXPR_DEPTH</dt>
31890 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
318a0 6d 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65  mum depth of the
318b0 20 70 61 72 73 65 20 74 72 65 65 20 6f 6e 20 61   parse tree on a
318c0 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f  ny expression.</
318d0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
318e0 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f  LITE_LIMIT_COMPO
318f0 55 4e 44 5f 53 45 4c 45 43 54 5d 5d 20 5e 28 3c  UND_SELECT]] ^(<
31900 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
31910 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 3c  COMPOUND_SELECT<
31920 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
31930 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
31940 66 20 74 65 72 6d 73 20 69 6e 20 61 20 63 6f 6d  f terms in a com
31950 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 73 74 61  pound SELECT sta
31960 74 65 6d 65 6e 74 2e 3c 2f 64 64 3e 29 5e 0a 2a  tement.</dd>)^.*
31970 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
31980 4d 49 54 5f 56 44 42 45 5f 4f 50 5d 5d 20 5e 28  MIT_VDBE_OP]] ^(
31990 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
319a0 5f 56 44 42 45 5f 4f 50 3c 2f 64 74 3e 0a 2a 2a  _VDBE_OP</dt>.**
319b0 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
319c0 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 73 74 72   number of instr
319d0 75 63 74 69 6f 6e 73 20 69 6e 20 61 20 76 69 72  uctions in a vir
319e0 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 70 72 6f  tual machine pro
319f0 67 72 61 6d 0a 2a 2a 20 75 73 65 64 20 74 6f 20  gram.** used to 
31a00 69 6d 70 6c 65 6d 65 6e 74 20 61 6e 20 53 51 4c  implement an SQL
31a10 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 49 66 20   statement.  If 
31a20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
31a30 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 74 68 65  _v2()] or.** the
31a40 20 65 71 75 69 76 61 6c 65 6e 74 20 74 72 69 65   equivalent trie
31a50 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 73 70  s to allocate sp
31a60 61 63 65 20 66 6f 72 20 6d 6f 72 65 20 74 68 61  ace for more tha
31a70 6e 20 74 68 69 73 20 6d 61 6e 79 20 6f 70 63 6f  n this many opco
31a80 64 65 73 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67  des.** in a sing
31a90 6c 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  le prepared stat
31aa0 65 6d 65 6e 74 2c 20 61 6e 20 53 51 4c 49 54 45  ement, an SQLITE
31ab0 5f 4e 4f 4d 45 4d 20 65 72 72 6f 72 20 69 73 20  _NOMEM error is 
31ac0 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e  returned.</dd>)^
31ad0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
31ae0 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41  LIMIT_FUNCTION_A
31af0 52 47 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54  RG]] ^(<dt>SQLIT
31b00 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e  E_LIMIT_FUNCTION
31b10 5f 41 52 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  _ARG</dt>.** <dd
31b20 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d  >The maximum num
31b30 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73  ber of arguments
31b40 20 6f 6e 20 61 20 66 75 6e 63 74 69 6f 6e 2e 3c   on a function.<
31b50 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  /dd>)^.**.** [[S
31b60 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41  QLITE_LIMIT_ATTA
31b70 43 48 45 44 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  CHED]] ^(<dt>SQL
31b80 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48  ITE_LIMIT_ATTACH
31b90 45 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  ED</dt>.** <dd>T
31ba0 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
31bb0 72 20 6f 66 20 5b 41 54 54 41 43 48 20 7c 20 61  r of [ATTACH | a
31bc0 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
31bd0 73 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  s].)^</dd>.**.**
31be0 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
31bf0 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e  LIKE_PATTERN_LEN
31c00 47 54 48 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53  GTH]].** ^(<dt>S
31c10 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45  QLITE_LIMIT_LIKE
31c20 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 3c  _PATTERN_LENGTH<
31c30 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
31c40 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  maximum length o
31c50 66 20 74 68 65 20 70 61 74 74 65 72 6e 20 61 72  f the pattern ar
31c60 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 4c  gument to the [L
31c70 49 4b 45 5d 20 6f 72 0a 2a 2a 20 5b 47 4c 4f 42  IKE] or.** [GLOB
31c80 5d 20 6f 70 65 72 61 74 6f 72 73 2e 3c 2f 64 64  ] operators.</dd
31c90 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
31ca0 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c  TE_LIMIT_VARIABL
31cb0 45 5f 4e 55 4d 42 45 52 5d 5d 0a 2a 2a 20 5e 28  E_NUMBER]].** ^(
31cc0 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
31cd0 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
31ce0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
31cf0 20 6d 61 78 69 6d 75 6d 20 69 6e 64 65 78 20 6e   maximum index n
31d00 75 6d 62 65 72 20 6f 66 20 61 6e 79 20 5b 70 61  umber of any [pa
31d10 72 61 6d 65 74 65 72 5d 20 69 6e 20 61 6e 20 53  rameter] in an S
31d20 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 29 5e 0a  QL statement.)^.
31d30 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
31d40 49 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50  IMIT_TRIGGER_DEP
31d50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54  TH]] ^(<dt>SQLIT
31d60 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f  E_LIMIT_TRIGGER_
31d70 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  DEPTH</dt>.** <d
31d80 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 65  d>The maximum de
31d90 70 74 68 20 6f 66 20 72 65 63 75 72 73 69 6f 6e  pth of recursion
31da0 20 66 6f 72 20 74 72 69 67 67 65 72 73 2e 3c 2f   for triggers.</
31db0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
31dc0 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45  LITE_LIMIT_WORKE
31dd0 52 5f 54 48 52 45 41 44 53 5d 5d 20 5e 28 3c 64  R_THREADS]] ^(<d
31de0 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57  t>SQLITE_LIMIT_W
31df0 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3c 2f 64  ORKER_THREADS</d
31e00 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
31e10 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
31e20 61 75 78 69 6c 69 61 72 79 20 77 6f 72 6b 65 72  auxiliary worker
31e30 20 74 68 72 65 61 64 73 20 74 68 61 74 20 61 20   threads that a 
31e40 73 69 6e 67 6c 65 0a 2a 2a 20 5b 70 72 65 70 61  single.** [prepa
31e50 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6d  red statement] m
31e60 61 79 20 73 74 61 72 74 2e 3c 2f 64 64 3e 29 5e  ay start.</dd>)^
31e70 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65  .** </dl>.*/.#de
31e80 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
31e90 54 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20 20  T_LENGTH        
31ea0 20 20 20 20 20 20 20 20 20 20 20 20 30 0a 23 64              0.#d
31eb0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
31ec0 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 20 20 20  IT_SQL_LENGTH   
31ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 31 0a 23               1.#
31ee0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
31ef0 4d 49 54 5f 43 4f 4c 55 4d 4e 20 20 20 20 20 20  MIT_COLUMN      
31f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 0a                2.
31f10 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
31f20 49 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 20  IMIT_EXPR_DEPTH 
31f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33                 3
31f40 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
31f50 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53  LIMIT_COMPOUND_S
31f60 45 4c 45 43 54 20 20 20 20 20 20 20 20 20 20 20  ELECT           
31f70 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  4.#define SQLITE
31f80 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50 20 20  _LIMIT_VDBE_OP  
31f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31fa0 20 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   5.#define SQLIT
31fb0 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e  E_LIMIT_FUNCTION
31fc0 5f 41 52 47 20 20 20 20 20 20 20 20 20 20 20 20  _ARG            
31fd0 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    6.#define SQLI
31fe0 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48 45  TE_LIMIT_ATTACHE
31ff0 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  D               
32000 20 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c     7.#define SQL
32010 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50  ITE_LIMIT_LIKE_P
32020 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 20 20 20  ATTERN_LENGTH   
32030 20 20 20 20 38 0a 23 64 65 66 69 6e 65 20 53 51      8.#define SQ
32040 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41  LITE_LIMIT_VARIA
32050 42 4c 45 5f 4e 55 4d 42 45 52 20 20 20 20 20 20  BLE_NUMBER      
32060 20 20 20 20 20 39 0a 23 64 65 66 69 6e 65 20 53       9.#define S
32070 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49 47  QLITE_LIMIT_TRIG
32080 47 45 52 5f 44 45 50 54 48 20 20 20 20 20 20 20  GER_DEPTH       
32090 20 20 20 20 20 31 30 0a 23 64 65 66 69 6e 65 20       10.#define 
320a0 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52  SQLITE_LIMIT_WOR
320b0 4b 45 52 5f 54 48 52 45 41 44 53 20 20 20 20 20  KER_THREADS     
320c0 20 20 20 20 20 20 31 31 0a 0a 2f 2a 0a 2a 2a 20        11../*.** 
320d0 43 41 50 49 33 52 45 46 3a 20 50 72 65 70 61 72  CAPI3REF: Prepar
320e0 65 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 54 68  e Flags.**.** Th
320f0 65 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 64 65  ese constants de
32100 66 69 6e 65 20 76 61 72 69 6f 75 73 20 66 6c 61  fine various fla
32110 67 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 70  gs that can be p
32120 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 22 70  assed into.** "p
32130 72 65 70 46 6c 61 67 73 22 20 70 61 72 61 6d 65  repFlags" parame
32140 74 65 72 20 6f 66 20 74 68 65 20 5b 73 71 6c 69  ter of the [sqli
32150 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29  te3_prepare_v3()
32160 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  ] and.** [sqlite
32170 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
32180 5d 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a  ] interfaces..**
32190 0a 2a 2a 20 4e 65 77 20 66 6c 61 67 73 20 6d 61  .** New flags ma
321a0 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75  y be added in fu
321b0 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
321c0 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 3c   SQLite..**.** <
321d0 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  dl>.** [[SQLITE_
321e0 50 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45  PREPARE_PERSISTE
321f0 4e 54 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54  NT]] ^(<dt>SQLIT
32200 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49 53  E_PREPARE_PERSIS
32210 54 45 4e 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  TENT</dt>.** <dd
32220 3e 54 68 65 20 53 51 4c 49 54 45 5f 50 52 45 50  >The SQLITE_PREP
32230 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 20 66  ARE_PERSISTENT f
32240 6c 61 67 20 69 73 20 61 20 68 69 6e 74 20 74 6f  lag is a hint to
32250 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e   the query plann
32260 65 72 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 70  er.** that the p
32270 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
32280 74 20 77 69 6c 6c 20 62 65 20 72 65 74 61 69 6e  t will be retain
32290 65 64 20 66 6f 72 20 61 20 6c 6f 6e 67 20 74 69  ed for a long ti
322a0 6d 65 20 61 6e 64 0a 2a 2a 20 70 72 6f 62 61 62  me and.** probab
322b0 6c 79 20 72 65 75 73 65 64 20 6d 61 6e 79 20 74  ly reused many t
322c0 69 6d 65 73 2e 29 5e 20 5e 57 69 74 68 6f 75 74  imes.)^ ^Without
322d0 20 74 68 69 73 20 66 6c 61 67 2c 20 5b 73 71 6c   this flag, [sql
322e0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28  ite3_prepare_v3(
322f0 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74  )].** and [sqlit
32300 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28  e3_prepare16_v3(
32310 29 5d 20 61 73 73 75 6d 65 20 74 68 61 74 20 74  )] assume that t
32320 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
32330 65 6d 65 6e 74 20 77 69 6c 6c 20 0a 2a 2a 20 62  ement will .** b
32340 65 20 75 73 65 64 20 6a 75 73 74 20 6f 6e 63 65  e used just once
32350 20 6f 72 20 61 74 20 6d 6f 73 74 20 61 20 66 65   or at most a fe
32360 77 20 74 69 6d 65 73 20 61 6e 64 20 74 68 65 6e  w times and then
32370 20 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67   destroyed using
32380 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e  .** [sqlite3_fin
32390 61 6c 69 7a 65 28 29 5d 20 72 65 6c 61 74 69 76  alize()] relativ
323a0 65 6c 79 20 73 6f 6f 6e 2e 20 54 68 65 20 63 75  ely soon. The cu
323b0 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61  rrent implementa
323c0 74 69 6f 6e 20 61 63 74 73 0a 2a 2a 20 6f 6e 20  tion acts.** on 
323d0 74 68 69 73 20 68 69 6e 74 20 62 79 20 61 76 6f  this hint by avo
323e0 69 64 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66  iding the use of
323f0 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f   [lookaside memo
32400 72 79 5d 20 73 6f 20 61 73 20 6e 6f 74 20 74 6f  ry] so as not to
32410 0a 2a 2a 20 64 65 70 6c 65 74 65 20 74 68 65 20  .** deplete the 
32420 6c 69 6d 69 74 65 64 20 73 74 6f 72 65 20 6f 66  limited store of
32430 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72   lookaside memor
32440 79 2e 20 46 75 74 75 72 65 20 76 65 72 73 69 6f  y. Future versio
32450 6e 73 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65 20  ns of.** SQLite 
32460 6d 61 79 20 61 63 74 20 6f 6e 20 74 68 69 73 20  may act on this 
32470 68 69 6e 74 20 64 69 66 66 65 72 65 6e 74 6c 79  hint differently
32480 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64  ..** </dl>.*/.#d
32490 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 45  efine SQLITE_PRE
324a0 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 20  PARE_PERSISTENT 
324b0 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
324c0 31 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  1../*.** CAPI3RE
324d0 46 3a 20 43 6f 6d 70 69 6c 69 6e 67 20 41 6e 20  F: Compiling An 
324e0 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 0a 2a 2a  SQL Statement.**
324f0 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20   KEYWORDS: {SQL 
32500 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c  statement compil
32510 65 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  er}.** METHOD: s
32520 71 6c 69 74 65 33 0a 2a 2a 20 43 4f 4e 53 54 52  qlite3.** CONSTR
32530 55 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 5f 73  UCTOR: sqlite3_s
32540 74 6d 74 0a 2a 2a 0a 2a 2a 20 54 6f 20 65 78 65  tmt.**.** To exe
32550 63 75 74 65 20 61 6e 20 53 51 4c 20 73 74 61 74  cute an SQL stat
32560 65 6d 65 6e 74 2c 20 69 74 20 6d 75 73 74 20 66  ement, it must f
32570 69 72 73 74 20 62 65 20 63 6f 6d 70 69 6c 65 64  irst be compiled
32580 20 69 6e 74 6f 20 61 20 62 79 74 65 2d 63 6f 64   into a byte-cod
32590 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 69  e.** program usi
325a0 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20  ng one of these 
325b0 72 6f 75 74 69 6e 65 73 2e 20 20 4f 72 2c 20 69  routines.  Or, i
325c0 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74  n other words, t
325d0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a  hese routines.**
325e0 20 61 72 65 20 63 6f 6e 73 74 72 75 63 74 6f 72   are constructor
325f0 73 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70 61  s for the [prepa
32600 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f  red statement] o
32610 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  bject..**.** The
32620 20 70 72 65 66 65 72 72 65 64 20 72 6f 75 74 69   preferred routi
32630 6e 65 20 74 6f 20 75 73 65 20 69 73 20 5b 73 71  ne to use is [sq
32640 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
32650 28 29 5d 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71  ()].  The.** [sq
32660 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d  lite3_prepare()]
32670 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6c 65   interface is le
32680 67 61 63 79 20 61 6e 64 20 73 68 6f 75 6c 64 20  gacy and should 
32690 62 65 20 61 76 6f 69 64 65 64 2e 0a 2a 2a 20 5b  be avoided..** [
326a0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
326b0 76 33 28 29 5d 20 68 61 73 20 61 6e 20 65 78 74  v3()] has an ext
326c0 72 61 20 22 70 72 65 70 46 6c 61 67 73 22 20 6f  ra "prepFlags" o
326d0 70 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75 73  ption that is us
326e0 65 64 0a 2a 2a 20 66 6f 72 20 73 70 65 63 69 61  ed.** for specia
326f0 6c 20 70 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a  l purposes..**.*
32700 2a 20 54 68 65 20 75 73 65 20 6f 66 20 74 68 65  * The use of the
32710 20 55 54 46 2d 38 20 69 6e 74 65 72 66 61 63 65   UTF-8 interface
32720 73 20 69 73 20 70 72 65 66 65 72 72 65 64 2c 20  s is preferred, 
32730 61 73 20 53 51 4c 69 74 65 20 63 75 72 72 65 6e  as SQLite curren
32740 74 6c 79 0a 2a 2a 20 64 6f 65 73 20 61 6c 6c 20  tly.** does all 
32750 70 61 72 73 69 6e 67 20 75 73 69 6e 67 20 55 54  parsing using UT
32760 46 2d 38 2e 20 20 54 68 65 20 55 54 46 2d 31 36  F-8.  The UTF-16
32770 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
32780 70 72 6f 76 69 64 65 64 0a 2a 2a 20 61 73 20 61  provided.** as a
32790 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2e 20 20 54   convenience.  T
327a0 68 65 20 55 54 46 2d 31 36 20 69 6e 74 65 72 66  he UTF-16 interf
327b0 61 63 65 73 20 77 6f 72 6b 20 62 79 20 63 6f 6e  aces work by con
327c0 76 65 72 74 69 6e 67 20 74 68 65 0a 2a 2a 20 69  verting the.** i
327d0 6e 70 75 74 20 74 65 78 74 20 69 6e 74 6f 20 55  nput text into U
327e0 54 46 2d 38 2c 20 74 68 65 6e 20 69 6e 76 6f 6b  TF-8, then invok
327f0 69 6e 67 20 74 68 65 20 63 6f 72 72 65 73 70 6f  ing the correspo
32800 6e 64 69 6e 67 20 55 54 46 2d 38 20 69 6e 74 65  nding UTF-8 inte
32810 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  rface..**.** The
32820 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2c   first argument,
32830 20 22 64 62 22 2c 20 69 73 20 61 20 5b 64 61 74   "db", is a [dat
32840 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
32850 5d 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  ] obtained from 
32860 61 0a 2a 2a 20 70 72 69 6f 72 20 73 75 63 63 65  a.** prior succe
32870 73 73 66 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 73  ssful call to [s
32880 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
32890 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
328a0 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74  ()] or.** [sqlit
328b0 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2e 20 20 54  e3_open16()].  T
328c0 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
328d0 65 63 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20  ection must not 
328e0 68 61 76 65 20 62 65 65 6e 20 63 6c 6f 73 65 64  have been closed
328f0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ..**.** The seco
32900 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20 22 7a 53  nd argument, "zS
32910 71 6c 22 2c 20 69 73 20 74 68 65 20 73 74 61 74  ql", is the stat
32920 65 6d 65 6e 74 20 74 6f 20 62 65 20 63 6f 6d 70  ement to be comp
32930 69 6c 65 64 2c 20 65 6e 63 6f 64 65 64 0a 2a 2a  iled, encoded.**
32940 20 61 73 20 65 69 74 68 65 72 20 55 54 46 2d 38   as either UTF-8
32950 20 6f 72 20 55 54 46 2d 31 36 2e 20 20 54 68 65   or UTF-16.  The
32960 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
32970 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70  (), sqlite3_prep
32980 61 72 65 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64  are_v2(),.** and
32990 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
329a0 5f 76 33 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61  _v3().** interfa
329b0 63 65 73 20 75 73 65 20 55 54 46 2d 38 2c 20 61  ces use UTF-8, a
329c0 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nd sqlite3_prepa
329d0 72 65 31 36 28 29 2c 20 73 71 6c 69 74 65 33 5f  re16(), sqlite3_
329e0 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c 0a  prepare16_v2(),.
329f0 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70  ** and sqlite3_p
32a00 72 65 70 61 72 65 31 36 5f 76 33 28 29 20 75 73  repare16_v3() us
32a10 65 20 55 54 46 2d 31 36 2e 0a 2a 2a 0a 2a 2a 20  e UTF-16..**.** 
32a20 5e 49 66 20 74 68 65 20 6e 42 79 74 65 20 61 72  ^If the nByte ar
32a30 67 75 6d 65 6e 74 20 69 73 20 6e 65 67 61 74 69  gument is negati
32a40 76 65 2c 20 74 68 65 6e 20 7a 53 71 6c 20 69 73  ve, then zSql is
32a50 20 72 65 61 64 20 75 70 20 74 6f 20 74 68 65 0a   read up to the.
32a60 2a 2a 20 66 69 72 73 74 20 7a 65 72 6f 20 74 65  ** first zero te
32a70 72 6d 69 6e 61 74 6f 72 2e 20 5e 49 66 20 6e 42  rminator. ^If nB
32a80 79 74 65 20 69 73 20 70 6f 73 69 74 69 76 65 2c  yte is positive,
32a90 20 74 68 65 6e 20 69 74 20 69 73 20 74 68 65 0a   then it is the.
32aa0 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  ** number of byt
32ab0 65 73 20 72 65 61 64 20 66 72 6f 6d 20 7a 53 71  es read from zSq
32ac0 6c 2e 20 20 5e 49 66 20 6e 42 79 74 65 20 69 73  l.  ^If nByte is
32ad0 20 7a 65 72 6f 2c 20 74 68 65 6e 20 6e 6f 20 70   zero, then no p
32ae0 72 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65  repared.** state
32af0 6d 65 6e 74 20 69 73 20 67 65 6e 65 72 61 74 65  ment is generate
32b00 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20 63 61 6c  d..** If the cal
32b10 6c 65 72 20 6b 6e 6f 77 73 20 74 68 61 74 20 74  ler knows that t
32b20 68 65 20 73 75 70 70 6c 69 65 64 20 73 74 72 69  he supplied stri
32b30 6e 67 20 69 73 20 6e 75 6c 2d 74 65 72 6d 69 6e  ng is nul-termin
32b40 61 74 65 64 2c 20 74 68 65 6e 0a 2a 2a 20 74 68  ated, then.** th
32b50 65 72 65 20 69 73 20 61 20 73 6d 61 6c 6c 20 70  ere is a small p
32b60 65 72 66 6f 72 6d 61 6e 63 65 20 61 64 76 61 6e  erformance advan
32b70 74 61 67 65 20 74 6f 20 70 61 73 73 69 6e 67 20  tage to passing 
32b80 61 6e 20 6e 42 79 74 65 20 70 61 72 61 6d 65 74  an nByte paramet
32b90 65 72 20 74 68 61 74 0a 2a 2a 20 69 73 20 74 68  er that.** is th
32ba0 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65  e number of byte
32bb0 73 20 69 6e 20 74 68 65 20 69 6e 70 75 74 20 73  s in the input s
32bc0 74 72 69 6e 67 20 3c 69 3e 69 6e 63 6c 75 64 69  tring <i>includi
32bd0 6e 67 3c 2f 69 3e 0a 2a 2a 20 74 68 65 20 6e 75  ng</i>.** the nu
32be0 6c 2d 74 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a  l-terminator..**
32bf0 0a 2a 2a 20 5e 49 66 20 70 7a 54 61 69 6c 20 69  .** ^If pzTail i
32c00 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20  s not NULL then 
32c10 2a 70 7a 54 61 69 6c 20 69 73 20 6d 61 64 65 20  *pzTail is made 
32c20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20  to point to the 
32c30 66 69 72 73 74 20 62 79 74 65 0a 2a 2a 20 70 61  first byte.** pa
32c40 73 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68  st the end of th
32c50 65 20 66 69 72 73 74 20 53 51 4c 20 73 74 61 74  e first SQL stat
32c60 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2e 20 20  ement in zSql.  
32c70 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 6f  These routines o
32c80 6e 6c 79 0a 2a 2a 20 63 6f 6d 70 69 6c 65 20 74  nly.** compile t
32c90 68 65 20 66 69 72 73 74 20 73 74 61 74 65 6d 65  he first stateme
32ca0 6e 74 20 69 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a  nt in zSql, so *
32cb0 70 7a 54 61 69 6c 20 69 73 20 6c 65 66 74 20 70  pzTail is left p
32cc0 6f 69 6e 74 69 6e 67 20 74 6f 0a 2a 2a 20 77 68  ointing to.** wh
32cd0 61 74 20 72 65 6d 61 69 6e 73 20 75 6e 63 6f 6d  at remains uncom
32ce0 70 69 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 2a 70  piled..**.** ^*p
32cf0 70 53 74 6d 74 20 69 73 20 6c 65 66 74 20 70 6f  pStmt is left po
32d00 69 6e 74 69 6e 67 20 74 6f 20 61 20 63 6f 6d 70  inting to a comp
32d10 69 6c 65 64 20 5b 70 72 65 70 61 72 65 64 20 73  iled [prepared s
32d20 74 61 74 65 6d 65 6e 74 5d 20 74 68 61 74 20 63  tatement] that c
32d30 61 6e 20 62 65 0a 2a 2a 20 65 78 65 63 75 74 65  an be.** execute
32d40 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  d using [sqlite3
32d50 5f 73 74 65 70 28 29 5d 2e 20 20 5e 49 66 20 74  _step()].  ^If t
32d60 68 65 72 65 20 69 73 20 61 6e 20 65 72 72 6f 72  here is an error
32d70 2c 20 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74  , *ppStmt is set
32d80 0a 2a 2a 20 74 6f 20 4e 55 4c 4c 2e 20 20 5e 49  .** to NULL.  ^I
32d90 66 20 74 68 65 20 69 6e 70 75 74 20 74 65 78 74  f the input text
32da0 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 20 53 51 4c   contains no SQL
32db0 20 28 69 66 20 74 68 65 20 69 6e 70 75 74 20 69   (if the input i
32dc0 73 20 61 6e 20 65 6d 70 74 79 0a 2a 2a 20 73 74  s an empty.** st
32dd0 72 69 6e 67 20 6f 72 20 61 20 63 6f 6d 6d 65 6e  ring or a commen
32de0 74 29 20 74 68 65 6e 20 2a 70 70 53 74 6d 74 20  t) then *ppStmt 
32df0 69 73 20 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 0a  is set to NULL..
32e00 2a 2a 20 54 68 65 20 63 61 6c 6c 69 6e 67 20 70  ** The calling p
32e10 72 6f 63 65 64 75 72 65 20 69 73 20 72 65 73 70  rocedure is resp
32e20 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64 65 6c 65  onsible for dele
32e30 74 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 65  ting the compile
32e40 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65 6d 65  d.** SQL stateme
32e50 6e 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  nt using [sqlite
32e60 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d 20 61 66  3_finalize()] af
32e70 74 65 72 20 69 74 20 68 61 73 20 66 69 6e 69 73  ter it has finis
32e80 68 65 64 20 77 69 74 68 20 69 74 2e 0a 2a 2a 20  hed with it..** 
32e90 70 70 53 74 6d 74 20 6d 61 79 20 6e 6f 74 20 62  ppStmt may not b
32ea0 65 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 4f  e NULL..**.** ^O
32eb0 6e 20 73 75 63 63 65 73 73 2c 20 74 68 65 20 73  n success, the s
32ec0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
32ed0 20 66 61 6d 69 6c 79 20 6f 66 20 72 6f 75 74 69   family of routi
32ee0 6e 65 73 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  nes return [SQLI
32ef0 54 45 5f 4f 4b 5d 3b 0a 2a 2a 20 6f 74 68 65 72  TE_OK];.** other
32f00 77 69 73 65 20 61 6e 20 5b 65 72 72 6f 72 20 63  wise an [error c
32f10 6f 64 65 5d 20 69 73 20 72 65 74 75 72 6e 65 64  ode] is returned
32f20 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
32f30 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
32f40 2c 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  , sqlite3_prepar
32f50 65 5f 76 33 28 29 2c 20 73 71 6c 69 74 65 33 5f  e_v3(), sqlite3_
32f60 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 2c 0a  prepare16_v2(),.
32f70 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70  ** and sqlite3_p
32f80 72 65 70 61 72 65 31 36 5f 76 33 28 29 20 69 6e  repare16_v3() in
32f90 74 65 72 66 61 63 65 73 20 61 72 65 20 72 65 63  terfaces are rec
32fa0 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 61 6c 6c  ommended for all
32fb0 20 6e 65 77 20 70 72 6f 67 72 61 6d 73 2e 0a 2a   new programs..*
32fc0 2a 20 54 68 65 20 6f 6c 64 65 72 20 69 6e 74 65  * The older inte
32fd0 72 66 61 63 65 73 20 28 73 71 6c 69 74 65 33 5f  rfaces (sqlite3_
32fe0 70 72 65 70 61 72 65 28 29 20 61 6e 64 20 73 71  prepare() and sq
32ff0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28  lite3_prepare16(
33000 29 29 0a 2a 2a 20 61 72 65 20 72 65 74 61 69 6e  )).** are retain
33010 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73  ed for backwards
33020 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2c 20   compatibility, 
33030 62 75 74 20 74 68 65 69 72 20 75 73 65 20 69 73  but their use is
33040 20 64 69 73 63 6f 75 72 61 67 65 64 2e 0a 2a 2a   discouraged..**
33050 20 5e 49 6e 20 74 68 65 20 22 76 58 22 20 69 6e   ^In the "vX" in
33060 74 65 72 66 61 63 65 73 2c 20 74 68 65 20 70 72  terfaces, the pr
33070 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33080 0a 2a 2a 20 74 68 61 74 20 69 73 20 72 65 74 75  .** that is retu
33090 72 6e 65 64 20 28 74 68 65 20 5b 73 71 6c 69 74  rned (the [sqlit
330a0 65 33 5f 73 74 6d 74 5d 20 6f 62 6a 65 63 74 29  e3_stmt] object)
330b0 20 63 6f 6e 74 61 69 6e 73 20 61 20 63 6f 70 79   contains a copy
330c0 20 6f 66 20 74 68 65 0a 2a 2a 20 6f 72 69 67 69   of the.** origi
330d0 6e 61 6c 20 53 51 4c 20 74 65 78 74 2e 20 54 68  nal SQL text. Th
330e0 69 73 20 63 61 75 73 65 73 20 74 68 65 20 5b 73  is causes the [s
330f0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 69  qlite3_step()] i
33100 6e 74 65 72 66 61 63 65 20 74 6f 0a 2a 2a 20 62  nterface to.** b
33110 65 68 61 76 65 20 64 69 66 66 65 72 65 6e 74 6c  ehave differentl
33120 79 20 69 6e 20 74 68 72 65 65 20 77 61 79 73 3a  y in three ways:
33130 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c  .**.** <ol>.** <
33140 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 64  li>.** ^If the d
33150 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 63  atabase schema c
33160 68 61 6e 67 65 73 2c 20 69 6e 73 74 65 61 64 20  hanges, instead 
33170 6f 66 20 72 65 74 75 72 6e 69 6e 67 20 5b 53 51  of returning [SQ
33180 4c 49 54 45 5f 53 43 48 45 4d 41 5d 20 61 73 20  LITE_SCHEMA] as 
33190 69 74 0a 2a 2a 20 61 6c 77 61 79 73 20 75 73 65  it.** always use
331a0 64 20 74 6f 20 64 6f 2c 20 5b 73 71 6c 69 74 65  d to do, [sqlite
331b0 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c 20 61  3_step()] will a
331c0 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 63  utomatically rec
331d0 6f 6d 70 69 6c 65 20 74 68 65 20 53 51 4c 0a 2a  ompile the SQL.*
331e0 2a 20 73 74 61 74 65 6d 65 6e 74 20 61 6e 64 20  * statement and 
331f0 74 72 79 20 74 6f 20 72 75 6e 20 69 74 20 61 67  try to run it ag
33200 61 69 6e 2e 20 41 73 20 6d 61 6e 79 20 61 73 20  ain. As many as 
33210 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45  [SQLITE_MAX_SCHE
33220 4d 41 5f 52 45 54 52 59 5d 0a 2a 2a 20 72 65 74  MA_RETRY].** ret
33230 72 69 65 73 20 77 69 6c 6c 20 6f 63 63 75 72 20  ries will occur 
33240 62 65 66 6f 72 65 20 73 71 6c 69 74 65 33 5f 73  before sqlite3_s
33250 74 65 70 28 29 20 67 69 76 65 73 20 75 70 20 61  tep() gives up a
33260 6e 64 20 72 65 74 75 72 6e 73 20 61 6e 20 65 72  nd returns an er
33270 72 6f 72 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a  ror..** </li>.**
33280 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 57 68 65  .** <li>.** ^Whe
33290 6e 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72  n an error occur
332a0 73 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  s, [sqlite3_step
332b0 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ()] will return 
332c0 6f 6e 65 20 6f 66 20 74 68 65 20 64 65 74 61 69  one of the detai
332d0 6c 65 64 0a 2a 2a 20 5b 65 72 72 6f 72 20 63 6f  led.** [error co
332e0 64 65 73 5d 20 6f 72 20 5b 65 78 74 65 6e 64 65  des] or [extende
332f0 64 20 65 72 72 6f 72 20 63 6f 64 65 73 5d 2e 20  d error codes]. 
33300 20 5e 54 68 65 20 6c 65 67 61 63 79 20 62 65 68   ^The legacy beh
33310 61 76 69 6f 72 20 77 61 73 20 74 68 61 74 0a 2a  avior was that.*
33320 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  * [sqlite3_step(
33330 29 5d 20 77 6f 75 6c 64 20 6f 6e 6c 79 20 72 65  )] would only re
33340 74 75 72 6e 20 61 20 67 65 6e 65 72 69 63 20 5b  turn a generic [
33350 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 72 65  SQLITE_ERROR] re
33360 73 75 6c 74 20 63 6f 64 65 0a 2a 2a 20 61 6e 64  sult code.** and
33370 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
33380 20 77 6f 75 6c 64 20 68 61 76 65 20 74 6f 20 6d   would have to m
33390 61 6b 65 20 61 20 73 65 63 6f 6e 64 20 63 61 6c  ake a second cal
333a0 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65  l to [sqlite3_re
333b0 73 65 74 28 29 5d 0a 2a 2a 20 69 6e 20 6f 72 64  set()].** in ord
333c0 65 72 20 74 6f 20 66 69 6e 64 20 74 68 65 20 75  er to find the u
333d0 6e 64 65 72 6c 79 69 6e 67 20 63 61 75 73 65 20  nderlying cause 
333e0 6f 66 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20  of the problem. 
333f0 57 69 74 68 20 74 68 65 20 22 76 32 22 20 70 72  With the "v2" pr
33400 65 70 61 72 65 0a 2a 2a 20 69 6e 74 65 72 66 61  epare.** interfa
33410 63 65 73 2c 20 74 68 65 20 75 6e 64 65 72 6c 79  ces, the underly
33420 69 6e 67 20 72 65 61 73 6f 6e 20 66 6f 72 20 74  ing reason for t
33430 68 65 20 65 72 72 6f 72 20 69 73 20 72 65 74 75  he error is retu
33440 72 6e 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79  rned immediately
33450 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a  ..** </li>.**.**
33460 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65   <li>.** ^If the
33470 20 73 70 65 63 69 66 69 63 20 76 61 6c 75 65 20   specific value 
33480 62 6f 75 6e 64 20 74 6f 20 5b 70 61 72 61 6d 65  bound to [parame
33490 74 65 72 20 7c 20 68 6f 73 74 20 70 61 72 61 6d  ter | host param
334a0 65 74 65 72 5d 20 69 6e 20 74 68 65 20 0a 2a 2a  eter] in the .**
334b0 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 6d 69   WHERE clause mi
334c0 67 68 74 20 69 6e 66 6c 75 65 6e 63 65 20 74 68  ght influence th
334d0 65 20 63 68 6f 69 63 65 20 6f 66 20 71 75 65 72  e choice of quer
334e0 79 20 70 6c 61 6e 20 66 6f 72 20 61 20 73 74 61  y plan for a sta
334f0 74 65 6d 65 6e 74 2c 0a 2a 2a 20 74 68 65 6e 20  tement,.** then 
33500 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 77 69  the statement wi
33510 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61  ll be automatica
33520 6c 6c 79 20 72 65 63 6f 6d 70 69 6c 65 64 2c 20  lly recompiled, 
33530 61 73 20 69 66 20 74 68 65 72 65 20 68 61 64 20  as if there had 
33540 62 65 65 6e 20 0a 2a 2a 20 61 20 73 63 68 65 6d  been .** a schem
33550 61 20 63 68 61 6e 67 65 2c 20 6f 6e 20 74 68 65  a change, on the
33560 20 66 69 72 73 74 20 20 5b 73 71 6c 69 74 65 33   first  [sqlite3
33570 5f 73 74 65 70 28 29 5d 20 63 61 6c 6c 20 66 6f  _step()] call fo
33580 6c 6c 6f 77 69 6e 67 20 61 6e 79 20 63 68 61 6e  llowing any chan
33590 67 65 0a 2a 2a 20 74 6f 20 74 68 65 20 5b 73 71  ge.** to the [sq
335a0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 20  lite3_bind_text 
335b0 7c 20 62 69 6e 64 69 6e 67 73 5d 20 6f 66 20 74  | bindings] of t
335c0 68 61 74 20 5b 70 61 72 61 6d 65 74 65 72 5d 2e  hat [parameter].
335d0 20 0a 2a 2a 20 5e 54 68 65 20 73 70 65 63 69 66   .** ^The specif
335e0 69 63 20 76 61 6c 75 65 20 6f 66 20 57 48 45 52  ic value of WHER
335f0 45 2d 63 6c 61 75 73 65 20 5b 70 61 72 61 6d 65  E-clause [parame
33600 74 65 72 5d 20 6d 69 67 68 74 20 69 6e 66 6c 75  ter] might influ
33610 65 6e 63 65 20 74 68 65 20 0a 2a 2a 20 63 68 6f  ence the .** cho
33620 69 63 65 20 6f 66 20 71 75 65 72 79 20 70 6c 61  ice of query pla
33630 6e 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74  n if the paramet
33640 65 72 20 69 73 20 74 68 65 20 6c 65 66 74 2d 68  er is the left-h
33650 61 6e 64 20 73 69 64 65 20 6f 66 20 61 20 5b 4c  and side of a [L
33660 49 4b 45 5d 0a 2a 2a 20 6f 72 20 5b 47 4c 4f 42  IKE].** or [GLOB
33670 5d 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 69 66  ] operator or if
33680 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69   the parameter i
33690 73 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 61 6e  s compared to an
336a0 20 69 6e 64 65 78 65 64 20 63 6f 6c 75 6d 6e 0a   indexed column.
336b0 2a 2a 20 61 6e 64 20 74 68 65 20 5b 53 51 4c 49  ** and the [SQLI
336c0 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d  TE_ENABLE_STAT3]
336d0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
336e0 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e  tion is enabled.
336f0 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20  .** </li>.**.** 
33700 3c 70 3e 5e 73 71 6c 69 74 65 33 5f 70 72 65 70  <p>^sqlite3_prep
33710 61 72 65 5f 76 33 28 29 20 64 69 66 66 65 72 73  are_v3() differs
33720 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70 72   from sqlite3_pr
33730 65 70 61 72 65 5f 76 32 28 29 20 6f 6e 6c 79 20  epare_v2() only 
33740 69 6e 20 68 61 76 69 6e 67 0a 2a 2a 20 74 68 65  in having.** the
33750 20 65 78 74 72 61 20 70 72 65 70 46 6c 61 67 73   extra prepFlags
33760 20 70 61 72 61 6d 65 74 65 72 2c 20 77 68 69 63   parameter, whic
33770 68 20 69 73 20 61 20 62 69 74 20 61 72 72 61 79  h is a bit array
33780 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 7a   consisting of z
33790 65 72 6f 20 6f 72 0a 2a 2a 20 6d 6f 72 65 20 6f  ero or.** more o
337a0 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 50 52  f the [SQLITE_PR
337b0 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54  EPARE_PERSISTENT
337c0 7c 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f  |SQLITE_PREPARE_
337d0 2a 5d 20 66 6c 61 67 73 2e 20 20 5e 54 68 65 0a  *] flags.  ^The.
337e0 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  ** sqlite3_prepa
337f0 72 65 5f 76 32 28 29 20 69 6e 74 65 72 66 61 63  re_v2() interfac
33800 65 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79 20  e works exactly 
33810 74 68 65 20 73 61 6d 65 20 61 73 0a 2a 2a 20 73  the same as.** s
33820 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
33830 33 28 29 20 77 69 74 68 20 61 20 7a 65 72 6f 20  3() with a zero 
33840 70 72 65 70 46 6c 61 67 73 20 70 61 72 61 6d 65  prepFlags parame
33850 74 65 72 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2f  ter..** </ol>.*/
33860 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
33870 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
33880 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
33890 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
338a0 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
338b0 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
338c0 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
338d0 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
338e0 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20  -8 encoded */.  
338f0 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20  int nByte,      
33900 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d          /* Maxim
33910 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71  um length of zSq
33920 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20  l in bytes. */. 
33930 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a   sqlite3_stmt **
33940 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a  ppStmt,  /* OUT:
33950 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c   Statement handl
33960 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  e */.  const cha
33970 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f  r **pzTail     /
33980 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74  * OUT: Pointer t
33990 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e  o unused portion
339a0 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53   of zSql */.);.S
339b0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
339c0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
339d0 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
339e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
339f0 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a  atabase handle *
33a00 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
33a10 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53  zSql,       /* S
33a20 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54  QL statement, UT
33a30 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  F-8 encoded */. 
33a40 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20   int nByte,     
33a50 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
33a60 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53  mum length of zS
33a70 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
33a80 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
33a90 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
33aa0 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
33ab0 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
33ac0 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  ar **pzTail     
33ad0 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
33ae0 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
33af0 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
33b00 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
33b10 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
33b20 33 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  3(.  sqlite3 *db
33b30 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
33b40 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  Database handle 
33b50 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
33b60 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20  *zSql,       /* 
33b70 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55  SQL statement, U
33b80 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a  TF-8 encoded */.
33b90 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20    int nByte,    
33ba0 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78            /* Max
33bb0 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a  imum length of z
33bc0 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f  Sql in bytes. */
33bd0 0a 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20  .  unsigned int 
33be0 70 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65  prepFlags, /* Ze
33bf0 72 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54  ro or more SQLIT
33c00 45 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67 73  E_PREPARE_ flags
33c10 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74   */.  sqlite3_st
33c20 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a  mt **ppStmt,  /*
33c30 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20   OUT: Statement 
33c40 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
33c50 74 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20  t char **pzTail 
33c60 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e      /* OUT: Poin
33c70 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f  ter to unused po
33c80 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f  rtion of zSql */
33c90 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .);.SQLITE_API i
33ca0 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
33cb0 72 65 31 36 28 0a 20 20 73 71 6c 69 74 65 33 20  re16(.  sqlite3 
33cc0 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
33cd0 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
33ce0 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  le */.  const vo
33cf0 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  id *zSql,       
33d00 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
33d10 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  , UTF-16 encoded
33d20 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c   */.  int nByte,
33d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
33d40 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   Maximum length 
33d50 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
33d60 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73  . */.  sqlite3_s
33d70 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f  tmt **ppStmt,  /
33d80 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74  * OUT: Statement
33d90 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
33da0 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c  st void **pzTail
33db0 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69       /* OUT: Poi
33dc0 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70  nter to unused p
33dd0 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a  ortion of zSql *
33de0 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  /.);.SQLITE_API 
33df0 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70  int sqlite3_prep
33e00 61 72 65 31 36 5f 76 32 28 0a 20 20 73 71 6c 69  are16_v2(.  sqli
33e10 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
33e20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
33e30 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
33e40 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20  t void *zSql,   
33e50 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
33e60 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63  ment, UTF-16 enc
33e70 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
33e80 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  yte,            
33e90 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e    /* Maximum len
33ea0 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62  gth of zSql in b
33eb0 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74  ytes. */.  sqlit
33ec0 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74  e3_stmt **ppStmt
33ed0 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65  ,  /* OUT: State
33ee0 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  ment handle */. 
33ef0 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a   const void **pz
33f00 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a  Tail     /* OUT:
33f10 20 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73   Pointer to unus
33f20 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53  ed portion of zS
33f30 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f  ql */.);.SQLITE_
33f40 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
33f50 70 72 65 70 61 72 65 31 36 5f 76 33 28 0a 20 20  prepare16_v3(.  
33f60 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
33f70 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62          /* Datab
33f80 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ase handle */.  
33f90 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c  const void *zSql
33fa0 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73  ,       /* SQL s
33fb0 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36  tatement, UTF-16
33fc0 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
33fd0 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20  t nByte,        
33fe0 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d        /* Maximum
33ff0 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20   length of zSql 
34000 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 75  in bytes. */.  u
34010 6e 73 69 67 6e 65 64 20 69 6e 74 20 70 72 65 70  nsigned int prep
34020 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f  Flags, /* Zero o
34030 72 20 6d 6f 72 65 20 53 51 4c 49 54 45 5f 50 52  r more SQLITE_PR
34040 45 50 41 52 45 5f 20 66 6c 61 67 73 20 2a 2f 0a  EPARE_ flags */.
34050 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a    sqlite3_stmt *
34060 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54  *ppStmt,  /* OUT
34070 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e 64  : Statement hand
34080 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  le */.  const vo
34090 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20  id **pzTail     
340a0 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20  /* OUT: Pointer 
340b0 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69 6f  to unused portio
340c0 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a  n of zSql */.);.
340d0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
340e0 20 52 65 74 72 69 65 76 69 6e 67 20 53 74 61 74   Retrieving Stat
340f0 65 6d 65 6e 74 20 53 51 4c 0a 2a 2a 20 4d 45 54  ement SQL.** MET
34100 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d  HOD: sqlite3_stm
34110 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  t.**.** ^The sql
34120 69 74 65 33 5f 73 71 6c 28 50 29 20 69 6e 74 65  ite3_sql(P) inte
34130 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 61 20  rface returns a 
34140 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 70  pointer to a cop
34150 79 20 6f 66 20 74 68 65 20 55 54 46 2d 38 0a 2a  y of the UTF-8.*
34160 2a 20 53 51 4c 20 74 65 78 74 20 75 73 65 64 20  * SQL text used 
34170 74 6f 20 63 72 65 61 74 65 20 5b 70 72 65 70 61  to create [prepa
34180 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 50  red statement] P
34190 20 69 66 20 50 20 77 61 73 0a 2a 2a 20 63 72 65   if P was.** cre
341a0 61 74 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33  ated by [sqlite3
341b0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 20  _prepare_v2()], 
341c0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
341d0 5f 76 33 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  _v3()],.** [sqli
341e0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32  te3_prepare16_v2
341f0 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69 74 65 33  ()], or [sqlite3
34200 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d  _prepare16_v3()]
34210 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  ..** ^The sqlite
34220 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 50  3_expanded_sql(P
34230 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
34240 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  rns a pointer to
34250 20 61 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69   a UTF-8.** stri
34260 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
34270 65 20 53 51 4c 20 74 65 78 74 20 6f 66 20 70 72  e SQL text of pr
34280 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
34290 20 50 20 77 69 74 68 0a 2a 2a 20 5b 62 6f 75 6e   P with.** [boun
342a0 64 20 70 61 72 61 6d 65 74 65 72 73 5d 20 65 78  d parameters] ex
342b0 70 61 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 28  panded..**.** ^(
342c0 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20  For example, if 
342d0 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  a prepared state
342e0 6d 65 6e 74 20 69 73 20 63 72 65 61 74 65 64 20  ment is created 
342f0 75 73 69 6e 67 20 74 68 65 20 53 51 4c 0a 2a 2a  using the SQL.**
34300 20 74 65 78 74 20 22 53 45 4c 45 43 54 20 24 61   text "SELECT $a
34310 62 63 2c 3a 78 79 7a 22 20 61 6e 64 20 69 66 20  bc,:xyz" and if 
34320 70 61 72 61 6d 65 74 65 72 20 24 61 62 63 20 69  parameter $abc i
34330 73 20 62 6f 75 6e 64 20 74 6f 20 69 6e 74 65 67  s bound to integ
34340 65 72 20 32 33 34 35 0a 2a 2a 20 61 6e 64 20 70  er 2345.** and p
34350 61 72 61 6d 65 74 65 72 20 3a 78 79 7a 20 69 73  arameter :xyz is
34360 20 75 6e 62 6f 75 6e 64 2c 20 74 68 65 6e 20 73   unbound, then s
34370 71 6c 69 74 65 33 5f 73 71 6c 28 29 20 77 69 6c  qlite3_sql() wil
34380 6c 20 72 65 74 75 72 6e 0a 2a 2a 20 74 68 65 20  l return.** the 
34390 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 2c  original string,
343a0 20 22 53 45 4c 45 43 54 20 24 61 62 63 2c 3a 78   "SELECT $abc,:x
343b0 79 7a 22 20 62 75 74 20 73 71 6c 69 74 65 33 5f  yz" but sqlite3_
343c0 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 29 0a 2a  expanded_sql().*
343d0 2a 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 22 53  * will return "S
343e0 45 4c 45 43 54 20 32 33 34 35 2c 4e 55 4c 4c 22  ELECT 2345,NULL"
343f0 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  .)^.**.** ^The s
34400 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
34410 73 71 6c 28 29 20 69 6e 74 65 72 66 61 63 65 20  sql() interface 
34420 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20  returns NULL if 
34430 69 6e 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d  insufficient mem
34440 6f 72 79 0a 2a 2a 20 69 73 20 61 76 61 69 6c 61  ory.** is availa
34450 62 6c 65 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  ble to hold the 
34460 72 65 73 75 6c 74 2c 20 6f 72 20 69 66 20 74 68  result, or if th
34470 65 20 72 65 73 75 6c 74 20 77 6f 75 6c 64 20 65  e result would e
34480 78 63 65 65 64 20 74 68 65 0a 2a 2a 20 74 68 65  xceed the.** the
34490 20 6d 61 78 69 6d 75 6d 20 73 74 72 69 6e 67 20   maximum string 
344a0 6c 65 6e 67 74 68 20 64 65 74 65 72 6d 69 6e 65  length determine
344b0 64 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45  d by the [SQLITE
344c0 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2e 0a  _LIMIT_LENGTH]..
344d0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  **.** ^The [SQLI
344e0 54 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49  TE_TRACE_SIZE_LI
344f0 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  MIT] compile-tim
34500 65 20 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20  e option limits 
34510 74 68 65 20 73 69 7a 65 20 6f 66 0a 2a 2a 20 62  the size of.** b
34520 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 20 65  ound parameter e
34530 78 70 61 6e 73 69 6f 6e 73 2e 20 20 5e 54 68 65  xpansions.  ^The
34540 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52   [SQLITE_OMIT_TR
34550 41 43 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  ACE] compile-tim
34560 65 0a 2a 2a 20 6f 70 74 69 6f 6e 20 63 61 75 73  e.** option caus
34570 65 73 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e  es sqlite3_expan
34580 64 65 64 5f 73 71 6c 28 29 20 74 6f 20 61 6c 77  ded_sql() to alw
34590 61 79 73 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e  ays return NULL.
345a0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 74 72 69  .**.** ^The stri
345b0 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  ng returned by s
345c0 71 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 69 73  qlite3_sql(P) is
345d0 20 6d 61 6e 61 67 65 64 20 62 79 20 53 51 4c 69   managed by SQLi
345e0 74 65 20 61 6e 64 20 69 73 0a 2a 2a 20 61 75 74  te and is.** aut
345f0 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 65 65 64  omatically freed
34600 20 77 68 65 6e 20 74 68 65 20 70 72 65 70 61 72   when the prepar
34610 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ed statement is 
34620 66 69 6e 61 6c 69 7a 65 64 2e 0a 2a 2a 20 5e 54  finalized..** ^T
34630 68 65 20 73 74 72 69 6e 67 20 72 65 74 75 72 6e  he string return
34640 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 65 78  ed by sqlite3_ex
34650 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 2c 20 6f  panded_sql(P), o
34660 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64  n the other hand
34670 2c 0a 2a 2a 20 69 73 20 6f 62 74 61 69 6e 65 64  ,.** is obtained
34680 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d   from [sqlite3_m
34690 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 6d 75 73  alloc()] and mus
346a0 74 20 62 65 20 66 72 65 65 20 62 79 20 74 68 65  t be free by the
346b0 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20   application.** 
346c0 62 79 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f  by passing it to
346d0 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29   [sqlite3_free()
346e0 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  ]..*/.SQLITE_API
346f0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
34700 69 74 65 33 5f 73 71 6c 28 73 71 6c 69 74 65 33  ite3_sql(sqlite3
34710 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 53  _stmt *pStmt);.S
34720 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a  QLITE_API char *
34730 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64  sqlite3_expanded
34740 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d  _sql(sqlite3_stm
34750 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a  t *pStmt);../*.*
34760 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65  * CAPI3REF: Dete
34770 72 6d 69 6e 65 20 49 66 20 41 6e 20 53 51 4c 20  rmine If An SQL 
34780 53 74 61 74 65 6d 65 6e 74 20 57 72 69 74 65 73  Statement Writes
34790 20 54 68 65 20 44 61 74 61 62 61 73 65 0a 2a 2a   The Database.**
347a0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
347b0 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  _stmt.**.** ^The
347c0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
347d0 61 64 6f 6e 6c 79 28 58 29 20 69 6e 74 65 72 66  adonly(X) interf
347e0 61 63 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ace returns true
347f0 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 0a 2a   (non-zero) if.*
34800 2a 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68  * and only if th
34810 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
34820 65 6d 65 6e 74 5d 20 58 20 6d 61 6b 65 73 20 6e  ement] X makes n
34830 6f 20 64 69 72 65 63 74 20 63 68 61 6e 67 65 73  o direct changes
34840 20 74 6f 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65   to.** the conte
34850 6e 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  nt of the databa
34860 73 65 20 66 69 6c 65 2e 0a 2a 2a 0a 2a 2a 20 4e  se file..**.** N
34870 6f 74 65 20 74 68 61 74 20 5b 61 70 70 6c 69 63  ote that [applic
34880 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51  ation-defined SQ
34890 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 6f 72 0a  L functions] or.
348a0 2a 2a 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  ** [virtual tabl
348b0 65 73 5d 20 6d 69 67 68 74 20 63 68 61 6e 67 65  es] might change
348c0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e   the database in
348d0 64 69 72 65 63 74 6c 79 20 61 73 20 61 20 73 69  directly as a si
348e0 64 65 20 65 66 66 65 63 74 2e 20 20 0a 2a 2a 20  de effect.  .** 
348f0 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  ^(For example, i
34900 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
34910 20 64 65 66 69 6e 65 73 20 61 20 66 75 6e 63 74   defines a funct
34920 69 6f 6e 20 22 65 76 61 6c 28 29 22 20 74 68 61  ion "eval()" tha
34930 74 20 0a 2a 2a 20 63 61 6c 6c 73 20 5b 73 71 6c  t .** calls [sql
34940 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 74 68  ite3_exec()], th
34950 65 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  en the following
34960 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77   SQL statement w
34970 6f 75 6c 64 0a 2a 2a 20 63 68 61 6e 67 65 20 74  ould.** change t
34980 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
34990 20 74 68 72 6f 75 67 68 20 73 69 64 65 2d 65 66   through side-ef
349a0 66 65 63 74 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c  fects:.**.** <bl
349b0 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a  ockquote><pre>.*
349c0 2a 20 20 20 20 53 45 4c 45 43 54 20 65 76 61 6c  *    SELECT eval
349d0 28 27 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31  ('DELETE FROM t1
349e0 27 29 20 46 52 4f 4d 20 74 32 3b 0a 2a 2a 20 3c  ') FROM t2;.** <
349f0 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
34a00 65 3e 0a 2a 2a 0a 2a 2a 20 42 75 74 20 62 65 63  e>.**.** But bec
34a10 61 75 73 65 20 74 68 65 20 5b 53 45 4c 45 43 54  ause the [SELECT
34a20 5d 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73  ] statement does
34a30 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20   not change the 
34a40 64 61 74 61 62 61 73 65 20 66 69 6c 65 0a 2a 2a  database file.**
34a50 20 64 69 72 65 63 74 6c 79 2c 20 73 71 6c 69 74   directly, sqlit
34a60 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
34a70 28 29 20 77 6f 75 6c 64 20 73 74 69 6c 6c 20 72  () would still r
34a80 65 74 75 72 6e 20 74 72 75 65 2e 29 5e 0a 2a 2a  eturn true.)^.**
34a90 0a 2a 2a 20 5e 54 72 61 6e 73 61 63 74 69 6f 6e  .** ^Transaction
34aa0 20 63 6f 6e 74 72 6f 6c 20 73 74 61 74 65 6d 65   control stateme
34ab0 6e 74 73 20 73 75 63 68 20 61 73 20 5b 42 45 47  nts such as [BEG
34ac0 49 4e 5d 2c 20 5b 43 4f 4d 4d 49 54 5d 2c 20 5b  IN], [COMMIT], [
34ad0 52 4f 4c 4c 42 41 43 4b 5d 2c 0a 2a 2a 20 5b 53  ROLLBACK],.** [S
34ae0 41 56 45 50 4f 49 4e 54 5d 2c 20 61 6e 64 20 5b  AVEPOINT], and [
34af0 52 45 4c 45 41 53 45 5d 20 63 61 75 73 65 20 73  RELEASE] cause s
34b00 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
34b10 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75 72 6e  only() to return
34b20 20 74 72 75 65 2c 0a 2a 2a 20 73 69 6e 63 65 20   true,.** since 
34b30 74 68 65 20 73 74 61 74 65 6d 65 6e 74 73 20 74  the statements t
34b40 68 65 6d 73 65 6c 76 65 73 20 64 6f 20 6e 6f 74  hemselves do not
34b50 20 61 63 74 75 61 6c 6c 79 20 6d 6f 64 69 66 79   actually modify
34b60 20 74 68 65 20 64 61 74 61 62 61 73 65 20 62 75   the database bu
34b70 74 0a 2a 2a 20 72 61 74 68 65 72 20 74 68 65 79  t.** rather they
34b80 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 74 69 6d   control the tim
34b90 69 6e 67 20 6f 66 20 77 68 65 6e 20 6f 74 68 65  ing of when othe
34ba0 72 20 73 74 61 74 65 6d 65 6e 74 73 20 6d 6f 64  r statements mod
34bb0 69 66 79 20 74 68 65 20 0a 2a 2a 20 64 61 74 61  ify the .** data
34bc0 62 61 73 65 2e 20 20 5e 54 68 65 20 5b 41 54 54  base.  ^The [ATT
34bd0 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48  ACH] and [DETACH
34be0 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 61 6c 73  ] statements als
34bf0 6f 20 63 61 75 73 65 0a 2a 2a 20 73 71 6c 69 74  o cause.** sqlit
34c00 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
34c10 28 29 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75  () to return tru
34c20 65 20 73 69 6e 63 65 2c 20 77 68 69 6c 65 20 74  e since, while t
34c30 68 6f 73 65 20 73 74 61 74 65 6d 65 6e 74 73 0a  hose statements.
34c40 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 63 6f  ** change the co
34c50 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 66 20 61  nfiguration of a
34c60 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
34c70 74 69 6f 6e 2c 20 74 68 65 79 20 64 6f 20 6e 6f  tion, they do no
34c80 74 20 6d 61 6b 65 20 0a 2a 2a 20 63 68 61 6e 67  t make .** chang
34c90 65 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 6e  es to the conten
34ca0 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  t of the databas
34cb0 65 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e  e files on disk.
34cc0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
34cd0 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29  _stmt_readonly()
34ce0 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
34cf0 6e 73 20 74 72 75 65 20 66 6f 72 20 5b 42 45 47  ns true for [BEG
34d00 49 4e 5d 20 73 69 6e 63 65 0a 2a 2a 20 5b 42 45  IN] since.** [BE
34d10 47 49 4e 5d 20 6d 65 72 65 6c 79 20 73 65 74 73  GIN] merely sets
34d20 20 69 6e 74 65 72 6e 61 6c 20 66 6c 61 67 73 2c   internal flags,
34d30 20 62 75 74 20 74 68 65 20 5b 42 45 47 49 4e 7c   but the [BEGIN|
34d40 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 5d  BEGIN IMMEDIATE]
34d50 20 61 6e 64 0a 2a 2a 20 5b 42 45 47 49 4e 7c 42   and.** [BEGIN|B
34d60 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45 5d 20  EGIN EXCLUSIVE] 
34d70 63 6f 6d 6d 61 6e 64 73 20 64 6f 20 74 6f 75 63  commands do touc
34d80 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  h the database a
34d90 6e 64 20 73 6f 0a 2a 2a 20 73 71 6c 69 74 65 33  nd so.** sqlite3
34da0 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29  _stmt_readonly()
34db0 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20 66   returns false f
34dc0 6f 72 20 74 68 6f 73 65 20 63 6f 6d 6d 61 6e 64  or those command
34dd0 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  s..*/.SQLITE_API
34de0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d   int sqlite3_stm
34df0 74 5f 72 65 61 64 6f 6e 6c 79 28 73 71 6c 69 74  t_readonly(sqlit
34e00 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
34e10 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
34e20 3a 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41  : Determine If A
34e30 20 50 72 65 70 61 72 65 64 20 53 74 61 74 65 6d   Prepared Statem
34e40 65 6e 74 20 48 61 73 20 42 65 65 6e 20 52 65 73  ent Has Been Res
34e50 65 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  et.** METHOD: sq
34e60 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a  lite3_stmt.**.**
34e70 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74   ^The sqlite3_st
34e80 6d 74 5f 62 75 73 79 28 53 29 20 69 6e 74 65 72  mt_busy(S) inter
34e90 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 72 75  face returns tru
34ea0 65 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 20  e (non-zero) if 
34eb0 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64  the.** [prepared
34ec0 20 73 74 61 74 65 6d 65 6e 74 5d 20 53 20 68 61   statement] S ha
34ed0 73 20 62 65 65 6e 20 73 74 65 70 70 65 64 20 61  s been stepped a
34ee0 74 20 6c 65 61 73 74 20 6f 6e 63 65 20 75 73 69  t least once usi
34ef0 6e 67 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ng .** [sqlite3_
34f00 73 74 65 70 28 53 29 5d 20 62 75 74 20 68 61 73  step(S)] but has
34f10 20 6e 65 69 74 68 65 72 20 72 75 6e 20 74 6f 20   neither run to 
34f20 63 6f 6d 70 6c 65 74 69 6f 6e 20 28 72 65 74 75  completion (retu
34f30 72 6e 65 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  rned.** [SQLITE_
34f40 44 4f 4e 45 5d 20 66 72 6f 6d 20 5b 73 71 6c 69  DONE] from [sqli
34f50 74 65 33 5f 73 74 65 70 28 53 29 5d 29 20 6e 6f  te3_step(S)]) no
34f60 72 0a 2a 2a 20 62 65 65 6e 20 72 65 73 65 74 20  r.** been reset 
34f70 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72  using [sqlite3_r
34f80 65 73 65 74 28 53 29 5d 2e 20 20 5e 54 68 65 20  eset(S)].  ^The 
34f90 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75 73  sqlite3_stmt_bus
34fa0 79 28 53 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63  y(S).** interfac
34fb0 65 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20  e returns false 
34fc0 69 66 20 53 20 69 73 20 61 20 4e 55 4c 4c 20 70  if S is a NULL p
34fd0 6f 69 6e 74 65 72 2e 20 20 49 66 20 53 20 69 73  ointer.  If S is
34fe0 20 6e 6f 74 20 61 20 0a 2a 2a 20 4e 55 4c 4c 20   not a .** NULL 
34ff0 70 6f 69 6e 74 65 72 20 61 6e 64 20 69 73 20 6e  pointer and is n
35000 6f 74 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ot a pointer to 
35010 61 20 76 61 6c 69 64 20 5b 70 72 65 70 61 72 65  a valid [prepare
35020 64 20 73 74 61 74 65 6d 65 6e 74 5d 0a 2a 2a 20  d statement].** 
35030 6f 62 6a 65 63 74 2c 20 74 68 65 6e 20 74 68 65  object, then the
35040 20 62 65 68 61 76 69 6f 72 20 69 73 20 75 6e 64   behavior is und
35050 65 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61  efined and proba
35060 62 6c 79 20 75 6e 64 65 73 69 72 61 62 6c 65 2e  bly undesirable.
35070 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e 74 65  .**.** This inte
35080 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73 65  rface can be use
35090 64 20 69 6e 20 63 6f 6d 62 69 6e 61 74 69 6f 6e  d in combination
350a0 20 5b 73 71 6c 69 74 65 33 5f 6e 65 78 74 5f 73   [sqlite3_next_s
350b0 74 6d 74 28 29 5d 0a 2a 2a 20 74 6f 20 6c 6f 63  tmt()].** to loc
350c0 61 74 65 20 61 6c 6c 20 70 72 65 70 61 72 65 64  ate all prepared
350d0 20 73 74 61 74 65 6d 65 6e 74 73 20 61 73 73 6f   statements asso
350e0 63 69 61 74 65 64 20 77 69 74 68 20 61 20 64 61  ciated with a da
350f0 74 61 62 61 73 65 20 0a 2a 2a 20 63 6f 6e 6e 65  tabase .** conne
35100 63 74 69 6f 6e 20 74 68 61 74 20 61 72 65 20 69  ction that are i
35110 6e 20 6e 65 65 64 20 6f 66 20 62 65 69 6e 67 20  n need of being 
35120 72 65 73 65 74 2e 20 20 54 68 69 73 20 63 61 6e  reset.  This can
35130 20 62 65 20 75 73 65 64 2c 0a 2a 2a 20 66 6f 72   be used,.** for
35140 20 65 78 61 6d 70 6c 65 2c 20 69 6e 20 64 69 61   example, in dia
35150 67 6e 6f 73 74 69 63 20 72 6f 75 74 69 6e 65 73  gnostic routines
35160 20 74 6f 20 73 65 61 72 63 68 20 66 6f 72 20 70   to search for p
35170 72 65 70 61 72 65 64 20 0a 2a 2a 20 73 74 61 74  repared .** stat
35180 65 6d 65 6e 74 73 20 74 68 61 74 20 61 72 65 20  ements that are 
35190 68 6f 6c 64 69 6e 67 20 61 20 74 72 61 6e 73 61  holding a transa
351a0 63 74 69 6f 6e 20 6f 70 65 6e 2e 0a 2a 2f 0a 53  ction open..*/.S
351b0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
351c0 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28  lite3_stmt_busy(
351d0 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 29 3b 0a  sqlite3_stmt*);.
351e0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
351f0 20 44 79 6e 61 6d 69 63 61 6c 6c 79 20 54 79 70   Dynamically Typ
35200 65 64 20 56 61 6c 75 65 20 4f 62 6a 65 63 74 0a  ed Value Object.
35210 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72  ** KEYWORDS: {pr
35220 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
35230 76 61 6c 75 65 7d 20 7b 75 6e 70 72 6f 74 65 63  value} {unprotec
35240 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  ted sqlite3_valu
35250 65 7d 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20  e}.**.** SQLite 
35260 75 73 65 73 20 74 68 65 20 73 71 6c 69 74 65 33  uses the sqlite3
35270 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 74 6f  _value object to
35280 20 72 65 70 72 65 73 65 6e 74 20 61 6c 6c 20 76   represent all v
35290 61 6c 75 65 73 0a 2a 2a 20 74 68 61 74 20 63 61  alues.** that ca
352a0 6e 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 61  n be stored in a
352b0 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 2e   database table.
352c0 20 53 51 4c 69 74 65 20 75 73 65 73 20 64 79 6e   SQLite uses dyn
352d0 61 6d 69 63 20 74 79 70 69 6e 67 0a 2a 2a 20 66  amic typing.** f
352e0 6f 72 20 74 68 65 20 76 61 6c 75 65 73 20 69 74  or the values it
352f0 20 73 74 6f 72 65 73 2e 20 20 5e 56 61 6c 75 65   stores.  ^Value
35300 73 20 73 74 6f 72 65 64 20 69 6e 20 73 71 6c 69  s stored in sqli
35310 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
35320 73 0a 2a 2a 20 63 61 6e 20 62 65 20 69 6e 74 65  s.** can be inte
35330 67 65 72 73 2c 20 66 6c 6f 61 74 69 6e 67 20 70  gers, floating p
35340 6f 69 6e 74 20 76 61 6c 75 65 73 2c 20 73 74 72  oint values, str
35350 69 6e 67 73 2c 20 42 4c 4f 42 73 2c 20 6f 72 20  ings, BLOBs, or 
35360 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 73  NULL..**.** An s
35370 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
35380 65 63 74 20 6d 61 79 20 62 65 20 65 69 74 68 65  ect may be eithe
35390 72 20 22 70 72 6f 74 65 63 74 65 64 22 20 6f 72  r "protected" or
353a0 20 22 75 6e 70 72 6f 74 65 63 74 65 64 22 2e 0a   "unprotected"..
353b0 2a 2a 20 53 6f 6d 65 20 69 6e 74 65 72 66 61 63  ** Some interfac
353c0 65 73 20 72 65 71 75 69 72 65 20 61 20 70 72 6f  es require a pro
353d0 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
353e0 61 6c 75 65 2e 20 20 4f 74 68 65 72 20 69 6e 74  alue.  Other int
353f0 65 72 66 61 63 65 73 0a 2a 2a 20 77 69 6c 6c 20  erfaces.** will 
35400 61 63 63 65 70 74 20 65 69 74 68 65 72 20 61 20  accept either a 
35410 70 72 6f 74 65 63 74 65 64 20 6f 72 20 61 6e 20  protected or an 
35420 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  unprotected sqli
35430 74 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 20 45 76  te3_value..** Ev
35440 65 72 79 20 69 6e 74 65 72 66 61 63 65 20 74 68  ery interface th
35450 61 74 20 61 63 63 65 70 74 73 20 73 71 6c 69 74  at accepts sqlit
35460 65 33 5f 76 61 6c 75 65 20 61 72 67 75 6d 65 6e  e3_value argumen
35470 74 73 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20  ts specifies.** 
35480 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 69  whether or not i
35490 74 20 72 65 71 75 69 72 65 73 20 61 20 70 72 6f  t requires a pro
354a0 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
354b0 61 6c 75 65 2e 20 20 54 68 65 0a 2a 2a 20 5b 73  alue.  The.** [s
354c0 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 75 70  qlite3_value_dup
354d0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 63 61  ()] interface ca
354e0 6e 20 62 65 20 75 73 65 64 20 74 6f 20 63 6f 6e  n be used to con
354f0 73 74 72 75 63 74 20 61 20 6e 65 77 20 0a 2a 2a  struct a new .**
35500 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74   protected sqlit
35510 65 33 5f 76 61 6c 75 65 20 66 72 6f 6d 20 61 6e  e3_value from an
35520 20 75 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c   unprotected sql
35530 69 74 65 33 5f 76 61 6c 75 65 2e 0a 2a 2a 0a 2a  ite3_value..**.*
35540 2a 20 54 68 65 20 74 65 72 6d 73 20 22 70 72 6f  * The terms "pro
35550 74 65 63 74 65 64 22 20 61 6e 64 20 22 75 6e 70  tected" and "unp
35560 72 6f 74 65 63 74 65 64 22 20 72 65 66 65 72 20  rotected" refer 
35570 74 6f 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  to whether or no
35580 74 0a 2a 2a 20 61 20 6d 75 74 65 78 20 69 73 20  t.** a mutex is 
35590 68 65 6c 64 2e 20 20 41 6e 20 69 6e 74 65 72 6e  held.  An intern
355a0 61 6c 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64  al mutex is held
355b0 20 66 6f 72 20 61 20 70 72 6f 74 65 63 74 65 64   for a protected
355c0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  .** sqlite3_valu
355d0 65 20 6f 62 6a 65 63 74 20 62 75 74 20 6e 6f 20  e object but no 
355e0 6d 75 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f  mutex is held fo
355f0 72 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65 64  r an unprotected
35600 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  .** sqlite3_valu
35610 65 20 6f 62 6a 65 63 74 2e 20 20 49 66 20 53 51  e object.  If SQ
35620 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
35630 20 74 6f 20 62 65 20 73 69 6e 67 6c 65 2d 74 68   to be single-th
35640 72 65 61 64 65 64 0a 2a 2a 20 28 77 69 74 68 20  readed.** (with 
35650 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
35660 46 45 3d 30 5d 20 61 6e 64 20 77 69 74 68 20 5b  FE=0] and with [
35670 73 71 6c 69 74 65 33 5f 74 68 72 65 61 64 73 61  sqlite3_threadsa
35680 66 65 28 29 5d 20 72 65 74 75 72 6e 69 6e 67 20  fe()] returning 
35690 30 29 0a 2a 2a 20 6f 72 20 69 66 20 53 51 4c 69  0).** or if SQLi
356a0 74 65 20 69 73 20 72 75 6e 20 69 6e 20 6f 6e 65  te is run in one
356b0 20 6f 66 20 72 65 64 75 63 65 64 20 6d 75 74 65   of reduced mute
356c0 78 20 6d 6f 64 65 73 20 0a 2a 2a 20 5b 53 51 4c  x modes .** [SQL
356d0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
356e0 45 54 48 52 45 41 44 5d 20 6f 72 20 5b 53 51 4c  ETHREAD] or [SQL
356f0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
35700 54 48 52 45 41 44 5d 0a 2a 2a 20 74 68 65 6e 20  THREAD].** then 
35710 74 68 65 72 65 20 69 73 20 6e 6f 20 64 69 73 74  there is no dist
35720 69 6e 63 74 69 6f 6e 20 62 65 74 77 65 65 6e 20  inction between 
35730 70 72 6f 74 65 63 74 65 64 20 61 6e 64 20 75 6e  protected and un
35740 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c  protected.** sql
35750 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63  ite3_value objec
35760 74 73 20 61 6e 64 20 74 68 65 79 20 63 61 6e 20  ts and they can 
35770 62 65 20 75 73 65 64 20 69 6e 74 65 72 63 68 61  be used intercha
35780 6e 67 65 61 62 6c 79 2e 20 20 48 6f 77 65 76 65  ngeably.  Howeve
35790 72 2c 0a 2a 2a 20 66 6f 72 20 6d 61 78 69 6d 75  r,.** for maximu
357a0 6d 20 63 6f 64 65 20 70 6f 72 74 61 62 69 6c 69  m code portabili
357b0 74 79 20 69 74 20 69 73 20 72 65 63 6f 6d 6d 65  ty it is recomme
357c0 6e 64 65 64 20 74 68 61 74 20 61 70 70 6c 69 63  nded that applic
357d0 61 74 69 6f 6e 73 0a 2a 2a 20 73 74 69 6c 6c 20  ations.** still 
357e0 6d 61 6b 65 20 74 68 65 20 64 69 73 74 69 6e 63  make the distinc
357f0 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f  tion between pro
35800 74 65 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f  tected and unpro
35810 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65  tected.** sqlite
35820 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20  3_value objects 
35830 65 76 65 6e 20 77 68 65 6e 20 6e 6f 74 20 73 74  even when not st
35840 72 69 63 74 6c 79 20 72 65 71 75 69 72 65 64 2e  rictly required.
35850 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
35860 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
35870 73 20 74 68 61 74 20 61 72 65 20 70 61 73 73 65  s that are passe
35880 64 20 61 73 20 70 61 72 61 6d 65 74 65 72 73 20  d as parameters 
35890 69 6e 74 6f 20 74 68 65 0a 2a 2a 20 69 6d 70 6c  into the.** impl
358a0 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 5b 61  ementation of [a
358b0 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e  pplication-defin
358c0 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73  ed SQL functions
358d0 5d 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 2e  ] are protected.
358e0 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
358f0 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 72 65  _value object re
35900 74 75 72 6e 65 64 20 62 79 0a 2a 2a 20 5b 73 71  turned by.** [sq
35910 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 76 61 6c  lite3_column_val
35920 75 65 28 29 5d 20 69 73 20 75 6e 70 72 6f 74 65  ue()] is unprote
35930 63 74 65 64 2e 0a 2a 2a 20 55 6e 70 72 6f 74 65  cted..** Unprote
35940 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c  cted sqlite3_val
35950 75 65 20 6f 62 6a 65 63 74 73 20 6d 61 79 20 6f  ue objects may o
35960 6e 6c 79 20 62 65 20 75 73 65 64 20 61 73 20 61  nly be used as a
35970 72 67 75 6d 65 6e 74 73 0a 2a 2a 20 74 6f 20 5b  rguments.** to [
35980 73 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 76  sqlite3_result_v
35990 61 6c 75 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65  alue()], [sqlite
359a0 33 5f 62 69 6e 64 5f 76 61 6c 75 65 28 29 5d 2c  3_bind_value()],
359b0 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
359c0 5f 76 61 6c 75 65 5f 64 75 70 28 29 5d 2e 0a 2a  _value_dup()]..*
359d0 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76  * The [sqlite3_v
359e0 61 6c 75 65 5f 62 6c 6f 62 20 7c 20 73 71 6c 69  alue_blob | sqli
359f0 74 65 33 5f 76 61 6c 75 65 5f 74 79 70 65 28 29  te3_value_type()
35a00 5d 20 66 61 6d 69 6c 79 20 6f 66 0a 2a 2a 20 69  ] family of.** i
35a10 6e 74 65 72 66 61 63 65 73 20 72 65 71 75 69 72  nterfaces requir
35a20 65 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69  e protected sqli
35a30 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74  te3_value object
35a40 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  s..*/.typedef st
35a50 72 75 63 74 20 73 71 6c 69 74 65 33 5f 76 61 6c  ruct sqlite3_val
35a60 75 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ue sqlite3_value
35a70 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
35a80 46 3a 20 53 51 4c 20 46 75 6e 63 74 69 6f 6e 20  F: SQL Function 
35a90 43 6f 6e 74 65 78 74 20 4f 62 6a 65 63 74 0a 2a  Context Object.*
35aa0 2a 0a 2a 2a 20 54 68 65 20 63 6f 6e 74 65 78 74  *.** The context
35ab0 20 69 6e 20 77 68 69 63 68 20 61 6e 20 53 51 4c   in which an SQL
35ac0 20 66 75 6e 63 74 69 6f 6e 20 65 78 65 63 75 74   function execut
35ad0 65 73 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20  es is stored in 
35ae0 61 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6f  an.** sqlite3_co
35af0 6e 74 65 78 74 20 6f 62 6a 65 63 74 2e 20 20 5e  ntext object.  ^
35b00 41 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  A pointer to an 
35b10 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
35b20 6f 62 6a 65 63 74 0a 2a 2a 20 69 73 20 61 6c 77  object.** is alw
35b30 61 79 73 20 66 69 72 73 74 20 70 61 72 61 6d 65  ays first parame
35b40 74 65 72 20 74 6f 20 5b 61 70 70 6c 69 63 61 74  ter to [applicat
35b50 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c 20  ion-defined SQL 
35b60 66 75 6e 63 74 69 6f 6e 73 5d 2e 0a 2a 2a 20 54  functions]..** T
35b70 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  he application-d
35b80 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74  efined SQL funct
35b90 69 6f 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ion implementati
35ba0 6f 6e 20 77 69 6c 6c 20 70 61 73 73 20 74 68 69  on will pass thi
35bb0 73 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 68 72  s.** pointer thr
35bc0 6f 75 67 68 20 69 6e 74 6f 20 63 61 6c 6c 73 20  ough into calls 
35bd0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 75  to [sqlite3_resu
35be0 6c 74 5f 69 6e 74 20 7c 20 73 71 6c 69 74 65 33  lt_int | sqlite3
35bf0 5f 72 65 73 75 6c 74 28 29 5d 2c 0a 2a 2a 20 5b  _result()],.** [
35c00 73 71 6c 69 74 65 33 5f 61 67 67 72 65 67 61 74  sqlite3_aggregat
35c10 65 5f 63 6f 6e 74 65 78 74 28 29 5d 2c 20 5b 73  e_context()], [s
35c20 71 6c 69 74 65 33 5f 75 73 65 72 5f 64 61 74 61  qlite3_user_data
35c30 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
35c40 5f 63 6f 6e 74 65 78 74 5f 64 62 5f 68 61 6e 64  _context_db_hand
35c50 6c 65 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f  le()], [sqlite3_
35c60 67 65 74 5f 61 75 78 64 61 74 61 28 29 5d 2c 0a  get_auxdata()],.
35c70 2a 2a 20 61 6e 64 2f 6f 72 20 5b 73 71 6c 69 74  ** and/or [sqlit
35c80 65 33 5f 73 65 74 5f 61 75 78 64 61 74 61 28 29  e3_set_auxdata()
35c90 5d 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  ]..*/.typedef st
35ca0 72 75 63 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e  ruct sqlite3_con
35cb0 74 65 78 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e  text sqlite3_con
35cc0 74 65 78 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  text;../*.** CAP
35cd0 49 33 52 45 46 3a 20 42 69 6e 64 69 6e 67 20 56  I3REF: Binding V
35ce0 61 6c 75 65 73 20 54 6f 20 50 72 65 70 61 72 65  alues To Prepare
35cf0 64 20 53 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  d Statements.** 
35d00 4b 45 59 57 4f 52 44 53 3a 20 7b 68 6f 73 74 20  KEYWORDS: {host 
35d10 70 61 72 61 6d 65 74 65 72 7d 20 7b 68 6f 73 74  parameter} {host
35d20 20 70 61 72 61 6d 65 74 65 72 73 7d 20 7b 68 6f   parameters} {ho
35d30 73 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d  st parameter nam
35d40 65 7d 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  e}.** KEYWORDS: 
35d50 7b 53 51 4c 20 70 61 72 61 6d 65 74 65 72 7d 20  {SQL parameter} 
35d60 7b 53 51 4c 20 70 61 72 61 6d 65 74 65 72 73 7d  {SQL parameters}
35d70 20 7b 70 61 72 61 6d 65 74 65 72 20 62 69 6e 64   {parameter bind
35d80 69 6e 67 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  ing}.** METHOD: 
35d90 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a  sqlite3_stmt.**.
35da0 2a 2a 20 5e 28 49 6e 20 74 68 65 20 53 51 4c 20  ** ^(In the SQL 
35db0 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20 69  statement text i
35dc0 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  nput to [sqlite3
35dd0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61  _prepare_v2()] a
35de0 6e 64 20 69 74 73 20 76 61 72 69 61 6e 74 73 2c  nd its variants,
35df0 0a 2a 2a 20 6c 69 74 65 72 61 6c 73 20 6d 61 79  .** literals may
35e00 20 62 65 20 72 65 70 6c 61 63 65 64 20 62 79 20   be replaced by 
35e10 61 20 5b 70 61 72 61 6d 65 74 65 72 5d 20 74 68  a [parameter] th
35e20 61 74 20 6d 61 74 63 68 65 73 20 6f 6e 65 20 6f  at matches one o
35e30 66 20 66 6f 6c 6c 6f 77 69 6e 67 0a 2a 2a 20 74  f following.** t
35e40 65 6d 70 6c 61 74 65 73 3a 0a 2a 2a 0a 2a 2a 20  emplates:.**.** 
35e50 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 3f 0a  <ul>.** <li>  ?.
35e60 2a 2a 20 3c 6c 69 3e 20 20 3f 4e 4e 4e 0a 2a 2a  ** <li>  ?NNN.**
35e70 20 3c 6c 69 3e 20 20 3a 56 56 56 0a 2a 2a 20 3c   <li>  :VVV.** <
35e80 6c 69 3e 20 20 40 56 56 56 0a 2a 2a 20 3c 6c 69  li>  @VVV.** <li
35e90 3e 20 20 24 56 56 56 0a 2a 2a 20 3c 2f 75 6c 3e  >  $VVV.** </ul>
35ea0 0a 2a 2a 0a 2a 2a 20 49 6e 20 74 68 65 20 74 65  .**.** In the te
35eb0 6d 70 6c 61 74 65 73 20 61 62 6f 76 65 2c 20 4e  mplates above, N
35ec0 4e 4e 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e  NN represents an
35ed0 20 69 6e 74 65 67 65 72 20 6c 69 74 65 72 61 6c   integer literal
35ee0 2c 0a 2a 2a 20 61 6e 64 20 56 56 56 20 72 65 70  ,.** and VVV rep
35ef0 72 65 73 65 6e 74 73 20 61 6e 20 61 6c 70 68 61  resents an alpha
35f00 6e 75 6d 65 72 69 63 20 69 64 65 6e 74 69 66 69  numeric identifi
35f10 65 72 2e 29 5e 20 20 5e 54 68 65 20 76 61 6c 75  er.)^  ^The valu
35f20 65 73 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 70  es of these.** p
35f30 61 72 61 6d 65 74 65 72 73 20 28 61 6c 73 6f 20  arameters (also 
35f40 63 61 6c 6c 65 64 20 22 68 6f 73 74 20 70 61 72  called "host par
35f50 61 6d 65 74 65 72 20 6e 61 6d 65 73 22 20 6f 72  ameter names" or
35f60 20 22 53 51 4c 20 70 61 72 61 6d 65 74 65 72 73   "SQL parameters
35f70 22 29 0a 2a 2a 20 63 61 6e 20 62 65 20 73 65 74  ").** can be set
35f80 20 75 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74   using the sqlit
35f90 65 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74  e3_bind_*() rout
35fa0 69 6e 65 73 20 64 65 66 69 6e 65 64 20 68 65 72  ines defined her
35fb0 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69  e..**.** ^The fi
35fc0 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  rst argument to 
35fd0 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  the sqlite3_bind
35fe0 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73 20 69 73  _*() routines is
35ff0 20 61 6c 77 61 79 73 0a 2a 2a 20 61 20 70 6f 69   always.** a poi
36000 6e 74 65 72 20 74 6f 20 74 68 65 20 5b 73 71 6c  nter to the [sql
36010 69 74 65 33 5f 73 74 6d 74 5d 20 6f 62 6a 65 63  ite3_stmt] objec
36020 74 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 0a  t returned from.
36030 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
36040 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 69 74 73  are_v2()] or its
36050 20 76 61 72 69 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a   variants..**.**
36060 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67   ^The second arg
36070 75 6d 65 6e 74 20 69 73 20 74 68 65 20 69 6e 64  ument is the ind
36080 65 78 20 6f 66 20 74 68 65 20 53 51 4c 20 70 61  ex of the SQL pa
36090 72 61 6d 65 74 65 72 20 74 6f 20 62 65 20 73 65  rameter to be se
360a0 74 2e 0a 2a 2a 20 5e 54 68 65 20 6c 65 66 74 6d  t..** ^The leftm
360b0 6f 73 74 20 53 51 4c 20 70 61 72 61 6d 65 74 65  ost SQL paramete
360c0 72 20 68 61 73 20 61 6e 20 69 6e 64 65 78 20 6f  r has an index o
360d0 66 20 31 2e 20 20 5e 57 68 65 6e 20 74 68 65 20  f 1.  ^When the 
360e0 73 61 6d 65 20 6e 61 6d 65 64 0a 2a 2a 20 53 51  same named.** SQ
360f0 4c 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 75  L parameter is u
36100 73 65 64 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e  sed more than on
36110 63 65 2c 20 73 65 63 6f 6e 64 20 61 6e 64 20 73  ce, second and s
36120 75 62 73 65 71 75 65 6e 74 0a 2a 2a 20 6f 63 63  ubsequent.** occ
36130 75 72 72 65 6e 63 65 73 20 68 61 76 65 20 74 68  urrences have th
36140 65 20 73 61 6d 65 20 69 6e 64 65 78 20 61 73 20  e same index as 
36150 74 68 65 20 66 69 72 73 74 20 6f 63 63 75 72 72  the first occurr
36160 65 6e 63 65 2e 0a 2a 2a 20 5e 54 68 65 20 69 6e  ence..** ^The in
36170 64 65 78 20 66 6f 72 20 6e 61 6d 65 64 20 70 61  dex for named pa
36180 72 61 6d 65 74 65 72 73 20 63 61 6e 20 62 65 20  rameters can be 
36190 6c 6f 6f 6b 65 64 20 75 70 20 75 73 69 6e 67 20  looked up using 
361a0 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  the.** [sqlite3_
361b0 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
361c0 6e 64 65 78 28 29 5d 20 41 50 49 20 69 66 20 64  ndex()] API if d
361d0 65 73 69 72 65 64 2e 20 20 5e 54 68 65 20 69 6e  esired.  ^The in
361e0 64 65 78 0a 2a 2a 20 66 6f 72 20 22 3f 4e 4e 4e  dex.** for "?NNN
361f0 22 20 70 61 72 61 6d 65 74 65 72 73 20 69 73 20  " parameters is 
36200 74 68 65 20 76 61 6c 75 65 20 6f 66 20 4e 4e 4e  the value of NNN
36210 2e 0a 2a 2a 20 5e 54 68 65 20 4e 4e 4e 20 76 61  ..** ^The NNN va
36220 6c 75 65 20 6d 75 73 74 20 62 65 20 62 65 74 77  lue must be betw
36230 65 65 6e 20 31 20 61 6e 64 20 74 68 65 20 5b 73  een 1 and the [s
36240 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 0a  qlite3_limit()].
36250 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 5b 53 51  ** parameter [SQ
36260 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41  LITE_LIMIT_VARIA
36270 42 4c 45 5f 4e 55 4d 42 45 52 5d 20 28 64 65 66  BLE_NUMBER] (def
36280 61 75 6c 74 20 76 61 6c 75 65 3a 20 39 39 39 29  ault value: 999)
36290 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 74 68 69  ..**.** ^The thi
362a0 72 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  rd argument is t
362b0 68 65 20 76 61 6c 75 65 20 74 6f 20 62 69 6e 64  he value to bind
362c0 20 74 6f 20 74 68 65 20 70 61 72 61 6d 65 74 65   to the paramete
362d0 72 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 74 68  r..** ^If the th
362e0 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ird parameter to
362f0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
36300 78 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  xt() or sqlite3_
36310 62 69 6e 64 5f 74 65 78 74 31 36 28 29 0a 2a 2a  bind_text16().**
36320 20 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   or sqlite3_bind
36330 5f 62 6c 6f 62 28 29 20 69 73 20 61 20 4e 55 4c  _blob() is a NUL
36340 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 74  L pointer then t
36350 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  he fourth parame
36360 74 65 72 0a 2a 2a 20 69 73 20 69 67 6e 6f 72 65  ter.** is ignore
36370 64 20 61 6e 64 20 74 68 65 20 65 6e 64 20 72 65  d and the end re
36380 73 75 6c 74 20 69 73 20 74 68 65 20 73 61 6d 65  sult is the same
36390 20 61 73 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   as sqlite3_bind
363a0 5f 6e 75 6c 6c 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e  _null()..**.** ^
363b0 28 49 6e 20 74 68 6f 73 65 20 72 6f 75 74 69 6e  (In those routin
363c0 65 73 20 74 68 61 74 20 68 61 76 65 20 61 20 66  es that have a f
363d0 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 2c 20  ourth argument, 
363e0 69 74 73 20 76 61 6c 75 65 20 69 73 20 74 68 65  its value is the
363f0 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  .** number of by
36400 74 65 73 20 69 6e 20 74 68 65 20 70 61 72 61 6d  tes in the param
36410 65 74 65 72 2e 20 20 54 6f 20 62 65 20 63 6c 65  eter.  To be cle
36420 61 72 3a 20 74 68 65 20 76 61 6c 75 65 20 69 73  ar: the value is
36430 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
36440 66 20 3c 75 3e 62 79 74 65 73 3c 2f 75 3e 20 69  f <u>bytes</u> i
36450 6e 20 74 68 65 20 76 61 6c 75 65 2c 20 6e 6f 74  n the value, not
36460 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
36470 68 61 72 61 63 74 65 72 73 2e 29 5e 0a 2a 2a 20  haracters.)^.** 
36480 5e 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70  ^If the fourth p
36490 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
364a0 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 29 20  te3_bind_text() 
364b0 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  or sqlite3_bind_
364c0 74 65 78 74 31 36 28 29 0a 2a 2a 20 69 73 20 6e  text16().** is n
364d0 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 74 68  egative, then th
364e0 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20  e length of the 
364f0 73 74 72 69 6e 67 20 69 73 0a 2a 2a 20 74 68 65  string is.** the
36500 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
36510 20 75 70 20 74 6f 20 74 68 65 20 66 69 72 73 74   up to the first
36520 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72   zero terminator
36530 2e 0a 2a 2a 20 49 66 20 74 68 65 20 66 6f 75 72  ..** If the four
36540 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
36550 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
36560 62 28 29 20 69 73 20 6e 65 67 61 74 69 76 65 2c  b() is negative,
36570 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 62 65 68   then.** the beh
36580 61 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e  avior is undefin
36590 65 64 2e 0a 2a 2a 20 49 66 20 61 20 6e 6f 6e 2d  ed..** If a non-
365a0 6e 65 67 61 74 69 76 65 20 66 6f 75 72 74 68 20  negative fourth 
365b0 70 61 72 61 6d 65 74 65 72 20 69 73 20 70 72 6f  parameter is pro
365c0 76 69 64 65 64 20 74 6f 20 73 71 6c 69 74 65 33  vided to sqlite3
365d0 5f 62 69 6e 64 5f 74 65 78 74 28 29 0a 2a 2a 20  _bind_text().** 
365e0 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  or sqlite3_bind_
365f0 74 65 78 74 31 36 28 29 20 6f 72 20 73 71 6c 69  text16() or sqli
36600 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 36 34 28  te3_bind_text64(
36610 29 20 74 68 65 6e 0a 2a 2a 20 74 68 61 74 20 70  ) then.** that p
36620 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65  arameter must be
36630 20 74 68 65 20 62 79 74 65 20 6f 66 66 73 65 74   the byte offset
36640 0a 2a 2a 20 77 68 65 72 65 20 74 68 65 20 4e 55  .** where the NU
36650 4c 20 74 65 72 6d 69 6e 61 74 6f 72 20 77 6f 75  L terminator wou
36660 6c 64 20 6f 63 63 75 72 20 61 73 73 75 6d 69 6e  ld occur assumin
36670 67 20 74 68 65 20 73 74 72 69 6e 67 20 77 65 72  g the string wer
36680 65 20 4e 55 4c 0a 2a 2a 20 74 65 72 6d 69 6e 61  e NUL.** termina
36690 74 65 64 2e 20 20 49 66 20 61 6e 79 20 4e 55 4c  ted.  If any NUL
366a0 20 63 68 61 72 61 63 74 65 72 73 20 6f 63 63 75   characters occu
366b0 72 20 61 74 20 62 79 74 65 20 6f 66 66 73 65 74  r at byte offset
366c0 73 20 6c 65 73 73 20 74 68 61 6e 20 0a 2a 2a 20  s less than .** 
366d0 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65  the value of the
366e0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
366f0 72 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c  r then the resul
36700 74 69 6e 67 20 73 74 72 69 6e 67 20 76 61 6c 75  ting string valu
36710 65 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 74 61 69  e will.** contai
36720 6e 20 65 6d 62 65 64 64 65 64 20 4e 55 4c 73 2e  n embedded NULs.
36730 20 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20    The result of 
36740 65 78 70 72 65 73 73 69 6f 6e 73 20 69 6e 76 6f  expressions invo
36750 6c 76 69 6e 67 20 73 74 72 69 6e 67 73 0a 2a 2a  lving strings.**
36760 20 77 69 74 68 20 65 6d 62 65 64 64 65 64 20 4e   with embedded N
36770 55 4c 73 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ULs is undefined
36780 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 66  ..**.** ^The fif
36790 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  th argument to t
367a0 68 65 20 42 4c 4f 42 20 61 6e 64 20 73 74 72 69  he BLOB and stri
367b0 6e 67 20 62 69 6e 64 69 6e 67 20 69 6e 74 65 72  ng binding inter
367c0 66 61 63 65 73 0a 2a 2a 20 69 73 20 61 20 64 65  faces.** is a de
367d0 73 74 72 75 63 74 6f 72 20 75 73 65 64 20 74 6f  structor used to
367e0 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20   dispose of the 
367f0 42 4c 4f 42 20 6f 72 0a 2a 2a 20 73 74 72 69 6e  BLOB or.** strin
36800 67 20 61 66 74 65 72 20 53 51 4c 69 74 65 20 68  g after SQLite h
36810 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
36820 20 69 74 2e 20 20 5e 54 68 65 20 64 65 73 74 72   it.  ^The destr
36830 75 63 74 6f 72 20 69 73 20 63 61 6c 6c 65 64 0a  uctor is called.
36840 2a 2a 20 74 6f 20 64 69 73 70 6f 73 65 20 6f 66  ** to dispose of
36850 20 74 68 65 20 42 4c 4f 42 20 6f 72 20 73 74 72   the BLOB or str
36860 69 6e 67 20 65 76 65 6e 20 69 66 20 74 68 65 20  ing even if the 
36870 63 61 6c 6c 20 74 6f 20 62 69 6e 64 20 41 50 49  call to bind API
36880 20 66 61 69 6c 73 2e 0a 2a 2a 20 5e 49 66 20 74   fails..** ^If t
36890 68 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e  he fifth argumen
368a0 74 20 69 73 0a 2a 2a 20 74 68 65 20 73 70 65 63  t is.** the spec
368b0 69 61 6c 20 76 61 6c 75 65 20 5b 53 51 4c 49 54  ial value [SQLIT
368c0 45 5f 53 54 41 54 49 43 5d 2c 20 74 68 65 6e 20  E_STATIC], then 
368d0 53 51 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74  SQLite assumes t
368e0 68 61 74 20 74 68 65 0a 2a 2a 20 69 6e 66 6f 72  hat the.** infor
368f0 6d 61 74 69 6f 6e 20 69 73 20 69 6e 20 73 74 61  mation is in sta
36900 74 69 63 2c 20 75 6e 6d 61 6e 61 67 65 64 20 73  tic, unmanaged s
36910 70 61 63 65 20 61 6e 64 20 64 6f 65 73 20 6e 6f  pace and does no
36920 74 20 6e 65 65 64 20 74 6f 20 62 65 20 66 72 65  t need to be fre
36930 65 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66  ed..** ^If the f
36940 69 66 74 68 20 61 72 67 75 6d 65 6e 74 20 68 61  ifth argument ha
36950 73 20 74 68 65 20 76 61 6c 75 65 20 5b 53 51 4c  s the value [SQL
36960 49 54 45 5f 54 52 41 4e 53 49 45 4e 54 5d 2c 20  ITE_TRANSIENT], 
36970 74 68 65 6e 0a 2a 2a 20 53 51 4c 69 74 65 20 6d  then.** SQLite m
36980 61 6b 65 73 20 69 74 73 20 6f 77 6e 20 70 72 69  akes its own pri
36990 76 61 74 65 20 63 6f 70 79 20 6f 66 20 74 68 65  vate copy of the
369a0 20 64 61 74 61 20 69 6d 6d 65 64 69 61 74 65 6c   data immediatel
369b0 79 2c 20 62 65 66 6f 72 65 0a 2a 2a 20 74 68 65  y, before.** the
369c0 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
369d0 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  ) routine return
369e0 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 69  s..**.** ^The si
369f0 78 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  xth argument to 
36a00 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
36a10 74 36 34 28 29 20 6d 75 73 74 20 62 65 20 6f 6e  t64() must be on
36a20 65 20 6f 66 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  e of.** [SQLITE_
36a30 55 54 46 38 5d 2c 20 5b 53 51 4c 49 54 45 5f 55  UTF8], [SQLITE_U
36a40 54 46 31 36 5d 2c 20 5b 53 51 4c 49 54 45 5f 55  TF16], [SQLITE_U
36a50 54 46 31 36 42 45 5d 2c 20 6f 72 20 5b 53 51 4c  TF16BE], or [SQL
36a60 49 54 45 5f 55 54 46 31 36 4c 45 5d 0a 2a 2a 20  ITE_UTF16LE].** 
36a70 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 65  to specify the e
36a80 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 20 74  ncoding of the t
36a90 65 78 74 20 69 6e 20 74 68 65 20 74 68 69 72 64  ext in the third
36aa0 20 70 61 72 61 6d 65 74 65 72 2e 20 20 49 66 0a   parameter.  If.
36ab0 2a 2a 20 74 68 65 20 73 69 78 74 68 20 61 72 67  ** the sixth arg
36ac0 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33  ument to sqlite3
36ad0 5f 62 69 6e 64 5f 74 65 78 74 36 34 28 29 20 69  _bind_text64() i
36ae0 73 20 6e 6f 74 20 6f 6e 65 20 6f 66 20 74 68 65  s not one of the
36af0 0a 2a 2a 20 61 6c 6c 6f 77 65 64 20 76 61 6c 75  .** allowed valu
36b00 65 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 2c 20  es shown above, 
36b10 6f 72 20 69 66 20 74 68 65 20 74 65 78 74 20 65  or if the text e
36b20 6e 63 6f 64 69 6e 67 20 69 73 20 64 69 66 66 65  ncoding is diffe
36b30 72 65 6e 74 0a 2a 2a 20 66 72 6f 6d 20 74 68 65  rent.** from the
36b40 20 65 6e 63 6f 64 69 6e 67 20 73 70 65 63 69 66   encoding specif
36b50 69 65 64 20 62 79 20 74 68 65 20 73 69 78 74 68  ied by the sixth
36b60 20 70 61 72 61 6d 65 74 65 72 2c 20 74 68 65 6e   parameter, then
36b70 20 74 68 65 20 62 65 68 61 76 69 6f 72 0a 2a 2a   the behavior.**
36b80 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a   is undefined..*
36b90 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
36ba0 33 5f 62 69 6e 64 5f 7a 65 72 6f 62 6c 6f 62 28  3_bind_zeroblob(
36bb0 29 20 72 6f 75 74 69 6e 65 20 62 69 6e 64 73 20  ) routine binds 
36bc0 61 20 42 4c 4f 42 20 6f 66 20 6c 65 6e 67 74 68  a BLOB of length
36bd0 20 4e 20 74 68 61 74 0a 2a 2a 20 69 73 20 66 69   N that.** is fi
36be0 6c 6c 65 64 20 77 69 74 68 20 7a 65 72 6f 65 73  lled with zeroes
36bf0 2e 20 20 5e 41 20 7a 65 72 6f 62 6c 6f 62 20 75  .  ^A zeroblob u
36c00 73 65 73 20 61 20 66 69 78 65 64 20 61 6d 6f 75  ses a fixed amou
36c10 6e 74 20 6f 66 20 6d 65 6d 6f 72 79 0a 2a 2a 20  nt of memory.** 
36c20 28 6a 75 73 74 20 61 6e 20 69 6e 74 65 67 65 72  (just an integer
36c30 20 74 6f 20 68 6f 6c 64 20 69 74 73 20 73 69 7a   to hold its siz
36c40 65 29 20 77 68 69 6c 65 20 69 74 20 69 73 20 62  e) while it is b
36c50 65 69 6e 67 20 70 72 6f 63 65 73 73 65 64 2e 0a  eing processed..
36c60 2a 2a 20 5a 65 72 6f 62 6c 6f 62 73 20 61 72 65  ** Zeroblobs are
36c70 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 73 65 72   intended to ser
36c80 76 65 20 61 73 20 70 6c 61 63 65 68 6f 6c 64 65  ve as placeholde
36c90 72 73 20 66 6f 72 20 42 4c 4f 42 73 20 77 68 6f  rs for BLOBs who
36ca0 73 65 0a 2a 2a 20 63 6f 6e 74 65 6e 74 20 69 73  se.** content is
36cb0 20 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75   later written u
36cc0 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  sing.** [sqlite3
36cd0 5f 62 6c 6f 62 5f 6f 70 65 6e 20 7c 20 69 6e 63  _blob_open | inc
36ce0 72 65 6d 65 6e 74 61 6c 20 42 4c 4f 42 20 49 2f  remental BLOB I/
36cf0 4f 5d 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 20  O] routines..** 
36d00 5e 41 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75  ^A negative valu
36d10 65 20 66 6f 72 20 74 68 65 20 7a 65 72 6f 62 6c  e for the zerobl
36d20 6f 62 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20  ob results in a 
36d30 7a 65 72 6f 2d 6c 65 6e 67 74 68 20 42 4c 4f 42  zero-length BLOB
36d40 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
36d50 69 74 65 33 5f 62 69 6e 64 5f 70 6f 69 6e 74 65  ite3_bind_pointe
36d60 72 28 53 2c 49 2c 50 2c 54 2c 44 29 20 72 6f 75  r(S,I,P,T,D) rou
36d70 74 69 6e 65 20 63 61 75 73 65 73 20 74 68 65 20  tine causes the 
36d80 49 2d 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  I-th parameter i
36d90 6e 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73  n.** [prepared s
36da0 74 61 74 65 6d 65 6e 74 5d 20 53 20 74 6f 20 68  tatement] S to h
36db0 61 76 65 20 61 6e 20 53 51 4c 20 76 61 6c 75 65  ave an SQL value
36dc0 20 6f 66 20 4e 55 4c 4c 2c 20 62 75 74 20 74 6f   of NULL, but to
36dd0 20 61 6c 73 6f 20 62 65 0a 2a 2a 20 61 73 73 6f   also be.** asso
36de0 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20  ciated with the 
36df0 70 6f 69 6e 74 65 72 20 50 20 6f 66 20 74 79 70  pointer P of typ
36e00 65 20 54 2e 20 20 5e 44 20 69 73 20 65 69 74 68  e T.  ^D is eith
36e10 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  er a NULL pointe
36e20 72 20 6f 72 0a 2a 2a 20 61 20 70 6f 69 6e 74 65  r or.** a pointe
36e30 72 20 74 6f 20 61 20 64 65 73 74 72 75 63 74 6f  r to a destructo
36e40 72 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 50  r function for P
36e50 2e 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 69  . ^SQLite will i
36e60 6e 76 6f 6b 65 20 74 68 65 0a 2a 2a 20 64 65 73  nvoke the.** des
36e70 74 72 75 63 74 6f 72 20 44 20 77 69 74 68 20 61  tructor D with a
36e80 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
36e90 20 6f 66 20 50 20 77 68 65 6e 20 69 74 20 69 73   of P when it is
36ea0 20 66 69 6e 69 73 68 65 64 20 75 73 69 6e 67 0a   finished using.
36eb0 2a 2a 20 50 2e 20 20 54 68 65 20 54 20 70 61 72  ** P.  The T par
36ec0 61 6d 65 74 65 72 20 73 68 6f 75 6c 64 20 62 65  ameter should be
36ed0 20 61 20 73 74 61 74 69 63 20 73 74 72 69 6e 67   a static string
36ee0 2c 20 70 72 65 66 65 72 61 62 6c 79 20 61 20 73  , preferably a s
36ef0 74 72 69 6e 67 0a 2a 2a 20 6c 69 74 65 72 61 6c  tring.** literal
36f00 2e 20 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69  . The sqlite3_bi
36f10 6e 64 5f 70 6f 69 6e 74 65 72 28 29 20 72 6f 75  nd_pointer() rou
36f20 74 69 6e 65 20 69 73 20 70 61 72 74 20 6f 66 20  tine is part of 
36f30 74 68 65 0a 2a 2a 20 5b 70 6f 69 6e 74 65 72 20  the.** [pointer 
36f40 70 61 73 73 69 6e 67 20 69 6e 74 65 72 66 61 63  passing interfac
36f50 65 5d 20 61 64 64 65 64 20 66 6f 72 20 53 51 4c  e] added for SQL
36f60 69 74 65 20 33 2e 32 30 2e 30 2e 0a 2a 2a 0a 2a  ite 3.20.0..**.*
36f70 2a 20 5e 49 66 20 61 6e 79 20 6f 66 20 74 68 65  * ^If any of the
36f80 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
36f90 29 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 63  ) routines are c
36fa0 61 6c 6c 65 64 20 77 69 74 68 20 61 20 4e 55 4c  alled with a NUL
36fb0 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 66 6f 72  L pointer.** for
36fc0 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73   the [prepared s
36fd0 74 61 74 65 6d 65 6e 74 5d 20 6f 72 20 77 69 74  tatement] or wit
36fe0 68 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61  h a prepared sta
36ff0 74 65 6d 65 6e 74 20 66 6f 72 20 77 68 69 63 68  tement for which
37000 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  .** [sqlite3_ste
37010 70 28 29 5d 20 68 61 73 20 62 65 65 6e 20 63 61  p()] has been ca
37020 6c 6c 65 64 20 6d 6f 72 65 20 72 65 63 65 6e 74  lled more recent
37030 6c 79 20 74 68 61 6e 20 5b 73 71 6c 69 74 65 33  ly than [sqlite3
37040 5f 72 65 73 65 74 28 29 5d 2c 0a 2a 2a 20 74 68  _reset()],.** th
37050 65 6e 20 74 68 65 20 63 61 6c 6c 20 77 69 6c 6c  en the call will
37060 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
37070 4d 49 53 55 53 45 5d 2e 20 20 49 66 20 61 6e 79  MISUSE].  If any
37080 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 28 29   sqlite3_bind_()
37090 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 69 73 20 70  .** routine is p
370a0 61 73 73 65 64 20 61 20 5b 70 72 65 70 61 72 65  assed a [prepare
370b0 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61  d statement] tha
370c0 74 20 68 61 73 20 62 65 65 6e 20 66 69 6e 61 6c  t has been final
370d0 69 7a 65 64 2c 20 74 68 65 0a 2a 2a 20 72 65 73  ized, the.** res
370e0 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64  ult is undefined
370f0 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 68 61   and probably ha
37100 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 42 69  rmful..**.** ^Bi
37110 6e 64 69 6e 67 73 20 61 72 65 20 6e 6f 74 20 63  ndings are not c
37120 6c 65 61 72 65 64 20 62 79 20 74 68 65 20 5b 73  leared by the [s
37130 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20  qlite3_reset()] 
37140 72 6f 75 74 69 6e 65 2e 0a 2a 2a 20 5e 55 6e 62  routine..** ^Unb
37150 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20  ound parameters 
37160 61 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 20  are interpreted 
37170 61 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e  as NULL..**.** ^
37180 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  The sqlite3_bind
37190 5f 2a 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  _* routines retu
371a0 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f  rn [SQLITE_OK] o
371b0 6e 20 73 75 63 63 65 73 73 20 6f 72 20 61 6e 0a  n success or an.
371c0 2a 2a 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20  ** [error code] 
371d0 69 66 20 61 6e 79 74 68 69 6e 67 20 67 6f 65 73  if anything goes
371e0 20 77 72 6f 6e 67 2e 0a 2a 2a 20 5e 5b 53 51 4c   wrong..** ^[SQL
371f0 49 54 45 5f 54 4f 4f 42 49 47 5d 20 6d 69 67 68  ITE_TOOBIG] migh
37200 74 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 66  t be returned if
37210 20 74 68 65 20 73 69 7a 65 20 6f 66 20 61 20 73   the size of a s
37220 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42 0a 2a 2a  tring or BLOB.**
37230 20 65 78 63 65 65 64 73 20 6c 69 6d 69 74 73 20   exceeds limits 
37240 69 6d 70 6f 73 65 64 20 62 79 20 5b 73 71 6c 69  imposed by [sqli
37250 74 65 33 5f 6c 69 6d 69 74 5d 28 5b 53 51 4c 49  te3_limit]([SQLI
37260 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d  TE_LIMIT_LENGTH]
37270 29 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  ) or.** [SQLITE_
37280 4d 41 58 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a 20  MAX_LENGTH]..** 
37290 5e 5b 53 51 4c 49 54 45 5f 52 41 4e 47 45 5d 20  ^[SQLITE_RANGE] 
372a0 69 73 20 72 65 74 75 72 6e 65 64 20 69 66 20 74  is returned if t
372b0 68 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20  he parameter.** 
372c0 69 6e 64 65 78 20 69 73 20 6f 75 74 20 6f 66 20  index is out of 
372d0 72 61 6e 67 65 2e 20 20 5e 5b 53 51 4c 49 54 45  range.  ^[SQLITE
372e0 5f 4e 4f 4d 45 4d 5d 20 69 73 20 72 65 74 75 72  _NOMEM] is retur
372f0 6e 65 64 20 69 66 20 6d 61 6c 6c 6f 63 28 29 20  ned if malloc() 
37300 66 61 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20 53 65 65  fails..**.** See
37310 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f   also: [sqlite3_
37320 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63  bind_parameter_c
37330 6f 75 6e 74 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c  ount()],.** [sql
37340 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
37350 74 65 72 5f 6e 61 6d 65 28 29 5d 2c 20 61 6e 64  ter_name()], and
37360 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70   [sqlite3_bind_p
37370 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28 29  arameter_index()
37380 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  ]..*/.SQLITE_API
37390 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e   int sqlite3_bin
373a0 64 5f 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73  d_blob(sqlite3_s
373b0 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74  tmt*, int, const
373c0 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 2c 20 76   void*, int n, v
373d0 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a  oid(*)(void*));.
373e0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
373f0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
37400 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  64(sqlite3_stmt*
37410 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 76 6f 69  , int, const voi
37420 64 2a 2c 20 73 71 6c 69 74 65 33 5f 75 69 6e 74  d*, sqlite3_uint
37430 36 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  64,.            
37440 20 20 20 20 20 20 20 20 20 20 20 20 76 6f 69 64              void
37450 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a 53 51 4c  (*)(void*));.SQL
37460 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
37470 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 28  te3_bind_double(
37480 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69  sqlite3_stmt*, i
37490 6e 74 2c 20 64 6f 75 62 6c 65 29 3b 0a 53 51 4c  nt, double);.SQL
374a0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
374b0 74 65 33 5f 62 69 6e 64 5f 69 6e 74 28 73 71 6c  te3_bind_int(sql
374c0 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c  ite3_stmt*, int,
374d0 20 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50   int);.SQLITE_AP
374e0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  I int sqlite3_bi
374f0 6e 64 5f 69 6e 74 36 34 28 73 71 6c 69 74 65 33  nd_int64(sqlite3
37500 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c  _stmt*, int, sql
37510 69 74 65 33 5f 69 6e 74 36 34 29 3b 0a 53 51 4c  ite3_int64);.SQL
37520 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
37530 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 73 71  te3_bind_null(sq
37540 6c 69 74 65 33 5f 73 74 6d 74 2a 2c 20 69 6e 74  lite3_stmt*, int
37550 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
37560 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  t sqlite3_bind_t
37570 65 78 74 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  ext(sqlite3_stmt
37580 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72  *,int,const char
37590 2a 2c 69 6e 74 2c 76 6f 69 64 28 2a 29 28 76 6f  *,int,void(*)(vo
375a0 69 64 2a 29 29 3b 0a 53 51 4c 49 54 45 5f 41 50  id*));.SQLITE_AP
375b0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  I int sqlite3_bi
375c0 6e 64 5f 74 65 78 74 31 36 28 73 71 6c 69 74 65  nd_text16(sqlite
375d0 33 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f  3_stmt*, int, co
375e0 6e 73 74 20 76 6f 69 64 2a 2c 20 69 6e 74 2c 20  nst void*, int, 
375f0 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b  void(*)(void*));
37600 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
37610 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
37620 74 36 34 28 73 71 6c 69 74 65 33 5f 73 74 6d 74  t64(sqlite3_stmt
37630 2a 2c 20 69 6e 74 2c 20 63 6f 6e 73 74 20 63 68  *, int, const ch
37640 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 75 69 6e  ar*, sqlite3_uin
37650 74 36 34 2c 0a 20 20 20 20 20 20 20 20 20 20 20  t64,.           
37660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 6f                vo
37670 69 64 28 2a 29 28 76 6f 69 64 2a 29 2c 20 75 6e  id(*)(void*), un
37680 73 69 67 6e 65 64 20 63 68 61 72 20 65 6e 63 6f  signed char enco
37690 64 69 6e 67 29 3b 0a 53 51 4c 49 54 45 5f 41 50  ding);.SQLITE_AP
376a0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  I int sqlite3_bi
376b0 6e 64 5f 76 61 6c 75 65 28 73 71 6c 69 74 65 33  nd_value(sqlite3
376c0 5f 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 63 6f 6e  _stmt*, int, con
376d0 73 74 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  st sqlite3_value
376e0 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  *);.SQLITE_API i
376f0 6e 74 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  nt sqlite3_bind_
37700 70 6f 69 6e 74 65 72 28 73 71 6c 69 74 65 33 5f  pointer(sqlite3_
37710 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 76 6f 69 64  stmt*, int, void
37720 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c 76  *, const char*,v
37730 6f 69 64 28 2a 29 28 76 6f 69 64 2a 29 29 3b 0a  oid(*)(void*));.
37740 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
37750 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72 6f  qlite3_bind_zero
37760 62 6c 6f 62 28 73 71 6c 69 74 65 33 5f 73 74 6d  blob(sqlite3_stm
37770 74 2a 2c 20 69 6e 74 2c 20 69 6e 74 20 6e 29 3b  t*, int, int n);
37780 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
37790 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72  sqlite3_bind_zer
377a0 6f 62 6c 6f 62 36 34 28 73 71 6c 69 74 65 33 5f  oblob64(sqlite3_
377b0 73 74 6d 74 2a 2c 20 69 6e 74 2c 20 73 71 6c 69  stmt*, int, sqli
377c0 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a 0a 2f 2a  te3_uint64);../*
377d0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4e 75  .** CAPI3REF: Nu
377e0 6d 62 65 72 20 4f 66 20 53 51 4c 20 50 61 72 61  mber Of SQL Para
377f0 6d 65 74 65 72 73 0a 2a 2a 20 4d 45 54 48 4f 44  meters.** METHOD
37800 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
37810 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74 69  *.** ^This routi
37820 6e 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  ne can be used t
37830 6f 20 66 69 6e 64 20 74 68 65 20 6e 75 6d 62 65  o find the numbe
37840 72 20 6f 66 20 5b 53 51 4c 20 70 61 72 61 6d 65  r of [SQL parame
37850 74 65 72 73 5d 0a 2a 2a 20 69 6e 20 61 20 5b 70  ters].** in a [p
37860 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
37870 74 5d 2e 20 20 53 51 4c 20 70 61 72 61 6d 65 74  t].  SQL paramet
37880 65 72 73 20 61 72 65 20 74 6f 6b 65 6e 73 20 6f  ers are tokens o
37890 66 20 74 68 65 0a 2a 2a 20 66 6f 72 6d 20 22 3f  f the.** form "?
378a0 22 2c 20 22 3f 4e 4e 4e 22 2c 20 22 3a 41 41 41  ", "?NNN", ":AAA
378b0 22 2c 20 22 24 41 41 41 22 2c 20 6f 72 20 22 40  ", "$AAA", or "@
378c0 41 41 41 22 20 74 68 61 74 20 73 65 72 76 65 20  AAA" that serve 
378d0 61 73 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65  as.** placeholde
378e0 72 73 20 66 6f 72 20 76 61 6c 75 65 73 20 74 68  rs for values th
378f0 61 74 20 61 72 65 20 5b 73 71 6c 69 74 65 33 5f  at are [sqlite3_
37900 62 69 6e 64 5f 62 6c 6f 62 20 7c 20 62 6f 75 6e  bind_blob | boun
37910 64 5d 0a 2a 2a 20 74 6f 20 74 68 65 20 70 61 72  d].** to the par
37920 61 6d 65 74 65 72 73 20 61 74 20 61 20 6c 61 74  ameters at a lat
37930 65 72 20 74 69 6d 65 2e 0a 2a 2a 0a 2a 2a 20 5e  er time..**.** ^
37940 28 54 68 69 73 20 72 6f 75 74 69 6e 65 20 61 63  (This routine ac
37950 74 75 61 6c 6c 79 20 72 65 74 75 72 6e 73 20 74  tually returns t
37960 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20  he index of the 
37970 6c 61 72 67 65 73 74 20 28 72 69 67 68 74 6d 6f  largest (rightmo
37980 73 74 29 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  st).** parameter
37990 2e 20 46 6f 72 20 61 6c 6c 20 66 6f 72 6d 73 20  . For all forms 
379a0 65 78 63 65 70 74 20 3f 4e 4e 4e 2c 20 74 68 69  except ?NNN, thi
379b0 73 20 77 69 6c 6c 20 63 6f 72 72 65 73 70 6f 6e  s will correspon
379c0 64 20 74 6f 20 74 68 65 0a 2a 2a 20 6e 75 6d 62  d to the.** numb
379d0 65 72 20 6f 66 20 75 6e 69 71 75 65 20 70 61 72  er of unique par
379e0 61 6d 65 74 65 72 73 2e 20 20 49 66 20 70 61 72  ameters.  If par
379f0 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20 3f  ameters of the ?
37a00 4e 4e 4e 20 66 6f 72 6d 20 61 72 65 20 75 73 65  NNN form are use
37a10 64 2c 0a 2a 2a 20 74 68 65 72 65 20 6d 61 79 20  d,.** there may 
37a20 62 65 20 67 61 70 73 20 69 6e 20 74 68 65 20 6c  be gaps in the l
37a30 69 73 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65  ist.)^.**.** See
37a40 20 61 6c 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f   also: [sqlite3_
37a50 62 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65  bind_blob|sqlite
37a60 33 5f 62 69 6e 64 28 29 5d 2c 0a 2a 2a 20 5b 73  3_bind()],.** [s
37a70 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
37a80 6d 65 74 65 72 5f 6e 61 6d 65 28 29 5d 2c 20 61  meter_name()], a
37a90 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  nd.** [sqlite3_b
37aa0 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
37ab0 64 65 78 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54  dex()]..*/.SQLIT
37ac0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
37ad0 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
37ae0 5f 63 6f 75 6e 74 28 73 71 6c 69 74 65 33 5f 73  _count(sqlite3_s
37af0 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  tmt*);../*.** CA
37b00 50 49 33 52 45 46 3a 20 4e 61 6d 65 20 4f 66 20  PI3REF: Name Of 
37b10 41 20 48 6f 73 74 20 50 61 72 61 6d 65 74 65 72  A Host Parameter
37b20 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
37b30 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e  te3_stmt.**.** ^
37b40 54 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  The sqlite3_bind
37b50 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28  _parameter_name(
37b60 50 2c 4e 29 20 69 6e 74 65 72 66 61 63 65 20 72  P,N) interface r
37b70 65 74 75 72 6e 73 0a 2a 2a 20 74 68 65 20 6e 61  eturns.** the na
37b80 6d 65 20 6f 66 20 74 68 65 20 4e 2d 74 68 20 5b  me of the N-th [
37b90 53 51 4c 20 70 61 72 61 6d 65 74 65 72 5d 20 69  SQL parameter] i
37ba0 6e 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20  n the [prepared 
37bb0 73 74 61 74 65 6d 65 6e 74 5d 20 50 2e 0a 2a 2a  statement] P..**
37bc0 20 5e 28 53 51 4c 20 70 61 72 61 6d 65 74 65 72   ^(SQL parameter
37bd0 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 22 3f  s of the form "?
37be0 4e 4e 4e 22 20 6f 72 20 22 3a 41 41 41 22 20 6f  NNN" or ":AAA" o
37bf0 72 20 22 40 41 41 41 22 20 6f 72 20 22 24 41 41  r "@AAA" or "$AA
37c00 41 22 0a 2a 2a 20 68 61 76 65 20 61 20 6e 61 6d  A".** have a nam
37c10 65 20 77 68 69 63 68 20 69 73 20 74 68 65 20 73  e which is the s
37c20 74 72 69 6e 67 20 22 3f 4e 4e 4e 22 20 6f 72 20  tring "?NNN" or 
37c30 22 3a 41 41 41 22 20 6f 72 20 22 40 41 41 41 22  ":AAA" or "@AAA"
37c40 20 6f 72 20 22 24 41 41 41 22 0a 2a 2a 20 72 65   or "$AAA".** re
37c50 73 70 65 63 74 69 76 65 6c 79 2e 0a 2a 2a 20 49  spectively..** I
37c60 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74  n other words, t
37c70 68 65 20 69 6e 69 74 69 61 6c 20 22 3a 22 20 6f  he initial ":" o
37c80 72 20 22 24 22 20 6f 72 20 22 40 22 20 6f 72 20  r "$" or "@" or 
37c90 22 3f 22 0a 2a 2a 20 69 73 20 69 6e 63 6c 75 64  "?".** is includ
37ca0 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68  ed as part of th
37cb0 65 20 6e 61 6d 65 2e 29 5e 0a 2a 2a 20 5e 50 61  e name.)^.** ^Pa
37cc0 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65 20  rameters of the 
37cd0 66 6f 72 6d 20 22 3f 22 20 77 69 74 68 6f 75 74  form "?" without
37ce0 20 61 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 6e 74   a following int
37cf0 65 67 65 72 20 68 61 76 65 20 6e 6f 20 6e 61 6d  eger have no nam
37d00 65 0a 2a 2a 20 61 6e 64 20 61 72 65 20 72 65 66  e.** and are ref
37d10 65 72 72 65 64 20 74 6f 20 61 73 20 22 6e 61 6d  erred to as "nam
37d20 65 6c 65 73 73 22 20 6f 72 20 22 61 6e 6f 6e 79  eless" or "anony
37d30 6d 6f 75 73 20 70 61 72 61 6d 65 74 65 72 73 22  mous parameters"
37d40 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ..**.** ^The fir
37d50 73 74 20 68 6f 73 74 20 70 61 72 61 6d 65 74 65  st host paramete
37d60 72 20 68 61 73 20 61 6e 20 69 6e 64 65 78 20 6f  r has an index o
37d70 66 20 31 2c 20 6e 6f 74 20 30 2e 0a 2a 2a 0a 2a  f 1, not 0..**.*
37d80 2a 20 5e 49 66 20 74 68 65 20 76 61 6c 75 65 20  * ^If the value 
37d90 4e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67  N is out of rang
37da0 65 20 6f 72 20 69 66 20 74 68 65 20 4e 2d 74 68  e or if the N-th
37db0 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a 2a 2a   parameter is.**
37dc0 20 6e 61 6d 65 6c 65 73 73 2c 20 74 68 65 6e 20   nameless, then 
37dd0 4e 55 4c 4c 20 69 73 20 72 65 74 75 72 6e 65 64  NULL is returned
37de0 2e 20 20 5e 54 68 65 20 72 65 74 75 72 6e 65 64  .  ^The returned
37df0 20 73 74 72 69 6e 67 20 69 73 0a 2a 2a 20 61 6c   string is.** al
37e00 77 61 79 73 20 69 6e 20 55 54 46 2d 38 20 65 6e  ways in UTF-8 en
37e10 63 6f 64 69 6e 67 20 65 76 65 6e 20 69 66 20 74  coding even if t
37e20 68 65 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74  he named paramet
37e30 65 72 20 77 61 73 0a 2a 2a 20 6f 72 69 67 69 6e  er was.** origin
37e40 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64 20 61  ally specified a
37e50 73 20 55 54 46 2d 31 36 20 69 6e 20 5b 73 71 6c  s UTF-16 in [sql
37e60 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 28 29  ite3_prepare16()
37e70 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70  ],.** [sqlite3_p
37e80 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d 2c 20  repare16_v2()], 
37e90 6f 72 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  or [sqlite3_prep
37ea0 61 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 0a  are16_v3()]..**.
37eb0 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71  ** See also: [sq
37ec0 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 7c  lite3_bind_blob|
37ed0 73 71 6c 69 74 65 33 5f 62 69 6e 64 28 29 5d 2c  sqlite3_bind()],
37ee0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  .** [sqlite3_bin
37ef0 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e  d_parameter_coun
37f00 74 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73 71  t()], and.** [sq
37f10 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
37f20 65 74 65 72 5f 69 6e 64 65 78 28 29 5d 2e 0a 2a  eter_index()]..*
37f30 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  /.SQLITE_API con
37f40 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
37f50 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
37f60 6e 61 6d 65 28 73 71 6c 69 74 65 33 5f 73 74 6d  name(sqlite3_stm
37f70 74 2a 2c 20 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a  t*, int);../*.**
37f80 20 43 41 50 49 33 52 45 46 3a 20 49 6e 64 65 78   CAPI3REF: Index
37f90 20 4f 66 20 41 20 50 61 72 61 6d 65 74 65 72 20   Of A Parameter 
37fa0 57 69 74 68 20 41 20 47 69 76 65 6e 20 4e 61 6d  With A Given Nam
37fb0 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  e.** METHOD: sql
37fc0 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
37fd0 5e 52 65 74 75 72 6e 20 74 68 65 20 69 6e 64 65  ^Return the inde
37fe0 78 20 6f 66 20 61 6e 20 53 51 4c 20 70 61 72 61  x of an SQL para
37ff0 6d 65 74 65 72 20 67 69 76 65 6e 20 69 74 73 20  meter given its 
38000 6e 61 6d 65 2e 20 20 5e 54 68 65 0a 2a 2a 20 69  name.  ^The.** i
38010 6e 64 65 78 20 76 61 6c 75 65 20 72 65 74 75 72  ndex value retur
38020 6e 65 64 20 69 73 20 73 75 69 74 61 62 6c 65 20  ned is suitable 
38030 66 6f 72 20 75 73 65 20 61 73 20 74 68 65 20 73  for use as the s
38040 65 63 6f 6e 64 0a 2a 2a 20 70 61 72 61 6d 65 74  econd.** paramet
38050 65 72 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 62  er to [sqlite3_b
38060 69 6e 64 5f 62 6c 6f 62 7c 73 71 6c 69 74 65 33  ind_blob|sqlite3
38070 5f 62 69 6e 64 28 29 5d 2e 20 20 5e 41 20 7a 65  _bind()].  ^A ze
38080 72 6f 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65  ro.** is returne
38090 64 20 69 66 20 6e 6f 20 6d 61 74 63 68 69 6e 67  d if no matching
380a0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 66 6f   parameter is fo
380b0 75 6e 64 2e 20 20 5e 54 68 65 20 70 61 72 61 6d  und.  ^The param
380c0 65 74 65 72 0a 2a 2a 20 6e 61 6d 65 20 6d 75 73  eter.** name mus
380d0 74 20 62 65 20 67 69 76 65 6e 20 69 6e 20 55 54  t be given in UT
380e0 46 2d 38 20 65 76 65 6e 20 69 66 20 74 68 65 20  F-8 even if the 
380f0 6f 72 69 67 69 6e 61 6c 20 73 74 61 74 65 6d 65  original stateme
38100 6e 74 0a 2a 2a 20 77 61 73 20 70 72 65 70 61 72  nt.** was prepar
38110 65 64 20 66 72 6f 6d 20 55 54 46 2d 31 36 20 74  ed from UTF-16 t
38120 65 78 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ext using [sqlit
38130 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
38140 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65  )] or.** [sqlite
38150 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
38160 5d 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73  ]..**.** See als
38170 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  o: [sqlite3_bind
38180 5f 62 6c 6f 62 7c 73 71 6c 69 74 65 33 5f 62 69  _blob|sqlite3_bi
38190 6e 64 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  nd()],.** [sqlit
381a0 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
381b0 72 5f 63 6f 75 6e 74 28 29 5d 2c 20 61 6e 64 0a  r_count()], and.
381c0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64  ** [sqlite3_bind
381d0 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 28  _parameter_name(
381e0 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  )]..*/.SQLITE_AP
381f0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 69  I int sqlite3_bi
38200 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64  nd_parameter_ind
38210 65 78 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 2a  ex(sqlite3_stmt*
38220 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
38230 61 6d 65 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ame);../*.** CAP
38240 49 33 52 45 46 3a 20 52 65 73 65 74 20 41 6c 6c  I3REF: Reset All
38250 20 42 69 6e 64 69 6e 67 73 20 4f 6e 20 41 20 50   Bindings On A P
38260 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e  repared Statemen
38270 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  t.** METHOD: sql
38280 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
38290 5e 43 6f 6e 74 72 61 72 79 20 74 6f 20 74 68 65  ^Contrary to the
382a0 20 69 6e 74 75 69 74 69 6f 6e 20 6f 66 20 6d 61   intuition of ma
382b0 6e 79 2c 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  ny, [sqlite3_res
382c0 65 74 28 29 5d 20 64 6f 65 73 20 6e 6f 74 20 72  et()] does not r
382d0 65 73 65 74 0a 2a 2a 20 74 68 65 20 5b 73 71 6c  eset.** the [sql
382e0 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 20 7c  ite3_bind_blob |
382f0 20 62 69 6e 64 69 6e 67 73 5d 20 6f 6e 20 61 20   bindings] on a 
38300 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
38310 65 6e 74 5d 2e 0a 2a 2a 20 5e 55 73 65 20 74 68  ent]..** ^Use th
38320 69 73 20 72 6f 75 74 69 6e 65 20 74 6f 20 72 65  is routine to re
38330 73 65 74 20 61 6c 6c 20 68 6f 73 74 20 70 61 72  set all host par
38340 61 6d 65 74 65 72 73 20 74 6f 20 4e 55 4c 4c 2e  ameters to NULL.
38350 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
38360 6e 74 20 73 71 6c 69 74 65 33 5f 63 6c 65 61 72  nt sqlite3_clear
38370 5f 62 69 6e 64 69 6e 67 73 28 73 71 6c 69 74 65  _bindings(sqlite
38380 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  3_stmt*);../*.**
38390 20 43 41 50 49 33 52 45 46 3a 20 4e 75 6d 62 65   CAPI3REF: Numbe
383a0 72 20 4f 66 20 43 6f 6c 75 6d 6e 73 20 49 6e 20  r Of Columns In 
383b0 41 20 52 65 73 75 6c 74 20 53 65 74 0a 2a 2a 20  A Result Set.** 
383c0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f  METHOD: sqlite3_
383d0 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 52 65 74 75  stmt.**.** ^Retu
383e0 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  rn the number of
383f0 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
38400 72 65 73 75 6c 74 20 73 65 74 20 72 65 74 75 72  result set retur
38410 6e 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b 70  ned by the.** [p
38420 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
38430 74 5d 2e 20 5e 49 66 20 74 68 69 73 20 72 6f 75  t]. ^If this rou
38440 74 69 6e 65 20 72 65 74 75 72 6e 73 20 30 2c 20  tine returns 0, 
38450 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 20 0a  that means the .
38460 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
38470 74 65 6d 65 6e 74 5d 20 72 65 74 75 72 6e 73 20  tement] returns 
38480 6e 6f 20 64 61 74 61 20 28 66 6f 72 20 65 78 61  no data (for exa
38490 6d 70 6c 65 20 61 6e 20 5b 55 50 44 41 54 45 5d  mple an [UPDATE]
384a0 29 2e 0a 2a 2a 20 5e 48 6f 77 65 76 65 72 2c 20  )..** ^However, 
384b0 6a 75 73 74 20 62 65 63 61 75 73 65 20 74 68 69  just because thi
384c0 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
384d0 73 20 61 20 70 6f 73 69 74 69 76 65 20 6e 75 6d  s a positive num
384e0 62 65 72 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20  ber does not.** 
384f0 6d 65 61 6e 20 74 68 61 74 20 6f 6e 65 20 6f 72  mean that one or
38500 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61   more rows of da
38510 74 61 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72  ta will be retur
38520 6e 65 64 2e 20 20 5e 41 20 53 45 4c 45 43 54 20  ned.  ^A SELECT 
38530 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 77 69 6c  statement.** wil
38540 6c 20 61 6c 77 61 79 73 20 68 61 76 65 20 61 20  l always have a 
38550 70 6f 73 69 74 69 76 65 20 73 71 6c 69 74 65 33  positive sqlite3
38560 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 28 29 20  _column_count() 
38570 62 75 74 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  but depending on
38580 20 74 68 65 0a 2a 2a 20 57 48 45 52 45 20 63 6c   the.** WHERE cl
38590 61 75 73 65 20