SQLite Android Bindings
Hex Artifact Content
Not logged in

Artifact 7820de20fdd440b39239da2fe4616f4017c2f184:


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 38 2e 30 2e 20 20  ersion 3.28.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 20 4c 69 6b 65 20 43 54 49 4d 45 4f 50 54 5f  * Like CTIMEOPT_
0960: 56 41 4c 2c 20 62 75 74 20 65 73 70 65 63 69 61  VAL, but especia
0970: 6c 6c 79 20 66 6f 72 20 53 51 4c 49 54 45 5f 44  lly for SQLITE_D
0980: 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45  EFAULT_LOOKASIDE
0990: 2e 20 54 68 69 73 0a 2a 2a 20 6f 70 74 69 6f 6e  . This.** option
09a0: 20 72 65 71 75 69 72 65 73 20 61 20 73 65 70 61   requires a sepa
09b0: 72 61 74 65 20 6d 61 63 72 6f 20 62 65 63 61 75  rate macro becau
09c0: 73 65 20 6c 65 67 61 6c 20 76 61 6c 75 65 73 20  se legal values 
09d0: 63 6f 6e 74 61 69 6e 20 61 20 73 69 6e 67 6c 65  contain a single
09e0: 0a 2a 2a 20 63 6f 6d 6d 61 2e 20 65 2e 67 2e 20  .** comma. e.g. 
09f0: 28 2d 44 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  (-DSQLITE_DEFAUL
0a00: 54 5f 4c 4f 4f 4b 41 53 49 44 45 3d 22 31 30 30  T_LOOKASIDE="100
0a10: 2c 31 30 30 22 29 20 2a 2f 0a 23 64 65 66 69 6e  ,100") */.#defin
0a20: 65 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 32 5f  e CTIMEOPT_VAL2_
0a30: 28 6f 70 74 31 2c 6f 70 74 32 29 20 23 6f 70 74  (opt1,opt2) #opt
0a40: 31 20 22 2c 22 20 23 6f 70 74 32 0a 23 64 65 66  1 "," #opt2.#def
0a50: 69 6e 65 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  ine CTIMEOPT_VAL
0a60: 32 28 6f 70 74 29 20 43 54 49 4d 45 4f 50 54 5f  2(opt) CTIMEOPT_
0a70: 56 41 4c 32 5f 28 6f 70 74 29 0a 0a 2f 2a 0a 2a  VAL2_(opt)../*.*
0a80: 2a 20 41 6e 20 61 72 72 61 79 20 6f 66 20 6e 61  * An array of na
0a90: 6d 65 73 20 6f 66 20 61 6c 6c 20 63 6f 6d 70 69  mes of all compi
0aa0: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73 2e  le-time options.
0ab0: 20 20 54 68 69 73 20 61 72 72 61 79 20 73 68 6f    This array sho
0ac0: 75 6c 64 20 0a 2a 2a 20 62 65 20 73 6f 72 74 65  uld .** be sorte
0ad0: 64 20 41 2d 5a 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  d A-Z..**.** Thi
0ae0: 73 20 61 72 72 61 79 20 6c 6f 6f 6b 73 20 6c 61  s array looks la
0af0: 72 67 65 2c 20 62 75 74 20 69 6e 20 61 20 74 79  rge, but in a ty
0b00: 70 69 63 61 6c 20 69 6e 73 74 61 6c 6c 61 74 69  pical installati
0b10: 6f 6e 20 61 63 74 75 61 6c 6c 79 20 75 73 65 73  on actually uses
0b20: 0a 2a 2a 20 6f 6e 6c 79 20 61 20 68 61 6e 64 66  .** only a handf
0b30: 75 6c 20 6f 66 20 63 6f 6d 70 69 6c 65 2d 74 69  ul of compile-ti
0b40: 6d 65 20 6f 70 74 69 6f 6e 73 2c 20 73 6f 20 6d  me options, so m
0b50: 6f 73 74 20 74 69 6d 65 73 20 74 68 69 73 20 61  ost times this a
0b60: 72 72 61 79 20 69 73 20 75 73 75 61 6c 6c 79 0a  rray is usually.
0b70: 2a 2a 20 72 61 74 68 65 72 20 73 68 6f 72 74 20  ** rather short 
0b80: 61 6e 64 20 75 73 65 73 20 6c 69 74 74 6c 65 20  and uses little 
0b90: 6d 65 6d 6f 72 79 20 73 70 61 63 65 2e 0a 2a 2f  memory space..*/
0ba0: 0a 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68  .static const ch
0bb0: 61 72 20 2a 20 63 6f 6e 73 74 20 73 71 6c 69 74  ar * const sqlit
0bc0: 65 33 61 7a 43 6f 6d 70 69 6c 65 4f 70 74 5b 5d  e3azCompileOpt[]
0bd0: 20 3d 20 7b 0a 0a 2f 2a 20 0a 2a 2a 20 42 45 47   = {../* .** BEG
0be0: 49 4e 20 43 4f 44 45 20 47 45 4e 45 52 41 54 45  IN CODE GENERATE
0bf0: 44 20 42 59 20 74 6f 6f 6c 2f 6d 6b 63 74 69 6d  D BY tool/mkctim
0c00: 65 2e 74 63 6c 20 0a 2a 2f 0a 23 69 66 20 53 51  e.tcl .*/.#if SQ
0c10: 4c 49 54 45 5f 33 32 42 49 54 5f 52 4f 57 49 44  LITE_32BIT_ROWID
0c20: 0a 20 20 22 33 32 42 49 54 5f 52 4f 57 49 44 22  .  "32BIT_ROWID"
0c30: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
0c40: 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e  ITE_4_BYTE_ALIGN
0c50: 45 44 5f 4d 41 4c 4c 4f 43 0a 20 20 22 34 5f 42  ED_MALLOC.  "4_B
0c60: 59 54 45 5f 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c  YTE_ALIGNED_MALL
0c70: 4f 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  OC",.#endif.#if 
0c80: 53 51 4c 49 54 45 5f 36 34 42 49 54 5f 53 54 41  SQLITE_64BIT_STA
0c90: 54 53 0a 20 20 22 36 34 42 49 54 5f 53 54 41 54  TS.  "64BIT_STAT
0ca0: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
0cb0: 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45  QLITE_ALLOW_COVE
0cc0: 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 0a  RING_INDEX_SCAN.
0cd0: 20 20 22 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e    "ALLOW_COVERIN
0ce0: 47 5f 49 4e 44 45 58 5f 53 43 41 4e 22 2c 0a 23  G_INDEX_SCAN",.#
0cf0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
0d00: 5f 41 4c 4c 4f 57 5f 55 52 49 5f 41 55 54 48 4f  _ALLOW_URI_AUTHO
0d10: 52 49 54 59 0a 20 20 22 41 4c 4c 4f 57 5f 55 52  RITY.  "ALLOW_UR
0d20: 49 5f 41 55 54 48 4f 52 49 54 59 22 2c 0a 23 65  I_AUTHORITY",.#e
0d30: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
0d40: 54 45 5f 42 49 54 4d 41 53 4b 5f 54 59 50 45 0a  TE_BITMASK_TYPE.
0d50: 20 20 22 42 49 54 4d 41 53 4b 5f 54 59 50 45 3d    "BITMASK_TYPE=
0d60: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
0d70: 51 4c 49 54 45 5f 42 49 54 4d 41 53 4b 5f 54 59  QLITE_BITMASK_TY
0d80: 50 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  PE),.#endif.#if 
0d90: 53 51 4c 49 54 45 5f 42 55 47 5f 43 4f 4d 50 41  SQLITE_BUG_COMPA
0da0: 54 49 42 4c 45 5f 32 30 31 36 30 38 31 39 0a 20  TIBLE_20160819. 
0db0: 20 22 42 55 47 5f 43 4f 4d 50 41 54 49 42 4c 45   "BUG_COMPATIBLE
0dc0: 5f 32 30 31 36 30 38 31 39 22 2c 0a 23 65 6e 64  _20160819",.#end
0dd0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 43 41  if.#if SQLITE_CA
0de0: 53 45 5f 53 45 4e 53 49 54 49 56 45 5f 4c 49 4b  SE_SENSITIVE_LIK
0df0: 45 0a 20 20 22 43 41 53 45 5f 53 45 4e 53 49 54  E.  "CASE_SENSIT
0e00: 49 56 45 5f 4c 49 4b 45 22 2c 0a 23 65 6e 64 69  IVE_LIKE",.#endi
0e10: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 43 48 45  f.#if SQLITE_CHE
0e20: 43 4b 5f 50 41 47 45 53 0a 20 20 22 43 48 45 43  CK_PAGES.  "CHEC
0e30: 4b 5f 50 41 47 45 53 22 2c 0a 23 65 6e 64 69 66  K_PAGES",.#endif
0e40: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 63  .#if defined(__c
0e50: 6c 61 6e 67 5f 5f 29 20 26 26 20 64 65 66 69 6e  lang__) && defin
0e60: 65 64 28 5f 5f 63 6c 61 6e 67 5f 6d 61 6a 6f 72  ed(__clang_major
0e70: 5f 5f 29 0a 20 20 22 43 4f 4d 50 49 4c 45 52 3d  __).  "COMPILER=
0e80: 63 6c 61 6e 67 2d 22 20 43 54 49 4d 45 4f 50 54  clang-" CTIMEOPT
0e90: 5f 56 41 4c 28 5f 5f 63 6c 61 6e 67 5f 6d 61 6a  _VAL(__clang_maj
0ea0: 6f 72 5f 5f 29 20 22 2e 22 0a 20 20 20 20 20 20  or__) ".".      
0eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 54                CT
0ec0: 49 4d 45 4f 50 54 5f 56 41 4c 28 5f 5f 63 6c 61  IMEOPT_VAL(__cla
0ed0: 6e 67 5f 6d 69 6e 6f 72 5f 5f 29 20 22 2e 22 0a  ng_minor__) ".".
0ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ef0: 20 20 20 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c      CTIMEOPT_VAL
0f00: 28 5f 5f 63 6c 61 6e 67 5f 70 61 74 63 68 6c 65  (__clang_patchle
0f10: 76 65 6c 5f 5f 29 2c 0a 23 65 6c 69 66 20 64 65  vel__),.#elif de
0f20: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a  fined(_MSC_VER).
0f30: 20 20 22 43 4f 4d 50 49 4c 45 52 3d 6d 73 76 63    "COMPILER=msvc
0f40: 2d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  -" CTIMEOPT_VAL(
0f50: 5f 4d 53 43 5f 56 45 52 29 2c 0a 23 65 6c 69 66  _MSC_VER),.#elif
0f60: 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f   defined(__GNUC_
0f70: 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f  _) && defined(__
0f80: 56 45 52 53 49 4f 4e 5f 5f 29 0a 20 20 22 43 4f  VERSION__).  "CO
0f90: 4d 50 49 4c 45 52 3d 67 63 63 2d 22 20 5f 5f 56  MPILER=gcc-" __V
0fa0: 45 52 53 49 4f 4e 5f 5f 2c 0a 23 65 6e 64 69 66  ERSION__,.#endif
0fb0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 43 4f 56 45  .#if SQLITE_COVE
0fc0: 52 41 47 45 5f 54 45 53 54 0a 20 20 22 43 4f 56  RAGE_TEST.  "COV
0fd0: 45 52 41 47 45 5f 54 45 53 54 22 2c 0a 23 65 6e  ERAGE_TEST",.#en
0fe0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 44  dif.#if SQLITE_D
0ff0: 45 42 55 47 0a 20 20 22 44 45 42 55 47 22 2c 0a  EBUG.  "DEBUG",.
1000: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1010: 45 5f 44 45 46 41 55 4c 54 5f 41 55 54 4f 4d 41  E_DEFAULT_AUTOMA
1020: 54 49 43 5f 49 4e 44 45 58 0a 20 20 22 44 45 46  TIC_INDEX.  "DEF
1030: 41 55 4c 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  AULT_AUTOMATIC_I
1040: 4e 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69  NDEX",.#endif.#i
1050: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
1060: 5f 41 55 54 4f 56 41 43 55 55 4d 0a 20 20 22 44  _AUTOVACUUM.  "D
1070: 45 46 41 55 4c 54 5f 41 55 54 4f 56 41 43 55 55  EFAULT_AUTOVACUU
1080: 4d 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65  M",.#endif.#ifde
1090: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
10a0: 5f 43 41 43 48 45 5f 53 49 5a 45 0a 20 20 22 44  _CACHE_SIZE.  "D
10b0: 45 46 41 55 4c 54 5f 43 41 43 48 45 5f 53 49 5a  EFAULT_CACHE_SIZ
10c0: 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  E=" CTIMEOPT_VAL
10d0: 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  (SQLITE_DEFAULT_
10e0: 43 41 43 48 45 5f 53 49 5a 45 29 2c 0a 23 65 6e  CACHE_SIZE),.#en
10f0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 44  dif.#if SQLITE_D
1100: 45 46 41 55 4c 54 5f 43 4b 50 54 46 55 4c 4c 46  EFAULT_CKPTFULLF
1110: 53 59 4e 43 0a 20 20 22 44 45 46 41 55 4c 54 5f  SYNC.  "DEFAULT_
1120: 43 4b 50 54 46 55 4c 4c 46 53 59 4e 43 22 2c 0a  CKPTFULLFSYNC",.
1130: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
1140: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c  LITE_DEFAULT_FIL
1150: 45 5f 46 4f 52 4d 41 54 0a 20 20 22 44 45 46 41  E_FORMAT.  "DEFA
1160: 55 4c 54 5f 46 49 4c 45 5f 46 4f 52 4d 41 54 3d  ULT_FILE_FORMAT=
1170: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
1180: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49  QLITE_DEFAULT_FI
1190: 4c 45 5f 46 4f 52 4d 41 54 29 2c 0a 23 65 6e 64  LE_FORMAT),.#end
11a0: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
11b0: 5f 44 45 46 41 55 4c 54 5f 46 49 4c 45 5f 50 45  _DEFAULT_FILE_PE
11c0: 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22 44 45 46  RMISSIONS.  "DEF
11d0: 41 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53  AULT_FILE_PERMIS
11e0: 53 49 4f 4e 53 3d 22 20 43 54 49 4d 45 4f 50 54  SIONS=" CTIMEOPT
11f0: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41  _VAL(SQLITE_DEFA
1200: 55 4c 54 5f 46 49 4c 45 5f 50 45 52 4d 49 53 53  ULT_FILE_PERMISS
1210: 49 4f 4e 53 29 2c 0a 23 65 6e 64 69 66 0a 23 69  IONS),.#endif.#i
1220: 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54  f SQLITE_DEFAULT
1230: 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 53 0a 20 20  _FOREIGN_KEYS.  
1240: 22 44 45 46 41 55 4c 54 5f 46 4f 52 45 49 47 4e  "DEFAULT_FOREIGN
1250: 5f 4b 45 59 53 22 2c 0a 23 65 6e 64 69 66 0a 23  _KEYS",.#endif.#
1260: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46  ifdef SQLITE_DEF
1270: 41 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a  AULT_JOURNAL_SIZ
1280: 45 5f 4c 49 4d 49 54 0a 20 20 22 44 45 46 41 55  E_LIMIT.  "DEFAU
1290: 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a 45 5f  LT_JOURNAL_SIZE_
12a0: 4c 49 4d 49 54 3d 22 20 43 54 49 4d 45 4f 50 54  LIMIT=" CTIMEOPT
12b0: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41  _VAL(SQLITE_DEFA
12c0: 55 4c 54 5f 4a 4f 55 52 4e 41 4c 5f 53 49 5a 45  ULT_JOURNAL_SIZE
12d0: 5f 4c 49 4d 49 54 29 2c 0a 23 65 6e 64 69 66 0a  _LIMIT),.#endif.
12e0: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45  #ifdef SQLITE_DE
12f0: 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47 5f 4d 4f  FAULT_LOCKING_MO
1300: 44 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 4c 4f  DE.  "DEFAULT_LO
1310: 43 4b 49 4e 47 5f 4d 4f 44 45 3d 22 20 43 54 49  CKING_MODE=" CTI
1320: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
1330: 5f 44 45 46 41 55 4c 54 5f 4c 4f 43 4b 49 4e 47  _DEFAULT_LOCKING
1340: 5f 4d 4f 44 45 29 2c 0a 23 65 6e 64 69 66 0a 23  _MODE),.#endif.#
1350: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46  ifdef SQLITE_DEF
1360: 41 55 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 0a 20  AULT_LOOKASIDE. 
1370: 20 22 44 45 46 41 55 4c 54 5f 4c 4f 4f 4b 41 53   "DEFAULT_LOOKAS
1380: 49 44 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  IDE=" CTIMEOPT_V
1390: 41 4c 32 28 53 51 4c 49 54 45 5f 44 45 46 41 55  AL2(SQLITE_DEFAU
13a0: 4c 54 5f 4c 4f 4f 4b 41 53 49 44 45 29 2c 0a 23  LT_LOOKASIDE),.#
13b0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
13c0: 5f 44 45 46 41 55 4c 54 5f 4d 45 4d 53 54 41 54  _DEFAULT_MEMSTAT
13d0: 55 53 0a 20 20 22 44 45 46 41 55 4c 54 5f 4d 45  US.  "DEFAULT_ME
13e0: 4d 53 54 41 54 55 53 22 2c 0a 23 65 6e 64 69 66  MSTATUS",.#endif
13f0: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44  .#ifdef SQLITE_D
1400: 45 46 41 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45  EFAULT_MMAP_SIZE
1410: 0a 20 20 22 44 45 46 41 55 4c 54 5f 4d 4d 41 50  .  "DEFAULT_MMAP
1420: 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54  _SIZE=" CTIMEOPT
1430: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41  _VAL(SQLITE_DEFA
1440: 55 4c 54 5f 4d 4d 41 50 5f 53 49 5a 45 29 2c 0a  ULT_MMAP_SIZE),.
1450: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
1460: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 50 41 47  LITE_DEFAULT_PAG
1470: 45 5f 53 49 5a 45 0a 20 20 22 44 45 46 41 55 4c  E_SIZE.  "DEFAUL
1480: 54 5f 50 41 47 45 5f 53 49 5a 45 3d 22 20 43 54  T_PAGE_SIZE=" CT
1490: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
14a0: 45 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53  E_DEFAULT_PAGE_S
14b0: 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  IZE),.#endif.#if
14c0: 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55  def SQLITE_DEFAU
14d0: 4c 54 5f 50 43 41 43 48 45 5f 49 4e 49 54 53 5a  LT_PCACHE_INITSZ
14e0: 0a 20 20 22 44 45 46 41 55 4c 54 5f 50 43 41 43  .  "DEFAULT_PCAC
14f0: 48 45 5f 49 4e 49 54 53 5a 3d 22 20 43 54 49 4d  HE_INITSZ=" CTIM
1500: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
1510: 44 45 46 41 55 4c 54 5f 50 43 41 43 48 45 5f 49  DEFAULT_PCACHE_I
1520: 4e 49 54 53 5a 29 2c 0a 23 65 6e 64 69 66 0a 23  NITSZ),.#endif.#
1530: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45 46  ifdef SQLITE_DEF
1540: 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f 50 45  AULT_PROXYDIR_PE
1550: 52 4d 49 53 53 49 4f 4e 53 0a 20 20 22 44 45 46  RMISSIONS.  "DEF
1560: 41 55 4c 54 5f 50 52 4f 58 59 44 49 52 5f 50 45  AULT_PROXYDIR_PE
1570: 52 4d 49 53 53 49 4f 4e 53 3d 22 20 43 54 49 4d  RMISSIONS=" CTIM
1580: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
1590: 44 45 46 41 55 4c 54 5f 50 52 4f 58 59 44 49 52  DEFAULT_PROXYDIR
15a0: 5f 50 45 52 4d 49 53 53 49 4f 4e 53 29 2c 0a 23  _PERMISSIONS),.#
15b0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
15c0: 5f 44 45 46 41 55 4c 54 5f 52 45 43 55 52 53 49  _DEFAULT_RECURSI
15d0: 56 45 5f 54 52 49 47 47 45 52 53 0a 20 20 22 44  VE_TRIGGERS.  "D
15e0: 45 46 41 55 4c 54 5f 52 45 43 55 52 53 49 56 45  EFAULT_RECURSIVE
15f0: 5f 54 52 49 47 47 45 52 53 22 2c 0a 23 65 6e 64  _TRIGGERS",.#end
1600: 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45  if.#ifdef SQLITE
1610: 5f 44 45 46 41 55 4c 54 5f 52 4f 57 45 53 54 0a  _DEFAULT_ROWEST.
1620: 20 20 22 44 45 46 41 55 4c 54 5f 52 4f 57 45 53    "DEFAULT_ROWES
1630: 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c  T=" CTIMEOPT_VAL
1640: 28 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f  (SQLITE_DEFAULT_
1650: 52 4f 57 45 53 54 29 2c 0a 23 65 6e 64 69 66 0a  ROWEST),.#endif.
1660: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44 45  #ifdef SQLITE_DE
1670: 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f 53 49 5a  FAULT_SECTOR_SIZ
1680: 45 0a 20 20 22 44 45 46 41 55 4c 54 5f 53 45 43  E.  "DEFAULT_SEC
1690: 54 4f 52 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45  TOR_SIZE=" CTIME
16a0: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 44  OPT_VAL(SQLITE_D
16b0: 45 46 41 55 4c 54 5f 53 45 43 54 4f 52 5f 53 49  EFAULT_SECTOR_SI
16c0: 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ZE),.#endif.#ifd
16d0: 65 66 20 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  ef SQLITE_DEFAUL
16e0: 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 0a 20 20  T_SYNCHRONOUS.  
16f0: 22 44 45 46 41 55 4c 54 5f 53 59 4e 43 48 52 4f  "DEFAULT_SYNCHRO
1700: 4e 4f 55 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f  NOUS=" CTIMEOPT_
1710: 56 41 4c 28 53 51 4c 49 54 45 5f 44 45 46 41 55  VAL(SQLITE_DEFAU
1720: 4c 54 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 29 2c  LT_SYNCHRONOUS),
1730: 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53  .#endif.#ifdef S
1740: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41  QLITE_DEFAULT_WA
1750: 4c 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54  L_AUTOCHECKPOINT
1760: 0a 20 20 22 44 45 46 41 55 4c 54 5f 57 41 4c 5f  .  "DEFAULT_WAL_
1770: 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54 3d 22  AUTOCHECKPOINT="
1780: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
1790: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 41 4c  LITE_DEFAULT_WAL
17a0: 5f 41 55 54 4f 43 48 45 43 4b 50 4f 49 4e 54 29  _AUTOCHECKPOINT)
17b0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
17c0: 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57  SQLITE_DEFAULT_W
17d0: 41 4c 5f 53 59 4e 43 48 52 4f 4e 4f 55 53 0a 20  AL_SYNCHRONOUS. 
17e0: 20 22 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59   "DEFAULT_WAL_SY
17f0: 4e 43 48 52 4f 4e 4f 55 53 3d 22 20 43 54 49 4d  NCHRONOUS=" CTIM
1800: 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f  EOPT_VAL(SQLITE_
1810: 44 45 46 41 55 4c 54 5f 57 41 4c 5f 53 59 4e 43  DEFAULT_WAL_SYNC
1820: 48 52 4f 4e 4f 55 53 29 2c 0a 23 65 6e 64 69 66  HRONOUS),.#endif
1830: 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 44  .#ifdef SQLITE_D
1840: 45 46 41 55 4c 54 5f 57 4f 52 4b 45 52 5f 54 48  EFAULT_WORKER_TH
1850: 52 45 41 44 53 0a 20 20 22 44 45 46 41 55 4c 54  READS.  "DEFAULT
1860: 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 3d  _WORKER_THREADS=
1870: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
1880: 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 57 4f  QLITE_DEFAULT_WO
1890: 52 4b 45 52 5f 54 48 52 45 41 44 53 29 2c 0a 23  RKER_THREADS),.#
18a0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
18b0: 5f 44 49 52 45 43 54 5f 4f 56 45 52 46 4c 4f 57  _DIRECT_OVERFLOW
18c0: 5f 52 45 41 44 0a 20 20 22 44 49 52 45 43 54 5f  _READ.  "DIRECT_
18d0: 4f 56 45 52 46 4c 4f 57 5f 52 45 41 44 22 2c 0a  OVERFLOW_READ",.
18e0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
18f0: 45 5f 44 49 53 41 42 4c 45 5f 44 49 52 53 59 4e  E_DISABLE_DIRSYN
1900: 43 0a 20 20 22 44 49 53 41 42 4c 45 5f 44 49 52  C.  "DISABLE_DIR
1910: 53 59 4e 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SYNC",.#endif.#i
1920: 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  f SQLITE_DISABLE
1930: 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45 0a 20 20  _FTS3_UNICODE.  
1940: 22 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e  "DISABLE_FTS3_UN
1950: 49 43 4f 44 45 22 2c 0a 23 65 6e 64 69 66 0a 23  ICODE",.#endif.#
1960: 69 66 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c  if SQLITE_DISABL
1970: 45 5f 46 54 53 34 5f 44 45 46 45 52 52 45 44 0a  E_FTS4_DEFERRED.
1980: 20 20 22 44 49 53 41 42 4c 45 5f 46 54 53 34 5f    "DISABLE_FTS4_
1990: 44 45 46 45 52 52 45 44 22 2c 0a 23 65 6e 64 69  DEFERRED",.#endi
19a0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 44 49 53  f.#if SQLITE_DIS
19b0: 41 42 4c 45 5f 49 4e 54 52 49 4e 53 49 43 0a 20  ABLE_INTRINSIC. 
19c0: 20 22 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e   "DISABLE_INTRIN
19d0: 53 49 43 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  SIC",.#endif.#if
19e0: 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f   SQLITE_DISABLE_
19f0: 4c 46 53 0a 20 20 22 44 49 53 41 42 4c 45 5f 4c  LFS.  "DISABLE_L
1a00: 46 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  FS",.#endif.#if 
1a10: 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 50  SQLITE_DISABLE_P
1a20: 41 47 45 43 41 43 48 45 5f 4f 56 45 52 46 4c 4f  AGECACHE_OVERFLO
1a30: 57 5f 53 54 41 54 53 0a 20 20 22 44 49 53 41 42  W_STATS.  "DISAB
1a40: 4c 45 5f 50 41 47 45 43 41 43 48 45 5f 4f 56 45  LE_PAGECACHE_OVE
1a50: 52 46 4c 4f 57 5f 53 54 41 54 53 22 2c 0a 23 65  RFLOW_STATS",.#e
1a60: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1a70: 44 49 53 41 42 4c 45 5f 53 4b 49 50 41 48 45 41  DISABLE_SKIPAHEA
1a80: 44 5f 44 49 53 54 49 4e 43 54 0a 20 20 22 44 49  D_DISTINCT.  "DI
1a90: 53 41 42 4c 45 5f 53 4b 49 50 41 48 45 41 44 5f  SABLE_SKIPAHEAD_
1aa0: 44 49 53 54 49 4e 43 54 22 2c 0a 23 65 6e 64 69  DISTINCT",.#endi
1ab0: 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f  f.#ifdef SQLITE_
1ac0: 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e 41 4d 45 53  ENABLE_8_3_NAMES
1ad0: 0a 20 20 22 45 4e 41 42 4c 45 5f 38 5f 33 5f 4e  .  "ENABLE_8_3_N
1ae0: 41 4d 45 53 3d 22 20 43 54 49 4d 45 4f 50 54 5f  AMES=" CTIMEOPT_
1af0: 56 41 4c 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c  VAL(SQLITE_ENABL
1b00: 45 5f 38 5f 33 5f 4e 41 4d 45 53 29 2c 0a 23 65  E_8_3_NAMES),.#e
1b10: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
1b20: 45 4e 41 42 4c 45 5f 41 50 49 5f 41 52 4d 4f 52  ENABLE_API_ARMOR
1b30: 0a 20 20 22 45 4e 41 42 4c 45 5f 41 50 49 5f 41  .  "ENABLE_API_A
1b40: 52 4d 4f 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RMOR",.#endif.#i
1b50: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1b60: 41 54 4f 4d 49 43 5f 57 52 49 54 45 0a 20 20 22  ATOMIC_WRITE.  "
1b70: 45 4e 41 42 4c 45 5f 41 54 4f 4d 49 43 5f 57 52  ENABLE_ATOMIC_WR
1b80: 49 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ITE",.#endif.#if
1b90: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 42   SQLITE_ENABLE_B
1ba0: 41 54 43 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54  ATCH_ATOMIC_WRIT
1bb0: 45 0a 20 20 22 45 4e 41 42 4c 45 5f 42 41 54 43  E.  "ENABLE_BATC
1bc0: 48 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 22 2c  H_ATOMIC_WRITE",
1bd0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1be0: 54 45 5f 45 4e 41 42 4c 45 5f 43 45 52 4f 44 0a  TE_ENABLE_CEROD.
1bf0: 20 20 22 45 4e 41 42 4c 45 5f 43 45 52 4f 44 3d    "ENABLE_CEROD=
1c00: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
1c10: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 45 52  QLITE_ENABLE_CER
1c20: 4f 44 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  OD),.#endif.#if 
1c30: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 43 4f  SQLITE_ENABLE_CO
1c40: 4c 55 4d 4e 5f 4d 45 54 41 44 41 54 41 0a 20 20  LUMN_METADATA.  
1c50: 22 45 4e 41 42 4c 45 5f 43 4f 4c 55 4d 4e 5f 4d  "ENABLE_COLUMN_M
1c60: 45 54 41 44 41 54 41 22 2c 0a 23 65 6e 64 69 66  ETADATA",.#endif
1c70: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1c80: 4c 45 5f 43 4f 4c 55 4d 4e 5f 55 53 45 44 5f 4d  LE_COLUMN_USED_M
1c90: 41 53 4b 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f  ASK.  "ENABLE_CO
1ca0: 4c 55 4d 4e 5f 55 53 45 44 5f 4d 41 53 4b 22 2c  LUMN_USED_MASK",
1cb0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1cc0: 54 45 5f 45 4e 41 42 4c 45 5f 43 4f 53 54 4d 55  TE_ENABLE_COSTMU
1cd0: 4c 54 0a 20 20 22 45 4e 41 42 4c 45 5f 43 4f 53  LT.  "ENABLE_COS
1ce0: 54 4d 55 4c 54 22 2c 0a 23 65 6e 64 69 66 0a 23  TMULT",.#endif.#
1cf0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1d00: 5f 43 55 52 53 4f 52 5f 48 49 4e 54 53 0a 20 20  _CURSOR_HINTS.  
1d10: 22 45 4e 41 42 4c 45 5f 43 55 52 53 4f 52 5f 48  "ENABLE_CURSOR_H
1d20: 49 4e 54 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  INTS",.#endif.#i
1d30: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
1d40: 44 42 53 54 41 54 5f 56 54 41 42 0a 20 20 22 45  DBSTAT_VTAB.  "E
1d50: 4e 41 42 4c 45 5f 44 42 53 54 41 54 5f 56 54 41  NABLE_DBSTAT_VTA
1d60: 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  B",.#endif.#if S
1d70: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 45 58 50  QLITE_ENABLE_EXP
1d80: 45 4e 53 49 56 45 5f 41 53 53 45 52 54 0a 20 20  ENSIVE_ASSERT.  
1d90: 22 45 4e 41 42 4c 45 5f 45 58 50 45 4e 53 49 56  "ENABLE_EXPENSIV
1da0: 45 5f 41 53 53 45 52 54 22 2c 0a 23 65 6e 64 69  E_ASSERT",.#endi
1db0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
1dc0: 42 4c 45 5f 46 54 53 31 0a 20 20 22 45 4e 41 42  BLE_FTS1.  "ENAB
1dd0: 4c 45 5f 46 54 53 31 22 2c 0a 23 65 6e 64 69 66  LE_FTS1",.#endif
1de0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
1df0: 4c 45 5f 46 54 53 32 0a 20 20 22 45 4e 41 42 4c  LE_FTS2.  "ENABL
1e00: 45 5f 46 54 53 32 22 2c 0a 23 65 6e 64 69 66 0a  E_FTS2",.#endif.
1e10: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
1e20: 45 5f 46 54 53 33 0a 20 20 22 45 4e 41 42 4c 45  E_FTS3.  "ENABLE
1e30: 5f 46 54 53 33 22 2c 0a 23 65 6e 64 69 66 0a 23  _FTS3",.#endif.#
1e40: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1e50: 5f 46 54 53 33 5f 50 41 52 45 4e 54 48 45 53 49  _FTS3_PARENTHESI
1e60: 53 0a 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 33  S.  "ENABLE_FTS3
1e70: 5f 50 41 52 45 4e 54 48 45 53 49 53 22 2c 0a 23  _PARENTHESIS",.#
1e80: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
1e90: 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f 4b  _ENABLE_FTS3_TOK
1ea0: 45 4e 49 5a 45 52 0a 20 20 22 45 4e 41 42 4c 45  ENIZER.  "ENABLE
1eb0: 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 22  _FTS3_TOKENIZER"
1ec0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
1ed0: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 0a  ITE_ENABLE_FTS4.
1ee0: 20 20 22 45 4e 41 42 4c 45 5f 46 54 53 34 22 2c    "ENABLE_FTS4",
1ef0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
1f00: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 0a 20  TE_ENABLE_FTS5. 
1f10: 20 22 45 4e 41 42 4c 45 5f 46 54 53 35 22 2c 0a   "ENABLE_FTS5",.
1f20: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
1f30: 45 5f 45 4e 41 42 4c 45 5f 47 45 4f 50 4f 4c 59  E_ENABLE_GEOPOLY
1f40: 0a 20 20 22 45 4e 41 42 4c 45 5f 47 45 4f 50 4f  .  "ENABLE_GEOPO
1f50: 4c 59 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  LY",.#endif.#if 
1f60: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 48 49  SQLITE_ENABLE_HI
1f70: 44 44 45 4e 5f 43 4f 4c 55 4d 4e 53 0a 20 20 22  DDEN_COLUMNS.  "
1f80: 45 4e 41 42 4c 45 5f 48 49 44 44 45 4e 5f 43 4f  ENABLE_HIDDEN_CO
1f90: 4c 55 4d 4e 53 22 2c 0a 23 65 6e 64 69 66 0a 23  LUMNS",.#endif.#
1fa0: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
1fb0: 5f 49 43 55 0a 20 20 22 45 4e 41 42 4c 45 5f 49  _ICU.  "ENABLE_I
1fc0: 43 55 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  CU",.#endif.#if 
1fd0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 49 4f  SQLITE_ENABLE_IO
1fe0: 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f  TRACE.  "ENABLE_
1ff0: 49 4f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66  IOTRACE",.#endif
2000: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2010: 4c 45 5f 4a 53 4f 4e 31 0a 20 20 22 45 4e 41 42  LE_JSON1.  "ENAB
2020: 4c 45 5f 4a 53 4f 4e 31 22 2c 0a 23 65 6e 64 69  LE_JSON1",.#endi
2030: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2040: 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  BLE_LOAD_EXTENSI
2050: 4f 4e 0a 20 20 22 45 4e 41 42 4c 45 5f 4c 4f 41  ON.  "ENABLE_LOA
2060: 44 5f 45 58 54 45 4e 53 49 4f 4e 22 2c 0a 23 65  D_EXTENSION",.#e
2070: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2080: 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43 4b 49 4e  TE_ENABLE_LOCKIN
2090: 47 5f 53 54 59 4c 45 0a 20 20 22 45 4e 41 42 4c  G_STYLE.  "ENABL
20a0: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 3d  E_LOCKING_STYLE=
20b0: 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53  " CTIMEOPT_VAL(S
20c0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4c 4f 43  QLITE_ENABLE_LOC
20d0: 4b 49 4e 47 5f 53 54 59 4c 45 29 2c 0a 23 65 6e  KING_STYLE),.#en
20e0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45  dif.#if SQLITE_E
20f0: 4e 41 42 4c 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e  NABLE_MEMORY_MAN
2100: 41 47 45 4d 45 4e 54 0a 20 20 22 45 4e 41 42 4c  AGEMENT.  "ENABL
2110: 45 5f 4d 45 4d 4f 52 59 5f 4d 41 4e 41 47 45 4d  E_MEMORY_MANAGEM
2120: 45 4e 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ENT",.#endif.#if
2130: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d   SQLITE_ENABLE_M
2140: 45 4d 53 59 53 33 0a 20 20 22 45 4e 41 42 4c 45  EMSYS3.  "ENABLE
2150: 5f 4d 45 4d 53 59 53 33 22 2c 0a 23 65 6e 64 69  _MEMSYS3",.#endi
2160: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2170: 42 4c 45 5f 4d 45 4d 53 59 53 35 0a 20 20 22 45  BLE_MEMSYS5.  "E
2180: 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 35 22 2c 0a  NABLE_MEMSYS5",.
2190: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
21a0: 45 5f 45 4e 41 42 4c 45 5f 4d 55 4c 54 49 50 4c  E_ENABLE_MULTIPL
21b0: 45 58 0a 20 20 22 45 4e 41 42 4c 45 5f 4d 55 4c  EX.  "ENABLE_MUL
21c0: 54 49 50 4c 45 58 22 2c 0a 23 65 6e 64 69 66 0a  TIPLEX",.#endif.
21d0: 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c  #if SQLITE_ENABL
21e0: 45 5f 4e 4f 52 4d 41 4c 49 5a 45 0a 20 20 22 45  E_NORMALIZE.  "E
21f0: 4e 41 42 4c 45 5f 4e 4f 52 4d 41 4c 49 5a 45 22  NABLE_NORMALIZE"
2200: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2210: 49 54 45 5f 45 4e 41 42 4c 45 5f 4e 55 4c 4c 5f  ITE_ENABLE_NULL_
2220: 54 52 49 4d 0a 20 20 22 45 4e 41 42 4c 45 5f 4e  TRIM.  "ENABLE_N
2230: 55 4c 4c 5f 54 52 49 4d 22 2c 0a 23 65 6e 64 69  ULL_TRIM",.#endi
2240: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
2250: 42 4c 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45 4c  BLE_OVERSIZE_CEL
2260: 4c 5f 43 48 45 43 4b 0a 20 20 22 45 4e 41 42 4c  L_CHECK.  "ENABL
2270: 45 5f 4f 56 45 52 53 49 5a 45 5f 43 45 4c 4c 5f  E_OVERSIZE_CELL_
2280: 43 48 45 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23  CHECK",.#endif.#
2290: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
22a0: 5f 50 52 45 55 50 44 41 54 45 5f 48 4f 4f 4b 0a  _PREUPDATE_HOOK.
22b0: 20 20 22 45 4e 41 42 4c 45 5f 50 52 45 55 50 44    "ENABLE_PREUPD
22c0: 41 54 45 5f 48 4f 4f 4b 22 2c 0a 23 65 6e 64 69  ATE_HOOK",.#endi
22d0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
22e0: 42 4c 45 5f 51 50 53 47 0a 20 20 22 45 4e 41 42  BLE_QPSG.  "ENAB
22f0: 4c 45 5f 51 50 53 47 22 2c 0a 23 65 6e 64 69 66  LE_QPSG",.#endif
2300: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2310: 4c 45 5f 52 42 55 0a 20 20 22 45 4e 41 42 4c 45  LE_RBU.  "ENABLE
2320: 5f 52 42 55 22 2c 0a 23 65 6e 64 69 66 0a 23 69  _RBU",.#endif.#i
2330: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
2340: 52 54 52 45 45 0a 20 20 22 45 4e 41 42 4c 45 5f  RTREE.  "ENABLE_
2350: 52 54 52 45 45 22 2c 0a 23 65 6e 64 69 66 0a 23  RTREE",.#endif.#
2360: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2370: 5f 53 45 4c 45 43 54 54 52 41 43 45 0a 20 20 22  _SELECTTRACE.  "
2380: 45 4e 41 42 4c 45 5f 53 45 4c 45 43 54 54 52 41  ENABLE_SELECTTRA
2390: 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  CE",.#endif.#if 
23a0: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 45  SQLITE_ENABLE_SE
23b0: 53 53 49 4f 4e 0a 20 20 22 45 4e 41 42 4c 45 5f  SSION.  "ENABLE_
23c0: 53 45 53 53 49 4f 4e 22 2c 0a 23 65 6e 64 69 66  SESSION",.#endif
23d0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
23e0: 4c 45 5f 53 4e 41 50 53 48 4f 54 0a 20 20 22 45  LE_SNAPSHOT.  "E
23f0: 4e 41 42 4c 45 5f 53 4e 41 50 53 48 4f 54 22 2c  NABLE_SNAPSHOT",
2400: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2410: 54 45 5f 45 4e 41 42 4c 45 5f 53 4f 52 54 45 52  TE_ENABLE_SORTER
2420: 5f 52 45 46 45 52 45 4e 43 45 53 0a 20 20 22 45  _REFERENCES.  "E
2430: 4e 41 42 4c 45 5f 53 4f 52 54 45 52 5f 52 45 46  NABLE_SORTER_REF
2440: 45 52 45 4e 43 45 53 22 2c 0a 23 65 6e 64 69 66  ERENCES",.#endif
2450: 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42  .#if SQLITE_ENAB
2460: 4c 45 5f 53 51 4c 4c 4f 47 0a 20 20 22 45 4e 41  LE_SQLLOG.  "ENA
2470: 42 4c 45 5f 53 51 4c 4c 4f 47 22 2c 0a 23 65 6e  BLE_SQLLOG",.#en
2480: 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28  dif.#if defined(
2490: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54  SQLITE_ENABLE_ST
24a0: 41 54 34 29 0a 20 20 22 45 4e 41 42 4c 45 5f 53  AT4).  "ENABLE_S
24b0: 54 41 54 34 22 2c 0a 23 65 6c 69 66 20 64 65 66  TAT4",.#elif def
24c0: 69 6e 65 64 28 53 51 4c 49 54 45 5f 45 4e 41 42  ined(SQLITE_ENAB
24d0: 4c 45 5f 53 54 41 54 33 29 0a 20 20 22 45 4e 41  LE_STAT3).  "ENA
24e0: 42 4c 45 5f 53 54 41 54 33 22 2c 0a 23 65 6e 64  BLE_STAT3",.#end
24f0: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e  if.#if SQLITE_EN
2500: 41 42 4c 45 5f 53 54 4d 54 56 54 41 42 0a 20 20  ABLE_STMTVTAB.  
2510: 22 45 4e 41 42 4c 45 5f 53 54 4d 54 56 54 41 42  "ENABLE_STMTVTAB
2520: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2530: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 4d 54  LITE_ENABLE_STMT
2540: 5f 53 43 41 4e 53 54 41 54 55 53 0a 20 20 22 45  _SCANSTATUS.  "E
2550: 4e 41 42 4c 45 5f 53 54 4d 54 5f 53 43 41 4e 53  NABLE_STMT_SCANS
2560: 54 41 54 55 53 22 2c 0a 23 65 6e 64 69 66 0a 23  TATUS",.#endif.#
2570: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2580: 5f 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e  _UNKNOWN_SQL_FUN
2590: 43 54 49 4f 4e 0a 20 20 22 45 4e 41 42 4c 45 5f  CTION.  "ENABLE_
25a0: 55 4e 4b 4e 4f 57 4e 5f 53 51 4c 5f 46 55 4e 43  UNKNOWN_SQL_FUNC
25b0: 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  TION",.#endif.#i
25c0: 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  f SQLITE_ENABLE_
25d0: 55 4e 4c 4f 43 4b 5f 4e 4f 54 49 46 59 0a 20 20  UNLOCK_NOTIFY.  
25e0: 22 45 4e 41 42 4c 45 5f 55 4e 4c 4f 43 4b 5f 4e  "ENABLE_UNLOCK_N
25f0: 4f 54 49 46 59 22 2c 0a 23 65 6e 64 69 66 0a 23  OTIFY",.#endif.#
2600: 69 66 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45  if SQLITE_ENABLE
2610: 5f 55 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c  _UPDATE_DELETE_L
2620: 49 4d 49 54 0a 20 20 22 45 4e 41 42 4c 45 5f 55  IMIT.  "ENABLE_U
2630: 50 44 41 54 45 5f 44 45 4c 45 54 45 5f 4c 49 4d  PDATE_DELETE_LIM
2640: 49 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  IT",.#endif.#if 
2650: 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 55 52  SQLITE_ENABLE_UR
2660: 49 5f 30 30 5f 45 52 52 4f 52 0a 20 20 22 45 4e  I_00_ERROR.  "EN
2670: 41 42 4c 45 5f 55 52 49 5f 30 30 5f 45 52 52 4f  ABLE_URI_00_ERRO
2680: 52 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  R",.#endif.#if S
2690: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 56 46 53  QLITE_ENABLE_VFS
26a0: 54 52 41 43 45 0a 20 20 22 45 4e 41 42 4c 45 5f  TRACE.  "ENABLE_
26b0: 56 46 53 54 52 41 43 45 22 2c 0a 23 65 6e 64 69  VFSTRACE",.#endi
26c0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 45 4e 41  f.#if SQLITE_ENA
26d0: 42 4c 45 5f 57 48 45 52 45 54 52 41 43 45 0a 20  BLE_WHERETRACE. 
26e0: 20 22 45 4e 41 42 4c 45 5f 57 48 45 52 45 54 52   "ENABLE_WHERETR
26f0: 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ACE",.#endif.#if
2700: 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 5a   SQLITE_ENABLE_Z
2710: 49 50 56 46 53 0a 20 20 22 45 4e 41 42 4c 45 5f  IPVFS.  "ENABLE_
2720: 5a 49 50 56 46 53 22 2c 0a 23 65 6e 64 69 66 0a  ZIPVFS",.#endif.
2730: 23 69 66 20 53 51 4c 49 54 45 5f 45 58 50 4c 41  #if SQLITE_EXPLA
2740: 49 4e 5f 45 53 54 49 4d 41 54 45 44 5f 52 4f 57  IN_ESTIMATED_ROW
2750: 53 0a 20 20 22 45 58 50 4c 41 49 4e 5f 45 53 54  S.  "EXPLAIN_EST
2760: 49 4d 41 54 45 44 5f 52 4f 57 53 22 2c 0a 23 65  IMATED_ROWS",.#e
2770: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2780: 45 58 54 52 41 5f 49 46 4e 55 4c 4c 52 4f 57 0a  EXTRA_IFNULLROW.
2790: 20 20 22 45 58 54 52 41 5f 49 46 4e 55 4c 4c 52    "EXTRA_IFNULLR
27a0: 4f 57 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  OW",.#endif.#ifd
27b0: 65 66 20 53 51 4c 49 54 45 5f 45 58 54 52 41 5f  ef SQLITE_EXTRA_
27c0: 49 4e 49 54 0a 20 20 22 45 58 54 52 41 5f 49 4e  INIT.  "EXTRA_IN
27d0: 49 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  IT=" CTIMEOPT_VA
27e0: 4c 28 53 51 4c 49 54 45 5f 45 58 54 52 41 5f 49  L(SQLITE_EXTRA_I
27f0: 4e 49 54 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  NIT),.#endif.#if
2800: 64 65 66 20 53 51 4c 49 54 45 5f 45 58 54 52 41  def SQLITE_EXTRA
2810: 5f 53 48 55 54 44 4f 57 4e 0a 20 20 22 45 58 54  _SHUTDOWN.  "EXT
2820: 52 41 5f 53 48 55 54 44 4f 57 4e 3d 22 20 43 54  RA_SHUTDOWN=" CT
2830: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2840: 45 5f 45 58 54 52 41 5f 53 48 55 54 44 4f 57 4e  E_EXTRA_SHUTDOWN
2850: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2860: 20 53 51 4c 49 54 45 5f 46 54 53 33 5f 4d 41 58   SQLITE_FTS3_MAX
2870: 5f 45 58 50 52 5f 44 45 50 54 48 0a 20 20 22 46  _EXPR_DEPTH.  "F
2880: 54 53 33 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50  TS3_MAX_EXPR_DEP
2890: 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  TH=" CTIMEOPT_VA
28a0: 4c 28 53 51 4c 49 54 45 5f 46 54 53 33 5f 4d 41  L(SQLITE_FTS3_MA
28b0: 58 5f 45 58 50 52 5f 44 45 50 54 48 29 2c 0a 23  X_EXPR_DEPTH),.#
28c0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
28d0: 5f 46 54 53 35 5f 45 4e 41 42 4c 45 5f 54 45 53  _FTS5_ENABLE_TES
28e0: 54 5f 4d 49 0a 20 20 22 46 54 53 35 5f 45 4e 41  T_MI.  "FTS5_ENA
28f0: 42 4c 45 5f 54 45 53 54 5f 4d 49 22 2c 0a 23 65  BLE_TEST_MI",.#e
2900: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2910: 46 54 53 35 5f 4e 4f 5f 57 49 54 48 4f 55 54 5f  FTS5_NO_WITHOUT_
2920: 52 4f 57 49 44 0a 20 20 22 46 54 53 35 5f 4e 4f  ROWID.  "FTS5_NO
2930: 5f 57 49 54 48 4f 55 54 5f 52 4f 57 49 44 22 2c  _WITHOUT_ROWID",
2940: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
2950: 54 45 5f 48 41 53 5f 43 4f 44 45 43 0a 20 20 22  TE_HAS_CODEC.  "
2960: 48 41 53 5f 43 4f 44 45 43 22 2c 0a 23 65 6e 64  HAS_CODEC",.#end
2970: 69 66 0a 23 69 66 20 48 41 56 45 5f 49 53 4e 41  if.#if HAVE_ISNA
2980: 4e 20 7c 7c 20 53 51 4c 49 54 45 5f 48 41 56 45  N || SQLITE_HAVE
2990: 5f 49 53 4e 41 4e 0a 20 20 22 48 41 56 45 5f 49  _ISNAN.  "HAVE_I
29a0: 53 4e 41 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69  SNAN",.#endif.#i
29b0: 66 20 53 51 4c 49 54 45 5f 48 4f 4d 45 47 52 4f  f SQLITE_HOMEGRO
29c0: 57 4e 5f 52 45 43 55 52 53 49 56 45 5f 4d 55 54  WN_RECURSIVE_MUT
29d0: 45 58 0a 20 20 22 48 4f 4d 45 47 52 4f 57 4e 5f  EX.  "HOMEGROWN_
29e0: 52 45 43 55 52 53 49 56 45 5f 4d 55 54 45 58 22  RECURSIVE_MUTEX"
29f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2a00: 49 54 45 5f 49 47 4e 4f 52 45 5f 41 46 50 5f 4c  ITE_IGNORE_AFP_L
2a10: 4f 43 4b 5f 45 52 52 4f 52 53 0a 20 20 22 49 47  OCK_ERRORS.  "IG
2a20: 4e 4f 52 45 5f 41 46 50 5f 4c 4f 43 4b 5f 45 52  NORE_AFP_LOCK_ER
2a30: 52 4f 52 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69  RORS",.#endif.#i
2a40: 66 20 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5f  f SQLITE_IGNORE_
2a50: 46 4c 4f 43 4b 5f 4c 4f 43 4b 5f 45 52 52 4f 52  FLOCK_LOCK_ERROR
2a60: 53 0a 20 20 22 49 47 4e 4f 52 45 5f 46 4c 4f 43  S.  "IGNORE_FLOC
2a70: 4b 5f 4c 4f 43 4b 5f 45 52 52 4f 52 53 22 2c 0a  K_LOCK_ERRORS",.
2a80: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
2a90: 45 5f 49 4e 4c 49 4e 45 5f 4d 45 4d 43 50 59 0a  E_INLINE_MEMCPY.
2aa0: 20 20 22 49 4e 4c 49 4e 45 5f 4d 45 4d 43 50 59    "INLINE_MEMCPY
2ab0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
2ac0: 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 0a  LITE_INT64_TYPE.
2ad0: 20 20 22 49 4e 54 36 34 5f 54 59 50 45 22 2c 0a    "INT64_TYPE",.
2ae0: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
2af0: 4c 49 54 45 5f 49 4e 54 45 47 52 49 54 59 5f 43  LITE_INTEGRITY_C
2b00: 48 45 43 4b 5f 45 52 52 4f 52 5f 4d 41 58 0a 20  HECK_ERROR_MAX. 
2b10: 20 22 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43   "INTEGRITY_CHEC
2b20: 4b 5f 45 52 52 4f 52 5f 4d 41 58 3d 22 20 43 54  K_ERROR_MAX=" CT
2b30: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2b40: 45 5f 49 4e 54 45 47 52 49 54 59 5f 43 48 45 43  E_INTEGRITY_CHEC
2b50: 4b 5f 45 52 52 4f 52 5f 4d 41 58 29 2c 0a 23 65  K_ERROR_MAX),.#e
2b60: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
2b70: 4c 49 4b 45 5f 44 4f 45 53 4e 54 5f 4d 41 54 43  LIKE_DOESNT_MATC
2b80: 48 5f 42 4c 4f 42 53 0a 20 20 22 4c 49 4b 45 5f  H_BLOBS.  "LIKE_
2b90: 44 4f 45 53 4e 54 5f 4d 41 54 43 48 5f 42 4c 4f  DOESNT_MATCH_BLO
2ba0: 42 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  BS",.#endif.#if 
2bb0: 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 54 52 41 43  SQLITE_LOCK_TRAC
2bc0: 45 0a 20 20 22 4c 4f 43 4b 5f 54 52 41 43 45 22  E.  "LOCK_TRACE"
2bd0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
2be0: 49 54 45 5f 4c 4f 47 5f 43 41 43 48 45 5f 53 50  ITE_LOG_CACHE_SP
2bf0: 49 4c 4c 0a 20 20 22 4c 4f 47 5f 43 41 43 48 45  ILL.  "LOG_CACHE
2c00: 5f 53 50 49 4c 4c 22 2c 0a 23 65 6e 64 69 66 0a  _SPILL",.#endif.
2c10: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
2c20: 4c 4c 4f 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 0a  LLOC_SOFT_LIMIT.
2c30: 20 20 22 4d 41 4c 4c 4f 43 5f 53 4f 46 54 5f 4c    "MALLOC_SOFT_L
2c40: 49 4d 49 54 3d 22 20 43 54 49 4d 45 4f 50 54 5f  IMIT=" CTIMEOPT_
2c50: 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 4c 4c 4f  VAL(SQLITE_MALLO
2c60: 43 5f 53 4f 46 54 5f 4c 49 4d 49 54 29 2c 0a 23  C_SOFT_LIMIT),.#
2c70: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2c80: 49 54 45 5f 4d 41 58 5f 41 54 54 41 43 48 45 44  ITE_MAX_ATTACHED
2c90: 0a 20 20 22 4d 41 58 5f 41 54 54 41 43 48 45 44  .  "MAX_ATTACHED
2ca0: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
2cb0: 53 51 4c 49 54 45 5f 4d 41 58 5f 41 54 54 41 43  SQLITE_MAX_ATTAC
2cc0: 48 45 44 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  HED),.#endif.#if
2cd0: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 43  def SQLITE_MAX_C
2ce0: 4f 4c 55 4d 4e 0a 20 20 22 4d 41 58 5f 43 4f 4c  OLUMN.  "MAX_COL
2cf0: 55 4d 4e 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56  UMN=" CTIMEOPT_V
2d00: 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 43 4f  AL(SQLITE_MAX_CO
2d10: 4c 55 4d 4e 29 2c 0a 23 65 6e 64 69 66 0a 23 69  LUMN),.#endif.#i
2d20: 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f  fdef SQLITE_MAX_
2d30: 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 0a  COMPOUND_SELECT.
2d40: 20 20 22 4d 41 58 5f 43 4f 4d 50 4f 55 4e 44 5f    "MAX_COMPOUND_
2d50: 53 45 4c 45 43 54 3d 22 20 43 54 49 4d 45 4f 50  SELECT=" CTIMEOP
2d60: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2d70: 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54  _COMPOUND_SELECT
2d80: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
2d90: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 44 45 46 41   SQLITE_MAX_DEFA
2da0: 55 4c 54 5f 50 41 47 45 5f 53 49 5a 45 0a 20 20  ULT_PAGE_SIZE.  
2db0: 22 4d 41 58 5f 44 45 46 41 55 4c 54 5f 50 41 47  "MAX_DEFAULT_PAG
2dc0: 45 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50  E_SIZE=" CTIMEOP
2dd0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
2de0: 5f 44 45 46 41 55 4c 54 5f 50 41 47 45 5f 53 49  _DEFAULT_PAGE_SI
2df0: 5a 45 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  ZE),.#endif.#ifd
2e00: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 45 58  ef SQLITE_MAX_EX
2e10: 50 52 5f 44 45 50 54 48 0a 20 20 22 4d 41 58 5f  PR_DEPTH.  "MAX_
2e20: 45 58 50 52 5f 44 45 50 54 48 3d 22 20 43 54 49  EXPR_DEPTH=" CTI
2e30: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
2e40: 5f 4d 41 58 5f 45 58 50 52 5f 44 45 50 54 48 29  _MAX_EXPR_DEPTH)
2e50: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  ,.#endif.#ifdef 
2e60: 53 51 4c 49 54 45 5f 4d 41 58 5f 46 55 4e 43 54  SQLITE_MAX_FUNCT
2e70: 49 4f 4e 5f 41 52 47 0a 20 20 22 4d 41 58 5f 46  ION_ARG.  "MAX_F
2e80: 55 4e 43 54 49 4f 4e 5f 41 52 47 3d 22 20 43 54  UNCTION_ARG=" CT
2e90: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2ea0: 45 5f 4d 41 58 5f 46 55 4e 43 54 49 4f 4e 5f 41  E_MAX_FUNCTION_A
2eb0: 52 47 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  RG),.#endif.#ifd
2ec0: 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45  ef SQLITE_MAX_LE
2ed0: 4e 47 54 48 0a 20 20 22 4d 41 58 5f 4c 45 4e 47  NGTH.  "MAX_LENG
2ee0: 54 48 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  TH=" CTIMEOPT_VA
2ef0: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4c 45 4e  L(SQLITE_MAX_LEN
2f00: 47 54 48 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  GTH),.#endif.#if
2f10: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 4c  def SQLITE_MAX_L
2f20: 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47  IKE_PATTERN_LENG
2f30: 54 48 0a 20 20 22 4d 41 58 5f 4c 49 4b 45 5f 50  TH.  "MAX_LIKE_P
2f40: 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 3d 22 20  ATTERN_LENGTH=" 
2f50: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c  CTIMEOPT_VAL(SQL
2f60: 49 54 45 5f 4d 41 58 5f 4c 49 4b 45 5f 50 41 54  ITE_MAX_LIKE_PAT
2f70: 54 45 52 4e 5f 4c 45 4e 47 54 48 29 2c 0a 23 65  TERN_LENGTH),.#e
2f80: 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49  ndif.#ifdef SQLI
2f90: 54 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 0a 20 20  TE_MAX_MEMORY.  
2fa0: 22 4d 41 58 5f 4d 45 4d 4f 52 59 3d 22 20 43 54  "MAX_MEMORY=" CT
2fb0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
2fc0: 45 5f 4d 41 58 5f 4d 45 4d 4f 52 59 29 2c 0a 23  E_MAX_MEMORY),.#
2fd0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
2fe0: 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a  ITE_MAX_MMAP_SIZ
2ff0: 45 0a 20 20 22 4d 41 58 5f 4d 4d 41 50 5f 53 49  E.  "MAX_MMAP_SI
3000: 5a 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  ZE=" CTIMEOPT_VA
3010: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41  L(SQLITE_MAX_MMA
3020: 50 5f 53 49 5a 45 29 2c 0a 23 65 6e 64 69 66 0a  P_SIZE),.#endif.
3030: 23 69 66 64 65 66 20 53 51 4c 49 54 45 5f 4d 41  #ifdef SQLITE_MA
3040: 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f 0a 20 20 22  X_MMAP_SIZE_.  "
3050: 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5f 3d 22  MAX_MMAP_SIZE_="
3060: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
3070: 4c 49 54 45 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49  LITE_MAX_MMAP_SI
3080: 5a 45 5f 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ZE_),.#endif.#if
3090: 64 65 66 20 53 51 4c 49 54 45 5f 4d 41 58 5f 50  def SQLITE_MAX_P
30a0: 41 47 45 5f 43 4f 55 4e 54 0a 20 20 22 4d 41 58  AGE_COUNT.  "MAX
30b0: 5f 50 41 47 45 5f 43 4f 55 4e 54 3d 22 20 43 54  _PAGE_COUNT=" CT
30c0: 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54  IMEOPT_VAL(SQLIT
30d0: 45 5f 4d 41 58 5f 50 41 47 45 5f 43 4f 55 4e 54  E_MAX_PAGE_COUNT
30e0: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
30f0: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 50 41 47 45   SQLITE_MAX_PAGE
3100: 5f 53 49 5a 45 0a 20 20 22 4d 41 58 5f 50 41 47  _SIZE.  "MAX_PAG
3110: 45 5f 53 49 5a 45 3d 22 20 43 54 49 4d 45 4f 50  E_SIZE=" CTIMEOP
3120: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3130: 5f 50 41 47 45 5f 53 49 5a 45 29 2c 0a 23 65 6e  _PAGE_SIZE),.#en
3140: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
3150: 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54  E_MAX_SCHEMA_RET
3160: 52 59 0a 20 20 22 4d 41 58 5f 53 43 48 45 4d 41  RY.  "MAX_SCHEMA
3170: 5f 52 45 54 52 59 3d 22 20 43 54 49 4d 45 4f 50  _RETRY=" CTIMEOP
3180: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58  T_VAL(SQLITE_MAX
3190: 5f 53 43 48 45 4d 41 5f 52 45 54 52 59 29 2c 0a  _SCHEMA_RETRY),.
31a0: 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51  #endif.#ifdef SQ
31b0: 4c 49 54 45 5f 4d 41 58 5f 53 51 4c 5f 4c 45 4e  LITE_MAX_SQL_LEN
31c0: 47 54 48 0a 20 20 22 4d 41 58 5f 53 51 4c 5f 4c  GTH.  "MAX_SQL_L
31d0: 45 4e 47 54 48 3d 22 20 43 54 49 4d 45 4f 50 54  ENGTH=" CTIMEOPT
31e0: 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f  _VAL(SQLITE_MAX_
31f0: 53 51 4c 5f 4c 45 4e 47 54 48 29 2c 0a 23 65 6e  SQL_LENGTH),.#en
3200: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
3210: 45 5f 4d 41 58 5f 54 52 49 47 47 45 52 5f 44 45  E_MAX_TRIGGER_DE
3220: 50 54 48 0a 20 20 22 4d 41 58 5f 54 52 49 47 47  PTH.  "MAX_TRIGG
3230: 45 52 5f 44 45 50 54 48 3d 22 20 43 54 49 4d 45  ER_DEPTH=" CTIME
3240: 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 4d  OPT_VAL(SQLITE_M
3250: 41 58 5f 54 52 49 47 47 45 52 5f 44 45 50 54 48  AX_TRIGGER_DEPTH
3260: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
3270: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52 49   SQLITE_MAX_VARI
3280: 41 42 4c 45 5f 4e 55 4d 42 45 52 0a 20 20 22 4d  ABLE_NUMBER.  "M
3290: 41 58 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  AX_VARIABLE_NUMB
32a0: 45 52 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  ER=" CTIMEOPT_VA
32b0: 4c 28 53 51 4c 49 54 45 5f 4d 41 58 5f 56 41 52  L(SQLITE_MAX_VAR
32c0: 49 41 42 4c 45 5f 4e 55 4d 42 45 52 29 2c 0a 23  IABLE_NUMBER),.#
32d0: 65 6e 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c  endif.#ifdef SQL
32e0: 49 54 45 5f 4d 41 58 5f 56 44 42 45 5f 4f 50 0a  ITE_MAX_VDBE_OP.
32f0: 20 20 22 4d 41 58 5f 56 44 42 45 5f 4f 50 3d 22    "MAX_VDBE_OP="
3300: 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 53 51   CTIMEOPT_VAL(SQ
3310: 4c 49 54 45 5f 4d 41 58 5f 56 44 42 45 5f 4f 50  LITE_MAX_VDBE_OP
3320: 29 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ),.#endif.#ifdef
3330: 20 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b   SQLITE_MAX_WORK
3340: 45 52 5f 54 48 52 45 41 44 53 0a 20 20 22 4d 41  ER_THREADS.  "MA
3350: 58 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  X_WORKER_THREADS
3360: 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28  =" CTIMEOPT_VAL(
3370: 53 51 4c 49 54 45 5f 4d 41 58 5f 57 4f 52 4b 45  SQLITE_MAX_WORKE
3380: 52 5f 54 48 52 45 41 44 53 29 2c 0a 23 65 6e 64  R_THREADS),.#end
3390: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 45  if.#if SQLITE_ME
33a0: 4d 44 45 42 55 47 0a 20 20 22 4d 45 4d 44 45 42  MDEBUG.  "MEMDEB
33b0: 55 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  UG",.#endif.#if 
33c0: 53 51 4c 49 54 45 5f 4d 49 58 45 44 5f 45 4e 44  SQLITE_MIXED_END
33d0: 49 41 4e 5f 36 34 42 49 54 5f 46 4c 4f 41 54 0a  IAN_64BIT_FLOAT.
33e0: 20 20 22 4d 49 58 45 44 5f 45 4e 44 49 41 4e 5f    "MIXED_ENDIAN_
33f0: 36 34 42 49 54 5f 46 4c 4f 41 54 22 2c 0a 23 65  64BIT_FLOAT",.#e
3400: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3410: 4d 4d 41 50 5f 52 45 41 44 57 52 49 54 45 0a 20  MMAP_READWRITE. 
3420: 20 22 4d 4d 41 50 5f 52 45 41 44 57 52 49 54 45   "MMAP_READWRITE
3430: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3440: 4c 49 54 45 5f 4d 55 54 45 58 5f 4e 4f 4f 50 0a  LITE_MUTEX_NOOP.
3450: 20 20 22 4d 55 54 45 58 5f 4e 4f 4f 50 22 2c 0a    "MUTEX_NOOP",.
3460: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3470: 45 5f 4d 55 54 45 58 5f 4e 52 45 46 0a 20 20 22  E_MUTEX_NREF.  "
3480: 4d 55 54 45 58 5f 4e 52 45 46 22 2c 0a 23 65 6e  MUTEX_NREF",.#en
3490: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d  dif.#if SQLITE_M
34a0: 55 54 45 58 5f 4f 4d 49 54 0a 20 20 22 4d 55 54  UTEX_OMIT.  "MUT
34b0: 45 58 5f 4f 4d 49 54 22 2c 0a 23 65 6e 64 69 66  EX_OMIT",.#endif
34c0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4d 55 54 45  .#if SQLITE_MUTE
34d0: 58 5f 50 54 48 52 45 41 44 53 0a 20 20 22 4d 55  X_PTHREADS.  "MU
34e0: 54 45 58 5f 50 54 48 52 45 41 44 53 22 2c 0a 23  TEX_PTHREADS",.#
34f0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3500: 5f 4d 55 54 45 58 5f 57 33 32 0a 20 20 22 4d 55  _MUTEX_W32.  "MU
3510: 54 45 58 5f 57 33 32 22 2c 0a 23 65 6e 64 69 66  TEX_W32",.#endif
3520: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4e 45 45 44  .#if SQLITE_NEED
3530: 5f 45 52 52 5f 4e 41 4d 45 0a 20 20 22 4e 45 45  _ERR_NAME.  "NEE
3540: 44 5f 45 52 52 5f 4e 41 4d 45 22 2c 0a 23 65 6e  D_ERR_NAME",.#en
3550: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4e  dif.#if SQLITE_N
3560: 4f 49 4e 4c 49 4e 45 0a 20 20 22 4e 4f 49 4e 4c  OINLINE.  "NOINL
3570: 49 4e 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  INE",.#endif.#if
3580: 20 53 51 4c 49 54 45 5f 4e 4f 5f 53 59 4e 43 0a   SQLITE_NO_SYNC.
3590: 20 20 22 4e 4f 5f 53 59 4e 43 22 2c 0a 23 65 6e    "NO_SYNC",.#en
35a0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
35b0: 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c 45 0a 20  MIT_ALTERTABLE. 
35c0: 20 22 4f 4d 49 54 5f 41 4c 54 45 52 54 41 42 4c   "OMIT_ALTERTABL
35d0: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
35e0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 4e 41 4c 59  QLITE_OMIT_ANALY
35f0: 5a 45 0a 20 20 22 4f 4d 49 54 5f 41 4e 41 4c 59  ZE.  "OMIT_ANALY
3600: 5a 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  ZE",.#endif.#if 
3610: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 54 54 41  SQLITE_OMIT_ATTA
3620: 43 48 0a 20 20 22 4f 4d 49 54 5f 41 54 54 41 43  CH.  "OMIT_ATTAC
3630: 48 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  H",.#endif.#if S
3640: 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54 48 4f  QLITE_OMIT_AUTHO
3650: 52 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54  RIZATION.  "OMIT
3660: 5f 41 55 54 48 4f 52 49 5a 41 54 49 4f 4e 22 2c  _AUTHORIZATION",
3670: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3680: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 49 4e 43 52  TE_OMIT_AUTOINCR
3690: 45 4d 45 4e 54 0a 20 20 22 4f 4d 49 54 5f 41 55  EMENT.  "OMIT_AU
36a0: 54 4f 49 4e 43 52 45 4d 45 4e 54 22 2c 0a 23 65  TOINCREMENT",.#e
36b0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
36c0: 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 0a 20 20  OMIT_AUTOINIT.  
36d0: 22 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 22 2c  "OMIT_AUTOINIT",
36e0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
36f0: 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49  TE_OMIT_AUTOMATI
3700: 43 5f 49 4e 44 45 58 0a 20 20 22 4f 4d 49 54 5f  C_INDEX.  "OMIT_
3710: 41 55 54 4f 4d 41 54 49 43 5f 49 4e 44 45 58 22  AUTOMATIC_INDEX"
3720: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3730: 49 54 45 5f 4f 4d 49 54 5f 41 55 54 4f 52 45 53  ITE_OMIT_AUTORES
3740: 45 54 0a 20 20 22 4f 4d 49 54 5f 41 55 54 4f 52  ET.  "OMIT_AUTOR
3750: 45 53 45 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  ESET",.#endif.#i
3760: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55  f SQLITE_OMIT_AU
3770: 54 4f 56 41 43 55 55 4d 0a 20 20 22 4f 4d 49 54  TOVACUUM.  "OMIT
3780: 5f 41 55 54 4f 56 41 43 55 55 4d 22 2c 0a 23 65  _AUTOVACUUM",.#e
3790: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
37a0: 4f 4d 49 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54  OMIT_BETWEEN_OPT
37b0: 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49  IMIZATION.  "OMI
37c0: 54 5f 42 45 54 57 45 45 4e 5f 4f 50 54 49 4d 49  T_BETWEEN_OPTIMI
37d0: 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69 66 0a  ZATION",.#endif.
37e0: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
37f0: 42 4c 4f 42 5f 4c 49 54 45 52 41 4c 0a 20 20 22  BLOB_LITERAL.  "
3800: 4f 4d 49 54 5f 42 4c 4f 42 5f 4c 49 54 45 52 41  OMIT_BLOB_LITERA
3810: 4c 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  L",.#endif.#if S
3820: 51 4c 49 54 45 5f 4f 4d 49 54 5f 42 54 52 45 45  QLITE_OMIT_BTREE
3830: 43 4f 55 4e 54 0a 20 20 22 4f 4d 49 54 5f 42 54  COUNT.  "OMIT_BT
3840: 52 45 45 43 4f 55 4e 54 22 2c 0a 23 65 6e 64 69  REECOUNT",.#endi
3850: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3860: 54 5f 43 41 53 54 0a 20 20 22 4f 4d 49 54 5f 43  T_CAST.  "OMIT_C
3870: 41 53 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  AST",.#endif.#if
3880: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 48 45   SQLITE_OMIT_CHE
3890: 43 4b 0a 20 20 22 4f 4d 49 54 5f 43 48 45 43 4b  CK.  "OMIT_CHECK
38a0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
38b0: 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 4c 45  LITE_OMIT_COMPLE
38c0: 54 45 0a 20 20 22 4f 4d 49 54 5f 43 4f 4d 50 4c  TE.  "OMIT_COMPL
38d0: 45 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ETE",.#endif.#if
38e0: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d   SQLITE_OMIT_COM
38f0: 50 4f 55 4e 44 5f 53 45 4c 45 43 54 0a 20 20 22  POUND_SELECT.  "
3900: 4f 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  OMIT_COMPOUND_SE
3910: 4c 45 43 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69  LECT",.#endif.#i
3920: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f  f SQLITE_OMIT_CO
3930: 4e 46 4c 49 43 54 5f 43 4c 41 55 53 45 0a 20 20  NFLICT_CLAUSE.  
3940: 22 4f 4d 49 54 5f 43 4f 4e 46 4c 49 43 54 5f 43  "OMIT_CONFLICT_C
3950: 4c 41 55 53 45 22 2c 0a 23 65 6e 64 69 66 0a 23  LAUSE",.#endif.#
3960: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 43  if SQLITE_OMIT_C
3970: 54 45 0a 20 20 22 4f 4d 49 54 5f 43 54 45 22 2c  TE.  "OMIT_CTE",
3980: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3990: 54 45 5f 4f 4d 49 54 5f 44 41 54 45 54 49 4d 45  TE_OMIT_DATETIME
39a0: 5f 46 55 4e 43 53 0a 20 20 22 4f 4d 49 54 5f 44  _FUNCS.  "OMIT_D
39b0: 41 54 45 54 49 4d 45 5f 46 55 4e 43 53 22 2c 0a  ATETIME_FUNCS",.
39c0: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
39d0: 45 5f 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45 0a  E_OMIT_DECLTYPE.
39e0: 20 20 22 4f 4d 49 54 5f 44 45 43 4c 54 59 50 45    "OMIT_DECLTYPE
39f0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3a00: 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43  LITE_OMIT_DEPREC
3a10: 41 54 45 44 0a 20 20 22 4f 4d 49 54 5f 44 45 50  ATED.  "OMIT_DEP
3a20: 52 45 43 41 54 45 44 22 2c 0a 23 65 6e 64 69 66  RECATED",.#endif
3a30: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3a40: 5f 44 49 53 4b 49 4f 0a 20 20 22 4f 4d 49 54 5f  _DISKIO.  "OMIT_
3a50: 44 49 53 4b 49 4f 22 2c 0a 23 65 6e 64 69 66 0a  DISKIO",.#endif.
3a60: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3a70: 45 58 50 4c 41 49 4e 0a 20 20 22 4f 4d 49 54 5f  EXPLAIN.  "OMIT_
3a80: 45 58 50 4c 41 49 4e 22 2c 0a 23 65 6e 64 69 66  EXPLAIN",.#endif
3a90: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3aa0: 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 0a 20 20  _FLAG_PRAGMAS.  
3ab0: 22 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d  "OMIT_FLAG_PRAGM
3ac0: 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  AS",.#endif.#if 
3ad0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41  SQLITE_OMIT_FLOA
3ae0: 54 49 4e 47 5f 50 4f 49 4e 54 0a 20 20 22 4f 4d  TING_POINT.  "OM
3af0: 49 54 5f 46 4c 4f 41 54 49 4e 47 5f 50 4f 49 4e  IT_FLOATING_POIN
3b00: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
3b10: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49  QLITE_OMIT_FOREI
3b20: 47 4e 5f 4b 45 59 0a 20 20 22 4f 4d 49 54 5f 46  GN_KEY.  "OMIT_F
3b30: 4f 52 45 49 47 4e 5f 4b 45 59 22 2c 0a 23 65 6e  OREIGN_KEY",.#en
3b40: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3b50: 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 0a 20 20  MIT_GET_TABLE.  
3b60: 22 4f 4d 49 54 5f 47 45 54 5f 54 41 42 4c 45 22  "OMIT_GET_TABLE"
3b70: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
3b80: 49 54 45 5f 4f 4d 49 54 5f 48 45 58 5f 49 4e 54  ITE_OMIT_HEX_INT
3b90: 45 47 45 52 0a 20 20 22 4f 4d 49 54 5f 48 45 58  EGER.  "OMIT_HEX
3ba0: 5f 49 4e 54 45 47 45 52 22 2c 0a 23 65 6e 64 69  _INTEGER",.#endi
3bb0: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49  f.#if SQLITE_OMI
3bc0: 54 5f 49 4e 43 52 42 4c 4f 42 0a 20 20 22 4f 4d  T_INCRBLOB.  "OM
3bd0: 49 54 5f 49 4e 43 52 42 4c 4f 42 22 2c 0a 23 65  IT_INCRBLOB",.#e
3be0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3bf0: 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43  OMIT_INTEGRITY_C
3c00: 48 45 43 4b 0a 20 20 22 4f 4d 49 54 5f 49 4e 54  HECK.  "OMIT_INT
3c10: 45 47 52 49 54 59 5f 43 48 45 43 4b 22 2c 0a 23  EGRITY_CHECK",.#
3c20: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3c30: 5f 4f 4d 49 54 5f 4c 49 4b 45 5f 4f 50 54 49 4d  _OMIT_LIKE_OPTIM
3c40: 49 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f  IZATION.  "OMIT_
3c50: 4c 49 4b 45 5f 4f 50 54 49 4d 49 5a 41 54 49 4f  LIKE_OPTIMIZATIO
3c60: 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  N",.#endif.#if S
3c70: 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 41 44 5f  QLITE_OMIT_LOAD_
3c80: 45 58 54 45 4e 53 49 4f 4e 0a 20 20 22 4f 4d 49  EXTENSION.  "OMI
3c90: 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e  T_LOAD_EXTENSION
3ca0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
3cb0: 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f 43 41 4c 54  LITE_OMIT_LOCALT
3cc0: 49 4d 45 0a 20 20 22 4f 4d 49 54 5f 4c 4f 43 41  IME.  "OMIT_LOCA
3cd0: 4c 54 49 4d 45 22 2c 0a 23 65 6e 64 69 66 0a 23  LTIME",.#endif.#
3ce0: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c  if SQLITE_OMIT_L
3cf0: 4f 4f 4b 41 53 49 44 45 0a 20 20 22 4f 4d 49 54  OOKASIDE.  "OMIT
3d00: 5f 4c 4f 4f 4b 41 53 49 44 45 22 2c 0a 23 65 6e  _LOOKASIDE",.#en
3d10: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
3d20: 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 0a 20 20 22  MIT_MEMORYDB.  "
3d30: 4f 4d 49 54 5f 4d 45 4d 4f 52 59 44 42 22 2c 0a  OMIT_MEMORYDB",.
3d40: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
3d50: 45 5f 4f 4d 49 54 5f 4f 52 5f 4f 50 54 49 4d 49  E_OMIT_OR_OPTIMI
3d60: 5a 41 54 49 4f 4e 0a 20 20 22 4f 4d 49 54 5f 4f  ZATION.  "OMIT_O
3d70: 52 5f 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 22 2c  R_OPTIMIZATION",
3d80: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
3d90: 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52  TE_OMIT_PAGER_PR
3da0: 41 47 4d 41 53 0a 20 20 22 4f 4d 49 54 5f 50 41  AGMAS.  "OMIT_PA
3db0: 47 45 52 5f 50 52 41 47 4d 41 53 22 2c 0a 23 65  GER_PRAGMAS",.#e
3dc0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
3dd0: 4f 4d 49 54 5f 50 41 52 53 45 52 5f 54 52 41 43  OMIT_PARSER_TRAC
3de0: 45 0a 20 20 22 4f 4d 49 54 5f 50 41 52 53 45 52  E.  "OMIT_PARSER
3df0: 5f 54 52 41 43 45 22 2c 0a 23 65 6e 64 69 66 0a  _TRACE",.#endif.
3e00: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
3e10: 50 4f 50 45 4e 0a 20 20 22 4f 4d 49 54 5f 50 4f  POPEN.  "OMIT_PO
3e20: 50 45 4e 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  PEN",.#endif.#if
3e30: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 41   SQLITE_OMIT_PRA
3e40: 47 4d 41 0a 20 20 22 4f 4d 49 54 5f 50 52 41 47  GMA.  "OMIT_PRAG
3e50: 4d 41 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  MA",.#endif.#if 
3e60: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 52 4f 47  SQLITE_OMIT_PROG
3e70: 52 45 53 53 5f 43 41 4c 4c 42 41 43 4b 0a 20 20  RESS_CALLBACK.  
3e80: 22 4f 4d 49 54 5f 50 52 4f 47 52 45 53 53 5f 43  "OMIT_PROGRESS_C
3e90: 41 4c 4c 42 41 43 4b 22 2c 0a 23 65 6e 64 69 66  ALLBACK",.#endif
3ea0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
3eb0: 5f 51 55 49 43 4b 42 41 4c 41 4e 43 45 0a 20 20  _QUICKBALANCE.  
3ec0: 22 4f 4d 49 54 5f 51 55 49 43 4b 42 41 4c 41 4e  "OMIT_QUICKBALAN
3ed0: 43 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  CE",.#endif.#if 
3ee0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 52 45 49 4e  SQLITE_OMIT_REIN
3ef0: 44 45 58 0a 20 20 22 4f 4d 49 54 5f 52 45 49 4e  DEX.  "OMIT_REIN
3f00: 44 45 58 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  DEX",.#endif.#if
3f10: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48   SQLITE_OMIT_SCH
3f20: 45 4d 41 5f 50 52 41 47 4d 41 53 0a 20 20 22 4f  EMA_PRAGMAS.  "O
3f30: 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d  MIT_SCHEMA_PRAGM
3f40: 41 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20  AS",.#endif.#if 
3f50: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
3f60: 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d  MA_VERSION_PRAGM
3f70: 41 53 0a 20 20 22 4f 4d 49 54 5f 53 43 48 45 4d  AS.  "OMIT_SCHEM
3f80: 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41  A_VERSION_PRAGMA
3f90: 53 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  S",.#endif.#if S
3fa0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 48 41 52 45  QLITE_OMIT_SHARE
3fb0: 44 5f 43 41 43 48 45 0a 20 20 22 4f 4d 49 54 5f  D_CACHE.  "OMIT_
3fc0: 53 48 41 52 45 44 5f 43 41 43 48 45 22 2c 0a 23  SHARED_CACHE",.#
3fd0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
3fe0: 5f 4f 4d 49 54 5f 53 48 55 54 44 4f 57 4e 5f 44  _OMIT_SHUTDOWN_D
3ff0: 49 52 45 43 54 4f 52 49 45 53 0a 20 20 22 4f 4d  IRECTORIES.  "OM
4000: 49 54 5f 53 48 55 54 44 4f 57 4e 5f 44 49 52 45  IT_SHUTDOWN_DIRE
4010: 43 54 4f 52 49 45 53 22 2c 0a 23 65 6e 64 69 66  CTORIES",.#endif
4020: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
4030: 5f 53 55 42 51 55 45 52 59 0a 20 20 22 4f 4d 49  _SUBQUERY.  "OMI
4040: 54 5f 53 55 42 51 55 45 52 59 22 2c 0a 23 65 6e  T_SUBQUERY",.#en
4050: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
4060: 4d 49 54 5f 54 43 4c 5f 56 41 52 49 41 42 4c 45  MIT_TCL_VARIABLE
4070: 0a 20 20 22 4f 4d 49 54 5f 54 43 4c 5f 56 41 52  .  "OMIT_TCL_VAR
4080: 49 41 42 4c 45 22 2c 0a 23 65 6e 64 69 66 0a 23  IABLE",.#endif.#
4090: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  if SQLITE_OMIT_T
40a0: 45 4d 50 44 42 0a 20 20 22 4f 4d 49 54 5f 54 45  EMPDB.  "OMIT_TE
40b0: 4d 50 44 42 22 2c 0a 23 65 6e 64 69 66 0a 23 69  MPDB",.#endif.#i
40c0: 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 45  f SQLITE_OMIT_TE
40d0: 53 54 5f 43 4f 4e 54 52 4f 4c 0a 20 20 22 4f 4d  ST_CONTROL.  "OM
40e0: 49 54 5f 54 45 53 54 5f 43 4f 4e 54 52 4f 4c 22  IT_TEST_CONTROL"
40f0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
4100: 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43 45 0a 20  ITE_OMIT_TRACE. 
4110: 20 22 4f 4d 49 54 5f 54 52 41 43 45 22 2c 0a 23   "OMIT_TRACE",.#
4120: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4130: 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 0a 20 20  _OMIT_TRIGGER.  
4140: 22 4f 4d 49 54 5f 54 52 49 47 47 45 52 22 2c 0a  "OMIT_TRIGGER",.
4150: 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54  #endif.#if SQLIT
4160: 45 5f 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f  E_OMIT_TRUNCATE_
4170: 4f 50 54 49 4d 49 5a 41 54 49 4f 4e 0a 20 20 22  OPTIMIZATION.  "
4180: 4f 4d 49 54 5f 54 52 55 4e 43 41 54 45 5f 4f 50  OMIT_TRUNCATE_OP
4190: 54 49 4d 49 5a 41 54 49 4f 4e 22 2c 0a 23 65 6e  TIMIZATION",.#en
41a0: 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f  dif.#if SQLITE_O
41b0: 4d 49 54 5f 55 54 46 31 36 0a 20 20 22 4f 4d 49  MIT_UTF16.  "OMI
41c0: 54 5f 55 54 46 31 36 22 2c 0a 23 65 6e 64 69 66  T_UTF16",.#endif
41d0: 0a 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54  .#if SQLITE_OMIT
41e0: 5f 56 41 43 55 55 4d 0a 20 20 22 4f 4d 49 54 5f  _VACUUM.  "OMIT_
41f0: 56 41 43 55 55 4d 22 2c 0a 23 65 6e 64 69 66 0a  VACUUM",.#endif.
4200: 23 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  #if SQLITE_OMIT_
4210: 56 49 45 57 0a 20 20 22 4f 4d 49 54 5f 56 49 45  VIEW.  "OMIT_VIE
4220: 57 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  W",.#endif.#if S
4230: 51 4c 49 54 45 5f 4f 4d 49 54 5f 56 49 52 54 55  QLITE_OMIT_VIRTU
4240: 41 4c 54 41 42 4c 45 0a 20 20 22 4f 4d 49 54 5f  ALTABLE.  "OMIT_
4250: 56 49 52 54 55 41 4c 54 41 42 4c 45 22 2c 0a 23  VIRTUALTABLE",.#
4260: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4270: 5f 4f 4d 49 54 5f 57 41 4c 0a 20 20 22 4f 4d 49  _OMIT_WAL.  "OMI
4280: 54 5f 57 41 4c 22 2c 0a 23 65 6e 64 69 66 0a 23  T_WAL",.#endif.#
4290: 69 66 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  if SQLITE_OMIT_W
42a0: 53 44 0a 20 20 22 4f 4d 49 54 5f 57 53 44 22 2c  SD.  "OMIT_WSD",
42b0: 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49  .#endif.#if SQLI
42c0: 54 45 5f 4f 4d 49 54 5f 58 46 45 52 5f 4f 50 54  TE_OMIT_XFER_OPT
42d0: 0a 20 20 22 4f 4d 49 54 5f 58 46 45 52 5f 4f 50  .  "OMIT_XFER_OP
42e0: 54 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  T",.#endif.#if S
42f0: 51 4c 49 54 45 5f 50 43 41 43 48 45 5f 53 45 50  QLITE_PCACHE_SEP
4300: 41 52 41 54 45 5f 48 45 41 44 45 52 0a 20 20 22  ARATE_HEADER.  "
4310: 50 43 41 43 48 45 5f 53 45 50 41 52 41 54 45 5f  PCACHE_SEPARATE_
4320: 48 45 41 44 45 52 22 2c 0a 23 65 6e 64 69 66 0a  HEADER",.#endif.
4330: 23 69 66 20 53 51 4c 49 54 45 5f 50 45 52 46 4f  #if SQLITE_PERFO
4340: 52 4d 41 4e 43 45 5f 54 52 41 43 45 0a 20 20 22  RMANCE_TRACE.  "
4350: 50 45 52 46 4f 52 4d 41 4e 43 45 5f 54 52 41 43  PERFORMANCE_TRAC
4360: 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  E",.#endif.#if S
4370: 51 4c 49 54 45 5f 50 4f 57 45 52 53 41 46 45 5f  QLITE_POWERSAFE_
4380: 4f 56 45 52 57 52 49 54 45 0a 20 20 22 50 4f 57  OVERWRITE.  "POW
4390: 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
43a0: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
43b0: 4c 49 54 45 5f 50 52 45 46 45 52 5f 50 52 4f 58  LITE_PREFER_PROX
43c0: 59 5f 4c 4f 43 4b 49 4e 47 0a 20 20 22 50 52 45  Y_LOCKING.  "PRE
43d0: 46 45 52 5f 50 52 4f 58 59 5f 4c 4f 43 4b 49 4e  FER_PROXY_LOCKIN
43e0: 47 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53  G",.#endif.#if S
43f0: 51 4c 49 54 45 5f 50 52 4f 58 59 5f 44 45 42 55  QLITE_PROXY_DEBU
4400: 47 0a 20 20 22 50 52 4f 58 59 5f 44 45 42 55 47  G.  "PROXY_DEBUG
4410: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
4420: 4c 49 54 45 5f 52 45 56 45 52 53 45 5f 55 4e 4f  LITE_REVERSE_UNO
4430: 52 44 45 52 45 44 5f 53 45 4c 45 43 54 53 0a 20  RDERED_SELECTS. 
4440: 20 22 52 45 56 45 52 53 45 5f 55 4e 4f 52 44 45   "REVERSE_UNORDE
4450: 52 45 44 5f 53 45 4c 45 43 54 53 22 2c 0a 23 65  RED_SELECTS",.#e
4460: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4470: 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59 0a 20  RTREE_INT_ONLY. 
4480: 20 22 52 54 52 45 45 5f 49 4e 54 5f 4f 4e 4c 59   "RTREE_INT_ONLY
4490: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51  ",.#endif.#if SQ
44a0: 4c 49 54 45 5f 53 45 43 55 52 45 5f 44 45 4c 45  LITE_SECURE_DELE
44b0: 54 45 0a 20 20 22 53 45 43 55 52 45 5f 44 45 4c  TE.  "SECURE_DEL
44c0: 45 54 45 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  ETE",.#endif.#if
44d0: 20 53 51 4c 49 54 45 5f 53 4d 41 4c 4c 5f 53 54   SQLITE_SMALL_ST
44e0: 41 43 4b 0a 20 20 22 53 4d 41 4c 4c 5f 53 54 41  ACK.  "SMALL_STA
44f0: 43 4b 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64  CK",.#endif.#ifd
4500: 65 66 20 53 51 4c 49 54 45 5f 53 4f 52 54 45 52  ef SQLITE_SORTER
4510: 5f 50 4d 41 53 5a 0a 20 20 22 53 4f 52 54 45 52  _PMASZ.  "SORTER
4520: 5f 50 4d 41 53 5a 3d 22 20 43 54 49 4d 45 4f 50  _PMASZ=" CTIMEOP
4530: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 53 4f 52  T_VAL(SQLITE_SOR
4540: 54 45 52 5f 50 4d 41 53 5a 29 2c 0a 23 65 6e 64  TER_PMASZ),.#end
4550: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 4f  if.#if SQLITE_SO
4560: 55 4e 44 45 58 0a 20 20 22 53 4f 55 4e 44 45 58  UNDEX.  "SOUNDEX
4570: 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66  ",.#endif.#ifdef
4580: 20 53 51 4c 49 54 45 5f 53 54 41 54 34 5f 53 41   SQLITE_STAT4_SA
4590: 4d 50 4c 45 53 0a 20 20 22 53 54 41 54 34 5f 53  MPLES.  "STAT4_S
45a0: 41 4d 50 4c 45 53 3d 22 20 43 54 49 4d 45 4f 50  AMPLES=" CTIMEOP
45b0: 54 5f 56 41 4c 28 53 51 4c 49 54 45 5f 53 54 41  T_VAL(SQLITE_STA
45c0: 54 34 5f 53 41 4d 50 4c 45 53 29 2c 0a 23 65 6e  T4_SAMPLES),.#en
45d0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
45e0: 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  E_STMTJRNL_SPILL
45f0: 0a 20 20 22 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  .  "STMTJRNL_SPI
4600: 4c 4c 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  LL=" CTIMEOPT_VA
4610: 4c 28 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e  L(SQLITE_STMTJRN
4620: 4c 5f 53 50 49 4c 4c 29 2c 0a 23 65 6e 64 69 66  L_SPILL),.#endif
4630: 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 55 42 53  .#if SQLITE_SUBS
4640: 54 52 5f 43 4f 4d 50 41 54 49 42 49 4c 49 54 59  TR_COMPATIBILITY
4650: 0a 20 20 22 53 55 42 53 54 52 5f 43 4f 4d 50 41  .  "SUBSTR_COMPA
4660: 54 49 42 49 4c 49 54 59 22 2c 0a 23 65 6e 64 69  TIBILITY",.#endi
4670: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 53 59 53  f.#if SQLITE_SYS
4680: 54 45 4d 5f 4d 41 4c 4c 4f 43 0a 20 20 22 53 59  TEM_MALLOC.  "SY
4690: 53 54 45 4d 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65  STEM_MALLOC",.#e
46a0: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
46b0: 54 43 4c 0a 20 20 22 54 43 4c 22 2c 0a 23 65 6e  TCL.  "TCL",.#en
46c0: 64 69 66 0a 23 69 66 64 65 66 20 53 51 4c 49 54  dif.#ifdef SQLIT
46d0: 45 5f 54 45 4d 50 5f 53 54 4f 52 45 0a 20 20 22  E_TEMP_STORE.  "
46e0: 54 45 4d 50 5f 53 54 4f 52 45 3d 22 20 43 54 49  TEMP_STORE=" CTI
46f0: 4d 45 4f 50 54 5f 56 41 4c 28 53 51 4c 49 54 45  MEOPT_VAL(SQLITE
4700: 5f 54 45 4d 50 5f 53 54 4f 52 45 29 2c 0a 23 65  _TEMP_STORE),.#e
4710: 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f  ndif.#if SQLITE_
4720: 54 45 53 54 0a 20 20 22 54 45 53 54 22 2c 0a 23  TEST.  "TEST",.#
4730: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65  endif.#if define
4740: 64 28 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  d(SQLITE_THREADS
4750: 41 46 45 29 0a 20 20 22 54 48 52 45 41 44 53 41  AFE).  "THREADSA
4760: 46 45 3d 22 20 43 54 49 4d 45 4f 50 54 5f 56 41  FE=" CTIMEOPT_VA
4770: 4c 28 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  L(SQLITE_THREADS
4780: 41 46 45 29 2c 0a 23 65 6c 69 66 20 64 65 66 69  AFE),.#elif defi
4790: 6e 65 64 28 54 48 52 45 41 44 53 41 46 45 29 0a  ned(THREADSAFE).
47a0: 20 20 22 54 48 52 45 41 44 53 41 46 45 3d 22 20    "THREADSAFE=" 
47b0: 43 54 49 4d 45 4f 50 54 5f 56 41 4c 28 54 48 52  CTIMEOPT_VAL(THR
47c0: 45 41 44 53 41 46 45 29 2c 0a 23 65 6c 73 65 0a  EADSAFE),.#else.
47d0: 20 20 22 54 48 52 45 41 44 53 41 46 45 3d 31 22    "THREADSAFE=1"
47e0: 2c 0a 23 65 6e 64 69 66 0a 23 69 66 20 53 51 4c  ,.#endif.#if SQL
47f0: 49 54 45 5f 55 4e 4c 49 4e 4b 5f 41 46 54 45 52  ITE_UNLINK_AFTER
4800: 5f 43 4c 4f 53 45 0a 20 20 22 55 4e 4c 49 4e 4b  _CLOSE.  "UNLINK
4810: 5f 41 46 54 45 52 5f 43 4c 4f 53 45 22 2c 0a 23  _AFTER_CLOSE",.#
4820: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4830: 5f 55 4e 54 45 53 54 41 42 4c 45 0a 20 20 22 55  _UNTESTABLE.  "U
4840: 4e 54 45 53 54 41 42 4c 45 22 2c 0a 23 65 6e 64  NTESTABLE",.#end
4850: 69 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 53  if.#if SQLITE_US
4860: 45 52 5f 41 55 54 48 45 4e 54 49 43 41 54 49 4f  ER_AUTHENTICATIO
4870: 4e 0a 20 20 22 55 53 45 52 5f 41 55 54 48 45 4e  N.  "USER_AUTHEN
4880: 54 49 43 41 54 49 4f 4e 22 2c 0a 23 65 6e 64 69  TICATION",.#endi
4890: 66 0a 23 69 66 20 53 51 4c 49 54 45 5f 55 53 45  f.#if SQLITE_USE
48a0: 5f 41 4c 4c 4f 43 41 0a 20 20 22 55 53 45 5f 41  _ALLOCA.  "USE_A
48b0: 4c 4c 4f 43 41 22 2c 0a 23 65 6e 64 69 66 0a 23  LLOCA",.#endif.#
48c0: 69 66 20 53 51 4c 49 54 45 5f 55 53 45 5f 46 43  if SQLITE_USE_FC
48d0: 4e 54 4c 5f 54 52 41 43 45 0a 20 20 22 55 53 45  NTL_TRACE.  "USE
48e0: 5f 46 43 4e 54 4c 5f 54 52 41 43 45 22 2c 0a 23  _FCNTL_TRACE",.#
48f0: 65 6e 64 69 66 0a 23 69 66 20 53 51 4c 49 54 45  endif.#if SQLITE
4900: 5f 55 53 45 5f 55 52 49 0a 20 20 22 55 53 45 5f  _USE_URI.  "USE_
4910: 55 52 49 22 2c 0a 23 65 6e 64 69 66 0a 23 69 66  URI",.#endif.#if
4920: 20 53 51 4c 49 54 45 5f 56 44 42 45 5f 43 4f 56   SQLITE_VDBE_COV
4930: 45 52 41 47 45 0a 20 20 22 56 44 42 45 5f 43 4f  ERAGE.  "VDBE_CO
4940: 56 45 52 41 47 45 22 2c 0a 23 65 6e 64 69 66 0a  VERAGE",.#endif.
4950: 23 69 66 20 53 51 4c 49 54 45 5f 57 49 4e 33 32  #if SQLITE_WIN32
4960: 5f 4d 41 4c 4c 4f 43 0a 20 20 22 57 49 4e 33 32  _MALLOC.  "WIN32
4970: 5f 4d 41 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66  _MALLOC",.#endif
4980: 0a 23 69 66 20 53 51 4c 49 54 45 5f 5a 45 52 4f  .#if SQLITE_ZERO
4990: 5f 4d 41 4c 4c 4f 43 0a 20 20 22 5a 45 52 4f 5f  _MALLOC.  "ZERO_
49a0: 4d 41 4c 4c 4f 43 22 2c 0a 23 65 6e 64 69 66 0a  MALLOC",.#endif.
49b0: 2f 2a 20 0a 2a 2a 20 45 4e 44 20 43 4f 44 45 20  /* .** END CODE 
49c0: 47 45 4e 45 52 41 54 45 44 20 42 59 20 74 6f 6f  GENERATED BY too
49d0: 6c 2f 6d 6b 63 74 69 6d 65 2e 74 63 6c 20 0a 2a  l/mkctime.tcl .*
49e0: 2f 0a 7d 3b 0a 0a 53 51 4c 49 54 45 5f 50 52 49  /.};..SQLITE_PRI
49f0: 56 41 54 45 20 63 6f 6e 73 74 20 63 68 61 72 20  VATE const char 
4a00: 2a 2a 73 71 6c 69 74 65 33 43 6f 6d 70 69 6c 65  **sqlite3Compile
4a10: 4f 70 74 69 6f 6e 73 28 69 6e 74 20 2a 70 6e 4f  Options(int *pnO
4a20: 70 74 29 7b 0a 20 20 2a 70 6e 4f 70 74 20 3d 20  pt){.  *pnOpt = 
4a30: 73 69 7a 65 6f 66 28 73 71 6c 69 74 65 33 61 7a  sizeof(sqlite3az
4a40: 43 6f 6d 70 69 6c 65 4f 70 74 29 20 2f 20 73 69  CompileOpt) / si
4a50: 7a 65 6f 66 28 73 71 6c 69 74 65 33 61 7a 43 6f  zeof(sqlite3azCo
4a60: 6d 70 69 6c 65 4f 70 74 5b 30 5d 29 3b 0a 20 20  mpileOpt[0]);.  
4a70: 72 65 74 75 72 6e 20 28 63 6f 6e 73 74 20 63 68  return (const ch
4a80: 61 72 2a 2a 29 73 71 6c 69 74 65 33 61 7a 43 6f  ar**)sqlite3azCo
4a90: 6d 70 69 6c 65 4f 70 74 3b 0a 7d 0a 0a 23 65 6e  mpileOpt;.}..#en
4aa0: 64 69 66 20 2f 2a 20 53 51 4c 49 54 45 5f 4f 4d  dif /* SQLITE_OM
4ab0: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
4ac0: 5f 44 49 41 47 53 20 2a 2f 0a 0a 2f 2a 2a 2a 2a  _DIAGS */../****
4ad0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64 20 6f  ********** End o
4ae0: 66 20 63 74 69 6d 65 2e 63 20 2a 2a 2a 2a 2a 2a  f ctime.c ******
4af0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b10: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a  *********/./****
4b20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e  ********** Begin
4b30: 20 66 69 6c 65 20 73 71 6c 69 74 65 49 6e 74 2e   file sqliteInt.
4b40: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
4b50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4b60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a  *********/./*.**
4b70: 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72 20   2001 September 
4b80: 31 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74  15.**.** The aut
4b90: 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f  hor disclaims co
4ba0: 70 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20  pyright to this 
4bb0: 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e  source code.  In
4bc0: 20 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c   place of.** a l
4bd0: 65 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72  egal notice, her
4be0: 65 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a  e is a blessing:
4bf0: 0a 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  .**.**    May yo
4c00: 75 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f  u do good and no
4c10: 74 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61  t evil..**    Ma
4c20: 79 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69  y you find forgi
4c30: 76 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73  veness for yours
4c40: 65 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20  elf and forgive 
4c50: 6f 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61  others..**    Ma
4c60: 79 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65  y you share free
4c70: 6c 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67  ly, never taking
4c80: 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67   more than you g
4c90: 69 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a  ive..**.********
4ca0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cc0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4cd0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
4ce0: 2a 0a 2a 2a 20 49 6e 74 65 72 6e 61 6c 20 69 6e  *.** Internal in
4cf0: 74 65 72 66 61 63 65 20 64 65 66 69 6e 69 74 69  terface definiti
4d00: 6f 6e 73 20 66 6f 72 20 53 51 4c 69 74 65 2e 0a  ons for SQLite..
4d10: 2a 2a 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  **.*/.#ifndef SQ
4d20: 4c 49 54 45 49 4e 54 5f 48 0a 23 64 65 66 69 6e  LITEINT_H.#defin
4d30: 65 20 53 51 4c 49 54 45 49 4e 54 5f 48 0a 0a 2f  e SQLITEINT_H../
4d40: 2a 20 53 70 65 63 69 61 6c 20 43 6f 6d 6d 65 6e  * Special Commen
4d50: 74 73 3a 0a 2a 2a 0a 2a 2a 20 53 6f 6d 65 20 63  ts:.**.** Some c
4d60: 6f 6d 6d 65 6e 74 73 20 68 61 76 65 20 73 70 65  omments have spe
4d70: 63 69 61 6c 20 6d 65 61 6e 69 6e 67 20 74 6f 20  cial meaning to 
4d80: 74 68 65 20 74 6f 6f 6c 73 20 74 68 61 74 20 6d  the tools that m
4d90: 65 61 73 75 72 65 20 74 65 73 74 0a 2a 2a 20 63  easure test.** c
4da0: 6f 76 65 72 61 67 65 3a 0a 2a 2a 0a 2a 2a 20 20  overage:.**.**  
4db0: 20 20 4e 4f 5f 54 45 53 54 20 20 20 20 20 20 20    NO_TEST       
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20                - 
4dd0: 54 68 65 20 62 72 61 6e 63 68 65 73 20 6f 6e 20  The branches on 
4de0: 74 68 69 73 20 6c 69 6e 65 20 61 72 65 20 6e 6f  this line are no
4df0: 74 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  t.**            
4e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4e10: 20 20 20 20 20 20 6d 65 61 73 75 72 65 64 20 62        measured b
4e20: 79 20 62 72 61 6e 63 68 20 63 6f 76 65 72 61 67  y branch coverag
4e30: 65 2e 20 20 54 68 69 73 20 69 73 0a 2a 2a 20 20  e.  This is.**  
4e40: 20 20 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: 75 73 65 64 20 6f 6e 20 6c 69 6e 65 73 20 6f 66  used on lines of
4e70: 20 63 6f 64 65 20 74 68 61 74 20 61 63 74 75 61   code that actua
4e80: 6c 6c 79 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  lly.**          
4e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ea0: 20 20 20 20 20 20 20 20 69 6d 70 6c 65 6d 65 6e          implemen
4eb0: 74 20 70 61 72 74 73 20 6f 66 20 63 6f 76 65 72  t parts of cover
4ec0: 61 67 65 20 74 65 73 74 69 6e 67 2e 0a 2a 2a 0a  age testing..**.
4ed0: 2a 2a 20 20 20 20 4f 50 54 49 4d 49 5a 41 54 49  **    OPTIMIZATI
4ee0: 4f 4e 2d 49 46 2d 54 52 55 45 20 20 20 20 20 20  ON-IF-TRUE      
4ef0: 20 20 2d 20 54 68 69 73 20 62 72 61 6e 63 68 20    - This branch 
4f00: 69 73 20 61 6c 6c 6f 77 65 64 20 74 6f 20 61 6c  is allowed to al
4f10: 77 61 79 20 62 65 20 66 61 6c 73 65 0a 2a 2a 20  way be false.** 
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 20 20                  
4f40: 20 61 6e 64 20 74 68 65 20 63 6f 72 72 65 63 74   and the correct
4f50: 20 61 6e 73 77 65 72 20 69 73 20 73 74 69 6c 6c   answer is still
4f60: 20 6f 62 74 61 69 6e 65 64 2c 0a 2a 2a 20 20 20   obtained,.**   
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
4f90: 68 6f 75 67 68 20 70 65 72 68 61 70 73 20 6d 6f  hough perhaps mo
4fa0: 72 65 20 73 6c 6f 77 6c 79 2e 0a 2a 2a 0a 2a 2a  re slowly..**.**
4fb0: 20 20 20 20 4f 50 54 49 4d 49 5a 41 54 49 4f 4e      OPTIMIZATION
4fc0: 2d 49 46 2d 46 41 4c 53 45 20 20 20 20 20 20 20  -IF-FALSE       
4fd0: 2d 20 54 68 69 73 20 62 72 61 6e 63 68 20 69 73  - This branch is
4fe0: 20 61 6c 6c 6f 77 65 64 20 74 6f 20 61 6c 77 61   allowed to alwa
4ff0: 79 20 62 65 20 74 72 75 65 0a 2a 2a 20 20 20 20  y be true.**    
5000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e                an
5020: 64 20 74 68 65 20 63 6f 72 72 65 63 74 20 61 6e  d the correct an
5030: 73 77 65 72 20 69 73 20 73 74 69 6c 6c 20 6f 62  swer is still ob
5040: 74 61 69 6e 65 64 2c 0a 2a 2a 20 20 20 20 20 20  tained,.**      
5050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5060: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 6f 75              thou
5070: 67 68 20 70 65 72 68 61 70 73 20 6d 6f 72 65 20  gh perhaps more 
5080: 73 6c 6f 77 6c 79 2e 0a 2a 2a 0a 2a 2a 20 20 20  slowly..**.**   
5090: 20 50 52 45 56 45 4e 54 53 2d 48 41 52 4d 4c 45   PREVENTS-HARMLE
50a0: 53 53 2d 4f 56 45 52 52 45 41 44 20 20 2d 20 54  SS-OVERREAD  - T
50b0: 68 69 73 20 62 72 61 6e 63 68 20 70 72 65 76 65  his branch preve
50c0: 6e 74 73 20 61 20 62 75 66 66 65 72 20 6f 76 65  nts a buffer ove
50d0: 72 72 65 61 64 0a 2a 2a 20 20 20 20 20 20 20 20  rread.**        
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50f0: 20 20 20 20 20 20 20 20 20 20 74 68 61 74 20 77            that w
5100: 6f 75 6c 64 20 62 65 20 68 61 72 6d 6c 65 73 73  ould be harmless
5110: 20 61 6e 64 20 75 6e 64 65 74 65 63 74 61 62 6c   and undetectabl
5120: 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 20 20  e.**            
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5140: 20 20 20 20 20 20 69 66 20 69 74 20 64 69 64 20        if it did 
5150: 6f 63 63 75 72 2e 20 20 0a 2a 2a 0a 2a 2a 20 49  occur.  .**.** I
5160: 6e 20 61 6c 6c 20 63 61 73 65 73 2c 20 74 68 65  n all cases, the
5170: 20 73 70 65 63 69 61 6c 20 63 6f 6d 6d 65 6e 74   special comment
5180: 20 6d 75 73 74 20 62 65 20 65 6e 63 6c 6f 73 65   must be enclose
5190: 64 20 69 6e 20 74 68 65 20 75 73 75 61 6c 0a 2a  d in the usual.*
51a0: 2a 20 73 6c 61 73 68 2d 61 73 74 65 72 69 73 6b  * slash-asterisk
51b0: 2e 2e 2e 61 73 74 65 72 69 73 6b 2d 73 6c 61 73  ...asterisk-slas
51c0: 68 20 63 6f 6d 6d 65 6e 74 20 6d 61 72 6b 73 2c  h comment marks,
51d0: 20 77 69 74 68 20 6e 6f 20 73 70 61 63 65 73 20   with no spaces 
51e0: 62 65 74 77 65 65 6e 20 74 68 65 20 0a 2a 2a 20  between the .** 
51f0: 61 73 74 65 72 69 73 6b 73 20 61 6e 64 20 74 68  asterisks and th
5200: 65 20 63 6f 6d 6d 65 6e 74 20 74 65 78 74 2e 0a  e comment text..
5210: 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73  */../*.** Make s
5220: 75 72 65 20 74 68 65 20 54 63 6c 20 63 61 6c 6c  ure the Tcl call
5230: 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 6d  ing convention m
5240: 61 63 72 6f 20 69 73 20 64 65 66 69 6e 65 64 2e  acro is defined.
5250: 20 20 54 68 69 73 20 6d 61 63 72 6f 20 69 73 0a    This macro is.
5260: 2a 2a 20 6f 6e 6c 79 20 75 73 65 64 20 62 79 20  ** only used by 
5270: 74 65 73 74 20 63 6f 64 65 20 61 6e 64 20 54 63  test code and Tc
5280: 6c 20 69 6e 74 65 67 72 61 74 69 6f 6e 20 63 6f  l integration co
5290: 64 65 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53  de..*/.#ifndef S
52a0: 51 4c 49 54 45 5f 54 43 4c 41 50 49 0a 23 20 20  QLITE_TCLAPI.#  
52b0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 43  define SQLITE_TC
52c0: 4c 41 50 49 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a  LAPI.#endif../*.
52d0: 2a 2a 20 49 6e 63 6c 75 64 65 20 74 68 65 20 68  ** Include the h
52e0: 65 61 64 65 72 20 66 69 6c 65 20 75 73 65 64 20  eader file used 
52f0: 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20 74 68 65  to customize the
5300: 20 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e   compiler option
5310: 73 20 66 6f 72 20 4d 53 56 43 2e 0a 2a 2a 20 54  s for MSVC..** T
5320: 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64 6f  his should be do
5330: 6e 65 20 66 69 72 73 74 20 73 6f 20 74 68 61 74  ne first so that
5340: 20 69 74 20 63 61 6e 20 73 75 63 63 65 73 73 66   it can successf
5350: 75 6c 6c 79 20 70 72 65 76 65 6e 74 20 73 70 75  ully prevent spu
5360: 72 69 6f 75 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65  rious.** compile
5370: 72 20 77 61 72 6e 69 6e 67 73 20 64 75 65 20 74  r warnings due t
5380: 6f 20 73 75 62 73 65 71 75 65 6e 74 20 63 6f 6e  o subsequent con
5390: 74 65 6e 74 20 69 6e 20 74 68 69 73 20 66 69 6c  tent in this fil
53a0: 65 20 61 6e 64 20 6f 74 68 65 72 20 66 69 6c 65  e and other file
53b0: 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 69 6e  s.** that are in
53c0: 63 6c 75 64 65 64 20 62 79 20 74 68 69 73 20 66  cluded by this f
53d0: 69 6c 65 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  ile..*/./*******
53e0: 2a 2a 2a 2a 2a 2a 2a 20 49 6e 63 6c 75 64 65 20  ******* Include 
53f0: 6d 73 76 63 2e 68 20 69 6e 20 74 68 65 20 6d 69  msvc.h in the mi
5400: 64 64 6c 65 20 6f 66 20 73 71 6c 69 74 65 49 6e  ddle of sqliteIn
5410: 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  t.h ************
5420: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a  ******/./*******
5430: 2a 2a 2a 2a 2a 2a 2a 20 42 65 67 69 6e 20 66 69  ******* Begin fi
5440: 6c 65 20 6d 73 76 63 2e 68 20 2a 2a 2a 2a 2a 2a  le msvc.h ******
5450: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5460: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5470: 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 0a 2a 2a 20 32 30  ******/./*.** 20
5480: 31 35 20 4a 61 6e 75 61 72 79 20 31 32 0a 2a 2a  15 January 12.**
5490: 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 20 64  .** The author d
54a0: 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67  isclaims copyrig
54b0: 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63  ht to this sourc
54c0: 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63  e code.  In plac
54d0: 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c 20  e of.** a legal 
54e0: 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73 20  notice, here is 
54f0: 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a 2a  a blessing:.**.*
5500: 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  *    May you do 
5510: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
5520: 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  l..**    May you
5530: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
5540: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
5550: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
5560: 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  s..**    May you
5570: 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e   share freely, n
5580: 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65  ever taking more
5590: 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a   than you give..
55a0: 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  **.*************
55b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
55f0: 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c  *.**.** This fil
5600: 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20  e contains code 
5610: 74 68 61 74 20 69 73 20 73 70 65 63 69 66 69 63  that is specific
5620: 20 74 6f 20 4d 53 56 43 2e 0a 2a 2f 0a 23 69 66   to MSVC..*/.#if
5630: 6e 64 65 66 20 53 51 4c 49 54 45 5f 4d 53 56 43  ndef SQLITE_MSVC
5640: 5f 48 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  _H.#define SQLIT
5650: 45 5f 4d 53 56 43 5f 48 0a 0a 23 69 66 20 64 65  E_MSVC_H..#if de
5660: 66 69 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 0a  fined(_MSC_VER).
5670: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5680: 64 69 73 61 62 6c 65 20 3a 20 34 30 35 34 29 0a  disable : 4054).
5690: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
56a0: 64 69 73 61 62 6c 65 20 3a 20 34 30 35 35 29 0a  disable : 4055).
56b0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
56c0: 64 69 73 61 62 6c 65 20 3a 20 34 31 30 30 29 0a  disable : 4100).
56d0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
56e0: 64 69 73 61 62 6c 65 20 3a 20 34 31 32 37 29 0a  disable : 4127).
56f0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5700: 64 69 73 61 62 6c 65 20 3a 20 34 31 33 30 29 0a  disable : 4130).
5710: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5720: 64 69 73 61 62 6c 65 20 3a 20 34 31 35 32 29 0a  disable : 4152).
5730: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5740: 64 69 73 61 62 6c 65 20 3a 20 34 31 38 39 29 0a  disable : 4189).
5750: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5760: 64 69 73 61 62 6c 65 20 3a 20 34 32 30 36 29 0a  disable : 4206).
5770: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5780: 64 69 73 61 62 6c 65 20 3a 20 34 32 31 30 29 0a  disable : 4210).
5790: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
57a0: 64 69 73 61 62 6c 65 20 3a 20 34 32 33 32 29 0a  disable : 4232).
57b0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
57c0: 64 69 73 61 62 6c 65 20 3a 20 34 32 34 34 29 0a  disable : 4244).
57d0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
57e0: 64 69 73 61 62 6c 65 20 3a 20 34 33 30 35 29 0a  disable : 4305).
57f0: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5800: 64 69 73 61 62 6c 65 20 3a 20 34 33 30 36 29 0a  disable : 4306).
5810: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5820: 64 69 73 61 62 6c 65 20 3a 20 34 37 30 32 29 0a  disable : 4702).
5830: 23 70 72 61 67 6d 61 20 77 61 72 6e 69 6e 67 28  #pragma warning(
5840: 64 69 73 61 62 6c 65 20 3a 20 34 37 30 36 29 0a  disable : 4706).
5850: 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65  #endif /* define
5860: 64 28 5f 4d 53 43 5f 56 45 52 29 20 2a 2f 0a 0a  d(_MSC_VER) */..
5870: 23 65 6e 64 69 66 20 2f 2a 20 53 51 4c 49 54 45  #endif /* SQLITE
5880: 5f 4d 53 56 43 5f 48 20 2a 2f 0a 0a 2f 2a 2a 2a  _MSVC_H */../***
5890: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 45 6e 64 20  *********** End 
58a0: 6f 66 20 6d 73 76 63 2e 68 20 2a 2a 2a 2a 2a 2a  of msvc.h ******
58b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
58c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
58d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a  **********/./***
58e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 43 6f 6e 74  *********** Cont
58f0: 69 6e 75 69 6e 67 20 77 68 65 72 65 20 77 65 20  inuing where we 
5900: 6c 65 66 74 20 6f 66 66 20 69 6e 20 73 71 6c 69  left off in sqli
5910: 74 65 49 6e 74 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a  teInt.h ********
5920: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a  **********/../*.
5930: 2a 2a 20 53 70 65 63 69 61 6c 20 73 65 74 75 70  ** Special setup
5940: 20 66 6f 72 20 56 78 57 6f 72 6b 73 0a 2a 2f 0a   for VxWorks.*/.
5950: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
5960: 49 6e 63 6c 75 64 65 20 76 78 77 6f 72 6b 73 2e  Include vxworks.
5970: 68 20 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20  h in the middle 
5980: 6f 66 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a  of sqliteInt.h *
5990: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
59a0: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20  /************** 
59b0: 42 65 67 69 6e 20 66 69 6c 65 20 76 78 77 6f 72  Begin file vxwor
59c0: 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ks.h ***********
59d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
59e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a  **************/.
59f0: 2f 2a 0a 2a 2a 20 32 30 31 35 2d 30 33 2d 30 32  /*.** 2015-03-02
5a00: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
5a10: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
5a20: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
5a30: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
5a40: 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67  lace of.** a leg
5a50: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
5a60: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a  is a blessing:.*
5a70: 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20  *.**    May you 
5a80: 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20  do good and not 
5a90: 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  evil..**    May 
5aa0: 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65  you find forgive
5ab0: 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c  ness for yoursel
5ac0: 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74  f and forgive ot
5ad0: 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20  hers..**    May 
5ae0: 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c 79  you share freely
5af0: 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d  , never taking m
5b00: 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76  ore than you giv
5b10: 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  e..**.**********
5b20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5b30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5b40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5b50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5b60: 2a 2a 2a 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  ****.**.** This 
5b70: 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f  file contains co
5b80: 64 65 20 74 68 61 74 20 69 73 20 73 70 65 63 69  de that is speci
5b90: 66 69 63 20 74 6f 20 57 69 6e 64 20 52 69 76 65  fic to Wind Rive
5ba0: 72 27 73 20 56 78 57 6f 72 6b 73 0a 2a 2f 0a 23  r's VxWorks.*/.#
5bb0: 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 52 54 50  if defined(__RTP
5bc0: 5f 5f 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 5f  __) || defined(_
5bd0: 57 52 53 5f 4b 45 52 4e 45 4c 29 0a 2f 2a 20 54  WRS_KERNEL)./* T
5be0: 68 69 73 20 69 73 20 56 78 57 6f 72 6b 73 2e 20  his is VxWorks. 
5bf0: 20 53 65 74 20 75 70 20 74 68 69 6e 67 73 20 73   Set up things s
5c00: 70 65 63 69 61 6c 6c 79 20 66 6f 72 20 74 68 61  pecially for tha
5c10: 74 20 4f 53 0a 2a 2f 0a 23 69 6e 63 6c 75 64 65  t OS.*/.#include
5c20: 20 3c 76 78 57 6f 72 6b 73 2e 68 3e 0a 23 69 6e   <vxWorks.h>.#in
5c30: 63 6c 75 64 65 20 3c 70 74 68 72 65 61 64 2e 68  clude <pthread.h
5c40: 3e 20 20 2f 2a 20 61 6d 61 6c 67 61 6d 61 74 6f  >  /* amalgamato
5c50: 72 3a 20 64 6f 6e 74 63 61 63 68 65 20 2a 2f 0a  r: dontcache */.
5c60: 23 64 65 66 69 6e 65 20 4f 53 5f 56 58 57 4f 52  #define OS_VXWOR
5c70: 4b 53 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c  KS 1.#define SQL
5c80: 49 54 45 5f 4f 53 5f 4f 54 48 45 52 20 30 0a 23  ITE_OS_OTHER 0.#
5c90: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 48 4f  define SQLITE_HO
5ca0: 4d 45 47 52 4f 57 4e 5f 52 45 43 55 52 53 49 56  MEGROWN_RECURSIV
5cb0: 45 5f 4d 55 54 45 58 20 31 0a 23 64 65 66 69 6e  E_MUTEX 1.#defin
5cc0: 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4c 4f  e SQLITE_OMIT_LO
5cd0: 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20 31 0a 23  AD_EXTENSION 1.#
5ce0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 4e  define SQLITE_EN
5cf0: 41 42 4c 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59  ABLE_LOCKING_STY
5d00: 4c 45 20 30 0a 23 64 65 66 69 6e 65 20 48 41 56  LE 0.#define HAV
5d10: 45 5f 55 54 49 4d 45 20 31 0a 23 65 6c 73 65 0a  E_UTIME 1.#else.
5d20: 2f 2a 20 54 68 69 73 20 69 73 20 6e 6f 74 20 56  /* This is not V
5d30: 78 57 6f 72 6b 73 2e 20 2a 2f 0a 23 64 65 66 69  xWorks. */.#defi
5d40: 6e 65 20 4f 53 5f 56 58 57 4f 52 4b 53 20 30 0a  ne OS_VXWORKS 0.
5d50: 23 64 65 66 69 6e 65 20 48 41 56 45 5f 46 43 48  #define HAVE_FCH
5d60: 4f 57 4e 20 31 0a 23 64 65 66 69 6e 65 20 48 41  OWN 1.#define HA
5d70: 56 45 5f 52 45 41 44 4c 49 4e 4b 20 31 0a 23 64  VE_READLINK 1.#d
5d80: 65 66 69 6e 65 20 48 41 56 45 5f 4c 53 54 41 54  efine HAVE_LSTAT
5d90: 20 31 0a 23 65 6e 64 69 66 20 2f 2a 20 64 65 66   1.#endif /* def
5da0: 69 6e 65 64 28 5f 57 52 53 5f 4b 45 52 4e 45 4c  ined(_WRS_KERNEL
5db0: 29 20 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ) */../*********
5dc0: 2a 2a 2a 2a 2a 20 45 6e 64 20 6f 66 20 76 78 77  ***** End of vxw
5dd0: 6f 72 6b 73 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  orks.h *********
5de0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5df0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
5e00: 2a 2a 2a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****/./*********
5e10: 2a 2a 2a 2a 2a 20 43 6f 6e 74 69 6e 75 69 6e 67  ***** Continuing
5e20: 20 77 68 65 72 65 20 77 65 20 6c 65 66 74 20 6f   where we left o
5e30: 66 66 20 69 6e 20 73 71 6c 69 74 65 49 6e 74 2e  ff in sqliteInt.
5e40: 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  h **************
5e50: 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 54 68 65  ****/../*.** The
5e60: 73 65 20 23 64 65 66 69 6e 65 73 20 73 68 6f 75  se #defines shou
5e70: 6c 64 20 65 6e 61 62 6c 65 20 3e 32 47 42 20 66  ld enable >2GB f
5e80: 69 6c 65 20 73 75 70 70 6f 72 74 20 6f 6e 20 50  ile support on P
5e90: 4f 53 49 58 20 69 66 20 74 68 65 0a 2a 2a 20 75  OSIX if the.** u
5ea0: 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
5eb0: 69 6e 67 20 73 79 73 74 65 6d 20 73 75 70 70 6f  ing system suppo
5ec0: 72 74 73 20 69 74 2e 20 20 49 66 20 74 68 65 20  rts it.  If the 
5ed0: 4f 53 20 6c 61 63 6b 73 0a 2a 2a 20 6c 61 72 67  OS lacks.** larg
5ee0: 65 20 66 69 6c 65 20 73 75 70 70 6f 72 74 2c 20  e file support, 
5ef0: 6f 72 20 69 66 20 74 68 65 20 4f 53 20 69 73 20  or if the OS is 
5f00: 77 69 6e 64 6f 77 73 2c 20 74 68 65 73 65 20 73  windows, these s
5f10: 68 6f 75 6c 64 20 62 65 20 6e 6f 2d 6f 70 73 2e  hould be no-ops.
5f20: 0a 2a 2a 0a 2a 2a 20 54 69 63 6b 65 74 20 23 32  .**.** Ticket #2
5f30: 37 33 39 3a 20 20 54 68 65 20 5f 4c 41 52 47 45  739:  The _LARGE
5f40: 46 49 4c 45 5f 53 4f 55 52 43 45 20 6d 61 63 72  FILE_SOURCE macr
5f50: 6f 20 6d 75 73 74 20 61 70 70 65 61 72 20 62 65  o must appear be
5f60: 66 6f 72 65 20 61 6e 79 0a 2a 2a 20 73 79 73 74  fore any.** syst
5f70: 65 6d 20 23 69 6e 63 6c 75 64 65 73 2e 20 20 48  em #includes.  H
5f80: 65 6e 63 65 2c 20 74 68 69 73 20 62 6c 6f 63 6b  ence, this block
5f90: 20 6f 66 20 63 6f 64 65 20 6d 75 73 74 20 62 65   of code must be
5fa0: 20 74 68 65 20 76 65 72 79 20 66 69 72 73 74 0a   the very first.
5fb0: 2a 2a 20 63 6f 64 65 20 69 6e 20 61 6c 6c 20 73  ** code in all s
5fc0: 6f 75 72 63 65 20 66 69 6c 65 73 2e 0a 2a 2a 0a  ource files..**.
5fd0: 2a 2a 20 4c 61 72 67 65 20 66 69 6c 65 20 73 75  ** Large file su
5fe0: 70 70 6f 72 74 20 63 61 6e 20 62 65 20 64 69 73  pport can be dis
5ff0: 61 62 6c 65 64 20 75 73 69 6e 67 20 74 68 65 20  abled using the 
6000: 2d 44 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45  -DSQLITE_DISABLE
6010: 5f 4c 46 53 20 73 77 69 74 63 68 0a 2a 2a 20 6f  _LFS switch.** o
6020: 6e 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 63  n the compiler c
6030: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 54 68  ommand line.  Th
6040: 69 73 20 69 73 20 6e 65 63 65 73 73 61 72 79 20  is is necessary 
6050: 69 66 20 79 6f 75 20 61 72 65 20 63 6f 6d 70 69  if you are compi
6060: 6c 69 6e 67 0a 2a 2a 20 6f 6e 20 61 20 72 65 63  ling.** on a rec
6070: 65 6e 74 20 6d 61 63 68 69 6e 65 20 28 65 78 3a  ent machine (ex:
6080: 20 52 65 64 20 48 61 74 20 37 2e 32 29 20 62 75   Red Hat 7.2) bu
6090: 74 20 79 6f 75 20 77 61 6e 74 20 79 6f 75 72 20  t you want your 
60a0: 63 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20  code to work.** 
60b0: 6f 6e 20 61 6e 20 6f 6c 64 65 72 20 6d 61 63 68  on an older mach
60c0: 69 6e 65 20 28 65 78 3a 20 52 65 64 20 48 61 74  ine (ex: Red Hat
60d0: 20 36 2e 30 29 2e 20 20 49 66 20 79 6f 75 20 63   6.0).  If you c
60e0: 6f 6d 70 69 6c 65 20 6f 6e 20 52 65 64 20 48 61  ompile on Red Ha
60f0: 74 20 37 2e 32 0a 2a 2a 20 77 69 74 68 6f 75 74  t 7.2.** without
6100: 20 74 68 69 73 20 6f 70 74 69 6f 6e 2c 20 4c 46   this option, LF
6110: 53 20 69 73 20 65 6e 61 62 6c 65 2e 20 20 42 75  S is enable.  Bu
6120: 74 20 4c 46 53 20 64 6f 65 73 20 6e 6f 74 20 65  t LFS does not e
6130: 78 69 73 74 20 69 6e 20 74 68 65 20 6b 65 72 6e  xist in the kern
6140: 65 6c 0a 2a 2a 20 69 6e 20 52 65 64 20 48 61 74  el.** in Red Hat
6150: 20 36 2e 30 2c 20 73 6f 20 74 68 65 20 63 6f 64   6.0, so the cod
6160: 65 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20 20 48  e won't work.  H
6170: 65 6e 63 65 2c 20 66 6f 72 20 6d 61 78 69 6d 75  ence, for maximu
6180: 6d 20 62 69 6e 61 72 79 0a 2a 2a 20 70 6f 72 74  m binary.** port
6190: 61 62 69 6c 69 74 79 20 79 6f 75 20 73 68 6f 75  ability you shou
61a0: 6c 64 20 6f 6d 69 74 20 4c 46 53 2e 0a 2a 2a 0a  ld omit LFS..**.
61b0: 2a 2a 20 54 68 65 20 70 72 65 76 69 6f 75 73 20  ** The previous 
61c0: 70 61 72 61 67 72 61 70 68 20 77 61 73 20 77 72  paragraph was wr
61d0: 69 74 74 65 6e 20 69 6e 20 32 30 30 35 2e 20 20  itten in 2005.  
61e0: 28 54 68 69 73 20 70 61 72 61 67 72 61 70 68 20  (This paragraph 
61f0: 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 6f 6e  is written.** on
6200: 20 32 30 30 38 2d 31 31 2d 32 38 2e 29 20 54 68   2008-11-28.) Th
6210: 65 73 65 20 64 61 79 73 2c 20 61 6c 6c 20 4c 69  ese days, all Li
6220: 6e 75 78 20 6b 65 72 6e 65 6c 73 20 73 75 70 70  nux kernels supp
6230: 6f 72 74 20 6c 61 72 67 65 20 66 69 6c 65 73 2c  ort large files,
6240: 20 73 6f 0a 2a 2a 20 79 6f 75 20 73 68 6f 75 6c   so.** you shoul
6250: 64 20 70 72 6f 62 61 62 6c 79 20 6c 65 61 76 65  d probably leave
6260: 20 4c 46 53 20 65 6e 61 62 6c 65 64 2e 20 20 42   LFS enabled.  B
6270: 75 74 20 73 6f 6d 65 20 65 6d 62 65 64 64 65 64  ut some embedded
6280: 20 70 6c 61 74 66 6f 72 6d 73 20 6d 69 67 68 74   platforms might
6290: 0a 2a 2a 20 6c 61 63 6b 20 4c 46 53 20 69 6e 20  .** lack LFS in 
62a0: 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 53  which case the S
62b0: 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46  QLITE_DISABLE_LF
62c0: 53 20 6d 61 63 72 6f 20 6d 69 67 68 74 20 73 74  S macro might st
62d0: 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2e 0a 2a  ill be useful..*
62e0: 2a 0a 2a 2a 20 53 69 6d 69 6c 61 72 20 69 73 20  *.** Similar is 
62f0: 74 72 75 65 20 66 6f 72 20 4d 61 63 20 4f 53 20  true for Mac OS 
6300: 58 2e 20 20 4c 46 53 20 69 73 20 6f 6e 6c 79 20  X.  LFS is only 
6310: 73 75 70 70 6f 72 74 65 64 20 6f 6e 20 4d 61 63  supported on Mac
6320: 20 4f 53 20 58 20 39 20 61 6e 64 20 6c 61 74 65   OS X 9 and late
6330: 72 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51  r..*/.#ifndef SQ
6340: 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f 4c 46 53  LITE_DISABLE_LFS
6350: 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47 45  .# define _LARGE
6360: 5f 46 49 4c 45 20 20 20 20 20 20 20 31 0a 23 20  _FILE       1.# 
6370: 69 66 6e 64 65 66 20 5f 46 49 4c 45 5f 4f 46 46  ifndef _FILE_OFF
6380: 53 45 54 5f 42 49 54 53 0a 23 20 20 20 64 65 66  SET_BITS.#   def
6390: 69 6e 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54  ine _FILE_OFFSET
63a0: 5f 42 49 54 53 20 36 34 0a 23 20 65 6e 64 69 66  _BITS 64.# endif
63b0: 0a 23 20 64 65 66 69 6e 65 20 5f 4c 41 52 47 45  .# define _LARGE
63c0: 46 49 4c 45 5f 53 4f 55 52 43 45 20 31 0a 23 65  FILE_SOURCE 1.#e
63d0: 6e 64 69 66 0a 0a 2f 2a 20 54 68 65 20 47 43 43  ndif../* The GCC
63e0: 5f 56 45 52 53 49 4f 4e 20 61 6e 64 20 4d 53 56  _VERSION and MSV
63f0: 43 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 73  C_VERSION macros
6400: 20 61 72 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20   are used to.** 
6410: 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 69 6e  conditionally in
6420: 63 6c 75 64 65 20 6f 70 74 69 6d 69 7a 61 74 69  clude optimizati
6430: 6f 6e 73 20 66 6f 72 20 65 61 63 68 20 6f 66 20  ons for each of 
6440: 74 68 65 73 65 20 63 6f 6d 70 69 6c 65 72 73 2e  these compilers.
6450: 20 20 41 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20    A.** value of 
6460: 30 20 6d 65 61 6e 73 20 74 68 61 74 20 63 6f 6d  0 means that com
6470: 70 69 6c 65 72 20 69 73 20 6e 6f 74 20 62 65 69  piler is not bei
6480: 6e 67 20 75 73 65 64 2e 20 20 54 68 65 0a 2a 2a  ng used.  The.**
6490: 20 53 51 4c 49 54 45 5f 44 49 53 41 42 4c 45 5f   SQLITE_DISABLE_
64a0: 49 4e 54 52 49 4e 53 49 43 20 6d 61 63 72 6f 20  INTRINSIC macro 
64b0: 6d 65 61 6e 73 20 64 6f 20 6e 6f 74 20 75 73 65  means do not use
64c0: 20 61 6e 79 20 63 6f 6d 70 69 6c 65 72 2d 73 70   any compiler-sp
64d0: 65 63 69 66 69 63 0a 2a 2a 20 6f 70 74 69 6d 69  ecific.** optimi
64e0: 7a 61 74 69 6f 6e 73 2c 20 61 6e 64 20 68 65 6e  zations, and hen
64f0: 63 65 20 73 65 74 20 61 6c 6c 20 63 6f 6d 70 69  ce set all compi
6500: 6c 65 72 20 6d 61 63 72 6f 73 20 74 6f 20 30 0a  ler macros to 0.
6510: 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 77 61 73 20  **.** There was 
6520: 6f 6e 63 65 20 61 6c 73 6f 20 61 20 43 4c 41 4e  once also a CLAN
6530: 47 5f 56 45 52 53 49 4f 4e 20 6d 61 63 72 6f 2e  G_VERSION macro.
6540: 20 20 48 6f 77 65 76 65 72 2c 20 77 65 20 6c 65    However, we le
6550: 61 72 6e 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  arn that the.** 
6560: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 73 20  version numbers 
6570: 69 6e 20 63 6c 61 6e 67 20 61 72 65 20 66 6f 72  in clang are for
6580: 20 22 6d 61 72 6b 65 74 69 6e 67 22 20 6f 6e 6c   "marketing" onl
6590: 79 20 61 6e 64 20 61 72 65 20 69 6e 63 6f 6e 73  y and are incons
65a0: 69 73 74 65 6e 74 0a 2a 2a 20 61 6e 64 20 75 6e  istent.** and un
65b0: 72 65 6c 69 61 62 6c 65 2e 20 20 46 6f 72 74 75  reliable.  Fortu
65c0: 6e 61 74 65 6c 79 2c 20 61 6c 6c 20 76 65 72 73  nately, all vers
65d0: 69 6f 6e 73 20 6f 66 20 63 6c 61 6e 67 20 61 6c  ions of clang al
65e0: 73 6f 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 65  so recognize the
65f0: 0a 2a 2a 20 67 63 63 20 76 65 72 73 69 6f 6e 20  .** gcc version 
6600: 6e 75 6d 62 65 72 73 20 61 6e 64 20 68 61 76 65  numbers and have
6610: 20 72 65 61 73 6f 6e 61 62 6c 65 20 73 65 74 74   reasonable sett
6620: 69 6e 67 73 20 66 6f 72 20 67 63 63 20 76 65 72  ings for gcc ver
6630: 73 69 6f 6e 20 6e 75 6d 62 65 72 73 2c 0a 2a 2a  sion numbers,.**
6640: 20 73 6f 20 74 68 65 20 47 43 43 5f 56 45 52 53   so the GCC_VERS
6650: 49 4f 4e 20 6d 61 63 72 6f 20 77 69 6c 6c 20 62  ION macro will b
6660: 65 20 73 65 74 20 74 6f 20 61 20 63 6f 72 72 65  e set to a corre
6670: 63 74 20 6e 6f 6e 2d 7a 65 72 6f 20 76 61 6c 75  ct non-zero valu
6680: 65 20 65 76 65 6e 0a 2a 2a 20 77 68 65 6e 20 63  e even.** when c
6690: 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 63 6c  ompiling with cl
66a0: 61 6e 67 2e 0a 2a 2f 0a 23 69 66 20 64 65 66 69  ang..*/.#if defi
66b0: 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 20 26 26  ned(__GNUC__) &&
66c0: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
66d0: 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53  _DISABLE_INTRINS
66e0: 49 43 29 0a 23 20 64 65 66 69 6e 65 20 47 43 43  IC).# define GCC
66f0: 5f 56 45 52 53 49 4f 4e 20 28 5f 5f 47 4e 55 43  _VERSION (__GNUC
6700: 5f 5f 2a 31 30 30 30 30 30 30 2b 5f 5f 47 4e 55  __*1000000+__GNU
6710: 43 5f 4d 49 4e 4f 52 5f 5f 2a 31 30 30 30 2b 5f  C_MINOR__*1000+_
6720: 5f 47 4e 55 43 5f 50 41 54 43 48 4c 45 56 45 4c  _GNUC_PATCHLEVEL
6730: 5f 5f 29 0a 23 65 6c 73 65 0a 23 20 64 65 66 69  __).#else.# defi
6740: 6e 65 20 47 43 43 5f 56 45 52 53 49 4f 4e 20 30  ne GCC_VERSION 0
6750: 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69  .#endif.#if defi
6760: 6e 65 64 28 5f 4d 53 43 5f 56 45 52 29 20 26 26  ned(_MSC_VER) &&
6770: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
6780: 5f 44 49 53 41 42 4c 45 5f 49 4e 54 52 49 4e 53  _DISABLE_INTRINS
6790: 49 43 29 0a 23 20 64 65 66 69 6e 65 20 4d 53 56  IC).# define MSV
67a0: 43 5f 56 45 52 53 49 4f 4e 20 5f 4d 53 43 5f 56  C_VERSION _MSC_V
67b0: 45 52 0a 23 65 6c 73 65 0a 23 20 64 65 66 69 6e  ER.#else.# defin
67c0: 65 20 4d 53 56 43 5f 56 45 52 53 49 4f 4e 20 30  e MSVC_VERSION 0
67d0: 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 4e 65 65 64  .#endif../* Need
67e0: 65 64 20 66 6f 72 20 76 61 72 69 6f 75 73 20 64  ed for various d
67f0: 65 66 69 6e 69 74 69 6f 6e 73 2e 2e 2e 20 2a 2f  efinitions... */
6800: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 47  .#if defined(__G
6810: 4e 55 43 5f 5f 29 20 26 26 20 21 64 65 66 69 6e  NUC__) && !defin
6820: 65 64 28 5f 47 4e 55 5f 53 4f 55 52 43 45 29 0a  ed(_GNU_SOURCE).
6830: 23 20 64 65 66 69 6e 65 20 5f 47 4e 55 5f 53 4f  # define _GNU_SO
6840: 55 52 43 45 0a 23 65 6e 64 69 66 0a 0a 23 69 66  URCE.#endif..#if
6850: 20 64 65 66 69 6e 65 64 28 5f 5f 4f 70 65 6e 42   defined(__OpenB
6860: 53 44 5f 5f 29 20 26 26 20 21 64 65 66 69 6e 65  SD__) && !define
6870: 64 28 5f 42 53 44 5f 53 4f 55 52 43 45 29 0a 23  d(_BSD_SOURCE).#
6880: 20 64 65 66 69 6e 65 20 5f 42 53 44 5f 53 4f 55   define _BSD_SOU
6890: 52 43 45 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a  RCE.#endif../*.*
68a0: 2a 20 46 6f 72 20 4d 69 6e 47 57 2c 20 63 68 65  * For MinGW, che
68b0: 63 6b 20 74 6f 20 73 65 65 20 69 66 20 77 65 20  ck to see if we 
68c0: 63 61 6e 20 69 6e 63 6c 75 64 65 20 74 68 65 20  can include the 
68d0: 68 65 61 64 65 72 20 66 69 6c 65 20 63 6f 6e 74  header file cont
68e0: 61 69 6e 69 6e 67 20 69 74 73 0a 2a 2a 20 76 65  aining its.** ve
68f0: 72 73 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 69 6f  rsion informatio
6900: 6e 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 20 74  n, among other t
6910: 68 69 6e 67 73 2e 20 20 4e 6f 72 6d 61 6c 6c 79  hings.  Normally
6920: 2c 20 74 68 69 73 20 69 6e 74 65 72 6e 61 6c 20  , this internal 
6930: 4d 69 6e 47 57 0a 2a 2a 20 68 65 61 64 65 72 20  MinGW.** header 
6940: 66 69 6c 65 20 77 6f 75 6c 64 20 5b 6f 6e 6c 79  file would [only
6950: 5d 20 62 65 20 69 6e 63 6c 75 64 65 64 20 61 75  ] be included au
6960: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 6f  tomatically by o
6970: 74 68 65 72 20 4d 69 6e 47 57 20 68 65 61 64 65  ther MinGW heade
6980: 72 0a 2a 2a 20 66 69 6c 65 73 3b 20 68 6f 77 65  r.** files; howe
6990: 76 65 72 2c 20 74 68 65 20 63 6f 6e 74 61 69 6e  ver, the contain
69a0: 65 64 20 76 65 72 73 69 6f 6e 20 69 6e 66 6f 72  ed version infor
69b0: 6d 61 74 69 6f 6e 20 69 73 20 6e 6f 77 20 72 65  mation is now re
69c0: 71 75 69 72 65 64 20 62 79 20 74 68 69 73 0a 2a  quired by this.*
69d0: 2a 20 68 65 61 64 65 72 20 66 69 6c 65 20 74 6f  * header file to
69e0: 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 62 69 6e   work around bin
69f0: 61 72 79 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  ary compatibilit
6a00: 79 20 69 73 73 75 65 73 20 28 73 65 65 20 62 65  y issues (see be
6a10: 6c 6f 77 29 20 61 6e 64 0a 2a 2a 20 74 68 69 73  low) and.** this
6a20: 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6b 6e 6f   is the only kno
6a30: 77 6e 20 77 61 79 20 74 6f 20 72 65 6c 69 61 62  wn way to reliab
6a40: 6c 79 20 6f 62 74 61 69 6e 20 69 74 2e 20 20 54  ly obtain it.  T
6a50: 68 69 73 20 65 6e 74 69 72 65 20 23 69 66 20 62  his entire #if b
6a60: 6c 6f 63 6b 0a 2a 2a 20 77 6f 75 6c 64 20 62 65  lock.** would be
6a70: 20 63 6f 6d 70 6c 65 74 65 6c 79 20 75 6e 6e 65   completely unne
6a80: 63 65 73 73 61 72 79 20 69 66 20 74 68 65 72 65  cessary if there
6a90: 20 77 61 73 20 61 6e 79 20 6f 74 68 65 72 20 77   was any other w
6aa0: 61 79 20 6f 66 20 64 65 74 65 63 74 69 6e 67 0a  ay of detecting.
6ab0: 2a 2a 20 4d 69 6e 47 57 20 76 69 61 20 74 68 65  ** MinGW via the
6ac0: 69 72 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20  ir preprocessor 
6ad0: 28 65 2e 67 2e 20 69 66 20 74 68 65 79 20 63 75  (e.g. if they cu
6ae0: 73 74 6f 6d 69 7a 65 64 20 74 68 65 69 72 20 47  stomized their G
6af0: 43 43 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a 20  CC to define.** 
6b00: 73 6f 6d 65 20 4d 69 6e 47 57 2d 73 70 65 63 69  some MinGW-speci
6b10: 66 69 63 20 6d 61 63 72 6f 73 29 2e 20 20 57 68  fic macros).  Wh
6b20: 65 6e 20 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72  en compiling for
6b30: 20 4d 69 6e 47 57 2c 20 65 69 74 68 65 72 20 74   MinGW, either t
6b40: 68 65 0a 2a 2a 20 5f 48 41 56 45 5f 4d 49 4e 47  he.** _HAVE_MING
6b50: 57 5f 48 20 6f 72 20 5f 48 41 56 45 5f 5f 4d 49  W_H or _HAVE__MI
6b60: 4e 47 57 5f 48 20 28 6e 6f 74 65 20 74 68 65 20  NGW_H (note the 
6b70: 65 78 74 72 61 20 75 6e 64 65 72 73 63 6f 72 65  extra underscore
6b80: 29 20 6d 61 63 72 6f 20 6d 75 73 74 20 62 65 0a  ) macro must be.
6b90: 2a 2a 20 64 65 66 69 6e 65 64 3b 20 6f 74 68 65  ** defined; othe
6ba0: 72 77 69 73 65 2c 20 64 65 74 65 63 74 69 6f 6e  rwise, detection
6bb0: 20 6f 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73   of conditions s
6bc0: 70 65 63 69 66 69 63 20 74 6f 20 4d 69 6e 47 57  pecific to MinGW
6bd0: 20 77 69 6c 6c 20 62 65 0a 2a 2a 20 64 69 73 61   will be.** disa
6be0: 62 6c 65 64 2e 0a 2a 2f 0a 23 69 66 20 64 65 66  bled..*/.#if def
6bf0: 69 6e 65 64 28 5f 48 41 56 45 5f 4d 49 4e 47 57  ined(_HAVE_MINGW
6c00: 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65 20 22 6d  _H).# include "m
6c10: 69 6e 67 77 2e 68 22 0a 23 65 6c 69 66 20 64 65  ingw.h".#elif de
6c20: 66 69 6e 65 64 28 5f 48 41 56 45 5f 5f 4d 49 4e  fined(_HAVE__MIN
6c30: 47 57 5f 48 29 0a 23 20 69 6e 63 6c 75 64 65 20  GW_H).# include 
6c40: 22 5f 6d 69 6e 67 77 2e 68 22 0a 23 65 6e 64 69  "_mingw.h".#endi
6c50: 66 0a 0a 2f 2a 0a 2a 2a 20 46 6f 72 20 4d 69 6e  f../*.** For Min
6c60: 47 57 20 76 65 72 73 69 6f 6e 20 34 2e 78 20 28  GW version 4.x (
6c70: 61 6e 64 20 68 69 67 68 65 72 29 2c 20 63 68 65  and higher), che
6c80: 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65  ck to see if the
6c90: 20 5f 55 53 45 5f 33 32 42 49 54 5f 54 49 4d 45   _USE_32BIT_TIME
6ca0: 5f 54 0a 2a 2a 20 64 65 66 69 6e 65 20 69 73 20  _T.** define is 
6cb0: 72 65 71 75 69 72 65 64 20 74 6f 20 6d 61 69 6e  required to main
6cc0: 74 61 69 6e 20 62 69 6e 61 72 79 20 63 6f 6d 70  tain binary comp
6cd0: 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 74  atibility with t
6ce0: 68 65 20 4d 53 56 43 20 72 75 6e 74 69 6d 65 0a  he MSVC runtime.
6cf0: 2a 2a 20 6c 69 62 72 61 72 79 20 69 6e 20 75 73  ** library in us
6d00: 65 20 28 65 2e 67 2e 20 66 6f 72 20 57 69 6e 64  e (e.g. for Wind
6d10: 6f 77 73 20 58 50 29 2e 0a 2a 2f 0a 23 69 66 20  ows XP)..*/.#if 
6d20: 21 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 33 32  !defined(_USE_32
6d30: 42 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20 21  BIT_TIME_T) && !
6d40: 64 65 66 69 6e 65 64 28 5f 55 53 45 5f 36 34 42  defined(_USE_64B
6d50: 49 54 5f 54 49 4d 45 5f 54 29 20 26 26 20 5c 0a  IT_TIME_T) && \.
6d60: 20 20 20 20 64 65 66 69 6e 65 64 28 5f 57 49 4e      defined(_WIN
6d70: 33 32 29 20 26 26 20 21 64 65 66 69 6e 65 64 28  32) && !defined(
6d80: 5f 57 49 4e 36 34 29 20 26 26 20 5c 0a 20 20 20  _WIN64) && \.   
6d90: 20 64 65 66 69 6e 65 64 28 5f 5f 4d 49 4e 47 57   defined(__MINGW
6da0: 5f 4d 41 4a 4f 52 5f 56 45 52 53 49 4f 4e 29 20  _MAJOR_VERSION) 
6db0: 26 26 20 5f 5f 4d 49 4e 47 57 5f 4d 41 4a 4f 52  && __MINGW_MAJOR
6dc0: 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 34 20 26 26  _VERSION >= 4 &&
6dd0: 20 5c 0a 20 20 20 20 64 65 66 69 6e 65 64 28 5f   \.    defined(_
6de0: 5f 4d 53 56 43 52 54 5f 5f 29 0a 23 20 64 65 66  _MSVCRT__).# def
6df0: 69 6e 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54  ine _USE_32BIT_T
6e00: 49 4d 45 5f 54 0a 23 65 6e 64 69 66 0a 0a 2f 2a  IME_T.#endif../*
6e10: 20 54 68 65 20 70 75 62 6c 69 63 20 53 51 4c 69   The public SQLi
6e20: 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54  te interface.  T
6e30: 68 65 20 5f 46 49 4c 45 5f 4f 46 46 53 45 54 5f  he _FILE_OFFSET_
6e40: 42 49 54 53 20 6d 61 63 72 6f 20 6d 75 73 74 20  BITS macro must 
6e50: 61 70 70 65 61 72 0a 2a 2a 20 66 69 72 73 74 20  appear.** first 
6e60: 69 6e 20 51 4e 58 2e 20 20 41 6c 73 6f 2c 20 74  in QNX.  Also, t
6e70: 68 65 20 5f 55 53 45 5f 33 32 42 49 54 5f 54 49  he _USE_32BIT_TI
6e80: 4d 45 5f 54 20 6d 61 63 72 6f 20 6d 75 73 74 20  ME_T macro must 
6e90: 61 70 70 65 61 72 20 66 69 72 73 74 20 66 6f 72  appear first for
6ea0: 0a 2a 2a 20 4d 69 6e 47 57 2e 0a 2a 2f 0a 2f 2a  .** MinGW..*/./*
6eb0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 49 6e  ************* In
6ec0: 63 6c 75 64 65 20 73 71 6c 69 74 65 33 2e 68 20  clude sqlite3.h 
6ed0: 69 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66  in the middle of
6ee0: 20 73 71 6c 69 74 65 49 6e 74 2e 68 20 2a 2a 2a   sqliteInt.h ***
6ef0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
6f00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 42 65  ************* Be
6f10: 67 69 6e 20 66 69 6c 65 20 73 71 6c 69 74 65 33  gin file sqlite3
6f20: 2e 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .h *************
6f30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
6f40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 2f 2a  ************/./*
6f50: 0a 2a 2a 20 32 30 30 31 2d 30 39 2d 31 35 0a 2a  .** 2001-09-15.*
6f60: 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 20  *.** The author 
6f70: 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69  disclaims copyri
6f80: 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72  ght to this sour
6f90: 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61  ce code.  In pla
6fa0: 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65 67 61 6c  ce of.** a legal
6fb0: 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69 73   notice, here is
6fc0: 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 2a 2a 0a   a blessing:.**.
6fd0: 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  **    May you do
6fe0: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
6ff0: 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  il..**    May yo
7000: 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65  u find forgivene
7010: 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20  ss for yourself 
7020: 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65  and forgive othe
7030: 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f  rs..**    May yo
7040: 75 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20  u share freely, 
7050: 6e 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72  never taking mor
7060: 65 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e  e than you give.
7070: 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  .**.************
7080: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
7090: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
70a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
70b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a  *************.**
70c0: 20 54 68 69 73 20 68 65 61 64 65 72 20 66 69 6c   This header fil
70d0: 65 20 64 65 66 69 6e 65 73 20 74 68 65 20 69 6e  e defines the in
70e0: 74 65 72 66 61 63 65 20 74 68 61 74 20 74 68 65  terface that the
70f0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 0a   SQLite library.
7100: 2a 2a 20 70 72 65 73 65 6e 74 73 20 74 6f 20 63  ** presents to c
7110: 6c 69 65 6e 74 20 70 72 6f 67 72 61 6d 73 2e 20  lient programs. 
7120: 20 49 66 20 61 20 43 2d 66 75 6e 63 74 69 6f 6e   If a C-function
7130: 2c 20 73 74 72 75 63 74 75 72 65 2c 20 64 61 74  , structure, dat
7140: 61 74 79 70 65 2c 0a 2a 2a 20 6f 72 20 63 6f 6e  atype,.** or con
7150: 73 74 61 6e 74 20 64 65 66 69 6e 69 74 69 6f 6e  stant definition
7160: 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61 72   does not appear
7170: 20 69 6e 20 74 68 69 73 20 66 69 6c 65 2c 20 74   in this file, t
7180: 68 65 6e 20 69 74 20 69 73 0a 2a 2a 20 6e 6f 74  hen it is.** not
7190: 20 61 20 70 75 62 6c 69 73 68 65 64 20 41 50 49   a published API
71a0: 20 6f 66 20 53 51 4c 69 74 65 2c 20 69 73 20 73   of SQLite, is s
71b0: 75 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65  ubject to change
71c0: 20 77 69 74 68 6f 75 74 0a 2a 2a 20 6e 6f 74 69   without.** noti
71d0: 63 65 2c 20 61 6e 64 20 73 68 6f 75 6c 64 20 6e  ce, and should n
71e0: 6f 74 20 62 65 20 72 65 66 65 72 65 6e 63 65 64  ot be referenced
71f0: 20 62 79 20 70 72 6f 67 72 61 6d 73 20 74 68 61   by programs tha
7200: 74 20 75 73 65 20 53 51 4c 69 74 65 2e 0a 2a 2a  t use SQLite..**
7210: 0a 2a 2a 20 53 6f 6d 65 20 6f 66 20 74 68 65 20  .** Some of the 
7220: 64 65 66 69 6e 69 74 69 6f 6e 73 20 74 68 61 74  definitions that
7230: 20 61 72 65 20 69 6e 20 74 68 69 73 20 66 69 6c   are in this fil
7240: 65 20 61 72 65 20 6d 61 72 6b 65 64 20 61 73 0a  e are marked as.
7250: 2a 2a 20 22 65 78 70 65 72 69 6d 65 6e 74 61 6c  ** "experimental
7260: 22 2e 20 20 45 78 70 65 72 69 6d 65 6e 74 61 6c  ".  Experimental
7270: 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
7280: 6e 6f 72 6d 61 6c 6c 79 20 6e 65 77 0a 2a 2a 20  normally new.** 
7290: 66 65 61 74 75 72 65 73 20 72 65 63 65 6e 74 6c  features recentl
72a0: 79 20 61 64 64 65 64 20 74 6f 20 53 51 4c 69 74  y added to SQLit
72b0: 65 2e 20 20 57 65 20 64 6f 20 6e 6f 74 20 61 6e  e.  We do not an
72c0: 74 69 63 69 70 61 74 65 20 63 68 61 6e 67 65 73  ticipate changes
72d0: 0a 2a 2a 20 74 6f 20 65 78 70 65 72 69 6d 65 6e  .** to experimen
72e0: 74 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20 62  tal interfaces b
72f0: 75 74 20 72 65 73 65 72 76 65 20 74 68 65 20 72  ut reserve the r
7300: 69 67 68 74 20 74 6f 20 6d 61 6b 65 20 6d 69 6e  ight to make min
7310: 6f 72 20 63 68 61 6e 67 65 73 0a 2a 2a 20 69 66  or changes.** if
7320: 20 65 78 70 65 72 69 65 6e 63 65 20 66 72 6f 6d   experience from
7330: 20 75 73 65 20 22 69 6e 20 74 68 65 20 77 69 6c   use "in the wil
7340: 64 22 20 73 75 67 67 65 73 74 20 73 75 63 68 20  d" suggest such 
7350: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 75 64  changes are prud
7360: 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6f  ent..**.** The o
7370: 66 66 69 63 69 61 6c 20 43 2d 6c 61 6e 67 75 61  fficial C-langua
7380: 67 65 20 41 50 49 20 64 6f 63 75 6d 65 6e 74 61  ge API documenta
7390: 74 69 6f 6e 20 66 6f 72 20 53 51 4c 69 74 65 20  tion for SQLite 
73a0: 69 73 20 64 65 72 69 76 65 64 0a 2a 2a 20 66 72  is derived.** fr
73b0: 6f 6d 20 63 6f 6d 6d 65 6e 74 73 20 69 6e 20 74  om comments in t
73c0: 68 69 73 20 66 69 6c 65 2e 20 20 54 68 69 73 20  his file.  This 
73d0: 66 69 6c 65 20 69 73 20 74 68 65 20 61 75 74 68  file is the auth
73e0: 6f 72 69 74 61 74 69 76 65 20 73 6f 75 72 63 65  oritative source
73f0: 0a 2a 2a 20 6f 6e 20 68 6f 77 20 53 51 4c 69 74  .** on how SQLit
7400: 65 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65  e interfaces are
7410: 20 73 75 70 70 6f 73 65 64 20 74 6f 20 6f 70 65   supposed to ope
7420: 72 61 74 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  rate..**.** The 
7430: 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 66 69 6c  name of this fil
7440: 65 20 75 6e 64 65 72 20 63 6f 6e 66 69 67 75 72  e under configur
7450: 61 74 69 6f 6e 20 6d 61 6e 61 67 65 6d 65 6e 74  ation management
7460: 20 69 73 20 22 73 71 6c 69 74 65 2e 68 2e 69 6e   is "sqlite.h.in
7470: 22 2e 0a 2a 2a 20 54 68 65 20 6d 61 6b 65 66 69  "..** The makefi
7480: 6c 65 20 6d 61 6b 65 73 20 73 6f 6d 65 20 6d 69  le makes some mi
7490: 6e 6f 72 20 63 68 61 6e 67 65 73 20 74 6f 20 74  nor changes to t
74a0: 68 69 73 20 66 69 6c 65 20 28 73 75 63 68 20 61  his file (such a
74b0: 73 20 69 6e 73 65 72 74 69 6e 67 0a 2a 2a 20 74  s inserting.** t
74c0: 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65  he version numbe
74d0: 72 29 20 61 6e 64 20 63 68 61 6e 67 65 73 20 69  r) and changes i
74e0: 74 73 20 6e 61 6d 65 20 74 6f 20 22 73 71 6c 69  ts name to "sqli
74f0: 74 65 33 2e 68 22 20 61 73 0a 2a 2a 20 70 61 72  te3.h" as.** par
7500: 74 20 6f 66 20 74 68 65 20 62 75 69 6c 64 20 70  t of the build p
7510: 72 6f 63 65 73 73 2e 0a 2a 2f 0a 23 69 66 6e 64  rocess..*/.#ifnd
7520: 65 66 20 53 51 4c 49 54 45 33 5f 48 0a 23 64 65  ef SQLITE3_H.#de
7530: 66 69 6e 65 20 53 51 4c 49 54 45 33 5f 48 0a 23  fine SQLITE3_H.#
7540: 69 6e 63 6c 75 64 65 20 3c 73 74 64 61 72 67 2e  include <stdarg.
7550: 68 3e 20 20 20 20 20 2f 2a 20 4e 65 65 64 65 64  h>     /* Needed
7560: 20 66 6f 72 20 74 68 65 20 64 65 66 69 6e 69 74   for the definit
7570: 69 6f 6e 20 6f 66 20 76 61 5f 6c 69 73 74 20 2a  ion of va_list *
7580: 2f 0a 0a 2f 2a 0a 2a 2a 20 4d 61 6b 65 20 73 75  /../*.** Make su
7590: 72 65 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74  re we can call t
75a0: 68 69 73 20 73 74 75 66 66 20 66 72 6f 6d 20 43  his stuff from C
75b0: 2b 2b 2e 0a 2a 2f 0a 23 69 66 20 30 0a 65 78 74  ++..*/.#if 0.ext
75c0: 65 72 6e 20 22 43 22 20 7b 0a 23 65 6e 64 69 66  ern "C" {.#endif
75d0: 0a 0a 0a 2f 2a 0a 2a 2a 20 50 72 6f 76 69 64 65  .../*.** Provide
75e0: 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20   the ability to 
75f0: 6f 76 65 72 72 69 64 65 20 6c 69 6e 6b 61 67 65  override linkage
7600: 20 66 65 61 74 75 72 65 73 20 6f 66 20 74 68 65   features of the
7610: 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a 23   interface..*/.#
7620: 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 45 58  ifndef SQLITE_EX
7630: 54 45 52 4e 0a 23 20 64 65 66 69 6e 65 20 53 51  TERN.# define SQ
7640: 4c 49 54 45 5f 45 58 54 45 52 4e 20 65 78 74 65  LITE_EXTERN exte
7650: 72 6e 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  rn.#endif.#ifnde
7660: 66 20 53 51 4c 49 54 45 5f 41 50 49 0a 23 20 64  f SQLITE_API.# d
7670: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 50 49  efine SQLITE_API
7680: 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65 66 20  .#endif.#ifndef 
7690: 53 51 4c 49 54 45 5f 43 44 45 43 4c 0a 23 20 64  SQLITE_CDECL.# d
76a0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 44 45  efine SQLITE_CDE
76b0: 43 4c 0a 23 65 6e 64 69 66 0a 23 69 66 6e 64 65  CL.#endif.#ifnde
76c0: 66 20 53 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c  f SQLITE_APICALL
76d0: 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49 54 45  .# define SQLITE
76e0: 5f 41 50 49 43 41 4c 4c 0a 23 65 6e 64 69 66 0a  _APICALL.#endif.
76f0: 23 69 66 6e 64 65 66 20 53 51 4c 49 54 45 5f 53  #ifndef SQLITE_S
7700: 54 44 43 41 4c 4c 0a 23 20 64 65 66 69 6e 65 20  TDCALL.# define 
7710: 53 51 4c 49 54 45 5f 53 54 44 43 41 4c 4c 20 53  SQLITE_STDCALL S
7720: 51 4c 49 54 45 5f 41 50 49 43 41 4c 4c 0a 23 65  QLITE_APICALL.#e
7730: 6e 64 69 66 0a 23 69 66 6e 64 65 66 20 53 51 4c  ndif.#ifndef SQL
7740: 49 54 45 5f 43 41 4c 4c 42 41 43 4b 0a 23 20 64  ITE_CALLBACK.# d
7750: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4c  efine SQLITE_CAL
7760: 4c 42 41 43 4b 0a 23 65 6e 64 69 66 0a 23 69 66  LBACK.#endif.#if
7770: 6e 64 65 66 20 53 51 4c 49 54 45 5f 53 59 53 41  ndef SQLITE_SYSA
7780: 50 49 0a 23 20 64 65 66 69 6e 65 20 53 51 4c 49  PI.# define SQLI
7790: 54 45 5f 53 59 53 41 50 49 0a 23 65 6e 64 69 66  TE_SYSAPI.#endif
77a0: 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 73 65 20 6e 6f  ../*.** These no
77b0: 2d 6f 70 20 6d 61 63 72 6f 73 20 61 72 65 20 75  -op macros are u
77c0: 73 65 64 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20  sed in front of 
77d0: 69 6e 74 65 72 66 61 63 65 73 20 74 6f 20 6d 61  interfaces to ma
77e0: 72 6b 20 74 68 6f 73 65 0a 2a 2a 20 69 6e 74 65  rk those.** inte
77f0: 72 66 61 63 65 73 20 61 73 20 65 69 74 68 65 72  rfaces as either
7800: 20 64 65 70 72 65 63 61 74 65 64 20 6f 72 20 65   deprecated or e
7810: 78 70 65 72 69 6d 65 6e 74 61 6c 2e 20 20 4e 65  xperimental.  Ne
7820: 77 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a  w applications.*
7830: 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65  * should not use
7840: 20 64 65 70 72 65 63 61 74 65 64 20 69 6e 74 65   deprecated inte
7850: 72 66 61 63 65 73 20 2d 20 74 68 65 79 20 61 72  rfaces - they ar
7860: 65 20 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20  e supported for 
7870: 62 61 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d  backwards.** com
7880: 70 61 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e  patibility only.
7890: 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 77 72    Application wr
78a0: 69 74 65 72 73 20 73 68 6f 75 6c 64 20 62 65 20  iters should be 
78b0: 61 77 61 72 65 20 74 68 61 74 0a 2a 2a 20 65 78  aware that.** ex
78c0: 70 65 72 69 6d 65 6e 74 61 6c 20 69 6e 74 65 72  perimental inter
78d0: 66 61 63 65 73 20 61 72 65 20 73 75 62 6a 65 63  faces are subjec
78e0: 74 20 74 6f 20 63 68 61 6e 67 65 20 69 6e 20 70  t to change in p
78f0: 6f 69 6e 74 20 72 65 6c 65 61 73 65 73 2e 0a 2a  oint releases..*
7900: 2a 0a 2a 2a 20 54 68 65 73 65 20 6d 61 63 72 6f  *.** These macro
7910: 73 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76  s used to resolv
7920: 65 20 74 6f 20 76 61 72 69 6f 75 73 20 6b 69 6e  e to various kin
7930: 64 73 20 6f 66 20 63 6f 6d 70 69 6c 65 72 20 6d  ds of compiler m
7940: 61 67 69 63 20 74 68 61 74 0a 2a 2a 20 77 6f 75  agic that.** wou
7950: 6c 64 20 67 65 6e 65 72 61 74 65 20 77 61 72 6e  ld generate warn
7960: 69 6e 67 20 6d 65 73 73 61 67 65 73 20 77 68 65  ing messages whe
7970: 6e 20 74 68 65 79 20 77 65 72 65 20 75 73 65 64  n they were used
7980: 2e 20 20 42 75 74 20 74 68 61 74 0a 2a 2a 20 63  .  But that.** c
7990: 6f 6d 70 69 6c 65 72 20 6d 61 67 69 63 20 65 6e  ompiler magic en
79a0: 64 65 64 20 75 70 20 67 65 6e 65 72 61 74 69 6e  ded up generatin
79b0: 67 20 73 75 63 68 20 61 20 66 6c 75 72 72 79 20  g such a flurry 
79c0: 6f 66 20 62 75 67 20 72 65 70 6f 72 74 73 0a 2a  of bug reports.*
79d0: 2a 20 74 68 61 74 20 77 65 20 68 61 76 65 20 74  * that we have t
79e0: 61 6b 65 6e 20 69 74 20 61 6c 6c 20 6f 75 74 20  aken it all out 
79f0: 61 6e 64 20 67 6f 6e 65 20 62 61 63 6b 20 74 6f  and gone back to
7a00: 20 75 73 69 6e 67 20 73 69 6d 70 6c 65 0a 2a 2a   using simple.**
7a10: 20 6e 6f 6f 70 20 6d 61 63 72 6f 73 2e 0a 2a 2f   noop macros..*/
7a20: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
7a30: 44 45 50 52 45 43 41 54 45 44 0a 23 64 65 66 69  DEPRECATED.#defi
7a40: 6e 65 20 53 51 4c 49 54 45 5f 45 58 50 45 52 49  ne SQLITE_EXPERI
7a50: 4d 45 4e 54 41 4c 0a 0a 2f 2a 0a 2a 2a 20 45 6e  MENTAL../*.** En
7a60: 73 75 72 65 20 74 68 65 73 65 20 73 79 6d 62 6f  sure these symbo
7a70: 6c 73 20 77 65 72 65 20 6e 6f 74 20 64 65 66 69  ls were not defi
7a80: 6e 65 64 20 62 79 20 73 6f 6d 65 20 70 72 65 76  ned by some prev
7a90: 69 6f 75 73 20 68 65 61 64 65 72 20 66 69 6c 65  ious header file
7aa0: 2e 0a 2a 2f 0a 23 69 66 64 65 66 20 53 51 4c 49  ..*/.#ifdef SQLI
7ab0: 54 45 5f 56 45 52 53 49 4f 4e 0a 23 20 75 6e 64  TE_VERSION.# und
7ac0: 65 66 20 53 51 4c 49 54 45 5f 56 45 52 53 49 4f  ef SQLITE_VERSIO
7ad0: 4e 0a 23 65 6e 64 69 66 0a 23 69 66 64 65 66 20  N.#endif.#ifdef 
7ae0: 53 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e  SQLITE_VERSION_N
7af0: 55 4d 42 45 52 0a 23 20 75 6e 64 65 66 20 53 51  UMBER.# undef SQ
7b00: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d  LITE_VERSION_NUM
7b10: 42 45 52 0a 23 65 6e 64 69 66 0a 0a 2f 2a 0a 2a  BER.#endif../*.*
7b20: 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70  * CAPI3REF: Comp
7b30: 69 6c 65 2d 54 69 6d 65 20 4c 69 62 72 61 72 79  ile-Time Library
7b40: 20 56 65 72 73 69 6f 6e 20 4e 75 6d 62 65 72 73   Version Numbers
7b50: 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20 5b 53 51  .**.** ^(The [SQ
7b60: 4c 49 54 45 5f 56 45 52 53 49 4f 4e 5d 20 43 20  LITE_VERSION] C 
7b70: 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
7b80: 72 6f 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65  ro in the sqlite
7b90: 33 2e 68 20 68 65 61 64 65 72 0a 2a 2a 20 65 76  3.h header.** ev
7ba0: 61 6c 75 61 74 65 73 20 74 6f 20 61 20 73 74 72  aluates to a str
7bb0: 69 6e 67 20 6c 69 74 65 72 61 6c 20 74 68 61 74  ing literal that
7bc0: 20 69 73 20 74 68 65 20 53 51 4c 69 74 65 20 76   is the SQLite v
7bd0: 65 72 73 69 6f 6e 20 69 6e 20 74 68 65 0a 2a 2a  ersion in the.**
7be0: 20 66 6f 72 6d 61 74 20 22 58 2e 59 2e 5a 22 20   format "X.Y.Z" 
7bf0: 77 68 65 72 65 20 58 20 69 73 20 74 68 65 20 6d  where X is the m
7c00: 61 6a 6f 72 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ajor version num
7c10: 62 65 72 20 28 61 6c 77 61 79 73 20 33 20 66 6f  ber (always 3 fo
7c20: 72 0a 2a 2a 20 53 51 4c 69 74 65 33 29 20 61 6e  r.** SQLite3) an
7c30: 64 20 59 20 69 73 20 74 68 65 20 6d 69 6e 6f 72  d Y is the minor
7c40: 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20   version number 
7c50: 61 6e 64 20 5a 20 69 73 20 74 68 65 20 72 65 6c  and Z is the rel
7c60: 65 61 73 65 20 6e 75 6d 62 65 72 2e 29 5e 0a 2a  ease number.)^.*
7c70: 2a 20 5e 28 54 68 65 20 5b 53 51 4c 49 54 45 5f  * ^(The [SQLITE_
7c80: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d 20  VERSION_NUMBER] 
7c90: 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d  C preprocessor m
7ca0: 61 63 72 6f 20 72 65 73 6f 6c 76 65 73 20 74 6f  acro resolves to
7cb0: 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 77   an integer.** w
7cc0: 69 74 68 20 74 68 65 20 76 61 6c 75 65 20 28 58  ith the value (X
7cd0: 2a 31 30 30 30 30 30 30 20 2b 20 59 2a 31 30 30  *1000000 + Y*100
7ce0: 30 20 2b 20 5a 29 20 77 68 65 72 65 20 58 2c 20  0 + Z) where X, 
7cf0: 59 2c 20 61 6e 64 20 5a 20 61 72 65 20 74 68 65  Y, and Z are the
7d00: 20 73 61 6d 65 0a 2a 2a 20 6e 75 6d 62 65 72 73   same.** numbers
7d10: 20 75 73 65 64 20 69 6e 20 5b 53 51 4c 49 54 45   used in [SQLITE
7d20: 5f 56 45 52 53 49 4f 4e 5d 2e 29 5e 0a 2a 2a 20  _VERSION].)^.** 
7d30: 54 68 65 20 53 51 4c 49 54 45 5f 56 45 52 53 49  The SQLITE_VERSI
7d40: 4f 4e 5f 4e 55 4d 42 45 52 20 66 6f 72 20 61 6e  ON_NUMBER for an
7d50: 79 20 67 69 76 65 6e 20 72 65 6c 65 61 73 65 20  y given release 
7d60: 6f 66 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  of SQLite will a
7d70: 6c 73 6f 0a 2a 2a 20 62 65 20 6c 61 72 67 65 72  lso.** be larger
7d80: 20 74 68 61 6e 20 74 68 65 20 72 65 6c 65 61 73   than the releas
7d90: 65 20 66 72 6f 6d 20 77 68 69 63 68 20 69 74 20  e from which it 
7da0: 69 73 20 64 65 72 69 76 65 64 2e 20 20 45 69 74  is derived.  Eit
7db0: 68 65 72 20 59 20 77 69 6c 6c 0a 2a 2a 20 62 65  her Y will.** be
7dc0: 20 68 65 6c 64 20 63 6f 6e 73 74 61 6e 74 20 61   held constant a
7dd0: 6e 64 20 5a 20 77 69 6c 6c 20 62 65 20 69 6e 63  nd Z will be inc
7de0: 72 65 6d 65 6e 74 65 64 20 6f 72 20 65 6c 73 65  remented or else
7df0: 20 59 20 77 69 6c 6c 20 62 65 20 69 6e 63 72 65   Y will be incre
7e00: 6d 65 6e 74 65 64 0a 2a 2a 20 61 6e 64 20 5a 20  mented.** and Z 
7e10: 77 69 6c 6c 20 62 65 20 72 65 73 65 74 20 74 6f  will be reset to
7e20: 20 7a 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 53 69 6e   zero..**.** Sin
7e30: 63 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 36 2e  ce [version 3.6.
7e40: 31 38 5d 20 28 5b 64 61 74 65 6f 66 3a 33 2e 36  18] ([dateof:3.6
7e50: 2e 31 38 5d 29 2c 20 0a 2a 2a 20 53 51 4c 69 74  .18]), .** SQLit
7e60: 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 68 61  e source code ha
7e70: 73 20 62 65 65 6e 20 73 74 6f 72 65 64 20 69 6e  s been stored in
7e80: 20 74 68 65 0a 2a 2a 20 3c 61 20 68 72 65 66 3d   the.** <a href=
7e90: 22 68 74 74 70 3a 2f 2f 77 77 77 2e 66 6f 73 73  "http://www.foss
7ea0: 69 6c 2d 73 63 6d 2e 6f 72 67 2f 22 3e 46 6f 73  il-scm.org/">Fos
7eb0: 73 69 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  sil configuratio
7ec0: 6e 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 2a 2a 20  n management.** 
7ed0: 73 79 73 74 65 6d 3c 2f 61 3e 2e 20 20 5e 54 68  system</a>.  ^Th
7ee0: 65 20 53 51 4c 49 54 45 5f 53 4f 55 52 43 45 5f  e SQLITE_SOURCE_
7ef0: 49 44 20 6d 61 63 72 6f 20 65 76 61 6c 75 61 74  ID macro evaluat
7f00: 65 73 20 74 6f 0a 2a 2a 20 61 20 73 74 72 69 6e  es to.** a strin
7f10: 67 20 77 68 69 63 68 20 69 64 65 6e 74 69 66 69  g which identifi
7f20: 65 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 20  es a particular 
7f30: 63 68 65 63 6b 2d 69 6e 20 6f 66 20 53 51 4c 69  check-in of SQLi
7f40: 74 65 0a 2a 2a 20 77 69 74 68 69 6e 20 69 74 73  te.** within its
7f50: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6d   configuration m
7f60: 61 6e 61 67 65 6d 65 6e 74 20 73 79 73 74 65 6d  anagement system
7f70: 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 53  .  ^The SQLITE_S
7f80: 4f 55 52 43 45 5f 49 44 0a 2a 2a 20 73 74 72 69  OURCE_ID.** stri
7f90: 6e 67 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20  ng contains the 
7fa0: 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 6f 66  date and time of
7fb0: 20 74 68 65 20 63 68 65 63 6b 2d 69 6e 20 28 55   the check-in (U
7fc0: 54 43 29 20 61 6e 64 20 61 20 53 48 41 31 0a 2a  TC) and a SHA1.*
7fd0: 2a 20 6f 72 20 53 48 41 33 2d 32 35 36 20 68 61  * or SHA3-256 ha
7fe0: 73 68 20 6f 66 20 74 68 65 20 65 6e 74 69 72 65  sh of the entire
7ff0: 20 73 6f 75 72 63 65 20 74 72 65 65 2e 20 20 49   source tree.  I
8000: 66 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  f the source cod
8010: 65 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 65 64  e has.** been ed
8020: 69 74 65 64 20 69 6e 20 61 6e 79 20 77 61 79 20  ited in any way 
8030: 73 69 6e 63 65 20 69 74 20 77 61 73 20 6c 61 73  since it was las
8040: 74 20 63 68 65 63 6b 65 64 20 69 6e 2c 20 74 68  t checked in, th
8050: 65 6e 20 74 68 65 20 6c 61 73 74 0a 2a 2a 20 66  en the last.** f
8060: 6f 75 72 20 68 65 78 61 64 65 63 69 6d 61 6c 20  our hexadecimal 
8070: 64 69 67 69 74 73 20 6f 66 20 74 68 65 20 68 61  digits of the ha
8080: 73 68 20 6d 61 79 20 62 65 20 6d 6f 64 69 66 69  sh may be modifi
8090: 65 64 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  ed..**.** See al
80a0: 73 6f 3a 20 5b 73 71 6c 69 74 65 33 5f 6c 69 62  so: [sqlite3_lib
80b0: 76 65 72 73 69 6f 6e 28 29 5d 2c 0a 2a 2a 20 5b  version()],.** [
80c0: 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73 69  sqlite3_libversi
80d0: 6f 6e 5f 6e 75 6d 62 65 72 28 29 5d 2c 20 5b 73  on_number()], [s
80e0: 71 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28  qlite3_sourceid(
80f0: 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 5f 76  )],.** [sqlite_v
8100: 65 72 73 69 6f 6e 28 29 5d 20 61 6e 64 20 5b 73  ersion()] and [s
8110: 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28  qlite_source_id(
8120: 29 5d 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53  )]..*/.#define S
8130: 51 4c 49 54 45 5f 56 45 52 53 49 4f 4e 20 20 20  QLITE_VERSION   
8140: 20 20 20 20 20 22 33 2e 32 38 2e 30 22 0a 23 64       "3.28.0".#d
8150: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 56 45 52  efine SQLITE_VER
8160: 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 33 30 32 38  SION_NUMBER 3028
8170: 30 30 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  000.#define SQLI
8180: 54 45 5f 53 4f 55 52 43 45 5f 49 44 20 20 20 20  TE_SOURCE_ID    
8190: 20 20 22 32 30 31 39 2d 30 34 2d 31 36 20 31 39    "2019-04-16 19
81a0: 3a 34 39 3a 35 33 20 38 38 34 62 34 62 37 65 35  :49:53 884b4b7e5
81b0: 30 32 62 34 65 39 39 31 36 37 37 62 35 33 39 37  02b4e991677b5397
81c0: 31 32 37 37 61 64 66 61 66 30 61 30 34 61 32 38  1277adfaf0a04a28
81d0: 34 66 38 65 34 38 33 65 32 35 35 33 64 30 66 38  4f8e483e2553d0f8
81e0: 33 31 35 36 62 35 30 22 0a 0a 2f 2a 0a 2a 2a 20  3156b50"../*.** 
81f0: 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54 69  CAPI3REF: Run-Ti
8200: 6d 65 20 4c 69 62 72 61 72 79 20 56 65 72 73 69  me Library Versi
8210: 6f 6e 20 4e 75 6d 62 65 72 73 0a 2a 2a 20 4b 45  on Numbers.** KE
8220: 59 57 4f 52 44 53 3a 20 73 71 6c 69 74 65 33 5f  YWORDS: sqlite3_
8230: 76 65 72 73 69 6f 6e 20 73 71 6c 69 74 65 33 5f  version sqlite3_
8240: 73 6f 75 72 63 65 69 64 0a 2a 2a 0a 2a 2a 20 54  sourceid.**.** T
8250: 68 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20  hese interfaces 
8260: 70 72 6f 76 69 64 65 20 74 68 65 20 73 61 6d 65  provide the same
8270: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 73 20   information as 
8280: 74 68 65 20 5b 53 51 4c 49 54 45 5f 56 45 52 53  the [SQLITE_VERS
8290: 49 4f 4e 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54 45  ION],.** [SQLITE
82a0: 5f 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d  _VERSION_NUMBER]
82b0: 2c 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f 53 4f  , and [SQLITE_SO
82c0: 55 52 43 45 5f 49 44 5d 20 43 20 70 72 65 70 72  URCE_ID] C prepr
82d0: 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 73 0a 2a  ocessor macros.*
82e0: 2a 20 62 75 74 20 61 72 65 20 61 73 73 6f 63 69  * but are associ
82f0: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 6c 69  ated with the li
8300: 62 72 61 72 79 20 69 6e 73 74 65 61 64 20 6f 66  brary instead of
8310: 20 74 68 65 20 68 65 61 64 65 72 20 66 69 6c 65   the header file
8320: 2e 20 20 5e 28 43 61 75 74 69 6f 75 73 0a 2a 2a  .  ^(Cautious.**
8330: 20 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d 69 67   programmers mig
8340: 68 74 20 69 6e 63 6c 75 64 65 20 61 73 73 65 72  ht include asser
8350: 74 28 29 20 73 74 61 74 65 6d 65 6e 74 73 20 69  t() statements i
8360: 6e 20 74 68 65 69 72 20 61 70 70 6c 69 63 61 74  n their applicat
8370: 69 6f 6e 20 74 6f 0a 2a 2a 20 76 65 72 69 66 79  ion to.** verify
8380: 20 74 68 61 74 20 76 61 6c 75 65 73 20 72 65 74   that values ret
8390: 75 72 6e 65 64 20 62 79 20 74 68 65 73 65 20 69  urned by these i
83a0: 6e 74 65 72 66 61 63 65 73 20 6d 61 74 63 68 20  nterfaces match 
83b0: 74 68 65 20 6d 61 63 72 6f 73 20 69 6e 0a 2a 2a  the macros in.**
83c0: 20 74 68 65 20 68 65 61 64 65 72 2c 20 61 6e 64   the header, and
83d0: 20 74 68 75 73 20 65 6e 73 75 72 65 20 74 68 61   thus ensure tha
83e0: 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  t the applicatio
83f0: 6e 20 69 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64  n is.** compiled
8400: 20 77 69 74 68 20 6d 61 74 63 68 69 6e 67 20 6c   with matching l
8410: 69 62 72 61 72 79 20 61 6e 64 20 68 65 61 64 65  ibrary and heade
8420: 72 20 66 69 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 3c  r files..**.** <
8430: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
8440: 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 71 6c 69  .** assert( sqli
8450: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e  te3_libversion_n
8460: 75 6d 62 65 72 28 29 3d 3d 53 51 4c 49 54 45 5f  umber()==SQLITE_
8470: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 20 29  VERSION_NUMBER )
8480: 3b 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 74 72  ;.** assert( str
8490: 6e 63 6d 70 28 73 71 6c 69 74 65 33 5f 73 6f 75  ncmp(sqlite3_sou
84a0: 72 63 65 69 64 28 29 2c 53 51 4c 49 54 45 5f 53  rceid(),SQLITE_S
84b0: 4f 55 52 43 45 5f 49 44 2c 38 30 29 3d 3d 30 20  OURCE_ID,80)==0 
84c0: 29 3b 0a 2a 2a 20 61 73 73 65 72 74 28 20 73 74  );.** assert( st
84d0: 72 63 6d 70 28 73 71 6c 69 74 65 33 5f 6c 69 62  rcmp(sqlite3_lib
84e0: 76 65 72 73 69 6f 6e 28 29 2c 53 51 4c 49 54 45  version(),SQLITE
84f0: 5f 56 45 52 53 49 4f 4e 29 3d 3d 30 20 29 3b 0a  _VERSION)==0 );.
8500: 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  ** </pre></block
8510: 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  quote>)^.**.** ^
8520: 54 68 65 20 73 71 6c 69 74 65 33 5f 76 65 72 73  The sqlite3_vers
8530: 69 6f 6e 5b 5d 20 73 74 72 69 6e 67 20 63 6f 6e  ion[] string con
8540: 73 74 61 6e 74 20 63 6f 6e 74 61 69 6e 73 20 74  stant contains t
8550: 68 65 20 74 65 78 74 20 6f 66 20 5b 53 51 4c 49  he text of [SQLI
8560: 54 45 5f 56 45 52 53 49 4f 4e 5d 0a 2a 2a 20 6d  TE_VERSION].** m
8570: 61 63 72 6f 2e 20 20 5e 54 68 65 20 73 71 6c 69  acro.  ^The sqli
8580: 74 65 33 5f 6c 69 62 76 65 72 73 69 6f 6e 28 29  te3_libversion()
8590: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
85a0: 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
85b0: 68 65 0a 2a 2a 20 74 6f 20 74 68 65 20 73 71 6c  he.** to the sql
85c0: 69 74 65 33 5f 76 65 72 73 69 6f 6e 5b 5d 20 73  ite3_version[] s
85d0: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 2e 20  tring constant. 
85e0: 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 69 62   The sqlite3_lib
85f0: 76 65 72 73 69 6f 6e 28 29 0a 2a 2a 20 66 75 6e  version().** fun
8600: 63 74 69 6f 6e 20 69 73 20 70 72 6f 76 69 64 65  ction is provide
8610: 64 20 66 6f 72 20 75 73 65 20 69 6e 20 44 4c 4c  d for use in DLL
8620: 73 20 73 69 6e 63 65 20 44 4c 4c 20 75 73 65 72  s since DLL user
8630: 73 20 75 73 75 61 6c 6c 79 20 64 6f 20 6e 6f 74  s usually do not
8640: 20 68 61 76 65 0a 2a 2a 20 64 69 72 65 63 74 20   have.** direct 
8650: 61 63 63 65 73 73 20 74 6f 20 73 74 72 69 6e 67  access to string
8660: 20 63 6f 6e 73 74 61 6e 74 73 20 77 69 74 68 69   constants withi
8670: 6e 20 74 68 65 20 44 4c 4c 2e 20 20 5e 54 68 65  n the DLL.  ^The
8680: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6c 69 62 76  .** sqlite3_libv
8690: 65 72 73 69 6f 6e 5f 6e 75 6d 62 65 72 28 29 20  ersion_number() 
86a0: 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73  function returns
86b0: 20 61 6e 20 69 6e 74 65 67 65 72 20 65 71 75 61   an integer equa
86c0: 6c 20 74 6f 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  l to.** [SQLITE_
86d0: 56 45 52 53 49 4f 4e 5f 4e 55 4d 42 45 52 5d 2e  VERSION_NUMBER].
86e0: 20 20 5e 28 54 68 65 20 73 71 6c 69 74 65 33 5f    ^(The sqlite3_
86f0: 73 6f 75 72 63 65 69 64 28 29 20 66 75 6e 63 74  sourceid() funct
8700: 69 6f 6e 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20  ion returns .** 
8710: 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73  a pointer to a s
8720: 74 72 69 6e 67 20 63 6f 6e 73 74 61 6e 74 20 77  tring constant w
8730: 68 6f 73 65 20 76 61 6c 75 65 20 69 73 20 74 68  hose value is th
8740: 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 0a 2a  e same as the .*
8750: 2a 20 5b 53 51 4c 49 54 45 5f 53 4f 55 52 43 45  * [SQLITE_SOURCE
8760: 5f 49 44 5d 20 43 20 70 72 65 70 72 6f 63 65 73  _ID] C preproces
8770: 73 6f 72 20 6d 61 63 72 6f 2e 20 20 45 78 63 65  sor macro.  Exce
8780: 70 74 20 69 66 20 53 51 4c 69 74 65 20 69 73 20  pt if SQLite is 
8790: 62 75 69 6c 74 0a 2a 2a 20 75 73 69 6e 67 20 61  built.** using a
87a0: 6e 20 65 64 69 74 65 64 20 63 6f 70 79 20 6f 66  n edited copy of
87b0: 20 5b 74 68 65 20 61 6d 61 6c 67 61 6d 61 74 69   [the amalgamati
87c0: 6f 6e 5d 2c 20 74 68 65 6e 20 74 68 65 20 6c 61  on], then the la
87d0: 73 74 20 66 6f 75 72 20 63 68 61 72 61 63 74 65  st four characte
87e0: 72 73 0a 2a 2a 20 6f 66 20 74 68 65 20 68 61 73  rs.** of the has
87f0: 68 20 6d 69 67 68 74 20 62 65 20 64 69 66 66 65  h might be diffe
8800: 72 65 6e 74 20 66 72 6f 6d 20 5b 53 51 4c 49 54  rent from [SQLIT
8810: 45 5f 53 4f 55 52 43 45 5f 49 44 5d 2e 29 5e 0a  E_SOURCE_ID].)^.
8820: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
8830: 5b 73 71 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28  [sqlite_version(
8840: 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 5f 73  )] and [sqlite_s
8850: 6f 75 72 63 65 5f 69 64 28 29 5d 2e 0a 2a 2f 0a  ource_id()]..*/.
8860: 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74  SQLITE_API const
8870: 20 63 68 61 72 20 73 71 6c 69 74 65 33 5f 76 65   char sqlite3_ve
8880: 72 73 69 6f 6e 5b 5d 20 3d 20 53 51 4c 49 54 45  rsion[] = SQLITE
8890: 5f 56 45 52 53 49 4f 4e 3b 0a 53 51 4c 49 54 45  _VERSION;.SQLITE
88a0: 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
88b0: 2a 73 71 6c 69 74 65 33 5f 6c 69 62 76 65 72 73  *sqlite3_libvers
88c0: 69 6f 6e 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54  ion(void);.SQLIT
88d0: 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72  E_API const char
88e0: 20 2a 73 71 6c 69 74 65 33 5f 73 6f 75 72 63 65   *sqlite3_source
88f0: 69 64 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45  id(void);.SQLITE
8900: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
8910: 5f 6c 69 62 76 65 72 73 69 6f 6e 5f 6e 75 6d 62  _libversion_numb
8920: 65 72 28 76 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a  er(void);../*.**
8930: 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 54   CAPI3REF: Run-T
8940: 69 6d 65 20 4c 69 62 72 61 72 79 20 43 6f 6d 70  ime Library Comp
8950: 69 6c 61 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 20  ilation Options 
8960: 44 69 61 67 6e 6f 73 74 69 63 73 0a 2a 2a 0a 2a  Diagnostics.**.*
8970: 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 63  * ^The sqlite3_c
8980: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
8990: 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  d() function ret
89a0: 75 72 6e 73 20 30 20 6f 72 20 31 20 0a 2a 2a 20  urns 0 or 1 .** 
89b0: 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74 68  indicating wheth
89c0: 65 72 20 74 68 65 20 73 70 65 63 69 66 69 65 64  er the specified
89d0: 20 6f 70 74 69 6f 6e 20 77 61 73 20 64 65 66 69   option was defi
89e0: 6e 65 64 20 61 74 20 0a 2a 2a 20 63 6f 6d 70 69  ned at .** compi
89f0: 6c 65 20 74 69 6d 65 2e 20 20 5e 54 68 65 20 53  le time.  ^The S
8a00: 51 4c 49 54 45 5f 20 70 72 65 66 69 78 20 6d 61  QLITE_ prefix ma
8a10: 79 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f  y be omitted fro
8a20: 6d 20 74 68 65 20 0a 2a 2a 20 6f 70 74 69 6f 6e  m the .** option
8a30: 20 6e 61 6d 65 20 70 61 73 73 65 64 20 74 6f 20   name passed to 
8a40: 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f  sqlite3_compileo
8a50: 70 74 69 6f 6e 5f 75 73 65 64 28 29 2e 20 20 0a  ption_used().  .
8a60: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
8a70: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
8a80: 5f 67 65 74 28 29 20 66 75 6e 63 74 69 6f 6e 20  _get() function 
8a90: 61 6c 6c 6f 77 73 20 69 74 65 72 61 74 69 6e 67  allows iterating
8aa0: 0a 2a 2a 20 6f 76 65 72 20 74 68 65 20 6c 69 73  .** over the lis
8ab0: 74 20 6f 66 20 6f 70 74 69 6f 6e 73 20 74 68 61  t of options tha
8ac0: 74 20 77 65 72 65 20 64 65 66 69 6e 65 64 20 61  t were defined a
8ad0: 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 62  t compile time b
8ae0: 79 0a 2a 2a 20 72 65 74 75 72 6e 69 6e 67 20 74  y.** returning t
8af0: 68 65 20 4e 2d 74 68 20 63 6f 6d 70 69 6c 65 20  he N-th compile 
8b00: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 73 74 72 69  time option stri
8b10: 6e 67 2e 20 20 5e 49 66 20 4e 20 69 73 20 6f 75  ng.  ^If N is ou
8b20: 74 20 6f 66 20 72 61 6e 67 65 2c 0a 2a 2a 20 73  t of range,.** s
8b30: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8b40: 74 69 6f 6e 5f 67 65 74 28 29 20 72 65 74 75 72  tion_get() retur
8b50: 6e 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ns a NULL pointe
8b60: 72 2e 20 20 5e 54 68 65 20 53 51 4c 49 54 45 5f  r.  ^The SQLITE_
8b70: 20 0a 2a 2a 20 70 72 65 66 69 78 20 69 73 20 6f   .** prefix is o
8b80: 6d 69 74 74 65 64 20 66 72 6f 6d 20 61 6e 79 20  mitted from any 
8b90: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
8ba0: 20 62 79 20 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   by .** sqlite3_
8bb0: 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65  compileoption_ge
8bc0: 74 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 53 75 70 70  t()..**.** ^Supp
8bd0: 6f 72 74 20 66 6f 72 20 74 68 65 20 64 69 61 67  ort for the diag
8be0: 6e 6f 73 74 69 63 20 66 75 6e 63 74 69 6f 6e 73  nostic functions
8bf0: 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65   sqlite3_compile
8c00: 6f 70 74 69 6f 6e 5f 75 73 65 64 28 29 0a 2a 2a  option_used().**
8c10: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6f 6d   and sqlite3_com
8c20: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29  pileoption_get()
8c30: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 20   may be omitted 
8c40: 62 79 20 73 70 65 63 69 66 79 69 6e 67 20 74 68  by specifying th
8c50: 65 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 4d  e .** [SQLITE_OM
8c60: 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f 4e  IT_COMPILEOPTION
8c70: 5f 44 49 41 47 53 5d 20 6f 70 74 69 6f 6e 20 61  _DIAGS] option a
8c80: 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a  t compile time..
8c90: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
8ca0: 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 20 5b 73  SQL functions [s
8cb0: 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74  qlite_compileopt
8cc0: 69 6f 6e 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a  ion_used()] and.
8cd0: 2a 2a 20 5b 73 71 6c 69 74 65 5f 63 6f 6d 70 69  ** [sqlite_compi
8ce0: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 29 5d 20  leoption_get()] 
8cf0: 61 6e 64 20 74 68 65 20 5b 63 6f 6d 70 69 6c 65  and the [compile
8d00: 5f 6f 70 74 69 6f 6e 73 20 70 72 61 67 6d 61 5d  _options pragma]
8d10: 2e 0a 2a 2f 0a 23 69 66 6e 64 65 66 20 53 51 4c  ..*/.#ifndef SQL
8d20: 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49 4c 45  ITE_OMIT_COMPILE
8d30: 4f 50 54 49 4f 4e 5f 44 49 41 47 53 0a 53 51 4c  OPTION_DIAGS.SQL
8d40: 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
8d50: 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  te3_compileoptio
8d60: 6e 5f 75 73 65 64 28 63 6f 6e 73 74 20 63 68 61  n_used(const cha
8d70: 72 20 2a 7a 4f 70 74 4e 61 6d 65 29 3b 0a 53 51  r *zOptName);.SQ
8d80: 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63  LITE_API const c
8d90: 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 63 6f 6d  har *sqlite3_com
8da0: 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 28 69  pileoption_get(i
8db0: 6e 74 20 4e 29 3b 0a 23 65 6c 73 65 0a 23 20 64  nt N);.#else.# d
8dc0: 65 66 69 6e 65 20 73 71 6c 69 74 65 33 5f 63 6f  efine sqlite3_co
8dd0: 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65 64  mpileoption_used
8de0: 28 58 29 20 30 0a 23 20 64 65 66 69 6e 65 20 73  (X) 0.# define s
8df0: 71 6c 69 74 65 33 5f 63 6f 6d 70 69 6c 65 6f 70  qlite3_compileop
8e00: 74 69 6f 6e 5f 67 65 74 28 58 29 20 20 28 28 76  tion_get(X)  ((v
8e10: 6f 69 64 2a 29 30 29 0a 23 65 6e 64 69 66 0a 0a  oid*)0).#endif..
8e20: 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
8e30: 54 65 73 74 20 54 6f 20 53 65 65 20 49 66 20 54  Test To See If T
8e40: 68 65 20 4c 69 62 72 61 72 79 20 49 73 20 54 68  he Library Is Th
8e50: 72 65 61 64 73 61 66 65 0a 2a 2a 0a 2a 2a 20 5e  readsafe.**.** ^
8e60: 54 68 65 20 73 71 6c 69 74 65 33 5f 74 68 72 65  The sqlite3_thre
8e70: 61 64 73 61 66 65 28 29 20 66 75 6e 63 74 69 6f  adsafe() functio
8e80: 6e 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 20 69  n returns zero i
8e90: 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a  f and only if.**
8ea0: 20 53 51 4c 69 74 65 20 77 61 73 20 63 6f 6d 70   SQLite was comp
8eb0: 69 6c 65 64 20 77 69 74 68 20 6d 75 74 65 78 69  iled with mutexi
8ec0: 6e 67 20 63 6f 64 65 20 6f 6d 69 74 74 65 64 20  ng code omitted 
8ed0: 64 75 65 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 53  due to the.** [S
8ee0: 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
8ef0: 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
8f00: 70 74 69 6f 6e 20 62 65 69 6e 67 20 73 65 74 20  ption being set 
8f10: 74 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  to 0..**.** SQLi
8f20: 74 65 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c  te can be compil
8f30: 65 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f  ed with or witho
8f40: 75 74 20 6d 75 74 65 78 65 73 2e 20 20 57 68 65  ut mutexes.  Whe
8f50: 6e 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45  n.** the [SQLITE
8f60: 5f 54 48 52 45 41 44 53 41 46 45 5d 20 43 20 70  _THREADSAFE] C p
8f70: 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72  reprocessor macr
8f80: 6f 20 69 73 20 31 20 6f 72 20 32 2c 20 6d 75 74  o is 1 or 2, mut
8f90: 65 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62  exes.** are enab
8fa0: 6c 65 64 20 61 6e 64 20 53 51 4c 69 74 65 20 69  led and SQLite i
8fb0: 73 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 57  s threadsafe.  W
8fc0: 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  hen the.** [SQLI
8fd0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d  TE_THREADSAFE] m
8fe0: 61 63 72 6f 20 69 73 20 30 2c 20 0a 2a 2a 20 74  acro is 0, .** t
8ff0: 68 65 20 6d 75 74 65 78 65 73 20 61 72 65 20 6f  he mutexes are o
9000: 6d 69 74 74 65 64 2e 20 20 57 69 74 68 6f 75 74  mitted.  Without
9010: 20 74 68 65 20 6d 75 74 65 78 65 73 2c 20 69 74   the mutexes, it
9020: 20 69 73 20 6e 6f 74 20 73 61 66 65 0a 2a 2a 20   is not safe.** 
9030: 74 6f 20 75 73 65 20 53 51 4c 69 74 65 20 63 6f  to use SQLite co
9040: 6e 63 75 72 72 65 6e 74 6c 79 20 66 72 6f 6d 20  ncurrently from 
9050: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68  more than one th
9060: 72 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45 6e 61 62  read..**.** Enab
9070: 6c 69 6e 67 20 6d 75 74 65 78 65 73 20 69 6e 63  ling mutexes inc
9080: 75 72 73 20 61 20 6d 65 61 73 75 72 61 62 6c 65  urs a measurable
9090: 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e   performance pen
90a0: 61 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69 66 20 73  alty..** So if s
90b0: 70 65 65 64 20 69 73 20 6f 66 20 75 74 6d 6f 73  peed is of utmos
90c0: 74 20 69 6d 70 6f 72 74 61 6e 63 65 2c 20 69 74  t importance, it
90d0: 20 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20   makes sense to 
90e0: 64 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 6d  disable.** the m
90f0: 75 74 65 78 65 73 2e 20 20 42 75 74 20 66 6f 72  utexes.  But for
9100: 20 6d 61 78 69 6d 75 6d 20 73 61 66 65 74 79 2c   maximum safety,
9110: 20 6d 75 74 65 78 65 73 20 73 68 6f 75 6c 64 20   mutexes should 
9120: 62 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 5e  be enabled..** ^
9130: 54 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  The default beha
9140: 76 69 6f 72 20 69 73 20 66 6f 72 20 6d 75 74 65  vior is for mute
9150: 78 65 73 20 74 6f 20 62 65 20 65 6e 61 62 6c 65  xes to be enable
9160: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e  d..**.** This in
9170: 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75  terface can be u
9180: 73 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63  sed by an applic
9190: 61 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75  ation to make su
91a0: 72 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 76  re that the.** v
91b0: 65 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65  ersion of SQLite
91c0: 20 74 68 61 74 20 69 74 20 69 73 20 6c 69 6e 6b   that it is link
91d0: 69 6e 67 20 61 67 61 69 6e 73 74 20 77 61 73 20  ing against was 
91e0: 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
91f0: 20 74 68 65 20 64 65 73 69 72 65 64 20 73 65 74   the desired set
9200: 74 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c  ting of the [SQL
9210: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20  ITE_THREADSAFE] 
9220: 6d 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  macro..**.** Thi
9230: 73 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79  s interface only
9240: 20 72 65 70 6f 72 74 73 20 6f 6e 20 74 68 65 20   reports on the 
9250: 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 75 74  compile-time mut
9260: 65 78 20 73 65 74 74 69 6e 67 0a 2a 2a 20 6f 66  ex setting.** of
9270: 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52   the [SQLITE_THR
9280: 45 41 44 53 41 46 45 5d 20 66 6c 61 67 2e 20 20  EADSAFE] flag.  
9290: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
92a0: 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 53 51  piled with.** SQ
92b0: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
92c0: 31 20 6f 72 20 3d 32 20 74 68 65 6e 20 6d 75 74  1 or =2 then mut
92d0: 65 78 65 73 20 61 72 65 20 65 6e 61 62 6c 65 64  exes are enabled
92e0: 20 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 0a   by default but.
92f0: 2a 2a 20 63 61 6e 20 62 65 20 66 75 6c 6c 79 20  ** can be fully 
9300: 6f 72 20 70 61 72 74 69 61 6c 6c 79 20 64 69 73  or partially dis
9310: 61 62 6c 65 64 20 75 73 69 6e 67 20 61 20 63 61  abled using a ca
9320: 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ll to [sqlite3_c
9330: 6f 6e 66 69 67 28 29 5d 0a 2a 2a 20 77 69 74 68  onfig()].** with
9340: 20 74 68 65 20 76 65 72 62 73 20 5b 53 51 4c 49   the verbs [SQLI
9350: 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
9360: 54 48 52 45 41 44 5d 2c 20 5b 53 51 4c 49 54 45  THREAD], [SQLITE
9370: 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52  _CONFIG_MULTITHR
9380: 45 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b 53 51 4c  EAD],.** or [SQL
9390: 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
93a0: 4c 49 5a 45 44 5d 2e 20 20 5e 28 54 68 65 20 72  LIZED].  ^(The r
93b0: 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74  eturn value of t
93c0: 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 74 68  he.** sqlite3_th
93d0: 72 65 61 64 73 61 66 65 28 29 20 66 75 6e 63 74  readsafe() funct
93e0: 69 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c 79 20 74  ion shows only t
93f0: 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  he compile-time 
9400: 73 65 74 74 69 6e 67 20 6f 66 0a 2a 2a 20 74 68  setting of.** th
9410: 72 65 61 64 20 73 61 66 65 74 79 2c 20 6e 6f 74  read safety, not
9420: 20 61 6e 79 20 72 75 6e 2d 74 69 6d 65 20 63 68   any run-time ch
9430: 61 6e 67 65 73 20 74 6f 20 74 68 61 74 20 73 65  anges to that se
9440: 74 74 69 6e 67 20 6d 61 64 65 20 62 79 0a 2a 2a  tting made by.**
9450: 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28   sqlite3_config(
9460: 29 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  ). In other word
9470: 73 2c 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  s, the return va
9480: 6c 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  lue from sqlite3
9490: 5f 74 68 72 65 61 64 73 61 66 65 28 29 0a 2a 2a  _threadsafe().**
94a0: 20 69 73 20 75 6e 63 68 61 6e 67 65 64 20 62 79   is unchanged by
94b0: 20 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65   calls to sqlite
94c0: 33 5f 63 6f 6e 66 69 67 28 29 2e 29 5e 0a 2a 2a  3_config().)^.**
94d0: 0a 2a 2a 20 53 65 65 20 74 68 65 20 5b 74 68 72  .** See the [thr
94e0: 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63  eading mode] doc
94f0: 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61  umentation for a
9500: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
9510: 61 74 69 6f 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ation..*/.SQLITE
9520: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
9530: 5f 74 68 72 65 61 64 73 61 66 65 28 76 6f 69 64  _threadsafe(void
9540: 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
9550: 45 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e  EF: Database Con
9560: 6e 65 63 74 69 6f 6e 20 48 61 6e 64 6c 65 0a 2a  nection Handle.*
9570: 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 64 61 74  * KEYWORDS: {dat
9580: 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
9590: 7d 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  } {database conn
95a0: 65 63 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 45  ections}.**.** E
95b0: 61 63 68 20 6f 70 65 6e 20 53 51 4c 69 74 65 20  ach open SQLite 
95c0: 64 61 74 61 62 61 73 65 20 69 73 20 72 65 70 72  database is repr
95d0: 65 73 65 6e 74 65 64 20 62 79 20 61 20 70 6f 69  esented by a poi
95e0: 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61  nter to an insta
95f0: 6e 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6f 70  nce of.** the op
9600: 61 71 75 65 20 73 74 72 75 63 74 75 72 65 20 6e  aque structure n
9610: 61 6d 65 64 20 22 73 71 6c 69 74 65 33 22 2e 20  amed "sqlite3". 
9620: 20 49 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f   It is useful to
9630: 20 74 68 69 6e 6b 20 6f 66 20 61 6e 20 73 71 6c   think of an sql
9640: 69 74 65 33 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  ite3.** pointer 
9650: 61 73 20 61 6e 20 6f 62 6a 65 63 74 2e 20 20 54  as an object.  T
9660: 68 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  he [sqlite3_open
9670: 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70  ()], [sqlite3_op
9680: 65 6e 31 36 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20  en16()], and.** 
9690: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
96a0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61  ()] interfaces a
96b0: 72 65 20 69 74 73 20 63 6f 6e 73 74 72 75 63 74  re its construct
96c0: 6f 72 73 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65  ors, and [sqlite
96d0: 33 5f 63 6c 6f 73 65 28 29 5d 0a 2a 2a 20 61 6e  3_close()].** an
96e0: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
96f0: 5f 76 32 28 29 5d 20 61 72 65 20 69 74 73 20 64  _v2()] are its d
9700: 65 73 74 72 75 63 74 6f 72 73 2e 20 20 54 68 65  estructors.  The
9710: 72 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68 65  re are many othe
9720: 72 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  r.** interfaces 
9730: 28 73 75 63 68 20 61 73 0a 2a 2a 20 5b 73 71 6c  (such as.** [sql
9740: 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28  ite3_prepare_v2(
9750: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 72 65  )], [sqlite3_cre
9760: 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 2c  ate_function()],
9770: 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
9780: 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d  _busy_timeout()]
9790: 20 74 6f 20 6e 61 6d 65 20 62 75 74 20 74 68 72   to name but thr
97a0: 65 65 29 20 74 68 61 74 20 61 72 65 20 6d 65 74  ee) that are met
97b0: 68 6f 64 73 20 6f 6e 20 61 6e 0a 2a 2a 20 73 71  hods on an.** sq
97c0: 6c 69 74 65 33 20 6f 62 6a 65 63 74 2e 0a 2a 2f  lite3 object..*/
97d0: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
97e0: 73 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 3b  sqlite3 sqlite3;
97f0: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
9800: 3a 20 36 34 2d 42 69 74 20 49 6e 74 65 67 65 72  : 64-Bit Integer
9810: 20 54 79 70 65 73 0a 2a 2a 20 4b 45 59 57 4f 52   Types.** KEYWOR
9820: 44 53 3a 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  DS: sqlite_int64
9830: 20 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 0a 2a   sqlite_uint64.*
9840: 2a 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65  *.** Because the
9850: 72 65 20 69 73 20 6e 6f 20 63 72 6f 73 73 2d 70  re is no cross-p
9860: 6c 61 74 66 6f 72 6d 20 77 61 79 20 74 6f 20 73  latform way to s
9870: 70 65 63 69 66 79 20 36 34 2d 62 69 74 20 69 6e  pecify 64-bit in
9880: 74 65 67 65 72 20 74 79 70 65 73 0a 2a 2a 20 53  teger types.** S
9890: 51 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 74  QLite includes t
98a0: 79 70 65 64 65 66 73 20 66 6f 72 20 36 34 2d 62  ypedefs for 64-b
98b0: 69 74 20 73 69 67 6e 65 64 20 61 6e 64 20 75 6e  it signed and un
98c0: 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2e  signed integers.
98d0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
98e0: 65 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c  e3_int64 and sql
98f0: 69 74 65 33 5f 75 69 6e 74 36 34 20 61 72 65 20  ite3_uint64 are 
9900: 74 68 65 20 70 72 65 66 65 72 72 65 64 20 74 79  the preferred ty
9910: 70 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 0a  pe definitions..
9920: 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 5f 69 6e  ** The sqlite_in
9930: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
9940: 69 6e 74 36 34 20 74 79 70 65 73 20 61 72 65 20  int64 types are 
9950: 73 75 70 70 6f 72 74 65 64 20 66 6f 72 20 62 61  supported for ba
9960: 63 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d 70 61  ckwards.** compa
9970: 74 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 0a 2a  tibility only..*
9980: 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
9990: 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  3_int64 and sqli
99a0: 74 65 5f 69 6e 74 36 34 20 74 79 70 65 73 20 63  te_int64 types c
99b0: 61 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65 72  an store integer
99c0: 20 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65   values.** betwe
99d0: 65 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38 35  en -922337203685
99e0: 34 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32  4775808 and +922
99f0: 33 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37  3372036854775807
9a00: 20 69 6e 63 6c 75 73 69 76 65 2e 20 20 5e 54 68   inclusive.  ^Th
9a10: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 69 6e  e.** sqlite3_uin
9a20: 74 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75  t64 and sqlite_u
9a30: 69 6e 74 36 34 20 74 79 70 65 73 20 63 61 6e 20  int64 types can 
9a40: 73 74 6f 72 65 20 69 6e 74 65 67 65 72 20 76 61  store integer va
9a50: 6c 75 65 73 20 0a 2a 2a 20 62 65 74 77 65 65 6e  lues .** between
9a60: 20 30 20 61 6e 64 20 2b 31 38 34 34 36 37 34 34   0 and +18446744
9a70: 30 37 33 37 30 39 35 35 31 36 31 35 20 69 6e 63  073709551615 inc
9a80: 6c 75 73 69 76 65 2e 0a 2a 2f 0a 23 69 66 64 65  lusive..*/.#ifde
9a90: 66 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54  f SQLITE_INT64_T
9aa0: 59 50 45 0a 20 20 74 79 70 65 64 65 66 20 53 51  YPE.  typedef SQ
9ab0: 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20  LITE_INT64_TYPE 
9ac0: 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 23 20  sqlite_int64;.# 
9ad0: 69 66 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e  ifdef SQLITE_UIN
9ae0: 54 36 34 5f 54 59 50 45 0a 20 20 20 20 74 79 70  T64_TYPE.    typ
9af0: 65 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e 54  edef SQLITE_UINT
9b00: 36 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75  64_TYPE sqlite_u
9b10: 69 6e 74 36 34 3b 0a 23 20 65 6c 73 65 20 20 0a  int64;.# else  .
9b20: 20 20 20 20 74 79 70 65 64 65 66 20 75 6e 73 69      typedef unsi
9b30: 67 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e 54 36  gned SQLITE_INT6
9b40: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69  4_TYPE sqlite_ui
9b50: 6e 74 36 34 3b 0a 23 20 65 6e 64 69 66 0a 23 65  nt64;.# endif.#e
9b60: 6c 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43  lif defined(_MSC
9b70: 5f 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65 64  _VER) || defined
9b80: 28 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20  (__BORLANDC__). 
9b90: 20 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36 34   typedef __int64
9ba0: 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20   sqlite_int64;. 
9bb0: 20 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65   typedef unsigne
9bc0: 64 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  d __int64 sqlite
9bd0: 5f 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a 20  _uint64;.#else. 
9be0: 20 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f   typedef long lo
9bf0: 6e 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69 6e  ng int sqlite_in
9c00: 74 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75  t64;.  typedef u
9c10: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e  nsigned long lon
9c20: 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69 6e  g int sqlite_uin
9c30: 74 36 34 3b 0a 23 65 6e 64 69 66 0a 74 79 70 65  t64;.#endif.type
9c40: 64 65 66 20 73 71 6c 69 74 65 5f 69 6e 74 36 34  def sqlite_int64
9c50: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 3b 0a   sqlite3_int64;.
9c60: 74 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 75  typedef sqlite_u
9c70: 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 69  int64 sqlite3_ui
9c80: 6e 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20  nt64;../*.** If 
9c90: 63 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20 61 20  compiling for a 
9ca0: 70 72 6f 63 65 73 73 6f 72 20 74 68 61 74 20 6c  processor that l
9cb0: 61 63 6b 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f  acks floating po
9cc0: 69 6e 74 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20  int support,.** 
9cd0: 73 75 62 73 74 69 74 75 74 65 20 69 6e 74 65 67  substitute integ
9ce0: 65 72 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d  er for floating-
9cf0: 70 6f 69 6e 74 2e 0a 2a 2f 0a 23 69 66 64 65 66  point..*/.#ifdef
9d00: 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f   SQLITE_OMIT_FLO
9d10: 41 54 49 4e 47 5f 50 4f 49 4e 54 0a 23 20 64 65  ATING_POINT.# de
9d20: 66 69 6e 65 20 64 6f 75 62 6c 65 20 73 71 6c 69  fine double sqli
9d30: 74 65 33 5f 69 6e 74 36 34 0a 23 65 6e 64 69 66  te3_int64.#endif
9d40: 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
9d50: 3a 20 43 6c 6f 73 69 6e 67 20 41 20 44 61 74 61  : Closing A Data
9d60: 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a  base Connection.
9d70: 2a 2a 20 44 45 53 54 52 55 43 54 4f 52 3a 20 73  ** DESTRUCTOR: s
9d80: 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68  qlite3.**.** ^Th
9d90: 65 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28  e sqlite3_close(
9da0: 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c  ) and sqlite3_cl
9db0: 6f 73 65 5f 76 32 28 29 20 72 6f 75 74 69 6e 65  ose_v2() routine
9dc0: 73 20 61 72 65 20 64 65 73 74 72 75 63 74 6f 72  s are destructor
9dd0: 73 0a 2a 2a 20 66 6f 72 20 74 68 65 20 5b 73 71  s.** for the [sq
9de0: 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 2e 0a 2a  lite3] object..*
9df0: 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69  * ^Calls to sqli
9e00: 74 65 33 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20  te3_close() and 
9e10: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32  sqlite3_close_v2
9e20: 28 29 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  () return [SQLIT
9e30: 45 5f 4f 4b 5d 20 69 66 0a 2a 2a 20 74 68 65 20  E_OK] if.** the 
9e40: 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
9e50: 20 69 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79   is successfully
9e60: 20 64 65 73 74 72 6f 79 65 64 20 61 6e 64 20 61   destroyed and a
9e70: 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a  ll associated.**
9e80: 20 72 65 73 6f 75 72 63 65 73 20 61 72 65 20 64   resources are d
9e90: 65 61 6c 6c 6f 63 61 74 65 64 2e 0a 2a 2a 0a 2a  eallocated..**.*
9ea0: 2a 20 5e 49 66 20 74 68 65 20 64 61 74 61 62 61  * ^If the databa
9eb0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  se connection is
9ec0: 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
9ed0: 20 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65   unfinalized pre
9ee0: 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65  pared.** stateme
9ef0: 6e 74 73 20 6f 72 20 75 6e 66 69 6e 69 73 68 65  nts or unfinishe
9f00: 64 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70  d sqlite3_backup
9f10: 20 6f 62 6a 65 63 74 73 20 74 68 65 6e 20 73 71   objects then sq
9f20: 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 0a 2a 2a  lite3_close().**
9f30: 20 77 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20   will leave the 
9f40: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
9f50: 69 6f 6e 20 6f 70 65 6e 20 61 6e 64 20 72 65 74  ion open and ret
9f60: 75 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  urn [SQLITE_BUSY
9f70: 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  ]..** ^If sqlite
9f80: 33 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73 20  3_close_v2() is 
9f90: 63 61 6c 6c 65 64 20 77 69 74 68 20 75 6e 66 69  called with unfi
9fa0: 6e 61 6c 69 7a 65 64 20 70 72 65 70 61 72 65 64  nalized prepared
9fb0: 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 61   statements.** a
9fc0: 6e 64 2f 6f 72 20 75 6e 66 69 6e 69 73 68 65 64  nd/or unfinished
9fd0: 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 73   sqlite3_backups
9fe0: 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  , then the datab
9ff0: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62  ase connection b
a000: 65 63 6f 6d 65 73 0a 2a 2a 20 61 6e 20 75 6e 75  ecomes.** an unu
a010: 73 61 62 6c 65 20 22 7a 6f 6d 62 69 65 22 20 77  sable "zombie" w
a020: 68 69 63 68 20 77 69 6c 6c 20 61 75 74 6f 6d 61  hich will automa
a030: 74 69 63 61 6c 6c 79 20 62 65 20 64 65 61 6c 6c  tically be deall
a040: 6f 63 61 74 65 64 20 77 68 65 6e 20 74 68 65 0a  ocated when the.
a050: 2a 2a 20 6c 61 73 74 20 70 72 65 70 61 72 65 64  ** last prepared
a060: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69   statement is fi
a070: 6e 61 6c 69 7a 65 64 20 6f 72 20 74 68 65 20 6c  nalized or the l
a080: 61 73 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b  ast sqlite3_back
a090: 75 70 20 69 73 0a 2a 2a 20 66 69 6e 69 73 68 65  up is.** finishe
a0a0: 64 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f  d.  The sqlite3_
a0b0: 63 6c 6f 73 65 5f 76 32 28 29 20 69 6e 74 65 72  close_v2() inter
a0c0: 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65 64  face is intended
a0d0: 20 66 6f 72 20 75 73 65 20 77 69 74 68 0a 2a 2a   for use with.**
a0e0: 20 68 6f 73 74 20 6c 61 6e 67 75 61 67 65 73 20   host languages 
a0f0: 74 68 61 74 20 61 72 65 20 67 61 72 62 61 67 65  that are garbage
a100: 20 63 6f 6c 6c 65 63 74 65 64 2c 20 61 6e 64 20   collected, and 
a110: 77 68 65 72 65 20 74 68 65 20 6f 72 64 65 72 20  where the order 
a120: 69 6e 20 77 68 69 63 68 0a 2a 2a 20 64 65 73 74  in which.** dest
a130: 72 75 63 74 6f 72 73 20 61 72 65 20 63 61 6c 6c  ructors are call
a140: 65 64 20 69 73 20 61 72 62 69 74 72 61 72 79 2e  ed is arbitrary.
a150: 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  .**.** Applicati
a160: 6f 6e 73 20 73 68 6f 75 6c 64 20 5b 73 71 6c 69  ons should [sqli
a170: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 7c 20 66  te3_finalize | f
a180: 69 6e 61 6c 69 7a 65 5d 20 61 6c 6c 20 5b 70 72  inalize] all [pr
a190: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
a1a0: 73 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  s],.** [sqlite3_
a1b0: 62 6c 6f 62 5f 63 6c 6f 73 65 20 7c 20 63 6c 6f  blob_close | clo
a1c0: 73 65 5d 20 61 6c 6c 20 5b 42 4c 4f 42 20 68 61  se] all [BLOB ha
a1d0: 6e 64 6c 65 73 5d 2c 20 61 6e 64 20 0a 2a 2a 20  ndles], and .** 
a1e0: 5b 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f  [sqlite3_backup_
a1f0: 66 69 6e 69 73 68 20 7c 20 66 69 6e 69 73 68 5d  finish | finish]
a200: 20 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 62 61   all [sqlite3_ba
a210: 63 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 73  ckup] objects as
a220: 73 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74 68  sociated.** with
a230: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f   the [sqlite3] o
a240: 62 6a 65 63 74 20 70 72 69 6f 72 20 74 6f 20 61  bject prior to a
a250: 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 6c 6f  ttempting to clo
a260: 73 65 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 20  se the object.  
a270: 5e 49 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63  ^If.** sqlite3_c
a280: 6c 6f 73 65 5f 76 32 28 29 20 69 73 20 63 61 6c  lose_v2() is cal
a290: 6c 65 64 20 6f 6e 20 61 20 5b 64 61 74 61 62 61  led on a [databa
a2a0: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74  se connection] t
a2b0: 68 61 74 20 73 74 69 6c 6c 20 68 61 73 0a 2a 2a  hat still has.**
a2c0: 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 5b 70 72   outstanding [pr
a2d0: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
a2e0: 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65  s], [BLOB handle
a2f0: 73 5d 2c 20 61 6e 64 2f 6f 72 0a 2a 2a 20 5b 73  s], and/or.** [s
a300: 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f  qlite3_backup] o
a310: 62 6a 65 63 74 73 20 74 68 65 6e 20 69 74 20 72  bjects then it r
a320: 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f  eturns [SQLITE_O
a330: 4b 5d 20 61 6e 64 20 74 68 65 20 64 65 61 6c 6c  K] and the deall
a340: 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 72 65  ocation.** of re
a350: 73 6f 75 72 63 65 73 20 69 73 20 64 65 66 65 72  sources is defer
a360: 72 65 64 20 75 6e 74 69 6c 20 61 6c 6c 20 5b 70  red until all [p
a370: 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
a380: 74 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c  ts], [BLOB handl
a390: 65 73 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c  es],.** and [sql
a3a0: 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a  ite3_backup] obj
a3b0: 65 63 74 73 20 61 72 65 20 61 6c 73 6f 20 64 65  ects are also de
a3c0: 73 74 72 6f 79 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  stroyed..**.** ^
a3d0: 49 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20  If an [sqlite3] 
a3e0: 6f 62 6a 65 63 74 20 69 73 20 64 65 73 74 72 6f  object is destro
a3f0: 79 65 64 20 77 68 69 6c 65 20 61 20 74 72 61 6e  yed while a tran
a400: 73 61 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 2c  saction is open,
a410: 0a 2a 2a 20 74 68 65 20 74 72 61 6e 73 61 63 74  .** the transact
a420: 69 6f 6e 20 69 73 20 61 75 74 6f 6d 61 74 69 63  ion is automatic
a430: 61 6c 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b  ally rolled back
a440: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 43 20 70 61  ..**.** The C pa
a450: 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69  rameter to [sqli
a460: 74 65 33 5f 63 6c 6f 73 65 28 43 29 5d 20 61 6e  te3_close(C)] an
a470: 64 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  d [sqlite3_close
a480: 5f 76 32 28 43 29 5d 0a 2a 2a 20 6d 75 73 74 20  _v2(C)].** must 
a490: 62 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c  be either a NULL
a4a0: 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 6f 72 20 61  .** pointer or a
a4b0: 6e 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65  n [sqlite3] obje
a4c0: 63 74 20 70 6f 69 6e 74 65 72 20 6f 62 74 61 69  ct pointer obtai
a4d0: 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c  ned.** from [sql
a4e0: 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73  ite3_open()], [s
a4f0: 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d  qlite3_open16()]
a500: 2c 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  , or.** [sqlite3
a510: 5f 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 64  _open_v2()], and
a520: 20 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 20   not previously 
a530: 63 6c 6f 73 65 64 2e 0a 2a 2a 20 5e 43 61 6c 6c  closed..** ^Call
a540: 69 6e 67 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73  ing sqlite3_clos
a550: 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63  e() or sqlite3_c
a560: 6c 6f 73 65 5f 76 32 28 29 20 77 69 74 68 20 61  lose_v2() with a
a570: 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a   NULL pointer.**
a580: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 68   argument is a h
a590: 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 2e 0a 2a  armless no-op..*
a5a0: 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
a5b0: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 73   sqlite3_close(s
a5c0: 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
a5d0: 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
a5e0: 5f 63 6c 6f 73 65 5f 76 32 28 73 71 6c 69 74 65  _close_v2(sqlite
a5f0: 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20  3*);../*.** The 
a600: 74 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62  type for a callb
a610: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a  ack function..**
a620: 20 54 68 69 73 20 69 73 20 6c 65 67 61 63 79 20   This is legacy 
a630: 61 6e 64 20 64 65 70 72 65 63 61 74 65 64 2e 20  and deprecated. 
a640: 20 49 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20   It is included 
a650: 66 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 0a 2a  for historical.*
a660: 2a 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  * compatibility 
a670: 61 6e 64 20 69 73 20 6e 6f 74 20 64 6f 63 75 6d  and is not docum
a680: 65 6e 74 65 64 2e 0a 2a 2f 0a 74 79 70 65 64 65  ented..*/.typede
a690: 66 20 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f  f int (*sqlite3_
a6a0: 63 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c  callback)(void*,
a6b0: 69 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72  int,char**, char
a6c0: 2a 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  **);../*.** CAPI
a6d0: 33 52 45 46 3a 20 4f 6e 65 2d 53 74 65 70 20 51  3REF: One-Step Q
a6e0: 75 65 72 79 20 45 78 65 63 75 74 69 6f 6e 20 49  uery Execution I
a6f0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 4d 45 54 48  nterface.** METH
a700: 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
a710: 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78  * The sqlite3_ex
a720: 65 63 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  ec() interface i
a730: 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20  s a convenience 
a740: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a  wrapper around.*
a750: 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
a760: 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74  re_v2()], [sqlit
a770: 65 33 5f 73 74 65 70 28 29 5d 2c 20 61 6e 64 20  e3_step()], and 
a780: 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a  [sqlite3_finaliz
a790: 65 28 29 5d 2c 0a 2a 2a 20 74 68 61 74 20 61 6c  e()],.** that al
a7a0: 6c 6f 77 73 20 61 6e 20 61 70 70 6c 69 63 61 74  lows an applicat
a7b0: 69 6f 6e 20 74 6f 20 72 75 6e 20 6d 75 6c 74 69  ion to run multi
a7c0: 70 6c 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  ple statements o
a7d0: 66 20 53 51 4c 0a 2a 2a 20 77 69 74 68 6f 75 74  f SQL.** without
a7e0: 20 68 61 76 69 6e 67 20 74 6f 20 75 73 65 20 61   having to use a
a7f0: 20 6c 6f 74 20 6f 66 20 43 20 63 6f 64 65 2e 20   lot of C code. 
a800: 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
a810: 74 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65 72  te3_exec() inter
a820: 66 61 63 65 20 72 75 6e 73 20 7a 65 72 6f 20 6f  face runs zero o
a830: 72 20 6d 6f 72 65 20 55 54 46 2d 38 20 65 6e 63  r more UTF-8 enc
a840: 6f 64 65 64 2c 0a 2a 2a 20 73 65 6d 69 63 6f 6c  oded,.** semicol
a850: 6f 6e 2d 73 65 70 61 72 61 74 65 20 53 51 4c 20  on-separate SQL 
a860: 73 74 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65  statements passe
a870: 64 20 69 6e 74 6f 20 69 74 73 20 32 6e 64 20 61  d into its 2nd a
a880: 72 67 75 6d 65 6e 74 2c 0a 2a 2a 20 69 6e 20 74  rgument,.** in t
a890: 68 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68  he context of th
a8a0: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
a8b0: 65 63 74 69 6f 6e 5d 20 70 61 73 73 65 64 20 69  ection] passed i
a8c0: 6e 20 61 73 20 69 74 73 20 31 73 74 0a 2a 2a 20  n as its 1st.** 
a8d0: 61 72 67 75 6d 65 6e 74 2e 20 20 5e 49 66 20 74  argument.  ^If t
a8e0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
a8f0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 33 72 64 20  tion of the 3rd 
a900: 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73  argument to.** s
a910: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
a920: 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20   not NULL, then 
a930: 69 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 66 6f  it is invoked fo
a940: 72 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f  r each result ro
a950: 77 0a 2a 2a 20 63 6f 6d 69 6e 67 20 6f 75 74 20  w.** coming out 
a960: 6f 66 20 74 68 65 20 65 76 61 6c 75 61 74 65 64  of the evaluated
a970: 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e   SQL statements.
a980: 20 20 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d    ^The 4th argum
a990: 65 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65  ent to.** sqlite
a9a0: 33 5f 65 78 65 63 28 29 20 69 73 20 72 65 6c 61  3_exec() is rela
a9b0: 79 65 64 20 74 68 72 6f 75 67 68 20 74 6f 20 74  yed through to t
a9c0: 68 65 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  he 1st argument 
a9d0: 6f 66 20 65 61 63 68 0a 2a 2a 20 63 61 6c 6c 62  of each.** callb
a9e0: 61 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20  ack invocation. 
a9f0: 20 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63   ^If the callbac
aa00: 6b 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c  k pointer to sql
aa10: 69 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69  ite3_exec().** i
aa20: 73 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20  s NULL, then no 
aa30: 63 61 6c 6c 62 61 63 6b 20 69 73 20 65 76 65 72  callback is ever
aa40: 20 69 6e 76 6f 6b 65 64 20 61 6e 64 20 72 65 73   invoked and res
aa50: 75 6c 74 20 72 6f 77 73 20 61 72 65 0a 2a 2a 20  ult rows are.** 
aa60: 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  ignored..**.** ^
aa70: 49 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  If an error occu
aa80: 72 73 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74  rs while evaluat
aa90: 69 6e 67 20 74 68 65 20 53 51 4c 20 73 74 61 74  ing the SQL stat
aaa0: 65 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e  ements passed in
aab0: 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78  to.** sqlite3_ex
aac0: 65 63 28 29 2c 20 74 68 65 6e 20 65 78 65 63 75  ec(), then execu
aad0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72  tion of the curr
aae0: 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 20 73 74  ent statement st
aaf0: 6f 70 73 20 61 6e 64 0a 2a 2a 20 73 75 62 73 65  ops and.** subse
ab00: 71 75 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 73  quent statements
ab10: 20 61 72 65 20 73 6b 69 70 70 65 64 2e 20 20 5e   are skipped.  ^
ab20: 49 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d  If the 5th param
ab30: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
ab40: 65 78 65 63 28 29 0a 2a 2a 20 69 73 20 6e 6f 74  exec().** is not
ab50: 20 4e 55 4c 4c 20 74 68 65 6e 20 61 6e 79 20 65   NULL then any e
ab60: 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20  rror message is 
ab70: 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d  written into mem
ab80: 6f 72 79 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20  ory obtained.** 
ab90: 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61  from [sqlite3_ma
aba0: 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 70 61 73 73  lloc()] and pass
abb0: 65 64 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20  ed back through 
abc0: 74 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65  the 5th paramete
abd0: 72 2e 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 6d  r..** To avoid m
abe0: 65 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 74 68 65  emory leaks, the
abf0: 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f   application sho
ac00: 75 6c 64 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69  uld invoke [sqli
ac10: 74 65 33 5f 66 72 65 65 28 29 5d 0a 2a 2a 20 6f  te3_free()].** o
ac20: 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
ac30: 73 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64  strings returned
ac40: 20 74 68 72 6f 75 67 68 20 74 68 65 20 35 74 68   through the 5th
ac50: 20 70 61 72 61 6d 65 74 65 72 20 6f 66 0a 2a 2a   parameter of.**
ac60: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
ac70: 61 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20  after the error 
ac80: 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69  message string i
ac90: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6e 65 65 64  s no longer need
aca0: 65 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 35  ed..** ^If the 5
acb0: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
acc0: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69  sqlite3_exec() i
acd0: 73 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e 64 20 6e  s not NULL and n
ace0: 6f 20 65 72 72 6f 72 73 0a 2a 2a 20 6f 63 63 75  o errors.** occu
acf0: 72 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f  r, then sqlite3_
ad00: 65 78 65 63 28 29 20 73 65 74 73 20 74 68 65 20  exec() sets the 
ad10: 70 6f 69 6e 74 65 72 20 69 6e 20 69 74 73 20 35  pointer in its 5
ad20: 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  th parameter to.
ad30: 2a 2a 20 4e 55 4c 4c 20 62 65 66 6f 72 65 20 72  ** NULL before r
ad40: 65 74 75 72 6e 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20  eturning..**.** 
ad50: 5e 49 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 65  ^If an sqlite3_e
ad60: 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 72  xec() callback r
ad70: 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
ad80: 20 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65   the sqlite3_exe
ad90: 63 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72  c().** routine r
ada0: 65 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42  eturns SQLITE_AB
adb0: 4f 52 54 20 77 69 74 68 6f 75 74 20 69 6e 76 6f  ORT without invo
adc0: 6b 69 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63  king the callbac
add0: 6b 20 61 67 61 69 6e 20 61 6e 64 0a 2a 2a 20 77  k again and.** w
ade0: 69 74 68 6f 75 74 20 72 75 6e 6e 69 6e 67 20 61  ithout running a
adf0: 6e 79 20 73 75 62 73 65 71 75 65 6e 74 20 53 51  ny subsequent SQ
ae00: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a  L statements..**
ae10: 0a 2a 2a 20 5e 54 68 65 20 32 6e 64 20 61 72 67  .** ^The 2nd arg
ae20: 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c  ument to the sql
ae30: 69 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c  ite3_exec() call
ae40: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73  back function is
ae50: 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f   the.** number o
ae60: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
ae70: 20 72 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 33   result.  ^The 3
ae80: 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  rd argument to t
ae90: 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28  he sqlite3_exec(
aea0: 29 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73  ).** callback is
aeb0: 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69   an array of poi
aec0: 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73  nters to strings
aed0: 20 6f 62 74 61 69 6e 65 64 20 61 73 20 69 66 20   obtained as if 
aee0: 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  from.** [sqlite3
aef0: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c  _column_text()],
af00: 20 6f 6e 65 20 66 6f 72 20 65 61 63 68 20 63 6f   one for each co
af10: 6c 75 6d 6e 2e 20 20 5e 49 66 20 61 6e 20 65 6c  lumn.  ^If an el
af20: 65 6d 65 6e 74 20 6f 66 20 61 0a 2a 2a 20 72 65  ement of a.** re
af30: 73 75 6c 74 20 72 6f 77 20 69 73 20 4e 55 4c 4c  sult row is NULL
af40: 20 74 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73   then the corres
af50: 70 6f 6e 64 69 6e 67 20 73 74 72 69 6e 67 20 70  ponding string p
af60: 6f 69 6e 74 65 72 20 66 6f 72 20 74 68 65 0a 2a  ointer for the.*
af70: 2a 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  * sqlite3_exec()
af80: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 20 4e   callback is a N
af90: 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54  ULL pointer.  ^T
afa0: 68 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20  he 4th argument 
afb0: 74 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65  to the.** sqlite
afc0: 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63  3_exec() callbac
afd0: 6b 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66  k is an array of
afe0: 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72   pointers to str
aff0: 69 6e 67 73 20 77 68 65 72 65 20 65 61 63 68 0a  ings where each.
b000: 2a 2a 20 65 6e 74 72 79 20 72 65 70 72 65 73 65  ** entry represe
b010: 6e 74 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  nts the name of 
b020: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 72 65  corresponding re
b030: 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 61 73 20 6f  sult column as o
b040: 62 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20  btained.** from 
b050: 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
b060: 6e 61 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e  name()]..**.** ^
b070: 49 66 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d  If the 2nd param
b080: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
b090: 65 78 65 63 28 29 20 69 73 20 61 20 4e 55 4c 4c  exec() is a NULL
b0a0: 20 70 6f 69 6e 74 65 72 2c 20 61 20 70 6f 69 6e   pointer, a poin
b0b0: 74 65 72 0a 2a 2a 20 74 6f 20 61 6e 20 65 6d 70  ter.** to an emp
b0c0: 74 79 20 73 74 72 69 6e 67 2c 20 6f 72 20 61 20  ty string, or a 
b0d0: 70 6f 69 6e 74 65 72 20 74 68 61 74 20 63 6f 6e  pointer that con
b0e0: 74 61 69 6e 73 20 6f 6e 6c 79 20 77 68 69 74 65  tains only white
b0f0: 73 70 61 63 65 20 61 6e 64 2f 6f 72 20 0a 2a 2a  space and/or .**
b100: 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 2c 20 74   SQL comments, t
b110: 68 65 6e 20 6e 6f 20 53 51 4c 20 73 74 61 74 65  hen no SQL state
b120: 6d 65 6e 74 73 20 61 72 65 20 65 76 61 6c 75 61  ments are evalua
b130: 74 65 64 20 61 6e 64 20 74 68 65 20 64 61 74 61  ted and the data
b140: 62 61 73 65 0a 2a 2a 20 69 73 20 6e 6f 74 20 63  base.** is not c
b150: 68 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65  hanged..**.** Re
b160: 73 74 72 69 63 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a  strictions:.**.*
b170: 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54  * <ul>.** <li> T
b180: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
b190: 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20  ust ensure that 
b1a0: 74 68 65 20 31 73 74 20 70 61 72 61 6d 65 74 65  the 1st paramete
b1b0: 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65  r to sqlite3_exe
b1c0: 63 28 29 0a 2a 2a 20 20 20 20 20 20 69 73 20 61  c().**      is a
b1d0: 20 76 61 6c 69 64 20 61 6e 64 20 6f 70 65 6e 20   valid and open 
b1e0: 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
b1f0: 74 69 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 54  tion]..** <li> T
b200: 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
b210: 75 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68  ust not close th
b220: 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
b230: 65 63 74 69 6f 6e 5d 20 73 70 65 63 69 66 69 65  ection] specifie
b240: 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 74 68 65  d by.**      the
b250: 20 31 73 74 20 70 61 72 61 6d 65 74 65 72 20 74   1st parameter t
b260: 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  o sqlite3_exec()
b270: 20 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65   while sqlite3_e
b280: 78 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67  xec() is running
b290: 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70  ..** <li> The ap
b2a0: 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
b2b0: 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 53 51  ot modify the SQ
b2c0: 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74  L statement text
b2d0: 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20   passed into.** 
b2e0: 20 20 20 20 20 74 68 65 20 32 6e 64 20 70 61 72       the 2nd par
b2f0: 61 6d 65 74 65 72 20 6f 66 20 73 71 6c 69 74 65  ameter of sqlite
b300: 33 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73  3_exec() while s
b310: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
b320: 20 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 2f 75   running..** </u
b330: 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  l>.*/.SQLITE_API
b340: 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 65   int sqlite3_exe
b350: 63 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20  c(.  sqlite3*,  
b360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b380: 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62  /* An open datab
b390: 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  ase */.  const c
b3a0: 68 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20  har *sql,       
b3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3c0: 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65      /* SQL to be
b3d0: 20 65 76 61 6c 75 61 74 65 64 20 2a 2f 0a 20 20   evaluated */.  
b3e0: 69 6e 74 20 28 2a 63 61 6c 6c 62 61 63 6b 29 28  int (*callback)(
b3f0: 76 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a  void*,int,char**
b400: 2c 63 68 61 72 2a 2a 29 2c 20 20 2f 2a 20 43 61  ,char**),  /* Ca
b410: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
b420: 2a 2f 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20 20  */.  void *,    
b430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b450: 2f 2a 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20  /* 1st argument 
b460: 74 6f 20 63 61 6c 6c 62 61 63 6b 20 2a 2f 0a 20  to callback */. 
b470: 20 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20 20   char **errmsg  
b480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b490: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45              /* E
b4a0: 72 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e  rror msg written
b4b0: 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a   here */.);../*.
b4c0: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 73  ** CAPI3REF: Res
b4d0: 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59  ult Codes.** KEY
b4e0: 57 4f 52 44 53 3a 20 7b 72 65 73 75 6c 74 20 63  WORDS: {result c
b4f0: 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7d  ode definitions}
b500: 0a 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53 51 4c 69  .**.** Many SQLi
b510: 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74  te functions ret
b520: 75 72 6e 20 61 6e 20 69 6e 74 65 67 65 72 20 72  urn an integer r
b530: 65 73 75 6c 74 20 63 6f 64 65 20 66 72 6f 6d 20  esult code from 
b540: 74 68 65 20 73 65 74 20 73 68 6f 77 6e 0a 2a 2a  the set shown.**
b550: 20 68 65 72 65 20 69 6e 20 6f 72 64 65 72 20 74   here in order t
b560: 6f 20 69 6e 64 69 63 61 74 65 20 73 75 63 63 65  o indicate succe
b570: 73 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 2a  ss or failure..*
b580: 2a 0a 2a 2a 20 4e 65 77 20 65 72 72 6f 72 20 63  *.** New error c
b590: 6f 64 65 73 20 6d 61 79 20 62 65 20 61 64 64 65  odes may be adde
b5a0: 64 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73  d in future vers
b5b0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
b5c0: 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
b5d0: 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  [extended result
b5e0: 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e   code definition
b5f0: 73 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  s].*/.#define SQ
b600: 4c 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20  LITE_OK         
b610: 20 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73 73    0   /* Success
b620: 66 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 2f 2a  ful result */./*
b630: 20 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 65 72   beginning-of-er
b640: 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 23 64 65  ror-codes */.#de
b650: 66 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f  fine SQLITE_ERRO
b660: 52 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20  R        1   /* 
b670: 47 65 6e 65 72 69 63 20 65 72 72 6f 72 20 2a 2f  Generic error */
b680: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b690: 49 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20  INTERNAL     2  
b6a0: 20 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 6c 6f 67   /* Internal log
b6b0: 69 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69  ic error in SQLi
b6c0: 74 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  te */.#define SQ
b6d0: 4c 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20  LITE_PERM       
b6e0: 20 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73 20    3   /* Access 
b6f0: 70 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65  permission denie
b700: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
b710: 49 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20  ITE_ABORT       
b720: 20 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b   4   /* Callback
b730: 20 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73 74   routine request
b740: 65 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a 23  ed an abort */.#
b750: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55  define SQLITE_BU
b760: 53 59 20 20 20 20 20 20 20 20 20 35 20 20 20 2f  SY         5   /
b770: 2a 20 54 68 65 20 64 61 74 61 62 61 73 65 20 66  * The database f
b780: 69 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f  ile is locked */
b790: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b7a0: 4c 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20  LOCKED       6  
b7b0: 20 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20 74   /* A table in t
b7c0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6c  he database is l
b7d0: 6f 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65  ocked */.#define
b7e0: 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20   SQLITE_NOMEM   
b7f0: 20 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d 61       7   /* A ma
b800: 6c 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a 2f  lloc() failed */
b810: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b820: 52 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20 20  READONLY     8  
b830: 20 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 77   /* Attempt to w
b840: 72 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20  rite a readonly 
b850: 64 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66  database */.#def
b860: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52  ine SQLITE_INTER
b870: 52 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20 4f  RUPT    9   /* O
b880: 70 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61  peration termina
b890: 74 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69  ted by sqlite3_i
b8a0: 6e 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64 65  nterrupt()*/.#de
b8b0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
b8c0: 52 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20  R       10   /* 
b8d0: 53 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69 73  Some kind of dis
b8e0: 6b 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75  k I/O error occu
b8f0: 72 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  rred */.#define 
b900: 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20  SQLITE_CORRUPT  
b910: 20 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20 64     11   /* The d
b920: 61 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61  atabase disk ima
b930: 67 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 20  ge is malformed 
b940: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
b950: 45 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32  E_NOTFOUND    12
b960: 20 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e 20 6f 70     /* Unknown op
b970: 63 6f 64 65 20 69 6e 20 73 71 6c 69 74 65 33 5f  code in sqlite3_
b980: 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 20 2a  file_control() *
b990: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b9a0: 5f 46 55 4c 4c 20 20 20 20 20 20 20 20 31 33 20  _FULL        13 
b9b0: 20 20 2f 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66    /* Insertion f
b9c0: 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 64 61  ailed because da
b9d0: 74 61 62 61 73 65 20 69 73 20 66 75 6c 6c 20 2a  tabase is full *
b9e0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b9f0: 5f 43 41 4e 54 4f 50 45 4e 20 20 20 20 31 34 20  _CANTOPEN    14 
ba00: 20 20 2f 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f    /* Unable to o
ba10: 70 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  pen the database
ba20: 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65   file */.#define
ba30: 20 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c   SQLITE_PROTOCOL
ba40: 20 20 20 20 31 35 20 20 20 2f 2a 20 44 61 74 61      15   /* Data
ba50: 62 61 73 65 20 6c 6f 63 6b 20 70 72 6f 74 6f 63  base lock protoc
ba60: 6f 6c 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66  ol error */.#def
ba70: 69 6e 65 20 53 51 4c 49 54 45 5f 45 4d 50 54 59  ine SQLITE_EMPTY
ba80: 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 49         16   /* I
ba90: 6e 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79  nternal use only
baa0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bab0: 54 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 31  TE_SCHEMA      1
bac0: 37 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62  7   /* The datab
bad0: 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67  ase schema chang
bae0: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
baf0: 4c 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20  LITE_TOOBIG     
bb00: 20 31 38 20 20 20 2f 2a 20 53 74 72 69 6e 67 20   18   /* String 
bb10: 6f 72 20 42 4c 4f 42 20 65 78 63 65 65 64 73 20  or BLOB exceeds 
bb20: 73 69 7a 65 20 6c 69 6d 69 74 20 2a 2f 0a 23 64  size limit */.#d
bb30: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
bb40: 53 54 52 41 49 4e 54 20 20 31 39 20 20 20 2f 2a  STRAINT  19   /*
bb50: 20 41 62 6f 72 74 20 64 75 65 20 74 6f 20 63 6f   Abort due to co
bb60: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
bb70: 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  on */.#define SQ
bb80: 4c 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20  LITE_MISMATCH   
bb90: 20 32 30 20 20 20 2f 2a 20 44 61 74 61 20 74 79   20   /* Data ty
bba0: 70 65 20 6d 69 73 6d 61 74 63 68 20 2a 2f 0a 23  pe mismatch */.#
bbb0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49  define SQLITE_MI
bbc0: 53 55 53 45 20 20 20 20 20 20 32 31 20 20 20 2f  SUSE      21   /
bbd0: 2a 20 4c 69 62 72 61 72 79 20 75 73 65 64 20 69  * Library used i
bbe0: 6e 63 6f 72 72 65 63 74 6c 79 20 2a 2f 0a 23 64  ncorrectly */.#d
bbf0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4c  efine SQLITE_NOL
bc00: 46 53 20 20 20 20 20 20 20 32 32 20 20 20 2f 2a  FS       22   /*
bc10: 20 55 73 65 73 20 4f 53 20 66 65 61 74 75 72 65   Uses OS feature
bc20: 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20  s not supported 
bc30: 6f 6e 20 68 6f 73 74 20 2a 2f 0a 23 64 65 66 69  on host */.#defi
bc40: 6e 65 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20  ne SQLITE_AUTH  
bc50: 20 20 20 20 20 20 32 33 20 20 20 2f 2a 20 41 75        23   /* Au
bc60: 74 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69  thorization deni
bc70: 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ed */.#define SQ
bc80: 4c 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20  LITE_FORMAT     
bc90: 20 32 34 20 20 20 2f 2a 20 4e 6f 74 20 75 73 65   24   /* Not use
bca0: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
bcb0: 49 54 45 5f 52 41 4e 47 45 20 20 20 20 20 20 20  ITE_RANGE       
bcc0: 32 35 20 20 20 2f 2a 20 32 6e 64 20 70 61 72 61  25   /* 2nd para
bcd0: 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
bce0: 5f 62 69 6e 64 20 6f 75 74 20 6f 66 20 72 61 6e  _bind out of ran
bcf0: 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ge */.#define SQ
bd00: 4c 49 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20  LITE_NOTADB     
bd10: 20 32 36 20 20 20 2f 2a 20 46 69 6c 65 20 6f 70   26   /* File op
bd20: 65 6e 65 64 20 74 68 61 74 20 69 73 20 6e 6f 74  ened that is not
bd30: 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
bd40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bd50: 54 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 32  TE_NOTICE      2
bd60: 37 20 20 20 2f 2a 20 4e 6f 74 69 66 69 63 61 74  7   /* Notificat
bd70: 69 6f 6e 73 20 66 72 6f 6d 20 73 71 6c 69 74 65  ions from sqlite
bd80: 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65 66 69  3_log() */.#defi
bd90: 6e 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e  ne SQLITE_WARNIN
bda0: 47 20 20 20 20 20 32 38 20 20 20 2f 2a 20 57 61  G     28   /* Wa
bdb0: 72 6e 69 6e 67 73 20 66 72 6f 6d 20 73 71 6c 69  rnings from sqli
bdc0: 74 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65  te3_log() */.#de
bdd0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 4f 57 20  fine SQLITE_ROW 
bde0: 20 20 20 20 20 20 20 20 31 30 30 20 20 2f 2a 20          100  /* 
bdf0: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68  sqlite3_step() h
be00: 61 73 20 61 6e 6f 74 68 65 72 20 72 6f 77 20 72  as another row r
be10: 65 61 64 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20  eady */.#define 
be20: 53 51 4c 49 54 45 5f 44 4f 4e 45 20 20 20 20 20  SQLITE_DONE     
be30: 20 20 20 31 30 31 20 20 2f 2a 20 73 71 6c 69 74     101  /* sqlit
be40: 65 33 5f 73 74 65 70 28 29 20 68 61 73 20 66 69  e3_step() has fi
be50: 6e 69 73 68 65 64 20 65 78 65 63 75 74 69 6e 67  nished executing
be60: 20 2a 2f 0a 2f 2a 20 65 6e 64 2d 6f 66 2d 65 72   */./* end-of-er
be70: 72 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 0a 2f 2a  ror-codes */../*
be80: 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 78  .** CAPI3REF: Ex
be90: 74 65 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f  tended Result Co
bea0: 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  des.** KEYWORDS:
beb0: 20 7b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c   {extended resul
bec0: 74 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f  t code definitio
bed0: 6e 73 7d 0a 2a 2a 0a 2a 2a 20 49 6e 20 69 74 73  ns}.**.** In its
bee0: 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75   default configu
bef0: 72 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 20 41  ration, SQLite A
bf00: 50 49 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  PI routines retu
bf10: 72 6e 20 6f 6e 65 20 6f 66 20 33 30 20 69 6e 74  rn one of 30 int
bf20: 65 67 65 72 0a 2a 2a 20 5b 72 65 73 75 6c 74 20  eger.** [result 
bf30: 63 6f 64 65 73 5d 2e 20 20 48 6f 77 65 76 65 72  codes].  However
bf40: 2c 20 65 78 70 65 72 69 65 6e 63 65 20 68 61 73  , experience has
bf50: 20 73 68 6f 77 6e 20 74 68 61 74 20 6d 61 6e 79   shown that many
bf60: 20 6f 66 0a 2a 2a 20 74 68 65 73 65 20 72 65 73   of.** these res
bf70: 75 6c 74 20 63 6f 64 65 73 20 61 72 65 20 74 6f  ult codes are to
bf80: 6f 20 63 6f 61 72 73 65 2d 67 72 61 69 6e 65 64  o coarse-grained
bf90: 2e 20 20 54 68 65 79 20 64 6f 20 6e 6f 74 20 70  .  They do not p
bfa0: 72 6f 76 69 64 65 20 61 73 0a 2a 2a 20 6d 75 63  rovide as.** muc
bfb0: 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62  h information ab
bfc0: 6f 75 74 20 70 72 6f 62 6c 65 6d 73 20 61 73 20  out problems as 
bfd0: 70 72 6f 67 72 61 6d 6d 65 72 73 20 6d 69 67 68  programmers migh
bfe0: 74 20 6c 69 6b 65 2e 20 20 49 6e 20 61 6e 20 65  t like.  In an e
bff0: 66 66 6f 72 74 20 74 6f 0a 2a 2a 20 61 64 64 72  ffort to.** addr
c000: 65 73 73 20 74 68 69 73 2c 20 6e 65 77 65 72 20  ess this, newer 
c010: 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
c020: 74 65 20 28 76 65 72 73 69 6f 6e 20 33 2e 33 2e  te (version 3.3.
c030: 38 20 5b 64 61 74 65 6f 66 3a 33 2e 33 2e 38 5d  8 [dateof:3.3.8]
c040: 0a 2a 2a 20 61 6e 64 20 6c 61 74 65 72 29 20 69  .** and later) i
c050: 6e 63 6c 75 64 65 0a 2a 2a 20 73 75 70 70 6f 72  nclude.** suppor
c060: 74 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c  t for additional
c070: 20 72 65 73 75 6c 74 20 63 6f 64 65 73 20 74 68   result codes th
c080: 61 74 20 70 72 6f 76 69 64 65 20 6d 6f 72 65 20  at provide more 
c090: 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d 61  detailed informa
c0a0: 74 69 6f 6e 0a 2a 2a 20 61 62 6f 75 74 20 65 72  tion.** about er
c0b0: 72 6f 72 73 2e 20 54 68 65 73 65 20 5b 65 78 74  rors. These [ext
c0c0: 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64  ended result cod
c0d0: 65 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 20  es] are enabled 
c0e0: 6f 72 20 64 69 73 61 62 6c 65 64 0a 2a 2a 20 6f  or disabled.** o
c0f0: 6e 20 61 20 70 65 72 20 64 61 74 61 62 61 73 65  n a per database
c100: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69   connection basi
c110: 73 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b  s using the.** [
c120: 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64  sqlite3_extended
c130: 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 5d  _result_codes()]
c140: 20 41 50 49 2e 20 20 4f 72 2c 20 74 68 65 20 65   API.  Or, the e
c150: 78 74 65 6e 64 65 64 20 63 6f 64 65 20 66 6f 72  xtended code for
c160: 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20 72 65 63  .** the most rec
c170: 65 6e 74 20 65 72 72 6f 72 20 63 61 6e 20 62 65  ent error can be
c180: 20 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 0a   obtained using.
c190: 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65  ** [sqlite3_exte
c1a0: 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 29 5d 2e  nded_errcode()].
c1b0: 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
c1c0: 54 45 5f 45 52 52 4f 52 5f 4d 49 53 53 49 4e 47  TE_ERROR_MISSING
c1d0: 5f 43 4f 4c 4c 53 45 51 20 20 20 28 53 51 4c 49  _COLLSEQ   (SQLI
c1e0: 54 45 5f 45 52 52 4f 52 20 7c 20 28 31 3c 3c 38  TE_ERROR | (1<<8
c1f0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
c200: 45 5f 45 52 52 4f 52 5f 52 45 54 52 59 20 20 20  E_ERROR_RETRY   
c210: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
c220: 45 5f 45 52 52 4f 52 20 7c 20 28 32 3c 3c 38 29  E_ERROR | (2<<8)
c230: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c240: 5f 45 52 52 4f 52 5f 53 4e 41 50 53 48 4f 54 20  _ERROR_SNAPSHOT 
c250: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c260: 5f 45 52 52 4f 52 20 7c 20 28 33 3c 3c 38 29 29  _ERROR | (3<<8))
c270: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c280: 49 4f 45 52 52 5f 52 45 41 44 20 20 20 20 20 20  IOERR_READ      
c290: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c2a0: 49 4f 45 52 52 20 7c 20 28 31 3c 3c 38 29 29 0a  IOERR | (1<<8)).
c2b0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c2c0: 4f 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20  OERR_SHORT_READ 
c2d0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c2e0: 4f 45 52 52 20 7c 20 28 32 3c 3c 38 29 29 0a 23  OERR | (2<<8)).#
c2f0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
c300: 45 52 52 5f 57 52 49 54 45 20 20 20 20 20 20 20  ERR_WRITE       
c310: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f        (SQLITE_IO
c320: 45 52 52 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64  ERR | (3<<8)).#d
c330: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
c340: 52 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20  RR_FSYNC        
c350: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
c360: 52 52 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65  RR | (4<<8)).#de
c370: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
c380: 52 5f 44 49 52 5f 46 53 59 4e 43 20 20 20 20 20  R_DIR_FSYNC     
c390: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
c3a0: 52 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65 66  R | (5<<8)).#def
c3b0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c3c0: 5f 54 52 55 4e 43 41 54 45 20 20 20 20 20 20 20  _TRUNCATE       
c3d0: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c3e0: 20 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69   | (6<<8)).#defi
c3f0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
c400: 46 53 54 41 54 20 20 20 20 20 20 20 20 20 20 20  FSTAT           
c410: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
c420: 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (7<<8)).#defin
c430: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55  e SQLITE_IOERR_U
c440: 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20  NLOCK           
c450: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
c460: 20 28 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (8<<8)).#define
c470: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 44   SQLITE_IOERR_RD
c480: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
c490: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c4a0: 28 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (9<<8)).#define 
c4b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c  SQLITE_IOERR_DEL
c4c0: 45 54 45 20 20 20 20 20 20 20 20 20 20 20 20 28  ETE            (
c4d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c4e0: 31 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  10<<8)).#define 
c4f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f  SQLITE_IOERR_BLO
c500: 43 4b 45 44 20 20 20 20 20 20 20 20 20 20 20 28  CKED           (
c510: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c520: 31 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  11<<8)).#define 
c530: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d  SQLITE_IOERR_NOM
c540: 45 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 28  EM             (
c550: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c560: 31 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  12<<8)).#define 
c570: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 43 43  SQLITE_IOERR_ACC
c580: 45 53 53 20 20 20 20 20 20 20 20 20 20 20 20 28  ESS            (
c590: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c5a0: 31 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  13<<8)).#define 
c5b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 48 45  SQLITE_IOERR_CHE
c5c0: 43 4b 52 45 53 45 52 56 45 44 4c 4f 43 4b 20 28  CKRESERVEDLOCK (
c5d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c5e0: 31 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  14<<8)).#define 
c5f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43  SQLITE_IOERR_LOC
c600: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  K              (
c610: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c620: 31 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  15<<8)).#define 
c630: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4c 4f  SQLITE_IOERR_CLO
c640: 53 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28  SE             (
c650: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c660: 31 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  16<<8)).#define 
c670: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52  SQLITE_IOERR_DIR
c680: 5f 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 28  _CLOSE         (
c690: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c6a0: 31 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  17<<8)).#define 
c6b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c6c0: 4f 50 45 4e 20 20 20 20 20 20 20 20 20 20 20 28  OPEN           (
c6d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c6e0: 31 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  18<<8)).#define 
c6f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c700: 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 28  SIZE           (
c710: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c720: 31 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  19<<8)).#define 
c730: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c740: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 28  LOCK           (
c750: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c760: 32 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  20<<8)).#define 
c770: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d  SQLITE_IOERR_SHM
c780: 4d 41 50 20 20 20 20 20 20 20 20 20 20 20 20 28  MAP            (
c790: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c7a0: 32 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  21<<8)).#define 
c7b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45  SQLITE_IOERR_SEE
c7c0: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  K              (
c7d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c7e0: 32 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  22<<8)).#define 
c7f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c  SQLITE_IOERR_DEL
c800: 45 54 45 5f 4e 4f 45 4e 54 20 20 20 20 20 20 28  ETE_NOENT      (
c810: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c820: 32 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  23<<8)).#define 
c830: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4d 4d 41  SQLITE_IOERR_MMA
c840: 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  P              (
c850: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c860: 32 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  24<<8)).#define 
c870: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 47 45 54  SQLITE_IOERR_GET
c880: 54 45 4d 50 50 41 54 48 20 20 20 20 20 20 20 28  TEMPPATH       (
c890: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c8a0: 32 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  25<<8)).#define 
c8b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4e  SQLITE_IOERR_CON
c8c0: 56 50 41 54 48 20 20 20 20 20 20 20 20 20 20 28  VPATH          (
c8d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c8e0: 32 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  26<<8)).#define 
c8f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 56 4e 4f  SQLITE_IOERR_VNO
c900: 44 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28  DE             (
c910: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c920: 32 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  27<<8)).#define 
c930: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 55 54  SQLITE_IOERR_AUT
c940: 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28  H              (
c950: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c960: 32 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  28<<8)).#define 
c970: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 45 47  SQLITE_IOERR_BEG
c980: 49 4e 5f 41 54 4f 4d 49 43 20 20 20 20 20 20 28  IN_ATOMIC      (
c990: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c9a0: 32 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  29<<8)).#define 
c9b0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4d  SQLITE_IOERR_COM
c9c0: 4d 49 54 5f 41 54 4f 4d 49 43 20 20 20 20 20 28  MIT_ATOMIC     (
c9d0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c9e0: 33 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  30<<8)).#define 
c9f0: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 4f 4c  SQLITE_IOERR_ROL
ca00: 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 20 20 20 28  LBACK_ATOMIC   (
ca10: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
ca20: 33 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  31<<8)).#define 
ca30: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48  SQLITE_LOCKED_SH
ca40: 41 52 45 44 43 41 43 48 45 20 20 20 20 20 20 28  AREDCACHE      (
ca50: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20  SQLITE_LOCKED | 
ca60: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
ca70: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 56   SQLITE_LOCKED_V
ca80: 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20 20  TAB             
ca90: 28 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c  (SQLITE_LOCKED |
caa0: 20 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e    (2<<8)).#defin
cab0: 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 52 45  e SQLITE_BUSY_RE
cac0: 43 4f 56 45 52 59 20 20 20 20 20 20 20 20 20 20  COVERY          
cad0: 20 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20   (SQLITE_BUSY   
cae0: 7c 20 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69  |  (1<<8)).#defi
caf0: 6e 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53  ne SQLITE_BUSY_S
cb00: 4e 41 50 53 48 4f 54 20 20 20 20 20 20 20 20 20  NAPSHOT         
cb10: 20 20 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20    (SQLITE_BUSY  
cb20: 20 7c 20 20 28 32 3c 3c 38 29 29 0a 23 64 65 66   |  (2<<8)).#def
cb30: 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f  ine SQLITE_CANTO
cb40: 50 45 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 20 20  PEN_NOTEMPDIR   
cb50: 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f     (SQLITE_CANTO
cb60: 50 45 4e 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64  PEN | (1<<8)).#d
cb70: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e  efine SQLITE_CAN
cb80: 54 4f 50 45 4e 5f 49 53 44 49 52 20 20 20 20 20  TOPEN_ISDIR     
cb90: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e       (SQLITE_CAN
cba0: 54 4f 50 45 4e 20 7c 20 28 32 3c 3c 38 29 29 0a  TOPEN | (2<<8)).
cbb0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
cbc0: 41 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41 54 48  ANTOPEN_FULLPATH
cbd0: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43         (SQLITE_C
cbe0: 41 4e 54 4f 50 45 4e 20 7c 20 28 33 3c 3c 38 29  ANTOPEN | (3<<8)
cbf0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cc00: 5f 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56 50 41  _CANTOPEN_CONVPA
cc10: 54 48 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  TH       (SQLITE
cc20: 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 34 3c 3c  _CANTOPEN | (4<<
cc30: 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  8)).#define SQLI
cc40: 54 45 5f 43 41 4e 54 4f 50 45 4e 5f 44 49 52 54  TE_CANTOPEN_DIRT
cc50: 59 57 41 4c 20 20 20 20 20 20 20 28 53 51 4c 49  YWAL       (SQLI
cc60: 54 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 35  TE_CANTOPEN | (5
cc70: 3c 3c 38 29 29 20 2f 2a 20 4e 6f 74 20 55 73 65  <<8)) /* Not Use
cc80: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
cc90: 49 54 45 5f 43 4f 52 52 55 50 54 5f 56 54 41 42  ITE_CORRUPT_VTAB
cca0: 20 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c              (SQL
ccb0: 49 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28 31  ITE_CORRUPT | (1
ccc0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
ccd0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 5f 53 45 51  LITE_CORRUPT_SEQ
cce0: 55 45 4e 43 45 20 20 20 20 20 20 20 20 28 53 51  UENCE        (SQ
ccf0: 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28  LITE_CORRUPT | (
cd00: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
cd10: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52  QLITE_READONLY_R
cd20: 45 43 4f 56 45 52 59 20 20 20 20 20 20 20 28 53  ECOVERY       (S
cd30: 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c  QLITE_READONLY |
cd40: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
cd50: 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59   SQLITE_READONLY
cd60: 5f 43 41 4e 54 4c 4f 43 4b 20 20 20 20 20 20 20  _CANTLOCK       
cd70: 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59  (SQLITE_READONLY
cd80: 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69   | (2<<8)).#defi
cd90: 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e  ne SQLITE_READON
cda0: 4c 59 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20 20  LY_ROLLBACK     
cdb0: 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e    (SQLITE_READON
cdc0: 4c 59 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65  LY | (3<<8)).#de
cdd0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44  fine SQLITE_READ
cde0: 4f 4e 4c 59 5f 44 42 4d 4f 56 45 44 20 20 20 20  ONLY_DBMOVED    
cdf0: 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44      (SQLITE_READ
ce00: 4f 4e 4c 59 20 7c 20 28 34 3c 3c 38 29 29 0a 23  ONLY | (4<<8)).#
ce10: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
ce20: 41 44 4f 4e 4c 59 5f 43 41 4e 54 49 4e 49 54 20  ADONLY_CANTINIT 
ce30: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45        (SQLITE_RE
ce40: 41 44 4f 4e 4c 59 20 7c 20 28 35 3c 3c 38 29 29  ADONLY | (5<<8))
ce50: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ce60: 52 45 41 44 4f 4e 4c 59 5f 44 49 52 45 43 54 4f  READONLY_DIRECTO
ce70: 52 59 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  RY      (SQLITE_
ce80: 52 45 41 44 4f 4e 4c 59 20 7c 20 28 36 3c 3c 38  READONLY | (6<<8
ce90: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
cea0: 45 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b  E_ABORT_ROLLBACK
ceb0: 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54            (SQLIT
cec0: 45 5f 41 42 4f 52 54 20 7c 20 28 32 3c 3c 38 29  E_ABORT | (2<<8)
ced0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cee0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43 48 45 43  _CONSTRAINT_CHEC
cef0: 4b 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45  K        (SQLITE
cf00: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 31  _CONSTRAINT | (1
cf10: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
cf20: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
cf30: 43 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20 28 53 51  COMMITHOOK   (SQ
cf40: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
cf50: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
cf60: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
cf70: 49 4e 54 5f 46 4f 52 45 49 47 4e 4b 45 59 20 20  INT_FOREIGNKEY  
cf80: 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   (SQLITE_CONSTRA
cf90: 49 4e 54 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64  INT | (3<<8)).#d
cfa0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
cfb0: 53 54 52 41 49 4e 54 5f 46 55 4e 43 54 49 4f 4e  STRAINT_FUNCTION
cfc0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e       (SQLITE_CON
cfd0: 53 54 52 41 49 4e 54 20 7c 20 28 34 3c 3c 38 29  STRAINT | (4<<8)
cfe0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
cff0: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 4e 4f 54 4e  _CONSTRAINT_NOTN
d000: 55 4c 4c 20 20 20 20 20 20 28 53 51 4c 49 54 45  ULL      (SQLITE
d010: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 35  _CONSTRAINT | (5
d020: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
d030: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
d040: 50 52 49 4d 41 52 59 4b 45 59 20 20 20 28 53 51  PRIMARYKEY   (SQ
d050: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
d060: 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (6<<8)).#defin
d070: 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41  e SQLITE_CONSTRA
d080: 49 4e 54 5f 54 52 49 47 47 45 52 20 20 20 20 20  INT_TRIGGER     
d090: 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41   (SQLITE_CONSTRA
d0a0: 49 4e 54 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64  INT | (7<<8)).#d
d0b0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
d0c0: 53 54 52 41 49 4e 54 5f 55 4e 49 51 55 45 20 20  STRAINT_UNIQUE  
d0d0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e       (SQLITE_CON
d0e0: 53 54 52 41 49 4e 54 20 7c 20 28 38 3c 3c 38 29  STRAINT | (8<<8)
d0f0: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
d100: 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 56 54 41 42  _CONSTRAINT_VTAB
d110: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
d120: 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 39  _CONSTRAINT | (9
d130: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
d140: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f  LITE_CONSTRAINT_
d150: 52 4f 57 49 44 20 20 20 20 20 20 20 20 28 53 51  ROWID        (SQ
d160: 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20  LITE_CONSTRAINT 
d170: 7c 28 31 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e  |(10<<8)).#defin
d180: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f  e SQLITE_NOTICE_
d190: 52 45 43 4f 56 45 52 5f 57 41 4c 20 20 20 20 20  RECOVER_WAL     
d1a0: 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20   (SQLITE_NOTICE 
d1b0: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
d1c0: 65 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f  e SQLITE_NOTICE_
d1d0: 52 45 43 4f 56 45 52 5f 52 4f 4c 4c 42 41 43 4b  RECOVER_ROLLBACK
d1e0: 20 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20   (SQLITE_NOTICE 
d1f0: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
d200: 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47  e SQLITE_WARNING
d210: 5f 41 55 54 4f 49 4e 44 45 58 20 20 20 20 20 20  _AUTOINDEX      
d220: 20 28 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47   (SQLITE_WARNING
d230: 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69   | (1<<8)).#defi
d240: 6e 65 20 53 51 4c 49 54 45 5f 41 55 54 48 5f 55  ne SQLITE_AUTH_U
d250: 53 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20  SER             
d260: 20 20 28 53 51 4c 49 54 45 5f 41 55 54 48 20 7c    (SQLITE_AUTH |
d270: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
d280: 20 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f 41 44 5f   SQLITE_OK_LOAD_
d290: 50 45 52 4d 41 4e 45 4e 54 4c 59 20 20 20 20 20  PERMANENTLY     
d2a0: 28 53 51 4c 49 54 45 5f 4f 4b 20 7c 20 28 31 3c  (SQLITE_OK | (1<
d2b0: 3c 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  <8))../*.** CAPI
d2c0: 33 52 45 46 3a 20 46 6c 61 67 73 20 46 6f 72 20  3REF: Flags For 
d2d0: 46 69 6c 65 20 4f 70 65 6e 20 4f 70 65 72 61 74  File Open Operat
d2e0: 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ions.**.** These
d2f0: 20 62 69 74 20 76 61 6c 75 65 73 20 61 72 65 20   bit values are 
d300: 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65  intended for use
d310: 20 69 6e 20 74 68 65 0a 2a 2a 20 33 72 64 20 70   in the.** 3rd p
d320: 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
d330: 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
d340: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e  ()] interface an
d350: 64 0a 2a 2a 20 69 6e 20 74 68 65 20 34 74 68 20  d.** in the 4th 
d360: 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
d370: 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f   [sqlite3_vfs.xO
d380: 70 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a 2a 2f 0a  pen] method..*/.
d390: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d3a0: 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20  PEN_READONLY    
d3b0: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 31 20       0x00000001 
d3c0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d3d0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d3e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d3f0: 50 45 4e 5f 52 45 41 44 57 52 49 54 45 20 20 20  PEN_READWRITE   
d400: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 32 20       0x00000002 
d410: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d420: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d430: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d440: 50 45 4e 5f 43 52 45 41 54 45 20 20 20 20 20 20  PEN_CREATE      
d450: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34 20       0x00000004 
d460: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d470: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d480: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d490: 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53  PEN_DELETEONCLOS
d4a0: 45 20 20 20 20 30 78 30 30 30 30 30 30 30 38 20  E    0x00000008 
d4b0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d4c0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d4d0: 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 20 20 20  PEN_EXCLUSIVE   
d4e0: 20 20 20 20 20 30 78 30 30 30 30 30 30 31 30 20       0x00000010 
d4f0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d500: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d510: 50 45 4e 5f 41 55 54 4f 50 52 4f 58 59 20 20 20  PEN_AUTOPROXY   
d520: 20 20 20 20 20 30 78 30 30 30 30 30 30 32 30 20       0x00000020 
d530: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d540: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d550: 50 45 4e 5f 55 52 49 20 20 20 20 20 20 20 20 20  PEN_URI         
d560: 20 20 20 20 20 30 78 30 30 30 30 30 30 34 30 20       0x00000040 
d570: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d580: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d590: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d5a0: 50 45 4e 5f 4d 45 4d 4f 52 59 20 20 20 20 20 20  PEN_MEMORY      
d5b0: 20 20 20 20 20 30 78 30 30 30 30 30 30 38 30 20       0x00000080 
d5c0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d5d0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d5e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d5f0: 50 45 4e 5f 4d 41 49 4e 5f 44 42 20 20 20 20 20  PEN_MAIN_DB     
d600: 20 20 20 20 20 30 78 30 30 30 30 30 31 30 30 20       0x00000100 
d610: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d620: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d630: 50 45 4e 5f 54 45 4d 50 5f 44 42 20 20 20 20 20  PEN_TEMP_DB     
d640: 20 20 20 20 20 30 78 30 30 30 30 30 32 30 30 20       0x00000200 
d650: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d660: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d670: 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f 44 42  PEN_TRANSIENT_DB
d680: 20 20 20 20 20 30 78 30 30 30 30 30 34 30 30 20       0x00000400 
d690: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d6a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d6b0: 50 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41 4c  PEN_MAIN_JOURNAL
d6c0: 20 20 20 20 20 30 78 30 30 30 30 30 38 30 30 20       0x00000800 
d6d0: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d6e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d6f0: 50 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c  PEN_TEMP_JOURNAL
d700: 20 20 20 20 20 30 78 30 30 30 30 31 30 30 30 20       0x00001000 
d710: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d720: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d730: 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c 20 20  PEN_SUBJOURNAL  
d740: 20 20 20 20 20 30 78 30 30 30 30 32 30 30 30 20       0x00002000 
d750: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d760: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d770: 50 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f 55 52 4e  PEN_MASTER_JOURN
d780: 41 4c 20 20 20 30 78 30 30 30 30 34 30 30 30 20  AL   0x00004000 
d790: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d7a0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d7b0: 50 45 4e 5f 4e 4f 4d 55 54 45 58 20 20 20 20 20  PEN_NOMUTEX     
d7c0: 20 20 20 20 20 30 78 30 30 30 30 38 30 30 30 20       0x00008000 
d7d0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d7e0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d7f0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d800: 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 20 20  PEN_FULLMUTEX   
d810: 20 20 20 20 20 30 78 30 30 30 31 30 30 30 30 20       0x00010000 
d820: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d830: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d840: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d850: 50 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20  PEN_SHAREDCACHE 
d860: 20 20 20 20 20 30 78 30 30 30 32 30 30 30 30 20       0x00020000 
d870: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d880: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d890: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d8a0: 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45  PEN_PRIVATECACHE
d8b0: 20 20 20 20 20 30 78 30 30 30 34 30 30 30 30 20       0x00040000 
d8c0: 20 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74   /* Ok for sqlit
d8d0: 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a  e3_open_v2() */.
d8e0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f  #define SQLITE_O
d8f0: 50 45 4e 5f 57 41 4c 20 20 20 20 20 20 20 20 20  PEN_WAL         
d900: 20 20 20 20 20 30 78 30 30 30 38 30 30 30 30 20       0x00080000 
d910: 20 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a   /* VFS only */.
d920: 0a 2f 2a 20 52 65 73 65 72 76 65 64 3a 20 20 20  ./* Reserved:   
d930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d940: 20 20 20 20 20 20 30 78 30 30 46 30 30 30 30 30        0x00F00000
d950: 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
d960: 52 45 46 3a 20 44 65 76 69 63 65 20 43 68 61 72  REF: Device Char
d970: 61 63 74 65 72 69 73 74 69 63 73 0a 2a 2a 0a 2a  acteristics.**.*
d980: 2a 20 54 68 65 20 78 44 65 76 69 63 65 43 68 61  * The xDeviceCha
d990: 72 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74  racteristics met
d9a0: 68 6f 64 20 6f 66 20 74 68 65 20 5b 73 71 6c 69  hod of the [sqli
d9b0: 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 0a  te3_io_methods].
d9c0: 2a 2a 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e  ** object return
d9d0: 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69  s an integer whi
d9e0: 63 68 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f  ch is a vector o
d9f0: 66 20 74 68 65 73 65 0a 2a 2a 20 62 69 74 20 76  f these.** bit v
da00: 61 6c 75 65 73 20 65 78 70 72 65 73 73 69 6e 67  alues expressing
da10: 20 49 2f 4f 20 63 68 61 72 61 63 74 65 72 69 73   I/O characteris
da20: 74 69 63 73 20 6f 66 20 74 68 65 20 6d 61 73 73  tics of the mass
da30: 20 73 74 6f 72 61 67 65 0a 2a 2a 20 64 65 76 69   storage.** devi
da40: 63 65 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68  ce that holds th
da50: 65 20 66 69 6c 65 20 74 68 61 74 20 74 68 65 20  e file that the 
da60: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
da70: 6f 64 73 5d 0a 2a 2a 20 72 65 66 65 72 73 20 74  ods].** refers t
da80: 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  o..**.** The SQL
da90: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
daa0: 20 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20   property means 
dab0: 74 68 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20  that all writes 
dac0: 6f 66 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61  of.** any size a
dad0: 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20  re atomic.  The 
dae0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
daf0: 4d 49 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a  MICnnn values.**
db00: 20 6d 65 61 6e 20 74 68 61 74 20 77 72 69 74 65   mean that write
db10: 73 20 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74  s of blocks that
db20: 20 61 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69   are nnn bytes i
db30: 6e 20 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72  n size and.** ar
db40: 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20  e aligned to an 
db50: 61 64 64 72 65 73 73 20 77 68 69 63 68 20 69 73  address which is
db60: 20 61 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74   an integer mult
db70: 69 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61  iple of.** nnn a
db80: 72 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20  re atomic.  The 
db90: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46  SQLITE_IOCAP_SAF
dba0: 45 5f 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d  E_APPEND value m
dbb0: 65 61 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65  eans.** that whe
dbc0: 6e 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64  n data is append
dbd0: 65 64 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68  ed to a file, th
dbe0: 65 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64  e data is append
dbf0: 65 64 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e  ed.** first then
dc00: 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
dc10: 20 66 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65   file is extende
dc20: 64 2c 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68  d, never the oth
dc30: 65 72 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64  er.** way around
dc40: 2e 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  .  The SQLITE_IO
dc50: 43 41 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70  CAP_SEQUENTIAL p
dc60: 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68  roperty means th
dc70: 61 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f  at.** informatio
dc80: 6e 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20  n is written to 
dc90: 64 69 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65  disk in the same
dca0: 20 6f 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a   order as calls.
dcb0: 2a 2a 20 74 6f 20 78 57 72 69 74 65 28 29 2e 20  ** to xWrite(). 
dcc0: 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41   The SQLITE_IOCA
dcd0: 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52  P_POWERSAFE_OVER
dce0: 57 52 49 54 45 20 70 72 6f 70 65 72 74 79 20 6d  WRITE property m
dcf0: 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20 61 66 74  eans that.** aft
dd00: 65 72 20 72 65 62 6f 6f 74 20 66 6f 6c 6c 6f 77  er reboot follow
dd10: 69 6e 67 20 61 20 63 72 61 73 68 20 6f 72 20 70  ing a crash or p
dd20: 6f 77 65 72 20 6c 6f 73 73 2c 20 74 68 65 20 6f  ower loss, the o
dd30: 6e 6c 79 20 62 79 74 65 73 20 69 6e 20 61 0a 2a  nly bytes in a.*
dd40: 2a 20 66 69 6c 65 20 74 68 61 74 20 77 65 72 65  * file that were
dd50: 20 77 72 69 74 74 65 6e 20 61 74 20 74 68 65 20   written at the 
dd60: 61 70 70 6c 69 63 61 74 69 6f 6e 20 6c 65 76 65  application leve
dd70: 6c 20 6d 69 67 68 74 20 68 61 76 65 20 63 68 61  l might have cha
dd80: 6e 67 65 64 0a 2a 2a 20 61 6e 64 20 74 68 61 74  nged.** and that
dd90: 20 61 64 6a 61 63 65 6e 74 20 62 79 74 65 73 2c   adjacent bytes,
dda0: 20 65 76 65 6e 20 62 79 74 65 73 20 77 69 74 68   even bytes with
ddb0: 69 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74  in the same sect
ddc0: 6f 72 20 61 72 65 0a 2a 2a 20 67 75 61 72 61 6e  or are.** guaran
ddd0: 74 65 65 64 20 74 6f 20 62 65 20 75 6e 63 68 61  teed to be uncha
dde0: 6e 67 65 64 2e 20 20 54 68 65 20 53 51 4c 49 54  nged.  The SQLIT
ddf0: 45 5f 49 4f 43 41 50 5f 55 4e 44 45 4c 45 54 41  E_IOCAP_UNDELETA
de00: 42 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e 0a 2a 2a  BLE_WHEN_OPEN.**
de10: 20 66 6c 61 67 20 69 6e 64 69 63 61 74 65 73 20   flag indicates 
de20: 74 68 61 74 20 61 20 66 69 6c 65 20 63 61 6e 6e  that a file cann
de30: 6f 74 20 62 65 20 64 65 6c 65 74 65 64 20 77 68  ot be deleted wh
de40: 65 6e 20 6f 70 65 6e 2e 20 20 54 68 65 0a 2a 2a  en open.  The.**
de50: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d   SQLITE_IOCAP_IM
de60: 4d 55 54 41 42 4c 45 20 66 6c 61 67 20 69 6e 64  MUTABLE flag ind
de70: 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20  icates that the 
de80: 66 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a 20 72 65  file is on.** re
de90: 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61 20 61 6e  ad-only media an
dea0: 64 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e  d cannot be chan
deb0: 67 65 64 20 65 76 65 6e 20 62 79 20 70 72 6f 63  ged even by proc
dec0: 65 73 73 65 73 20 77 69 74 68 0a 2a 2a 20 65 6c  esses with.** el
ded0: 65 76 61 74 65 64 20 70 72 69 76 69 6c 65 67 65  evated privilege
dee0: 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  s..**.** The SQL
def0: 49 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f  ITE_IOCAP_BATCH_
df00: 41 54 4f 4d 49 43 20 70 72 6f 70 65 72 74 79 20  ATOMIC property 
df10: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 75  means that the u
df20: 6e 64 65 72 6c 79 69 6e 67 0a 2a 2a 20 66 69 6c  nderlying.** fil
df30: 65 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 73  esystem supports
df40: 20 64 6f 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20   doing multiple 
df50: 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73  write operations
df60: 20 61 74 6f 6d 69 63 61 6c 6c 79 20 77 68 65 6e   atomically when
df70: 20 74 68 6f 73 65 0a 2a 2a 20 77 72 69 74 65 20   those.** write 
df80: 6f 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 62  operations are b
df90: 72 61 63 6b 65 74 65 64 20 62 79 20 5b 53 51 4c  racketed by [SQL
dfa0: 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
dfb0: 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 61 6e  ATOMIC_WRITE] an
dfc0: 64 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  d.** [SQLITE_FCN
dfd0: 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43  TL_COMMIT_ATOMIC
dfe0: 5f 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23 64 65 66  _WRITE]..*/.#def
dff0: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
e000: 5f 41 54 4f 4d 49 43 20 20 20 20 20 20 20 20 20  _ATOMIC         
e010: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
e020: 30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  01.#define SQLIT
e030: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31  E_IOCAP_ATOMIC51
e040: 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30  2              0
e050: 78 30 30 30 30 30 30 30 32 0a 23 64 65 66 69 6e  x00000002.#defin
e060: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41  e SQLITE_IOCAP_A
e070: 54 4f 4d 49 43 31 4b 20 20 20 20 20 20 20 20 20  TOMIC1K         
e080: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34        0x00000004
e090: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e0a0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 20 20  IOCAP_ATOMIC2K  
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
e0c0: 30 30 30 30 30 30 38 0a 23 64 65 66 69 6e 65 20  0000008.#define 
e0d0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f  SQLITE_IOCAP_ATO
e0e0: 4d 49 43 34 4b 20 20 20 20 20 20 20 20 20 20 20  MIC4K           
e0f0: 20 20 20 20 30 78 30 30 30 30 30 30 31 30 0a 23      0x00000010.#
e100: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
e110: 43 41 50 5f 41 54 4f 4d 49 43 38 4b 20 20 20 20  CAP_ATOMIC8K    
e120: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30             0x000
e130: 30 30 30 32 30 0a 23 64 65 66 69 6e 65 20 53 51  00020.#define SQ
e140: 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49  LITE_IOCAP_ATOMI
e150: 43 31 36 4b 20 20 20 20 20 20 20 20 20 20 20 20  C16K            
e160: 20 20 30 78 30 30 30 30 30 30 34 30 0a 23 64 65    0x00000040.#de
e170: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
e180: 50 5f 41 54 4f 4d 49 43 33 32 4b 20 20 20 20 20  P_ATOMIC32K     
e190: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30           0x00000
e1a0: 30 38 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  080.#define SQLI
e1b0: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36  TE_IOCAP_ATOMIC6
e1c0: 34 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  4K              
e1d0: 30 78 30 30 30 30 30 31 30 30 0a 23 64 65 66 69  0x00000100.#defi
e1e0: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
e1f0: 53 41 46 45 5f 41 50 50 45 4e 44 20 20 20 20 20  SAFE_APPEND     
e200: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 32 30         0x0000020
e210: 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  0.#define SQLITE
e220: 5f 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41  _IOCAP_SEQUENTIA
e230: 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78  L             0x
e240: 30 30 30 30 30 34 30 30 0a 23 64 65 66 69 6e 65  00000400.#define
e250: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e   SQLITE_IOCAP_UN
e260: 44 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f  DELETABLE_WHEN_O
e270: 50 45 4e 20 20 30 78 30 30 30 30 30 38 30 30 0a  PEN  0x00000800.
e280: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
e290: 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f  OCAP_POWERSAFE_O
e2a0: 56 45 52 57 52 49 54 45 20 20 20 20 30 78 30 30  VERWRITE    0x00
e2b0: 30 30 31 30 30 30 0a 23 64 65 66 69 6e 65 20 53  001000.#define S
e2c0: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55  QLITE_IOCAP_IMMU
e2d0: 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 20  TABLE           
e2e0: 20 20 20 30 78 30 30 30 30 32 30 30 30 0a 23 64     0x00002000.#d
e2f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
e300: 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 20  AP_BATCH_ATOMIC 
e310: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
e320: 34 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  4000../*.** CAPI
e330: 33 52 45 46 3a 20 46 69 6c 65 20 4c 6f 63 6b 69  3REF: File Locki
e340: 6e 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a 2a 2a 20  ng Levels.**.** 
e350: 53 51 4c 69 74 65 20 75 73 65 73 20 6f 6e 65 20  SQLite uses one 
e360: 6f 66 20 74 68 65 73 65 20 69 6e 74 65 67 65 72  of these integer
e370: 20 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73   values as the s
e380: 65 63 6f 6e 64 0a 2a 2a 20 61 72 67 75 6d 65 6e  econd.** argumen
e390: 74 20 74 6f 20 63 61 6c 6c 73 20 69 74 20 6d 61  t to calls it ma
e3a0: 6b 65 73 20 74 6f 20 74 68 65 20 78 4c 6f 63 6b  kes to the xLock
e3b0: 28 29 20 61 6e 64 20 78 55 6e 6c 6f 63 6b 28 29  () and xUnlock()
e3c0: 20 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f 66 20 61   methods.** of a
e3d0: 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  n [sqlite3_io_me
e3e0: 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 2e 0a 2a  thods] object..*
e3f0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
e400: 5f 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20 20 20 20  _LOCK_NONE      
e410: 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51      0.#define SQ
e420: 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44  LITE_LOCK_SHARED
e430: 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e          1.#defin
e440: 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45  e SQLITE_LOCK_RE
e450: 53 45 52 56 45 44 20 20 20 20 20 20 32 0a 23 64  SERVED      2.#d
e460: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43  efine SQLITE_LOC
e470: 4b 5f 50 45 4e 44 49 4e 47 20 20 20 20 20 20 20  K_PENDING       
e480: 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  3.#define SQLITE
e490: 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49 56 45 20  _LOCK_EXCLUSIVE 
e4a0: 20 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20 43 41 50      4../*.** CAP
e4b0: 49 33 52 45 46 3a 20 53 79 6e 63 68 72 6f 6e 69  I3REF: Synchroni
e4c0: 7a 61 74 69 6f 6e 20 54 79 70 65 20 46 6c 61 67  zation Type Flag
e4d0: 73 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 53 51 4c  s.**.** When SQL
e4e0: 69 74 65 20 69 6e 76 6f 6b 65 73 20 74 68 65 20  ite invokes the 
e4f0: 78 53 79 6e 63 28 29 20 6d 65 74 68 6f 64 20 6f  xSync() method o
e500: 66 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  f an.** [sqlite3
e510: 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a  _io_methods] obj
e520: 65 63 74 20 69 74 20 75 73 65 73 20 61 20 63 6f  ect it uses a co
e530: 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20  mbination of.** 
e540: 74 68 65 73 65 20 69 6e 74 65 67 65 72 20 76 61  these integer va
e550: 6c 75 65 73 20 61 73 20 74 68 65 20 73 65 63 6f  lues as the seco
e560: 6e 64 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a  nd argument..**.
e570: 2a 2a 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49  ** When the SQLI
e580: 54 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59  TE_SYNC_DATAONLY
e590: 20 66 6c 61 67 20 69 73 20 75 73 65 64 2c 20 69   flag is used, i
e5a0: 74 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  t means that the
e5b0: 0a 2a 2a 20 73 79 6e 63 20 6f 70 65 72 61 74 69  .** sync operati
e5c0: 6f 6e 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f  on only needs to
e5d0: 20 66 6c 75 73 68 20 64 61 74 61 20 74 6f 20 6d   flush data to m
e5e0: 61 73 73 20 73 74 6f 72 61 67 65 2e 20 20 49 6e  ass storage.  In
e5f0: 6f 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69  ode.** informati
e600: 6f 6e 20 6e 65 65 64 20 6e 6f 74 20 62 65 20 66  on need not be f
e610: 6c 75 73 68 65 64 2e 20 49 66 20 74 68 65 20 6c  lushed. If the l
e620: 6f 77 65 72 20 66 6f 75 72 20 62 69 74 73 20 6f  ower four bits o
e630: 66 20 74 68 65 20 66 6c 61 67 0a 2a 2a 20 65 71  f the flag.** eq
e640: 75 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ual SQLITE_SYNC_
e650: 4e 4f 52 4d 41 4c 2c 20 74 68 61 74 20 6d 65 61  NORMAL, that mea
e660: 6e 73 20 74 6f 20 75 73 65 20 6e 6f 72 6d 61 6c  ns to use normal
e670: 20 66 73 79 6e 63 28 29 20 73 65 6d 61 6e 74 69   fsync() semanti
e680: 63 73 2e 0a 2a 2a 20 49 66 20 74 68 65 20 6c 6f  cs..** If the lo
e690: 77 65 72 20 66 6f 75 72 20 62 69 74 73 20 65 71  wer four bits eq
e6a0: 75 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ual SQLITE_SYNC_
e6b0: 46 55 4c 4c 2c 20 74 68 61 74 20 6d 65 61 6e 73  FULL, that means
e6c0: 0a 2a 2a 20 74 6f 20 75 73 65 20 4d 61 63 20 4f  .** to use Mac O
e6d0: 53 20 58 20 73 74 79 6c 65 20 66 75 6c 6c 73 79  S X style fullsy
e6e0: 6e 63 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73  nc instead of fs
e6f0: 79 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 44 6f 20  ync()..**.** Do 
e700: 6e 6f 74 20 63 6f 6e 66 75 73 65 20 74 68 65 20  not confuse the 
e710: 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d  SQLITE_SYNC_NORM
e720: 41 4c 20 61 6e 64 20 53 51 4c 49 54 45 5f 53 59  AL and SQLITE_SY
e730: 4e 43 5f 46 55 4c 4c 20 66 6c 61 67 73 0a 2a 2a  NC_FULL flags.**
e740: 20 77 69 74 68 20 74 68 65 20 5b 50 52 41 47 4d   with the [PRAGM
e750: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 4e  A synchronous]=N
e760: 4f 52 4d 41 4c 20 61 6e 64 20 5b 50 52 41 47 4d  ORMAL and [PRAGM
e770: 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 46  A synchronous]=F
e780: 55 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e 67 73 2e  ULL.** settings.
e790: 20 20 54 68 65 20 5b 73 79 6e 63 68 72 6f 6e 6f    The [synchrono
e7a0: 75 73 20 70 72 61 67 6d 61 5d 20 64 65 74 65 72  us pragma] deter
e7b0: 6d 69 6e 65 73 20 77 68 65 6e 20 63 61 6c 6c 73  mines when calls
e7c0: 20 74 6f 20 74 68 65 0a 2a 2a 20 78 53 79 6e 63   to the.** xSync
e7d0: 20 56 46 53 20 6d 65 74 68 6f 64 20 6f 63 63 75   VFS method occu
e7e0: 72 20 61 6e 64 20 61 70 70 6c 69 65 73 20 75 6e  r and applies un
e7f0: 69 66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 61  iformly across a
e800: 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 2a 2a  ll platforms..**
e810: 20 54 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43   The SQLITE_SYNC
e820: 5f 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49  _NORMAL and SQLI
e830: 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61  TE_SYNC_FULL fla
e840: 67 73 20 64 65 74 65 72 6d 69 6e 65 20 68 6f 77  gs determine how
e850: 0a 2a 2a 20 65 6e 65 72 67 65 74 69 63 20 6f 72  .** energetic or
e860: 20 72 69 67 6f 72 6f 75 73 20 6f 72 20 66 6f 72   rigorous or for
e870: 63 65 66 75 6c 20 74 68 65 20 73 79 6e 63 20 6f  ceful the sync o
e880: 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 61 6e  perations are an
e890: 64 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b 65 20 61  d.** only make a
e8a0: 20 64 69 66 66 65 72 65 6e 63 65 20 6f 6e 20 4d   difference on M
e8b0: 61 63 20 4f 53 58 20 66 6f 72 20 74 68 65 20 64  ac OSX for the d
e8c0: 65 66 61 75 6c 74 20 53 51 4c 69 74 65 20 63 6f  efault SQLite co
e8d0: 64 65 2e 0a 2a 2a 20 28 54 68 69 72 64 2d 70 61  de..** (Third-pa
e8e0: 72 74 79 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e  rty VFS implemen
e8f0: 74 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 61 6c  tations might al
e900: 73 6f 20 6d 61 6b 65 20 74 68 65 20 64 69 73 74  so make the dist
e910: 69 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65 74 77 65  inction.** betwe
e920: 65 6e 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  en SQLITE_SYNC_N
e930: 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45  ORMAL and SQLITE
e940: 5f 53 59 4e 43 5f 46 55 4c 4c 2c 20 62 75 74 20  _SYNC_FULL, but 
e950: 61 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20 6f 70 65  among the.** ope
e960: 72 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 6e  rating systems n
e970: 61 74 69 76 65 6c 79 20 73 75 70 70 6f 72 74 65  atively supporte
e980: 64 20 62 79 20 53 51 4c 69 74 65 2c 20 6f 6e 6c  d by SQLite, onl
e990: 79 20 4d 61 63 20 4f 53 58 0a 2a 2a 20 63 61 72  y Mac OSX.** car
e9a0: 65 73 20 61 62 6f 75 74 20 74 68 65 20 64 69 66  es about the dif
e9b0: 66 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a 23 64 65  ference.).*/.#de
e9c0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e 43  fine SQLITE_SYNC
e9d0: 5f 4e 4f 52 4d 41 4c 20 20 20 20 20 20 20 20 30  _NORMAL        0
e9e0: 78 30 30 30 30 32 0a 23 64 65 66 69 6e 65 20 53  x00002.#define S
e9f0: 51 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20  QLITE_SYNC_FULL 
ea00: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 33           0x00003
ea10: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ea20: 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 20 20 20  SYNC_DATAONLY   
ea30: 20 20 20 30 78 30 30 30 31 30 0a 0a 2f 2a 0a 2a     0x00010../*.*
ea40: 2a 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49  * CAPI3REF: OS I
ea50: 6e 74 65 72 66 61 63 65 20 4f 70 65 6e 20 46 69  nterface Open Fi
ea60: 6c 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20  le Handle.**.** 
ea70: 41 6e 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  An [sqlite3_file
ea80: 5d 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73 65  ] object represe
ea90: 6e 74 73 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  nts an open file
eaa0: 20 69 6e 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c   in the .** [sql
eab0: 69 74 65 33 5f 76 66 73 20 7c 20 4f 53 20 69 6e  ite3_vfs | OS in
eac0: 74 65 72 66 61 63 65 20 6c 61 79 65 72 5d 2e 20  terface layer]. 
ead0: 20 49 6e 64 69 76 69 64 75 61 6c 20 4f 53 20 69   Individual OS i
eae0: 6e 74 65 72 66 61 63 65 0a 2a 2a 20 69 6d 70 6c  nterface.** impl
eaf0: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 77 69 6c 6c  ementations will
eb00: 0a 2a 2a 20 77 61 6e 74 20 74 6f 20 73 75 62 63  .** want to subc
eb10: 6c 61 73 73 20 74 68 69 73 20 6f 62 6a 65 63 74  lass this object
eb20: 20 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 64   by appending ad
eb30: 64 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a  ditional fields.
eb40: 2a 2a 20 66 6f 72 20 74 68 65 69 72 20 6f 77 6e  ** for their own
eb50: 20 75 73 65 2e 20 20 54 68 65 20 70 4d 65 74 68   use.  The pMeth
eb60: 6f 64 73 20 65 6e 74 72 79 20 69 73 20 61 20 70  ods entry is a p
eb70: 6f 69 6e 74 65 72 20 74 6f 20 61 6e 0a 2a 2a 20  ointer to an.** 
eb80: 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68  [sqlite3_io_meth
eb90: 6f 64 73 5d 20 6f 62 6a 65 63 74 20 74 68 61 74  ods] object that
eba0: 20 64 65 66 69 6e 65 73 20 6d 65 74 68 6f 64 73   defines methods
ebb0: 20 66 6f 72 20 70 65 72 66 6f 72 6d 69 6e 67 0a   for performing.
ebc0: 2a 2a 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e  ** I/O operation
ebd0: 73 20 6f 6e 20 74 68 65 20 6f 70 65 6e 20 66 69  s on the open fi
ebe0: 6c 65 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73  le..*/.typedef s
ebf0: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 66 69  truct sqlite3_fi
ec00: 6c 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 3b  le sqlite3_file;
ec10: 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f  .struct sqlite3_
ec20: 66 69 6c 65 20 7b 0a 20 20 63 6f 6e 73 74 20 73  file {.  const s
ec30: 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f  truct sqlite3_io
ec40: 5f 6d 65 74 68 6f 64 73 20 2a 70 4d 65 74 68 6f  _methods *pMetho
ec50: 64 73 3b 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20  ds;  /* Methods 
ec60: 66 6f 72 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65  for an open file
ec70: 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   */.};../*.** CA
ec80: 50 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72  PI3REF: OS Inter
ec90: 66 61 63 65 20 46 69 6c 65 20 56 69 72 74 75 61  face File Virtua
eca0: 6c 20 4d 65 74 68 6f 64 73 20 4f 62 6a 65 63 74  l Methods Object
ecb0: 0a 2a 2a 0a 2a 2a 20 45 76 65 72 79 20 66 69 6c  .**.** Every fil
ecc0: 65 20 6f 70 65 6e 65 64 20 62 79 20 74 68 65 20  e opened by the 
ecd0: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
ece0: 65 6e 5d 20 6d 65 74 68 6f 64 20 70 6f 70 75 6c  en] method popul
ecf0: 61 74 65 73 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69  ates an.** [sqli
ed00: 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74  te3_file] object
ed10: 20 28 6f 72 2c 20 6d 6f 72 65 20 63 6f 6d 6d 6f   (or, more commo
ed20: 6e 6c 79 2c 20 61 20 73 75 62 63 6c 61 73 73 20  nly, a subclass 
ed30: 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  of the.** [sqlit
ed40: 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 29  e3_file] object)
ed50: 20 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20   with a pointer 
ed60: 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f  to an instance o
ed70: 66 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 2a  f this object..*
ed80: 2a 20 54 68 69 73 20 6f 62 6a 65 63 74 20 64 65  * This object de
ed90: 66 69 6e 65 73 20 74 68 65 20 6d 65 74 68 6f 64  fines the method
eda0: 73 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f 72  s used to perfor
edb0: 6d 20 76 61 72 69 6f 75 73 20 6f 70 65 72 61 74  m various operat
edc0: 69 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e 73 74 20  ions.** against 
edd0: 74 68 65 20 6f 70 65 6e 20 66 69 6c 65 20 72 65  the open file re
ede0: 70 72 65 73 65 6e 74 65 64 20 62 79 20 74 68 65  presented by the
edf0: 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
ee00: 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 49 66  object..**.** If
ee10: 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   the [sqlite3_vf
ee20: 73 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20  s.xOpen] method 
ee30: 73 65 74 73 20 74 68 65 20 73 71 6c 69 74 65 33  sets the sqlite3
ee40: 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65  _file.pMethods e
ee50: 6c 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f 20 61 20  lement .** to a 
ee60: 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  non-NULL pointer
ee70: 2c 20 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74  , then the sqlit
ee80: 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 2e 78 43  e3_io_methods.xC
ee90: 6c 6f 73 65 20 6d 65 74 68 6f 64 0a 2a 2a 20 6d  lose method.** m
eea0: 61 79 20 62 65 20 69 6e 76 6f 6b 65 64 20 65 76  ay be invoked ev
eeb0: 65 6e 20 69 66 20 74 68 65 20 5b 73 71 6c 69 74  en if the [sqlit
eec0: 65 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 72 65  e3_vfs.xOpen] re
eed0: 70 6f 72 74 65 64 20 74 68 61 74 20 69 74 20 66  ported that it f
eee0: 61 69 6c 65 64 2e 20 20 54 68 65 0a 2a 2a 20 6f  ailed.  The.** o
eef0: 6e 6c 79 20 77 61 79 20 74 6f 20 70 72 65 76 65  nly way to preve
ef00: 6e 74 20 61 20 63 61 6c 6c 20 74 6f 20 78 43 6c  nt a call to xCl
ef10: 6f 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20  ose following a 
ef20: 66 61 69 6c 65 64 20 5b 73 71 6c 69 74 65 33 5f  failed [sqlite3_
ef30: 76 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a 20 69 73  vfs.xOpen].** is
ef40: 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65   for the [sqlite
ef50: 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 74 6f 20  3_vfs.xOpen] to 
ef60: 73 65 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f  set the sqlite3_
ef70: 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65 6c  file.pMethods el
ef80: 65 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c  ement.** to NULL
ef90: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6c 61 67  ..**.** The flag
efa0: 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 53  s argument to xS
efb0: 79 6e 63 20 6d 61 79 20 62 65 20 6f 6e 65 20 6f  ync may be one o
efc0: 66 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  f [SQLITE_SYNC_N
efd0: 4f 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20 5b 53 51  ORMAL] or.** [SQ
efe0: 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 5d 2e  LITE_SYNC_FULL].
eff0: 20 20 54 68 65 20 66 69 72 73 74 20 63 68 6f 69    The first choi
f000: 63 65 20 69 73 20 74 68 65 20 6e 6f 72 6d 61 6c  ce is the normal
f010: 20 66 73 79 6e 63 28 29 2e 0a 2a 2a 20 54 68 65   fsync()..** The
f020: 20 73 65 63 6f 6e 64 20 63 68 6f 69 63 65 20 69   second choice i
f030: 73 20 61 20 4d 61 63 20 4f 53 20 58 20 73 74 79  s a Mac OS X sty
f040: 6c 65 20 66 75 6c 6c 73 79 6e 63 2e 20 20 54 68  le fullsync.  Th
f050: 65 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44  e [SQLITE_SYNC_D
f060: 41 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66 6c 61 67  ATAONLY].** flag
f070: 20 6d 61 79 20 62 65 20 4f 52 65 64 20 69 6e 20   may be ORed in 
f080: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
f090: 20 6f 6e 6c 79 20 74 68 65 20 64 61 74 61 20 6f   only the data o
f0a0: 66 20 74 68 65 20 66 69 6c 65 0a 2a 2a 20 61 6e  f the file.** an
f0b0: 64 20 6e 6f 74 20 69 74 73 20 69 6e 6f 64 65 20  d not its inode 
f0c0: 6e 65 65 64 73 20 74 6f 20 62 65 20 73 79 6e 63  needs to be sync
f0d0: 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e  ed..**.** The in
f0e0: 74 65 67 65 72 20 76 61 6c 75 65 73 20 74 6f 20  teger values to 
f0f0: 78 4c 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c  xLock() and xUnl
f100: 6f 63 6b 28 29 20 61 72 65 20 6f 6e 65 20 6f 66  ock() are one of
f110: 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
f120: 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f   [SQLITE_LOCK_NO
f130: 4e 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  NE],.** <li> [SQ
f140: 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44  LITE_LOCK_SHARED
f150: 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  ],.** <li> [SQLI
f160: 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44  TE_LOCK_RESERVED
f170: 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  ],.** <li> [SQLI
f180: 54 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 5d  TE_LOCK_PENDING]
f190: 2c 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  , or.** <li> [SQ
f1a0: 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53  LITE_LOCK_EXCLUS
f1b0: 49 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a  IVE]..** </ul>.*
f1c0: 2a 20 78 4c 6f 63 6b 28 29 20 69 6e 63 72 65 61  * xLock() increa
f1d0: 73 65 73 20 74 68 65 20 6c 6f 63 6b 2e 20 78 55  ses the lock. xU
f1e0: 6e 6c 6f 63 6b 28 29 20 64 65 63 72 65 61 73 65  nlock() decrease
f1f0: 73 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a 2a 20 54  s the lock..** T
f200: 68 65 20 78 43 68 65 63 6b 52 65 73 65 72 76 65  he xCheckReserve
f210: 64 4c 6f 63 6b 28 29 20 6d 65 74 68 6f 64 20 63  dLock() method c
f220: 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 61 6e  hecks whether an
f230: 79 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  y database conne
f240: 63 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74 68 65 72  ction,.** either
f250: 20 69 6e 20 74 68 69 73 20 70 72 6f 63 65 73 73   in this process
f260: 20 6f 72 20 69 6e 20 73 6f 6d 65 20 6f 74 68 65   or in some othe
f270: 72 20 70 72 6f 63 65 73 73 2c 20 69 73 20 68 6f  r process, is ho
f280: 6c 64 69 6e 67 20 61 20 52 45 53 45 52 56 45 44  lding a RESERVED
f290: 2c 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c 20 6f 72  ,.** PENDING, or
f2a0: 20 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 20   EXCLUSIVE lock 
f2b0: 6f 6e 20 74 68 65 20 66 69 6c 65 2e 20 20 49 74  on the file.  It
f2c0: 20 72 65 74 75 72 6e 73 20 74 72 75 65 0a 2a 2a   returns true.**
f2d0: 20 69 66 20 73 75 63 68 20 61 20 6c 6f 63 6b 20   if such a lock 
f2e0: 65 78 69 73 74 73 20 61 6e 64 20 66 61 6c 73 65  exists and false
f2f0: 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 0a 2a   otherwise..**.*
f300: 2a 20 54 68 65 20 78 46 69 6c 65 43 6f 6e 74 72  * The xFileContr
f310: 6f 6c 28 29 20 6d 65 74 68 6f 64 20 69 73 20 61  ol() method is a
f320: 20 67 65 6e 65 72 69 63 20 69 6e 74 65 72 66 61   generic interfa
f330: 63 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 63  ce that allows c
f340: 75 73 74 6f 6d 0a 2a 2a 20 56 46 53 20 69 6d 70  ustom.** VFS imp
f350: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 6f 20  lementations to 
f360: 64 69 72 65 63 74 6c 79 20 63 6f 6e 74 72 6f 6c  directly control
f370: 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65 20 75 73   an open file us
f380: 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69  ing the.** [sqli
f390: 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
f3a0: 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
f3b0: 54 68 65 20 73 65 63 6f 6e 64 20 22 6f 70 22 20  The second "op" 
f3c0: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 0a 2a  argument is an.*
f3d0: 2a 20 69 6e 74 65 67 65 72 20 6f 70 63 6f 64 65  * integer opcode
f3e0: 2e 20 20 54 68 65 20 74 68 69 72 64 20 61 72 67  .  The third arg
f3f0: 75 6d 65 6e 74 20 69 73 20 61 20 67 65 6e 65 72  ument is a gener
f400: 69 63 20 70 6f 69 6e 74 65 72 20 69 6e 74 65 6e  ic pointer inten
f410: 64 65 64 20 74 6f 0a 2a 2a 20 70 6f 69 6e 74 20  ded to.** point 
f420: 74 6f 20 61 20 73 74 72 75 63 74 75 72 65 20 74  to a structure t
f430: 68 61 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20  hat may contain 
f440: 61 72 67 75 6d 65 6e 74 73 20 6f 72 20 73 70 61  arguments or spa
f450: 63 65 20 69 6e 20 77 68 69 63 68 20 74 6f 0a 2a  ce in which to.*
f460: 2a 20 77 72 69 74 65 20 72 65 74 75 72 6e 20 76  * write return v
f470: 61 6c 75 65 73 2e 20 20 50 6f 74 65 6e 74 69 61  alues.  Potentia
f480: 6c 20 75 73 65 73 20 66 6f 72 20 78 46 69 6c 65  l uses for xFile
f490: 43 6f 6e 74 72 6f 6c 28 29 20 6d 69 67 68 74 20  Control() might 
f4a0: 62 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 73 20  be.** functions 
f4b0: 74 6f 20 65 6e 61 62 6c 65 20 62 6c 6f 63 6b 69  to enable blocki
f4c0: 6e 67 20 6c 6f 63 6b 73 20 77 69 74 68 20 74 69  ng locks with ti
f4d0: 6d 65 6f 75 74 73 2c 20 74 6f 20 63 68 61 6e 67  meouts, to chang
f4e0: 65 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b 69 6e 67  e the.** locking
f4f0: 20 73 74 72 61 74 65 67 79 20 28 66 6f 72 20 65   strategy (for e
f500: 78 61 6d 70 6c 65 20 74 6f 20 75 73 65 20 64 6f  xample to use do
f510: 74 2d 66 69 6c 65 20 6c 6f 63 6b 73 29 2c 20 74  t-file locks), t
f520: 6f 20 69 6e 71 75 69 72 65 0a 2a 2a 20 61 62 6f  o inquire.** abo
f530: 75 74 20 74 68 65 20 73 74 61 74 75 73 20 6f 66  ut the status of
f540: 20 61 20 6c 6f 63 6b 2c 20 6f 72 20 74 6f 20 62   a lock, or to b
f550: 72 65 61 6b 20 73 74 61 6c 65 20 6c 6f 63 6b 73  reak stale locks
f560: 2e 20 20 54 68 65 20 53 51 4c 69 74 65 0a 2a 2a  .  The SQLite.**
f570: 20 63 6f 72 65 20 72 65 73 65 72 76 65 73 20 61   core reserves a
f580: 6c 6c 20 6f 70 63 6f 64 65 73 20 6c 65 73 73 20  ll opcodes less 
f590: 74 68 61 6e 20 31 30 30 20 66 6f 72 20 69 74 73  than 100 for its
f5a0: 20 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20 41 20 5b   own use..** A [
f5b0: 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63  file control opc
f5c0: 6f 64 65 73 20 7c 20 6c 69 73 74 20 6f 66 20 6f  odes | list of o
f5d0: 70 63 6f 64 65 73 5d 20 6c 65 73 73 20 74 68 61  pcodes] less tha
f5e0: 6e 20 31 30 30 20 69 73 20 61 76 61 69 6c 61 62  n 100 is availab
f5f0: 6c 65 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  le..** Applicati
f600: 6f 6e 73 20 74 68 61 74 20 64 65 66 69 6e 65 20  ons that define 
f610: 61 20 63 75 73 74 6f 6d 20 78 46 69 6c 65 43 6f  a custom xFileCo
f620: 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 73 68 6f  ntrol method sho
f630: 75 6c 64 20 75 73 65 20 6f 70 63 6f 64 65 73 0a  uld use opcodes.
f640: 2a 2a 20 67 72 65 61 74 65 72 20 74 68 61 6e 20  ** greater than 
f650: 31 30 30 20 74 6f 20 61 76 6f 69 64 20 63 6f 6e  100 to avoid con
f660: 66 6c 69 63 74 73 2e 20 20 56 46 53 20 69 6d 70  flicts.  VFS imp
f670: 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f  lementations sho
f680: 75 6c 64 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53  uld.** return [S
f690: 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d 20  QLITE_NOTFOUND] 
f6a0: 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  for file control
f6b0: 20 6f 70 63 6f 64 65 73 20 74 68 61 74 20 74 68   opcodes that th
f6c0: 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20 72 65 63  ey do not.** rec
f6d0: 6f 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a 20 54 68  ognize..**.** Th
f6e0: 65 20 78 53 65 63 74 6f 72 53 69 7a 65 28 29 20  e xSectorSize() 
f6f0: 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 74  method returns t
f700: 68 65 20 73 65 63 74 6f 72 20 73 69 7a 65 20 6f  he sector size o
f710: 66 20 74 68 65 0a 2a 2a 20 64 65 76 69 63 65 20  f the.** device 
f720: 74 68 61 74 20 75 6e 64 65 72 6c 69 65 73 20 74  that underlies t
f730: 68 65 20 66 69 6c 65 2e 20 20 54 68 65 20 73 65  he file.  The se
f740: 63 74 6f 72 20 73 69 7a 65 20 69 73 20 74 68 65  ctor size is the
f750: 0a 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77 72 69 74  .** minimum writ
f760: 65 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 65  e that can be pe
f770: 72 66 6f 72 6d 65 64 20 77 69 74 68 6f 75 74 20  rformed without 
f780: 64 69 73 74 75 72 62 69 6e 67 0a 2a 2a 20 6f 74  disturbing.** ot
f790: 68 65 72 20 62 79 74 65 73 20 69 6e 20 74 68 65  her bytes in the
f7a0: 20 66 69 6c 65 2e 20 20 54 68 65 20 78 44 65 76   file.  The xDev
f7b0: 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
f7c0: 63 73 28 29 0a 2a 2a 20 6d 65 74 68 6f 64 20 72  cs().** method r
f7d0: 65 74 75 72 6e 73 20 61 20 62 69 74 20 76 65 63  eturns a bit vec
f7e0: 74 6f 72 20 64 65 73 63 72 69 62 69 6e 67 20 62  tor describing b
f7f0: 65 68 61 76 69 6f 72 73 20 6f 66 20 74 68 65 0a  ehaviors of the.
f800: 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 65  ** underlying de
f810: 76 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e  vice:.**.** <ul>
f820: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
f830: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 0a 2a  _IOCAP_ATOMIC].*
f840: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f850: 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31 32 5d 0a  OCAP_ATOMIC512].
f860: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f870: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 4b 5d 0a  IOCAP_ATOMIC1K].
f880: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f890: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 5d 0a  IOCAP_ATOMIC2K].
f8a0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f8b0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 34 4b 5d 0a  IOCAP_ATOMIC4K].
f8c0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f8d0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 5d 0a  IOCAP_ATOMIC8K].
f8e0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f8f0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 31 36 4b 5d  IOCAP_ATOMIC16K]
f900: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
f910: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 33 32 4b  _IOCAP_ATOMIC32K
f920: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
f930: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36 34  E_IOCAP_ATOMIC64
f940: 4b 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49  K].** <li> [SQLI
f950: 54 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50  TE_IOCAP_SAFE_AP
f960: 50 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53  PEND].** <li> [S
f970: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55  QLITE_IOCAP_SEQU
f980: 45 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20  ENTIAL].** <li> 
f990: 5b 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e  [SQLITE_IOCAP_UN
f9a0: 44 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f  DELETABLE_WHEN_O
f9b0: 50 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  PEN].** <li> [SQ
f9c0: 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52  LITE_IOCAP_POWER
f9d0: 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 0a  SAFE_OVERWRITE].
f9e0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f9f0: 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d  IOCAP_IMMUTABLE]
fa00: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
fa10: 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f  _IOCAP_BATCH_ATO
fa20: 4d 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  MIC].** </ul>.**
fa30: 0a 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 49  .** The SQLITE_I
fa40: 4f 43 41 50 5f 41 54 4f 4d 49 43 20 70 72 6f 70  OCAP_ATOMIC prop
fa50: 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20  erty means that 
fa60: 61 6c 6c 20 77 72 69 74 65 73 20 6f 66 0a 2a 2a  all writes of.**
fa70: 20 61 6e 79 20 73 69 7a 65 20 61 72 65 20 61 74   any size are at
fa80: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
fa90: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 6e 6e  E_IOCAP_ATOMICnn
faa0: 6e 20 76 61 6c 75 65 73 0a 2a 2a 20 6d 65 61 6e  n values.** mean
fab0: 20 74 68 61 74 20 77 72 69 74 65 73 20 6f 66 20   that writes of 
fac0: 62 6c 6f 63 6b 73 20 74 68 61 74 20 61 72 65 20  blocks that are 
fad0: 6e 6e 6e 20 62 79 74 65 73 20 69 6e 20 73 69 7a  nnn bytes in siz
fae0: 65 20 61 6e 64 0a 2a 2a 20 61 72 65 20 61 6c 69  e and.** are ali
faf0: 67 6e 65 64 20 74 6f 20 61 6e 20 61 64 64 72 65  gned to an addre
fb00: 73 73 20 77 68 69 63 68 20 69 73 20 61 6e 20 69  ss which is an i
fb10: 6e 74 65 67 65 72 20 6d 75 6c 74 69 70 6c 65 20  nteger multiple 
fb20: 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65 20 61 74  of.** nnn are at
fb30: 6f 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54  omic.  The SQLIT
fb40: 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50  E_IOCAP_SAFE_APP
fb50: 45 4e 44 20 76 61 6c 75 65 20 6d 65 61 6e 73 0a  END value means.
fb60: 2a 2a 20 74 68 61 74 20 77 68 65 6e 20 64 61 74  ** that when dat
fb70: 61 20 69 73 20 61 70 70 65 6e 64 65 64 20 74 6f  a is appended to
fb80: 20 61 20 66 69 6c 65 2c 20 74 68 65 20 64 61 74   a file, the dat
fb90: 61 20 69 73 20 61 70 70 65 6e 64 65 64 0a 2a 2a  a is appended.**
fba0: 20 66 69 72 73 74 20 74 68 65 6e 20 74 68 65 20   first then the 
fbb0: 73 69 7a 65 20 6f 66 20 74 68 65 20 66 69 6c 65  size of the file
fbc0: 20 69 73 20 65 78 74 65 6e 64 65 64 2c 20 6e 65   is extended, ne
fbd0: 76 65 72 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a  ver the other.**
fbe0: 20 77 61 79 20 61 72 6f 75 6e 64 2e 20 20 54 68   way around.  Th
fbf0: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53  e SQLITE_IOCAP_S
fc00: 45 51 55 45 4e 54 49 41 4c 20 70 72 6f 70 65 72  EQUENTIAL proper
fc10: 74 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a  ty means that.**
fc20: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
fc30: 77 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b 20  written to disk 
fc40: 69 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65  in the same orde
fc50: 72 20 61 73 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f  r as calls.** to
fc60: 20 78 57 72 69 74 65 28 29 2e 0a 2a 2a 0a 2a 2a   xWrite()..**.**
fc70: 20 49 66 20 78 52 65 61 64 28 29 20 72 65 74 75   If xRead() retu
fc80: 72 6e 73 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  rns SQLITE_IOERR
fc90: 5f 53 48 4f 52 54 5f 52 45 41 44 20 69 74 20 6d  _SHORT_READ it m
fca0: 75 73 74 20 61 6c 73 6f 20 66 69 6c 6c 0a 2a 2a  ust also fill.**
fcb0: 20 69 6e 20 74 68 65 20 75 6e 72 65 61 64 20 70   in the unread p
fcc0: 6f 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 62  ortions of the b
fcd0: 75 66 66 65 72 20 77 69 74 68 20 7a 65 72 6f 73  uffer with zeros
fce0: 2e 20 20 41 20 56 46 53 20 74 68 61 74 0a 2a 2a  .  A VFS that.**
fcf0: 20 66 61 69 6c 73 20 74 6f 20 7a 65 72 6f 2d 66   fails to zero-f
fd00: 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64 73 20  ill short reads 
fd10: 6d 69 67 68 74 20 73 65 65 6d 20 74 6f 20 77 6f  might seem to wo
fd20: 72 6b 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a  rk.  However,.**
fd30: 20 66 61 69 6c 75 72 65 20 74 6f 20 7a 65 72 6f   failure to zero
fd40: 2d 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64  -fill short read
fd50: 73 20 77 69 6c 6c 20 65 76 65 6e 74 75 61 6c 6c  s will eventuall
fd60: 79 20 6c 65 61 64 20 74 6f 0a 2a 2a 20 64 61 74  y lead to.** dat
fd70: 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e  abase corruption
fd80: 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
fd90: 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  uct sqlite3_io_m
fda0: 65 74 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 69  ethods sqlite3_i
fdb0: 6f 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75 63  o_methods;.struc
fdc0: 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74  t sqlite3_io_met
fdd0: 68 6f 64 73 20 7b 0a 20 20 69 6e 74 20 69 56 65  hods {.  int iVe
fde0: 72 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a 78  rsion;.  int (*x
fdf0: 43 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f 66  Close)(sqlite3_f
fe00: 69 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  ile*);.  int (*x
fe10: 52 65 61 64 29 28 73 71 6c 69 74 65 33 5f 66 69  Read)(sqlite3_fi
fe20: 6c 65 2a 2c 20 76 6f 69 64 2a 2c 20 69 6e 74 20  le*, void*, int 
fe30: 69 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e  iAmt, sqlite3_in
fe40: 74 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e  t64 iOfst);.  in
fe50: 74 20 28 2a 78 57 72 69 74 65 29 28 73 71 6c 69  t (*xWrite)(sqli
fe60: 74 65 33 5f 66 69 6c 65 2a 2c 20 63 6f 6e 73 74  te3_file*, const
fe70: 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69 41 6d 74   void*, int iAmt
fe80: 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
fe90: 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74 20 28 2a  iOfst);.  int (*
fea0: 78 54 72 75 6e 63 61 74 65 29 28 73 71 6c 69 74  xTruncate)(sqlit
feb0: 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74 65  e3_file*, sqlite
fec0: 33 5f 69 6e 74 36 34 20 73 69 7a 65 29 3b 0a 20  3_int64 size);. 
fed0: 20 69 6e 74 20 28 2a 78 53 79 6e 63 29 28 73 71   int (*xSync)(sq
fee0: 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74  lite3_file*, int
fef0: 20 66 6c 61 67 73 29 3b 0a 20 20 69 6e 74 20 28   flags);.  int (
ff00: 2a 78 46 69 6c 65 53 69 7a 65 29 28 73 71 6c 69  *xFileSize)(sqli
ff10: 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74  te3_file*, sqlit
ff20: 65 33 5f 69 6e 74 36 34 20 2a 70 53 69 7a 65 29  e3_int64 *pSize)
ff30: 3b 0a 20 20 69 6e 74 20 28 2a 78 4c 6f 63 6b 29  ;.  int (*xLock)
ff40: 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20  (sqlite3_file*, 
ff50: 69 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55  int);.  int (*xU
ff60: 6e 6c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f 66  nlock)(sqlite3_f
ff70: 69 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e  ile*, int);.  in
ff80: 74 20 28 2a 78 43 68 65 63 6b 52 65 73 65 72 76  t (*xCheckReserv
ff90: 65 64 4c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f  edLock)(sqlite3_
ffa0: 66 69 6c 65 2a 2c 20 69 6e 74 20 2a 70 52 65 73  file*, int *pRes
ffb0: 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46  Out);.  int (*xF
ffc0: 69 6c 65 43 6f 6e 74 72 6f 6c 29 28 73 71 6c 69  ileControl)(sqli
ffd0: 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 6f  te3_file*, int o
ffe0: 70 2c 20 76 6f 69 64 20 2a 70 41 72 67 29 3b 0a  p, void *pArg);.
fff0: 20 20 69 6e 74 20 28 2a 78 53 65 63 74 6f 72 53    int (*xSectorS
10000 69 7a 65 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ize)(sqlite3_fil
10010 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 65  e*);.  int (*xDe
10020 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
10030 69 63 73 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ics)(sqlite3_fil
10040 65 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f 64  e*);.  /* Method
10050 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c 69  s above are vali
10060 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 31 20  d for version 1 
10070 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 4d  */.  int (*xShmM
10080 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ap)(sqlite3_file
10090 2a 2c 20 69 6e 74 20 69 50 67 2c 20 69 6e 74 20  *, int iPg, int 
100a0 70 67 73 7a 2c 20 69 6e 74 2c 20 76 6f 69 64 20  pgsz, int, void 
100b0 76 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a 20 20 69  volatile**);.  i
100c0 6e 74 20 28 2a 78 53 68 6d 4c 6f 63 6b 29 28 73  nt (*xShmLock)(s
100d0 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e  qlite3_file*, in
100e0 74 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 6e 2c  t offset, int n,
100f0 20 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 76   int flags);.  v
10100 6f 69 64 20 28 2a 78 53 68 6d 42 61 72 72 69 65  oid (*xShmBarrie
10110 72 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  r)(sqlite3_file*
10120 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 55  );.  int (*xShmU
10130 6e 6d 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69  nmap)(sqlite3_fi
10140 6c 65 2a 2c 20 69 6e 74 20 64 65 6c 65 74 65 46  le*, int deleteF
10150 6c 61 67 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f  lag);.  /* Metho
10160 64 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c  ds above are val
10170 69 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32  id for version 2
10180 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 46 65 74   */.  int (*xFet
10190 63 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ch)(sqlite3_file
101a0 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  *, sqlite3_int64
101b0 20 69 4f 66 73 74 2c 20 69 6e 74 20 69 41 6d 74   iOfst, int iAmt
101c0 2c 20 76 6f 69 64 20 2a 2a 70 70 29 3b 0a 20 20  , void **pp);.  
101d0 69 6e 74 20 28 2a 78 55 6e 66 65 74 63 68 29 28  int (*xUnfetch)(
101e0 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73  sqlite3_file*, s
101f0 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66  qlite3_int64 iOf
10200 73 74 2c 20 76 6f 69 64 20 2a 70 29 3b 0a 20 20  st, void *p);.  
10210 2f 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f 76 65  /* Methods above
10220 20 61 72 65 20 76 61 6c 69 64 20 66 6f 72 20 76   are valid for v
10230 65 72 73 69 6f 6e 20 33 20 2a 2f 0a 20 20 2f 2a  ersion 3 */.  /*
10240 20 41 64 64 69 74 69 6f 6e 61 6c 20 6d 65 74 68   Additional meth
10250 6f 64 73 20 6d 61 79 20 62 65 20 61 64 64 65 64  ods may be added
10260 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
10270 73 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a  ses */.};../*.**
10280 20 43 41 50 49 33 52 45 46 3a 20 53 74 61 6e 64   CAPI3REF: Stand
10290 61 72 64 20 46 69 6c 65 20 43 6f 6e 74 72 6f 6c  ard File Control
102a0 20 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b 45 59 57   Opcodes.** KEYW
102b0 4f 52 44 53 3a 20 7b 66 69 6c 65 20 63 6f 6e 74  ORDS: {file cont
102c0 72 6f 6c 20 6f 70 63 6f 64 65 73 7d 20 7b 66 69  rol opcodes} {fi
102d0 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64  le control opcod
102e0 65 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  e}.**.** These i
102f0 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
10300 20 61 72 65 20 6f 70 63 6f 64 65 73 20 66 6f 72   are opcodes for
10310 20 74 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f   the xFileContro
10320 6c 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f 66 20 74  l method.** of t
10330 68 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d  he [sqlite3_io_m
10340 65 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 61  ethods] object a
10350 6e 64 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69  nd for the [sqli
10360 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
10370 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ()].** interface
10380 2e 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  ..**.** <ul>.** 
10390 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
103a0 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 5d 0a 2a  TL_LOCKSTATE]].*
103b0 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
103c0 4e 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 20 6f  NTL_LOCKSTATE] o
103d0 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
103e0 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
103f0 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
10400 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
10410 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 77  trol method to w
10420 72 69 74 65 20 74 68 65 20 63 75 72 72 65 6e 74  rite the current
10430 20 73 74 61 74 65 20 6f 66 0a 2a 2a 20 74 68 65   state of.** the
10440 20 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66 20 5b 53   lock (one of [S
10450 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 5d  QLITE_LOCK_NONE]
10460 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53  , [SQLITE_LOCK_S
10470 48 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53 51 4c 49  HARED],.** [SQLI
10480 54 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44  TE_LOCK_RESERVED
10490 5d 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f  ], [SQLITE_LOCK_
104a0 50 45 4e 44 49 4e 47 5d 2c 20 6f 72 20 5b 53 51  PENDING], or [SQ
104b0 4c 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53  LITE_LOCK_EXCLUS
104c0 49 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f 20 61 6e  IVE]).** into an
104d0 20 69 6e 74 65 67 65 72 20 74 68 61 74 20 74 68   integer that th
104e0 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e 74 20  e pArg argument 
104f0 70 6f 69 6e 74 73 20 74 6f 2e 20 54 68 69 73 20  points to. This 
10500 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69 73  capability.** is
10510 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
10520 74 69 6e 67 20 61 6e 64 20 69 73 20 6f 6e 6c 79  ting and is only
10530 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20   available when 
10540 74 68 65 20 53 51 4c 49 54 45 5f 54 45 53 54 0a  the SQLITE_TEST.
10550 2a 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ** compile-time 
10560 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
10570 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
10580 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
10590 4e 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  NT]].** The [SQL
105a0 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48  ITE_FCNTL_SIZE_H
105b0 49 4e 54 5d 20 6f 70 63 6f 64 65 20 69 73 20 75  INT] opcode is u
105c0 73 65 64 20 62 79 20 53 51 4c 69 74 65 20 74 6f  sed by SQLite to
105d0 20 67 69 76 65 20 74 68 65 20 56 46 53 0a 2a 2a   give the VFS.**
105e0 20 6c 61 79 65 72 20 61 20 68 69 6e 74 20 6f 66   layer a hint of
105f0 20 68 6f 77 20 6c 61 72 67 65 20 74 68 65 20 64   how large the d
10600 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c  atabase file wil
10610 6c 20 67 72 6f 77 20 74 6f 20 62 65 20 64 75 72  l grow to be dur
10620 69 6e 67 20 74 68 65 0a 2a 2a 20 63 75 72 72 65  ing the.** curre
10630 6e 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20  nt transaction. 
10640 20 54 68 69 73 20 68 69 6e 74 20 69 73 20 6e 6f   This hint is no
10650 74 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20  t guaranteed to 
10660 62 65 20 61 63 63 75 72 61 74 65 20 62 75 74 20  be accurate but 
10670 69 74 0a 2a 2a 20 69 73 20 6f 66 74 65 6e 20 63  it.** is often c
10680 6c 6f 73 65 2e 20 20 54 68 65 20 75 6e 64 65 72  lose.  The under
10690 6c 79 69 6e 67 20 56 46 53 20 6d 69 67 68 74 20  lying VFS might 
106a0 63 68 6f 6f 73 65 20 74 6f 20 70 72 65 61 6c 6c  choose to preall
106b0 6f 63 61 74 65 20 64 61 74 61 62 61 73 65 0a 2a  ocate database.*
106c0 2a 20 66 69 6c 65 20 73 70 61 63 65 20 62 61 73  * file space bas
106d0 65 64 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20  ed on this hint 
106e0 69 6e 20 6f 72 64 65 72 20 74 6f 20 68 65 6c 70  in order to help
106f0 20 77 72 69 74 65 73 20 74 6f 20 74 68 65 20 64   writes to the d
10700 61 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20  atabase.** file 
10710 72 75 6e 20 66 61 73 74 65 72 2e 0a 2a 2a 0a 2a  run faster..**.*
10720 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
10730 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d  CNTL_SIZE_LIMIT]
10740 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
10750 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 4c 49 4d 49  _FCNTL_SIZE_LIMI
10760 54 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  T] opcode is use
10770 64 20 62 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 56  d by in-memory V
10780 46 53 20 74 68 61 74 0a 2a 2a 20 69 6d 70 6c 65  FS that.** imple
10790 6d 65 6e 74 73 20 5b 73 71 6c 69 74 65 33 5f 64  ments [sqlite3_d
107a0 65 73 65 72 69 61 6c 69 7a 65 28 29 5d 20 74 6f  eserialize()] to
107b0 20 73 65 74 20 61 6e 20 75 70 70 65 72 20 62 6f   set an upper bo
107c0 75 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 0a  und on the size.
107d0 2a 2a 20 6f 66 20 74 68 65 20 69 6e 2d 6d 65 6d  ** of the in-mem
107e0 6f 72 79 20 64 61 74 61 62 61 73 65 2e 20 20 54  ory database.  T
107f0 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  he argument is a
10800 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 5b 73   pointer to a [s
10810 71 6c 69 74 65 33 5f 69 6e 74 36 34 5d 2e 0a 2a  qlite3_int64]..*
10820 2a 20 49 66 20 74 68 65 20 69 6e 74 65 67 65 72  * If the integer
10830 20 70 6f 69 6e 74 65 64 20 74 6f 20 69 73 20 6e   pointed to is n
10840 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 69 74  egative, then it
10850 20 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 77 69   is filled in wi
10860 74 68 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e  th the.** curren
10870 74 20 6c 69 6d 69 74 2e 20 20 4f 74 68 65 72 77  t limit.  Otherw
10880 69 73 65 20 74 68 65 20 6c 69 6d 69 74 20 69 73  ise the limit is
10890 20 73 65 74 20 74 6f 20 74 68 65 20 6c 61 72 67   set to the larg
108a0 65 72 20 6f 66 20 74 68 65 20 76 61 6c 75 65 0a  er of the value.
108b0 2a 2a 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65  ** of the intege
108c0 72 20 70 6f 69 6e 74 65 64 20 74 6f 20 61 6e 64  r pointed to and
108d0 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74   the current dat
108e0 61 62 61 73 65 20 73 69 7a 65 2e 20 20 54 68 65  abase size.  The
108f0 20 69 6e 74 65 67 65 72 0a 2a 2a 20 70 6f 69 6e   integer.** poin
10900 74 65 64 20 74 6f 20 69 73 20 73 65 74 20 74 6f  ted to is set to
10910 20 74 68 65 20 6e 65 77 20 6c 69 6d 69 74 2e 0a   the new limit..
10920 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
10930 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53  TE_FCNTL_CHUNK_S
10940 49 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  IZE]].** The [SQ
10950 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b  LITE_FCNTL_CHUNK
10960 5f 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73  _SIZE] opcode is
10970 20 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74   used to request
10980 20 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a   that the VFS.**
10990 20 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75   extends and tru
109a0 6e 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62  ncates the datab
109b0 61 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e  ase file in chun
109c0 6b 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65  ks of a size spe
109d0 63 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65  cified.** by the
109e0 20 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74   user. The fourt
109f0 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73  h argument to [s
10a00 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
10a10 72 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a  rol()] should .*
10a20 2a 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e  * point to an in
10a30 74 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29  teger (type int)
10a40 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
10a50 6e 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74  new chunk-size t
10a60 6f 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65  o use.** for the
10a70 20 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62   nominated datab
10a80 61 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20  ase. Allocating 
10a90 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70  database file sp
10aa0 61 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20  ace in large.** 
10ab0 63 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20  chunks (say 1MB 
10ac0 61 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20  at a time), may 
10ad0 72 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74  reduce file-syst
10ae0 65 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e  em fragmentation
10af0 20 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20   and.** improve 
10b00 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73  performance on s
10b10 6f 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a  ome systems..**.
10b20 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
10b30 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54  FCNTL_FILE_POINT
10b40 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ER]].** The [SQL
10b50 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50  ITE_FCNTL_FILE_P
10b60 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69  OINTER] opcode i
10b70 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e  s used to obtain
10b80 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f   a pointer.** to
10b90 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69   the [sqlite3_fi
10ba0 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63  le] object assoc
10bb0 69 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72  iated with a par
10bc0 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65  ticular database
10bd0 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20  .** connection. 
10be0 20 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54   See also [SQLIT
10bf0 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f  E_FCNTL_JOURNAL_
10c00 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
10c10 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
10c20 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54  TL_JOURNAL_POINT
10c30 45 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ER]].** The [SQL
10c40 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41  ITE_FCNTL_JOURNA
10c50 4c 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64  L_POINTER] opcod
10c60 65 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74  e is used to obt
10c70 61 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a  ain a pointer.**
10c80 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
10c90 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73  _file] object as
10ca0 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68  sociated with th
10cb0 65 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28  e journal file (
10cc0 65 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72  either.** the [r
10cd0 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d  ollback journal]
10ce0 20 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61   or the [write-a
10cf0 68 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61  head log]) for a
10d00 20 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61   particular data
10d10 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69  base.** connecti
10d20 6f 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53  on.  See also [S
10d30 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45  QLITE_FCNTL_FILE
10d40 5f 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a  _POINTER]..**.**
10d50 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
10d60 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44  NTL_SYNC_OMITTED
10d70 5d 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20  ]].** No longer 
10d80 69 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  in use..**.** <l
10d90 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
10da0 5f 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b  _SYNC]].** The [
10db0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e  SQLITE_FCNTL_SYN
10dc0 43 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e  C] opcode is gen
10dd0 65 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c  erated internall
10de0 79 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a  y by SQLite and.
10df0 2a 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56  ** sent to the V
10e00 46 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62  FS immediately b
10e10 65 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20  efore the xSync 
10e20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65  method is invoke
10e30 64 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61  d on a.** databa
10e40 73 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  se file descript
10e50 6f 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78  or. Or, if the x
10e60 53 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e  Sync method is n
10e70 6f 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62  ot invoked .** b
10e80 65 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20  ecause the user 
10e90 68 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53  has configured S
10ea0 51 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b  QLite with .** [
10eb0 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
10ec0 75 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63  us | PRAGMA sync
10ed0 68 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20  hronous=OFF] it 
10ee0 69 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c  is invoked in pl
10ef0 61 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78  ace .** of the x
10f00 53 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20  Sync method. In 
10f10 6d 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20  most cases, the 
10f20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74  pointer argument
10f30 20 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20   passed with.** 
10f40 74 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  this file-contro
10f50 6c 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76  l is NULL. Howev
10f60 65 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62  er, if the datab
10f70 61 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e  ase file is bein
10f80 67 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70  g synced.** as p
10f90 61 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64  art of a multi-d
10fa0 61 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20  atabase commit, 
10fb0 74 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69  the argument poi
10fc0 6e 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72  nts to a nul-ter
10fd0 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e  minated.** strin
10fe0 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  g containing the
10ff0 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61   transactions ma
11000 73 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c  ster-journal fil
11010 65 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68  e name. VFSes th
11020 61 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65  at .** do not ne
11030 65 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73  ed this signal s
11040 68 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69  hould silently i
11050 67 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64  gnore this opcod
11060 65 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  e. Applications 
11070 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63  .** should not c
11080 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  all [sqlite3_fil
11090 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74  e_control()] wit
110a0 68 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73  h this opcode as
110b0 20 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a   doing so may .*
110c0 2a 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70  * disrupt the op
110d0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73  eration of the s
110e0 70 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73  pecialized VFSes
110f0 20 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65   that do require
11100 20 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69   it.  .**.** <li
11110 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
11120 43 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d  COMMIT_PHASETWO]
11130 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
11140 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48  _FCNTL_COMMIT_PH
11150 41 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69  ASETWO] opcode i
11160 73 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65  s generated inte
11170 72 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65  rnally by SQLite
11180 0a 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20  .** and sent to 
11190 74 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20  the VFS after a 
111a0 74 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20  transaction has 
111b0 62 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69  been committed i
111c0 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75  mmediately.** bu
111d0 74 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74  t before the dat
111e0 61 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65  abase is unlocke
111f0 64 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  d. VFSes that do
11200 20 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73   not need this s
11210 69 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20  ignal.** should 
11220 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20  silently ignore 
11230 74 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70  this opcode. App
11240 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64  lications should
11250 20 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71   not call.** [sq
11260 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
11270 6f 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20  ol()] with this 
11280 6f 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20  opcode as doing 
11290 73 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74  so may disrupt t
112a0 68 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e  he .** operation
112b0 20 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69   of the speciali
112c0 7a 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64  zed VFSes that d
112d0 6f 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a  o require it.  .
112e0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
112f0 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41  TE_FCNTL_WIN32_A
11300 56 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68  V_RETRY]].** ^Th
11310 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
11320 57 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20  WIN32_AV_RETRY] 
11330 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74  opcode is used t
11340 6f 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f  o configure auto
11350 6d 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63  matic.** retry c
11360 6f 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76  ounts and interv
11370 61 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20  als for certain 
11380 64 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69  disk I/O operati
11390 6f 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77  ons for the.** w
113a0 69 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20  indows [VFS] in 
113b0 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65  order to provide
113c0 20 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74   robustness in t
113d0 68 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a  he presence of.*
113e0 2a 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f  * anti-virus pro
113f0 67 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75  grams.  By defau
11400 6c 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20  lt, the windows 
11410 56 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66  VFS will retry f
11420 69 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c  ile read,.** fil
11430 65 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c  e write, and fil
11440 65 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69  e delete operati
11450 6f 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d  ons up to 10 tim
11460 65 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79  es, with a delay
11470 0a 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73  .** of 25 millis
11480 65 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68  econds before th
11490 65 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e  e first retry an
114a0 64 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79  d with the delay
114b0 20 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62   increasing.** b
114c0 79 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20  y an additional 
114d0 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20  25 milliseconds 
114e0 77 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71  with each subseq
114f0 75 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69  uent retry.  Thi
11500 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f  s.** opcode allo
11510 77 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c  ws these two val
11520 75 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20  ues (10 retries 
11530 61 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f  and 25 milliseco
11540 6e 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a  nds of delay).**
11550 20 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e   to be adjusted.
11560 20 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65    The values are
11570 20 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c   changed for all
11580 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
11590 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20  tions.** within 
115a0 74 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73  the same process
115b0 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  .  The argument 
115c0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
115d0 61 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a  an array of two.
115e0 2a 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72  ** integers wher
115f0 65 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65  e the first inte
11600 67 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72  ger is the new r
11610 65 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74  etry count and t
11620 68 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74  he second.** int
11630 65 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61  eger is the dela
11640 79 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e  y.  If either in
11650 74 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76  teger is negativ
11660 65 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74  e, then the sett
11670 69 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68  ing.** is not ch
11680 61 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61  anged but instea
11690 64 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75  d the prior valu
116a0 65 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e  e of that settin
116b0 67 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20  g is written.** 
116c0 69 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65  into the array e
116d0 6e 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74  ntry, allowing t
116e0 68 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79  he current retry
116f0 20 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a   settings to be.
11700 2a 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e  ** interrogated.
11710 20 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61    The zDbName pa
11720 72 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72  rameter is ignor
11730 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ed..**.** <li>[[
11740 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52  SQLITE_FCNTL_PER
11750 53 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54  SIST_WAL]].** ^T
11760 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
11770 5f 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70  _PERSIST_WAL] op
11780 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
11790 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
117a0 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b  .** persistent [
117b0 57 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61  WAL | Write Ahea
117c0 64 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20  d Log] setting. 
117d0 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65   By default, the
117e0 20 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72   auxiliary.** wr
117f0 69 74 65 20 61 68 65 61 64 20 6c 6f 67 20 28 5b  ite ahead log ([
11800 57 41 4c 20 66 69 6c 65 5d 29 20 61 6e 64 20 73  WAL file]) and s
11810 68 61 72 65 64 20 6d 65 6d 6f 72 79 0a 2a 2a 20  hared memory.** 
11820 66 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74  files used for t
11830 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72  ransaction contr
11840 6f 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61  ol.** are automa
11850 74 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20  tically deleted 
11860 77 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20  when the latest 
11870 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68  connection to th
11880 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c  e database.** cl
11890 6f 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70  oses.  Setting p
118a0 65 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f  ersistent WAL mo
118b0 64 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20  de causes those 
118c0 66 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74  files to persist
118d0 20 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e   after.** close.
118e0 20 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65    Persisting the
118f0 20 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c   files is useful
11900 20 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63   when other proc
11910 65 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f  esses that do no
11920 74 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20  t.** have write 
11930 70 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68  permission on th
11940 65 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74  e directory cont
11950 61 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62  aining the datab
11960 61 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a  ase file want.**
11970 20 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74   to read the dat
11980 61 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74  abase file, as t
11990 68 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65  he WAL and share
119a0 64 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d  d memory files m
119b0 75 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20  ust exist.** in 
119c0 6f 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61  order for the da
119d0 74 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61  tabase to be rea
119e0 64 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72  dable.  The four
119f0 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  th parameter to.
11a00 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ** [sqlite3_file
11a10 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20  _control()] for 
11a20 74 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75  this opcode shou
11a30 6c 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20  ld be a pointer 
11a40 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a  to an integer..*
11a50 2a 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69  * That integer i
11a60 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70  s 0 to disable p
11a70 65 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f  ersistent WAL mo
11a80 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c  de or 1 to enabl
11a90 65 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20  e persistent.** 
11aa0 57 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68  WAL mode.  If th
11ab0 65 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c  e integer is -1,
11ac0 20 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72   then it is over
11ad0 77 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65  written with the
11ae0 20 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20   current.** WAL 
11af0 70 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74  persistence sett
11b00 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
11b10 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f  [SQLITE_FCNTL_PO
11b20 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54  WERSAFE_OVERWRIT
11b30 45 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  E]].** ^The [SQL
11b40 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53  ITE_FCNTL_POWERS
11b50 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f  AFE_OVERWRITE] o
11b60 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
11b70 20 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68   set or query th
11b80 65 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20  e.** persistent 
11b90 22 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77  "powersafe-overw
11ba0 72 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20  rite" or "PSOW" 
11bb0 73 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53  setting.  The PS
11bc0 4f 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65  OW setting.** de
11bd0 74 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51  termines the [SQ
11be0 4c 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52  LITE_IOCAP_POWER
11bf0 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20  SAFE_OVERWRITE] 
11c00 62 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44  bit of the.** xD
11c10 65 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73  eviceCharacteris
11c20 74 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68  tics methods. Th
11c30 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
11c40 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65  er to.** [sqlite
11c50 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
11c60 5d 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64  ] for this opcod
11c70 65 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f  e should be a po
11c80 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
11c90 67 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74  ger..** That int
11ca0 65 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73  eger is 0 to dis
11cb0 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65  able zero-damage
11cc0 20 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e   mode or 1 to en
11cd0 61 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65  able zero-damage
11ce0 0a 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68  .** mode.  If th
11cf0 65 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c  e integer is -1,
11d00 20 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72   then it is over
11d10 77 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65  written with the
11d20 20 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f   current.** zero
11d30 2d 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74  -damage mode set
11d40 74 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  ting..**.** <li>
11d50 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f  [[SQLITE_FCNTL_O
11d60 56 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54  VERWRITE]].** ^T
11d70 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
11d80 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f  _OVERWRITE] opco
11d90 64 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79  de is invoked by
11da0 20 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70   SQLite after op
11db0 65 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65  ening.** a write
11dc0 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20   transaction to 
11dd0 69 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75  indicate that, u
11de0 6e 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c  nless it is roll
11df0 65 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65  ed back for some
11e00 0a 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20  .** reason, the 
11e10 65 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20  entire database 
11e20 66 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65  file will be ove
11e30 72 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20  rwritten by the 
11e40 63 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e  current .** tran
11e50 73 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73  saction. This is
11e60 20 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20   used by VACUUM 
11e70 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a  operations..**.*
11e80 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
11e90 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a  CNTL_VFSNAME]].*
11ea0 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
11eb0 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70  CNTL_VFSNAME] op
11ec0 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64  code can be used
11ed0 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e   to obtain the n
11ee0 61 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b  ames of.** all [
11ef0 56 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46  VFSes] in the VF
11f00 53 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61  S stack.  The na
11f10 6d 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56  mes are of all V
11f20 46 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65  FS shims and the
11f30 0a 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d  .** final bottom
11f40 2d 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77  -level VFS are w
11f50 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f  ritten into memo
11f60 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d  ry obtained from
11f70 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61   .** [sqlite3_ma
11f80 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20  lloc()] and the 
11f90 72 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64  result is stored
11fa0 20 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61   in the char* va
11fb0 72 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74  riable.** that t
11fc0 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  he fourth parame
11fd0 74 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f  ter of [sqlite3_
11fe0 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20  file_control()] 
11ff0 70 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68  points to..** Th
12000 65 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70  e caller is resp
12010 6f 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65  onsible for free
12020 69 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77  ing the memory w
12030 68 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69  hen done.  As wi
12040 74 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63  th.** all file-c
12050 6f 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20  ontrol actions, 
12060 74 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72  there is no guar
12070 61 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20  antee that this 
12080 77 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a  will actually.**
12090 20 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43   do anything.  C
120a0 61 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e  allers should in
120b0 69 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61  itialize the cha
120c0 72 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61  r* variable to a
120d0 20 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72   NULL.** pointer
120e0 20 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69   in case this fi
120f0 6c 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f  le-control is no
12100 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20  t implemented.  
12110 54 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  This file-contro
12120 6c 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64  l.** is intended
12130 20 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20   for diagnostic 
12140 75 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20  use only..**.** 
12150 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12160 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d  TL_VFS_POINTER]]
12170 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45  .** ^The [SQLITE
12180 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54  _FCNTL_VFS_POINT
12190 45 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73  ER] opcode finds
121a0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
121b0 65 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b  e top-level.** [
121c0 56 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79  VFSes] currently
121d0 20 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20   in use.  ^(The 
121e0 61 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a  argument X in.**
121f0 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f   sqlite3_file_co
12200 6e 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f  ntrol(db,SQLITE_
12210 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
12220 52 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20  R,X) must be.** 
12230 6f 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65  of type "[sqlite
12240 33 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69  3_vfs] **".  Thi
12250 73 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73  s opcodes will s
12260 65 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f  et *X.** to a po
12270 69 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70  inter to the top
12280 2d 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a  -level VFS.)^.**
12290 20 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65   ^When there are
122a0 20 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68   multiple VFS sh
122b0 69 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b  ims in the stack
122c0 2c 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69  , this opcode fi
122d0 6e 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72  nds the.** upper
122e0 2d 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e  -most shim only.
122f0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
12300 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41  ITE_FCNTL_PRAGMA
12310 5d 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20  ]].** ^Whenever 
12320 61 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65  a [PRAGMA] state
12330 6d 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20  ment is parsed, 
12340 61 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  an [SQLITE_FCNTL
12350 5f 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c  _PRAGMA] .** fil
12360 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e  e control is sen
12370 74 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73  t to the open [s
12380 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a  qlite3_file] obj
12390 65 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e  ect correspondin
123a0 67 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61  g.** to the data
123b0 62 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69  base file to whi
123c0 63 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74  ch the pragma st
123d0 61 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20  atement refers. 
123e0 5e 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a  ^The argument.**
123f0 20 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f   to the [SQLITE_
12400 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69  FCNTL_PRAGMA] fi
12410 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e  le control is an
12420 20 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69   array of.** poi
12430 6e 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73  nters to strings
12440 20 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69   (char**) in whi
12450 63 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c  ch the second el
12460 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72  ement of the arr
12470 61 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d  ay.** is the nam
12480 65 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20  e of the pragma 
12490 61 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c  and the third el
124a0 65 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67  ement is the arg
124b0 75 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20  ument to the.** 
124c0 70 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69  pragma or NULL i
124d0 66 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73  f the pragma has
124e0 20 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e   no argument.  ^
124f0 54 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20  The handler for 
12500 61 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  an.** [SQLITE_FC
12510 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65  NTL_PRAGMA] file
12520 20 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74   control can opt
12530 69 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65  ionally make the
12540 20 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a   first element.*
12550 2a 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20  * of the char** 
12560 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74  argument point t
12570 6f 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69  o a string obtai
12580 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  ned from [sqlite
12590 33 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20  3_mprintf()].** 
125a0 6f 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e  or the equivalen
125b0 74 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e  t and that strin
125c0 67 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68  g will become th
125d0 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20  e result of the 
125e0 70 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65  pragma or.** the
125f0 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69   error message i
12600 66 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69  f the pragma fai
12610 6c 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b  ls. ^If the.** [
12620 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41  SQLITE_FCNTL_PRA
12630 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  GMA] file contro
12640 6c 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54  l returns [SQLIT
12650 45 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65  E_NOTFOUND], the
12660 6e 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52  n normal .** [PR
12670 41 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67  AGMA] processing
12680 20 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66   continues.  ^If
12690 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   the [SQLITE_FCN
126a0 54 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69  TL_PRAGMA].** fi
126b0 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72  le control retur
126c0 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20  ns [SQLITE_OK], 
126d0 74 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20  then the parser 
126e0 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
126f0 0a 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64  .** VFS has hand
12700 6c 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69  led the PRAGMA i
12710 74 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61  tself and the pa
12720 72 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61  rser generates a
12730 20 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72   no-op.** prepar
12740 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20  ed statement if 
12750 72 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73  result string is
12760 20 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72   NULL, or that r
12770 65 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a  eturns a copy.**
12780 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73   of the result s
12790 74 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72  tring if the str
127a0 69 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e  ing is non-NULL.
127b0 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c  .** ^If the [SQL
127c0 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41  ITE_FCNTL_PRAGMA
127d0 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72  ] file control r
127e0 65 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65  eturns.** any re
127f0 73 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20  sult code other 
12800 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  than [SQLITE_OK]
12810 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46   or [SQLITE_NOTF
12820 4f 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e  OUND], that mean
12830 73 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46  s.** that the VF
12840 53 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e  S encountered an
12850 20 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e   error while han
12860 64 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d  dling the [PRAGM
12870 41 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f  A] and the.** co
12880 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65  mpilation of the
12890 20 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69   PRAGMA fails wi
128a0 74 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54  th an error.  ^T
128b0 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
128c0 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65  _PRAGMA].** file
128d0 20 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20   control occurs 
128e0 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67  at the beginning
128f0 20 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65   of pragma state
12900 6d 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e  ment analysis an
12910 64 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62  d so.** it is ab
12920 6c 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62  le to override b
12930 75 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d  uilt-in [PRAGMA]
12940 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a   statements..**.
12950 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
12960 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45  FCNTL_BUSYHANDLE
12970 52 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c  R]].** ^The [SQL
12980 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41  ITE_FCNTL_BUSYHA
12990 4e 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63  NDLER].** file-c
129a0 6f 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e  ontrol may be in
129b0 76 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20  voked by SQLite 
129c0 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  on the database 
129d0 66 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73  file handle.** s
129e0 68 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20  hortly after it 
129f0 69 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64  is opened in ord
12a00 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20  er to provide a 
12a10 63 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20  custom VFS with 
12a20 61 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65  access.** to the
12a30 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73   connections bus
12a40 79 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61  y-handler callba
12a50 63 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74  ck. The argument
12a60 20 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69   is of type (voi
12a70 64 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72  d **).** - an ar
12a80 72 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64  ray of two (void
12a90 20 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20   *) values. The 
12aa0 66 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61  first (void *) a
12ab0 63 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a  ctually points.*
12ac0 2a 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20  * to a function 
12ad0 6f 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29  of type (int (*)
12ae0 28 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72  (void *)). In or
12af0 64 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68  der to invoke th
12b00 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a  e connections.**
12b10 20 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74   busy-handler, t
12b20 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f  his function sho
12b30 75 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77  uld be invoked w
12b40 69 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28  ith the second (
12b50 76 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68  void *) in.** th
12b60 65 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f  e array as the o
12b70 6e 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66  nly argument. If
12b80 20 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d   it returns non-
12b90 7a 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f  zero, then the o
12ba0 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75  peration.** shou
12bb0 6c 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49  ld be retried. I
12bc0 66 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72  f it returns zer
12bd0 6f 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46  o, the custom VF
12be0 53 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e  S should abandon
12bf0 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20   the.** current 
12c00 6f 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  operation..**.**
12c10 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12c20 4e 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45  NTL_TEMPFILENAME
12c30 5d 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69  ]].** ^Applicati
12c40 6f 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68  on can invoke th
12c50 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
12c60 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69  TEMPFILENAME] fi
12c70 6c 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f  le-control.** to
12c80 20 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e   have SQLite gen
12c90 65 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f  erate a.** tempo
12ca0 72 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73  rary filename us
12cb0 69 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67  ing the same alg
12cc0 6f 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66  orithm that is f
12cd0 6f 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72  ollowed to gener
12ce0 61 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79  ate.** temporary
12cf0 20 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54   filenames for T
12d00 45 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f  EMP tables and o
12d10 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73  ther internal us
12d20 65 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75  es.  The.** argu
12d30 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61  ment should be a
12d40 20 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69   char** which wi
12d50 6c 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74  ll be filled wit
12d60 68 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a  h the filename.*
12d70 2a 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d  * written into m
12d80 65 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66  emory obtained f
12d90 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
12da0 6c 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c  loc()].  The cal
12db0 6c 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e  ler should.** in
12dc0 76 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72  voke [sqlite3_fr
12dd0 65 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73  ee()] on the res
12de0 75 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d  ult to avoid a m
12df0 65 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a  emory leak..**.*
12e00 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12e10 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d  CNTL_MMAP_SIZE]]
12e20 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
12e30 46 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d  FCNTL_MMAP_SIZE]
12e40 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73   file control is
12e50 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f   used to query o
12e60 72 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78  r set the.** max
12e70 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62  imum number of b
12e80 79 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62  ytes that will b
12e90 65 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72  e used for memor
12ea0 79 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a  y-mapped I/O..**
12eb0 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
12ec0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
12ed0 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71  value of type sq
12ee0 6c 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74  lite3_int64 that
12ef0 0a 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f  .** is an adviso
12f00 72 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  ry maximum numbe
12f10 72 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68  r of bytes in th
12f20 65 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79  e file to memory
12f30 20 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f   map.  The.** po
12f40 69 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69  inter is overwri
12f50 74 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c  tten with the ol
12f60 64 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69  d value.  The li
12f70 6d 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67  mit is not chang
12f80 65 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c  ed if.** the val
12f90 75 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f  ue originally po
12fa0 69 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61  inted to is nega
12fb0 74 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65  tive, and so the
12fc0 20 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a   current limit .
12fd0 2a 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65  ** can be querie
12fe0 64 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20  d by passing in 
12ff0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e  a pointer to a n
13000 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20  egative number. 
13010 20 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f   This.** file-co
13020 6e 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e  ntrol is used in
13030 74 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c  ternally to impl
13040 65 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d  ement [PRAGMA mm
13050 61 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20  ap_size]..**.** 
13060 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
13070 54 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68  TL_TRACE]].** Th
13080 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
13090 54 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74  TRACE] file cont
130a0 72 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76  rol provides adv
130b0 69 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f  isory informatio
130c0 6e 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20  n.** to the VFS 
130d0 61 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68  about what the h
130e0 69 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20  igher layers of 
130f0 74 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b  the SQLite stack
13100 20 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54   are doing..** T
13110 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13120 20 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65   is used by some
13130 20 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72   VFS activity tr
13140 61 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a  acing [shims]..*
13150 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69  * The argument i
13160 73 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61  s a zero-termina
13170 74 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67  ted string.  Hig
13180 68 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68  her layers in th
13190 65 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63  e.** SQLite stac
131a0 6b 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69  k may generate i
131b0 6e 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73  nstances of this
131c0 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66   file control if
131d0 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
131e0 55 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d  USE_FCNTL_TRACE]
131f0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
13200 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e  tion is enabled.
13210 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
13220 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
13230 56 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  VED]].** The [SQ
13240 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d  LITE_FCNTL_HAS_M
13250 4f 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72  OVED] file contr
13260 6f 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74  ol interprets it
13270 73 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a  s argument as a.
13280 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e  ** pointer to an
13290 20 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20   integer and it 
132a0 77 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e  writes a boolean
132b0 20 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67   into that integ
132c0 65 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20  er depending.** 
132d0 6f 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  on whether or no
132e0 74 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62  t the file has b
132f0 65 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76  een renamed, mov
13300 65 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73  ed, or deleted s
13310 69 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66  ince it.** was f
13320 69 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a  irst opened..**.
13330 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13340 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f  FCNTL_WIN32_GET_
13350 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20  HANDLE]].** The 
13360 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49  [SQLITE_FCNTL_WI
13370 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20  N32_GET_HANDLE] 
13380 6f 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73  opcode can be us
13390 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65  ed to obtain the
133a0 0a 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e  .** underlying n
133b0 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c  ative file handl
133c0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
133d0 68 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e  h a file handle.
133e0 20 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63    This file.** c
133f0 6f 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74  ontrol interpret
13400 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61  s its argument a
13410 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
13420 20 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e   native file han
13430 64 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65  dle and.** write
13440 73 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  s the resulting 
13450 76 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a  value there..**.
13460 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13470 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f  FCNTL_WIN32_SET_
13480 48 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20  HANDLE]].** The 
13490 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49  [SQLITE_FCNTL_WI
134a0 4e 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20  N32_SET_HANDLE] 
134b0 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66  opcode is used f
134c0 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54  or debugging.  T
134d0 68 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61  his.** opcode ca
134e0 75 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f  uses the xFileCo
134f0 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20  ntrol method to 
13500 73 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61  swap the file ha
13510 6e 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e  ndle with the on
13520 65 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20  e.** pointed to 
13530 62 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75  by the pArg argu
13540 6d 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61  ment.  This capa
13550 62 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64  bility is used d
13560 75 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a  uring testing.**
13570 20 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20   and only needs 
13580 74 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20  to be supported 
13590 77 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54  when SQLITE_TEST
135a0 20 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a   is defined..**.
135b0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
135c0 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
135d0 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45  ].** The [SQLITE
135e0 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b  _FCNTL_WAL_BLOCK
135f0 5d 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f  ] is a signal to
13600 20 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74   the VFS layer t
13610 68 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20  hat it might.** 
13620 62 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20  be advantageous 
13630 74 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20  to block on the 
13640 6e 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66  next WAL lock if
13650 20 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74   the lock is not
13660 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20   immediately.** 
13670 61 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20  available.  The 
13680 57 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73  WAL subsystem is
13690 73 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c  sues this signal
136a0 20 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20   during rare.** 
136b0 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e  circumstances in
136c0 20 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20   order to fix a 
136d0 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69  problem with pri
136e0 6f 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e  ority inversion.
136f0 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73  .** Applications
13700 20 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c   should <em>not<
13710 2f 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69  /em> use this fi
13720 6c 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a  le-control..**.*
13730 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13740 43 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a  CNTL_ZIPVFS]].**
13750 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
13760 54 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64  TL_ZIPVFS] opcod
13770 65 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64  e is implemented
13780 20 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e   by zipvfs only.
13790 20 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46   All other.** VF
137a0 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  S should return 
137b0 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20  SQLITE_NOTFOUND 
137c0 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e  for this opcode.
137d0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
137e0 49 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a  ITE_FCNTL_RBU]].
137f0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
13800 43 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65  CNTL_RBU] opcode
13810 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
13820 62 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56  by the special V
13830 46 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68  FS used by.** th
13840 65 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20  e RBU extension 
13850 6f 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72  only.  All other
13860 20 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75   VFS should retu
13870 72 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55  rn SQLITE_NOTFOU
13880 4e 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f  ND for.** this o
13890 70 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c  pcode.  .**.** <
138a0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
138b0 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57  L_BEGIN_ATOMIC_W
138c0 52 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65  RITE]].** If the
138d0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42   [SQLITE_FCNTL_B
138e0 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54  EGIN_ATOMIC_WRIT
138f0 45 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e  E] opcode return
13900 73 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65  s SQLITE_OK, the
13910 6e 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65  n.** the file de
13920 73 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63  scriptor is plac
13930 65 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69  ed in "batch wri
13940 74 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a  te mode", which.
13950 2a 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62  ** means all sub
13960 73 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70  sequent write op
13970 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65  erations will be
13980 20 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f   deferred and do
13990 6e 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79  ne.** atomically
139a0 20 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51   at the next [SQ
139b0 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
139c0 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e  T_ATOMIC_WRITE].
139d0 20 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61    Systems.** tha
139e0 74 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74  t do not support
139f0 20 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72   batch atomic wr
13a00 69 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e  ites will return
13a10 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44   SQLITE_NOTFOUND
13a20 2e 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20  ..** ^Following 
13a30 61 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c  a successful SQL
13a40 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
13a50 41 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64  ATOMIC_WRITE and
13a60 20 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65   prior to.** the
13a70 20 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45   closing [SQLITE
13a80 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54  _FCNTL_COMMIT_AT
13a90 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a  OMIC_WRITE] or.*
13aa0 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  * [SQLITE_FCNTL_
13ab0 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f  ROLLBACK_ATOMIC_
13ac0 57 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77  WRITE], SQLite w
13ad0 69 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56  ill make.** no V
13ae0 46 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c  FS interface cal
13af0 6c 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b  ls on the same [
13b00 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69  sqlite3_file] fi
13b10 6c 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a  le descriptor.**
13b20 20 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c   except for call
13b30 73 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20  s to the xWrite 
13b40 6d 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78  method and the x
13b50 46 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68  FileControl meth
13b60 6f 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49  od.** with [SQLI
13b70 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
13b80 4e 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  NT]..**.** <li>[
13b90 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f  [SQLITE_FCNTL_CO
13ba0 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54  MMIT_ATOMIC_WRIT
13bb0 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
13bc0 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f  TE_FCNTL_COMMIT_
13bd0 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70  ATOMIC_WRITE] op
13be0 63 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20  code causes all 
13bf0 77 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69  write.** operati
13c00 6f 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72  ons since the pr
13c10 65 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75  evious successfu
13c20 6c 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53  l call to .** [S
13c30 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49  QLITE_FCNTL_BEGI
13c40 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20  N_ATOMIC_WRITE] 
13c50 74 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20  to be performed 
13c60 61 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54  atomically..** T
13c70 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13c80 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
13c90 5f 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79  _OK] if and only
13ca0 20 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77   if the writes w
13cb0 65 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f  ere.** all perfo
13cc0 72 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c  rmed successfull
13cd0 79 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20  y and have been 
13ce0 63 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72  committed to per
13cf0 73 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e  sistent storage.
13d00 0a 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20  .** ^Regardless 
13d10 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
13d20 74 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66  t it is successf
13d30 75 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f  ul, this file co
13d40 6e 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74  ntrol takes.** t
13d50 68 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74  he file descript
13d60 6f 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20  or out of batch 
13d70 77 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68  write mode so th
13d80 61 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e  at all subsequen
13d90 74 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61  t.** write opera
13da0 74 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65  tions are indepe
13db0 6e 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74  ndent..** ^SQLit
13dc0 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76  e will never inv
13dd0 6f 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  oke SQLITE_FCNTL
13de0 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57  _COMMIT_ATOMIC_W
13df0 52 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20  RITE without.** 
13e00 61 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66  a prior successf
13e10 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49  ul call to [SQLI
13e20 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
13e30 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a  TOMIC_WRITE]..**
13e40 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45  .** <li>[[SQLITE
13e50 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f  _FCNTL_ROLLBACK_
13e60 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a  ATOMIC_WRITE]].*
13e70 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13e80 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f  NTL_ROLLBACK_ATO
13e90 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64  MIC_WRITE] opcod
13ea0 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69  e causes all wri
13eb0 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73  te.** operations
13ec0 20 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69   since the previ
13ed0 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63  ous successful c
13ee0 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49  all to .** [SQLI
13ef0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
13f00 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20  TOMIC_WRITE] to 
13f10 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a  be rolled back..
13f20 2a 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f  ** ^This file co
13f30 6e 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20  ntrol takes the 
13f40 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20  file descriptor 
13f50 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69  out of batch wri
13f60 74 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68  te mode.** so th
13f70 61 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e  at all subsequen
13f80 74 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  t write operatio
13f90 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65  ns are independe
13fa0 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77  nt..** ^SQLite w
13fb0 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65  ill never invoke
13fc0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f   SQLITE_FCNTL_RO
13fd0 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52  LLBACK_ATOMIC_WR
13fe0 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
13ff0 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
14000 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
14010 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
14020 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
14030 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
14040 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f  FCNTL_LOCK_TIMEO
14050 55 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  UT]].** The [SQL
14060 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54  ITE_FCNTL_LOCK_T
14070 49 4d 45 4f 55 54 5d 20 6f 70 63 6f 64 65 20 63  IMEOUT] opcode c
14080 61 75 73 65 73 20 61 74 74 65 6d 70 74 73 20 74  auses attempts t
14090 6f 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 20 66 69  o obtain.** a fi
140a0 6c 65 20 6c 6f 63 6b 20 75 73 69 6e 67 20 74 68  le lock using th
140b0 65 20 78 4c 6f 63 6b 20 6f 72 20 78 53 68 6d 4c  e xLock or xShmL
140c0 6f 63 6b 20 6d 65 74 68 6f 64 73 20 6f 66 20 74  ock methods of t
140d0 68 65 20 56 46 53 20 74 6f 20 77 61 69 74 0a 2a  he VFS to wait.*
140e0 2a 20 66 6f 72 20 75 70 20 74 6f 20 4d 20 6d 69  * for up to M mi
140f0 6c 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72  lliseconds befor
14100 65 20 66 61 69 6c 69 6e 67 2c 20 77 68 65 72 65  e failing, where
14110 20 4d 20 69 73 20 74 68 65 20 73 69 6e 67 6c 65   M is the single
14120 20 0a 2a 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e   .** unsigned in
14130 74 65 67 65 72 20 70 61 72 61 6d 65 74 65 72 2e  teger parameter.
14140 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
14150 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56  ITE_FCNTL_DATA_V
14160 45 52 53 49 4f 4e 5d 5d 0a 2a 2a 20 54 68 65 20  ERSION]].** The 
14170 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41  [SQLITE_FCNTL_DA
14180 54 41 5f 56 45 52 53 49 4f 4e 5d 20 6f 70 63 6f  TA_VERSION] opco
14190 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 64 65  de is used to de
141a0 74 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a  tect changes to.
141b0 2a 2a 20 61 20 64 61 74 61 62 61 73 65 20 66 69  ** a database fi
141c0 6c 65 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e  le.  The argumen
141d0 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  t is a pointer t
141e0 6f 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67  o a 32-bit unsig
141f0 6e 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20  ned integer..** 
14200 54 68 65 20 22 64 61 74 61 20 76 65 72 73 69 6f  The "data versio
14210 6e 22 20 66 6f 72 20 74 68 65 20 70 61 67 65 72  n" for the pager
14220 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f   is written into
14230 20 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 20 54   the pointer.  T
14240 68 65 0a 2a 2a 20 22 64 61 74 61 20 76 65 72 73  he.** "data vers
14250 69 6f 6e 22 20 63 68 61 6e 67 65 73 20 77 68 65  ion" changes whe
14260 6e 65 76 65 72 20 61 6e 79 20 63 68 61 6e 67 65  never any change
14270 20 6f 63 63 75 72 73 20 74 6f 20 74 68 65 20 63   occurs to the c
14280 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20  orresponding.** 
14290 64 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 65  database file, e
142a0 69 74 68 65 72 20 74 68 72 6f 75 67 68 20 53 51  ither through SQ
142b0 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20  L statements on 
142c0 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
142d0 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  e.** connection 
142e0 6f 72 20 74 68 72 6f 75 67 68 20 74 72 61 6e 73  or through trans
142f0 61 63 74 69 6f 6e 73 20 63 6f 6d 6d 69 74 74 65  actions committe
14300 64 20 62 79 20 73 65 70 61 72 61 74 65 20 64 61  d by separate da
14310 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63  tabase.** connec
14320 74 69 6f 6e 73 20 70 6f 73 73 69 62 6c 79 20 69  tions possibly i
14330 6e 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65  n other processe
14340 73 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  s. The [sqlite3_
14350 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d  total_changes()]
14360 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 63 61  .** interface ca
14370 6e 20 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e  n be used to fin
14380 64 20 69 66 20 61 6e 79 20 64 61 74 61 62 61 73  d if any databas
14390 65 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74  e on the connect
143a0 69 6f 6e 20 68 61 73 20 63 68 61 6e 67 65 64 2c  ion has changed,
143b0 0a 2a 2a 20 62 75 74 20 74 68 61 74 20 69 6e 74  .** but that int
143c0 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73 20  erface responds 
143d0 74 6f 20 63 68 61 6e 67 65 73 20 6f 6e 20 54 45  to changes on TE
143e0 4d 50 20 61 73 20 77 65 6c 6c 20 61 73 20 4d 41  MP as well as MA
143f0 49 4e 20 61 6e 64 20 64 6f 65 73 0a 2a 2a 20 6e  IN and does.** n
14400 6f 74 20 70 72 6f 76 69 64 65 20 61 20 6d 65 63  ot provide a mec
14410 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65 63 74  hanism to detect
14420 20 63 68 61 6e 67 65 73 20 74 6f 20 4d 41 49 4e   changes to MAIN
14430 20 6f 6e 6c 79 2e 20 20 41 6c 73 6f 2c 20 74 68   only.  Also, th
14440 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 74 6f  e.** [sqlite3_to
14450 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69  tal_changes()] i
14460 6e 74 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64  nterface respond
14470 73 20 74 6f 20 69 6e 74 65 72 6e 61 6c 20 63 68  s to internal ch
14480 61 6e 67 65 73 20 6f 6e 6c 79 20 61 6e 64 0a 2a  anges only and.*
14490 2a 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20  * omits changes 
144a0 6d 61 64 65 20 62 79 20 6f 74 68 65 72 20 64 61  made by other da
144b0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
144c0 6e 73 2e 20 20 54 68 65 0a 2a 2a 20 5b 50 52 41  ns.  The.** [PRA
144d0 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e  GMA data_version
144e0 5d 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 76 69 64  ] command provid
144f0 65 20 61 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f  e a mechanism to
14500 20 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20   detect changes 
14510 74 6f 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 61  to.** a single a
14520 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
14530 20 74 68 61 74 20 6f 63 63 75 72 20 64 75 65 20   that occur due 
14540 74 6f 20 6f 74 68 65 72 20 64 61 74 61 62 61 73  to other databas
14550 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2c 0a 2a  e connections,.*
14560 2a 20 62 75 74 20 6f 6d 69 74 73 20 63 68 61 6e  * but omits chan
14570 67 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20  ges implemented 
14580 62 79 20 74 68 65 20 64 61 74 61 62 61 73 65 20  by the database 
14590 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 6e 20 77 68  connection on wh
145a0 69 63 68 20 69 74 20 69 73 0a 2a 2a 20 63 61 6c  ich it is.** cal
145b0 6c 65 64 2e 20 20 54 68 69 73 20 66 69 6c 65 20  led.  This file 
145c0 63 6f 6e 74 72 6f 6c 20 69 73 20 74 68 65 20 6f  control is the o
145d0 6e 6c 79 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f  nly mechanism to
145e0 20 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20   detect changes 
145f0 74 68 61 74 0a 2a 2a 20 68 61 70 70 65 6e 20 65  that.** happen e
14600 69 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 6c 79  ither internally
14610 20 6f 72 20 65 78 74 65 72 6e 61 6c 6c 79 20 61   or externally a
14620 6e 64 20 74 68 61 74 20 61 72 65 20 61 73 73 6f  nd that are asso
14630 63 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 61  ciated with.** a
14640 20 70 61 72 74 69 63 75 6c 61 72 20 61 74 74 61   particular atta
14650 63 68 65 64 20 64 61 74 61 62 61 73 65 2e 0a 2a  ched database..*
14660 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66 69  * </ul>.*/.#defi
14670 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14680 4c 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20 20  LOCKSTATE       
14690 20 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e          1.#defin
146a0 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47  e SQLITE_FCNTL_G
146b0 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
146c0 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65         2.#define
146d0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45   SQLITE_FCNTL_SE
146e0 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20  T_LOCKPROXYFILE 
146f0 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20        3.#define 
14700 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
14710 54 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20  T_ERRNO         
14720 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53       4.#define S
14730 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45  QLITE_FCNTL_SIZE
14740 5f 48 49 4e 54 20 20 20 20 20 20 20 20 20 20 20  _HINT           
14750 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51      5.#define SQ
14760 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b  LITE_FCNTL_CHUNK
14770 5f 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20  _SIZE           
14780 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c     6.#define SQL
14790 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50  ITE_FCNTL_FILE_P
147a0 4f 49 4e 54 45 52 20 20 20 20 20 20 20 20 20 20  OINTER          
147b0 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    7.#define SQLI
147c0 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d  TE_FCNTL_SYNC_OM
147d0 49 54 54 45 44 20 20 20 20 20 20 20 20 20 20 20  ITTED           
147e0 20 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   8.#define SQLIT
147f0 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
14800 5f 52 45 54 52 59 20 20 20 20 20 20 20 20 20 20  _RETRY          
14810 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  9.#define SQLITE
14820 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57  _FCNTL_PERSIST_W
14830 41 4c 20 20 20 20 20 20 20 20 20 20 20 20 31 30  AL            10
14840 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14850 46 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45 20  FCNTL_OVERWRITE 
14860 20 20 20 20 20 20 20 20 20 20 20 20 20 31 31 0a               11.
14870 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14880 43 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20 20  CNTL_VFSNAME    
14890 20 20 20 20 20 20 20 20 20 20 20 20 31 32 0a 23              12.#
148a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
148b0 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  NTL_POWERSAFE_OV
148c0 45 52 57 52 49 54 45 20 20 20 20 31 33 0a 23 64  ERWRITE    13.#d
148d0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
148e0 54 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20  TL_PRAGMA       
148f0 20 20 20 20 20 20 20 20 20 20 31 34 0a 23 64 65            14.#de
14900 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14910 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20 20  L_BUSYHANDLER   
14920 20 20 20 20 20 20 20 20 20 31 35 0a 23 64 65 66           15.#def
14930 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14940 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20 20  _TEMPFILENAME   
14950 20 20 20 20 20 20 20 20 31 36 0a 23 64 65 66 69          16.#defi
14960 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14970 4d 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20 20  MMAP_SIZE       
14980 20 20 20 20 20 20 20 31 38 0a 23 64 65 66 69 6e         18.#defin
14990 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54  e SQLITE_FCNTL_T
149a0 52 41 43 45 20 20 20 20 20 20 20 20 20 20 20 20  RACE            
149b0 20 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e 65        19.#define
149c0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41   SQLITE_FCNTL_HA
149d0 53 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20 20  S_MOVED         
149e0 20 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65 20       20.#define 
149f0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e  SQLITE_FCNTL_SYN
14a00 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  C               
14a10 20 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20 53      21.#define S
14a20 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d  QLITE_FCNTL_COMM
14a30 49 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20 20  IT_PHASETWO     
14a40 20 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53 51     22.#define SQ
14a50 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32  LITE_FCNTL_WIN32
14a60 5f 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20 20  _SET_HANDLE     
14a70 20 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51 4c    23.#define SQL
14a80 49 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c  ITE_FCNTL_WAL_BL
14a90 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 20  OCK             
14aa0 20 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   24.#define SQLI
14ab0 54 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53 20  TE_FCNTL_ZIPVFS 
14ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ad0 32 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  25.#define SQLIT
14ae0 45 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20 20  E_FCNTL_RBU     
14af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
14b00 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  6.#define SQLITE
14b10 5f 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54  _FCNTL_VFS_POINT
14b20 45 52 20 20 20 20 20 20 20 20 20 20 20 20 32 37  ER            27
14b30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14b40 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f  FCNTL_JOURNAL_PO
14b50 49 4e 54 45 52 20 20 20 20 20 20 20 20 32 38 0a  INTER        28.
14b60 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14b70 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
14b80 41 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a 23  ANDLE       29.#
14b90 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14ba0 4e 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20 20  NTL_PDB         
14bb0 20 20 20 20 20 20 20 20 20 20 20 33 30 0a 23 64             30.#d
14bc0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14bd0 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f  TL_BEGIN_ATOMIC_
14be0 57 52 49 54 45 20 20 20 20 20 33 31 0a 23 64 65  WRITE     31.#de
14bf0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14c00 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f  L_COMMIT_ATOMIC_
14c10 57 52 49 54 45 20 20 20 20 33 32 0a 23 64 65 66  WRITE    32.#def
14c20 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14c30 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43  _ROLLBACK_ATOMIC
14c40 5f 57 52 49 54 45 20 20 33 33 0a 23 64 65 66 69  _WRITE  33.#defi
14c50 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14c60 4c 4f 43 4b 5f 54 49 4d 45 4f 55 54 20 20 20 20  LOCK_TIMEOUT    
14c70 20 20 20 20 20 20 20 33 34 0a 23 64 65 66 69 6e         34.#defin
14c80 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44  e SQLITE_FCNTL_D
14c90 41 54 41 5f 56 45 52 53 49 4f 4e 20 20 20 20 20  ATA_VERSION     
14ca0 20 20 20 20 20 20 33 35 0a 23 64 65 66 69 6e 65        35.#define
14cb0 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49   SQLITE_FCNTL_SI
14cc0 5a 45 5f 4c 49 4d 49 54 20 20 20 20 20 20 20 20  ZE_LIMIT        
14cd0 20 20 20 20 20 33 36 0a 0a 2f 2a 20 64 65 70 72       36../* depr
14ce0 65 63 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a  ecated names */.
14cf0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47  #define SQLITE_G
14d00 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
14d10 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e        SQLITE_FCN
14d20 54 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TL_GET_LOCKPROXY
14d30 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c  FILE.#define SQL
14d40 49 54 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58  ITE_SET_LOCKPROX
14d50 59 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54  YFILE      SQLIT
14d60 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b  E_FCNTL_SET_LOCK
14d70 50 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e  PROXYFILE.#defin
14d80 65 20 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52  e SQLITE_LAST_ER
14d90 52 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20  RNO             
14da0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53  SQLITE_FCNTL_LAS
14db0 54 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20  T_ERRNO.../*.** 
14dc0 43 41 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20  CAPI3REF: Mutex 
14dd0 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65  Handle.**.** The
14de0 20 6d 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69   mutex module wi
14df0 74 68 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69  thin SQLite defi
14e00 6e 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  nes [sqlite3_mut
14e10 65 78 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20  ex] to be an.** 
14e20 61 62 73 74 72 61 63 74 20 74 79 70 65 20 66 6f  abstract type fo
14e30 72 20 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74  r a mutex object
14e40 2e 20 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f  .  The SQLite co
14e50 72 65 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a  re never looks.*
14e60 2a 20 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61  * at the interna
14e70 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  l representation
14e80 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f   of an [sqlite3_
14e90 6d 75 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79  mutex].  It only
14ea0 0a 2a 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70  .** deals with p
14eb0 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b  ointers to the [
14ec0 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f  sqlite3_mutex] o
14ed0 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74  bject..**.** Mut
14ee0 65 78 65 73 20 61 72 65 20 63 72 65 61 74 65 64  exes are created
14ef0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
14f00 6d 75 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a  mutex_alloc()]..
14f10 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63  */.typedef struc
14f20 74 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20  t sqlite3_mutex 
14f30 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a  sqlite3_mutex;..
14f40 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
14f50 4c 6f 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69  Loadable Extensi
14f60 6f 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41  on Thunk.**.** A
14f70 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
14f80 6f 70 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61  opaque sqlite3_a
14f90 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75  pi_routines stru
14fa0 63 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20  cture is passed 
14fb0 61 73 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20  as.** the third 
14fc0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74  parameter to ent
14fd0 72 79 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f  ry points of [lo
14fe0 61 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e  adable extension
14ff0 73 5d 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72  s].  This.** str
15000 75 63 74 75 72 65 20 6d 75 73 74 20 62 65 20 74  ucture must be t
15010 79 70 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65  ypedefed in orde
15020 72 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64  r to work around
15030 20 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e   compiler warnin
15040 67 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c  gs.** on some pl
15050 61 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65  atforms..*/.type
15060 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
15070 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20  e3_api_routines 
15080 73 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74  sqlite3_api_rout
15090 69 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ines;../*.** CAP
150a0 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
150b0 61 63 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a  ace Object.**.**
150c0 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   An instance of 
150d0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20  the sqlite3_vfs 
150e0 6f 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74  object defines t
150f0 68 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74  he interface bet
15100 77 65 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69  ween.** the SQLi
15110 74 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20  te core and the 
15120 75 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61  underlying opera
15130 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68  ting system.  Th
15140 65 20 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68  e "vfs".** in th
15150 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62  e name of the ob
15160 6a 65 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20  ject stands for 
15170 22 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79  "virtual file sy
15180 73 74 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74  stem".  See.** t
15190 68 65 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f  he [VFS | VFS do
151a0 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72  cumentation] for
151b0 20 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61   further informa
151c0 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  tion..**.** The 
151d0 56 46 53 20 69 6e 74 65 72 66 61 63 65 20 69 73  VFS interface is
151e0 20 73 6f 6d 65 74 69 6d 65 73 20 65 78 74 65 6e   sometimes exten
151f0 64 65 64 20 62 79 20 61 64 64 69 6e 67 20 6e 65  ded by adding ne
15200 77 20 6d 65 74 68 6f 64 73 20 6f 6e 74 6f 0a 2a  w methods onto.*
15210 2a 20 74 68 65 20 65 6e 64 2e 20 20 45 61 63 68  * the end.  Each
15220 20 74 69 6d 65 20 73 75 63 68 20 61 6e 20 65 78   time such an ex
15230 74 65 6e 73 69 6f 6e 20 6f 63 63 75 72 73 2c 20  tension occurs, 
15240 74 68 65 20 69 56 65 72 73 69 6f 6e 20 66 69 65  the iVersion fie
15250 6c 64 0a 2a 2a 20 69 73 20 69 6e 63 72 65 6d 65  ld.** is increme
15260 6e 74 65 64 2e 20 20 54 68 65 20 69 56 65 72 73  nted.  The iVers
15270 69 6f 6e 20 76 61 6c 75 65 20 73 74 61 72 74 65  ion value starte
15280 64 20 6f 75 74 20 61 73 20 31 20 69 6e 0a 2a 2a  d out as 1 in.**
15290 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
152a0 20 33 2e 35 2e 30 5d 20 6f 6e 20 5b 64 61 74 65   3.5.0] on [date
152b0 6f 66 3a 33 2e 35 2e 30 5d 2c 20 74 68 65 6e 20  of:3.5.0], then 
152c0 69 6e 63 72 65 61 73 65 64 20 74 6f 20 32 0a 2a  increased to 2.*
152d0 2a 20 77 69 74 68 20 53 51 4c 69 74 65 20 5b 76  * with SQLite [v
152e0 65 72 73 69 6f 6e 20 33 2e 37 2e 30 5d 20 6f 6e  ersion 3.7.0] on
152f0 20 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 30 5d 2c   [dateof:3.7.0],
15300 20 61 6e 64 20 74 68 65 6e 20 69 6e 63 72 65 61   and then increa
15310 73 65 64 0a 2a 2a 20 74 6f 20 33 20 77 69 74 68  sed.** to 3 with
15320 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e   SQLite [version
15330 20 33 2e 37 2e 36 5d 20 6f 6e 20 5b 64 61 74 65   3.7.6] on [date
15340 6f 66 3a 33 2e 37 2e 36 5d 2e 20 20 41 64 64 69  of:3.7.6].  Addi
15350 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a 2a 2a  tional fields.**
15360 20 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65 64   may be appended
15370 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f   to the sqlite3_
15380 76 66 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 74  vfs object and t
15390 68 65 20 69 56 65 72 73 69 6f 6e 20 76 61 6c 75  he iVersion valu
153a0 65 0a 2a 2a 20 6d 61 79 20 69 6e 63 72 65 61 73  e.** may increas
153b0 65 20 61 67 61 69 6e 20 69 6e 20 66 75 74 75 72  e again in futur
153c0 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51  e versions of SQ
153d0 4c 69 74 65 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68  Lite..** Note th
153e0 61 74 20 74 68 65 20 73 74 72 75 63 74 75 72 65  at the structure
153f0 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74  .** of the sqlit
15400 65 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63 68  e3_vfs object ch
15410 61 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72 61  anges in the tra
15420 6e 73 69 74 69 6f 6e 20 66 72 6f 6d 0a 2a 2a 20  nsition from.** 
15430 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
15440 33 2e 35 2e 39 5d 20 74 6f 20 5b 76 65 72 73 69  3.5.9] to [versi
15450 6f 6e 20 33 2e 36 2e 30 5d 20 6f 6e 20 5b 64 61  on 3.6.0] on [da
15460 74 65 6f 66 3a 33 2e 36 2e 30 5d 0a 2a 2a 20 61  teof:3.6.0].** a
15470 6e 64 20 79 65 74 20 74 68 65 20 69 56 65 72 73  nd yet the iVers
15480 69 6f 6e 20 66 69 65 6c 64 20 77 61 73 20 6e 6f  ion field was no
15490 74 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a  t modified..**.*
154a0 2a 20 54 68 65 20 73 7a 4f 73 46 69 6c 65 20 66  * The szOsFile f
154b0 69 65 6c 64 20 69 73 20 74 68 65 20 73 69 7a 65  ield is the size
154c0 20 6f 66 20 74 68 65 20 73 75 62 63 6c 61 73 73   of the subclass
154d0 65 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ed [sqlite3_file
154e0 5d 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 75  ].** structure u
154f0 73 65 64 20 62 79 20 74 68 69 73 20 56 46 53 2e  sed by this VFS.
15500 20 20 6d 78 50 61 74 68 6e 61 6d 65 20 69 73 20    mxPathname is 
15510 74 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67  the maximum leng
15520 74 68 20 6f 66 0a 2a 2a 20 61 20 70 61 74 68 6e  th of.** a pathn
15530 61 6d 65 20 69 6e 20 74 68 69 73 20 56 46 53 2e  ame in this VFS.
15540 0a 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 65  .**.** Registere
15550 64 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62  d sqlite3_vfs ob
15560 6a 65 63 74 73 20 61 72 65 20 6b 65 70 74 20 6f  jects are kept o
15570 6e 20 61 20 6c 69 6e 6b 65 64 20 6c 69 73 74 20  n a linked list 
15580 66 6f 72 6d 65 64 20 62 79 0a 2a 2a 20 74 68 65  formed by.** the
15590 20 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e 20   pNext pointer. 
155a0 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66   The [sqlite3_vf
155b0 73 5f 72 65 67 69 73 74 65 72 28 29 5d 0a 2a 2a  s_register()].**
155c0 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 76 66   and [sqlite3_vf
155d0 73 5f 75 6e 72 65 67 69 73 74 65 72 28 29 5d 20  s_unregister()] 
155e0 69 6e 74 65 72 66 61 63 65 73 20 6d 61 6e 61 67  interfaces manag
155f0 65 20 74 68 69 73 20 6c 69 73 74 0a 2a 2a 20 69  e this list.** i
15600 6e 20 61 20 74 68 72 65 61 64 2d 73 61 66 65 20  n a thread-safe 
15610 77 61 79 2e 20 20 54 68 65 20 5b 73 71 6c 69 74  way.  The [sqlit
15620 65 33 5f 76 66 73 5f 66 69 6e 64 28 29 5d 20 69  e3_vfs_find()] i
15630 6e 74 65 72 66 61 63 65 0a 2a 2a 20 73 65 61 72  nterface.** sear
15640 63 68 65 73 20 74 68 65 20 6c 69 73 74 2e 20 20  ches the list.  
15650 4e 65 69 74 68 65 72 20 74 68 65 20 61 70 70 6c  Neither the appl
15660 69 63 61 74 69 6f 6e 20 63 6f 64 65 20 6e 6f 72  ication code nor
15670 20 74 68 65 20 56 46 53 0a 2a 2a 20 69 6d 70 6c   the VFS.** impl
15680 65 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 75 6c  ementation shoul
15690 64 20 75 73 65 20 74 68 65 20 70 4e 65 78 74 20  d use the pNext 
156a0 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54  pointer..**.** T
156b0 68 65 20 70 4e 65 78 74 20 66 69 65 6c 64 20 69  he pNext field i
156c0 73 20 74 68 65 20 6f 6e 6c 79 20 66 69 65 6c 64  s the only field
156d0 20 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f   in the sqlite3_
156e0 76 66 73 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  vfs.** structure
156f0 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
15700 6c 20 65 76 65 72 20 6d 6f 64 69 66 79 2e 20 20  l ever modify.  
15710 53 51 4c 69 74 65 20 77 69 6c 6c 20 6f 6e 6c 79  SQLite will only
15720 20 61 63 63 65 73 73 0a 2a 2a 20 6f 72 20 6d 6f   access.** or mo
15730 64 69 66 79 20 74 68 69 73 20 66 69 65 6c 64 20  dify this field 
15740 77 68 69 6c 65 20 68 6f 6c 64 69 6e 67 20 61 20  while holding a 
15750 70 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 69  particular stati
15760 63 20 6d 75 74 65 78 2e 0a 2a 2a 20 54 68 65 20  c mutex..** The 
15770 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75  application shou
15780 6c 64 20 6e 65 76 65 72 20 6d 6f 64 69 66 79 20  ld never modify 
15790 61 6e 79 74 68 69 6e 67 20 77 69 74 68 69 6e 20  anything within 
157a0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a  the sqlite3_vfs.
157b0 2a 2a 20 6f 62 6a 65 63 74 20 6f 6e 63 65 20 74  ** object once t
157c0 68 65 20 6f 62 6a 65 63 74 20 68 61 73 20 62 65  he object has be
157d0 65 6e 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a  en registered..*
157e0 2a 0a 2a 2a 20 54 68 65 20 7a 4e 61 6d 65 20 66  *.** The zName f
157f0 69 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 6e  ield holds the n
15800 61 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20 6d  ame of the VFS m
15810 6f 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 6d 65  odule.  The name
15820 20 6d 75 73 74 0a 2a 2a 20 62 65 20 75 6e 69 71   must.** be uniq
15830 75 65 20 61 63 72 6f 73 73 20 61 6c 6c 20 56 46  ue across all VF
15840 53 20 6d 6f 64 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a  S modules..**.**
15850 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78   [[sqlite3_vfs.x
15860 4f 70 65 6e 5d 5d 0a 2a 2a 20 5e 53 51 4c 69 74  Open]].** ^SQLit
15870 65 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61  e guarantees tha
15880 74 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20  t the zFilename 
15890 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70  parameter to xOp
158a0 65 6e 0a 2a 2a 20 69 73 20 65 69 74 68 65 72 20  en.** is either 
158b0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f  a NULL pointer o
158c0 72 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65  r string obtaine
158d0 64 0a 2a 2a 20 66 72 6f 6d 20 78 46 75 6c 6c 50  d.** from xFullP
158e0 61 74 68 6e 61 6d 65 28 29 20 77 69 74 68 20 61  athname() with a
158f0 6e 20 6f 70 74 69 6f 6e 61 6c 20 73 75 66 66 69  n optional suffi
15900 78 20 61 64 64 65 64 2e 0a 2a 2a 20 5e 49 66 20  x added..** ^If 
15910 61 20 73 75 66 66 69 78 20 69 73 20 61 64 64 65  a suffix is adde
15920 64 20 74 6f 20 74 68 65 20 7a 46 69 6c 65 6e 61  d to the zFilena
15930 6d 65 20 70 61 72 61 6d 65 74 65 72 2c 20 69 74  me parameter, it
15940 20 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 73 69 73 74   will.** consist
15950 20 6f 66 20 61 20 73 69 6e 67 6c 65 20 22 2d 22   of a single "-"
15960 20 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f   character follo
15970 77 65 64 20 62 79 20 6e 6f 20 6d 6f 72 65 20 74  wed by no more t
15980 68 61 6e 0a 2a 2a 20 31 31 20 61 6c 70 68 61 6e  han.** 11 alphan
15990 75 6d 65 72 69 63 20 61 6e 64 2f 6f 72 20 22 2d  umeric and/or "-
159a0 22 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2a  " characters..**
159b0 20 5e 53 51 4c 69 74 65 20 66 75 72 74 68 65 72   ^SQLite further
159c0 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
159d0 0a 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 20 77  .** the string w
159e0 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 6e 64  ill be valid and
159f0 20 75 6e 63 68 61 6e 67 65 64 20 75 6e 74 69 6c   unchanged until
15a00 20 78 43 6c 6f 73 65 28 29 20 69 73 0a 2a 2a 20   xClose() is.** 
15a10 63 61 6c 6c 65 64 2e 20 42 65 63 61 75 73 65 20  called. Because 
15a20 6f 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  of the previous 
15a30 73 65 6e 74 65 6e 63 65 2c 0a 2a 2a 20 74 68 65  sentence,.** the
15a40 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20   [sqlite3_file] 
15a50 63 61 6e 20 73 61 66 65 6c 79 20 73 74 6f 72 65  can safely store
15a60 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
15a70 65 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69 66  e.** filename if
15a80 20 69 74 20 6e 65 65 64 73 20 74 6f 20 72 65 6d   it needs to rem
15a90 65 6d 62 65 72 20 74 68 65 20 66 69 6c 65 6e 61  ember the filena
15aa0 6d 65 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73  me for some reas
15ab0 6f 6e 2e 0a 2a 2a 20 49 66 20 74 68 65 20 7a 46  on..** If the zF
15ac0 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65  ilename paramete
15ad0 72 20 74 6f 20 78 4f 70 65 6e 20 69 73 20 61 20  r to xOpen is a 
15ae0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65  NULL pointer the
15af0 6e 20 78 4f 70 65 6e 0a 2a 2a 20 6d 75 73 74 20  n xOpen.** must 
15b00 69 6e 76 65 6e 74 20 69 74 73 20 6f 77 6e 20 74  invent its own t
15b10 65 6d 70 6f 72 61 72 79 20 6e 61 6d 65 20 66 6f  emporary name fo
15b20 72 20 74 68 65 20 66 69 6c 65 2e 20 20 5e 57 68  r the file.  ^Wh
15b30 65 6e 65 76 65 72 20 74 68 65 20 0a 2a 2a 20 78  enever the .** x
15b40 46 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74  Filename paramet
15b50 65 72 20 69 73 20 4e 55 4c 4c 20 69 74 20 77 69  er is NULL it wi
15b60 6c 6c 20 61 6c 73 6f 20 62 65 20 74 68 65 20 63  ll also be the c
15b70 61 73 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20  ase that the.** 
15b80 66 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20  flags parameter 
15b90 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 5b 53 51  will include [SQ
15ba0 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45  LITE_OPEN_DELETE
15bb0 4f 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20  ONCLOSE]..**.** 
15bc0 54 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65  The flags argume
15bd0 6e 74 20 74 6f 20 78 4f 70 65 6e 28 29 20 69 6e  nt to xOpen() in
15be0 63 6c 75 64 65 73 20 61 6c 6c 20 62 69 74 73 20  cludes all bits 
15bf0 73 65 74 20 69 6e 0a 2a 2a 20 74 68 65 20 66 6c  set in.** the fl
15c00 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ags argument to 
15c10 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
15c20 28 29 5d 2e 20 20 4f 72 20 69 66 20 5b 73 71 6c  ()].  Or if [sql
15c30 69 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20  ite3_open()].** 
15c40 6f 72 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  or [sqlite3_open
15c50 31 36 28 29 5d 20 69 73 20 75 73 65 64 2c 20 74  16()] is used, t
15c60 68 65 6e 20 66 6c 61 67 73 20 69 6e 63 6c 75 64  hen flags includ
15c70 65 73 20 61 74 20 6c 65 61 73 74 0a 2a 2a 20 5b  es at least.** [
15c80 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
15c90 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45  WRITE] | [SQLITE
15ca0 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 2e 20 0a  _OPEN_CREATE]. .
15cb0 2a 2a 20 49 66 20 78 4f 70 65 6e 28 29 20 6f 70  ** If xOpen() op
15cc0 65 6e 73 20 61 20 66 69 6c 65 20 72 65 61 64 2d  ens a file read-
15cd0 6f 6e 6c 79 20 74 68 65 6e 20 69 74 20 73 65 74  only then it set
15ce0 73 20 2a 70 4f 75 74 46 6c 61 67 73 20 74 6f 0a  s *pOutFlags to.
15cf0 2a 2a 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49  ** include [SQLI
15d00 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59  TE_OPEN_READONLY
15d10 5d 2e 20 20 4f 74 68 65 72 20 62 69 74 73 20 69  ].  Other bits i
15d20 6e 20 2a 70 4f 75 74 46 6c 61 67 73 20 6d 61 79  n *pOutFlags may
15d30 20 62 65 20 73 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e   be set..**.** ^
15d40 28 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 73  (SQLite will als
15d50 6f 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65  o add one of the
15d60 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73   following flags
15d70 20 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 0a   to the xOpen().
15d80 2a 2a 20 63 61 6c 6c 2c 20 64 65 70 65 6e 64 69  ** call, dependi
15d90 6e 67 20 6f 6e 20 74 68 65 20 6f 62 6a 65 63 74  ng on the object
15da0 20 62 65 69 6e 67 20 6f 70 65 6e 65 64 3a 0a 2a   being opened:.*
15db0 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  *.** <ul>.** <li
15dc0 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  >  [SQLITE_OPEN_
15dd0 4d 41 49 4e 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e  MAIN_DB].** <li>
15de0 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d    [SQLITE_OPEN_M
15df0 41 49 4e 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20  AIN_JOURNAL].** 
15e00 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50  <li>  [SQLITE_OP
15e10 45 4e 5f 54 45 4d 50 5f 44 42 5d 0a 2a 2a 20 3c  EN_TEMP_DB].** <
15e20 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15e30 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c 5d 0a  N_TEMP_JOURNAL].
15e40 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
15e50 5f 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f  _OPEN_TRANSIENT_
15e60 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51  DB].** <li>  [SQ
15e70 4c 49 54 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55  LITE_OPEN_SUBJOU
15e80 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b  RNAL].** <li>  [
15e90 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 53 54  SQLITE_OPEN_MAST
15ea0 45 52 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  ER_JOURNAL].** <
15eb0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15ec0 4e 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29  N_WAL].** </ul>)
15ed0 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 6c 65  ^.**.** The file
15ee0 20 49 2f 4f 20 69 6d 70 6c 65 6d 65 6e 74 61 74   I/O implementat
15ef0 69 6f 6e 20 63 61 6e 20 75 73 65 20 74 68 65 20  ion can use the 
15f00 6f 62 6a 65 63 74 20 74 79 70 65 20 66 6c 61 67  object type flag
15f10 73 20 74 6f 0a 2a 2a 20 63 68 61 6e 67 65 20 74  s to.** change t
15f20 68 65 20 77 61 79 20 69 74 20 64 65 61 6c 73 20  he way it deals 
15f30 77 69 74 68 20 66 69 6c 65 73 2e 20 20 46 6f 72  with files.  For
15f40 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70   example, an app
15f50 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 74 68 61 74  lication.** that
15f60 20 64 6f 65 73 20 6e 6f 74 20 63 61 72 65 20 61   does not care a
15f70 62 6f 75 74 20 63 72 61 73 68 20 72 65 63 6f 76  bout crash recov
15f80 65 72 79 20 6f 72 20 72 6f 6c 6c 62 61 63 6b 20  ery or rollback 
15f90 6d 69 67 68 74 20 6d 61 6b 65 0a 2a 2a 20 74 68  might make.** th
15fa0 65 20 6f 70 65 6e 20 6f 66 20 61 20 6a 6f 75 72  e open of a jour
15fb0 6e 61 6c 20 66 69 6c 65 20 61 20 6e 6f 2d 6f 70  nal file a no-op
15fc0 2e 20 20 57 72 69 74 65 73 20 74 6f 20 74 68 69  .  Writes to thi
15fd0 73 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 0a  s journal would.
15fe0 2a 2a 20 61 6c 73 6f 20 62 65 20 6e 6f 2d 6f 70  ** also be no-op
15ff0 73 2c 20 61 6e 64 20 61 6e 79 20 61 74 74 65 6d  s, and any attem
16000 70 74 20 74 6f 20 72 65 61 64 20 74 68 65 20 6a  pt to read the j
16010 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 20 72 65 74  ournal would ret
16020 75 72 6e 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f  urn.** SQLITE_IO
16030 45 52 52 2e 20 20 4f 72 20 74 68 65 20 69 6d 70  ERR.  Or the imp
16040 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 69 67 68  lementation migh
16050 74 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 61 74  t recognize that
16060 20 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66   a database.** f
16070 69 6c 65 20 77 69 6c 6c 20 62 65 20 64 6f 69 6e  ile will be doin
16080 67 20 70 61 67 65 2d 61 6c 69 67 6e 65 64 20 73  g page-aligned s
16090 65 63 74 6f 72 20 72 65 61 64 73 20 61 6e 64 20  ector reads and 
160a0 77 72 69 74 65 73 20 69 6e 20 61 20 72 61 6e 64  writes in a rand
160b0 6f 6d 0a 2a 2a 20 6f 72 64 65 72 20 61 6e 64 20  om.** order and 
160c0 73 65 74 20 75 70 20 69 74 73 20 49 2f 4f 20 73  set up its I/O s
160d0 75 62 73 79 73 74 65 6d 20 61 63 63 6f 72 64 69  ubsystem accordi
160e0 6e 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  ngly..**.** SQLi
160f0 74 65 20 6d 69 67 68 74 20 61 6c 73 6f 20 61 64  te might also ad
16100 64 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  d one of the fol
16110 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20  lowing flags to 
16120 74 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  the xOpen method
16130 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  :.**.** <ul>.** 
16140 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45  <li> [SQLITE_OPE
16150 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d  N_DELETEONCLOSE]
16160 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
16170 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d  _OPEN_EXCLUSIVE]
16180 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
16190 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  The [SQLITE_OPEN
161a0 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 20  _DELETEONCLOSE] 
161b0 66 6c 61 67 20 6d 65 61 6e 73 20 74 68 65 20 66  flag means the f
161c0 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a  ile should be.**
161d0 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20 69 74   deleted when it
161e0 20 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 54 68   is closed.  ^Th
161f0 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44  e [SQLITE_OPEN_D
16200 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a  ELETEONCLOSE].**
16210 20 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72   will be set for
16220 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 73 20   TEMP databases 
16230 61 6e 64 20 74 68 65 69 72 20 6a 6f 75 72 6e 61  and their journa
16240 6c 73 2c 20 74 72 61 6e 73 69 65 6e 74 0a 2a 2a  ls, transient.**
16250 20 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20   databases, and 
16260 73 75 62 6a 6f 75 72 6e 61 6c 73 2e 0a 2a 2a 0a  subjournals..**.
16270 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
16280 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d 20  OPEN_EXCLUSIVE] 
16290 66 6c 61 67 20 69 73 20 61 6c 77 61 79 73 20 75  flag is always u
162a0 73 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69  sed in conjuncti
162b0 6f 6e 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b  on.** with the [
162c0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
162d0 54 45 5d 20 66 6c 61 67 2c 20 77 68 69 63 68 20  TE] flag, which 
162e0 61 72 65 20 62 6f 74 68 20 64 69 72 65 63 74 6c  are both directl
162f0 79 0a 2a 2a 20 61 6e 61 6c 6f 67 6f 75 73 20 74  y.** analogous t
16300 6f 20 74 68 65 20 4f 5f 45 58 43 4c 20 61 6e 64  o the O_EXCL and
16310 20 4f 5f 43 52 45 41 54 20 66 6c 61 67 73 20 6f   O_CREAT flags o
16320 66 20 74 68 65 20 50 4f 53 49 58 20 6f 70 65 6e  f the POSIX open
16330 28 29 0a 2a 2a 20 41 50 49 2e 20 20 54 68 65 20  ().** API.  The 
16340 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c  SQLITE_OPEN_EXCL
16350 55 53 49 56 45 20 66 6c 61 67 2c 20 77 68 65 6e  USIVE flag, when
16360 20 70 61 69 72 65 64 20 77 69 74 68 20 74 68 65   paired with the
16370 20 0a 2a 2a 20 53 51 4c 49 54 45 5f 4f 50 45 4e   .** SQLITE_OPEN
16380 5f 43 52 45 41 54 45 2c 20 69 73 20 75 73 65 64  _CREATE, is used
16390 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61   to indicate tha
163a0 74 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 61 6c  t file should al
163b0 77 61 79 73 0a 2a 2a 20 62 65 20 63 72 65 61 74  ways.** be creat
163c0 65 64 2c 20 61 6e 64 20 74 68 61 74 20 69 74 20  ed, and that it 
163d0 69 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20 69  is an error if i
163e0 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73  t already exists
163f0 2e 0a 2a 2a 20 49 74 20 69 73 20 3c 69 3e 6e 6f  ..** It is <i>no
16400 74 3c 2f 69 3e 20 75 73 65 64 20 74 6f 20 69 6e  t</i> used to in
16410 64 69 63 61 74 65 20 74 68 65 20 66 69 6c 65 20  dicate the file 
16420 73 68 6f 75 6c 64 20 62 65 20 6f 70 65 6e 65 64  should be opened
16430 20 0a 2a 2a 20 66 6f 72 20 65 78 63 6c 75 73 69   .** for exclusi
16440 76 65 20 61 63 63 65 73 73 2e 0a 2a 2a 0a 2a 2a  ve access..**.**
16450 20 5e 41 74 20 6c 65 61 73 74 20 73 7a 4f 73 46   ^At least szOsF
16460 69 6c 65 20 62 79 74 65 73 20 6f 66 20 6d 65 6d  ile bytes of mem
16470 6f 72 79 20 61 72 65 20 61 6c 6c 6f 63 61 74 65  ory are allocate
16480 64 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 74  d by SQLite.** t
16490 6f 20 68 6f 6c 64 20 74 68 65 20 20 5b 73 71 6c  o hold the  [sql
164a0 69 74 65 33 5f 66 69 6c 65 5d 20 73 74 72 75 63  ite3_file] struc
164b0 74 75 72 65 20 70 61 73 73 65 64 20 61 73 20 74  ture passed as t
164c0 68 65 20 74 68 69 72 64 0a 2a 2a 20 61 72 67 75  he third.** argu
164d0 6d 65 6e 74 20 74 6f 20 78 4f 70 65 6e 2e 20 20  ment to xOpen.  
164e0 54 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64  The xOpen method
164f0 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74   does not have t
16500 6f 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65 20 74 68  o.** allocate th
16510 65 20 73 74 72 75 63 74 75 72 65 3b 20 69 74 20  e structure; it 
16520 73 68 6f 75 6c 64 20 6a 75 73 74 20 66 69 6c 6c  should just fill
16530 20 69 74 20 69 6e 2e 20 20 4e 6f 74 65 20 74 68   it in.  Note th
16540 61 74 0a 2a 2a 20 74 68 65 20 78 4f 70 65 6e 20  at.** the xOpen 
16550 6d 65 74 68 6f 64 20 6d 75 73 74 20 73 65 74 20  method must set 
16560 74 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65  the sqlite3_file
16570 2e 70 4d 65 74 68 6f 64 73 20 74 6f 20 65 69 74  .pMethods to eit
16580 68 65 72 0a 2a 2a 20 61 20 76 61 6c 69 64 20 5b  her.** a valid [
16590 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
165a0 64 73 5d 20 6f 62 6a 65 63 74 20 6f 72 20 74 6f  ds] object or to
165b0 20 4e 55 4c 4c 2e 20 20 78 4f 70 65 6e 20 6d 75   NULL.  xOpen mu
165c0 73 74 20 64 6f 0a 2a 2a 20 74 68 69 73 20 65 76  st do.** this ev
165d0 65 6e 20 69 66 20 74 68 65 20 6f 70 65 6e 20 66  en if the open f
165e0 61 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 65 78  ails.  SQLite ex
165f0 70 65 63 74 73 20 74 68 61 74 20 74 68 65 20 73  pects that the s
16600 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74  qlite3_file.pMet
16610 68 6f 64 73 0a 2a 2a 20 65 6c 65 6d 65 6e 74 20  hods.** element 
16620 77 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 66  will be valid af
16630 74 65 72 20 78 4f 70 65 6e 20 72 65 74 75 72 6e  ter xOpen return
16640 73 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  s regardless of 
16650 74 68 65 20 73 75 63 63 65 73 73 0a 2a 2a 20 6f  the success.** o
16660 72 20 66 61 69 6c 75 72 65 20 6f 66 20 74 68 65  r failure of the
16670 20 78 4f 70 65 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a   xOpen call..**.
16680 2a 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73  ** [[sqlite3_vfs
16690 2e 78 41 63 63 65 73 73 5d 5d 0a 2a 2a 20 5e 54  .xAccess]].** ^T
166a0 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
166b0 74 20 74 6f 20 78 41 63 63 65 73 73 28 29 20 6d  t to xAccess() m
166c0 61 79 20 62 65 20 5b 53 51 4c 49 54 45 5f 41 43  ay be [SQLITE_AC
166d0 43 45 53 53 5f 45 58 49 53 54 53 5d 0a 2a 2a 20  CESS_EXISTS].** 
166e0 74 6f 20 74 65 73 74 20 66 6f 72 20 74 68 65 20  to test for the 
166f0 65 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 66  existence of a f
16700 69 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ile, or [SQLITE_
16710 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
16720 5d 20 74 6f 0a 2a 2a 20 74 65 73 74 20 77 68 65  ] to.** test whe
16730 74 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 72  ther a file is r
16740 65 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74  eadable and writ
16750 61 62 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45  able, or [SQLITE
16760 5f 41 43 43 45 53 53 5f 52 45 41 44 5d 0a 2a 2a  _ACCESS_READ].**
16770 20 74 6f 20 74 65 73 74 20 77 68 65 74 68 65 72   to test whether
16780 20 61 20 66 69 6c 65 20 69 73 20 61 74 20 6c 65   a file is at le
16790 61 73 74 20 72 65 61 64 61 62 6c 65 2e 20 20 20  ast readable.   
167a0 54 68 65 20 66 69 6c 65 20 63 61 6e 20 62 65 20  The file can be 
167b0 61 0a 2a 2a 20 64 69 72 65 63 74 6f 72 79 2e 0a  a.** directory..
167c0 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  **.** ^SQLite wi
167d0 6c 6c 20 61 6c 77 61 79 73 20 61 6c 6c 6f 63 61  ll always alloca
167e0 74 65 20 61 74 20 6c 65 61 73 74 20 6d 78 50 61  te at least mxPa
167f0 74 68 6e 61 6d 65 2b 31 20 62 79 74 65 73 20 66  thname+1 bytes f
16800 6f 72 20 74 68 65 0a 2a 2a 20 6f 75 74 70 75 74  or the.** output
16810 20 62 75 66 66 65 72 20 78 46 75 6c 6c 50 61 74   buffer xFullPat
16820 68 6e 61 6d 65 2e 20 20 54 68 65 20 65 78 61 63  hname.  The exac
16830 74 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6f 75  t size of the ou
16840 74 70 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69  tput buffer.** i
16850 73 20 61 6c 73 6f 20 70 61 73 73 65 64 20 61 73  s also passed as
16860 20 61 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20   a parameter to 
16870 62 6f 74 68 20 20 6d 65 74 68 6f 64 73 2e 20 49  both  methods. I
16880 66 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66  f the output buf
16890 66 65 72 0a 2a 2a 20 69 73 20 6e 6f 74 20 6c 61  fer.** is not la
168a0 72 67 65 20 65 6e 6f 75 67 68 2c 20 5b 53 51 4c  rge enough, [SQL
168b0 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 73 68  ITE_CANTOPEN] sh
168c0 6f 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64  ould be returned
168d0 2e 20 53 69 6e 63 65 20 74 68 69 73 20 69 73 0a  . Since this is.
168e0 2a 2a 20 68 61 6e 64 6c 65 64 20 61 73 20 61 20  ** handled as a 
168f0 66 61 74 61 6c 20 65 72 72 6f 72 20 62 79 20 53  fatal error by S
16900 51 4c 69 74 65 2c 20 76 66 73 20 69 6d 70 6c 65  QLite, vfs imple
16910 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c  mentations shoul
16920 64 20 65 6e 64 65 61 76 6f 72 0a 2a 2a 20 74 6f  d endeavor.** to
16930 20 70 72 65 76 65 6e 74 20 74 68 69 73 20 62 79   prevent this by
16940 20 73 65 74 74 69 6e 67 20 6d 78 50 61 74 68 6e   setting mxPathn
16950 61 6d 65 20 74 6f 20 61 20 73 75 66 66 69 63 69  ame to a suffici
16960 65 6e 74 6c 79 20 6c 61 72 67 65 20 76 61 6c 75  ently large valu
16970 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 61  e..**.** The xRa
16980 6e 64 6f 6d 6e 65 73 73 28 29 2c 20 78 53 6c 65  ndomness(), xSle
16990 65 70 28 29 2c 20 78 43 75 72 72 65 6e 74 54 69  ep(), xCurrentTi
169a0 6d 65 28 29 2c 20 61 6e 64 20 78 43 75 72 72 65  me(), and xCurre
169b0 6e 74 54 69 6d 65 49 6e 74 36 34 28 29 0a 2a 2a  ntTimeInt64().**
169c0 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
169d0 6e 6f 74 20 73 74 72 69 63 74 6c 79 20 61 20 70  not strictly a p
169e0 61 72 74 20 6f 66 20 74 68 65 20 66 69 6c 65 73  art of the files
169f0 79 73 74 65 6d 2c 20 62 75 74 20 74 68 65 79 20  ystem, but they 
16a00 61 72 65 0a 2a 2a 20 69 6e 63 6c 75 64 65 64 20  are.** included 
16a10 69 6e 20 74 68 65 20 56 46 53 20 73 74 72 75 63  in the VFS struc
16a20 74 75 72 65 20 66 6f 72 20 63 6f 6d 70 6c 65 74  ture for complet
16a30 65 6e 65 73 73 2e 0a 2a 2a 20 54 68 65 20 78 52  eness..** The xR
16a40 61 6e 64 6f 6d 6e 65 73 73 28 29 20 66 75 6e 63  andomness() func
16a50 74 69 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f  tion attempts to
16a60 20 72 65 74 75 72 6e 20 6e 42 79 74 65 73 20 62   return nBytes b
16a70 79 74 65 73 0a 2a 2a 20 6f 66 20 67 6f 6f 64 2d  ytes.** of good-
16a80 71 75 61 6c 69 74 79 20 72 61 6e 64 6f 6d 6e 65  quality randomne
16a90 73 73 20 69 6e 74 6f 20 7a 4f 75 74 2e 20 20 54  ss into zOut.  T
16aa0 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
16ab0 69 73 0a 2a 2a 20 74 68 65 20 61 63 74 75 61 6c  is.** the actual
16ac0 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73   number of bytes
16ad0 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f   of randomness o
16ae0 62 74 61 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20  btained..** The 
16af0 78 53 6c 65 65 70 28 29 20 6d 65 74 68 6f 64 20  xSleep() method 
16b00 63 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 69  causes the calli
16b10 6e 67 20 74 68 72 65 61 64 20 74 6f 20 73 6c 65  ng thread to sle
16b20 65 70 20 66 6f 72 20 61 74 0a 2a 2a 20 6c 65 61  ep for at.** lea
16b30 73 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  st the number of
16b40 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 67 69   microseconds gi
16b50 76 65 6e 2e 20 20 5e 54 68 65 20 78 43 75 72 72  ven.  ^The xCurr
16b60 65 6e 74 54 69 6d 65 28 29 0a 2a 2a 20 6d 65 74  entTime().** met
16b70 68 6f 64 20 72 65 74 75 72 6e 73 20 61 20 4a 75  hod returns a Ju
16b80 6c 69 61 6e 20 44 61 79 20 4e 75 6d 62 65 72 20  lian Day Number 
16b90 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20  for the current 
16ba0 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73  date and time as
16bb0 0a 2a 2a 20 61 20 66 6c 6f 61 74 69 6e 67 20 70  .** a floating p
16bc0 6f 69 6e 74 20 76 61 6c 75 65 2e 0a 2a 2a 20 5e  oint value..** ^
16bd0 54 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65  The xCurrentTime
16be0 49 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 72  Int64() method r
16bf0 65 74 75 72 6e 73 2c 20 61 73 20 61 6e 20 69 6e  eturns, as an in
16c00 74 65 67 65 72 2c 20 74 68 65 20 4a 75 6c 69 61  teger, the Julia
16c10 6e 0a 2a 2a 20 44 61 79 20 4e 75 6d 62 65 72 20  n.** Day Number 
16c20 6d 75 6c 74 69 70 6c 69 65 64 20 62 79 20 38 36  multiplied by 86
16c30 34 30 30 30 30 30 20 28 74 68 65 20 6e 75 6d 62  400000 (the numb
16c40 65 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e  er of millisecon
16c50 64 73 20 69 6e 20 0a 2a 2a 20 61 20 32 34 2d 68  ds in .** a 24-h
16c60 6f 75 72 20 64 61 79 29 2e 20 20 0a 2a 2a 20 5e  our day).  .** ^
16c70 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20  SQLite will use 
16c80 74 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65  the xCurrentTime
16c90 49 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 74  Int64() method t
16ca0 6f 20 67 65 74 20 74 68 65 20 63 75 72 72 65 6e  o get the curren
16cb0 74 0a 2a 2a 20 64 61 74 65 20 61 6e 64 20 74 69  t.** date and ti
16cc0 6d 65 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f  me if that metho
16cd0 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28  d is available (
16ce0 69 66 20 69 56 65 72 73 69 6f 6e 20 69 73 20 32  if iVersion is 2
16cf0 20 6f 72 20 0a 2a 2a 20 67 72 65 61 74 65 72 20   or .** greater 
16d00 61 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e  and the function
16d10 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20   pointer is not 
16d20 4e 55 4c 4c 29 20 61 6e 64 20 77 69 6c 6c 20 66  NULL) and will f
16d30 61 6c 6c 20 62 61 63 6b 0a 2a 2a 20 74 6f 20 78  all back.** to x
16d40 43 75 72 72 65 6e 74 54 69 6d 65 28 29 20 69 66  CurrentTime() if
16d50 20 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74   xCurrentTimeInt
16d60 36 34 28 29 20 69 73 20 75 6e 61 76 61 69 6c 61  64() is unavaila
16d70 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ble..**.** ^The 
16d80 78 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 28 29  xSetSystemCall()
16d90 2c 20 78 47 65 74 53 79 73 74 65 6d 43 61 6c 6c  , xGetSystemCall
16da0 28 29 2c 20 61 6e 64 20 78 4e 65 73 74 53 79 73  (), and xNestSys
16db0 74 65 6d 43 61 6c 6c 28 29 20 69 6e 74 65 72 66  temCall() interf
16dc0 61 63 65 73 0a 2a 2a 20 61 72 65 20 6e 6f 74 20  aces.** are not 
16dd0 75 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69  used by the SQLi
16de0 74 65 20 63 6f 72 65 2e 20 20 54 68 65 73 65 20  te core.  These 
16df0 6f 70 74 69 6f 6e 61 6c 20 69 6e 74 65 72 66 61  optional interfa
16e00 63 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64  ces are provided
16e10 0a 2a 2a 20 62 79 20 73 6f 6d 65 20 56 46 53 65  .** by some VFSe
16e20 73 20 74 6f 20 66 61 63 69 6c 69 74 61 74 65 20  s to facilitate 
16e30 74 65 73 74 69 6e 67 20 6f 66 20 74 68 65 20 56  testing of the V
16e40 46 53 20 63 6f 64 65 2e 20 42 79 20 6f 76 65 72  FS code. By over
16e50 72 69 64 69 6e 67 20 0a 2a 2a 20 73 79 73 74 65  riding .** syste
16e60 6d 20 63 61 6c 6c 73 20 77 69 74 68 20 66 75 6e  m calls with fun
16e70 63 74 69 6f 6e 73 20 75 6e 64 65 72 20 69 74 73  ctions under its
16e80 20 63 6f 6e 74 72 6f 6c 2c 20 61 20 74 65 73 74   control, a test
16e90 20 70 72 6f 67 72 61 6d 20 63 61 6e 0a 2a 2a 20   program can.** 
16ea0 73 69 6d 75 6c 61 74 65 20 66 61 75 6c 74 73 20  simulate faults 
16eb0 61 6e 64 20 65 72 72 6f 72 20 63 6f 6e 64 69 74  and error condit
16ec0 69 6f 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20  ions that would 
16ed0 6f 74 68 65 72 77 69 73 65 20 62 65 20 64 69 66  otherwise be dif
16ee0 66 69 63 75 6c 74 0a 2a 2a 20 6f 72 20 69 6d 70  ficult.** or imp
16ef0 6f 73 73 69 62 6c 65 20 74 6f 20 69 6e 64 75 63  ossible to induc
16f00 65 2e 20 20 54 68 65 20 73 65 74 20 6f 66 20 73  e.  The set of s
16f10 79 73 74 65 6d 20 63 61 6c 6c 73 20 74 68 61 74  ystem calls that
16f20 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64   can be overridd
16f30 65 6e 0a 2a 2a 20 76 61 72 69 65 73 20 66 72 6f  en.** varies fro
16f40 6d 20 6f 6e 65 20 56 46 53 20 74 6f 20 61 6e 6f  m one VFS to ano
16f50 74 68 65 72 2c 20 61 6e 64 20 66 72 6f 6d 20 6f  ther, and from o
16f60 6e 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68  ne version of th
16f70 65 20 73 61 6d 65 20 56 46 53 20 74 6f 20 74 68  e same VFS to th
16f80 65 0a 2a 2a 20 6e 65 78 74 2e 20 20 41 70 70 6c  e.** next.  Appl
16f90 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20 75 73  ications that us
16fa0 65 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63  e these interfac
16fb0 65 73 20 6d 75 73 74 20 62 65 20 70 72 65 70 61  es must be prepa
16fc0 72 65 64 20 66 6f 72 20 61 6e 79 0a 2a 2a 20 6f  red for any.** o
16fd0 72 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 69  r all of these i
16fe0 6e 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20  nterfaces to be 
16ff0 4e 55 4c 4c 20 6f 72 20 66 6f 72 20 74 68 65 69  NULL or for thei
17000 72 20 62 65 68 61 76 69 6f 72 20 74 6f 20 63 68  r behavior to ch
17010 61 6e 67 65 0a 2a 2a 20 66 72 6f 6d 20 6f 6e 65  ange.** from one
17020 20 72 65 6c 65 61 73 65 20 74 6f 20 74 68 65 20   release to the 
17030 6e 65 78 74 2e 20 20 41 70 70 6c 69 63 61 74 69  next.  Applicati
17040 6f 6e 73 20 6d 75 73 74 20 6e 6f 74 20 61 74 74  ons must not att
17050 65 6d 70 74 20 74 6f 20 61 63 63 65 73 73 0a 2a  empt to access.*
17060 2a 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6d  * any of these m
17070 65 74 68 6f 64 73 20 69 66 20 74 68 65 20 69 56  ethods if the iV
17080 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 56 46  ersion of the VF
17090 53 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 33  S is less than 3
170a0 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  ..*/.typedef str
170b0 75 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73 20  uct sqlite3_vfs 
170c0 73 71 6c 69 74 65 33 5f 76 66 73 3b 0a 74 79 70  sqlite3_vfs;.typ
170d0 65 64 65 66 20 76 6f 69 64 20 28 2a 73 71 6c 69  edef void (*sqli
170e0 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29  te3_syscall_ptr)
170f0 28 76 6f 69 64 29 3b 0a 73 74 72 75 63 74 20 73  (void);.struct s
17100 71 6c 69 74 65 33 5f 76 66 73 20 7b 0a 20 20 69  qlite3_vfs {.  i
17110 6e 74 20 69 56 65 72 73 69 6f 6e 3b 20 20 20 20  nt iVersion;    
17120 20 20 20 20 20 20 20 20 2f 2a 20 53 74 72 75 63          /* Struc
17130 74 75 72 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d  ture version num
17140 62 65 72 20 28 63 75 72 72 65 6e 74 6c 79 20 33  ber (currently 3
17150 29 20 2a 2f 0a 20 20 69 6e 74 20 73 7a 4f 73 46  ) */.  int szOsF
17160 69 6c 65 3b 20 20 20 20 20 20 20 20 20 20 20 20  ile;            
17170 2f 2a 20 53 69 7a 65 20 6f 66 20 73 75 62 63 6c  /* Size of subcl
17180 61 73 73 65 64 20 73 71 6c 69 74 65 33 5f 66 69  assed sqlite3_fi
17190 6c 65 20 2a 2f 0a 20 20 69 6e 74 20 6d 78 50 61  le */.  int mxPa
171a0 74 68 6e 61 6d 65 3b 20 20 20 20 20 20 20 20 20  thname;         
171b0 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 66 69 6c 65   /* Maximum file
171c0 20 70 61 74 68 6e 61 6d 65 20 6c 65 6e 67 74 68   pathname length
171d0 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 76 66   */.  sqlite3_vf
171e0 73 20 2a 70 4e 65 78 74 3b 20 20 20 20 20 20 2f  s *pNext;      /
171f0 2a 20 4e 65 78 74 20 72 65 67 69 73 74 65 72 65  * Next registere
17200 64 20 56 46 53 20 2a 2f 0a 20 20 63 6f 6e 73 74  d VFS */.  const
17210 20 63 68 61 72 20 2a 7a 4e 61 6d 65 3b 20 20 20   char *zName;   
17220 20 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74      /* Name of t
17230 68 69 73 20 76 69 72 74 75 61 6c 20 66 69 6c 65  his virtual file
17240 20 73 79 73 74 65 6d 20 2a 2f 0a 20 20 76 6f 69   system */.  voi
17250 64 20 2a 70 41 70 70 44 61 74 61 3b 20 20 20 20  d *pAppData;    
17260 20 20 20 20 20 20 2f 2a 20 50 6f 69 6e 74 65 72        /* Pointer
17270 20 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d   to application-
17280 73 70 65 63 69 66 69 63 20 64 61 74 61 20 2a 2f  specific data */
17290 0a 20 20 69 6e 74 20 28 2a 78 4f 70 65 6e 29 28  .  int (*xOpen)(
172a0 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f  sqlite3_vfs*, co
172b0 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c  nst char *zName,
172c0 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 0a   sqlite3_file*,.
172d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
172e0 6e 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70  nt flags, int *p
172f0 4f 75 74 46 6c 61 67 73 29 3b 0a 20 20 69 6e 74  OutFlags);.  int
17300 20 28 2a 78 44 65 6c 65 74 65 29 28 73 71 6c 69   (*xDelete)(sqli
17310 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
17320 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74  char *zName, int
17330 20 73 79 6e 63 44 69 72 29 3b 0a 20 20 69 6e 74   syncDir);.  int
17340 20 28 2a 78 41 63 63 65 73 73 29 28 73 71 6c 69   (*xAccess)(sqli
17350 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
17360 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74  char *zName, int
17370 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70 52 65   flags, int *pRe
17380 73 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78  sOut);.  int (*x
17390 46 75 6c 6c 50 61 74 68 6e 61 6d 65 29 28 73 71  FullPathname)(sq
173a0 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73  lite3_vfs*, cons
173b0 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69  t char *zName, i
173c0 6e 74 20 6e 4f 75 74 2c 20 63 68 61 72 20 2a 7a  nt nOut, char *z
173d0 4f 75 74 29 3b 0a 20 20 76 6f 69 64 20 2a 28 2a  Out);.  void *(*
173e0 78 44 6c 4f 70 65 6e 29 28 73 71 6c 69 74 65 33  xDlOpen)(sqlite3
173f0 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61  _vfs*, const cha
17400 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 29 3b 0a 20  r *zFilename);. 
17410 20 76 6f 69 64 20 28 2a 78 44 6c 45 72 72 6f 72   void (*xDlError
17420 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
17430 69 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72 20  int nByte, char 
17440 2a 7a 45 72 72 4d 73 67 29 3b 0a 20 20 76 6f 69  *zErrMsg);.  voi
17450 64 20 28 2a 28 2a 78 44 6c 53 79 6d 29 28 73 71  d (*(*xDlSym)(sq
17460 6c 69 74 65 33 5f 76 66 73 2a 2c 76 6f 69 64 2a  lite3_vfs*,void*
17470 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53  , const char *zS
17480 79 6d 62 6f 6c 29 29 28 76 6f 69 64 29 3b 0a 20  ymbol))(void);. 
17490 20 76 6f 69 64 20 28 2a 78 44 6c 43 6c 6f 73 65   void (*xDlClose
174a0 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
174b0 76 6f 69 64 2a 29 3b 0a 20 20 69 6e 74 20 28 2a  void*);.  int (*
174c0 78 52 61 6e 64 6f 6d 6e 65 73 73 29 28 73 71 6c  xRandomness)(sql
174d0 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6e  ite3_vfs*, int n
174e0 42 79 74 65 2c 20 63 68 61 72 20 2a 7a 4f 75 74  Byte, char *zOut
174f0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 53 6c 65 65  );.  int (*xSlee
17500 70 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c  p)(sqlite3_vfs*,
17510 20 69 6e 74 20 6d 69 63 72 6f 73 65 63 6f 6e 64   int microsecond
17520 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43 75 72  s);.  int (*xCur
17530 72 65 6e 74 54 69 6d 65 29 28 73 71 6c 69 74 65  rentTime)(sqlite
17540 33 5f 76 66 73 2a 2c 20 64 6f 75 62 6c 65 2a 29  3_vfs*, double*)
17550 3b 0a 20 20 69 6e 74 20 28 2a 78 47 65 74 4c 61  ;.  int (*xGetLa
17560 73 74 45 72 72 6f 72 29 28 73 71 6c 69 74 65 33  stError)(sqlite3
17570 5f 76 66 73 2a 2c 20 69 6e 74 2c 20 63 68 61 72  _vfs*, int, char
17580 20 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54   *);.  /*.  ** T
17590 68 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65  he methods above
175a0 20 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20   are in version 
175b0 31 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f  1 of the sqlite_
175c0 76 66 73 20 6f 62 6a 65 63 74 0a 20 20 2a 2a 20  vfs object.  ** 
175d0 64 65 66 69 6e 69 74 69 6f 6e 2e 20 20 54 68 6f  definition.  Tho
175e0 73 65 20 74 68 61 74 20 66 6f 6c 6c 6f 77 20 61  se that follow a
175f0 72 65 20 61 64 64 65 64 20 69 6e 20 76 65 72 73  re added in vers
17600 69 6f 6e 20 32 20 6f 72 20 6c 61 74 65 72 0a 20  ion 2 or later. 
17610 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 43 75 72   */.  int (*xCur
17620 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 29 28 73  rentTimeInt64)(s
17630 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 73 71 6c  qlite3_vfs*, sql
17640 69 74 65 33 5f 69 6e 74 36 34 2a 29 3b 0a 20 20  ite3_int64*);.  
17650 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68  /*.  ** The meth
17660 6f 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e  ods above are in
17670 20 76 65 72 73 69 6f 6e 73 20 31 20 61 6e 64 20   versions 1 and 
17680 32 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f  2 of the sqlite_
17690 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a  vfs object..  **
176a0 20 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65   Those below are
176b0 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 33 20 61   for version 3 a
176c0 6e 64 20 67 72 65 61 74 65 72 2e 0a 20 20 2a 2f  nd greater..  */
176d0 0a 20 20 69 6e 74 20 28 2a 78 53 65 74 53 79 73  .  int (*xSetSys
176e0 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33  temCall)(sqlite3
176f0 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61  _vfs*, const cha
17700 72 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65  r *zName, sqlite
17710 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29 3b 0a  3_syscall_ptr);.
17720 20 20 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c    sqlite3_syscal
17730 6c 5f 70 74 72 20 28 2a 78 47 65 74 53 79 73 74  l_ptr (*xGetSyst
17740 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f  emCall)(sqlite3_
17750 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
17760 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 63 6f 6e 73   *zName);.  cons
17770 74 20 63 68 61 72 20 2a 28 2a 78 4e 65 78 74 53  t char *(*xNextS
17780 79 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74  ystemCall)(sqlit
17790 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
177a0 68 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 2f  har *zName);.  /
177b0 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f  *.  ** The metho
177c0 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20  ds above are in 
177d0 76 65 72 73 69 6f 6e 73 20 31 20 74 68 72 6f 75  versions 1 throu
177e0 67 68 20 33 20 6f 66 20 74 68 65 20 73 71 6c 69  gh 3 of the sqli
177f0 74 65 5f 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20  te_vfs object.. 
17800 20 2a 2a 20 4e 65 77 20 66 69 65 6c 64 73 20 6d   ** New fields m
17810 61 79 20 62 65 20 61 70 70 65 6e 64 65 64 20 69  ay be appended i
17820 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e  n future version
17830 73 2e 20 20 54 68 65 20 69 56 65 72 73 69 6f 6e  s.  The iVersion
17840 0a 20 20 2a 2a 20 76 61 6c 75 65 20 77 69 6c 6c  .  ** value will
17850 20 69 6e 63 72 65 6d 65 6e 74 20 77 68 65 6e 65   increment whene
17860 76 65 72 20 74 68 69 73 20 68 61 70 70 65 6e 73  ver this happens
17870 2e 20 0a 20 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a  . .  */.};../*.*
17880 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61 67  * CAPI3REF: Flag
17890 73 20 66 6f 72 20 74 68 65 20 78 41 63 63 65 73  s for the xAcces
178a0 73 20 56 46 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a  s VFS method.**.
178b0 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 67 65 72  ** These integer
178c0 20 63 6f 6e 73 74 61 6e 74 73 20 63 61 6e 20 62   constants can b
178d0 65 20 75 73 65 64 20 61 73 20 74 68 65 20 74 68  e used as the th
178e0 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ird parameter to
178f0 0a 2a 2a 20 74 68 65 20 78 41 63 63 65 73 73 20  .** the xAccess 
17900 6d 65 74 68 6f 64 20 6f 66 20 61 6e 20 5b 73 71  method of an [sq
17910 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
17920 74 2e 20 20 54 68 65 79 20 64 65 74 65 72 6d 69  t.  They determi
17930 6e 65 0a 2a 2a 20 77 68 61 74 20 6b 69 6e 64 20  ne.** what kind 
17940 6f 66 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74  of permissions t
17950 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f  he xAccess metho
17960 64 20 69 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72  d is looking for
17970 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45  ..** With SQLITE
17980 5f 41 43 43 45 53 53 5f 45 58 49 53 54 53 2c 20  _ACCESS_EXISTS, 
17990 74 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68  the xAccess meth
179a0 6f 64 0a 2a 2a 20 73 69 6d 70 6c 79 20 63 68 65  od.** simply che
179b0 63 6b 73 20 77 68 65 74 68 65 72 20 74 68 65 20  cks whether the 
179c0 66 69 6c 65 20 65 78 69 73 74 73 2e 0a 2a 2a 20  file exists..** 
179d0 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43 45  With SQLITE_ACCE
179e0 53 53 5f 52 45 41 44 57 52 49 54 45 2c 20 74 68  SS_READWRITE, th
179f0 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
17a00 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68  .** checks wheth
17a10 65 72 20 74 68 65 20 6e 61 6d 65 64 20 64 69 72  er the named dir
17a20 65 63 74 6f 72 79 20 69 73 20 62 6f 74 68 20 72  ectory is both r
17a30 65 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74  eadable and writ
17a40 61 62 6c 65 0a 2a 2a 20 28 69 6e 20 6f 74 68 65  able.** (in othe
17a50 72 20 77 6f 72 64 73 2c 20 69 66 20 66 69 6c 65  r words, if file
17a60 73 20 63 61 6e 20 62 65 20 61 64 64 65 64 2c 20  s can be added, 
17a70 72 65 6d 6f 76 65 64 2c 20 61 6e 64 20 72 65 6e  removed, and ren
17a80 61 6d 65 64 20 77 69 74 68 69 6e 0a 2a 2a 20 74  amed within.** t
17a90 68 65 20 64 69 72 65 63 74 6f 72 79 29 2e 0a 2a  he directory)..*
17aa0 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43  * The SQLITE_ACC
17ab0 45 53 53 5f 52 45 41 44 57 52 49 54 45 20 63 6f  ESS_READWRITE co
17ac0 6e 73 74 61 6e 74 20 69 73 20 63 75 72 72 65 6e  nstant is curren
17ad0 74 6c 79 20 75 73 65 64 20 6f 6e 6c 79 20 62 79  tly used only by
17ae0 20 74 68 65 0a 2a 2a 20 5b 74 65 6d 70 5f 73 74   the.** [temp_st
17af0 6f 72 65 5f 64 69 72 65 63 74 6f 72 79 20 70 72  ore_directory pr
17b00 61 67 6d 61 5d 2c 20 74 68 6f 75 67 68 20 74 68  agma], though th
17b10 69 73 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20  is could change 
17b20 69 6e 20 61 20 66 75 74 75 72 65 0a 2a 2a 20 72  in a future.** r
17b30 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65  elease of SQLite
17b40 2e 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45  ..** With SQLITE
17b50 5f 41 43 43 45 53 53 5f 52 45 41 44 2c 20 74 68  _ACCESS_READ, th
17b60 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
17b70 0a 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68  .** checks wheth
17b80 65 72 20 74 68 65 20 66 69 6c 65 20 69 73 20 72  er the file is r
17b90 65 61 64 61 62 6c 65 2e 20 20 54 68 65 20 53 51  eadable.  The SQ
17ba0 4c 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44  LITE_ACCESS_READ
17bb0 20 63 6f 6e 73 74 61 6e 74 20 69 73 0a 2a 2a 20   constant is.** 
17bc0 63 75 72 72 65 6e 74 6c 79 20 75 6e 75 73 65 64  currently unused
17bd0 2c 20 74 68 6f 75 67 68 20 69 74 20 6d 69 67 68  , though it migh
17be0 74 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 66  t be used in a f
17bf0 75 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66  uture release of
17c00 0a 2a 2a 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 23  .** SQLite..*/.#
17c10 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43  define SQLITE_AC
17c20 43 45 53 53 5f 45 58 49 53 54 53 20 20 20 20 30  CESS_EXISTS    0
17c30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
17c40 41 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45  ACCESS_READWRITE
17c50 20 31 20 20 20 2f 2a 20 55 73 65 64 20 62 79 20   1   /* Used by 
17c60 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
17c70 65 5f 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a 23  e_directory */.#
17c80 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43  define SQLITE_AC
17c90 43 45 53 53 5f 52 45 41 44 20 20 20 20 20 20 32  CESS_READ      2
17ca0 20 20 20 2f 2a 20 55 6e 75 73 65 64 20 2a 2f 0a     /* Unused */.
17cb0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
17cc0 20 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20 78   Flags for the x
17cd0 53 68 6d 4c 6f 63 6b 20 56 46 53 20 6d 65 74 68  ShmLock VFS meth
17ce0 6f 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69  od.**.** These i
17cf0 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73  nteger constants
17d00 20 64 65 66 69 6e 65 20 74 68 65 20 76 61 72 69   define the vari
17d10 6f 75 73 20 6c 6f 63 6b 69 6e 67 20 6f 70 65 72  ous locking oper
17d20 61 74 69 6f 6e 73 0a 2a 2a 20 61 6c 6c 6f 77 65  ations.** allowe
17d30 64 20 62 79 20 74 68 65 20 78 53 68 6d 4c 6f 63  d by the xShmLoc
17d40 6b 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c  k method of [sql
17d50 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d  ite3_io_methods]
17d60 2e 20 20 54 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77  .  The.** follow
17d70 69 6e 67 20 61 72 65 20 74 68 65 20 6f 6e 6c 79  ing are the only
17d80 20 6c 65 67 61 6c 20 63 6f 6d 62 69 6e 61 74 69   legal combinati
17d90 6f 6e 73 20 6f 66 20 66 6c 61 67 73 20 74 6f 20  ons of flags to 
17da0 74 68 65 0a 2a 2a 20 78 53 68 6d 4c 6f 63 6b 20  the.** xShmLock 
17db0 6d 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75  method:.**.** <u
17dc0 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49  l>.** <li>  SQLI
17dd0 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51  TE_SHM_LOCK | SQ
17de0 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a  LITE_SHM_SHARED.
17df0 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f  ** <li>  SQLITE_
17e00 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c 49 54  SHM_LOCK | SQLIT
17e10 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 0a  E_SHM_EXCLUSIVE.
17e20 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f  ** <li>  SQLITE_
17e30 53 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c  SHM_UNLOCK | SQL
17e40 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a 2a  ITE_SHM_SHARED.*
17e50 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53  * <li>  SQLITE_S
17e60 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49  HM_UNLOCK | SQLI
17e70 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45  TE_SHM_EXCLUSIVE
17e80 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
17e90 57 68 65 6e 20 75 6e 6c 6f 63 6b 69 6e 67 2c 20  When unlocking, 
17ea0 74 68 65 20 73 61 6d 65 20 53 48 41 52 45 44 20  the same SHARED 
17eb0 6f 72 20 45 58 43 4c 55 53 49 56 45 20 66 6c 61  or EXCLUSIVE fla
17ec0 67 20 6d 75 73 74 20 62 65 20 73 75 70 70 6c 69  g must be suppli
17ed0 65 64 20 61 73 0a 2a 2a 20 77 61 73 20 67 69 76  ed as.** was giv
17ee0 65 6e 20 6f 6e 20 74 68 65 20 63 6f 72 72 65 73  en on the corres
17ef0 70 6f 6e 64 69 6e 67 20 6c 6f 63 6b 2e 20 20 0a  ponding lock.  .
17f00 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 68 6d 4c 6f  **.** The xShmLo
17f10 63 6b 20 6d 65 74 68 6f 64 20 63 61 6e 20 74 72  ck method can tr
17f20 61 6e 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e  ansition between
17f30 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20 53 48   unlocked and SH
17f40 41 52 45 44 20 6f 72 0a 2a 2a 20 62 65 74 77 65  ARED or.** betwe
17f50 65 6e 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20  en unlocked and 
17f60 45 58 43 4c 55 53 49 56 45 2e 20 20 49 74 20 63  EXCLUSIVE.  It c
17f70 61 6e 6e 6f 74 20 74 72 61 6e 73 69 74 69 6f 6e  annot transition
17f80 20 62 65 74 77 65 65 6e 20 53 48 41 52 45 44 0a   between SHARED.
17f90 2a 2a 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45  ** and EXCLUSIVE
17fa0 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ..*/.#define SQL
17fb0 49 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 20  ITE_SHM_UNLOCK  
17fc0 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53       1.#define S
17fd0 51 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 20  QLITE_SHM_LOCK  
17fe0 20 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65         2.#define
17ff0 20 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52   SQLITE_SHM_SHAR
18000 45 44 20 20 20 20 20 20 20 34 0a 23 64 65 66 69  ED       4.#defi
18010 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58  ne SQLITE_SHM_EX
18020 43 4c 55 53 49 56 45 20 20 20 20 38 0a 0a 2f 2a  CLUSIVE    8../*
18030 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 61  .** CAPI3REF: Ma
18040 78 69 6d 75 6d 20 78 53 68 6d 4c 6f 63 6b 20 69  ximum xShmLock i
18050 6e 64 65 78 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78  ndex.**.** The x
18060 53 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f  ShmLock method o
18070 6e 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  n [sqlite3_io_me
18080 74 68 6f 64 73 5d 20 6d 61 79 20 75 73 65 20 76  thods] may use v
18090 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65 65 6e  alues.** between
180a0 20 30 20 61 6e 64 20 74 68 69 73 20 75 70 70 65   0 and this uppe
180b0 72 20 62 6f 75 6e 64 20 61 73 20 69 74 73 20 22  r bound as its "
180c0 6f 66 66 73 65 74 22 20 61 72 67 75 6d 65 6e 74  offset" argument
180d0 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20  ..** The SQLite 
180e0 63 6f 72 65 20 77 69 6c 6c 20 6e 65 76 65 72 20  core will never 
180f0 61 74 74 65 6d 70 74 20 74 6f 20 61 63 71 75 69  attempt to acqui
18100 72 65 20 6f 72 20 72 65 6c 65 61 73 65 20 61 0a  re or release a.
18110 2a 2a 20 6c 6f 63 6b 20 6f 75 74 73 69 64 65 20  ** lock outside 
18120 6f 66 20 74 68 69 73 20 72 61 6e 67 65 0a 2a 2f  of this range.*/
18130 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
18140 53 48 4d 5f 4e 4c 4f 43 4b 20 20 20 20 20 20 20  SHM_NLOCK       
18150 20 38 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   8.../*.** CAPI3
18160 52 45 46 3a 20 49 6e 69 74 69 61 6c 69 7a 65 20  REF: Initialize 
18170 54 68 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61  The SQLite Libra
18180 72 79 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  ry.**.** ^The sq
18190 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
181a0 28 29 20 72 6f 75 74 69 6e 65 20 69 6e 69 74 69  () routine initi
181b0 61 6c 69 7a 65 73 20 74 68 65 0a 2a 2a 20 53 51  alizes the.** SQ
181c0 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 5e  Lite library.  ^
181d0 54 68 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74  The sqlite3_shut
181e0 64 6f 77 6e 28 29 20 72 6f 75 74 69 6e 65 0a 2a  down() routine.*
181f0 2a 20 64 65 61 6c 6c 6f 63 61 74 65 73 20 61 6e  * deallocates an
18200 79 20 72 65 73 6f 75 72 63 65 73 20 74 68 61 74  y resources that
18210 20 77 65 72 65 20 61 6c 6c 6f 63 61 74 65 64 20   were allocated 
18220 62 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  by sqlite3_initi
18230 61 6c 69 7a 65 28 29 2e 0a 2a 2a 20 54 68 65 73  alize()..** Thes
18240 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64  e routines are d
18250 65 73 69 67 6e 65 64 20 74 6f 20 61 69 64 20 69  esigned to aid i
18260 6e 20 70 72 6f 63 65 73 73 20 69 6e 69 74 69 61  n process initia
18270 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 0a 2a 2a 20  lization and.** 
18280 73 68 75 74 64 6f 77 6e 20 6f 6e 20 65 6d 62 65  shutdown on embe
18290 64 64 65 64 20 73 79 73 74 65 6d 73 2e 20 20 57  dded systems.  W
182a0 6f 72 6b 73 74 61 74 69 6f 6e 20 61 70 70 6c 69  orkstation appli
182b0 63 61 74 69 6f 6e 73 20 75 73 69 6e 67 0a 2a 2a  cations using.**
182c0 20 53 51 4c 69 74 65 20 6e 6f 72 6d 61 6c 6c 79   SQLite normally
182d0 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20   do not need to 
182e0 69 6e 76 6f 6b 65 20 65 69 74 68 65 72 20 6f 66  invoke either of
182f0 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e   these routines.
18300 0a 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f  .**.** A call to
18310 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
18320 69 7a 65 28 29 20 69 73 20 61 6e 20 22 65 66 66  ize() is an "eff
18330 65 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66 20  ective" call if 
18340 69 74 20 69 73 0a 2a 2a 20 74 68 65 20 66 69 72  it is.** the fir
18350 73 74 20 74 69 6d 65 20 73 71 6c 69 74 65 33 5f  st time sqlite3_
18360 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20  initialize() is 
18370 69 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67 20 74  invoked during t
18380 68 65 20 6c 69 66 65 74 69 6d 65 20 6f 66 0a 2a  he lifetime of.*
18390 2a 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20 6f  * the process, o
183a0 72 20 69 66 20 69 74 20 69 73 20 74 68 65 20 66  r if it is the f
183b0 69 72 73 74 20 74 69 6d 65 20 73 71 6c 69 74 65  irst time sqlite
183c0 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69  3_initialize() i
183d0 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 66 6f 6c  s invoked.** fol
183e0 6c 6f 77 69 6e 67 20 61 20 63 61 6c 6c 20 74 6f  lowing a call to
183f0 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
18400 6e 28 29 2e 20 20 5e 28 4f 6e 6c 79 20 61 6e 20  n().  ^(Only an 
18410 65 66 66 65 63 74 69 76 65 20 63 61 6c 6c 0a 2a  effective call.*
18420 2a 20 6f 66 20 73 71 6c 69 74 65 33 5f 69 6e 69  * of sqlite3_ini
18430 74 69 61 6c 69 7a 65 28 29 20 64 6f 65 73 20 61  tialize() does a
18440 6e 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  ny initializatio
18450 6e 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 63 61  n.  All other ca
18460 6c 6c 73 0a 2a 2a 20 61 72 65 20 68 61 72 6d 6c  lls.** are harml
18470 65 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a  ess no-ops.)^.**
18480 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f 20 73 71  .** A call to sq
18490 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
184a0 20 69 73 20 61 6e 20 22 65 66 66 65 63 74 69 76   is an "effectiv
184b0 65 22 20 63 61 6c 6c 20 69 66 20 69 74 20 69 73  e" call if it is
184c0 20 74 68 65 20 66 69 72 73 74 0a 2a 2a 20 63 61   the first.** ca
184d0 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68  ll to sqlite3_sh
184e0 75 74 64 6f 77 6e 28 29 20 73 69 6e 63 65 20 74  utdown() since t
184f0 68 65 20 6c 61 73 74 20 73 71 6c 69 74 65 33 5f  he last sqlite3_
18500 69 6e 69 74 69 61 6c 69 7a 65 28 29 2e 20 20 5e  initialize().  ^
18510 28 4f 6e 6c 79 0a 2a 2a 20 61 6e 20 65 66 66 65  (Only.** an effe
18520 63 74 69 76 65 20 63 61 6c 6c 20 74 6f 20 73 71  ctive call to sq
18530 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
18540 20 64 6f 65 73 20 61 6e 79 20 64 65 69 6e 69 74   does any deinit
18550 69 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 20 41  ialization..** A
18560 6c 6c 20 6f 74 68 65 72 20 76 61 6c 69 64 20 63  ll other valid c
18570 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f  alls to sqlite3_
18580 73 68 75 74 64 6f 77 6e 28 29 20 61 72 65 20 68  shutdown() are h
18590 61 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73 2e 29  armless no-ops.)
185a0 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ^.**.** The sqli
185b0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
185c0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 68   interface is th
185d0 72 65 61 64 73 61 66 65 2c 20 62 75 74 20 73 71  readsafe, but sq
185e0 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
185f0 0a 2a 2a 20 69 73 20 6e 6f 74 2e 20 20 54 68 65  .** is not.  The
18600 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77   sqlite3_shutdow
18610 6e 28 29 20 69 6e 74 65 72 66 61 63 65 20 6d 75  n() interface mu
18620 73 74 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65  st only be calle
18630 64 20 66 72 6f 6d 20 61 0a 2a 2a 20 73 69 6e 67  d from a.** sing
18640 6c 65 20 74 68 72 65 61 64 2e 20 20 41 6c 6c 20  le thread.  All 
18650 6f 70 65 6e 20 5b 64 61 74 61 62 61 73 65 20 63  open [database c
18660 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 6d 75 73 74  onnections] must
18670 20 62 65 20 63 6c 6f 73 65 64 20 61 6e 64 20 61   be closed and a
18680 6c 6c 0a 2a 2a 20 6f 74 68 65 72 20 53 51 4c 69  ll.** other SQLi
18690 74 65 20 72 65 73 6f 75 72 63 65 73 20 6d 75 73  te resources mus
186a0 74 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64  t be deallocated
186b0 20 70 72 69 6f 72 20 74 6f 20 69 6e 76 6f 6b 69   prior to invoki
186c0 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 68  ng.** sqlite3_sh
186d0 75 74 64 6f 77 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20  utdown()..**.** 
186e0 41 6d 6f 6e 67 20 6f 74 68 65 72 20 74 68 69 6e  Among other thin
186f0 67 73 2c 20 5e 73 71 6c 69 74 65 33 5f 69 6e 69  gs, ^sqlite3_ini
18700 74 69 61 6c 69 7a 65 28 29 20 77 69 6c 6c 20 69  tialize() will i
18710 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33  nvoke.** sqlite3
18720 5f 6f 73 5f 69 6e 69 74 28 29 2e 20 20 53 69 6d  _os_init().  Sim
18730 69 6c 61 72 6c 79 2c 20 5e 73 71 6c 69 74 65 33  ilarly, ^sqlite3
18740 5f 73 68 75 74 64 6f 77 6e 28 29 0a 2a 2a 20 77  _shutdown().** w
18750 69 6c 6c 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74  ill invoke sqlit
18760 65 33 5f 6f 73 5f 65 6e 64 28 29 2e 0a 2a 2a 0a  e3_os_end()..**.
18770 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
18780 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 72 6f 75  initialize() rou
18790 74 69 6e 65 20 72 65 74 75 72 6e 73 20 5b 53 51  tine returns [SQ
187a0 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63  LITE_OK] on succ
187b0 65 73 73 2e 0a 2a 2a 20 5e 49 66 20 66 6f 72 20  ess..** ^If for 
187c0 73 6f 6d 65 20 72 65 61 73 6f 6e 2c 20 73 71 6c  some reason, sql
187d0 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
187e0 29 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 69  ) is unable to i
187f0 6e 69 74 69 61 6c 69 7a 65 0a 2a 2a 20 74 68 65  nitialize.** the
18800 20 6c 69 62 72 61 72 79 20 28 70 65 72 68 61 70   library (perhap
18810 73 20 69 74 20 69 73 20 75 6e 61 62 6c 65 20 74  s it is unable t
18820 6f 20 61 6c 6c 6f 63 61 74 65 20 61 20 6e 65 65  o allocate a nee
18830 64 65 64 20 72 65 73 6f 75 72 63 65 20 73 75 63  ded resource suc
18840 68 0a 2a 2a 20 61 73 20 61 20 6d 75 74 65 78 29  h.** as a mutex)
18850 20 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 5b   it returns an [
18860 65 72 72 6f 72 20 63 6f 64 65 5d 20 6f 74 68 65  error code] othe
18870 72 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f  r than [SQLITE_O
18880 4b 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  K]..**.** ^The s
18890 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
188a0 65 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 63  e() routine is c
188b0 61 6c 6c 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  alled internally
188c0 20 62 79 20 6d 61 6e 79 20 6f 74 68 65 72 0a 2a   by many other.*
188d0 2a 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61  * SQLite interfa
188e0 63 65 73 20 73 6f 20 74 68 61 74 20 61 6e 20 61  ces so that an a
188f0 70 70 6c 69 63 61 74 69 6f 6e 20 75 73 75 61 6c  pplication usual
18900 6c 79 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64  ly does not need
18910 20 74 6f 0a 2a 2a 20 69 6e 76 6f 6b 65 20 73 71   to.** invoke sq
18920 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18930 28 29 20 64 69 72 65 63 74 6c 79 2e 20 20 46 6f  () directly.  Fo
18940 72 20 65 78 61 6d 70 6c 65 2c 20 5b 73 71 6c 69  r example, [sqli
18950 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20 63  te3_open()].** c
18960 61 6c 6c 73 20 73 71 6c 69 74 65 33 5f 69 6e 69  alls sqlite3_ini
18970 74 69 61 6c 69 7a 65 28 29 20 73 6f 20 74 68 65  tialize() so the
18980 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20   SQLite library 
18990 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69  will be automati
189a0 63 61 6c 6c 79 0a 2a 2a 20 69 6e 69 74 69 61 6c  cally.** initial
189b0 69 7a 65 64 20 77 68 65 6e 20 5b 73 71 6c 69 74  ized when [sqlit
189c0 65 33 5f 6f 70 65 6e 28 29 5d 20 69 73 20 63 61  e3_open()] is ca
189d0 6c 6c 65 64 20 69 66 20 69 74 20 68 61 73 20 6e  lled if it has n
189e0 6f 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65  ot be initialize
189f0 64 0a 2a 2a 20 61 6c 72 65 61 64 79 2e 20 20 5e  d.** already.  ^
18a00 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69  However, if SQLi
18a10 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
18a20 69 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  ith the [SQLITE_
18a30 4f 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d 0a 2a  OMIT_AUTOINIT].*
18a40 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  * compile-time o
18a50 70 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20  ption, then the 
18a60 61 75 74 6f 6d 61 74 69 63 20 63 61 6c 6c 73 20  automatic calls 
18a70 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  to sqlite3_initi
18a80 61 6c 69 7a 65 28 29 0a 2a 2a 20 61 72 65 20 6f  alize().** are o
18a90 6d 69 74 74 65 64 20 61 6e 64 20 74 68 65 20 61  mitted and the a
18aa0 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20  pplication must 
18ab0 63 61 6c 6c 20 73 71 6c 69 74 65 33 5f 69 6e 69  call sqlite3_ini
18ac0 74 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63 74  tialize() direct
18ad0 6c 79 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 75  ly.** prior to u
18ae0 73 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 53  sing any other S
18af0 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e  QLite interface.
18b00 20 20 46 6f 72 20 6d 61 78 69 6d 75 6d 20 70 6f    For maximum po
18b10 72 74 61 62 69 6c 69 74 79 2c 0a 2a 2a 20 69 74  rtability,.** it
18b20 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
18b30 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  that application
18b40 73 20 61 6c 77 61 79 73 20 69 6e 76 6f 6b 65 20  s always invoke 
18b50 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18b60 7a 65 28 29 0a 2a 2a 20 64 69 72 65 63 74 6c 79  ze().** directly
18b70 20 70 72 69 6f 72 20 74 6f 20 75 73 69 6e 67 20   prior to using 
18b80 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65  any other SQLite
18b90 20 69 6e 74 65 72 66 61 63 65 2e 20 20 46 75 74   interface.  Fut
18ba0 75 72 65 20 72 65 6c 65 61 73 65 73 0a 2a 2a 20  ure releases.** 
18bb0 6f 66 20 53 51 4c 69 74 65 20 6d 61 79 20 72 65  of SQLite may re
18bc0 71 75 69 72 65 20 74 68 69 73 2e 20 20 49 6e 20  quire this.  In 
18bd0 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65  other words, the
18be0 20 62 65 68 61 76 69 6f 72 20 65 78 68 69 62 69   behavior exhibi
18bf0 74 65 64 0a 2a 2a 20 77 68 65 6e 20 53 51 4c 69  ted.** when SQLi
18c00 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
18c10 69 74 68 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  ith [SQLITE_OMIT
18c20 5f 41 55 54 4f 49 4e 49 54 5d 20 6d 69 67 68 74  _AUTOINIT] might
18c30 20 62 65 63 6f 6d 65 20 74 68 65 0a 2a 2a 20 64   become the.** d
18c40 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
18c50 69 6e 20 73 6f 6d 65 20 66 75 74 75 72 65 20 72  in some future r
18c60 65 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65  elease of SQLite
18c70 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
18c80 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 72 6f  te3_os_init() ro
18c90 75 74 69 6e 65 20 64 6f 65 73 20 6f 70 65 72 61  utine does opera
18ca0 74 69 6e 67 2d 73 79 73 74 65 6d 20 73 70 65 63  ting-system spec
18cb0 69 66 69 63 0a 2a 2a 20 69 6e 69 74 69 61 6c 69  ific.** initiali
18cc0 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51  zation of the SQ
18cd0 4c 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 54  Lite library.  T
18ce0 68 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  he sqlite3_os_en
18cf0 64 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 75  d().** routine u
18d00 6e 64 6f 65 73 20 74 68 65 20 65 66 66 65 63 74  ndoes the effect
18d10 20 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69   of sqlite3_os_i
18d20 6e 69 74 28 29 2e 20 20 54 79 70 69 63 61 6c 20  nit().  Typical 
18d30 74 61 73 6b 73 0a 2a 2a 20 70 65 72 66 6f 72 6d  tasks.** perform
18d40 65 64 20 62 79 20 74 68 65 73 65 20 72 6f 75 74  ed by these rout
18d50 69 6e 65 73 20 69 6e 63 6c 75 64 65 20 61 6c 6c  ines include all
18d60 6f 63 61 74 69 6f 6e 20 6f 72 20 64 65 61 6c 6c  ocation or deall
18d70 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 73 74  ocation.** of st
18d80 61 74 69 63 20 72 65 73 6f 75 72 63 65 73 2c 20  atic resources, 
18d90 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f  initialization o
18da0 66 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c  f global variabl
18db0 65 73 2c 0a 2a 2a 20 73 65 74 74 69 6e 67 20 75  es,.** setting u
18dc0 70 20 61 20 64 65 66 61 75 6c 74 20 5b 73 71 6c  p a default [sql
18dd0 69 74 65 33 5f 76 66 73 5d 20 6d 6f 64 75 6c 65  ite3_vfs] module
18de0 2c 20 6f 72 20 73 65 74 74 69 6e 67 20 75 70 0a  , or setting up.
18df0 2a 2a 20 61 20 64 65 66 61 75 6c 74 20 63 6f 6e  ** a default con
18e00 66 69 67 75 72 61 74 69 6f 6e 20 75 73 69 6e 67  figuration using
18e10 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
18e20 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61  ()]..**.** The a
18e30 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c  pplication shoul
18e40 64 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 65  d never invoke e
18e50 69 74 68 65 72 20 73 71 6c 69 74 65 33 5f 6f 73  ither sqlite3_os
18e60 5f 69 6e 69 74 28 29 0a 2a 2a 20 6f 72 20 73 71  _init().** or sq
18e70 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 64  lite3_os_end() d
18e80 69 72 65 63 74 6c 79 2e 20 20 54 68 65 20 61 70  irectly.  The ap
18e90 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64  plication should
18ea0 20 6f 6e 6c 79 20 69 6e 76 6f 6b 65 0a 2a 2a 20   only invoke.** 
18eb0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
18ec0 7a 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33  ze() and sqlite3
18ed0 5f 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 54 68  _shutdown().  Th
18ee0 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  e sqlite3_os_ini
18ef0 74 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  t().** interface
18f00 20 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d   is called autom
18f10 61 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69  atically by sqli
18f20 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
18f30 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   and.** sqlite3_
18f40 6f 73 5f 65 6e 64 28 29 20 69 73 20 63 61 6c 6c  os_end() is call
18f50 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 73 68  ed by sqlite3_sh
18f60 75 74 64 6f 77 6e 28 29 2e 20 20 41 70 70 72 6f  utdown().  Appro
18f70 70 72 69 61 74 65 0a 2a 2a 20 69 6d 70 6c 65 6d  priate.** implem
18f80 65 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 73 71  entations for sq
18f90 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20  lite3_os_init() 
18fa0 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65  and sqlite3_os_e
18fb0 6e 64 28 29 0a 2a 2a 20 61 72 65 20 62 75 69 6c  nd().** are buil
18fc0 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 20 77 68  t into SQLite wh
18fd0 65 6e 20 69 74 20 69 73 20 63 6f 6d 70 69 6c 65  en it is compile
18fe0 64 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64  d for Unix, Wind
18ff0 6f 77 73 2c 20 6f 72 20 4f 53 2f 32 2e 0a 2a 2a  ows, or OS/2..**
19000 20 57 68 65 6e 20 5b 63 75 73 74 6f 6d 20 62 75   When [custom bu
19010 69 6c 64 73 20 7c 20 62 75 69 6c 74 20 66 6f 72  ilds | built for
19020 20 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d 73   other platforms
19030 5d 0a 2a 2a 20 28 75 73 69 6e 67 20 74 68 65 20  ].** (using the 
19040 5b 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52  [SQLITE_OS_OTHER
19050 3d 31 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  =1] compile-time
19060 0a 2a 2a 20 6f 70 74 69 6f 6e 29 20 74 68 65 20  .** option) the 
19070 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74  application must
19080 20 73 75 70 70 6c 79 20 61 20 73 75 69 74 61 62   supply a suitab
19090 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  le implementatio
190a0 6e 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33  n for.** sqlite3
190b0 5f 6f 73 5f 69 6e 69 74 28 29 20 61 6e 64 20 73  _os_init() and s
190c0 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 2e  qlite3_os_end().
190d0 20 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e    An application
190e0 2d 73 75 70 70 6c 69 65 64 0a 2a 2a 20 69 6d 70  -supplied.** imp
190f0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
19100 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
19110 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65   or sqlite3_os_e
19120 6e 64 28 29 0a 2a 2a 20 6d 75 73 74 20 72 65 74  nd().** must ret
19130 75 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  urn [SQLITE_OK] 
19140 6f 6e 20 73 75 63 63 65 73 73 20 61 6e 64 20 73  on success and s
19150 6f 6d 65 20 6f 74 68 65 72 20 5b 65 72 72 6f 72  ome other [error
19160 20 63 6f 64 65 5d 20 75 70 6f 6e 0a 2a 2a 20 66   code] upon.** f
19170 61 69 6c 75 72 65 2e 0a 2a 2f 0a 53 51 4c 49 54  ailure..*/.SQLIT
19180 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
19190 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 76 6f 69  3_initialize(voi
191a0 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  d);.SQLITE_API i
191b0 6e 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  nt sqlite3_shutd
191c0 6f 77 6e 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54  own(void);.SQLIT
191d0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
191e0 33 5f 6f 73 5f 69 6e 69 74 28 76 6f 69 64 29 3b  3_os_init(void);
191f0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
19200 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 76  sqlite3_os_end(v
19210 6f 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  oid);../*.** CAP
19220 49 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 69  I3REF: Configuri
19230 6e 67 20 54 68 65 20 53 51 4c 69 74 65 20 4c 69  ng The SQLite Li
19240 62 72 61 72 79 0a 2a 2a 0a 2a 2a 20 54 68 65 20  brary.**.** The 
19250 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
19260 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 75 73   interface is us
19270 65 64 20 74 6f 20 6d 61 6b 65 20 67 6c 6f 62 61  ed to make globa
19280 6c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a  l configuration.
19290 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f 20 53 51  ** changes to SQ
192a0 4c 69 74 65 20 69 6e 20 6f 72 64 65 72 20 74 6f  Lite in order to
192b0 20 74 75 6e 65 20 53 51 4c 69 74 65 20 74 6f 20   tune SQLite to 
192c0 74 68 65 20 73 70 65 63 69 66 69 63 20 6e 65 65  the specific nee
192d0 64 73 20 6f 66 0a 2a 2a 20 74 68 65 20 61 70 70  ds of.** the app
192e0 6c 69 63 61 74 69 6f 6e 2e 20 20 54 68 65 20 64  lication.  The d
192f0 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75 72 61  efault configura
19300 74 69 6f 6e 20 69 73 20 72 65 63 6f 6d 6d 65 6e  tion is recommen
19310 64 65 64 20 66 6f 72 20 6d 6f 73 74 0a 2a 2a 20  ded for most.** 
19320 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 6e 64  applications and
19330 20 73 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65   so this routine
19340 20 69 73 20 75 73 75 61 6c 6c 79 20 6e 6f 74 20   is usually not 
19350 6e 65 63 65 73 73 61 72 79 2e 20 20 49 74 20 69  necessary.  It i
19360 73 0a 2a 2a 20 70 72 6f 76 69 64 65 64 20 74 6f  s.** provided to
19370 20 73 75 70 70 6f 72 74 20 72 61 72 65 20 61 70   support rare ap
19380 70 6c 69 63 61 74 69 6f 6e 73 20 77 69 74 68 20  plications with 
19390 75 6e 75 73 75 61 6c 20 6e 65 65 64 73 2e 0a 2a  unusual needs..*
193a0 2a 0a 2a 2a 20 3c 62 3e 54 68 65 20 73 71 6c 69  *.** <b>The sqli
193b0 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74  te3_config() int
193c0 65 72 66 61 63 65 20 69 73 20 6e 6f 74 20 74 68  erface is not th
193d0 72 65 61 64 73 61 66 65 2e 20 54 68 65 20 61 70  readsafe. The ap
193e0 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73  plication.** mus
193f0 74 20 65 6e 73 75 72 65 20 74 68 61 74 20 6e 6f  t ensure that no
19400 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e   other SQLite in
19410 74 65 72 66 61 63 65 73 20 61 72 65 20 69 6e 76  terfaces are inv
19420 6f 6b 65 64 20 62 79 20 6f 74 68 65 72 0a 2a 2a  oked by other.**
19430 20 74 68 72 65 61 64 73 20 77 68 69 6c 65 20 73   threads while s
19440 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
19450 69 73 20 72 75 6e 6e 69 6e 67 2e 3c 2f 62 3e 0a  is running.</b>.
19460 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
19470 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72  3_config() inter
19480 66 61 63 65 0a 2a 2a 20 6d 61 79 20 6f 6e 6c 79  face.** may only
19490 20 62 65 20 69 6e 76 6f 6b 65 64 20 70 72 69 6f   be invoked prio
194a0 72 20 74 6f 20 6c 69 62 72 61 72 79 20 69 6e 69  r to library ini
194b0 74 69 61 6c 69 7a 61 74 69 6f 6e 20 75 73 69 6e  tialization usin
194c0 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6e  g.** [sqlite3_in
194d0 69 74 69 61 6c 69 7a 65 28 29 5d 20 6f 72 20 61  itialize()] or a
194e0 66 74 65 72 20 73 68 75 74 64 6f 77 6e 20 62 79  fter shutdown by
194f0 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f   [sqlite3_shutdo
19500 77 6e 28 29 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71  wn()]..** ^If sq
19510 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69  lite3_config() i
19520 73 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 5b  s called after [
19530 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
19540 7a 65 28 29 5d 20 61 6e 64 20 62 65 66 6f 72 65  ze()] and before
19550 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 68 75  .** [sqlite3_shu
19560 74 64 6f 77 6e 28 29 5d 20 74 68 65 6e 20 69 74  tdown()] then it
19570 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c   will return SQL
19580 49 54 45 5f 4d 49 53 55 53 45 2e 0a 2a 2a 20 4e  ITE_MISUSE..** N
19590 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 20 74 68  ote, however, th
195a0 61 74 20 5e 73 71 6c 69 74 65 33 5f 63 6f 6e 66  at ^sqlite3_conf
195b0 69 67 28 29 20 63 61 6e 20 62 65 20 63 61 6c 6c  ig() can be call
195c0 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68  ed as part of th
195d0 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  e.** implementat
195e0 69 6f 6e 20 6f 66 20 61 6e 20 61 70 70 6c 69 63  ion of an applic
195f0 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 5b 73  ation-defined [s
19600 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29  qlite3_os_init()
19610 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72  ]..**.** The fir
19620 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  st argument to s
19630 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
19640 69 73 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a  is an integer.**
19650 20 5b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20   [configuration 
19660 6f 70 74 69 6f 6e 5d 20 74 68 61 74 20 64 65 74  option] that det
19670 65 72 6d 69 6e 65 73 0a 2a 2a 20 77 68 61 74 20  ermines.** what 
19680 70 72 6f 70 65 72 74 79 20 6f 66 20 53 51 4c 69  property of SQLi
19690 74 65 20 69 73 20 74 6f 20 62 65 20 63 6f 6e 66  te is to be conf
196a0 69 67 75 72 65 64 2e 20 20 53 75 62 73 65 71 75  igured.  Subsequ
196b0 65 6e 74 20 61 72 67 75 6d 65 6e 74 73 0a 2a 2a  ent arguments.**
196c0 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67 20   vary depending 
196d0 6f 6e 20 74 68 65 20 5b 63 6f 6e 66 69 67 75 72  on the [configur
196e0 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d 0a 2a 2a  ation option].**
196f0 20 69 6e 20 74 68 65 20 66 69 72 73 74 20 61 72   in the first ar
19700 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5e 57  gument..**.** ^W
19710 68 65 6e 20 61 20 63 6f 6e 66 69 67 75 72 61 74  hen a configurat
19720 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 73 65  ion option is se
19730 74 2c 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  t, sqlite3_confi
19740 67 28 29 20 72 65 74 75 72 6e 73 20 5b 53 51 4c  g() returns [SQL
19750 49 54 45 5f 4f 4b 5d 2e 0a 2a 2a 20 5e 49 66 20  ITE_OK]..** ^If 
19760 74 68 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e  the option is un
19770 6b 6e 6f 77 6e 20 6f 72 20 53 51 4c 69 74 65 20  known or SQLite 
19780 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 73 65 74  is unable to set
19790 20 74 68 65 20 6f 70 74 69 6f 6e 0a 2a 2a 20 74   the option.** t
197a0 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65  hen this routine
197b0 20 72 65 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a   returns a non-z
197c0 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d  ero [error code]
197d0 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
197e0 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66  int sqlite3_conf
197f0 69 67 28 69 6e 74 2c 20 2e 2e 2e 29 3b 0a 0a 2f  ig(int, ...);../
19800 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43  *.** CAPI3REF: C
19810 6f 6e 66 69 67 75 72 65 20 64 61 74 61 62 61 73  onfigure databas
19820 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a  e connections.**
19830 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
19840 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
19850 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20 69  e3_db_config() i
19860 6e 74 65 72 66 61 63 65 20 69 73 20 75 73 65 64  nterface is used
19870 20 74 6f 20 6d 61 6b 65 20 63 6f 6e 66 69 67 75   to make configu
19880 72 61 74 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65  ration.** change
19890 73 20 74 6f 20 61 20 5b 64 61 74 61 62 61 73 65  s to a [database
198a0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 20 20 54   connection].  T
198b0 68 65 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  he interface is 
198c0 73 69 6d 69 6c 61 72 20 74 6f 0a 2a 2a 20 5b 73  similar to.** [s
198d0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
198e0 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65   except that the
198f0 20 63 68 61 6e 67 65 73 20 61 70 70 6c 79 20 74   changes apply t
19900 6f 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 5b 64  o a single.** [d
19910 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
19920 6f 6e 5d 20 28 73 70 65 63 69 66 69 65 64 20 69  on] (specified i
19930 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75  n the first argu
19940 6d 65 6e 74 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  ment)..**.** The
19950 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
19960 20 74 6f 20 73 71 6c 69 74 65 33 5f 64 62 5f 63   to sqlite3_db_c
19970 6f 6e 66 69 67 28 44 2c 56 2c 2e 2e 2e 29 20 20  onfig(D,V,...)  
19980 69 73 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  is the.** [SQLIT
19990 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  E_DBCONFIG_LOOKA
199a0 53 49 44 45 20 7c 20 63 6f 6e 66 69 67 75 72 61  SIDE | configura
199b0 74 69 6f 6e 20 76 65 72 62 5d 20 2d 20 61 6e 20  tion verb] - an 
199c0 69 6e 74 65 67 65 72 20 63 6f 64 65 20 0a 2a 2a  integer code .**
199d0 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20   that indicates 
199e0 77 68 61 74 20 61 73 70 65 63 74 20 6f 66 20 74  what aspect of t
199f0 68 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  he [database con
19a00 6e 65 63 74 69 6f 6e 5d 20 69 73 20 62 65 69 6e  nection] is bein
19a10 67 20 63 6f 6e 66 69 67 75 72 65 64 2e 0a 2a 2a  g configured..**
19a20 20 53 75 62 73 65 71 75 65 6e 74 20 61 72 67 75   Subsequent argu
19a30 6d 65 6e 74 73 20 76 61 72 79 20 64 65 70 65 6e  ments vary depen
19a40 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6e 66  ding on the conf
19a50 69 67 75 72 61 74 69 6f 6e 20 76 65 72 62 2e 0a  iguration verb..
19a60 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 73 20 74 6f 20  **.** ^Calls to 
19a70 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
19a80 67 28 29 20 72 65 74 75 72 6e 20 53 51 4c 49 54  g() return SQLIT
19a90 45 5f 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79  E_OK if and only
19aa0 20 69 66 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20   if.** the call 
19ab0 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 73 75  is considered su
19ac0 63 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 53 51 4c  ccessful..*/.SQL
19ad0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
19ae0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 73 71  te3_db_config(sq
19af0 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f 70 2c 20  lite3*, int op, 
19b00 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ...);../*.** CAP
19b10 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c  I3REF: Memory Al
19b20 6c 6f 63 61 74 69 6f 6e 20 52 6f 75 74 69 6e 65  location Routine
19b30 73 0a 2a 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61  s.**.** An insta
19b40 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  nce of this obje
19b50 63 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 69  ct defines the i
19b60 6e 74 65 72 66 61 63 65 20 62 65 74 77 65 65 6e  nterface between
19b70 20 53 51 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 6c   SQLite.** and l
19b80 6f 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72 79 20  ow-level memory 
19b90 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69  allocation routi
19ba0 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20  nes..**.** This 
19bb0 6f 62 6a 65 63 74 20 69 73 20 75 73 65 64 20 69  object is used i
19bc0 6e 20 6f 6e 6c 79 20 6f 6e 65 20 70 6c 61 63 65  n only one place
19bd0 20 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 69   in the SQLite i
19be0 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 20 41 20 70  nterface..** A p
19bf0 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73  ointer to an ins
19c00 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62  tance of this ob
19c10 6a 65 63 74 20 69 73 20 74 68 65 20 61 72 67 75  ject is the argu
19c20 6d 65 6e 74 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  ment to.** [sqli
19c30 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 68  te3_config()] wh
19c40 65 6e 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61  en the configura
19c50 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 0a 2a  tion option is.*
19c60 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  * [SQLITE_CONFIG
19c70 5f 4d 41 4c 4c 4f 43 5d 20 6f 72 20 5b 53 51 4c  _MALLOC] or [SQL
19c80 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41  ITE_CONFIG_GETMA
19c90 4c 4c 4f 43 5d 2e 20 20 0a 2a 2a 20 42 79 20 63  LLOC].  .** By c
19ca0 72 65 61 74 69 6e 67 20 61 6e 20 69 6e 73 74 61  reating an insta
19cb0 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65  nce of this obje
19cc0 63 74 0a 2a 2a 20 61 6e 64 20 70 61 73 73 69 6e  ct.** and passin
19cd0 67 20 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  g it to [sqlite3
19ce0 5f 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45  _config]([SQLITE
19cf0 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 29  _CONFIG_MALLOC])
19d00 0a 2a 2a 20 64 75 72 69 6e 67 20 63 6f 6e 66 69  .** during confi
19d10 67 75 72 61 74 69 6f 6e 2c 20 61 6e 20 61 70 70  guration, an app
19d20 6c 69 63 61 74 69 6f 6e 20 63 61 6e 20 73 70 65  lication can spe
19d30 63 69 66 79 20 61 6e 20 61 6c 74 65 72 6e 61 74  cify an alternat
19d40 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c  ive.** memory al
19d50 6c 6f 63 61 74 69 6f 6e 20 73 75 62 73 79 73 74  location subsyst
19d60 65 6d 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f  em for SQLite to
19d70 20 75 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20   use for all of 
19d80 69 74 73 0a 2a 2a 20 64 79 6e 61 6d 69 63 20 6d  its.** dynamic m
19d90 65 6d 6f 72 79 20 6e 65 65 64 73 2e 0a 2a 2a 0a  emory needs..**.
19da0 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 53 51 4c  ** Note that SQL
19db0 69 74 65 20 63 6f 6d 65 73 20 77 69 74 68 20 73  ite comes with s
19dc0 65 76 65 72 61 6c 20 5b 62 75 69 6c 74 2d 69 6e  everal [built-in
19dd0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
19de0 72 73 5d 0a 2a 2a 20 74 68 61 74 20 61 72 65 20  rs].** that are 
19df0 70 65 72 66 65 63 74 6c 79 20 61 64 65 71 75 61  perfectly adequa
19e00 74 65 20 66 6f 72 20 74 68 65 20 6f 76 65 72 77  te for the overw
19e10 68 65 6c 6d 69 6e 67 20 6d 61 6a 6f 72 69 74 79  helming majority
19e20 20 6f 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73   of applications
19e30 0a 2a 2a 20 61 6e 64 20 74 68 61 74 20 74 68 69  .** and that thi
19e40 73 20 6f 62 6a 65 63 74 20 69 73 20 6f 6e 6c 79  s object is only
19e50 20 75 73 65 66 75 6c 20 74 6f 20 61 20 74 69 6e   useful to a tin
19e60 79 20 6d 69 6e 6f 72 69 74 79 20 6f 66 20 61 70  y minority of ap
19e70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 77 69  plications.** wi
19e80 74 68 20 73 70 65 63 69 61 6c 69 7a 65 64 20 6d  th specialized m
19e90 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
19ea0 20 72 65 71 75 69 72 65 6d 65 6e 74 73 2e 20 20   requirements.  
19eb0 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 0a 2a  This object is.*
19ec0 2a 20 61 6c 73 6f 20 75 73 65 64 20 64 75 72 69  * also used duri
19ed0 6e 67 20 74 65 73 74 69 6e 67 20 6f 66 20 53 51  ng testing of SQ
19ee0 4c 69 74 65 20 69 6e 20 6f 72 64 65 72 20 74 6f  Lite in order to
19ef0 20 73 70 65 63 69 66 79 20 61 6e 20 61 6c 74 65   specify an alte
19f00 72 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72  rnative.** memor
19f10 79 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74  y allocator that
19f20 20 73 69 6d 75 6c 61 74 65 73 20 6d 65 6d 6f 72   simulates memor
19f30 79 20 6f 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20  y out-of-memory 
19f40 63 6f 6e 64 69 74 69 6f 6e 73 20 69 6e 0a 2a 2a  conditions in.**
19f50 20 6f 72 64 65 72 20 74 6f 20 76 65 72 69 66 79   order to verify
19f60 20 74 68 61 74 20 53 51 4c 69 74 65 20 72 65 63   that SQLite rec
19f70 6f 76 65 72 73 20 67 72 61 63 65 66 75 6c 6c 79  overs gracefully
19f80 20 66 72 6f 6d 20 73 75 63 68 0a 2a 2a 20 63 6f   from such.** co
19f90 6e 64 69 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20  nditions..**.** 
19fa0 54 68 65 20 78 4d 61 6c 6c 6f 63 2c 20 78 52 65  The xMalloc, xRe
19fb0 61 6c 6c 6f 63 2c 20 61 6e 64 20 78 46 72 65 65  alloc, and xFree
19fc0 20 6d 65 74 68 6f 64 73 20 6d 75 73 74 20 77 6f   methods must wo
19fd0 72 6b 20 6c 69 6b 65 20 74 68 65 0a 2a 2a 20 6d  rk like the.** m
19fe0 61 6c 6c 6f 63 28 29 2c 20 72 65 61 6c 6c 6f 63  alloc(), realloc
19ff0 28 29 20 61 6e 64 20 66 72 65 65 28 29 20 66 75  () and free() fu
1a000 6e 63 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65  nctions from the
1a010 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72   standard C libr
1a020 61 72 79 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20  ary..** ^SQLite 
1a030 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20  guarantees that 
1a040 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  the second argum
1a050 65 6e 74 20 74 6f 0a 2a 2a 20 78 52 65 61 6c 6c  ent to.** xReall
1a060 6f 63 20 69 73 20 61 6c 77 61 79 73 20 61 20 76  oc is always a v
1a070 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
1a080 20 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f   a prior call to
1a090 20 78 52 6f 75 6e 64 75 70 2e 0a 2a 2a 0a 2a 2a   xRoundup..**.**
1a0a0 20 78 53 69 7a 65 20 73 68 6f 75 6c 64 20 72 65   xSize should re
1a0b0 74 75 72 6e 20 74 68 65 20 61 6c 6c 6f 63 61 74  turn the allocat
1a0c0 65 64 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d  ed size of a mem
1a0d0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a  ory allocation.*
1a0e0 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74  * previously obt
1a0f0 61 69 6e 65 64 20 66 72 6f 6d 20 78 4d 61 6c 6c  ained from xMall
1a100 6f 63 20 6f 72 20 78 52 65 61 6c 6c 6f 63 2e 20  oc or xRealloc. 
1a110 20 54 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73   The allocated s
1a120 69 7a 65 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73  ize.** is always
1a130 20 61 74 20 6c 65 61 73 74 20 61 73 20 62 69 67   at least as big
1a140 20 61 73 20 74 68 65 20 72 65 71 75 65 73 74 65   as the requeste
1a150 64 20 73 69 7a 65 20 62 75 74 20 6d 61 79 20 62  d size but may b
1a160 65 20 6c 61 72 67 65 72 2e 0a 2a 2a 0a 2a 2a 20  e larger..**.** 
1a170 54 68 65 20 78 52 6f 75 6e 64 75 70 20 6d 65 74  The xRoundup met
1a180 68 6f 64 20 72 65 74 75 72 6e 73 20 77 68 61 74  hod returns what
1a190 20 77 6f 75 6c 64 20 62 65 20 74 68 65 20 61 6c   would be the al
1a1a0 6c 6f 63 61 74 65 64 20 73 69 7a 65 20 6f 66 0a  located size of.
1a1b0 2a 2a 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  ** a memory allo
1a1c0 63 61 74 69 6f 6e 20 67 69 76 65 6e 20 61 20 70  cation given a p
1a1d0 61 72 74 69 63 75 6c 61 72 20 72 65 71 75 65 73  articular reques
1a1e0 74 65 64 20 73 69 7a 65 2e 20 20 4d 6f 73 74 20  ted size.  Most 
1a1f0 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61  memory.** alloca
1a200 74 6f 72 73 20 72 6f 75 6e 64 20 75 70 20 6d 65  tors round up me
1a210 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73  mory allocations
1a220 20 61 74 20 6c 65 61 73 74 20 74 6f 20 74 68 65   at least to the
1a230 20 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 0a 2a   next multiple.*
1a240 2a 20 6f 66 20 38 2e 20 20 53 6f 6d 65 20 61 6c  * of 8.  Some al
1a250 6c 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64 20 75  locators round u
1a260 70 20 74 6f 20 61 20 6c 61 72 67 65 72 20 6d 75  p to a larger mu
1a270 6c 74 69 70 6c 65 20 6f 72 20 74 6f 20 61 20 70  ltiple or to a p
1a280 6f 77 65 72 20 6f 66 20 32 2e 0a 2a 2a 20 45 76  ower of 2..** Ev
1a290 65 72 79 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  ery memory alloc
1a2a0 61 74 69 6f 6e 20 72 65 71 75 65 73 74 20 63 6f  ation request co
1a2b0 6d 69 6e 67 20 69 6e 20 74 68 72 6f 75 67 68 20  ming in through 
1a2c0 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
1a2d0 29 5d 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65  )].** or [sqlite
1a2e0 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 20 66 69 72  3_realloc()] fir
1a2f0 73 74 20 63 61 6c 6c 73 20 78 52 6f 75 6e 64 75  st calls xRoundu
1a300 70 2e 20 20 49 66 20 78 52 6f 75 6e 64 75 70 20  p.  If xRoundup 
1a310 72 65 74 75 72 6e 73 20 30 2c 20 0a 2a 2a 20 74  returns 0, .** t
1a320 68 61 74 20 63 61 75 73 65 73 20 74 68 65 20 63  hat causes the c
1a330 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6d 65 6d  orresponding mem
1a340 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74  ory allocation t
1a350 6f 20 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 54 68  o fail..**.** Th
1a360 65 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 20 69  e xInit method i
1a370 6e 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 6d  nitializes the m
1a380 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e  emory allocator.
1a390 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 2a    For example,.*
1a3a0 2a 20 69 74 20 6d 69 67 68 74 20 61 6c 6c 6f 63  * it might alloc
1a3b0 61 74 65 20 61 6e 79 20 72 65 71 75 69 72 65 20  ate any require 
1a3c0 6d 75 74 65 78 65 73 20 6f 72 20 69 6e 69 74 69  mutexes or initi
1a3d0 61 6c 69 7a 65 20 69 6e 74 65 72 6e 61 6c 20 64  alize internal d
1a3e0 61 74 61 0a 2a 2a 20 73 74 72 75 63 74 75 72 65  ata.** structure
1a3f0 73 2e 20 20 54 68 65 20 78 53 68 75 74 64 6f 77  s.  The xShutdow
1a400 6e 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f  n method is invo
1a410 6b 65 64 20 28 69 6e 64 69 72 65 63 74 6c 79 29  ked (indirectly)
1a420 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   by.** [sqlite3_
1a430 73 68 75 74 64 6f 77 6e 28 29 5d 20 61 6e 64 20  shutdown()] and 
1a440 73 68 6f 75 6c 64 20 64 65 61 6c 6c 6f 63 61 74  should deallocat
1a450 65 20 61 6e 79 20 72 65 73 6f 75 72 63 65 73 20  e any resources 
1a460 61 63 71 75 69 72 65 64 0a 2a 2a 20 62 79 20 78  acquired.** by x
1a470 49 6e 69 74 2e 20 20 54 68 65 20 70 41 70 70 44  Init.  The pAppD
1a480 61 74 61 20 70 6f 69 6e 74 65 72 20 69 73 20 75  ata pointer is u
1a490 73 65 64 20 61 73 20 74 68 65 20 6f 6e 6c 79 20  sed as the only 
1a4a0 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
1a4b0 78 49 6e 69 74 20 61 6e 64 20 78 53 68 75 74 64  xInit and xShutd
1a4c0 6f 77 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  own..**.** SQLit
1a4d0 65 20 68 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c  e holds the [SQL
1a4e0 49 54 45 5f 4d 55 54 45 58 5f 53 54 41 54 49 43  ITE_MUTEX_STATIC
1a4f0 5f 4d 41 53 54 45 52 5d 20 6d 75 74 65 78 20 77  _MASTER] mutex w
1a500 68 65 6e 20 69 74 20 69 6e 76 6f 6b 65 73 0a 2a  hen it invokes.*
1a510 2a 20 74 68 65 20 78 49 6e 69 74 20 6d 65 74 68  * the xInit meth
1a520 6f 64 2c 20 73 6f 20 74 68 65 20 78 49 6e 69 74  od, so the xInit
1a530 20 6d 65 74 68 6f 64 20 6e 65 65 64 20 6e 6f 74   method need not
1a540 20 62 65 20 74 68 72 65 61 64 73 61 66 65 2e 20   be threadsafe. 
1a550 20 54 68 65 0a 2a 2a 20 78 53 68 75 74 64 6f 77   The.** xShutdow
1a560 6e 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79  n method is only
1a570 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 5b 73 71   called from [sq
1a580 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
1a590 5d 20 73 6f 20 69 74 20 64 6f 65 73 0a 2a 2a 20  ] so it does.** 
1a5a0 6e 6f 74 20 6e 65 65 64 20 74 6f 20 62 65 20 74  not need to be t
1a5b0 68 72 65 61 64 73 61 66 65 20 65 69 74 68 65 72  hreadsafe either
1a5c0 2e 20 20 46 6f 72 20 61 6c 6c 20 6f 74 68 65 72  .  For all other
1a5d0 20 6d 65 74 68 6f 64 73 2c 20 53 51 4c 69 74 65   methods, SQLite
1a5e0 0a 2a 2a 20 68 6f 6c 64 73 20 74 68 65 20 5b 53  .** holds the [S
1a5f0 51 4c 49 54 45 5f 4d 55 54 45 58 5f 53 54 41 54  QLITE_MUTEX_STAT
1a600 49 43 5f 4d 45 4d 5d 20 6d 75 74 65 78 20 61 73  IC_MEM] mutex as
1a610 20 6c 6f 6e 67 20 61 73 20 74 68 65 0a 2a 2a 20   long as the.** 
1a620 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1a630 45 4d 53 54 41 54 55 53 5d 20 63 6f 6e 66 69 67  EMSTATUS] config
1a640 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69  uration option i
1a650 73 20 74 75 72 6e 65 64 20 6f 6e 20 28 77 68 69  s turned on (whi
1a660 63 68 0a 2a 2a 20 69 74 20 69 73 20 62 79 20 64  ch.** it is by d
1a670 65 66 61 75 6c 74 29 20 61 6e 64 20 73 6f 20 74  efault) and so t
1a680 68 65 20 6d 65 74 68 6f 64 73 20 61 72 65 20 61  he methods are a
1a690 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72  utomatically ser
1a6a0 69 61 6c 69 7a 65 64 2e 0a 2a 2a 20 48 6f 77 65  ialized..** Howe
1a6b0 76 65 72 2c 20 69 66 20 5b 53 51 4c 49 54 45 5f  ver, if [SQLITE_
1a6c0 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
1a6d0 5d 20 69 73 20 64 69 73 61 62 6c 65 64 2c 20 74  ] is disabled, t
1a6e0 68 65 6e 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a  hen the other.**
1a6f0 20 6d 65 74 68 6f 64 73 20 6d 75 73 74 20 62 65   methods must be
1a700 20 74 68 72 65 61 64 73 61 66 65 20 6f 72 20 65   threadsafe or e
1a710 6c 73 65 20 6d 61 6b 65 20 74 68 65 69 72 20 6f  lse make their o
1a720 77 6e 20 61 72 72 61 6e 67 65 6d 65 6e 74 73 20  wn arrangements 
1a730 66 6f 72 0a 2a 2a 20 73 65 72 69 61 6c 69 7a 61  for.** serializa
1a740 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  tion..**.** SQLi
1a750 74 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e  te will never in
1a760 76 6f 6b 65 20 78 49 6e 69 74 28 29 20 6d 6f 72  voke xInit() mor
1a770 65 20 74 68 61 6e 20 6f 6e 63 65 20 77 69 74 68  e than once with
1a780 6f 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69  out an interveni
1a790 6e 67 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 78 53  ng.** call to xS
1a7a0 68 75 74 64 6f 77 6e 28 29 2e 0a 2a 2f 0a 74 79  hutdown()..*/.ty
1a7b0 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c  pedef struct sql
1a7c0 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73  ite3_mem_methods
1a7d0 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
1a7e0 68 6f 64 73 3b 0a 73 74 72 75 63 74 20 73 71 6c  hods;.struct sql
1a7f0 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73  ite3_mem_methods
1a800 20 7b 0a 20 20 76 6f 69 64 20 2a 28 2a 78 4d 61   {.  void *(*xMa
1a810 6c 6c 6f 63 29 28 69 6e 74 29 3b 20 20 20 20 20  lloc)(int);     
1a820 20 20 20 20 2f 2a 20 4d 65 6d 6f 72 79 20 61 6c      /* Memory al
1a830 6c 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f  location functio
1a840 6e 20 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 46  n */.  void (*xF
1a850 72 65 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20  ree)(void*);    
1a860 20 20 20 20 20 20 2f 2a 20 46 72 65 65 20 61 20        /* Free a 
1a870 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e  prior allocation
1a880 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 28 2a 78 52   */.  void *(*xR
1a890 65 61 6c 6c 6f 63 29 28 76 6f 69 64 2a 2c 69 6e  ealloc)(void*,in
1a8a0 74 29 3b 20 20 2f 2a 20 52 65 73 69 7a 65 20 61  t);  /* Resize a
1a8b0 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a  n allocation */.
1a8c0 20 20 69 6e 74 20 28 2a 78 53 69 7a 65 29 28 76    int (*xSize)(v
1a8d0 6f 69 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20  oid*);          
1a8e0 20 2f 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73   /* Return the s
1a8f0 69 7a 65 20 6f 66 20 61 6e 20 61 6c 6c 6f 63 61  ize of an alloca
1a900 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a  tion */.  int (*
1a910 78 52 6f 75 6e 64 75 70 29 28 69 6e 74 29 3b 20  xRoundup)(int); 
1a920 20 20 20 20 20 20 20 20 20 2f 2a 20 52 6f 75 6e           /* Roun
1a930 64 20 75 70 20 72 65 71 75 65 73 74 20 73 69 7a  d up request siz
1a940 65 20 74 6f 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  e to allocation 
1a950 73 69 7a 65 20 2a 2f 0a 20 20 69 6e 74 20 28 2a  size */.  int (*
1a960 78 49 6e 69 74 29 28 76 6f 69 64 2a 29 3b 20 20  xInit)(void*);  
1a970 20 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 69 74           /* Init
1a980 69 61 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72  ialize the memor
1a990 79 20 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20  y allocator */. 
1a9a0 20 76 6f 69 64 20 28 2a 78 53 68 75 74 64 6f 77   void (*xShutdow
1a9b0 6e 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20  n)(void*);      
1a9c0 2f 2a 20 44 65 69 6e 69 74 69 61 6c 69 7a 65 20  /* Deinitialize 
1a9d0 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  the memory alloc
1a9e0 61 74 6f 72 20 2a 2f 0a 20 20 76 6f 69 64 20 2a  ator */.  void *
1a9f0 70 41 70 70 44 61 74 61 3b 20 20 20 20 20 20 20  pAppData;       
1aa00 20 20 20 20 20 20 20 20 20 2f 2a 20 41 72 67 75           /* Argu
1aa10 6d 65 6e 74 20 74 6f 20 78 49 6e 69 74 28 29 20  ment to xInit() 
1aa20 61 6e 64 20 78 53 68 75 74 64 6f 77 6e 28 29 20  and xShutdown() 
1aa30 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  */.};../*.** CAP
1aa40 49 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 61  I3REF: Configura
1aa50 74 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a 20  tion Options.** 
1aa60 4b 45 59 57 4f 52 44 53 3a 20 7b 63 6f 6e 66 69  KEYWORDS: {confi
1aa70 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 7d  guration option}
1aa80 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e  .**.** These con
1aa90 73 74 61 6e 74 73 20 61 72 65 20 74 68 65 20 61  stants are the a
1aaa0 76 61 69 6c 61 62 6c 65 20 69 6e 74 65 67 65 72  vailable integer
1aab0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1aac0 70 74 69 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63  ptions that.** c
1aad0 61 6e 20 62 65 20 70 61 73 73 65 64 20 61 73 20  an be passed as 
1aae0 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  the first argume
1aaf0 6e 74 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  nt to the [sqlit
1ab00 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74  e3_config()] int
1ab10 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65  erface..**.** Ne
1ab20 77 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  w configuration 
1ab30 6f 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 61  options may be a
1ab40 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  dded in future r
1ab50 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74  eleases of SQLit
1ab60 65 2e 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20 63  e..** Existing c
1ab70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1ab80 69 6f 6e 73 20 6d 69 67 68 74 20 62 65 20 64 69  ions might be di
1ab90 73 63 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70 70  scontinued.  App
1aba0 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f  lications.** sho
1abb0 75 6c 64 20 63 68 65 63 6b 20 74 68 65 20 72 65  uld check the re
1abc0 74 75 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20 5b  turn code from [
1abd0 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
1abe0 5d 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74  ] to make sure t
1abf0 68 61 74 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20  hat.** the call 
1ac00 77 6f 72 6b 65 64 2e 20 20 54 68 65 20 5b 73 71  worked.  The [sq
1ac10 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
1ac20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20 72  interface will r
1ac30 65 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a  eturn a.** non-z
1ac40 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d  ero [error code]
1ac50 20 69 66 20 61 20 64 69 73 63 6f 6e 74 69 6e 75   if a discontinu
1ac60 65 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65  ed or unsupporte
1ac70 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  d configuration 
1ac80 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76  option.** is inv
1ac90 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e  oked..**.** <dl>
1aca0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1acb0 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
1acc0 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1acd0 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41  NFIG_SINGLETHREA
1ace0 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  D</dt>.** <dd>Th
1acf0 65 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d  ere are no argum
1ad00 65 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74  ents to this opt
1ad10 69 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69  ion.  ^This opti
1ad20 6f 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b  on sets the.** [
1ad30 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20  threading mode] 
1ad40 74 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64  to Single-thread
1ad50 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  .  In other word
1ad60 73 2c 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a  s, it disables.*
1ad70 2a 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 61  * all mutexing a
1ad80 6e 64 20 70 75 74 73 20 53 51 4c 69 74 65 20 69  nd puts SQLite i
1ad90 6e 74 6f 20 61 20 6d 6f 64 65 20 77 68 65 72 65  nto a mode where
1ada0 20 69 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20   it can only be 
1adb0 75 73 65 64 0a 2a 2a 20 62 79 20 61 20 73 69 6e  used.** by a sin
1adc0 67 6c 65 20 74 68 72 65 61 64 2e 20 20 20 5e 49  gle thread.   ^I
1add0 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
1ade0 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65  iled with.** the
1adf0 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53   [SQLITE_THREADS
1ae00 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52  AFE | SQLITE_THR
1ae10 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69  EADSAFE=0] compi
1ae20 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74  le-time option t
1ae30 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  hen.** it is not
1ae40 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61   possible to cha
1ae50 6e 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69  nge the [threadi
1ae60 6e 67 20 6d 6f 64 65 5d 20 66 72 6f 6d 20 69 74  ng mode] from it
1ae70 73 20 64 65 66 61 75 6c 74 0a 2a 2a 20 76 61 6c  s default.** val
1ae80 75 65 20 6f 66 20 53 69 6e 67 6c 65 2d 74 68 72  ue of Single-thr
1ae90 65 61 64 20 61 6e 64 20 73 6f 20 5b 73 71 6c 69  ead and so [sqli
1aea0 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69  te3_config()] wi
1aeb0 6c 6c 20 72 65 74 75 72 6e 20 0a 2a 2a 20 5b 53  ll return .** [S
1aec0 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20  QLITE_ERROR] if 
1aed0 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20  called with the 
1aee0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49  SQLITE_CONFIG_SI
1aef0 4e 47 4c 45 54 48 52 45 41 44 0a 2a 2a 20 63 6f  NGLETHREAD.** co
1af00 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1af10 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  on.</dd>.**.** [
1af20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1af30 55 4c 54 49 54 48 52 45 41 44 5d 5d 20 3c 64 74  ULTITHREAD]] <dt
1af40 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  >SQLITE_CONFIG_M
1af50 55 4c 54 49 54 48 52 45 41 44 3c 2f 64 74 3e 0a  ULTITHREAD</dt>.
1af60 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65  ** <dd>There are
1af70 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f   no arguments to
1af80 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e   this option.  ^
1af90 54 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73  This option sets
1afa0 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69   the.** [threadi
1afb0 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74  ng mode] to Mult
1afc0 69 2d 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74  i-thread.  In ot
1afd0 68 65 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69  her words, it di
1afe0 73 61 62 6c 65 73 0a 2a 2a 20 6d 75 74 65 78 69  sables.** mutexi
1aff0 6e 67 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20  ng on [database 
1b000 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20  connection] and 
1b010 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
1b020 65 6e 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a  ent] objects..**
1b030 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   The application
1b040 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20   is responsible 
1b050 66 6f 72 20 73 65 72 69 61 6c 69 7a 69 6e 67 20  for serializing 
1b060 61 63 63 65 73 73 20 74 6f 0a 2a 2a 20 5b 64 61  access to.** [da
1b070 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1b080 6e 73 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65  ns] and [prepare
1b090 64 20 73 74 61 74 65 6d 65 6e 74 73 5d 2e 20 20  d statements].  
1b0a0 42 75 74 20 6f 74 68 65 72 20 6d 75 74 65 78 65  But other mutexe
1b0b0 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62 6c 65 64  s.** are enabled
1b0c0 20 73 6f 20 74 68 61 74 20 53 51 4c 69 74 65 20   so that SQLite 
1b0d0 77 69 6c 6c 20 62 65 20 73 61 66 65 20 74 6f 20  will be safe to 
1b0e0 75 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 2d 74  use in a multi-t
1b0f0 68 72 65 61 64 65 64 0a 2a 2a 20 65 6e 76 69 72  hreaded.** envir
1b100 6f 6e 6d 65 6e 74 20 61 73 20 6c 6f 6e 67 20 61  onment as long a
1b110 73 20 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73  s no two threads
1b120 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20   attempt to use 
1b130 74 68 65 20 73 61 6d 65 0a 2a 2a 20 5b 64 61 74  the same.** [dat
1b140 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1b150 5d 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69  ] at the same ti
1b160 6d 65 2e 20 20 5e 49 66 20 53 51 4c 69 74 65 20  me.  ^If SQLite 
1b170 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68  is compiled with
1b180 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
1b190 54 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c  THREADSAFE | SQL
1b1a0 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30  ITE_THREADSAFE=0
1b1b0 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
1b1c0 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74  ption then.** it
1b1d0 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65   is not possible
1b1e0 20 74 6f 20 73 65 74 20 74 68 65 20 4d 75 6c 74   to set the Mult
1b1f0 69 2d 74 68 72 65 61 64 20 5b 74 68 72 65 61 64  i-thread [thread
1b200 69 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a  ing mode] and.**
1b210 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67   [sqlite3_config
1b220 28 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  ()] will return 
1b230 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69  [SQLITE_ERROR] i
1b240 66 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68  f called with th
1b250 65 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 46  e.** SQLITE_CONF
1b260 49 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 63  IG_MULTITHREAD c
1b270 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1b280 69 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ion.</dd>.**.** 
1b290 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1b2a0 53 45 52 49 41 4c 49 5a 45 44 5d 5d 20 3c 64 74  SERIALIZED]] <dt
1b2b0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  >SQLITE_CONFIG_S
1b2c0 45 52 49 41 4c 49 5a 45 44 3c 2f 64 74 3e 0a 2a  ERIALIZED</dt>.*
1b2d0 2a 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20  * <dd>There are 
1b2e0 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  no arguments to 
1b2f0 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54  this option.  ^T
1b300 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  his option sets 
1b310 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e  the.** [threadin
1b320 67 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61  g mode] to Seria
1b330 6c 69 7a 65 64 2e 20 49 6e 20 6f 74 68 65 72 20  lized. In other 
1b340 77 6f 72 64 73 2c 20 74 68 69 73 20 6f 70 74 69  words, this opti
1b350 6f 6e 20 65 6e 61 62 6c 65 73 0a 2a 2a 20 61 6c  on enables.** al
1b360 6c 20 6d 75 74 65 78 65 73 20 69 6e 63 6c 75 64  l mutexes includ
1b370 69 6e 67 20 74 68 65 20 72 65 63 75 72 73 69 76  ing the recursiv
1b380 65 0a 2a 2a 20 6d 75 74 65 78 65 73 20 6f 6e 20  e.** mutexes on 
1b390 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
1b3a0 74 69 6f 6e 5d 20 61 6e 64 20 5b 70 72 65 70 61  tion] and [prepa
1b3b0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f  red statement] o
1b3c0 62 6a 65 63 74 73 2e 0a 2a 2a 20 49 6e 20 74 68  bjects..** In th
1b3d0 69 73 20 6d 6f 64 65 20 28 77 68 69 63 68 20 69  is mode (which i
1b3e0 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 68  s the default wh
1b3f0 65 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  en SQLite is com
1b400 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 5b 53  piled with.** [S
1b410 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1b420 3d 31 5d 29 20 74 68 65 20 53 51 4c 69 74 65 20  =1]) the SQLite 
1b430 6c 69 62 72 61 72 79 20 77 69 6c 6c 20 69 74 73  library will its
1b440 65 6c 66 20 73 65 72 69 61 6c 69 7a 65 20 61 63  elf serialize ac
1b450 63 65 73 73 0a 2a 2a 20 74 6f 20 5b 64 61 74 61  cess.** to [data
1b460 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
1b470 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20  ] and [prepared 
1b480 73 74 61 74 65 6d 65 6e 74 73 5d 20 73 6f 20 74  statements] so t
1b490 68 61 74 20 74 68 65 0a 2a 2a 20 61 70 70 6c 69  hat the.** appli
1b4a0 63 61 74 69 6f 6e 20 69 73 20 66 72 65 65 20 74  cation is free t
1b4b0 6f 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 5b  o use the same [
1b4c0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1b4d0 69 6f 6e 5d 20 6f 72 20 74 68 65 0a 2a 2a 20 73  ion] or the.** s
1b4e0 61 6d 65 20 5b 70 72 65 70 61 72 65 64 20 73 74  ame [prepared st
1b4f0 61 74 65 6d 65 6e 74 5d 20 69 6e 20 64 69 66 66  atement] in diff
1b500 65 72 65 6e 74 20 74 68 72 65 61 64 73 20 61 74  erent threads at
1b510 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a   the same time..
1b520 2a 2a 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73  ** ^If SQLite is
1b530 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a   compiled with.*
1b540 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48  * the [SQLITE_TH
1b550 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54  READSAFE | SQLIT
1b560 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20  E_THREADSAFE=0] 
1b570 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1b580 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69  ion then.** it i
1b590 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74  s not possible t
1b5a0 6f 20 73 65 74 20 74 68 65 20 53 65 72 69 61 6c  o set the Serial
1b5b0 69 7a 65 64 20 5b 74 68 72 65 61 64 69 6e 67 20  ized [threading 
1b5c0 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71  mode] and.** [sq
1b5d0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
1b5e0 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c  will return [SQL
1b5f0 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61  ITE_ERROR] if ca
1b600 6c 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a  lled with the.**
1b610 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53   SQLITE_CONFIG_S
1b620 45 52 49 41 4c 49 5a 45 44 20 63 6f 6e 66 69 67  ERIALIZED config
1b630 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c  uration option.<
1b640 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1b650 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
1b660 43 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  C]] <dt>SQLITE_C
1b670 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 3c 2f 64 74  ONFIG_MALLOC</dt
1b680 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20  >.** <dd> ^(The 
1b690 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
1b6a0 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65  LLOC option take
1b6b0 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
1b6c0 65 6e 74 20 77 68 69 63 68 20 69 73 20 0a 2a 2a  ent which is .**
1b6d0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1b6e0 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
1b6f0 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65   [sqlite3_mem_me
1b700 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65  thods] structure
1b710 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e  ..** The argumen
1b720 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 61  t specifies.** a
1b730 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c  lternative low-l
1b740 65 76 65 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  evel memory allo
1b750 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20  cation routines 
1b760 74 6f 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c  to be used in pl
1b770 61 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6d 65  ace of.** the me
1b780 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
1b790 72 6f 75 74 69 6e 65 73 20 62 75 69 6c 74 20 69  routines built i
1b7a0 6e 74 6f 20 53 51 4c 69 74 65 2e 29 5e 20 5e 53  nto SQLite.)^ ^S
1b7b0 51 4c 69 74 65 20 6d 61 6b 65 73 0a 2a 2a 20 69  QLite makes.** i
1b7c0 74 73 20 6f 77 6e 20 70 72 69 76 61 74 65 20 63  ts own private c
1b7d0 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65  opy of the conte
1b7e0 6e 74 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  nt of the [sqlit
1b7f0 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20  e3_mem_methods] 
1b800 73 74 72 75 63 74 75 72 65 0a 2a 2a 20 62 65 66  structure.** bef
1b810 6f 72 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33  ore the [sqlite3
1b820 5f 63 6f 6e 66 69 67 28 29 5d 20 63 61 6c 6c 20  _config()] call 
1b830 72 65 74 75 72 6e 73 2e 3c 2f 64 64 3e 0a 2a 2a  returns.</dd>.**
1b840 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e  .** [[SQLITE_CON
1b850 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 5d 5d 20  FIG_GETMALLOC]] 
1b860 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1b870 47 5f 47 45 54 4d 41 4c 4c 4f 43 3c 2f 64 74 3e  G_GETMALLOC</dt>
1b880 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
1b890 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1b8a0 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61  MALLOC option ta
1b8b0 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
1b8c0 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69  ument which.** i
1b8d0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1b8e0 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68  n instance of th
1b8f0 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  e [sqlite3_mem_m
1b900 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72  ethods] structur
1b910 65 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74  e..** The [sqlit
1b920 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 0a  e3_mem_methods].
1b930 2a 2a 20 73 74 72 75 63 74 75 72 65 20 69 73 20  ** structure is 
1b940 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20  filled with the 
1b950 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65  currently define
1b960 64 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  d memory allocat
1b970 69 6f 6e 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a  ion routines.)^.
1b980 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  ** This option c
1b990 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76  an be used to ov
1b9a0 65 72 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75  erload the defau
1b9b0 6c 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  lt memory alloca
1b9c0 74 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73  tion.** routines
1b9d0 20 77 69 74 68 20 61 20 77 72 61 70 70 65 72 20   with a wrapper 
1b9e0 74 68 61 74 20 73 69 6d 75 6c 61 74 69 6f 6e 73  that simulations
1b9f0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1ba00 6f 6e 20 66 61 69 6c 75 72 65 20 6f 72 0a 2a 2a  on failure or.**
1ba10 20 74 72 61 63 6b 73 20 6d 65 6d 6f 72 79 20 75   tracks memory u
1ba20 73 61 67 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c  sage, for exampl
1ba30 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  e. </dd>.**.** [
1ba40 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
1ba50 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64  MALL_MALLOC]] <d
1ba60 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1ba70 53 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 3c 2f 64 74  SMALL_MALLOC</dt
1ba80 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53  >.** <dd> ^The S
1ba90 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41  QLITE_CONFIG_SMA
1baa0 4c 4c 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e  LL_MALLOC option
1bab0 20 74 61 6b 65 73 20 73 69 6e 67 6c 65 20 61 72   takes single ar
1bac0 67 75 6d 65 6e 74 20 6f 66 0a 2a 2a 20 74 79 70  gument of.** typ
1bad0 65 20 69 6e 74 2c 20 69 6e 74 65 72 70 72 65 74  e int, interpret
1bae0 65 64 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c  ed as a boolean,
1baf0 20 77 68 69 63 68 20 69 66 20 74 72 75 65 20 70   which if true p
1bb00 72 6f 76 69 64 65 73 20 61 20 68 69 6e 74 20 74  rovides a hint t
1bb10 6f 0a 2a 2a 20 53 51 4c 69 74 65 20 74 68 61 74  o.** SQLite that
1bb20 20 69 74 20 73 68 6f 75 6c 64 20 61 76 6f 69 64   it should avoid
1bb30 20 6c 61 72 67 65 20 6d 65 6d 6f 72 79 20 61 6c   large memory al
1bb40 6c 6f 63 61 74 69 6f 6e 73 20 69 66 20 70 6f 73  locations if pos
1bb50 73 69 62 6c 65 2e 0a 2a 2a 20 53 51 4c 69 74 65  sible..** SQLite
1bb60 20 77 69 6c 6c 20 72 75 6e 20 66 61 73 74 65 72   will run faster
1bb70 20 69 66 20 69 74 20 69 73 20 66 72 65 65 20 74   if it is free t
1bb80 6f 20 6d 61 6b 65 20 6c 61 72 67 65 20 6d 65 6d  o make large mem
1bb90 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2c  ory allocations,
1bba0 0a 2a 2a 20 62 75 74 20 73 6f 6d 65 20 61 70 70  .** but some app
1bbb0 6c 69 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 70  lication might p
1bbc0 72 65 66 65 72 20 74 6f 20 72 75 6e 20 73 6c 6f  refer to run slo
1bbd0 77 65 72 20 69 6e 20 65 78 63 68 61 6e 67 65 20  wer in exchange 
1bbe0 66 6f 72 0a 2a 2a 20 67 75 61 72 61 6e 74 65 65  for.** guarantee
1bbf0 73 20 61 62 6f 75 74 20 6d 65 6d 6f 72 79 20 66  s about memory f
1bc00 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61  ragmentation tha
1bc10 74 20 61 72 65 20 70 6f 73 73 69 62 6c 65 20 69  t are possible i
1bc20 66 20 6c 61 72 67 65 0a 2a 2a 20 61 6c 6c 6f 63  f large.** alloc
1bc30 61 74 69 6f 6e 73 20 61 72 65 20 61 76 6f 69 64  ations are avoid
1bc40 65 64 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69  ed.  This hint i
1bc50 73 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 2e 0a  s normally off..
1bc60 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  ** </dd>.**.** [
1bc70 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  [SQLITE_CONFIG_M
1bc80 45 4d 53 54 41 54 55 53 5d 5d 20 3c 64 74 3e 53  EMSTATUS]] <dt>S
1bc90 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1bca0 53 54 41 54 55 53 3c 2f 64 74 3e 0a 2a 2a 20 3c  STATUS</dt>.** <
1bcb0 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f  dd> ^The SQLITE_
1bcc0 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
1bcd0 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 73 69   option takes si
1bce0 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66  ngle argument of
1bcf0 20 74 79 70 65 20 69 6e 74 2c 0a 2a 2a 20 69 6e   type int,.** in
1bd00 74 65 72 70 72 65 74 65 64 20 61 73 20 61 20 62  terpreted as a b
1bd10 6f 6f 6c 65 61 6e 2c 20 77 68 69 63 68 20 65 6e  oolean, which en
1bd20 61 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65  ables or disable
1bd30 73 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e  s the collection
1bd40 20 6f 66 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c   of.** memory al
1bd50 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74  location statist
1bd60 69 63 73 2e 20 5e 28 57 68 65 6e 20 6d 65 6d 6f  ics. ^(When memo
1bd70 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74  ry allocation st
1bd80 61 74 69 73 74 69 63 73 20 61 72 65 0a 2a 2a 20  atistics are.** 
1bd90 64 69 73 61 62 6c 65 64 2c 20 74 68 65 20 66 6f  disabled, the fo
1bda0 6c 6c 6f 77 69 6e 67 20 53 51 4c 69 74 65 20 69  llowing SQLite i
1bdb0 6e 74 65 72 66 61 63 65 73 20 62 65 63 6f 6d 65  nterfaces become
1bdc0 20 6e 6f 6e 2d 6f 70 65 72 61 74 69 6f 6e 61 6c   non-operational
1bdd0 3a 0a 2a 2a 20 20 20 3c 75 6c 3e 0a 2a 2a 20 20  :.**   <ul>.**  
1bde0 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d   <li> [sqlite3_m
1bdf0 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 0a 2a 2a  emory_used()].**
1be00 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33     <li> [sqlite3
1be10 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
1be20 72 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b  r()].**   <li> [
1be30 73 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61  sqlite3_soft_hea
1be40 70 5f 6c 69 6d 69 74 36 34 28 29 5d 0a 2a 2a 20  p_limit64()].** 
1be50 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
1be60 73 74 61 74 75 73 36 34 28 29 5d 0a 2a 2a 20 20  status64()].**  
1be70 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a 20 5e 4d 65 6d   </ul>)^.** ^Mem
1be80 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  ory allocation s
1be90 74 61 74 69 73 74 69 63 73 20 61 72 65 20 65 6e  tatistics are en
1bea0 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74  abled by default
1beb0 20 75 6e 6c 65 73 73 20 53 51 4c 69 74 65 20 69   unless SQLite i
1bec0 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 77 69  s.** compiled wi
1bed0 74 68 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55  th [SQLITE_DEFAU
1bee0 4c 54 5f 4d 45 4d 53 54 41 54 55 53 5d 3d 30 20  LT_MEMSTATUS]=0 
1bef0 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 6d 65  in which case me
1bf00 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69  mory.** allocati
1bf10 6f 6e 20 73 74 61 74 69 73 74 69 63 73 20 61 72  on statistics ar
1bf20 65 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65  e disabled by de
1bf30 66 61 75 6c 74 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  fault..** </dd>.
1bf40 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1bf50 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 5d 5d 20  ONFIG_SCRATCH]] 
1bf60 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1bf70 47 5f 53 43 52 41 54 43 48 3c 2f 64 74 3e 0a 2a  G_SCRATCH</dt>.*
1bf80 2a 20 3c 64 64 3e 20 54 68 65 20 53 51 4c 49 54  * <dd> The SQLIT
1bf90 45 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48  E_CONFIG_SCRATCH
1bfa0 20 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f   option is no lo
1bfb0 6e 67 65 72 20 75 73 65 64 2e 0a 2a 2a 20 3c 2f  nger used..** </
1bfc0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1bfd0 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41  TE_CONFIG_PAGECA
1bfe0 43 48 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  CHE]] <dt>SQLITE
1bff0 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48  _CONFIG_PAGECACH
1c000 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  E</dt>.** <dd> ^
1c010 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1c020 47 5f 50 41 47 45 43 41 43 48 45 20 6f 70 74 69  G_PAGECACHE opti
1c030 6f 6e 20 73 70 65 63 69 66 69 65 73 20 61 20 6d  on specifies a m
1c040 65 6d 6f 72 79 20 70 6f 6f 6c 0a 2a 2a 20 74 68  emory pool.** th
1c050 61 74 20 53 51 4c 69 74 65 20 63 61 6e 20 75 73  at SQLite can us
1c060 65 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61  e for the databa
1c070 73 65 20 70 61 67 65 20 63 61 63 68 65 20 77 69  se page cache wi
1c080 74 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 70  th the default p
1c090 61 67 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70  age.** cache imp
1c0a0 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 0a 2a  lementation.  .*
1c0b0 2a 20 54 68 69 73 20 63 6f 6e 66 69 67 75 72 61  * This configura
1c0c0 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 61  tion option is a
1c0d0 20 6e 6f 2d 6f 70 20 69 66 20 61 6e 20 61 70 70   no-op if an app
1c0e0 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 20  lication-define 
1c0f0 70 61 67 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d  page.** cache im
1c100 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20  plementation is 
1c110 6c 6f 61 64 65 64 20 75 73 69 6e 67 20 74 68 65  loaded using the
1c120 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
1c130 50 43 41 43 48 45 32 5d 2e 0a 2a 2a 20 5e 54 68  PCACHE2]..** ^Th
1c140 65 72 65 20 61 72 65 20 74 68 72 65 65 20 61 72  ere are three ar
1c150 67 75 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49 54  guments to SQLIT
1c160 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43  E_CONFIG_PAGECAC
1c170 48 45 3a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f  HE: A pointer to
1c180 0a 2a 2a 20 38 2d 62 79 74 65 20 61 6c 69 67 6e  .** 8-byte align
1c190 65 64 20 6d 65 6d 6f 72 79 20 28 70 4d 65 6d 29  ed memory (pMem)
1c1a0 2c 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61  , the size of ea
1c1b0 63 68 20 70 61 67 65 20 63 61 63 68 65 20 6c 69  ch page cache li
1c1c0 6e 65 20 28 73 7a 29 2c 0a 2a 2a 20 61 6e 64 20  ne (sz),.** and 
1c1d0 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 61  the number of ca
1c1e0 63 68 65 20 6c 69 6e 65 73 20 28 4e 29 2e 0a 2a  che lines (N)..*
1c1f0 2a 20 54 68 65 20 73 7a 20 61 72 67 75 6d 65 6e  * The sz argumen
1c200 74 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20  t should be the 
1c210 73 69 7a 65 20 6f 66 20 74 68 65 20 6c 61 72 67  size of the larg
1c220 65 73 74 20 64 61 74 61 62 61 73 65 20 70 61 67  est database pag
1c230 65 0a 2a 2a 20 28 61 20 70 6f 77 65 72 20 6f 66  e.** (a power of
1c240 20 74 77 6f 20 62 65 74 77 65 65 6e 20 35 31 32   two between 512
1c250 20 61 6e 64 20 36 35 35 33 36 29 20 70 6c 75 73   and 65536) plus
1c260 20 73 6f 6d 65 20 65 78 74 72 61 20 62 79 74 65   some extra byte
1c270 73 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 70 61  s for each.** pa
1c280 67 65 20 68 65 61 64 65 72 2e 20 20 5e 54 68 65  ge header.  ^The
1c290 20 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 72 61   number of extra
1c2a0 20 62 79 74 65 73 20 6e 65 65 64 65 64 20 62 79   bytes needed by
1c2b0 20 74 68 65 20 70 61 67 65 20 68 65 61 64 65 72   the page header
1c2c0 0a 2a 2a 20 63 61 6e 20 62 65 20 64 65 74 65 72  .** can be deter
1c2d0 6d 69 6e 65 64 20 75 73 69 6e 67 20 5b 53 51 4c  mined using [SQL
1c2e0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1c2f0 45 5f 48 44 52 53 5a 5d 2e 0a 2a 2a 20 5e 49 74  E_HDRSZ]..** ^It
1c300 20 69 73 20 68 61 72 6d 6c 65 73 73 2c 20 61 70   is harmless, ap
1c310 61 72 74 20 66 72 6f 6d 20 74 68 65 20 77 61 73  art from the was
1c320 74 65 64 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 66  ted memory,.** f
1c330 6f 72 20 74 68 65 20 73 7a 20 70 61 72 61 6d 65  or the sz parame
1c340 74 65 72 20 74 6f 20 62 65 20 6c 61 72 67 65 72  ter to be larger
1c350 20 74 68 61 6e 20 6e 65 63 65 73 73 61 72 79 2e   than necessary.
1c360 20 20 54 68 65 20 70 4d 65 6d 0a 2a 2a 20 61 72    The pMem.** ar
1c370 67 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 65  gument must be e
1c380 69 74 68 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69  ither a NULL poi
1c390 6e 74 65 72 20 6f 72 20 61 20 70 6f 69 6e 74 65  nter or a pointe
1c3a0 72 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a 2a  r to an 8-byte.*
1c3b0 2a 20 61 6c 69 67 6e 65 64 20 62 6c 6f 63 6b 20  * aligned block 
1c3c0 6f 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20  of memory of at 
1c3d0 6c 65 61 73 74 20 73 7a 2a 4e 20 62 79 74 65 73  least sz*N bytes
1c3e0 2c 20 6f 74 68 65 72 77 69 73 65 0a 2a 2a 20 73  , otherwise.** s
1c3f0 75 62 73 65 71 75 65 6e 74 20 62 65 68 61 76 69  ubsequent behavi
1c400 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  or is undefined.
1c410 0a 2a 2a 20 5e 57 68 65 6e 20 70 4d 65 6d 20 69  .** ^When pMem i
1c420 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 53 51 4c 69  s not NULL, SQLi
1c430 74 65 20 77 69 6c 6c 20 73 74 72 69 76 65 20 74  te will strive t
1c440 6f 20 75 73 65 20 74 68 65 20 6d 65 6d 6f 72 79  o use the memory
1c450 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20 74 6f 20   provided.** to 
1c460 73 61 74 69 73 66 79 20 70 61 67 65 20 63 61 63  satisfy page cac
1c470 68 65 20 6e 65 65 64 73 2c 20 66 61 6c 6c 69 6e  he needs, fallin
1c480 67 20 62 61 63 6b 20 74 6f 20 5b 73 71 6c 69 74  g back to [sqlit
1c490 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 69 66 0a  e3_malloc()] if.
1c4a0 2a 2a 20 61 20 70 61 67 65 20 63 61 63 68 65 20  ** a page cache 
1c4b0 6c 69 6e 65 20 69 73 20 6c 61 72 67 65 72 20 74  line is larger t
1c4c0 68 61 6e 20 73 7a 20 62 79 74 65 73 20 6f 72 20  han sz bytes or 
1c4d0 69 66 20 61 6c 6c 20 6f 66 20 74 68 65 20 70 4d  if all of the pM
1c4e0 65 6d 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20  em buffer.** is 
1c4f0 65 78 68 61 75 73 74 65 64 2e 0a 2a 2a 20 5e 49  exhausted..** ^I
1c500 66 20 70 4d 65 6d 20 69 73 20 4e 55 4c 4c 20 61  f pMem is NULL a
1c510 6e 64 20 4e 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f  nd N is non-zero
1c520 2c 20 74 68 65 6e 20 65 61 63 68 20 64 61 74 61  , then each data
1c530 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a  base connection.
1c540 2a 2a 20 64 6f 65 73 20 61 6e 20 69 6e 69 74 69  ** does an initi
1c550 61 6c 20 62 75 6c 6b 20 61 6c 6c 6f 63 61 74 69  al bulk allocati
1c560 6f 6e 20 66 6f 72 20 70 61 67 65 20 63 61 63 68  on for page cach
1c570 65 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66 72 6f 6d  e memory.** from
1c580 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
1c590 28 29 5d 20 73 75 66 66 69 63 69 65 6e 74 20 66  ()] sufficient f
1c5a0 6f 72 20 4e 20 63 61 63 68 65 20 6c 69 6e 65 73  or N cache lines
1c5b0 20 69 66 20 4e 20 69 73 20 70 6f 73 69 74 69 76   if N is positiv
1c5c0 65 20 6f 72 0a 2a 2a 20 6f 66 20 2d 31 30 32 34  e or.** of -1024
1c5d0 2a 4e 20 62 79 74 65 73 20 69 66 20 4e 20 69 73  *N bytes if N is
1c5e0 20 6e 65 67 61 74 69 76 65 2c 20 2e 20 5e 49 66   negative, . ^If
1c5f0 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 70   additional.** p
1c600 61 67 65 20 63 61 63 68 65 20 6d 65 6d 6f 72 79  age cache memory
1c610 20 69 73 20 6e 65 65 64 65 64 20 62 65 79 6f 6e   is needed beyon
1c620 64 20 77 68 61 74 20 69 73 20 70 72 6f 76 69 64  d what is provid
1c630 65 64 20 62 79 20 74 68 65 20 69 6e 69 74 69 61  ed by the initia
1c640 6c 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c  l.** allocation,
1c650 20 74 68 65 6e 20 53 51 4c 69 74 65 20 67 6f 65   then SQLite goe
1c660 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61  s to [sqlite3_ma
1c670 6c 6c 6f 63 28 29 5d 20 73 65 70 61 72 61 74 65  lloc()] separate
1c680 6c 79 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 61  ly for each.** a
1c690 64 64 69 74 69 6f 6e 61 6c 20 63 61 63 68 65 20  dditional cache 
1c6a0 6c 69 6e 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  line. </dd>.**.*
1c6b0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1c6c0 47 5f 48 45 41 50 5d 5d 20 3c 64 74 3e 53 51 4c  G_HEAP]] <dt>SQL
1c6d0 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 3c  ITE_CONFIG_HEAP<
1c6e0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
1c6f0 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1c700 48 45 41 50 20 6f 70 74 69 6f 6e 20 73 70 65 63  HEAP option spec
1c710 69 66 69 65 73 20 61 20 73 74 61 74 69 63 20 6d  ifies a static m
1c720 65 6d 6f 72 79 20 62 75 66 66 65 72 20 0a 2a 2a  emory buffer .**
1c730 20 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c   that SQLite wil
1c740 6c 20 75 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66  l use for all of
1c750 20 69 74 73 20 64 79 6e 61 6d 69 63 20 6d 65 6d   its dynamic mem
1c760 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e  ory allocation n
1c770 65 65 64 73 0a 2a 2a 20 62 65 79 6f 6e 64 20 74  eeds.** beyond t
1c780 68 6f 73 65 20 70 72 6f 76 69 64 65 64 20 66 6f  hose provided fo
1c790 72 20 62 79 20 5b 53 51 4c 49 54 45 5f 43 4f 4e  r by [SQLITE_CON
1c7a0 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a  FIG_PAGECACHE]..
1c7b0 2a 2a 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  ** ^The SQLITE_C
1c7c0 4f 4e 46 49 47 5f 48 45 41 50 20 6f 70 74 69 6f  ONFIG_HEAP optio
1c7d0 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  n is only availa
1c7e0 62 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69 73  ble if SQLite is
1c7f0 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 77 69 74   compiled.** wit
1c800 68 20 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45  h either [SQLITE
1c810 5f 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 5d  _ENABLE_MEMSYS3]
1c820 20 6f 72 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42   or [SQLITE_ENAB
1c830 4c 45 5f 4d 45 4d 53 59 53 35 5d 20 61 6e 64 20  LE_MEMSYS5] and 
1c840 72 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49  returns.** [SQLI
1c850 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 69 6e 76  TE_ERROR] if inv
1c860 6f 6b 65 64 20 6f 74 68 65 72 77 69 73 65 2e 0a  oked otherwise..
1c870 2a 2a 20 5e 54 68 65 72 65 20 61 72 65 20 74 68  ** ^There are th
1c880 72 65 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f  ree arguments to
1c890 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48   SQLITE_CONFIG_H
1c8a0 45 41 50 3a 0a 2a 2a 20 41 6e 20 38 2d 62 79 74  EAP:.** An 8-byt
1c8b0 65 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65  e aligned pointe
1c8c0 72 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 2c  r to the memory,
1c8d0 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  .** the number o
1c8e0 66 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 6d  f bytes in the m
1c8f0 65 6d 6f 72 79 20 62 75 66 66 65 72 2c 20 61 6e  emory buffer, an
1c900 64 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c  d the minimum al
1c910 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 2e 0a 2a  location size..*
1c920 2a 20 5e 49 66 20 74 68 65 20 66 69 72 73 74 20  * ^If the first 
1c930 70 6f 69 6e 74 65 72 20 28 74 68 65 20 6d 65 6d  pointer (the mem
1c940 6f 72 79 20 70 6f 69 6e 74 65 72 29 20 69 73 20  ory pointer) is 
1c950 4e 55 4c 4c 2c 20 74 68 65 6e 20 53 51 4c 69 74  NULL, then SQLit
1c960 65 20 72 65 76 65 72 74 73 0a 2a 2a 20 74 6f 20  e reverts.** to 
1c970 75 73 69 6e 67 20 69 74 73 20 64 65 66 61 75 6c  using its defaul
1c980 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  t memory allocat
1c990 6f 72 20 28 74 68 65 20 73 79 73 74 65 6d 20 6d  or (the system m
1c9a0 61 6c 6c 6f 63 28 29 20 69 6d 70 6c 65 6d 65 6e  alloc() implemen
1c9b0 74 61 74 69 6f 6e 29 2c 0a 2a 2a 20 75 6e 64 6f  tation),.** undo
1c9c0 69 6e 67 20 61 6e 79 20 70 72 69 6f 72 20 69 6e  ing any prior in
1c9d0 76 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 53 51 4c  vocation of [SQL
1c9e0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f  ITE_CONFIG_MALLO
1c9f0 43 5d 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20  C].  ^If the.** 
1ca00 6d 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 20 69  memory pointer i
1ca10 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20  s not NULL then 
1ca20 74 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20  the alternative 
1ca30 6d 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61  memory.** alloca
1ca40 74 6f 72 20 69 73 20 65 6e 67 61 67 65 64 20 74  tor is engaged t
1ca50 6f 20 68 61 6e 64 6c 65 20 61 6c 6c 20 6f 66 20  o handle all of 
1ca60 53 51 4c 69 74 65 73 20 6d 65 6d 6f 72 79 20 61  SQLites memory a
1ca70 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e  llocation needs.
1ca80 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 6f  .** The first po
1ca90 69 6e 74 65 72 20 28 74 68 65 20 6d 65 6d 6f 72  inter (the memor
1caa0 79 20 70 6f 69 6e 74 65 72 29 20 6d 75 73 74 20  y pointer) must 
1cab0 62 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e  be aligned to an
1cac0 20 38 2d 62 79 74 65 0a 2a 2a 20 62 6f 75 6e 64   8-byte.** bound
1cad0 61 72 79 20 6f 72 20 73 75 62 73 65 71 75 65 6e  ary or subsequen
1cae0 74 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51  t behavior of SQ
1caf0 4c 69 74 65 20 77 69 6c 6c 20 62 65 20 75 6e 64  Lite will be und
1cb00 65 66 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20 6d  efined..** The m
1cb10 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f  inimum allocatio
1cb20 6e 20 73 69 7a 65 20 69 73 20 63 61 70 70 65 64  n size is capped
1cb30 20 61 74 20 32 2a 2a 31 32 2e 20 52 65 61 73 6f   at 2**12. Reaso
1cb40 6e 61 62 6c 65 20 76 61 6c 75 65 73 0a 2a 2a 20  nable values.** 
1cb50 66 6f 72 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20  for the minimum 
1cb60 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20  allocation size 
1cb70 61 72 65 20 32 2a 2a 35 20 74 68 72 6f 75 67 68  are 2**5 through
1cb80 20 32 2a 2a 38 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a   2**8.</dd>.**.*
1cb90 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1cba0 47 5f 4d 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51  G_MUTEX]] <dt>SQ
1cbb0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45  LITE_CONFIG_MUTE
1cbc0 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  X</dt>.** <dd> ^
1cbd0 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1cbe0 49 47 5f 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20  IG_MUTEX option 
1cbf0 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61  takes a single a
1cc00 72 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73  rgument which is
1cc10 20 61 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f   a.** pointer to
1cc20 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20   an instance of 
1cc30 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  the [sqlite3_mut
1cc40 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75  ex_methods] stru
1cc50 63 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61 72  cture..** The ar
1cc60 67 75 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73  gument specifies
1cc70 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 77   alternative low
1cc80 2d 6c 65 76 65 6c 20 6d 75 74 65 78 20 72 6f 75  -level mutex rou
1cc90 74 69 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64  tines to be used
1cca0 0a 2a 2a 20 69 6e 20 70 6c 61 63 65 20 74 68 65  .** in place the
1ccb0 20 6d 75 74 65 78 20 72 6f 75 74 69 6e 65 73 20   mutex routines 
1ccc0 62 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74  built into SQLit
1ccd0 65 2e 29 5e 20 20 5e 53 51 4c 69 74 65 20 6d 61  e.)^  ^SQLite ma
1cce0 6b 65 73 20 61 20 63 6f 70 79 20 6f 66 0a 2a 2a  kes a copy of.**
1ccf0 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20   the content of 
1cd00 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  the [sqlite3_mut
1cd10 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75  ex_methods] stru
1cd20 63 74 75 72 65 20 62 65 66 6f 72 65 20 74 68 65  cture before the
1cd30 20 63 61 6c 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c   call to.** [sql
1cd40 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 72  ite3_config()] r
1cd50 65 74 75 72 6e 73 2e 20 5e 49 66 20 53 51 4c 69  eturns. ^If SQLi
1cd60 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77  te is compiled w
1cd70 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49  ith.** the [SQLI
1cd80 54 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20  TE_THREADSAFE | 
1cd90 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46  SQLITE_THREADSAF
1cda0 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  E=0] compile-tim
1cdb0 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a  e option then.**
1cdc0 20 74 68 65 20 65 6e 74 69 72 65 20 6d 75 74 65   the entire mute
1cdd0 78 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20 69  xing subsystem i
1cde0 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74  s omitted from t
1cdf0 68 65 20 62 75 69 6c 64 20 61 6e 64 20 68 65 6e  he build and hen
1ce00 63 65 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b  ce calls to.** [
1ce10 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
1ce20 5d 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54  ] with the SQLIT
1ce30 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 63  E_CONFIG_MUTEX c
1ce40 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74  onfiguration opt
1ce50 69 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65 74 75  ion will.** retu
1ce60 72 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52  rn [SQLITE_ERROR
1ce70 5d 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  ].</dd>.**.** [[
1ce80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1ce90 54 4d 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c  TMUTEX]] <dt>SQL
1cea0 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55  ITE_CONFIG_GETMU
1ceb0 54 45 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  TEX</dt>.** <dd>
1cec0 20 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f   ^(The SQLITE_CO
1ced0 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 20 6f 70  NFIG_GETMUTEX op
1cee0 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e  tion takes a sin
1cef0 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69  gle argument whi
1cf00 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74  ch.** is a point
1cf10 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
1cf20 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65  e of the [sqlite
1cf30 33 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d  3_mutex_methods]
1cf40 20 73 74 72 75 63 74 75 72 65 2e 20 20 54 68 65   structure.  The
1cf50 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74  .** [sqlite3_mut
1cf60 65 78 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 73  ex_methods].** s
1cf70 74 72 75 63 74 75 72 65 20 69 73 20 66 69 6c 6c  tructure is fill
1cf80 65 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72  ed with the curr
1cf90 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 6d 75  ently defined mu
1cfa0 74 65 78 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a  tex routines.)^.
1cfb0 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63  ** This option c
1cfc0 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76  an be used to ov
1cfd0 65 72 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75  erload the defau
1cfe0 6c 74 20 6d 75 74 65 78 20 61 6c 6c 6f 63 61 74  lt mutex allocat
1cff0 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20  ion.** routines 
1d000 77 69 74 68 20 61 20 77 72 61 70 70 65 72 20 75  with a wrapper u
1d010 73 65 64 20 74 6f 20 74 72 61 63 6b 20 6d 75 74  sed to track mut
1d020 65 78 20 75 73 61 67 65 20 66 6f 72 20 70 65 72  ex usage for per
1d030 66 6f 72 6d 61 6e 63 65 0a 2a 2a 20 70 72 6f 66  formance.** prof
1d040 69 6c 69 6e 67 20 6f 72 20 74 65 73 74 69 6e 67  iling or testing
1d050 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 20  , for example.  
1d060 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63   ^If SQLite is c
1d070 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
1d080 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
1d090 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f  ADSAFE | SQLITE_
1d0a0 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f  THREADSAFE=0] co
1d0b0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1d0c0 6e 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e  n then.** the en
1d0d0 74 69 72 65 20 6d 75 74 65 78 69 6e 67 20 73 75  tire mutexing su
1d0e0 62 73 79 73 74 65 6d 20 69 73 20 6f 6d 69 74 74  bsystem is omitt
1d0f0 65 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c  ed from the buil
1d100 64 20 61 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c  d and hence call
1d110 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  s to.** [sqlite3
1d120 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 74 68 20  _config()] with 
1d130 74 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  the SQLITE_CONFI
1d140 47 5f 47 45 54 4d 55 54 45 58 20 63 6f 6e 66 69  G_GETMUTEX confi
1d150 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
1d160 77 69 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e 20 5b  will.** return [
1d170 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f  SQLITE_ERROR].</
1d180 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1d190 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  TE_CONFIG_LOOKAS
1d1a0 49 44 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  IDE]] <dt>SQLITE
1d1b0 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  _CONFIG_LOOKASID
1d1c0 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  E</dt>.** <dd> ^
1d1d0 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1d1e0 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 6f 70 74  IG_LOOKASIDE opt
1d1f0 69 6f 6e 20 74 61 6b 65 73 20 74 77 6f 20 61 72  ion takes two ar
1d200 67 75 6d 65 6e 74 73 20 74 68 61 74 20 64 65 74  guments that det
1d210 65 72 6d 69 6e 65 0a 2a 2a 20 74 68 65 20 64 65  ermine.** the de
1d220 66 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 6c 6f  fault size of lo
1d230 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 6f  okaside memory o
1d240 6e 20 65 61 63 68 20 5b 64 61 74 61 62 61 73 65  n each [database
1d250 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a   connection]..**
1d260 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   The first argum
1d270 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 73 69  ent is the.** si
1d280 7a 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61  ze of each looka
1d290 73 69 64 65 20 62 75 66 66 65 72 20 73 6c 6f 74  side buffer slot
1d2a0 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 20   and the second 
1d2b0 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  is the number of
1d2c0 0a 2a 2a 20 73 6c 6f 74 73 20 61 6c 6c 6f 63 61  .** slots alloca
1d2d0 74 65 64 20 74 6f 20 65 61 63 68 20 64 61 74 61  ted to each data
1d2e0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
1d2f0 29 5e 20 20 5e 28 53 51 4c 49 54 45 5f 43 4f 4e  )^  ^(SQLITE_CON
1d300 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 0a 2a 2a  FIG_LOOKASIDE.**
1d310 20 73 65 74 73 20 74 68 65 20 3c 69 3e 64 65 66   sets the <i>def
1d320 61 75 6c 74 3c 2f 69 3e 20 6c 6f 6f 6b 61 73 69  ault</i> lookasi
1d330 64 65 20 73 69 7a 65 2e 20 54 68 65 20 5b 53 51  de size. The [SQ
1d340 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f  LITE_DBCONFIG_LO
1d350 4f 4b 41 53 49 44 45 5d 0a 2a 2a 20 6f 70 74 69  OKASIDE].** opti
1d360 6f 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64  on to [sqlite3_d
1d370 62 5f 63 6f 6e 66 69 67 28 29 5d 20 63 61 6e 20  b_config()] can 
1d380 62 65 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67  be used to chang
1d390 65 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 0a  e the lookaside.
1d3a0 2a 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ** configuration
1d3b0 20 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 63   on individual c
1d3c0 6f 6e 6e 65 63 74 69 6f 6e 73 2e 29 5e 20 3c 2f  onnections.)^ </
1d3d0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1d3e0 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1d3f0 32 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  2]] <dt>SQLITE_C
1d400 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 3c 2f 64  ONFIG_PCACHE2</d
1d410 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65  t>.** <dd> ^(The
1d420 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50   SQLITE_CONFIG_P
1d430 43 41 43 48 45 32 20 6f 70 74 69 6f 6e 20 74 61  CACHE2 option ta
1d440 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
1d450 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 0a  ument which is .
1d460 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  ** a pointer to 
1d470 61 6e 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63  an [sqlite3_pcac
1d480 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a  he_methods2] obj
1d490 65 63 74 2e 20 20 54 68 69 73 20 6f 62 6a 65 63  ect.  This objec
1d4a0 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 74  t specifies.** t
1d4b0 68 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20  he interface to 
1d4c0 61 20 63 75 73 74 6f 6d 20 70 61 67 65 20 63 61  a custom page ca
1d4d0 63 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  che implementati
1d4e0 6f 6e 2e 29 5e 0a 2a 2a 20 5e 53 51 4c 69 74 65  on.)^.** ^SQLite
1d4f0 20 6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66   makes a copy of
1d500 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 63   the [sqlite3_pc
1d510 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f  ache_methods2] o
1d520 62 6a 65 63 74 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a  bject.</dd>.**.*
1d530 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1d540 47 5f 47 45 54 50 43 41 43 48 45 32 5d 5d 20 3c  G_GETPCACHE2]] <
1d550 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1d560 5f 47 45 54 50 43 41 43 48 45 32 3c 2f 64 74 3e  _GETPCACHE2</dt>
1d570 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
1d580 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1d590 50 43 41 43 48 45 32 20 6f 70 74 69 6f 6e 20 74  PCACHE2 option t
1d5a0 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
1d5b0 67 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20  gument which.** 
1d5c0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
1d5d0 61 6e 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63  an [sqlite3_pcac
1d5e0 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a  he_methods2] obj
1d5f0 65 63 74 2e 20 20 53 51 4c 69 74 65 20 63 6f 70  ect.  SQLite cop
1d600 69 65 73 20 6f 66 0a 2a 2a 20 74 68 65 20 63 75  ies of.** the cu
1d610 72 72 65 6e 74 20 70 61 67 65 20 63 61 63 68 65  rrent page cache
1d620 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
1d630 69 6e 74 6f 20 74 68 61 74 20 6f 62 6a 65 63 74  into that object
1d640 2e 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .)^ </dd>.**.** 
1d650 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1d660 4c 4f 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  LOG]] <dt>SQLITE
1d670 5f 43 4f 4e 46 49 47 5f 4c 4f 47 3c 2f 64 74 3e  _CONFIG_LOG</dt>
1d680 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 20 53 51 4c  .** <dd> The SQL
1d690 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f  ITE_CONFIG_LOG o
1d6a0 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ption is used to
1d6b0 20 63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 53   configure the S
1d6c0 51 4c 69 74 65 0a 2a 2a 20 67 6c 6f 62 61 6c 20  QLite.** global 
1d6d0 5b 65 72 72 6f 72 20 6c 6f 67 5d 2e 0a 2a 2a 20  [error log]..** 
1d6e0 28 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  (^The SQLITE_CON
1d6f0 46 49 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 74  FIG_LOG option t
1d700 61 6b 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e  akes two argumen
1d710 74 73 3a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  ts: a pointer to
1d720 20 61 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77   a.** function w
1d730 69 74 68 20 61 20 63 61 6c 6c 20 73 69 67 6e 61  ith a call signa
1d740 74 75 72 65 20 6f 66 20 76 6f 69 64 28 2a 29 28  ture of void(*)(
1d750 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20  void*,int,const 
1d760 63 68 61 72 2a 29 2c 20 0a 2a 2a 20 61 6e 64 20  char*), .** and 
1d770 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 6f 69  a pointer to voi
1d780 64 2e 20 5e 49 66 20 74 68 65 20 66 75 6e 63 74  d. ^If the funct
1d790 69 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 6e  ion pointer is n
1d7a0 6f 74 20 4e 55 4c 4c 2c 20 69 74 20 69 73 0a 2a  ot NULL, it is.*
1d7b0 2a 20 69 6e 76 6f 6b 65 64 20 62 79 20 5b 73 71  * invoked by [sq
1d7c0 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 74 6f 20  lite3_log()] to 
1d7d0 70 72 6f 63 65 73 73 20 65 61 63 68 20 6c 6f 67  process each log
1d7e0 67 69 6e 67 20 65 76 65 6e 74 2e 20 20 5e 49 66  ging event.  ^If
1d7f0 20 74 68 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e   the.** function
1d800 20 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c   pointer is NULL
1d810 2c 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c  , the [sqlite3_l
1d820 6f 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20  og()] interface 
1d830 62 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e  becomes a no-op.
1d840 0a 2a 2a 20 5e 54 68 65 20 76 6f 69 64 20 70 6f  .** ^The void po
1d850 69 6e 74 65 72 20 74 68 61 74 20 69 73 20 74 68  inter that is th
1d860 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e  e second argumen
1d870 74 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46  t to SQLITE_CONF
1d880 49 47 5f 4c 4f 47 20 69 73 0a 2a 2a 20 70 61 73  IG_LOG is.** pas
1d890 73 65 64 20 74 68 72 6f 75 67 68 20 61 73 20 74  sed through as t
1d8a0 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74  he first paramet
1d8b0 65 72 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63  er to the applic
1d8c0 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c 6f  ation-defined lo
1d8d0 67 67 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e  gger.** function
1d8e0 20 77 68 65 6e 65 76 65 72 20 74 68 61 74 20 66   whenever that f
1d8f0 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b  unction is invok
1d900 65 64 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e 64  ed.  ^The second
1d910 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a   parameter to.**
1d920 20 74 68 65 20 6c 6f 67 67 65 72 20 66 75 6e 63   the logger func
1d930 74 69 6f 6e 20 69 73 20 61 20 63 6f 70 79 20 6f  tion is a copy o
1d940 66 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61  f the first para
1d950 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 6f 72  meter to the cor
1d960 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20 5b 73  responding.** [s
1d970 71 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 63 61  qlite3_log()] ca
1d980 6c 6c 20 61 6e 64 20 69 73 20 69 6e 74 65 6e 64  ll and is intend
1d990 65 64 20 74 6f 20 62 65 20 61 20 5b 72 65 73 75  ed to be a [resu
1d9a0 6c 74 20 63 6f 64 65 5d 20 6f 72 20 61 6e 0a 2a  lt code] or an.*
1d9b0 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75  * [extended resu
1d9c0 6c 74 20 63 6f 64 65 5d 2e 20 20 5e 54 68 65 20  lt code].  ^The 
1d9d0 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
1d9e0 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 6c 6f  passed to the lo
1d9f0 67 67 65 72 20 69 73 0a 2a 2a 20 6c 6f 67 20 6d  gger is.** log m
1da00 65 73 73 61 67 65 20 61 66 74 65 72 20 66 6f 72  essage after for
1da10 6d 61 74 74 69 6e 67 20 76 69 61 20 5b 73 71 6c  matting via [sql
1da20 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d  ite3_snprintf()]
1da30 2e 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20  ..** The SQLite 
1da40 6c 6f 67 67 69 6e 67 20 69 6e 74 65 72 66 61 63  logging interfac
1da50 65 20 69 73 20 6e 6f 74 20 72 65 65 6e 74 72 61  e is not reentra
1da60 6e 74 3b 20 74 68 65 20 6c 6f 67 67 65 72 20 66  nt; the logger f
1da70 75 6e 63 74 69 6f 6e 0a 2a 2a 20 73 75 70 70 6c  unction.** suppl
1da80 69 65 64 20 62 79 20 74 68 65 20 61 70 70 6c 69  ied by the appli
1da90 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20  cation must not 
1daa0 69 6e 76 6f 6b 65 20 61 6e 79 20 53 51 4c 69 74  invoke any SQLit
1dab0 65 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 20  e interface..** 
1dac0 49 6e 20 61 20 6d 75 6c 74 69 2d 74 68 72 65 61  In a multi-threa
1dad0 64 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c  ded application,
1dae0 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
1daf0 2d 64 65 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a  -defined logger.
1db00 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74  ** function must
1db10 20 62 65 20 74 68 72 65 61 64 73 61 66 65 2e 20   be threadsafe. 
1db20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1db30 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 5d  LITE_CONFIG_URI]
1db40 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1db50 46 49 47 5f 55 52 49 0a 2a 2a 20 3c 64 64 3e 5e  FIG_URI.** <dd>^
1db60 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  (The SQLITE_CONF
1db70 49 47 5f 55 52 49 20 6f 70 74 69 6f 6e 20 74 61  IG_URI option ta
1db80 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
1db90 75 6d 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e  ument of type in
1dba0 74 2e 0a 2a 2a 20 49 66 20 6e 6f 6e 2d 7a 65 72  t..** If non-zer
1dbb0 6f 2c 20 74 68 65 6e 20 55 52 49 20 68 61 6e 64  o, then URI hand
1dbc0 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79  ling is globally
1dbd0 20 65 6e 61 62 6c 65 64 2e 20 49 66 20 74 68 65   enabled. If the
1dbe0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 7a 65   parameter is ze
1dbf0 72 6f 2c 0a 2a 2a 20 74 68 65 6e 20 55 52 49 20  ro,.** then URI 
1dc00 68 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62  handling is glob
1dc10 61 6c 6c 79 20 64 69 73 61 62 6c 65 64 2e 29 5e  ally disabled.)^
1dc20 20 5e 49 66 20 55 52 49 20 68 61 6e 64 6c 69 6e   ^If URI handlin
1dc30 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a  g is globally.**
1dc40 20 65 6e 61 62 6c 65 64 2c 20 61 6c 6c 20 66 69   enabled, all fi
1dc50 6c 65 6e 61 6d 65 73 20 70 61 73 73 65 64 20 74  lenames passed t
1dc60 6f 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  o [sqlite3_open(
1dc70 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  )], [sqlite3_ope
1dc80 6e 5f 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c  n_v2()],.** [sql
1dc90 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 20 6f  ite3_open16()] o
1dca0 72 0a 2a 2a 20 73 70 65 63 69 66 69 65 64 20 61  r.** specified a
1dcb0 73 20 70 61 72 74 20 6f 66 20 5b 41 54 54 41 43  s part of [ATTAC
1dcc0 48 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20  H] commands are 
1dcd0 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 55  interpreted as U
1dce0 52 49 73 2c 20 72 65 67 61 72 64 6c 65 73 73 0a  RIs, regardless.
1dcf0 2a 2a 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72  ** of whether or
1dd00 20 6e 6f 74 20 74 68 65 20 5b 53 51 4c 49 54 45   not the [SQLITE
1dd10 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 20  _OPEN_URI] flag 
1dd20 69 73 20 73 65 74 20 77 68 65 6e 20 74 68 65 20  is set when the 
1dd30 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e  database.** conn
1dd40 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64  ection is opened
1dd50 2e 20 5e 49 66 20 69 74 20 69 73 20 67 6c 6f 62  . ^If it is glob
1dd60 61 6c 6c 79 20 64 69 73 61 62 6c 65 64 2c 20 66  ally disabled, f
1dd70 69 6c 65 6e 61 6d 65 73 20 61 72 65 0a 2a 2a 20  ilenames are.** 
1dd80 6f 6e 6c 79 20 69 6e 74 65 72 70 72 65 74 65 64  only interpreted
1dd90 20 61 73 20 55 52 49 73 20 69 66 20 74 68 65 20   as URIs if the 
1dda0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 20  SQLITE_OPEN_URI 
1ddb0 66 6c 61 67 20 69 73 20 73 65 74 20 77 68 65 6e  flag is set when
1ddc0 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65   the.** database
1ddd0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f   connection is o
1dde0 70 65 6e 65 64 2e 20 5e 28 42 79 20 64 65 66 61  pened. ^(By defa
1ddf0 75 6c 74 2c 20 55 52 49 20 68 61 6e 64 6c 69 6e  ult, URI handlin
1de00 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a  g is globally.**
1de10 20 64 69 73 61 62 6c 65 64 2e 20 54 68 65 20 64   disabled. The d
1de20 65 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79  efault value may
1de30 20 62 65 20 63 68 61 6e 67 65 64 20 62 79 20 63   be changed by c
1de40 6f 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 74 68  ompiling with th
1de50 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 55 53 45  e.** [SQLITE_USE
1de60 5f 55 52 49 5d 20 73 79 6d 62 6f 6c 20 64 65 66  _URI] symbol def
1de70 69 6e 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  ined.)^.**.** [[
1de80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f  SQLITE_CONFIG_CO
1de90 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41  VERING_INDEX_SCA
1dea0 4e 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  N]] <dt>SQLITE_C
1deb0 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49  ONFIG_COVERING_I
1dec0 4e 44 45 58 5f 53 43 41 4e 0a 2a 2a 20 3c 64 64  NDEX_SCAN.** <dd
1ded0 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  >^The SQLITE_CON
1dee0 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44  FIG_COVERING_IND
1def0 45 58 5f 53 43 41 4e 20 6f 70 74 69 6f 6e 20 74  EX_SCAN option t
1df00 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 69 6e  akes a single in
1df10 74 65 67 65 72 0a 2a 2a 20 61 72 67 75 6d 65 6e  teger.** argumen
1df20 74 20 77 68 69 63 68 20 69 73 20 69 6e 74 65 72  t which is inter
1df30 70 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c  preted as a bool
1df40 65 61 6e 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ean in order to 
1df50 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c  enable or disabl
1df60 65 0a 2a 2a 20 74 68 65 20 75 73 65 20 6f 66 20  e.** the use of 
1df70 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73  covering indices
1df80 20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 20   for full table 
1df90 73 63 61 6e 73 20 69 6e 20 74 68 65 20 71 75 65  scans in the que
1dfa0 72 79 20 6f 70 74 69 6d 69 7a 65 72 2e 0a 2a 2a  ry optimizer..**
1dfb0 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 73 65   ^The default se
1dfc0 74 74 69 6e 67 20 69 73 20 64 65 74 65 72 6d 69  tting is determi
1dfd0 6e 65 64 0a 2a 2a 20 62 79 20 74 68 65 20 5b 53  ned.** by the [S
1dfe0 51 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45  QLITE_ALLOW_COVE
1dff0 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d  RING_INDEX_SCAN]
1e000 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1e010 74 69 6f 6e 2c 20 6f 72 20 69 73 20 22 6f 6e 22  tion, or is "on"
1e020 0a 2a 2a 20 69 66 20 74 68 61 74 20 63 6f 6d 70  .** if that comp
1e030 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1e040 69 73 20 6f 6d 69 74 74 65 64 2e 0a 2a 2a 20 54  is omitted..** T
1e050 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 64 69  he ability to di
1e060 73 61 62 6c 65 20 74 68 65 20 75 73 65 20 6f 66  sable the use of
1e070 20 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65   covering indice
1e080 73 20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65  s for full table
1e090 20 73 63 61 6e 73 0a 2a 2a 20 69 73 20 62 65 63   scans.** is bec
1e0a0 61 75 73 65 20 73 6f 6d 65 20 69 6e 63 6f 72 72  ause some incorr
1e0b0 65 63 74 6c 79 20 63 6f 64 65 64 20 6c 65 67 61  ectly coded lega
1e0c0 63 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  cy applications 
1e0d0 6d 69 67 68 74 20 6d 61 6c 66 75 6e 63 74 69 6f  might malfunctio
1e0e0 6e 0a 2a 2a 20 77 68 65 6e 20 74 68 65 20 6f 70  n.** when the op
1e0f0 74 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20 65 6e  timization is en
1e100 61 62 6c 65 64 2e 20 20 50 72 6f 76 69 64 69 6e  abled.  Providin
1e110 67 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f  g the ability to
1e120 0a 2a 2a 20 64 69 73 61 62 6c 65 20 74 68 65 20  .** disable the 
1e130 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 6c 6c  optimization all
1e140 6f 77 73 20 74 68 65 20 6f 6c 64 65 72 2c 20 62  ows the older, b
1e150 75 67 67 79 20 61 70 70 6c 69 63 61 74 69 6f 6e  uggy application
1e160 20 63 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a   code to work.**
1e170 20 77 69 74 68 6f 75 74 20 63 68 61 6e 67 65 20   without change 
1e180 65 76 65 6e 20 77 69 74 68 20 6e 65 77 65 72 20  even with newer 
1e190 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
1e1a0 74 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  te..**.** [[SQLI
1e1b0 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1e1c0 5d 5d 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ]] [[SQLITE_CONF
1e1d0 49 47 5f 47 45 54 50 43 41 43 48 45 5d 5d 0a 2a  IG_GETPCACHE]].*
1e1e0 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  * <dt>SQLITE_CON
1e1f0 46 49 47 5f 50 43 41 43 48 45 20 61 6e 64 20 53  FIG_PCACHE and S
1e200 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1e210 50 43 41 43 48 45 0a 2a 2a 20 3c 64 64 3e 20 54  PCACHE.** <dd> T
1e220 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65  hese options are
1e230 20 6f 62 73 6f 6c 65 74 65 20 61 6e 64 20 73 68   obsolete and sh
1e240 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64  ould not be used
1e250 20 62 79 20 6e 65 77 20 63 6f 64 65 2e 0a 2a 2a   by new code..**
1e260 20 54 68 65 79 20 61 72 65 20 72 65 74 61 69 6e   They are retain
1e270 65 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73  ed for backwards
1e280 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62   compatibility b
1e290 75 74 20 61 72 65 20 6e 6f 77 20 6e 6f 2d 6f 70  ut are now no-op
1e2a0 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  s..** </dd>.**.*
1e2b0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1e2c0 47 5f 53 51 4c 4c 4f 47 5d 5d 0a 2a 2a 20 3c 64  G_SQLLOG]].** <d
1e2d0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1e2e0 53 51 4c 4c 4f 47 0a 2a 2a 20 3c 64 64 3e 54 68  SQLLOG.** <dd>Th
1e2f0 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c  is option is onl
1e300 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 73  y available if s
1e310 71 6c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  qlite is compile
1e320 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53  d with the.** [S
1e330 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c  QLITE_ENABLE_SQL
1e340 4c 4f 47 5d 20 70 72 65 2d 70 72 6f 63 65 73 73  LOG] pre-process
1e350 6f 72 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64  or macro defined
1e360 2e 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  . The first argu
1e370 6d 65 6e 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 62  ment should.** b
1e380 65 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  e a pointer to a
1e390 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79 70   function of typ
1e3a0 65 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c  e void(*)(void*,
1e3b0 73 71 6c 69 74 65 33 2a 2c 63 6f 6e 73 74 20 63  sqlite3*,const c
1e3c0 68 61 72 2a 2c 20 69 6e 74 29 2e 0a 2a 2a 20 54  har*, int)..** T
1e3d0 68 65 20 73 65 63 6f 6e 64 20 73 68 6f 75 6c 64  he second should
1e3e0 20 62 65 20 6f 66 20 74 79 70 65 20 28 76 6f 69   be of type (voi
1e3f0 64 2a 29 2e 20 54 68 65 20 63 61 6c 6c 62 61 63  d*). The callbac
1e400 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  k is invoked by 
1e410 74 68 65 20 6c 69 62 72 61 72 79 0a 2a 2a 20 69  the library.** i
1e420 6e 20 74 68 72 65 65 20 73 65 70 61 72 61 74 65  n three separate
1e430 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2c 20   circumstances, 
1e440 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68  identified by th
1e450 65 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 61  e value passed a
1e460 73 20 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20  s the.** fourth 
1e470 70 61 72 61 6d 65 74 65 72 2e 20 49 66 20 74 68  parameter. If th
1e480 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
1e490 65 72 20 69 73 20 30 2c 20 74 68 65 6e 20 74 68  er is 0, then th
1e4a0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
1e4b0 63 74 69 6f 6e 0a 2a 2a 20 70 61 73 73 65 64 20  ction.** passed 
1e4c0 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72  as the second ar
1e4d0 67 75 6d 65 6e 74 20 68 61 73 20 6a 75 73 74 20  gument has just 
1e4e0 62 65 65 6e 20 6f 70 65 6e 65 64 2e 20 54 68 65  been opened. The
1e4f0 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 0a   third argument.
1e500 2a 2a 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62  ** points to a b
1e510 75 66 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67  uffer containing
1e520 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
1e530 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 66   main database f
1e540 69 6c 65 2e 20 49 66 20 74 68 65 0a 2a 2a 20 66  ile. If the.** f
1e550 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
1e560 69 73 20 31 2c 20 74 68 65 6e 20 74 68 65 20 53  is 1, then the S
1e570 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61  QL statement tha
1e580 74 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61  t the third para
1e590 6d 65 74 65 72 0a 2a 2a 20 70 6f 69 6e 74 73 20  meter.** points 
1e5a0 74 6f 20 68 61 73 20 6a 75 73 74 20 62 65 65 6e  to has just been
1e5b0 20 65 78 65 63 75 74 65 64 2e 20 4f 72 2c 20 69   executed. Or, i
1e5c0 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72  f the fourth par
1e5d0 61 6d 65 74 65 72 20 69 73 20 32 2c 20 74 68 65  ameter is 2, the
1e5e0 6e 0a 2a 2a 20 74 68 65 20 63 6f 6e 6e 65 63 74  n.** the connect
1e5f0 69 6f 6e 20 62 65 69 6e 67 20 70 61 73 73 65 64  ion being passed
1e600 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70   as the second p
1e610 61 72 61 6d 65 74 65 72 20 69 73 20 62 65 69 6e  arameter is bein
1e620 67 20 63 6c 6f 73 65 64 2e 20 54 68 65 0a 2a 2a  g closed. The.**
1e630 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
1e640 20 69 73 20 70 61 73 73 65 64 20 4e 55 4c 4c 20   is passed NULL 
1e650 49 6e 20 74 68 69 73 20 63 61 73 65 2e 20 20 41  In this case.  A
1e660 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69  n example of usi
1e670 6e 67 20 74 68 69 73 0a 2a 2a 20 63 6f 6e 66 69  ng this.** confi
1e680 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
1e690 63 61 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74  can be seen in t
1e6a0 68 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e  he "test_sqllog.
1e6b0 63 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69  c" source file i
1e6c0 6e 0a 2a 2a 20 74 68 65 20 63 61 6e 6f 6e 69 63  n.** the canonic
1e6d0 61 6c 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65  al SQLite source
1e6e0 20 74 72 65 65 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a   tree.</dd>.**.*
1e6f0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1e700 47 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a  G_MMAP_SIZE]].**
1e710 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1e720 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 0a 2a 2a 20  IG_MMAP_SIZE.** 
1e730 3c 64 64 3e 5e 53 51 4c 49 54 45 5f 43 4f 4e 46  <dd>^SQLITE_CONF
1e740 49 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 74 61 6b  IG_MMAP_SIZE tak
1e750 65 73 20 74 77 6f 20 36 34 2d 62 69 74 20 69 6e  es two 64-bit in
1e760 74 65 67 65 72 20 28 73 71 6c 69 74 65 33 5f 69  teger (sqlite3_i
1e770 6e 74 36 34 29 20 76 61 6c 75 65 73 0a 2a 2a 20  nt64) values.** 
1e780 74 68 61 74 20 61 72 65 20 74 68 65 20 64 65 66  that are the def
1e790 61 75 6c 74 20 6d 6d 61 70 20 73 69 7a 65 20 6c  ault mmap size l
1e7a0 69 6d 69 74 20 28 74 68 65 20 64 65 66 61 75 6c  imit (the defaul
1e7b0 74 20 73 65 74 74 69 6e 67 20 66 6f 72 0a 2a 2a  t setting for.**
1e7c0 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69   [PRAGMA mmap_si
1e7d0 7a 65 5d 29 20 61 6e 64 20 74 68 65 20 6d 61 78  ze]) and the max
1e7e0 69 6d 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61  imum allowed mma
1e7f0 70 20 73 69 7a 65 20 6c 69 6d 69 74 2e 0a 2a 2a  p size limit..**
1e800 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 73 65   ^The default se
1e810 74 74 69 6e 67 20 63 61 6e 20 62 65 20 6f 76 65  tting can be ove
1e820 72 72 69 64 64 65 6e 20 62 79 20 65 61 63 68 20  rridden by each 
1e830 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1e840 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a 20 65 69 74  ion using.** eit
1e850 68 65 72 20 74 68 65 20 5b 50 52 41 47 4d 41 20  her the [PRAGMA 
1e860 6d 6d 61 70 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61  mmap_size] comma
1e870 6e 64 2c 20 6f 72 20 62 79 20 75 73 69 6e 67 20  nd, or by using 
1e880 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46  the.** [SQLITE_F
1e890 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  CNTL_MMAP_SIZE] 
1e8a0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 2e 20 20 5e  file control.  ^
1e8b0 28 54 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c  (The maximum all
1e8c0 6f 77 65 64 20 6d 6d 61 70 20 73 69 7a 65 0a 2a  owed mmap size.*
1e8d0 2a 20 77 69 6c 6c 20 62 65 20 73 69 6c 65 6e 74  * will be silent
1e8e0 6c 79 20 74 72 75 6e 63 61 74 65 64 20 69 66 20  ly truncated if 
1e8f0 6e 65 63 65 73 73 61 72 79 20 73 6f 20 74 68 61  necessary so tha
1e900 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78  t it does not ex
1e910 63 65 65 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70  ceed the.** comp
1e920 69 6c 65 2d 74 69 6d 65 20 6d 61 78 69 6d 75 6d  ile-time maximum
1e930 20 6d 6d 61 70 20 73 69 7a 65 20 73 65 74 20 62   mmap size set b
1e940 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45  y the.** [SQLITE
1e950 5f 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  _MAX_MMAP_SIZE] 
1e960 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1e970 69 6f 6e 2e 29 5e 0a 2a 2a 20 5e 49 66 20 65 69  ion.)^.** ^If ei
1e980 74 68 65 72 20 61 72 67 75 6d 65 6e 74 20 74 6f  ther argument to
1e990 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   this option is 
1e9a0 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 74  negative, then t
1e9b0 68 61 74 20 61 72 67 75 6d 65 6e 74 20 69 73 0a  hat argument is.
1e9c0 2a 2a 20 63 68 61 6e 67 65 64 20 74 6f 20 69 74  ** changed to it
1e9d0 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64  s compile-time d
1e9e0 65 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  efault..**.** [[
1e9f0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49  SQLITE_CONFIG_WI
1ea00 4e 33 32 5f 48 45 41 50 53 49 5a 45 5d 5d 0a 2a  N32_HEAPSIZE]].*
1ea10 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  * <dt>SQLITE_CON
1ea20 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49  FIG_WIN32_HEAPSI
1ea30 5a 45 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53  ZE.** <dd>^The S
1ea40 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e  QLITE_CONFIG_WIN
1ea50 33 32 5f 48 45 41 50 53 49 5a 45 20 6f 70 74 69  32_HEAPSIZE opti
1ea60 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  on is only avail
1ea70 61 62 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69  able if SQLite i
1ea80 73 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 66 6f  s.** compiled fo
1ea90 72 20 57 69 6e 64 6f 77 73 20 77 69 74 68 20 74  r Windows with t
1eaa0 68 65 20 5b 53 51 4c 49 54 45 5f 57 49 4e 33 32  he [SQLITE_WIN32
1eab0 5f 4d 41 4c 4c 4f 43 5d 20 70 72 65 2d 70 72 6f  _MALLOC] pre-pro
1eac0 63 65 73 73 6f 72 20 6d 61 63 72 6f 0a 2a 2a 20  cessor macro.** 
1ead0 64 65 66 69 6e 65 64 2e 20 5e 53 51 4c 49 54 45  defined. ^SQLITE
1eae0 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45  _CONFIG_WIN32_HE
1eaf0 41 50 53 49 5a 45 20 74 61 6b 65 73 20 61 20 33  APSIZE takes a 3
1eb00 32 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69  2-bit unsigned i
1eb10 6e 74 65 67 65 72 20 76 61 6c 75 65 0a 2a 2a 20  nteger value.** 
1eb20 74 68 61 74 20 73 70 65 63 69 66 69 65 73 20 74  that specifies t
1eb30 68 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20  he maximum size 
1eb40 6f 66 20 74 68 65 20 63 72 65 61 74 65 64 20 68  of the created h
1eb50 65 61 70 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  eap..**.** [[SQL
1eb60 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1eb70 45 5f 48 44 52 53 5a 5d 5d 0a 2a 2a 20 3c 64 74  E_HDRSZ]].** <dt
1eb80 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  >SQLITE_CONFIG_P
1eb90 43 41 43 48 45 5f 48 44 52 53 5a 0a 2a 2a 20 3c  CACHE_HDRSZ.** <
1eba0 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  dd>^The SQLITE_C
1ebb0 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52  ONFIG_PCACHE_HDR
1ebc0 53 5a 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  SZ option takes 
1ebd0 61 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74  a single paramet
1ebe0 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61  er which.** is a
1ebf0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
1ec00 6e 74 65 67 65 72 20 61 6e 64 20 77 72 69 74 65  nteger and write
1ec10 73 20 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65  s into that inte
1ec20 67 65 72 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  ger the number o
1ec30 66 20 65 78 74 72 61 0a 2a 2a 20 62 79 74 65 73  f extra.** bytes
1ec40 20 70 65 72 20 70 61 67 65 20 72 65 71 75 69 72   per page requir
1ec50 65 64 20 66 6f 72 20 65 61 63 68 20 70 61 67 65  ed for each page
1ec60 20 69 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   in [SQLITE_CONF
1ec70 49 47 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a  IG_PAGECACHE]..*
1ec80 2a 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  * The amount of 
1ec90 65 78 74 72 61 20 73 70 61 63 65 20 72 65 71 75  extra space requ
1eca0 69 72 65 64 20 63 61 6e 20 63 68 61 6e 67 65 20  ired can change 
1ecb0 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65  depending on the
1ecc0 20 63 6f 6d 70 69 6c 65 72 2c 0a 2a 2a 20 74 61   compiler,.** ta
1ecd0 72 67 65 74 20 70 6c 61 74 66 6f 72 6d 2c 20 61  rget platform, a
1ece0 6e 64 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  nd SQLite versio
1ecf0 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  n..**.** [[SQLIT
1ed00 45 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 5d  E_CONFIG_PMASZ]]
1ed10 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  .** <dt>SQLITE_C
1ed20 4f 4e 46 49 47 5f 50 4d 41 53 5a 0a 2a 2a 20 3c  ONFIG_PMASZ.** <
1ed30 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  dd>^The SQLITE_C
1ed40 4f 4e 46 49 47 5f 50 4d 41 53 5a 20 6f 70 74 69  ONFIG_PMASZ opti
1ed50 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c  on takes a singl
1ed60 65 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63  e parameter whic
1ed70 68 0a 2a 2a 20 69 73 20 61 6e 20 75 6e 73 69 67  h.** is an unsig
1ed80 6e 65 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20  ned integer and 
1ed90 73 65 74 73 20 74 68 65 20 22 4d 69 6e 69 6d 75  sets the "Minimu
1eda0 6d 20 50 4d 41 20 53 69 7a 65 22 20 66 6f 72 20  m PMA Size" for 
1edb0 74 68 65 20 6d 75 6c 74 69 74 68 72 65 61 64 65  the multithreade
1edc0 64 0a 2a 2a 20 73 6f 72 74 65 72 20 74 6f 20 74  d.** sorter to t
1edd0 68 61 74 20 69 6e 74 65 67 65 72 2e 20 20 54 68  hat integer.  Th
1ede0 65 20 64 65 66 61 75 6c 74 20 6d 69 6e 69 6d 75  e default minimu
1edf0 6d 20 50 4d 41 20 53 69 7a 65 20 69 73 20 73 65  m PMA Size is se
1ee00 74 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c  t by the.** [SQL
1ee10 49 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a  ITE_SORTER_PMASZ
1ee20 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
1ee30 70 74 69 6f 6e 2e 20 20 4e 65 77 20 74 68 72 65  ption.  New thre
1ee40 61 64 73 20 61 72 65 20 6c 61 75 6e 63 68 65 64  ads are launched
1ee50 0a 2a 2a 20 74 6f 20 68 65 6c 70 20 77 69 74 68  .** to help with
1ee60 20 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73   sort operations
1ee70 20 77 68 65 6e 20 6d 75 6c 74 69 74 68 72 65 61   when multithrea
1ee80 64 65 64 20 73 6f 72 74 69 6e 67 0a 2a 2a 20 69  ded sorting.** i
1ee90 73 20 65 6e 61 62 6c 65 64 20 28 75 73 69 6e 67  s enabled (using
1eea0 20 74 68 65 20 5b 50 52 41 47 4d 41 20 74 68 72   the [PRAGMA thr
1eeb0 65 61 64 73 5d 20 63 6f 6d 6d 61 6e 64 29 20 61  eads] command) a
1eec0 6e 64 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66  nd the amount of
1eed0 20 63 6f 6e 74 65 6e 74 0a 2a 2a 20 74 6f 20 62   content.** to b
1eee0 65 20 73 6f 72 74 65 64 20 65 78 63 65 65 64 73  e sorted exceeds
1eef0 20 74 68 65 20 70 61 67 65 20 73 69 7a 65 20 74   the page size t
1ef00 69 6d 65 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d  imes the minimum
1ef10 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 50 52 41 47   of the.** [PRAG
1ef20 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20 73  MA cache_size] s
1ef30 65 74 74 69 6e 67 20 61 6e 64 20 74 68 69 73 20  etting and this 
1ef40 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  value..**.** [[S
1ef50 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d  QLITE_CONFIG_STM
1ef60 54 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 5d 0a 2a 2a  TJRNL_SPILL]].**
1ef70 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1ef80 49 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c  IG_STMTJRNL_SPIL
1ef90 4c 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  L.** <dd>^The SQ
1efa0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54  LITE_CONFIG_STMT
1efb0 4a 52 4e 4c 5f 53 50 49 4c 4c 20 6f 70 74 69 6f  JRNL_SPILL optio
1efc0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1efd0 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68   parameter which
1efe0 0a 2a 2a 20 62 65 63 6f 6d 65 73 20 74 68 65 20  .** becomes the 
1eff0 5b 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e  [statement journ
1f000 61 6c 5d 20 73 70 69 6c 6c 2d 74 6f 2d 64 69 73  al] spill-to-dis
1f010 6b 20 74 68 72 65 73 68 6f 6c 64 2e 20 20 0a 2a  k threshold.  .*
1f020 2a 20 5b 53 74 61 74 65 6d 65 6e 74 20 6a 6f 75  * [Statement jou
1f030 72 6e 61 6c 73 5d 20 61 72 65 20 68 65 6c 64 20  rnals] are held 
1f040 69 6e 20 6d 65 6d 6f 72 79 20 75 6e 74 69 6c 20  in memory until 
1f050 74 68 65 69 72 20 73 69 7a 65 20 28 69 6e 20 62  their size (in b
1f060 79 74 65 73 29 0a 2a 2a 20 65 78 63 65 65 64 73  ytes).** exceeds
1f070 20 74 68 69 73 20 74 68 72 65 73 68 6f 6c 64 2c   this threshold,
1f080 20 61 74 20 77 68 69 63 68 20 70 6f 69 6e 74 20   at which point 
1f090 74 68 65 79 20 61 72 65 20 77 72 69 74 74 65 6e  they are written
1f0a0 20 74 6f 20 64 69 73 6b 2e 0a 2a 2a 20 4f 72 20   to disk..** Or 
1f0b0 69 66 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64  if the threshold
1f0c0 20 69 73 20 2d 31 2c 20 73 74 61 74 65 6d 65 6e   is -1, statemen
1f0d0 74 20 6a 6f 75 72 6e 61 6c 73 20 61 72 65 20 61  t journals are a
1f0e0 6c 77 61 79 73 20 68 65 6c 64 0a 2a 2a 20 65 78  lways held.** ex
1f0f0 63 6c 75 73 69 76 65 6c 79 20 69 6e 20 6d 65 6d  clusively in mem
1f100 6f 72 79 2e 0a 2a 2a 20 53 69 6e 63 65 20 6d 61  ory..** Since ma
1f110 6e 79 20 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75  ny statement jou
1f120 72 6e 61 6c 73 20 6e 65 76 65 72 20 62 65 63 6f  rnals never beco
1f130 6d 65 20 6c 61 72 67 65 2c 20 73 65 74 74 69 6e  me large, settin
1f140 67 20 74 68 65 20 73 70 69 6c 6c 0a 2a 2a 20 74  g the spill.** t
1f150 68 72 65 73 68 6f 6c 64 20 74 6f 20 61 20 76 61  hreshold to a va
1f160 6c 75 65 20 73 75 63 68 20 61 73 20 36 34 4b 69  lue such as 64Ki
1f170 42 20 63 61 6e 20 67 72 65 61 74 6c 79 20 72 65  B can greatly re
1f180 64 75 63 65 20 74 68 65 20 61 6d 6f 75 6e 74 20  duce the amount 
1f190 6f 66 0a 2a 2a 20 49 2f 4f 20 72 65 71 75 69 72  of.** I/O requir
1f1a0 65 64 20 74 6f 20 73 75 70 70 6f 72 74 20 73 74  ed to support st
1f1b0 61 74 65 6d 65 6e 74 20 72 6f 6c 6c 62 61 63 6b  atement rollback
1f1c0 2e 0a 2a 2a 20 54 68 65 20 64 65 66 61 75 6c 74  ..** The default
1f1d0 20 76 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20   value for this 
1f1e0 73 65 74 74 69 6e 67 20 69 73 20 63 6f 6e 74 72  setting is contr
1f1f0 6f 6c 6c 65 64 20 62 79 20 74 68 65 0a 2a 2a 20  olled by the.** 
1f200 5b 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c  [SQLITE_STMTJRNL
1f210 5f 53 50 49 4c 4c 5d 20 63 6f 6d 70 69 6c 65 2d  _SPILL] compile-
1f220 74 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a  time option..**.
1f230 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1f240 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a  IG_SORTERREF_SIZ
1f250 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  E]].** <dt>SQLIT
1f260 45 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52  E_CONFIG_SORTERR
1f270 45 46 5f 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54  EF_SIZE.** <dd>T
1f280 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1f290 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 20  _SORTERREF_SIZE 
1f2a0 6f 70 74 69 6f 6e 20 61 63 63 65 70 74 73 20 61  option accepts a
1f2b0 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65   single paramete
1f2c0 72 0a 2a 2a 20 6f 66 20 74 79 70 65 20 28 69 6e  r.** of type (in
1f2d0 74 29 20 2d 20 74 68 65 20 6e 65 77 20 76 61 6c  t) - the new val
1f2e0 75 65 20 6f 66 20 74 68 65 20 73 6f 72 74 65 72  ue of the sorter
1f2f0 2d 72 65 66 65 72 65 6e 63 65 20 73 69 7a 65 20  -reference size 
1f300 74 68 72 65 73 68 6f 6c 64 2e 0a 2a 2a 20 55 73  threshold..** Us
1f310 75 61 6c 6c 79 2c 20 77 68 65 6e 20 53 51 4c 69  ually, when SQLi
1f320 74 65 20 75 73 65 73 20 61 6e 20 65 78 74 65 72  te uses an exter
1f330 6e 61 6c 20 73 6f 72 74 20 74 6f 20 6f 72 64 65  nal sort to orde
1f340 72 20 72 65 63 6f 72 64 73 20 61 63 63 6f 72 64  r records accord
1f350 69 6e 67 0a 2a 2a 20 74 6f 20 61 6e 20 4f 52 44  ing.** to an ORD
1f360 45 52 20 42 59 20 63 6c 61 75 73 65 2c 20 61 6c  ER BY clause, al
1f370 6c 20 66 69 65 6c 64 73 20 72 65 71 75 69 72 65  l fields require
1f380 64 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20  d by the caller 
1f390 61 72 65 20 70 72 65 73 65 6e 74 20 69 6e 20 74  are present in t
1f3a0 68 65 0a 2a 2a 20 73 6f 72 74 65 64 20 72 65 63  he.** sorted rec
1f3b0 6f 72 64 73 2e 20 48 6f 77 65 76 65 72 2c 20 69  ords. However, i
1f3c0 66 20 53 51 4c 69 74 65 20 64 65 74 65 72 6d 69  f SQLite determi
1f3d0 6e 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65  nes based on the
1f3e0 20 64 65 63 6c 61 72 65 64 20 74 79 70 65 0a 2a   declared type.*
1f3f0 2a 20 6f 66 20 61 20 74 61 62 6c 65 20 63 6f 6c  * of a table col
1f400 75 6d 6e 20 74 68 61 74 20 69 74 73 20 76 61 6c  umn that its val
1f410 75 65 73 20 61 72 65 20 6c 69 6b 65 6c 79 20 74  ues are likely t
1f420 6f 20 62 65 20 76 65 72 79 20 6c 61 72 67 65 20  o be very large 
1f430 2d 20 6c 61 72 67 65 72 0a 2a 2a 20 74 68 61 6e  - larger.** than
1f440 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20   the configured 
1f450 73 6f 72 74 65 72 2d 72 65 66 65 72 65 6e 63 65  sorter-reference
1f460 20 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20   size threshold 
1f470 2d 20 74 68 65 6e 20 61 20 72 65 66 65 72 65 6e  - then a referen
1f480 63 65 0a 2a 2a 20 69 73 20 73 74 6f 72 65 64 20  ce.** is stored 
1f490 69 6e 20 65 61 63 68 20 73 6f 72 74 65 64 20 72  in each sorted r
1f4a0 65 63 6f 72 64 20 61 6e 64 20 74 68 65 20 72 65  ecord and the re
1f4b0 71 75 69 72 65 64 20 63 6f 6c 75 6d 6e 20 76 61  quired column va
1f4c0 6c 75 65 73 20 6c 6f 61 64 65 64 0a 2a 2a 20 66  lues loaded.** f
1f4d0 72 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65  rom the database
1f4e0 20 61 73 20 72 65 63 6f 72 64 73 20 61 72 65 20   as records are 
1f4f0 72 65 74 75 72 6e 65 64 20 69 6e 20 73 6f 72 74  returned in sort
1f500 65 64 20 6f 72 64 65 72 2e 20 54 68 65 20 64 65  ed order. The de
1f510 66 61 75 6c 74 0a 2a 2a 20 76 61 6c 75 65 20 66  fault.** value f
1f520 6f 72 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69  or this option i
1f530 73 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20 74  s to never use t
1f540 68 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  his optimization
1f550 2e 20 53 70 65 63 69 66 79 69 6e 67 20 61 20 0a  . Specifying a .
1f560 2a 2a 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75  ** negative valu
1f570 65 20 66 6f 72 20 74 68 69 73 20 6f 70 74 69 6f  e for this optio
1f580 6e 20 72 65 73 74 6f 72 65 73 20 74 68 65 20 64  n restores the d
1f590 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 75 72  efault behaviour
1f5a0 2e 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e  ..** This option
1f5b0 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
1f5c0 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69 73 20  le if SQLite is 
1f5d0 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68  compiled with th
1f5e0 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41  e.** [SQLITE_ENA
1f5f0 42 4c 45 5f 53 4f 52 54 45 52 5f 52 45 46 45 52  BLE_SORTER_REFER
1f600 45 4e 43 45 53 5d 20 63 6f 6d 70 69 6c 65 2d 74  ENCES] compile-t
1f610 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a  ime option..**.*
1f620 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1f630 47 5f 4d 45 4d 44 42 5f 4d 41 58 53 49 5a 45 5d  G_MEMDB_MAXSIZE]
1f640 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
1f650 43 4f 4e 46 49 47 5f 4d 45 4d 44 42 5f 4d 41 58  CONFIG_MEMDB_MAX
1f660 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  SIZE.** <dd>The 
1f670 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
1f680 4d 44 42 5f 4d 41 58 53 49 5a 45 20 6f 70 74 69  MDB_MAXSIZE opti
1f690 6f 6e 20 61 63 63 65 70 74 73 20 61 20 73 69 6e  on accepts a sin
1f6a0 67 6c 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  gle parameter.**
1f6b0 20 5b 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 5d   [sqlite3_int64]
1f6c0 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68   parameter which
1f6d0 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20   is the default 
1f6e0 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 66 6f 72  maximum size for
1f6f0 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 0a 2a 2a   an in-memory.**
1f700 20 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65   database create
1f710 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33  d using [sqlite3
1f720 5f 64 65 73 65 72 69 61 6c 69 7a 65 28 29 5d 2e  _deserialize()].
1f730 20 20 54 68 69 73 20 64 65 66 61 75 6c 74 20 6d    This default m
1f740 61 78 69 6d 75 6d 0a 2a 2a 20 73 69 7a 65 20 63  aximum.** size c
1f750 61 6e 20 62 65 20 61 64 6a 75 73 74 65 64 20 75  an be adjusted u
1f760 70 20 6f 72 20 64 6f 77 6e 20 66 6f 72 20 69 6e  p or down for in
1f770 64 69 76 69 64 75 61 6c 20 64 61 74 61 62 61 73  dividual databas
1f780 65 73 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20  es using the.** 
1f790 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49  [SQLITE_FCNTL_SI
1f7a0 5a 45 5f 4c 49 4d 49 54 5d 20 5b 73 71 6c 69 74  ZE_LIMIT] [sqlit
1f7b0 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 7c  e3_file_control|
1f7c0 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 5d 2e 20 20  file-control].  
1f7d0 49 66 20 74 68 69 73 0a 2a 2a 20 63 6f 6e 66 69  If this.** confi
1f7e0 67 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67  guration setting
1f7f0 20 69 73 20 6e 65 76 65 72 20 75 73 65 64 2c 20   is never used, 
1f800 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74  then the default
1f810 20 6d 61 78 69 6d 75 6d 20 69 73 20 64 65 74 65   maximum is dete
1f820 72 6d 69 6e 65 64 0a 2a 2a 20 62 79 20 74 68 65  rmined.** by the
1f830 20 5b 53 51 4c 49 54 45 5f 4d 45 4d 44 42 5f 44   [SQLITE_MEMDB_D
1f840 45 46 41 55 4c 54 5f 4d 41 58 53 49 5a 45 5d 20  EFAULT_MAXSIZE] 
1f850 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1f860 69 6f 6e 2e 20 20 49 66 20 74 68 61 74 0a 2a 2a  ion.  If that.**
1f870 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1f880 74 69 6f 6e 20 69 73 20 6e 6f 74 20 73 65 74 2c  tion is not set,
1f890 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c   then the defaul
1f8a0 74 20 6d 61 78 69 6d 75 6d 20 69 73 20 31 30 37  t maximum is 107
1f8b0 33 37 34 31 38 32 34 2e 0a 2a 2a 20 3c 2f 64 6c  3741824..** </dl
1f8c0 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  >.*/.#define SQL
1f8d0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c  ITE_CONFIG_SINGL
1f8e0 45 54 48 52 45 41 44 20 20 31 20 20 2f 2a 20 6e  ETHREAD  1  /* n
1f8f0 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  il */.#define SQ
1f900 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54  LITE_CONFIG_MULT
1f910 49 54 48 52 45 41 44 20 20 20 32 20 20 2f 2a 20  ITHREAD   2  /* 
1f920 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nil */.#define S
1f930 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52  QLITE_CONFIG_SER
1f940 49 41 4c 49 5a 45 44 20 20 20 20 33 20 20 2f 2a  IALIZED    3  /*
1f950 20 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20   nil */.#define 
1f960 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41  SQLITE_CONFIG_MA
1f970 4c 4c 4f 43 20 20 20 20 20 20 20 20 34 20 20 2f  LLOC        4  /
1f980 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65  * sqlite3_mem_me
1f990 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e  thods* */.#defin
1f9a0 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1f9b0 47 45 54 4d 41 4c 4c 4f 43 20 20 20 20 20 35 20  GETMALLOC     5 
1f9c0 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f   /* sqlite3_mem_
1f9d0 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66  methods* */.#def
1f9e0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1f9f0 47 5f 53 43 52 41 54 43 48 20 20 20 20 20 20 20  G_SCRATCH       
1fa00 36 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20  6  /* No longer 
1fa10 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  used */.#define 
1fa20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41  SQLITE_CONFIG_PA
1fa30 47 45 43 41 43 48 45 20 20 20 20 20 37 20 20 2f  GECACHE     7  /
1fa40 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c  * void*, int sz,
1fa50 20 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66 69 6e   int N */.#defin
1fa60 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1fa70 48 45 41 50 20 20 20 20 20 20 20 20 20 20 38 20  HEAP          8 
1fa80 20 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e   /* void*, int n
1fa90 42 79 74 65 2c 20 69 6e 74 20 6d 69 6e 20 2a 2f  Byte, int min */
1faa0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fab0 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53  CONFIG_MEMSTATUS
1fac0 20 20 20 20 20 39 20 20 2f 2a 20 62 6f 6f 6c 65       9  /* boole
1fad0 61 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  an */.#define SQ
1fae0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45  LITE_CONFIG_MUTE
1faf0 58 20 20 20 20 20 20 20 20 31 30 20 20 2f 2a 20  X        10  /* 
1fb00 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65  sqlite3_mutex_me
1fb10 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e  thods* */.#defin
1fb20 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1fb30 47 45 54 4d 55 54 45 58 20 20 20 20 20 31 31 20  GETMUTEX     11 
1fb40 20 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75 74 65   /* sqlite3_mute
1fb50 78 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 2f 2a  x_methods* */./*
1fb60 20 70 72 65 76 69 6f 75 73 6c 79 20 53 51 4c 49   previously SQLI
1fb70 54 45 5f 43 4f 4e 46 49 47 5f 43 48 55 4e 4b 41  TE_CONFIG_CHUNKA
1fb80 4c 4c 4f 43 20 31 32 20 77 68 69 63 68 20 69 73  LLOC 12 which is
1fb90 20 6e 6f 77 20 75 6e 75 73 65 64 2e 20 2a 2f 20   now unused. */ 
1fba0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fbb0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
1fbc0 20 20 20 20 31 33 20 20 2f 2a 20 69 6e 74 20 69      13  /* int i
1fbd0 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
1fbe0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1fbf0 48 45 20 20 20 20 20 20 20 31 34 20 20 2f 2a 20  HE       14  /* 
1fc00 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e 65  no-op */.#define
1fc10 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1fc20 45 54 50 43 41 43 48 45 20 20 20 20 31 35 20 20  ETPCACHE    15  
1fc30 2f 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66  /* no-op */.#def
1fc40 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fc50 47 5f 4c 4f 47 20 20 20 20 20 20 20 20 20 20 31  G_LOG          1
1fc60 36 20 20 2f 2a 20 78 46 75 6e 63 2c 20 76 6f 69  6  /* xFunc, voi
1fc70 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  d* */.#define SQ
1fc80 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20  LITE_CONFIG_URI 
1fc90 20 20 20 20 20 20 20 20 20 31 37 20 20 2f 2a 20           17  /* 
1fca0 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  int */.#define S
1fcb0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41  QLITE_CONFIG_PCA
1fcc0 43 48 45 32 20 20 20 20 20 20 31 38 20 20 2f 2a  CHE2      18  /*
1fcd0 20 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f   sqlite3_pcache_
1fce0 6d 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64 65  methods2* */.#de
1fcf0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1fd00 49 47 5f 47 45 54 50 43 41 43 48 45 32 20 20 20  IG_GETPCACHE2   
1fd10 31 39 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 70  19  /* sqlite3_p
1fd20 63 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 20  cache_methods2* 
1fd30 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1fd40 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e  E_CONFIG_COVERIN
1fd50 47 5f 49 4e 44 45 58 5f 53 43 41 4e 20 32 30 20  G_INDEX_SCAN 20 
1fd60 20 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69   /* int */.#defi
1fd70 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1fd80 5f 53 51 4c 4c 4f 47 20 20 20 20 20 20 20 32 31  _SQLLOG       21
1fd90 20 20 2f 2a 20 78 53 71 6c 6c 6f 67 2c 20 76 6f    /* xSqllog, vo
1fda0 69 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  id* */.#define S
1fdb0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41  QLITE_CONFIG_MMA
1fdc0 50 5f 53 49 5a 45 20 20 20 20 32 32 20 20 2f 2a  P_SIZE    22  /*
1fdd0 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c 20   sqlite3_int64, 
1fde0 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 2f  sqlite3_int64 */
1fdf0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1fe00 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41  CONFIG_WIN32_HEA
1fe10 50 53 49 5a 45 20 20 20 20 20 20 32 33 20 20 2f  PSIZE      23  /
1fe20 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 23  * int nByte */.#
1fe30 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f  define SQLITE_CO
1fe40 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53  NFIG_PCACHE_HDRS
1fe50 5a 20 20 20 20 20 20 20 20 32 34 20 20 2f 2a 20  Z        24  /* 
1fe60 69 6e 74 20 2a 70 73 7a 20 2a 2f 0a 23 64 65 66  int *psz */.#def
1fe70 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fe80 47 5f 50 4d 41 53 5a 20 20 20 20 20 20 20 20 20  G_PMASZ         
1fe90 20 20 20 20 20 20 32 35 20 20 2f 2a 20 75 6e 73        25  /* uns
1fea0 69 67 6e 65 64 20 69 6e 74 20 73 7a 50 6d 61 20  igned int szPma 
1feb0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
1fec0 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e  E_CONFIG_STMTJRN
1fed0 4c 5f 53 50 49 4c 4c 20 20 20 20 20 20 32 36 20  L_SPILL      26 
1fee0 20 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f   /* int nByte */
1fef0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
1ff00 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c  CONFIG_SMALL_MAL
1ff10 4c 4f 43 20 20 20 20 20 20 20 20 32 37 20 20 2f  LOC        27  /
1ff20 2a 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64 65  * boolean */.#de
1ff30 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  fine SQLITE_CONF
1ff40 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a  IG_SORTERREF_SIZ
1ff50 45 20 20 20 20 20 20 32 38 20 20 2f 2a 20 69 6e  E      28  /* in
1ff60 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66 69  t nByte */.#defi
1ff70 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1ff80 5f 4d 45 4d 44 42 5f 4d 41 58 53 49 5a 45 20 20  _MEMDB_MAXSIZE  
1ff90 20 20 20 20 20 32 39 20 20 2f 2a 20 73 71 6c 69       29  /* sqli
1ffa0 74 65 33 5f 69 6e 74 36 34 20 2a 2f 0a 0a 2f 2a  te3_int64 */../*
1ffb0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 61  .** CAPI3REF: Da
1ffc0 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f  tabase Connectio
1ffd0 6e 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  n Configuration 
1ffe0 4f 70 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68  Options.**.** Th
1fff0 65 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72  ese constants ar
20000 65 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20  e the available 
20010 69 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75 72  integer configur
20020 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68  ation options th
20030 61 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61 73  at.** can be pas
20040 73 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  sed as the secon
20050 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  d argument to th
20060 65 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  e [sqlite3_db_co
20070 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63  nfig()] interfac
20080 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e  e..**.** New con
20090 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
200a0 6e 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20  ns may be added 
200b0 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
200c0 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a  es of SQLite..**
200d0 20 45 78 69 73 74 69 6e 67 20 63 6f 6e 66 69 67   Existing config
200e0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  uration options 
200f0 6d 69 67 68 74 20 62 65 20 64 69 73 63 6f 6e 74  might be discont
20100 69 6e 75 65 64 2e 20 20 41 70 70 6c 69 63 61 74  inued.  Applicat
20110 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63  ions.** should c
20120 68 65 63 6b 20 74 68 65 20 72 65 74 75 72 6e 20  heck the return 
20130 63 6f 64 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74  code from [sqlit
20140 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20  e3_db_config()] 
20150 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61  to make sure tha
20160 74 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f  t.** the call wo
20170 72 6b 65 64 2e 20 20 5e 54 68 65 20 5b 73 71 6c  rked.  ^The [sql
20180 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29  ite3_db_config()
20190 5d 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c  ] interface will
201a0 20 72 65 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e   return a.** non
201b0 2d 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64  -zero [error cod
201c0 65 5d 20 69 66 20 61 20 64 69 73 63 6f 6e 74 69  e] if a disconti
201d0 6e 75 65 64 20 6f 72 20 75 6e 73 75 70 70 6f 72  nued or unsuppor
201e0 74 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  ted configuratio
201f0 6e 20 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69  n option.** is i
20200 6e 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64  nvoked..**.** <d
20210 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  l>.** [[SQLITE_D
20220 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  BCONFIG_LOOKASID
20230 45 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54  E]].** <dt>SQLIT
20240 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41  E_DBCONFIG_LOOKA
20250 53 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  SIDE</dt>.** <dd
20260 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 74  > ^This option t
20270 61 6b 65 73 20 74 68 72 65 65 20 61 64 64 69 74  akes three addit
20280 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 20  ional arguments 
20290 74 68 61 74 20 64 65 74 65 72 6d 69 6e 65 20 74  that determine t
202a0 68 65 20 0a 2a 2a 20 5b 6c 6f 6f 6b 61 73 69 64  he .** [lookasid
202b0 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  e memory allocat
202c0 6f 72 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  or] configuratio
202d0 6e 20 66 6f 72 20 74 68 65 20 5b 64 61 74 61 62  n for the [datab
202e0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e  ase connection].
202f0 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
20300 72 67 75 6d 65 6e 74 20 28 74 68 65 20 74 68 69  rgument (the thi
20310 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  rd parameter to 
20320 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66  [sqlite3_db_conf
20330 69 67 28 29 5d 20 69 73 20 61 0a 2a 2a 20 70 6f  ig()] is a.** po
20340 69 6e 74 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72  inter to a memor
20350 79 20 62 75 66 66 65 72 20 74 6f 20 75 73 65 20  y buffer to use 
20360 66 6f 72 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65  for lookaside me
20370 6d 6f 72 79 2e 0a 2a 2a 20 5e 54 68 65 20 66 69  mory..** ^The fi
20380 72 73 74 20 61 72 67 75 6d 65 6e 74 20 61 66 74  rst argument aft
20390 65 72 20 74 68 65 20 53 51 4c 49 54 45 5f 44 42  er the SQLITE_DB
203a0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
203b0 20 76 65 72 62 0a 2a 2a 20 6d 61 79 20 62 65 20   verb.** may be 
203c0 4e 55 4c 4c 20 69 6e 20 77 68 69 63 68 20 63 61  NULL in which ca
203d0 73 65 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  se SQLite will a
203e0 6c 6c 6f 63 61 74 65 20 74 68 65 0a 2a 2a 20 6c  llocate the.** l
203f0 6f 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72 20  ookaside buffer 
20400 69 74 73 65 6c 66 20 75 73 69 6e 67 20 5b 73 71  itself using [sq
20410 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2e  lite3_malloc()].
20420 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67   ^The second arg
20430 75 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20  ument is the.** 
20440 73 69 7a 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f  size of each loo
20450 6b 61 73 69 64 65 20 62 75 66 66 65 72 20 73 6c  kaside buffer sl
20460 6f 74 2e 20 20 5e 54 68 65 20 74 68 69 72 64 20  ot.  ^The third 
20470 61 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20  argument is the 
20480 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f  number of.** slo
20490 74 73 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66  ts.  The size of
204a0 20 74 68 65 20 62 75 66 66 65 72 20 69 6e 20 74   the buffer in t
204b0 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
204c0 74 20 6d 75 73 74 20 62 65 20 67 72 65 61 74 65  t must be greate
204d0 72 20 74 68 61 6e 0a 2a 2a 20 6f 72 20 65 71 75  r than.** or equ
204e0 61 6c 20 74 6f 20 74 68 65 20 70 72 6f 64 75 63  al to the produc
204f0 74 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20  t of the second 
20500 61 6e 64 20 74 68 69 72 64 20 61 72 67 75 6d 65  and third argume
20510 6e 74 73 2e 20 20 54 68 65 20 62 75 66 66 65 72  nts.  The buffer
20520 0a 2a 2a 20 6d 75 73 74 20 62 65 20 61 6c 69 67  .** must be alig
20530 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65  ned to an 8-byte
20540 20 62 6f 75 6e 64 61 72 79 2e 20 20 5e 49 66 20   boundary.  ^If 
20550 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  the second argum
20560 65 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c 49 54 45  ent to.** SQLITE
20570 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
20580 49 44 45 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c  IDE is not a mul
20590 74 69 70 6c 65 20 6f 66 20 38 2c 20 69 74 20 69  tiple of 8, it i
205a0 73 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20  s internally.** 
205b0 72 6f 75 6e 64 65 64 20 64 6f 77 6e 20 74 6f 20  rounded down to 
205c0 74 68 65 20 6e 65 78 74 20 73 6d 61 6c 6c 65 72  the next smaller
205d0 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38 2e 20   multiple of 8. 
205e0 20 5e 28 54 68 65 20 6c 6f 6f 6b 61 73 69 64 65   ^(The lookaside
205f0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 63 6f 6e 66 69   memory.** confi
20600 67 75 72 61 74 69 6f 6e 20 66 6f 72 20 61 20 64  guration for a d
20610 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
20620 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 63  on can only be c
20630 68 61 6e 67 65 64 20 77 68 65 6e 20 74 68 61 74  hanged when that
20640 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  .** connection i
20650 73 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20  s not currently 
20660 75 73 69 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20  using lookaside 
20670 6d 65 6d 6f 72 79 2c 20 6f 72 20 69 6e 20 6f 74  memory, or in ot
20680 68 65 72 20 77 6f 72 64 73 0a 2a 2a 20 77 68 65  her words.** whe
20690 6e 20 74 68 65 20 22 63 75 72 72 65 6e 74 20 76  n the "current v
206a0 61 6c 75 65 22 20 72 65 74 75 72 6e 65 64 20 62  alue" returned b
206b0 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 64 62  y.** [sqlite3_db
206c0 5f 73 74 61 74 75 73 5d 28 44 2c 5b 53 51 4c 49  _status](D,[SQLI
206d0 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  TE_CONFIG_LOOKAS
206e0 49 44 45 5d 2c 2e 2e 2e 29 20 69 73 20 7a 65 72  IDE],...) is zer
206f0 6f 2e 0a 2a 2a 20 41 6e 79 20 61 74 74 65 6d 70  o..** Any attemp
20700 74 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  t to change the 
20710 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79  lookaside memory
20720 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 77   configuration w
20730 68 65 6e 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a  hen lookaside.**
20740 20 6d 65 6d 6f 72 79 20 69 73 20 69 6e 20 75 73   memory is in us
20750 65 20 6c 65 61 76 65 73 20 74 68 65 20 63 6f 6e  e leaves the con
20760 66 69 67 75 72 61 74 69 6f 6e 20 75 6e 63 68 61  figuration uncha
20770 6e 67 65 64 20 61 6e 64 20 72 65 74 75 72 6e 73  nged and returns
20780 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53   .** [SQLITE_BUS
20790 59 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  Y].)^</dd>.**.**
207a0 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46   [[SQLITE_DBCONF
207b0 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 5d 5d  IG_ENABLE_FKEY]]
207c0 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44  .** <dt>SQLITE_D
207d0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
207e0 4b 45 59 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  KEY</dt>.** <dd>
207f0 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
20800 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
20810 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65  or disable the e
20820 6e 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0a 2a 2a  nforcement of.**
20830 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f   [foreign key co
20840 6e 73 74 72 61 69 6e 74 73 5d 2e 20 20 54 68 65  nstraints].  The
20850 72 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f  re should be two
20860 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75   additional argu
20870 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69  ments..** The fi
20880 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20  rst argument is 
20890 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68  an integer which
208a0 20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65   is 0 to disable
208b0 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 2c   FK enforcement,
208c0 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20  .** positive to 
208d0 65 6e 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63  enable FK enforc
208e0 65 6d 65 6e 74 20 6f 72 20 6e 65 67 61 74 69 76  ement or negativ
208f0 65 20 74 6f 20 6c 65 61 76 65 20 46 4b 20 65 6e  e to leave FK en
20900 66 6f 72 63 65 6d 65 6e 74 0a 2a 2a 20 75 6e 63  forcement.** unc
20910 68 61 6e 67 65 64 2e 20 20 54 68 65 20 73 65 63  hanged.  The sec
20920 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
20930 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
20940 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68   integer into wh
20950 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65  ich.** is writte
20960 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
20970 63 61 74 65 20 77 68 65 74 68 65 72 20 46 4b 20  cate whether FK 
20980 65 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73 20 6f  enforcement is o
20990 66 66 20 6f 72 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c  ff or on.** foll
209a0 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e  owing this call.
209b0 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72    The second par
209c0 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20  ameter may be a 
209d0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e  NULL pointer, in
209e0 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74  .** which case t
209f0 68 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e  he FK enforcemen
20a00 74 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74  t setting is not
20a10 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20   reported back. 
20a20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
20a30 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20a40 41 42 4c 45 5f 54 52 49 47 47 45 52 5d 5d 0a 2a  ABLE_TRIGGER]].*
20a50 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43  * <dt>SQLITE_DBC
20a60 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49  ONFIG_ENABLE_TRI
20a70 47 47 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  GGER</dt>.** <dd
20a80 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  > ^This option i
20a90 73 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65  s used to enable
20aa0 20 6f 72 20 64 69 73 61 62 6c 65 20 5b 43 52 45   or disable [CRE
20ab0 41 54 45 20 54 52 49 47 47 45 52 20 7c 20 74 72  ATE TRIGGER | tr
20ac0 69 67 67 65 72 73 5d 2e 0a 2a 2a 20 54 68 65 72  iggers]..** Ther
20ad0 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
20ae0 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
20af0 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ents..** The fir
20b00 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  st argument is a
20b10 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20  n integer which 
20b20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
20b30 74 72 69 67 67 65 72 73 2c 0a 2a 2a 20 70 6f 73  triggers,.** pos
20b40 69 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20  itive to enable 
20b50 74 72 69 67 67 65 72 73 20 6f 72 20 6e 65 67 61  triggers or nega
20b60 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
20b70 65 20 73 65 74 74 69 6e 67 20 75 6e 63 68 61 6e  e setting unchan
20b80 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f  ged..** The seco
20b90 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
20ba0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
20bb0 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69  integer into whi
20bc0 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e  ch.** is written
20bd0 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63   0 or 1 to indic
20be0 61 74 65 20 77 68 65 74 68 65 72 20 74 72 69 67  ate whether trig
20bf0 67 65 72 73 20 61 72 65 20 64 69 73 61 62 6c 65  gers are disable
20c00 64 20 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20  d or enabled.** 
20c10 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63  following this c
20c20 61 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  all.  The second
20c30 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62   parameter may b
20c40 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  e a NULL pointer
20c50 2c 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61  , in.** which ca
20c60 73 65 20 74 68 65 20 74 72 69 67 67 65 72 20 73  se the trigger s
20c70 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65  etting is not re
20c80 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64  ported back. </d
20c90 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
20ca0 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
20cb0 45 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52  E_FTS3_TOKENIZER
20cc0 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
20cd0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
20ce0 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c  _FTS3_TOKENIZER<
20cf0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
20d00 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
20d10 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64  d to enable or d
20d20 69 73 61 62 6c 65 20 74 68 65 0a 2a 2a 20 5b 66  isable the.** [f
20d30 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 5d  ts3_tokenizer()]
20d40 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20   function which 
20d50 69 73 20 70 61 72 74 20 6f 66 20 74 68 65 0a 2a  is part of the.*
20d60 2a 20 5b 46 54 53 33 5d 20 66 75 6c 6c 2d 74 65  * [FTS3] full-te
20d70 78 74 20 73 65 61 72 63 68 20 65 6e 67 69 6e 65  xt search engine
20d80 20 65 78 74 65 6e 73 69 6f 6e 2e 0a 2a 2a 20 54   extension..** T
20d90 68 65 72 65 20 73 68 6f 75 6c 64 20 62 65 20 74  here should be t
20da0 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 72  wo additional ar
20db0 67 75 6d 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20  guments..** The 
20dc0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
20dd0 73 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69  s an integer whi
20de0 63 68 20 69 73 20 30 20 74 6f 20 64 69 73 61 62  ch is 0 to disab
20df0 6c 65 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a 65  le fts3_tokenize
20e00 72 28 29 20 6f 72 0a 2a 2a 20 70 6f 73 69 74 69  r() or.** positi
20e10 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 66 74 73  ve to enable fts
20e20 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f 72  3_tokenizer() or
20e30 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61   negative to lea
20e40 76 65 20 74 68 65 20 73 65 74 74 69 6e 67 0a 2a  ve the setting.*
20e50 2a 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20  * unchanged..** 
20e60 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
20e70 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65  eter is a pointe
20e80 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20  r to an integer 
20e90 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73  into which.** is
20ea0 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20   written 0 or 1 
20eb0 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74  to indicate whet
20ec0 68 65 72 20 66 74 73 33 5f 74 6f 6b 65 6e 69 7a  her fts3_tokeniz
20ed0 65 72 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  er is disabled o
20ee0 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c  r enabled.** fol
20ef0 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c  lowing this call
20f00 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  .  The second pa
20f10 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61  rameter may be a
20f20 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
20f30 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20  n.** which case 
20f40 74 68 65 20 6e 65 77 20 73 65 74 74 69 6e 67 20  the new setting 
20f50 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65 64 20  is not reported 
20f60 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  back. </dd>.**.*
20f70 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
20f80 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f  FIG_ENABLE_LOAD_
20f90 45 58 54 45 4e 53 49 4f 4e 5d 5d 0a 2a 2a 20 3c  EXTENSION]].** <
20fa0 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
20fb0 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45  IG_ENABLE_LOAD_E
20fc0 58 54 45 4e 53 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a  XTENSION</dt>.**
20fd0 20 3c 64 64 3e 20 5e 54 68 69 73 20 6f 70 74 69   <dd> ^This opti
20fe0 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 65 6e  on is used to en
20ff0 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 20  able or disable 
21000 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 61  the [sqlite3_loa
21010 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 0a 2a  d_extension()].*
21020 2a 20 69 6e 74 65 72 66 61 63 65 20 69 6e 64 65  * interface inde
21030 70 65 6e 64 65 6e 74 6c 79 20 6f 66 20 74 68 65  pendently of the
21040 20 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e   [load_extension
21050 28 29 5d 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ()] SQL function
21060 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  ..** The [sqlite
21070 33 5f 65 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78  3_enable_load_ex
21080 74 65 6e 73 69 6f 6e 28 29 5d 20 41 50 49 20 65  tension()] API e
21090 6e 61 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c  nables or disabl
210a0 65 73 20 62 6f 74 68 20 74 68 65 0a 2a 2a 20 43  es both the.** C
210b0 2d 41 50 49 20 5b 73 71 6c 69 74 65 33 5f 6c 6f  -API [sqlite3_lo
210c0 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20  ad_extension()] 
210d0 61 6e 64 20 74 68 65 20 53 51 4c 20 66 75 6e 63  and the SQL func
210e0 74 69 6f 6e 20 5b 6c 6f 61 64 5f 65 78 74 65 6e  tion [load_exten
210f0 73 69 6f 6e 28 29 5d 2e 0a 2a 2a 20 54 68 65 72  sion()]..** Ther
21100 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
21110 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
21120 65 6e 74 73 2e 0a 2a 2a 20 57 68 65 6e 20 74 68  ents..** When th
21130 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
21140 20 74 6f 20 74 68 69 73 20 69 6e 74 65 72 66 61   to this interfa
21150 63 65 20 69 73 20 31 2c 20 74 68 65 6e 20 6f 6e  ce is 1, then on
21160 6c 79 20 74 68 65 20 43 2d 41 50 49 20 69 73 0a  ly the C-API is.
21170 2a 2a 20 65 6e 61 62 6c 65 64 20 61 6e 64 20 74  ** enabled and t
21180 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
21190 72 65 6d 61 69 6e 73 20 64 69 73 61 62 6c 65 64  remains disabled
211a0 2e 20 20 49 66 20 74 68 65 20 66 69 72 73 74 20  .  If the first 
211b0 61 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74  argument to.** t
211c0 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
211d0 20 30 2c 20 74 68 65 6e 20 62 6f 74 68 20 74 68   0, then both th
211e0 65 20 43 2d 41 50 49 20 61 6e 64 20 74 68 65 20  e C-API and the 
211f0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 61 72 65  SQL function are
21200 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a 20 49 66   disabled..** If
21210 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
21220 65 6e 74 20 69 73 20 2d 31 2c 20 74 68 65 6e 20  ent is -1, then 
21230 6e 6f 20 63 68 61 6e 67 65 73 20 61 72 65 20 6d  no changes are m
21240 61 64 65 20 74 6f 20 73 74 61 74 65 20 6f 66 20  ade to state of 
21250 65 69 74 68 65 72 20 74 68 65 0a 2a 2a 20 43 2d  either the.** C-
21260 41 50 49 20 6f 72 20 74 68 65 20 53 51 4c 20 66  API or the SQL f
21270 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 54 68 65 20  unction..** The 
21280 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
21290 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
212a0 20 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f   an integer into
212b0 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69   which.** is wri
212c0 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69  tten 0 or 1 to i
212d0 6e 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20  ndicate whether 
212e0 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
212f0 74 65 6e 73 69 6f 6e 28 29 5d 20 69 6e 74 65 72  tension()] inter
21300 66 61 63 65 0a 2a 2a 20 69 73 20 64 69 73 61 62  face.** is disab
21310 6c 65 64 20 6f 72 20 65 6e 61 62 6c 65 64 20 66  led or enabled f
21320 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61  ollowing this ca
21330 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ll.  The second 
21340 70 61 72 61 6d 65 74 65 72 20 6d 61 79 0a 2a 2a  parameter may.**
21350 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   be a NULL point
21360 65 72 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73  er, in which cas
21370 65 20 74 68 65 20 6e 65 77 20 73 65 74 74 69 6e  e the new settin
21380 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72 74 65  g is not reporte
21390 64 20 62 61 63 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e  d back..** </dd>
213a0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
213b0 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42 4e  DBCONFIG_MAINDBN
213c0 41 4d 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  AME]] <dt>SQLITE
213d0 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42  _DBCONFIG_MAINDB
213e0 4e 41 4d 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  NAME</dt>.** <dd
213f0 3e 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69  > ^This option i
21400 73 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65  s used to change
21410 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
21420 20 22 6d 61 69 6e 22 20 64 61 74 61 62 61 73 65   "main" database
21430 0a 2a 2a 20 73 63 68 65 6d 61 2e 20 20 5e 54 68  .** schema.  ^Th
21440 65 20 73 6f 6c 65 20 61 72 67 75 6d 65 6e 74 20  e sole argument 
21450 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
21460 61 20 63 6f 6e 73 74 61 6e 74 20 55 54 46 38 20  a constant UTF8 
21470 73 74 72 69 6e 67 0a 2a 2a 20 77 68 69 63 68 20  string.** which 
21480 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65 20  will become the 
21490 6e 65 77 20 73 63 68 65 6d 61 20 6e 61 6d 65 20  new schema name 
214a0 69 6e 20 70 6c 61 63 65 20 6f 66 20 22 6d 61 69  in place of "mai
214b0 6e 22 2e 20 20 5e 53 51 4c 69 74 65 0a 2a 2a 20  n".  ^SQLite.** 
214c0 64 6f 65 73 20 6e 6f 74 20 6d 61 6b 65 20 61 20  does not make a 
214d0 63 6f 70 79 20 6f 66 20 74 68 65 20 6e 65 77 20  copy of the new 
214e0 6d 61 69 6e 20 73 63 68 65 6d 61 20 6e 61 6d 65  main schema name
214f0 20 73 74 72 69 6e 67 2c 20 73 6f 20 74 68 65 20   string, so the 
21500 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 6d  application.** m
21510 75 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20  ust ensure that 
21520 74 68 65 20 61 72 67 75 6d 65 6e 74 20 70 61 73  the argument pas
21530 73 65 64 20 69 6e 74 6f 20 74 68 69 73 20 44 42  sed into this DB
21540 43 4f 4e 46 49 47 20 6f 70 74 69 6f 6e 20 69 73  CONFIG option is
21550 20 75 6e 63 68 61 6e 67 65 64 0a 2a 2a 20 75 6e   unchanged.** un
21560 74 69 6c 20 61 66 74 65 72 20 74 68 65 20 64 61  til after the da
21570 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
21580 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 3c 2f 64  n closes..** </d
21590 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
215a0 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43 4b  E_DBCONFIG_NO_CK
215b0 50 54 5f 4f 4e 5f 43 4c 4f 53 45 5d 5d 20 0a 2a  PT_ON_CLOSE]] .*
215c0 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43  * <dt>SQLITE_DBC
215d0 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
215e0 5f 43 4c 4f 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  _CLOSE</dt>.** <
215f0 64 64 3e 20 55 73 75 61 6c 6c 79 2c 20 77 68 65  dd> Usually, whe
21600 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 6e 20  n a database in 
21610 77 61 6c 20 6d 6f 64 65 20 69 73 20 63 6c 6f 73  wal mode is clos
21620 65 64 20 6f 72 20 64 65 74 61 63 68 65 64 20 66  ed or detached f
21630 72 6f 6d 20 61 20 0a 2a 2a 20 64 61 74 61 62 61  rom a .** databa
21640 73 65 20 68 61 6e 64 6c 65 2c 20 53 51 4c 69 74  se handle, SQLit
21650 65 20 63 68 65 63 6b 73 20 69 66 20 74 68 69 73  e checks if this
21660 20 77 69 6c 6c 20 6d 65 61 6e 20 74 68 61 74 20   will mean that 
21670 74 68 65 72 65 20 61 72 65 20 6e 6f 77 20 6e 6f  there are now no
21680 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 73   .** connections
21690 20 61 74 20 61 6c 6c 20 74 6f 20 74 68 65 20 64   at all to the d
216a0 61 74 61 62 61 73 65 2e 20 49 66 20 73 6f 2c 20  atabase. If so, 
216b0 69 74 20 70 65 72 66 6f 72 6d 73 20 61 20 63 68  it performs a ch
216c0 65 63 6b 70 6f 69 6e 74 20 0a 2a 2a 20 6f 70 65  eckpoint .** ope
216d0 72 61 74 69 6f 6e 20 62 65 66 6f 72 65 20 63 6c  ration before cl
216e0 6f 73 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63  osing the connec
216f0 74 69 6f 6e 2e 20 54 68 69 73 20 6f 70 74 69 6f  tion. This optio
21700 6e 20 6d 61 79 20 62 65 20 75 73 65 64 20 74 6f  n may be used to
21710 0a 2a 2a 20 6f 76 65 72 72 69 64 65 20 74 68 69  .** override thi
21720 73 20 62 65 68 61 76 69 6f 75 72 2e 20 54 68 65  s behaviour. The
21730 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
21740 20 70 61 73 73 65 64 20 74 6f 20 74 68 69 73 20   passed to this 
21750 6f 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 69 73 20  operation.** is 
21760 61 6e 20 69 6e 74 65 67 65 72 20 2d 20 70 6f 73  an integer - pos
21770 69 74 69 76 65 20 74 6f 20 64 69 73 61 62 6c 65  itive to disable
21780 20 63 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d   checkpoints-on-
21790 63 6c 6f 73 65 2c 20 6f 72 20 7a 65 72 6f 20 28  close, or zero (
217a0 74 68 65 0a 2a 2a 20 64 65 66 61 75 6c 74 29 20  the.** default) 
217b0 74 6f 20 65 6e 61 62 6c 65 20 74 68 65 6d 2c 20  to enable them, 
217c0 61 6e 64 20 6e 65 67 61 74 69 76 65 20 74 6f 20  and negative to 
217d0 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69 6e  leave the settin
217e0 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20  g unchanged..** 
217f0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
21800 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65  eter is a pointe
21810 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 0a  r to an integer.
21820 2a 2a 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73  ** into which is
21830 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20   written 0 or 1 
21840 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74  to indicate whet
21850 68 65 72 20 63 68 65 63 6b 70 6f 69 6e 74 73 2d  her checkpoints-
21860 6f 6e 2d 63 6c 6f 73 65 0a 2a 2a 20 68 61 76 65  on-close.** have
21870 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64 20 2d   been disabled -
21880 20 30 20 69 66 20 74 68 65 79 20 61 72 65 20 6e   0 if they are n
21890 6f 74 20 64 69 73 61 62 6c 65 64 2c 20 31 20 69  ot disabled, 1 i
218a0 66 20 74 68 65 79 20 61 72 65 2e 0a 2a 2a 20 3c  f they are..** <
218b0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
218c0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
218d0 42 4c 45 5f 51 50 53 47 5d 5d 20 3c 64 74 3e 53  BLE_QPSG]] <dt>S
218e0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
218f0 4e 41 42 4c 45 5f 51 50 53 47 3c 2f 64 74 3e 0a  NABLE_QPSG</dt>.
21900 2a 2a 20 3c 64 64 3e 5e 28 54 68 65 20 53 51 4c  ** <dd>^(The SQL
21910 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
21920 42 4c 45 5f 51 50 53 47 20 6f 70 74 69 6f 6e 20  BLE_QPSG option 
21930 61 63 74 69 76 61 74 65 73 20 6f 72 20 64 65 61  activates or dea
21940 63 74 69 76 61 74 65 73 0a 2a 2a 20 74 68 65 20  ctivates.** the 
21950 5b 71 75 65 72 79 20 70 6c 61 6e 6e 65 72 20 73  [query planner s
21960 74 61 62 69 6c 69 74 79 20 67 75 61 72 61 6e 74  tability guarant
21970 65 65 5d 20 28 51 50 53 47 29 2e 20 20 57 68 65  ee] (QPSG).  Whe
21980 6e 20 74 68 65 20 51 50 53 47 20 69 73 20 61 63  n the QPSG is ac
21990 74 69 76 65 2c 0a 2a 2a 20 61 20 73 69 6e 67 6c  tive,.** a singl
219a0 65 20 53 51 4c 20 71 75 65 72 79 20 73 74 61 74  e SQL query stat
219b0 65 6d 65 6e 74 20 77 69 6c 6c 20 61 6c 77 61 79  ement will alway
219c0 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 61  s use the same a
219d0 6c 67 6f 72 69 74 68 6d 20 72 65 67 61 72 64 6c  lgorithm regardl
219e0 65 73 73 0a 2a 2a 20 6f 66 20 76 61 6c 75 65 73  ess.** of values
219f0 20 6f 66 20 5b 62 6f 75 6e 64 20 70 61 72 61 6d   of [bound param
21a00 65 74 65 72 73 5d 2e 29 5e 20 54 68 65 20 51 50  eters].)^ The QP
21a10 53 47 20 64 69 73 61 62 6c 65 73 20 73 6f 6d 65  SG disables some
21a20 20 71 75 65 72 79 20 6f 70 74 69 6d 69 7a 61 74   query optimizat
21a30 69 6f 6e 73 0a 2a 2a 20 74 68 61 74 20 6c 6f 6f  ions.** that loo
21a40 6b 20 61 74 20 74 68 65 20 76 61 6c 75 65 73 20  k at the values 
21a50 6f 66 20 62 6f 75 6e 64 20 70 61 72 61 6d 65 74  of bound paramet
21a60 65 72 73 2c 20 77 68 69 63 68 20 63 61 6e 20 6d  ers, which can m
21a70 61 6b 65 20 73 6f 6d 65 20 71 75 65 72 69 65 73  ake some queries
21a80 0a 2a 2a 20 73 6c 6f 77 65 72 2e 20 20 42 75 74  .** slower.  But
21a90 20 74 68 65 20 51 50 53 47 20 68 61 73 20 74 68   the QPSG has th
21aa0 65 20 61 64 76 61 6e 74 61 67 65 20 6f 66 20 6d  e advantage of m
21ab0 6f 72 65 20 70 72 65 64 69 63 74 61 62 6c 65 20  ore predictable 
21ac0 62 65 68 61 76 69 6f 72 2e 20 20 57 69 74 68 0a  behavior.  With.
21ad0 2a 2a 20 74 68 65 20 51 50 53 47 20 61 63 74 69  ** the QPSG acti
21ae0 76 65 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20  ve, SQLite will 
21af0 61 6c 77 61 79 73 20 75 73 65 20 74 68 65 20 73  always use the s
21b00 61 6d 65 20 71 75 65 72 79 20 70 6c 61 6e 20 69  ame query plan i
21b10 6e 20 74 68 65 20 66 69 65 6c 64 20 61 73 0a 2a  n the field as.*
21b20 2a 20 77 61 73 20 75 73 65 64 20 64 75 72 69 6e  * was used durin
21b30 67 20 74 65 73 74 69 6e 67 20 69 6e 20 74 68 65  g testing in the
21b40 20 6c 61 62 2e 0a 2a 2a 20 54 68 65 20 66 69 72   lab..** The fir
21b50 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
21b60 68 69 73 20 73 65 74 74 69 6e 67 20 69 73 20 61  his setting is a
21b70 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20  n integer which 
21b80 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
21b90 0a 2a 2a 20 74 68 65 20 51 50 53 47 2c 20 70 6f  .** the QPSG, po
21ba0 73 69 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65  sitive to enable
21bb0 20 51 50 53 47 2c 20 6f 72 20 6e 65 67 61 74 69   QPSG, or negati
21bc0 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20  ve to leave the 
21bd0 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63 68 61  setting.** uncha
21be0 6e 67 65 64 2e 20 54 68 65 20 73 65 63 6f 6e 64  nged. The second
21bf0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
21c00 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
21c10 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68  teger into which
21c20 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30  .** is written 0
21c30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74   or 1 to indicat
21c40 65 20 77 68 65 74 68 65 72 20 74 68 65 20 51 50  e whether the QP
21c50 53 47 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  SG is disabled o
21c60 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c  r enabled.** fol
21c70 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c  lowing this call
21c80 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ..** </dd>.**.**
21c90 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46   [[SQLITE_DBCONF
21ca0 49 47 5f 54 52 49 47 47 45 52 5f 45 51 50 5d 5d  IG_TRIGGER_EQP]]
21cb0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21cc0 4e 46 49 47 5f 54 52 49 47 47 45 52 5f 45 51 50  NFIG_TRIGGER_EQP
21cd0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 42 79  </dt>.** <dd> By
21ce0 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 6f 75   default, the ou
21cf0 74 70 75 74 20 6f 66 20 45 58 50 4c 41 49 4e 20  tput of EXPLAIN 
21d00 51 55 45 52 59 20 50 4c 41 4e 20 63 6f 6d 6d 61  QUERY PLAN comma
21d10 6e 64 73 20 64 6f 65 73 20 6e 6f 74 20 0a 2a 2a  nds does not .**
21d20 20 69 6e 63 6c 75 64 65 20 6f 75 74 70 75 74 20   include output 
21d30 66 6f 72 20 61 6e 79 20 6f 70 65 72 61 74 69 6f  for any operatio
21d40 6e 73 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  ns performed by 
21d50 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73  trigger programs
21d60 2e 20 54 68 69 73 0a 2a 2a 20 6f 70 74 69 6f 6e  . This.** option
21d70 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20   is used to set 
21d80 6f 72 20 63 6c 65 61 72 20 28 74 68 65 20 64 65  or clear (the de
21d90 66 61 75 6c 74 29 20 61 20 66 6c 61 67 20 74 68  fault) a flag th
21da0 61 74 20 67 6f 76 65 72 6e 73 20 74 68 69 73 0a  at governs this.
21db0 2a 2a 20 62 65 68 61 76 69 6f 72 2e 20 54 68 65  ** behavior. The
21dc0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
21dd0 20 70 61 73 73 65 64 20 74 6f 20 74 68 69 73 20   passed to this 
21de0 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 6e 20  operation is an 
21df0 69 6e 74 65 67 65 72 20 2d 0a 2a 2a 20 70 6f 73  integer -.** pos
21e00 69 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20  itive to enable 
21e10 6f 75 74 70 75 74 20 66 6f 72 20 74 72 69 67 67  output for trigg
21e20 65 72 20 70 72 6f 67 72 61 6d 73 2c 20 6f 72 20  er programs, or 
21e30 7a 65 72 6f 20 74 6f 20 64 69 73 61 62 6c 65 20  zero to disable 
21e40 69 74 2c 0a 2a 2a 20 6f 72 20 6e 65 67 61 74 69  it,.** or negati
21e50 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20  ve to leave the 
21e60 73 65 74 74 69 6e 67 20 75 6e 63 68 61 6e 67 65  setting unchange
21e70 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64  d..** The second
21e80 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
21e90 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
21ea0 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68  teger into which
21eb0 20 69 73 20 77 72 69 74 74 65 6e 20 0a 2a 2a 20   is written .** 
21ec0 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
21ed0 74 65 20 77 68 65 74 68 65 72 20 6f 75 74 70 75  te whether outpu
21ee0 74 2d 66 6f 72 2d 74 72 69 67 67 65 72 73 20 68  t-for-triggers h
21ef0 61 73 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  as been disabled
21f00 20 2d 20 30 20 69 66 20 0a 2a 2a 20 69 74 20 69   - 0 if .** it i
21f10 73 20 6e 6f 74 20 64 69 73 61 62 6c 65 64 2c 20  s not disabled, 
21f20 31 20 69 66 20 69 74 20 69 73 2e 20 20 0a 2a 2a  1 if it is.  .**
21f30 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
21f40 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52  QLITE_DBCONFIG_R
21f50 45 53 45 54 5f 44 41 54 41 42 41 53 45 5d 5d 20  ESET_DATABASE]] 
21f60 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e  <dt>SQLITE_DBCON
21f70 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
21f80 53 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  SE</dt>.** <dd> 
21f90 53 65 74 20 74 68 65 20 53 51 4c 49 54 45 5f 44  Set the SQLITE_D
21fa0 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41  BCONFIG_RESET_DA
21fb0 54 41 42 41 53 45 20 66 6c 61 67 20 61 6e 64 20  TABASE flag and 
21fc0 74 68 65 6e 20 72 75 6e 0a 2a 2a 20 5b 56 41 43  then run.** [VAC
21fd0 55 55 4d 5d 20 69 6e 20 6f 72 64 65 72 20 74 6f  UUM] in order to
21fe0 20 72 65 73 65 74 20 61 20 64 61 74 61 62 61 73   reset a databas
21ff0 65 20 62 61 63 6b 20 74 6f 20 61 6e 20 65 6d 70  e back to an emp
22000 74 79 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 77  ty database.** w
22010 69 74 68 20 6e 6f 20 73 63 68 65 6d 61 20 61 6e  ith no schema an
22020 64 20 6e 6f 20 63 6f 6e 74 65 6e 74 2e 20 54 68  d no content. Th
22030 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 63  e following proc
22040 65 73 73 20 77 6f 72 6b 73 20 65 76 65 6e 20 66  ess works even f
22050 6f 72 0a 2a 2a 20 61 20 62 61 64 6c 79 20 63 6f  or.** a badly co
22060 72 72 75 70 74 65 64 20 64 61 74 61 62 61 73 65  rrupted database
22070 20 66 69 6c 65 3a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a   file:.** <ol>.*
22080 2a 20 3c 6c 69 3e 20 49 66 20 74 68 65 20 64 61  * <li> If the da
22090 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
220a0 6e 20 69 73 20 6e 65 77 6c 79 20 6f 70 65 6e 65  n is newly opene
220b0 64 2c 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20  d, make sure it 
220c0 68 61 73 20 72 65 61 64 20 74 68 65 0a 2a 2a 20  has read the.** 
220d0 20 20 20 20 20 64 61 74 61 62 61 73 65 20 73 63       database sc
220e0 68 65 6d 61 20 62 79 20 70 72 65 70 61 72 69 6e  hema by preparin
220f0 67 20 74 68 65 6e 20 64 69 73 63 61 72 64 69 6e  g then discardin
22100 67 20 73 6f 6d 65 20 71 75 65 72 79 20 61 67 61  g some query aga
22110 69 6e 73 74 20 74 68 65 0a 2a 2a 20 20 20 20 20  inst the.**     
22120 20 64 61 74 61 62 61 73 65 2c 20 6f 72 20 63 61   database, or ca
22130 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 74 61  lling sqlite3_ta
22140 62 6c 65 5f 63 6f 6c 75 6d 6e 5f 6d 65 74 61 64  ble_column_metad
22150 61 74 61 28 29 2c 20 69 67 6e 6f 72 69 6e 67 20  ata(), ignoring 
22160 61 6e 79 0a 2a 2a 20 20 20 20 20 20 65 72 72 6f  any.**      erro
22170 72 73 2e 20 20 54 68 69 73 20 73 74 65 70 20 69  rs.  This step i
22180 73 20 6f 6e 6c 79 20 6e 65 63 65 73 73 61 72 79  s only necessary
22190 20 69 66 20 74 68 65 20 61 70 70 6c 69 63 61 74   if the applicat
221a0 69 6f 6e 20 64 65 73 69 72 65 73 20 74 6f 20 6b  ion desires to k
221b0 65 65 70 0a 2a 2a 20 20 20 20 20 20 74 68 65 20  eep.**      the 
221c0 64 61 74 61 62 61 73 65 20 69 6e 20 57 41 4c 20  database in WAL 
221d0 6d 6f 64 65 20 61 66 74 65 72 20 74 68 65 20 72  mode after the r
221e0 65 73 65 74 20 69 66 20 69 74 20 77 61 73 20 69  eset if it was i
221f0 6e 20 57 41 4c 20 6d 6f 64 65 20 62 65 66 6f 72  n WAL mode befor
22200 65 0a 2a 2a 20 20 20 20 20 20 74 68 65 20 72 65  e.**      the re
22210 73 65 74 2e 20 20 0a 2a 2a 20 3c 6c 69 3e 20 73  set.  .** <li> s
22220 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
22230 28 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43 4f  (db, SQLITE_DBCO
22240 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42  NFIG_RESET_DATAB
22250 41 53 45 2c 20 31 2c 20 30 29 3b 0a 2a 2a 20 3c  ASE, 1, 0);.** <
22260 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 65 78 65  li> [sqlite3_exe
22270 63 5d 28 64 62 2c 20 22 5b 56 41 43 55 55 4d 5d  c](db, "[VACUUM]
22280 22 2c 20 30 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  ", 0, 0, 0);.** 
22290 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 64 62 5f  <li> sqlite3_db_
222a0 63 6f 6e 66 69 67 28 64 62 2c 20 53 51 4c 49 54  config(db, SQLIT
222b0 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54  E_DBCONFIG_RESET
222c0 5f 44 41 54 41 42 41 53 45 2c 20 30 2c 20 30 29  _DATABASE, 0, 0)
222d0 3b 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2a 20 42 65  ;.** </ol>.** Be
222e0 63 61 75 73 65 20 72 65 73 65 74 74 69 6e 67 20  cause resetting 
222f0 61 20 64 61 74 61 62 61 73 65 20 69 73 20 64 65  a database is de
22300 73 74 72 75 63 74 69 76 65 20 61 6e 64 20 69 72  structive and ir
22310 72 65 76 65 72 73 69 62 6c 65 2c 20 74 68 65 0a  reversible, the.
22320 2a 2a 20 70 72 6f 63 65 73 73 20 72 65 71 75 69  ** process requi
22330 72 65 73 20 74 68 65 20 75 73 65 20 6f 66 20 74  res the use of t
22340 68 69 73 20 6f 62 73 63 75 72 65 20 41 50 49 20  his obscure API 
22350 61 6e 64 20 6d 75 6c 74 69 70 6c 65 20 73 74 65  and multiple ste
22360 70 73 20 74 6f 20 68 65 6c 70 0a 2a 2a 20 65 6e  ps to help.** en
22370 73 75 72 65 20 74 68 61 74 20 69 74 20 64 6f 65  sure that it doe
22380 73 20 6e 6f 74 20 68 61 70 70 65 6e 20 62 79 20  s not happen by 
22390 61 63 63 69 64 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20  accident..**.** 
223a0 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
223b0 47 5f 44 45 46 45 4e 53 49 56 45 5d 5d 20 3c 64  G_DEFENSIVE]] <d
223c0 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  t>SQLITE_DBCONFI
223d0 47 5f 44 45 46 45 4e 53 49 56 45 3c 2f 64 74 3e  G_DEFENSIVE</dt>
223e0 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49  .** <dd>The SQLI
223f0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46 45  TE_DBCONFIG_DEFE
22400 4e 53 49 56 45 20 6f 70 74 69 6f 6e 20 61 63 74  NSIVE option act
22410 69 76 61 74 65 73 20 6f 72 20 64 65 61 63 74 69  ivates or deacti
22420 76 61 74 65 73 20 74 68 65 0a 2a 2a 20 22 64 65  vates the.** "de
22430 66 65 6e 73 69 76 65 22 20 66 6c 61 67 20 66 6f  fensive" flag fo
22440 72 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e  r a database con
22450 6e 65 63 74 69 6f 6e 2e 20 20 57 68 65 6e 20 74  nection.  When t
22460 68 65 20 64 65 66 65 6e 73 69 76 65 0a 2a 2a 20  he defensive.** 
22470 66 6c 61 67 20 69 73 20 65 6e 61 62 6c 65 64 2c  flag is enabled,
22480 20 6c 61 6e 67 75 61 67 65 20 66 65 61 74 75 72   language featur
22490 65 73 20 74 68 61 74 20 61 6c 6c 6f 77 20 6f 72  es that allow or
224a0 64 69 6e 61 72 79 20 53 51 4c 20 74 6f 20 0a 2a  dinary SQL to .*
224b0 2a 20 64 65 6c 69 62 65 72 61 74 65 6c 79 20 63  * deliberately c
224c0 6f 72 72 75 70 74 20 74 68 65 20 64 61 74 61 62  orrupt the datab
224d0 61 73 65 20 66 69 6c 65 20 61 72 65 20 64 69 73  ase file are dis
224e0 61 62 6c 65 64 2e 20 20 54 68 65 20 64 69 73 61  abled.  The disa
224f0 62 6c 65 64 0a 2a 2a 20 66 65 61 74 75 72 65 73  bled.** features
22500 20 69 6e 63 6c 75 64 65 20 62 75 74 20 61 72 65   include but are
22510 20 6e 6f 74 20 6c 69 6d 69 74 65 64 20 74 6f 20   not limited to 
22520 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 3a 0a 2a  the following:.*
22530 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54  * <ul>.** <li> T
22540 68 65 20 5b 50 52 41 47 4d 41 20 77 72 69 74 61  he [PRAGMA writa
22550 62 6c 65 5f 73 63 68 65 6d 61 3d 4f 4e 5d 20 73  ble_schema=ON] s
22560 74 61 74 65 6d 65 6e 74 2e 0a 2a 2a 20 3c 6c 69  tatement..** <li
22570 3e 20 57 72 69 74 65 73 20 74 6f 20 74 68 65 20  > Writes to the 
22580 5b 73 71 6c 69 74 65 5f 64 62 70 61 67 65 5d 20  [sqlite_dbpage] 
22590 76 69 72 74 75 61 6c 20 74 61 62 6c 65 2e 0a 2a  virtual table..*
225a0 2a 20 3c 6c 69 3e 20 44 69 72 65 63 74 20 77 72  * <li> Direct wr
225b0 69 74 65 73 20 74 6f 20 5b 73 68 61 64 6f 77 20  ites to [shadow 
225c0 74 61 62 6c 65 73 5d 2e 0a 2a 2a 20 3c 2f 75 6c  tables]..** </ul
225d0 3e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  >.** </dd>.**.**
225e0 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46   [[SQLITE_DBCONF
225f0 49 47 5f 57 52 49 54 41 42 4c 45 5f 53 43 48 45  IG_WRITABLE_SCHE
22600 4d 41 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  MA]] <dt>SQLITE_
22610 44 42 43 4f 4e 46 49 47 5f 57 52 49 54 41 42 4c  DBCONFIG_WRITABL
22620 45 5f 53 43 48 45 4d 41 3c 2f 64 74 3e 0a 2a 2a  E_SCHEMA</dt>.**
22630 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f   <dd>The SQLITE_
22640 44 42 43 4f 4e 46 49 47 5f 57 52 49 54 41 42 4c  DBCONFIG_WRITABL
22650 45 5f 53 43 48 45 4d 41 20 6f 70 74 69 6f 6e 20  E_SCHEMA option 
22660 61 63 74 69 76 61 74 65 73 20 6f 72 20 64 65 61  activates or dea
22670 63 74 69 76 61 74 65 73 20 74 68 65 0a 2a 2a 20  ctivates the.** 
22680 22 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d 61  "writable_schema
22690 22 20 66 6c 61 67 2e 20 54 68 69 73 20 68 61 73  " flag. This has
226a0 20 74 68 65 20 73 61 6d 65 20 65 66 66 65 63 74   the same effect
226b0 20 61 6e 64 20 69 73 20 6c 6f 67 69 63 61 6c 6c   and is logicall
226c0 79 20 65 71 75 69 76 61 6c 65 6e 74 0a 2a 2a 20  y equivalent.** 
226d0 74 6f 20 73 65 74 74 69 6e 67 20 5b 50 52 41 47  to setting [PRAG
226e0 4d 41 20 77 72 69 74 61 62 6c 65 5f 73 63 68 65  MA writable_sche
226f0 6d 61 3d 4f 4e 5d 20 6f 72 20 5b 50 52 41 47 4d  ma=ON] or [PRAGM
22700 41 20 77 72 69 74 61 62 6c 65 5f 73 63 68 65 6d  A writable_schem
22710 61 3d 4f 46 46 5d 2e 0a 2a 2a 20 54 68 65 20 66  a=OFF]..** The f
22720 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f  irst argument to
22730 20 74 68 69 73 20 73 65 74 74 69 6e 67 20 69 73   this setting is
22740 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63   an integer whic
22750 68 20 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c  h is 0 to disabl
22760 65 20 0a 2a 2a 20 74 68 65 20 77 72 69 74 61 62  e .** the writab
22770 6c 65 5f 73 63 68 65 6d 61 2c 20 70 6f 73 69 74  le_schema, posit
22780 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 77 72  ive to enable wr
22790 69 74 61 62 6c 65 5f 73 63 68 65 6d 61 2c 20 6f  itable_schema, o
227a0 72 20 6e 65 67 61 74 69 76 65 20 74 6f 0a 2a 2a  r negative to.**
227b0 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
227c0 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 20 54 68  ng unchanged. Th
227d0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
227e0 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  er is a pointer 
227f0 74 6f 20 61 6e 0a 2a 2a 20 69 6e 74 65 67 65 72  to an.** integer
22800 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77   into which is w
22810 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74 6f  ritten 0 or 1 to
22820 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68 65   indicate whethe
22830 72 20 74 68 65 20 77 72 69 74 61 62 6c 65 5f 73  r the writable_s
22840 63 68 65 6d 61 0a 2a 2a 20 69 73 20 65 6e 61 62  chema.** is enab
22850 6c 65 64 20 6f 72 20 64 69 73 61 62 6c 65 64 20  led or disabled 
22860 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63  following this c
22870 61 6c 6c 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  all..** </dd>.**
22880 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </dl>.*/.#defin
22890 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
228a0 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 20 20 20 20  G_MAINDBNAME    
228b0 20 20 20 20 20 20 20 20 31 30 30 30 20 2f 2a 20          1000 /* 
228c0 63 6f 6e 73 74 20 63 68 61 72 2a 20 2a 2f 0a 23  const char* */.#
228d0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42  define SQLITE_DB
228e0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
228f0 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30 30               100
22900 31 20 2f 2a 20 76 6f 69 64 2a 20 69 6e 74 20 69  1 /* void* int i
22910 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
22920 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
22930 41 42 4c 45 5f 46 4b 45 59 20 20 20 20 20 20 20  ABLE_FKEY       
22940 20 20 20 20 31 30 30 32 20 2f 2a 20 69 6e 74 20      1002 /* int 
22950 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
22960 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22970 45 4e 41 42 4c 45 5f 54 52 49 47 47 45 52 20 20  ENABLE_TRIGGER  
22980 20 20 20 20 20 20 31 30 30 33 20 2f 2a 20 69 6e        1003 /* in
22990 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
229a0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
229b0 47 5f 45 4e 41 42 4c 45 5f 46 54 53 33 5f 54 4f  G_ENABLE_FTS3_TO
229c0 4b 45 4e 49 5a 45 52 20 31 30 30 34 20 2f 2a 20  KENIZER 1004 /* 
229d0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
229e0 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
229f0 46 49 47 5f 45 4e 41 42 4c 45 5f 4c 4f 41 44 5f  FIG_ENABLE_LOAD_
22a00 45 58 54 45 4e 53 49 4f 4e 20 31 30 30 35 20 2f  EXTENSION 1005 /
22a10 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
22a20 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
22a30 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
22a40 5f 43 4c 4f 53 45 20 20 20 20 20 20 31 30 30 36  _CLOSE      1006
22a50 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
22a60 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
22a70 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
22a80 50 53 47 20 20 20 20 20 20 20 20 20 20 20 31 30  PSG           10
22a90 30 37 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  07 /* int int* *
22aa0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
22ab0 5f 44 42 43 4f 4e 46 49 47 5f 54 52 49 47 47 45  _DBCONFIG_TRIGGE
22ac0 52 5f 45 51 50 20 20 20 20 20 20 20 20 20 20 20  R_EQP           
22ad0 31 30 30 38 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1008 /* int int*
22ae0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
22af0 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45  TE_DBCONFIG_RESE
22b00 54 5f 44 41 54 41 42 41 53 45 20 20 20 20 20 20  T_DATABASE      
22b10 20 20 31 30 30 39 20 2f 2a 20 69 6e 74 20 69 6e    1009 /* int in
22b20 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
22b30 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45  LITE_DBCONFIG_DE
22b40 46 45 4e 53 49 56 45 20 20 20 20 20 20 20 20 20  FENSIVE         
22b50 20 20 20 20 31 30 31 30 20 2f 2a 20 69 6e 74 20      1010 /* int 
22b60 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
22b70 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22b80 57 52 49 54 41 42 4c 45 5f 53 43 48 45 4d 41 20  WRITABLE_SCHEMA 
22b90 20 20 20 20 20 20 31 30 31 31 20 2f 2a 20 69 6e        1011 /* in
22ba0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
22bb0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
22bc0 47 5f 4d 41 58 20 20 20 20 20 20 20 20 20 20 20  G_MAX           
22bd0 20 20 20 20 20 20 20 20 31 30 31 31 20 2f 2a 20          1011 /* 
22be0 4c 61 72 67 65 73 74 20 44 42 43 4f 4e 46 49 47  Largest DBCONFIG
22bf0 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33   */../*.** CAPI3
22c00 52 45 46 3a 20 45 6e 61 62 6c 65 20 4f 72 20 44  REF: Enable Or D
22c10 69 73 61 62 6c 65 20 45 78 74 65 6e 64 65 64 20  isable Extended 
22c20 52 65 73 75 6c 74 20 43 6f 64 65 73 0a 2a 2a 20  Result Codes.** 
22c30 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
22c40 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
22c50 65 33 5f 65 78 74 65 6e 64 65 64 5f 72 65 73 75  e3_extended_resu
22c60 6c 74 5f 63 6f 64 65 73 28 29 20 72 6f 75 74 69  lt_codes() routi
22c70 6e 65 20 65 6e 61 62 6c 65 73 20 6f 72 20 64 69  ne enables or di
22c80 73 61 62 6c 65 73 20 74 68 65 0a 2a 2a 20 5b 65  sables the.** [e
22c90 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
22ca0 6f 64 65 73 5d 20 66 65 61 74 75 72 65 20 6f 66  odes] feature of
22cb0 20 53 51 4c 69 74 65 2e 20 5e 54 68 65 20 65 78   SQLite. ^The ex
22cc0 74 65 6e 64 65 64 20 72 65 73 75 6c 74 0a 2a 2a  tended result.**
22cd0 20 63 6f 64 65 73 20 61 72 65 20 64 69 73 61 62   codes are disab
22ce0 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20 66  led by default f
22cf0 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 20 63 6f  or historical co
22d00 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2f 0a  mpatibility..*/.
22d10 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
22d20 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
22d30 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 73 71 6c  result_codes(sql
22d40 69 74 65 33 2a 2c 20 69 6e 74 20 6f 6e 6f 66 66  ite3*, int onoff
22d50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
22d60 45 46 3a 20 4c 61 73 74 20 49 6e 73 65 72 74 20  EF: Last Insert 
22d70 52 6f 77 69 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a  Rowid.** METHOD:
22d80 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
22d90 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 6d 6f  Each entry in mo
22da0 73 74 20 53 51 4c 69 74 65 20 74 61 62 6c 65 73  st SQLite tables
22db0 20 28 65 78 63 65 70 74 20 66 6f 72 20 5b 57 49   (except for [WI
22dc0 54 48 4f 55 54 20 52 4f 57 49 44 5d 20 74 61 62  THOUT ROWID] tab
22dd0 6c 65 73 29 0a 2a 2a 20 68 61 73 20 61 20 75 6e  les).** has a un
22de0 69 71 75 65 20 36 34 2d 62 69 74 20 73 69 67 6e  ique 64-bit sign
22df0 65 64 0a 2a 2a 20 69 6e 74 65 67 65 72 20 6b 65  ed.** integer ke
22e00 79 20 63 61 6c 6c 65 64 20 74 68 65 20 5b 52 4f  y called the [RO
22e10 57 49 44 20 7c 20 22 72 6f 77 69 64 22 5d 2e 20  WID | "rowid"]. 
22e20 5e 54 68 65 20 72 6f 77 69 64 20 69 73 20 61 6c  ^The rowid is al
22e30 77 61 79 73 20 61 76 61 69 6c 61 62 6c 65 0a 2a  ways available.*
22e40 2a 20 61 73 20 61 6e 20 75 6e 64 65 63 6c 61 72  * as an undeclar
22e50 65 64 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 64 20  ed column named 
22e60 52 4f 57 49 44 2c 20 4f 49 44 2c 20 6f 72 20 5f  ROWID, OID, or _
22e70 52 4f 57 49 44 5f 20 61 73 20 6c 6f 6e 67 20 61  ROWID_ as long a
22e80 73 20 74 68 6f 73 65 0a 2a 2a 20 6e 61 6d 65 73  s those.** names
22e90 20 61 72 65 20 6e 6f 74 20 61 6c 73 6f 20 75 73   are not also us
22ea0 65 64 20 62 79 20 65 78 70 6c 69 63 69 74 6c 79  ed by explicitly
22eb0 20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e   declared column
22ec0 73 2e 20 5e 49 66 0a 2a 2a 20 74 68 65 20 74 61  s. ^If.** the ta
22ed0 62 6c 65 20 68 61 73 20 61 20 63 6f 6c 75 6d 6e  ble has a column
22ee0 20 6f 66 20 74 79 70 65 20 5b 49 4e 54 45 47 45   of type [INTEGE
22ef0 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 20 74  R PRIMARY KEY] t
22f00 68 65 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 0a  hen that column.
22f10 2a 2a 20 69 73 20 61 6e 6f 74 68 65 72 20 61 6c  ** is another al
22f20 69 61 73 20 66 6f 72 20 74 68 65 20 72 6f 77 69  ias for the rowi
22f30 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  d..**.** ^The sq
22f40 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72  lite3_last_inser
22f50 74 5f 72 6f 77 69 64 28 44 29 20 69 6e 74 65 72  t_rowid(D) inter
22f60 66 61 63 65 20 75 73 75 61 6c 6c 79 20 72 65 74  face usually ret
22f70 75 72 6e 73 20 74 68 65 20 5b 72 6f 77 69 64 5d  urns the [rowid]
22f80 20 6f 66 0a 2a 2a 20 74 68 65 20 6d 6f 73 74 20   of.** the most 
22f90 72 65 63 65 6e 74 20 73 75 63 63 65 73 73 66 75  recent successfu
22fa0 6c 20 5b 49 4e 53 45 52 54 5d 20 69 6e 74 6f 20  l [INSERT] into 
22fb0 61 20 72 6f 77 69 64 20 74 61 62 6c 65 20 6f 72  a rowid table or
22fc0 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c 65 5d   [virtual table]
22fd0 0a 2a 2a 20 6f 6e 20 64 61 74 61 62 61 73 65 20  .** on database 
22fe0 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 5e 49  connection D. ^I
22ff0 6e 73 65 72 74 73 20 69 6e 74 6f 20 5b 57 49 54  nserts into [WIT
23000 48 4f 55 54 20 52 4f 57 49 44 5d 20 74 61 62 6c  HOUT ROWID] tabl
23010 65 73 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 72 65  es are not.** re
23020 63 6f 72 64 65 64 2e 20 5e 49 66 20 6e 6f 20 73  corded. ^If no s
23030 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52  uccessful [INSER
23040 54 5d 73 20 69 6e 74 6f 20 72 6f 77 69 64 20 74  T]s into rowid t
23050 61 62 6c 65 73 20 68 61 76 65 20 65 76 65 72 20  ables have ever 
23060 6f 63 63 75 72 72 65 64 20 0a 2a 2a 20 6f 6e 20  occurred .** on 
23070 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
23080 6e 65 63 74 69 6f 6e 20 44 2c 20 74 68 65 6e 20  nection D, then 
23090 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69 6e 73  sqlite3_last_ins
230a0 65 72 74 5f 72 6f 77 69 64 28 44 29 20 72 65 74  ert_rowid(D) ret
230b0 75 72 6e 73 20 0a 2a 2a 20 7a 65 72 6f 2e 0a 2a  urns .** zero..*
230c0 2a 0a 2a 2a 20 41 73 20 77 65 6c 6c 20 61 73 20  *.** As well as 
230d0 62 65 69 6e 67 20 73 65 74 20 61 75 74 6f 6d 61  being set automa
230e0 74 69 63 61 6c 6c 79 20 61 73 20 72 6f 77 73 20  tically as rows 
230f0 61 72 65 20 69 6e 73 65 72 74 65 64 20 69 6e 74  are inserted int
23100 6f 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 74 61  o database.** ta
23110 62 6c 65 73 2c 20 74 68 65 20 76 61 6c 75 65 20  bles, the value 
23120 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73  returned by this
23130 20 66 75 6e 63 74 69 6f 6e 20 6d 61 79 20 62 65   function may be
23140 20 73 65 74 20 65 78 70 6c 69 63 69 74 6c 79 20   set explicitly 
23150 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73  by.** [sqlite3_s
23160 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  et_last_insert_r
23170 6f 77 69 64 28 29 5d 0a 2a 2a 0a 2a 2a 20 53 6f  owid()].**.** So
23180 6d 65 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65  me virtual table
23190 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
231a0 20 6d 61 79 20 49 4e 53 45 52 54 20 72 6f 77 73   may INSERT rows
231b0 20 69 6e 74 6f 20 72 6f 77 69 64 20 74 61 62 6c   into rowid tabl
231c0 65 73 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f 66  es as.** part of
231d0 20 63 6f 6d 6d 69 74 74 69 6e 67 20 61 20 74 72   committing a tr
231e0 61 6e 73 61 63 74 69 6f 6e 20 28 65 2e 67 2e 20  ansaction (e.g. 
231f0 74 6f 20 66 6c 75 73 68 20 64 61 74 61 20 61 63  to flush data ac
23200 63 75 6d 75 6c 61 74 65 64 20 69 6e 20 6d 65 6d  cumulated in mem
23210 6f 72 79 0a 2a 2a 20 74 6f 20 64 69 73 6b 29 2e  ory.** to disk).
23220 20 49 6e 20 74 68 69 73 20 63 61 73 65 20 73 75   In this case su
23230 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74  bsequent calls t
23240 6f 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  o this function 
23250 72 65 74 75 72 6e 20 74 68 65 20 72 6f 77 69 64  return the rowid
23260 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77  .** associated w
23270 69 74 68 20 74 68 65 73 65 20 69 6e 74 65 72 6e  ith these intern
23280 61 6c 20 49 4e 53 45 52 54 20 6f 70 65 72 61 74  al INSERT operat
23290 69 6f 6e 73 2c 20 77 68 69 63 68 20 6c 65 61 64  ions, which lead
232a0 73 20 74 6f 20 0a 2a 2a 20 75 6e 69 6e 74 75 69  s to .** unintui
232b0 74 69 76 65 20 72 65 73 75 6c 74 73 2e 20 56 69  tive results. Vi
232c0 72 74 75 61 6c 20 74 61 62 6c 65 20 69 6d 70 6c  rtual table impl
232d0 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 68 61 74  ementations that
232e0 20 64 6f 20 77 72 69 74 65 20 74 6f 20 72 6f 77   do write to row
232f0 69 64 0a 2a 2a 20 74 61 62 6c 65 73 20 69 6e 20  id.** tables in 
23300 74 68 69 73 20 77 61 79 20 63 61 6e 20 61 76 6f  this way can avo
23310 69 64 20 74 68 69 73 20 70 72 6f 62 6c 65 6d 20  id this problem 
23320 62 79 20 72 65 73 74 6f 72 69 6e 67 20 74 68 65  by restoring the
23330 20 6f 72 69 67 69 6e 61 6c 20 0a 2a 2a 20 72 6f   original .** ro
23340 77 69 64 20 76 61 6c 75 65 20 75 73 69 6e 67 20  wid value using 
23350 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73  [sqlite3_set_las
23360 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
23370 5d 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e 69  ] before returni
23380 6e 67 20 0a 2a 2a 20 63 6f 6e 74 72 6f 6c 20 74  ng .** control t
23390 6f 20 74 68 65 20 75 73 65 72 2e 0a 2a 2a 0a 2a  o the user..**.*
233a0 2a 20 5e 28 49 66 20 61 6e 20 5b 49 4e 53 45 52  * ^(If an [INSER
233b0 54 5d 20 6f 63 63 75 72 73 20 77 69 74 68 69 6e  T] occurs within
233c0 20 61 20 74 72 69 67 67 65 72 20 74 68 65 6e 20   a trigger then 
233d0 74 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 6c  this routine wil
233e0 6c 20 0a 2a 2a 20 72 65 74 75 72 6e 20 74 68 65  l .** return the
233f0 20 5b 72 6f 77 69 64 5d 20 6f 66 20 74 68 65 20   [rowid] of the 
23400 69 6e 73 65 72 74 65 64 20 72 6f 77 20 61 73 20  inserted row as 
23410 6c 6f 6e 67 20 61 73 20 74 68 65 20 74 72 69 67  long as the trig
23420 67 65 72 20 69 73 20 0a 2a 2a 20 72 75 6e 6e 69  ger is .** runni
23430 6e 67 2e 20 4f 6e 63 65 20 74 68 65 20 74 72 69  ng. Once the tri
23440 67 67 65 72 20 70 72 6f 67 72 61 6d 20 65 6e 64  gger program end
23450 73 2c 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  s, the value ret
23460 75 72 6e 65 64 20 0a 2a 2a 20 62 79 20 74 68 69  urned .** by thi
23470 73 20 72 6f 75 74 69 6e 65 20 72 65 76 65 72 74  s routine revert
23480 73 20 74 6f 20 77 68 61 74 20 69 74 20 77 61 73  s to what it was
23490 20 62 65 66 6f 72 65 20 74 68 65 20 74 72 69 67   before the trig
234a0 67 65 72 20 77 61 73 20 66 69 72 65 64 2e 29 5e  ger was fired.)^
234b0 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 5b 49 4e 53 45  .**.** ^An [INSE
234c0 52 54 5d 20 74 68 61 74 20 66 61 69 6c 73 20 64  RT] that fails d
234d0 75 65 20 74 6f 20 61 20 63 6f 6e 73 74 72 61 69  ue to a constrai
234e0 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20  nt violation is 
234f0 6e 6f 74 20 61 0a 2a 2a 20 73 75 63 63 65 73 73  not a.** success
23500 66 75 6c 20 5b 49 4e 53 45 52 54 5d 20 61 6e 64  ful [INSERT] and
23510 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67 65   does not change
23520 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
23530 6e 65 64 20 62 79 20 74 68 69 73 0a 2a 2a 20 72  ned by this.** r
23540 6f 75 74 69 6e 65 2e 20 20 5e 54 68 75 73 20 49  outine.  ^Thus I
23550 4e 53 45 52 54 20 4f 52 20 46 41 49 4c 2c 20 49  NSERT OR FAIL, I
23560 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f 52 45 2c  NSERT OR IGNORE,
23570 20 49 4e 53 45 52 54 20 4f 52 20 52 4f 4c 4c 42   INSERT OR ROLLB
23580 41 43 4b 2c 0a 2a 2a 20 61 6e 64 20 49 4e 53 45  ACK,.** and INSE
23590 52 54 20 4f 52 20 41 42 4f 52 54 20 6d 61 6b 65  RT OR ABORT make
235a0 20 6e 6f 20 63 68 61 6e 67 65 73 20 74 6f 20 74   no changes to t
235b0 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  he return value 
235c0 6f 66 20 74 68 69 73 0a 2a 2a 20 72 6f 75 74 69  of this.** routi
235d0 6e 65 20 77 68 65 6e 20 74 68 65 69 72 20 69 6e  ne when their in
235e0 73 65 72 74 69 6f 6e 20 66 61 69 6c 73 2e 20 20  sertion fails.  
235f0 5e 28 57 68 65 6e 20 49 4e 53 45 52 54 20 4f 52  ^(When INSERT OR
23600 20 52 45 50 4c 41 43 45 0a 2a 2a 20 65 6e 63 6f   REPLACE.** enco
23610 75 6e 74 65 72 73 20 61 20 63 6f 6e 73 74 72 61  unters a constra
23620 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 2c 20 69  int violation, i
23630 74 20 64 6f 65 73 20 6e 6f 74 20 66 61 69 6c 2e  t does not fail.
23640 20 20 54 68 65 0a 2a 2a 20 49 4e 53 45 52 54 20    The.** INSERT 
23650 63 6f 6e 74 69 6e 75 65 73 20 74 6f 20 63 6f 6d  continues to com
23660 70 6c 65 74 69 6f 6e 20 61 66 74 65 72 20 64 65  pletion after de
23670 6c 65 74 69 6e 67 20 72 6f 77 73 20 74 68 61 74  leting rows that
23680 20 63 61 75 73 65 64 0a 2a 2a 20 74 68 65 20 63   caused.** the c
23690 6f 6e 73 74 72 61 69 6e 74 20 70 72 6f 62 6c 65  onstraint proble
236a0 6d 20 73 6f 20 49 4e 53 45 52 54 20 4f 52 20 52  m so INSERT OR R
236b0 45 50 4c 41 43 45 20 77 69 6c 6c 20 61 6c 77 61  EPLACE will alwa
236c0 79 73 20 63 68 61 6e 67 65 0a 2a 2a 20 74 68 65  ys change.** the
236d0 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66   return value of
236e0 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65 2e   this interface.
236f0 29 5e 0a 2a 2a 0a 2a 2a 20 5e 46 6f 72 20 74 68  )^.**.** ^For th
23700 65 20 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68  e purposes of th
23710 69 73 20 72 6f 75 74 69 6e 65 2c 20 61 6e 20 5b  is routine, an [
23720 49 4e 53 45 52 54 5d 20 69 73 20 63 6f 6e 73 69  INSERT] is consi
23730 64 65 72 65 64 20 74 6f 0a 2a 2a 20 62 65 20 73  dered to.** be s
23740 75 63 63 65 73 73 66 75 6c 20 65 76 65 6e 20 69  uccessful even i
23750 66 20 69 74 20 69 73 20 73 75 62 73 65 71 75 65  f it is subseque
23760 6e 74 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b  ntly rolled back
23770 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 75 6e  ..**.** This fun
23780 63 74 69 6f 6e 20 69 73 20 61 63 63 65 73 73 69  ction is accessi
23790 62 6c 65 20 74 6f 20 53 51 4c 20 73 74 61 74 65  ble to SQL state
237a0 6d 65 6e 74 73 20 76 69 61 20 74 68 65 0a 2a 2a  ments via the.**
237b0 20 5b 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f   [last_insert_ro
237c0 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63 74 69  wid() SQL functi
237d0 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20  on]..**.** If a 
237e0 73 65 70 61 72 61 74 65 20 74 68 72 65 61 64 20  separate thread 
237f0 70 65 72 66 6f 72 6d 73 20 61 20 6e 65 77 20 5b  performs a new [
23800 49 4e 53 45 52 54 5d 20 6f 6e 20 74 68 65 20 73  INSERT] on the s
23810 61 6d 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  ame.** database 
23820 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69 6c 65  connection while
23830 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 61   the [sqlite3_la
23840 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
23850 29 5d 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 69  )].** function i
23860 73 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20 74 68  s running and th
23870 75 73 20 63 68 61 6e 67 65 73 20 74 68 65 20 6c  us changes the l
23880 61 73 74 20 69 6e 73 65 72 74 20 5b 72 6f 77 69  ast insert [rowi
23890 64 5d 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  d],.** then the 
238a0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
238b0 79 20 5b 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f  y [sqlite3_last_
238c0 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 20  insert_rowid()] 
238d0 69 73 0a 2a 2a 20 75 6e 70 72 65 64 69 63 74 61  is.** unpredicta
238e0 62 6c 65 20 61 6e 64 20 6d 69 67 68 74 20 6e 6f  ble and might no
238f0 74 20 65 71 75 61 6c 20 65 69 74 68 65 72 20 74  t equal either t
23900 68 65 20 6f 6c 64 20 6f 72 20 74 68 65 20 6e 65  he old or the ne
23910 77 0a 2a 2a 20 6c 61 73 74 20 69 6e 73 65 72 74  w.** last insert
23920 20 5b 72 6f 77 69 64 5d 2e 0a 2a 2f 0a 53 51 4c   [rowid]..*/.SQL
23930 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f  ITE_API sqlite3_
23940 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6c 61  int64 sqlite3_la
23950 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
23960 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a  sqlite3*);../*.*
23970 2a 20 43 41 50 49 33 52 45 46 3a 20 53 65 74 20  * CAPI3REF: Set 
23980 74 68 65 20 4c 61 73 74 20 49 6e 73 65 72 74 20  the Last Insert 
23990 52 6f 77 69 64 20 76 61 6c 75 65 2e 0a 2a 2a 20  Rowid value..** 
239a0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
239b0 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
239c0 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72  3_set_last_inser
239d0 74 5f 72 6f 77 69 64 28 44 2c 20 52 29 20 6d 65  t_rowid(D, R) me
239e0 74 68 6f 64 20 61 6c 6c 6f 77 73 20 74 68 65 20  thod allows the 
239f0 61 70 70 6c 69 63 61 74 69 6f 6e 20 74 6f 0a 2a  application to.*
23a00 2a 20 73 65 74 20 74 68 65 20 76 61 6c 75 65 20  * set the value 
23a10 72 65 74 75 72 6e 65 64 20 62 79 20 63 61 6c 6c  returned by call
23a20 69 6e 67 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  ing sqlite3_last
23a30 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29  _insert_rowid(D)
23a40 20 74 6f 20 52 20 0a 2a 2a 20 77 69 74 68 6f 75   to R .** withou
23a50 74 20 69 6e 73 65 72 74 69 6e 67 20 61 20 72 6f  t inserting a ro
23a60 77 20 69 6e 74 6f 20 74 68 65 20 64 61 74 61 62  w into the datab
23a70 61 73 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ase..*/.SQLITE_A
23a80 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  PI void sqlite3_
23a90 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  set_last_insert_
23aa0 72 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 2c 73  rowid(sqlite3*,s
23ab0 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b 0a 0a  qlite3_int64);..
23ac0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
23ad0 43 6f 75 6e 74 20 54 68 65 20 4e 75 6d 62 65 72  Count The Number
23ae0 20 4f 66 20 52 6f 77 73 20 4d 6f 64 69 66 69 65   Of Rows Modifie
23af0 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  d.** METHOD: sql
23b00 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73  ite3.**.** ^This
23b10 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
23b20 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
23b30 72 6f 77 73 20 6d 6f 64 69 66 69 65 64 2c 20 69  rows modified, i
23b40 6e 73 65 72 74 65 64 20 6f 72 0a 2a 2a 20 64 65  nserted or.** de
23b50 6c 65 74 65 64 20 62 79 20 74 68 65 20 6d 6f 73  leted by the mos
23b60 74 20 72 65 63 65 6e 74 6c 79 20 63 6f 6d 70 6c  t recently compl
23b70 65 74 65 64 20 49 4e 53 45 52 54 2c 20 55 50 44  eted INSERT, UPD
23b80 41 54 45 20 6f 72 20 44 45 4c 45 54 45 0a 2a 2a  ATE or DELETE.**
23b90 20 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68   statement on th
23ba0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
23bb0 63 74 69 6f 6e 20 73 70 65 63 69 66 69 65 64 20  ction specified 
23bc0 62 79 20 74 68 65 20 6f 6e 6c 79 20 70 61 72 61  by the only para
23bd0 6d 65 74 65 72 2e 0a 2a 2a 20 5e 45 78 65 63 75  meter..** ^Execu
23be0 74 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 74  ting any other t
23bf0 79 70 65 20 6f 66 20 53 51 4c 20 73 74 61 74 65  ype of SQL state
23c00 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 6d 6f  ment does not mo
23c10 64 69 66 79 20 74 68 65 20 76 61 6c 75 65 0a 2a  dify the value.*
23c20 2a 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68  * returned by th
23c30 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 0a  is function..**.
23c40 2a 2a 20 5e 4f 6e 6c 79 20 63 68 61 6e 67 65 73  ** ^Only changes
23c50 20 6d 61 64 65 20 64 69 72 65 63 74 6c 79 20 62   made directly b
23c60 79 20 74 68 65 20 49 4e 53 45 52 54 2c 20 55 50  y the INSERT, UP
23c70 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73  DATE or DELETE s
23c80 74 61 74 65 6d 65 6e 74 20 61 72 65 0a 2a 2a 20  tatement are.** 
23c90 63 6f 6e 73 69 64 65 72 65 64 20 2d 20 61 75 78  considered - aux
23ca0 69 6c 69 61 72 79 20 63 68 61 6e 67 65 73 20 63  iliary changes c
23cb0 61 75 73 65 64 20 62 79 20 5b 43 52 45 41 54 45  aused by [CREATE
23cc0 20 54 52 49 47 47 45 52 20 7c 20 74 72 69 67 67   TRIGGER | trigg
23cd0 65 72 73 5d 2c 20 0a 2a 2a 20 5b 66 6f 72 65 69  ers], .** [forei
23ce0 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e 73 5d 20  gn key actions] 
23cf0 6f 72 20 5b 52 45 50 4c 41 43 45 5d 20 63 6f 6e  or [REPLACE] con
23d00 73 74 72 61 69 6e 74 20 72 65 73 6f 6c 75 74 69  straint resoluti
23d10 6f 6e 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e 74  on are not count
23d20 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 43 68 61 6e 67  ed..** .** Chang
23d30 65 73 20 74 6f 20 61 20 76 69 65 77 20 74 68 61  es to a view tha
23d40 74 20 61 72 65 20 69 6e 74 65 72 63 65 70 74 65  t are intercepte
23d50 64 20 62 79 20 0a 2a 2a 20 5b 49 4e 53 54 45 41  d by .** [INSTEA
23d60 44 20 4f 46 20 74 72 69 67 67 65 72 20 7c 20 49  D OF trigger | I
23d70 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65  NSTEAD OF trigge
23d80 72 73 5d 20 61 72 65 20 6e 6f 74 20 63 6f 75 6e  rs] are not coun
23d90 74 65 64 2e 20 5e 54 68 65 20 76 61 6c 75 65 20  ted. ^The value 
23da0 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 62 79 20  .** returned by 
23db0 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
23dc0 29 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 61 66  ) immediately af
23dd0 74 65 72 20 61 6e 20 49 4e 53 45 52 54 2c 20 55  ter an INSERT, U
23de0 50 44 41 54 45 20 6f 72 20 0a 2a 2a 20 44 45 4c  PDATE or .** DEL
23df0 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 72 75  ETE statement ru
23e00 6e 20 6f 6e 20 61 20 76 69 65 77 20 69 73 20 61  n on a view is a
23e10 6c 77 61 79 73 20 7a 65 72 6f 2e 20 4f 6e 6c 79  lways zero. Only
23e20 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20 74 6f   changes made to
23e30 20 72 65 61 6c 20 0a 2a 2a 20 74 61 62 6c 65 73   real .** tables
23e40 20 61 72 65 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a   are counted..**
23e50 0a 2a 2a 20 54 68 69 6e 67 73 20 61 72 65 20 6d  .** Things are m
23e60 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64 20  ore complicated 
23e70 69 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63  if the sqlite3_c
23e80 68 61 6e 67 65 73 28 29 20 66 75 6e 63 74 69 6f  hanges() functio
23e90 6e 20 69 73 0a 2a 2a 20 65 78 65 63 75 74 65 64  n is.** executed
23ea0 20 77 68 69 6c 65 20 61 20 74 72 69 67 67 65 72   while a trigger
23eb0 20 70 72 6f 67 72 61 6d 20 69 73 20 72 75 6e 6e   program is runn
23ec0 69 6e 67 2e 20 54 68 69 73 20 6d 61 79 20 68 61  ing. This may ha
23ed0 70 70 65 6e 20 69 66 20 74 68 65 0a 2a 2a 20 70  ppen if the.** p
23ee0 72 6f 67 72 61 6d 20 75 73 65 73 20 74 68 65 20  rogram uses the 
23ef0 5b 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66  [changes() SQL f
23f00 75 6e 63 74 69 6f 6e 5d 2c 20 6f 72 20 69 66 20  unction], or if 
23f10 73 6f 6d 65 20 6f 74 68 65 72 20 63 61 6c 6c 62  some other callb
23f20 61 63 6b 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ack.** function 
23f30 69 6e 76 6f 6b 65 73 20 73 71 6c 69 74 65 33 5f  invokes sqlite3_
23f40 63 68 61 6e 67 65 73 28 29 20 64 69 72 65 63 74  changes() direct
23f50 6c 79 2e 20 45 73 73 65 6e 74 69 61 6c 6c 79 3a  ly. Essentially:
23f60 0a 2a 2a 20 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20  .** .** <ul>.** 
23f70 20 20 3c 6c 69 3e 20 5e 28 42 65 66 6f 72 65 20    <li> ^(Before 
23f80 65 6e 74 65 72 69 6e 67 20 61 20 74 72 69 67 67  entering a trigg
23f90 65 72 20 70 72 6f 67 72 61 6d 20 74 68 65 20 76  er program the v
23fa0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
23fb0 0a 2a 2a 20 20 20 20 20 20 20 20 73 71 6c 69 74  .**        sqlit
23fc0 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e  e3_changes() fun
23fd0 63 74 69 6f 6e 20 69 73 20 73 61 76 65 64 2e 20  ction is saved. 
23fe0 41 66 74 65 72 20 74 68 65 20 74 72 69 67 67 65  After the trigge
23ff0 72 20 70 72 6f 67 72 61 6d 20 0a 2a 2a 20 20 20  r program .**   
24000 20 20 20 20 20 68 61 73 20 66 69 6e 69 73 68 65       has finishe
24010 64 2c 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  d, the original 
24020 76 61 6c 75 65 20 69 73 20 72 65 73 74 6f 72 65  value is restore
24030 64 2e 29 5e 0a 2a 2a 20 0a 2a 2a 20 20 20 3c 6c  d.)^.** .**   <l
24040 69 3e 20 5e 28 57 69 74 68 69 6e 20 61 20 74 72  i> ^(Within a tr
24050 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 65 61  igger program ea
24060 63 68 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  ch INSERT, UPDAT
24070 45 20 61 6e 64 20 44 45 4c 45 54 45 20 0a 2a 2a  E and DELETE .**
24080 20 20 20 20 20 20 20 20 73 74 61 74 65 6d 65 6e          statemen
24090 74 20 73 65 74 73 20 74 68 65 20 76 61 6c 75 65  t sets the value
240a0 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
240b0 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 0a  ite3_changes() .
240c0 2a 2a 20 20 20 20 20 20 20 20 75 70 6f 6e 20 63  **        upon c
240d0 6f 6d 70 6c 65 74 69 6f 6e 20 61 73 20 6e 6f 72  ompletion as nor
240e0 6d 61 6c 2e 20 4f 66 20 63 6f 75 72 73 65 2c 20  mal. Of course, 
240f0 74 68 69 73 20 76 61 6c 75 65 20 77 69 6c 6c 20  this value will 
24100 6e 6f 74 20 69 6e 63 6c 75 64 65 20 0a 2a 2a 20  not include .** 
24110 20 20 20 20 20 20 20 61 6e 79 20 63 68 61 6e 67         any chang
24120 65 73 20 70 65 72 66 6f 72 6d 65 64 20 62 79 20  es performed by 
24130 73 75 62 2d 74 72 69 67 67 65 72 73 2c 20 61 73  sub-triggers, as
24140 20 74 68 65 20 73 71 6c 69 74 65 33 5f 63 68 61   the sqlite3_cha
24150 6e 67 65 73 28 29 20 0a 2a 2a 20 20 20 20 20 20  nges() .**      
24160 20 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20    value will be 
24170 73 61 76 65 64 20 61 6e 64 20 72 65 73 74 6f 72  saved and restor
24180 65 64 20 61 66 74 65 72 20 65 61 63 68 20 73 75  ed after each su
24190 62 2d 74 72 69 67 67 65 72 20 68 61 73 20 72 75  b-trigger has ru
241a0 6e 2e 29 5e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  n.)^.** </ul>.**
241b0 20 0a 2a 2a 20 5e 54 68 69 73 20 6d 65 61 6e 73   .** ^This means
241c0 20 74 68 61 74 20 69 66 20 74 68 65 20 63 68 61   that if the cha
241d0 6e 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74  nges() SQL funct
241e0 69 6f 6e 20 28 6f 72 20 73 69 6d 69 6c 61 72 29  ion (or similar)
241f0 20 69 73 20 75 73 65 64 0a 2a 2a 20 62 79 20 74   is used.** by t
24200 68 65 20 66 69 72 73 74 20 49 4e 53 45 52 54 2c  he first INSERT,
24210 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54   UPDATE or DELET
24220 45 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68  E statement with
24230 69 6e 20 61 20 74 72 69 67 67 65 72 2c 20 69 74  in a trigger, it
24240 20 0a 2a 2a 20 72 65 74 75 72 6e 73 20 74 68 65   .** returns the
24250 20 76 61 6c 75 65 20 61 73 20 73 65 74 20 77 68   value as set wh
24260 65 6e 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 73  en the calling s
24270 74 61 74 65 6d 65 6e 74 20 62 65 67 61 6e 20 65  tatement began e
24280 78 65 63 75 74 69 6e 67 2e 0a 2a 2a 20 5e 49 66  xecuting..** ^If
24290 20 69 74 20 69 73 20 75 73 65 64 20 62 79 20 74   it is used by t
242a0 68 65 20 73 65 63 6f 6e 64 20 6f 72 20 73 75 62  he second or sub
242b0 73 65 71 75 65 6e 74 20 73 75 63 68 20 73 74 61  sequent such sta
242c0 74 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20  tement within a 
242d0 74 72 69 67 67 65 72 20 0a 2a 2a 20 70 72 6f 67  trigger .** prog
242e0 72 61 6d 2c 20 74 68 65 20 76 61 6c 75 65 20 72  ram, the value r
242f0 65 74 75 72 6e 65 64 20 72 65 66 6c 65 63 74 73  eturned reflects
24300 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
24310 6f 77 73 20 6d 6f 64 69 66 69 65 64 20 62 79 20  ows modified by 
24320 74 68 65 20 0a 2a 2a 20 70 72 65 76 69 6f 75 73  the .** previous
24330 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20   INSERT, UPDATE 
24340 6f 72 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  or DELETE statem
24350 65 6e 74 20 77 69 74 68 69 6e 20 74 68 65 20 73  ent within the s
24360 61 6d 65 20 74 72 69 67 67 65 72 2e 0a 2a 2a 0a  ame trigger..**.
24370 2a 2a 20 49 66 20 61 20 73 65 70 61 72 61 74 65  ** If a separate
24380 20 74 68 72 65 61 64 20 6d 61 6b 65 73 20 63 68   thread makes ch
24390 61 6e 67 65 73 20 6f 6e 20 74 68 65 20 73 61 6d  anges on the sam
243a0 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
243b0 63 74 69 6f 6e 0a 2a 2a 20 77 68 69 6c 65 20 5b  ction.** while [
243c0 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28  sqlite3_changes(
243d0 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67 20 74 68  )] is running th
243e0 65 6e 20 74 68 65 20 76 61 6c 75 65 20 72 65 74  en the value ret
243f0 75 72 6e 65 64 0a 2a 2a 20 69 73 20 75 6e 70 72  urned.** is unpr
24400 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20 6e 6f  edictable and no
24410 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 0a 2a 2a  t meaningful..**
24420 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 0a 2a 2a  .** See also:.**
24430 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 74 68   <ul>.** <li> th
24440 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
24450 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65  _changes()] inte
24460 72 66 61 63 65 0a 2a 2a 20 3c 6c 69 3e 20 74 68  rface.** <li> th
24470 65 20 5b 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73  e [count_changes
24480 20 70 72 61 67 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e   pragma].** <li>
24490 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20   the [changes() 
244a0 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 0a 2a 2a  SQL function].**
244b0 20 3c 6c 69 3e 20 74 68 65 20 5b 64 61 74 61 5f   <li> the [data_
244c0 76 65 72 73 69 6f 6e 20 70 72 61 67 6d 61 5d 0a  version pragma].
244d0 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51 4c 49  ** </ul>.*/.SQLI
244e0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
244f0 65 33 5f 63 68 61 6e 67 65 73 28 73 71 6c 69 74  e3_changes(sqlit
24500 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  e3*);../*.** CAP
24510 49 33 52 45 46 3a 20 54 6f 74 61 6c 20 4e 75 6d  I3REF: Total Num
24520 62 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f 64 69  ber Of Rows Modi
24530 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  fied.** METHOD: 
24540 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54  sqlite3.**.** ^T
24550 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  his function ret
24560 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e  urns the total n
24570 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e  umber of rows in
24580 73 65 72 74 65 64 2c 20 6d 6f 64 69 66 69 65 64  serted, modified
24590 20 6f 72 0a 2a 2a 20 64 65 6c 65 74 65 64 20 62   or.** deleted b
245a0 79 20 61 6c 6c 20 5b 49 4e 53 45 52 54 5d 2c 20  y all [INSERT], 
245b0 5b 55 50 44 41 54 45 5d 20 6f 72 20 5b 44 45 4c  [UPDATE] or [DEL
245c0 45 54 45 5d 20 73 74 61 74 65 6d 65 6e 74 73 20  ETE] statements 
245d0 63 6f 6d 70 6c 65 74 65 64 0a 2a 2a 20 73 69 6e  completed.** sin
245e0 63 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ce the database 
245f0 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 61 73 20 6f  connection was o
24600 70 65 6e 65 64 2c 20 69 6e 63 6c 75 64 69 6e 67  pened, including
24610 20 74 68 6f 73 65 20 65 78 65 63 75 74 65 64 20   those executed 
24620 61 73 0a 2a 2a 20 70 61 72 74 20 6f 66 20 74 72  as.** part of tr
24630 69 67 67 65 72 20 70 72 6f 67 72 61 6d 73 2e 20  igger programs. 
24640 5e 45 78 65 63 75 74 69 6e 67 20 61 6e 79 20 6f  ^Executing any o
24650 74 68 65 72 20 74 79 70 65 20 6f 66 20 53 51 4c  ther type of SQL
24660 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 64 6f   statement.** do
24670 65 73 20 6e 6f 74 20 61 66 66 65 63 74 20 74 68  es not affect th
24680 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64  e value returned
24690 20 62 79 20 73 71 6c 69 74 65 33 5f 74 6f 74 61   by sqlite3_tota
246a0 6c 5f 63 68 61 6e 67 65 73 28 29 2e 0a 2a 2a 20  l_changes()..** 
246b0 0a 2a 2a 20 5e 43 68 61 6e 67 65 73 20 6d 61 64  .** ^Changes mad
246c0 65 20 61 73 20 70 61 72 74 20 6f 66 20 5b 66 6f  e as part of [fo
246d0 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f 6e  reign key action
246e0 73 5d 20 61 72 65 20 69 6e 63 6c 75 64 65 64 20  s] are included 
246f0 69 6e 20 74 68 65 0a 2a 2a 20 63 6f 75 6e 74 2c  in the.** count,
24700 20 62 75 74 20 74 68 6f 73 65 20 6d 61 64 65 20   but those made 
24710 61 73 20 70 61 72 74 20 6f 66 20 52 45 50 4c 41  as part of REPLA
24720 43 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 72 65  CE constraint re
24730 73 6f 6c 75 74 69 6f 6e 20 61 72 65 0a 2a 2a 20  solution are.** 
24740 6e 6f 74 2e 20 5e 43 68 61 6e 67 65 73 20 74 6f  not. ^Changes to
24750 20 61 20 76 69 65 77 20 74 68 61 74 20 61 72 65   a view that are
24760 20 69 6e 74 65 72 63 65 70 74 65 64 20 62 79 20   intercepted by 
24770 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
24780 65 72 73 20 0a 2a 2a 20 61 72 65 20 6e 6f 74 20  ers .** are not 
24790 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  counted..**.** T
247a0 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61  he [sqlite3_tota
247b0 6c 5f 63 68 61 6e 67 65 73 28 44 29 5d 20 69 6e  l_changes(D)] in
247c0 74 65 72 66 61 63 65 20 6f 6e 6c 79 20 72 65 70  terface only rep
247d0 6f 72 74 73 20 74 68 65 20 6e 75 6d 62 65 72 0a  orts the number.
247e0 2a 2a 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20  ** of rows that 
247f0 63 68 61 6e 67 65 64 20 64 75 65 20 74 6f 20 53  changed due to S
24800 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 72 75 6e  QL statement run
24810 20 61 67 61 69 6e 73 74 20 64 61 74 61 62 61 73   against databas
24820 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  e.** connection 
24830 44 2e 20 20 41 6e 79 20 63 68 61 6e 67 65 73 20  D.  Any changes 
24840 62 79 20 6f 74 68 65 72 20 64 61 74 61 62 61 73  by other databas
24850 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 72  e connections ar
24860 65 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 20 54 6f  e ignored..** To
24870 20 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20   detect changes 
24880 61 67 61 69 6e 73 74 20 61 20 64 61 74 61 62 61  against a databa
24890 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 6f 74 68  se file from oth
248a0 65 72 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63  er database.** c
248b0 6f 6e 6e 65 63 74 69 6f 6e 73 20 75 73 65 20 74  onnections use t
248c0 68 65 20 5b 50 52 41 47 4d 41 20 64 61 74 61 5f  he [PRAGMA data_
248d0 76 65 72 73 69 6f 6e 5d 20 63 6f 6d 6d 61 6e 64  version] command
248e0 20 6f 72 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49   or the.** [SQLI
248f0 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
24900 52 53 49 4f 4e 5d 20 5b 66 69 6c 65 20 63 6f 6e  RSION] [file con
24910 74 72 6f 6c 5d 2e 0a 2a 2a 20 0a 2a 2a 20 49 66  trol]..** .** If
24920 20 61 20 73 65 70 61 72 61 74 65 20 74 68 72 65   a separate thre
24930 61 64 20 6d 61 6b 65 73 20 63 68 61 6e 67 65 73  ad makes changes
24940 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 64 61 74   on the same dat
24950 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
24960 0a 2a 2a 20 77 68 69 6c 65 20 5b 73 71 6c 69 74  .** while [sqlit
24970 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
24980 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e 67 20 74  ()] is running t
24990 68 65 6e 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a  hen the value.**
249a0 20 72 65 74 75 72 6e 65 64 20 69 73 20 75 6e 70   returned is unp
249b0 72 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20 6e  redictable and n
249c0 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c 2e 0a 2a  ot meaningful..*
249d0 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 0a 2a  *.** See also:.*
249e0 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 74  * <ul>.** <li> t
249f0 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  he [sqlite3_chan
24a00 67 65 73 28 29 5d 20 69 6e 74 65 72 66 61 63 65  ges()] interface
24a10 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 63 6f  .** <li> the [co
24a20 75 6e 74 5f 63 68 61 6e 67 65 73 20 70 72 61 67  unt_changes prag
24a30 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20  ma].** <li> the 
24a40 5b 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66  [changes() SQL f
24a50 75 6e 63 74 69 6f 6e 5d 0a 2a 2a 20 3c 6c 69 3e  unction].** <li>
24a60 20 74 68 65 20 5b 64 61 74 61 5f 76 65 72 73 69   the [data_versi
24a70 6f 6e 20 70 72 61 67 6d 61 5d 0a 2a 2a 20 3c 6c  on pragma].** <l
24a80 69 3e 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  i> the [SQLITE_F
24a90 43 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f  CNTL_DATA_VERSIO
24aa0 4e 5d 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  N] [file control
24ab0 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51  ].** </ul>.*/.SQ
24ac0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
24ad0 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
24ae0 65 73 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f  es(sqlite3*);../
24af0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 49  *.** CAPI3REF: I
24b00 6e 74 65 72 72 75 70 74 20 41 20 4c 6f 6e 67 2d  nterrupt A Long-
24b10 52 75 6e 6e 69 6e 67 20 51 75 65 72 79 0a 2a 2a  Running Query.**
24b20 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
24b30 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e  .**.** ^This fun
24b40 63 74 69 6f 6e 20 63 61 75 73 65 73 20 61 6e 79  ction causes any
24b50 20 70 65 6e 64 69 6e 67 20 64 61 74 61 62 61 73   pending databas
24b60 65 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20 61  e operation to a
24b70 62 6f 72 74 20 61 6e 64 0a 2a 2a 20 72 65 74 75  bort and.** retu
24b80 72 6e 20 61 74 20 69 74 73 20 65 61 72 6c 69 65  rn at its earlie
24b90 73 74 20 6f 70 70 6f 72 74 75 6e 69 74 79 2e 20  st opportunity. 
24ba0 54 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20  This routine is 
24bb0 74 79 70 69 63 61 6c 6c 79 0a 2a 2a 20 63 61 6c  typically.** cal
24bc0 6c 65 64 20 69 6e 20 72 65 73 70 6f 6e 73 65 20  led in response 
24bd0 74 6f 20 61 20 75 73 65 72 20 61 63 74 69 6f 6e  to a user action
24be0 20 73 75 63 68 20 61 73 20 70 72 65 73 73 69 6e   such as pressin
24bf0 67 20 22 43 61 6e 63 65 6c 22 0a 2a 2a 20 6f 72  g "Cancel".** or
24c00 20 43 74 72 6c 2d 43 20 77 68 65 72 65 20 74 68   Ctrl-C where th
24c10 65 20 75 73 65 72 20 77 61 6e 74 73 20 61 20 6c  e user wants a l
24c20 6f 6e 67 20 71 75 65 72 79 20 6f 70 65 72 61 74  ong query operat
24c30 69 6f 6e 20 74 6f 20 68 61 6c 74 0a 2a 2a 20 69  ion to halt.** i
24c40 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a 2a 0a 2a  mmediately..**.*
24c50 2a 20 5e 49 74 20 69 73 20 73 61 66 65 20 74 6f  * ^It is safe to
24c60 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75 74 69   call this routi
24c70 6e 65 20 66 72 6f 6d 20 61 20 74 68 72 65 61 64  ne from a thread
24c80 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20   different from 
24c90 74 68 65 0a 2a 2a 20 74 68 72 65 61 64 20 74 68  the.** thread th
24ca0 61 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20  at is currently 
24cb0 72 75 6e 6e 69 6e 67 20 74 68 65 20 64 61 74 61  running the data
24cc0 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 2e 20  base operation. 
24cd0 20 42 75 74 20 69 74 0a 2a 2a 20 69 73 20 6e 6f   But it.** is no
24ce0 74 20 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 74  t safe to call t
24cf0 68 69 73 20 72 6f 75 74 69 6e 65 20 77 69 74 68  his routine with
24d00 20 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e   a [database con
24d10 6e 65 63 74 69 6f 6e 5d 20 74 68 61 74 0a 2a 2a  nection] that.**
24d20 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 6d 69   is closed or mi
24d30 67 68 74 20 63 6c 6f 73 65 20 62 65 66 6f 72 65  ght close before
24d40 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75   sqlite3_interru
24d50 70 74 28 29 20 72 65 74 75 72 6e 73 2e 0a 2a 2a  pt() returns..**
24d60 0a 2a 2a 20 5e 49 66 20 61 6e 20 53 51 4c 20 6f  .** ^If an SQL o
24d70 70 65 72 61 74 69 6f 6e 20 69 73 20 76 65 72 79  peration is very
24d80 20 6e 65 61 72 6c 79 20 66 69 6e 69 73 68 65 64   nearly finished
24d90 20 61 74 20 74 68 65 20 74 69 6d 65 20 77 68 65   at the time whe
24da0 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 69 6e 74  n.** sqlite3_int
24db0 65 72 72 75 70 74 28 29 20 69 73 20 63 61 6c 6c  errupt() is call
24dc0 65 64 2c 20 74 68 65 6e 20 69 74 20 6d 69 67 68  ed, then it migh
24dd0 74 20 6e 6f 74 20 68 61 76 65 20 61 6e 20 6f 70  t not have an op
24de0 70 6f 72 74 75 6e 69 74 79 0a 2a 2a 20 74 6f 20  portunity.** to 
24df0 62 65 20 69 6e 74 65 72 72 75 70 74 65 64 20 61  be interrupted a
24e00 6e 64 20 6d 69 67 68 74 20 63 6f 6e 74 69 6e 75  nd might continu
24e10 65 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f 6e 2e  e to completion.
24e20 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 53 51 4c 20 6f  .**.** ^An SQL o
24e30 70 65 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73  peration that is
24e40 20 69 6e 74 65 72 72 75 70 74 65 64 20 77 69 6c   interrupted wil
24e50 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  l return [SQLITE
24e60 5f 49 4e 54 45 52 52 55 50 54 5d 2e 0a 2a 2a 20  _INTERRUPT]..** 
24e70 5e 49 66 20 74 68 65 20 69 6e 74 65 72 72 75 70  ^If the interrup
24e80 74 65 64 20 53 51 4c 20 6f 70 65 72 61 74 69 6f  ted SQL operatio
24e90 6e 20 69 73 20 61 6e 20 49 4e 53 45 52 54 2c 20  n is an INSERT, 
24ea0 55 50 44 41 54 45 2c 20 6f 72 20 44 45 4c 45 54  UPDATE, or DELET
24eb0 45 0a 2a 2a 20 74 68 61 74 20 69 73 20 69 6e 73  E.** that is ins
24ec0 69 64 65 20 61 6e 20 65 78 70 6c 69 63 69 74 20  ide an explicit 
24ed0 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 74 68 65  transaction, the
24ee0 6e 20 74 68 65 20 65 6e 74 69 72 65 20 74 72 61  n the entire tra
24ef0 6e 73 61 63 74 69 6f 6e 0a 2a 2a 20 77 69 6c 6c  nsaction.** will
24f00 20 62 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20   be rolled back 
24f10 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 0a 2a  automatically..*
24f20 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
24f30 33 5f 69 6e 74 65 72 72 75 70 74 28 44 29 20 63  3_interrupt(D) c
24f40 61 6c 6c 20 69 73 20 69 6e 20 65 66 66 65 63 74  all is in effect
24f50 20 75 6e 74 69 6c 20 61 6c 6c 20 63 75 72 72 65   until all curre
24f60 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 0a 2a 2a 20  ntly running.** 
24f70 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 6f  SQL statements o
24f80 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  n [database conn
24f90 65 63 74 69 6f 6e 5d 20 44 20 63 6f 6d 70 6c 65  ection] D comple
24fa0 74 65 2e 20 20 5e 41 6e 79 20 6e 65 77 20 53 51  te.  ^Any new SQ
24fb0 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  L statements.** 
24fc0 74 68 61 74 20 61 72 65 20 73 74 61 72 74 65 64  that are started
24fd0 20 61 66 74 65 72 20 74 68 65 20 73 71 6c 69 74   after the sqlit
24fe0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20 63  e3_interrupt() c
24ff0 61 6c 6c 20 61 6e 64 20 62 65 66 6f 72 65 20 74  all and before t
25000 68 65 20 0a 2a 2a 20 72 75 6e 6e 69 6e 67 20 73  he .** running s
25010 74 61 74 65 6d 65 6e 74 73 20 72 65 61 63 68 65  tatements reache
25020 73 20 7a 65 72 6f 20 61 72 65 20 69 6e 74 65 72  s zero are inter
25030 72 75 70 74 65 64 20 61 73 20 69 66 20 74 68 65  rupted as if the
25040 79 20 68 61 64 20 62 65 65 6e 0a 2a 2a 20 72 75  y had been.** ru
25050 6e 6e 69 6e 67 20 70 72 69 6f 72 20 74 6f 20 74  nning prior to t
25060 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  he sqlite3_inter
25070 72 75 70 74 28 29 20 63 61 6c 6c 2e 20 20 5e 4e  rupt() call.  ^N
25080 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  ew SQL statement
25090 73 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 73 74  s.** that are st
250a0 61 72 74 65 64 20 61 66 74 65 72 20 74 68 65 20  arted after the 
250b0 72 75 6e 6e 69 6e 67 20 73 74 61 74 65 6d 65 6e  running statemen
250c0 74 20 63 6f 75 6e 74 20 72 65 61 63 68 65 73 20  t count reaches 
250d0 7a 65 72 6f 20 61 72 65 0a 2a 2a 20 6e 6f 74 20  zero are.** not 
250e0 65 66 66 65 63 74 65 64 20 62 79 20 74 68 65 20  effected by the 
250f0 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
25100 74 28 29 2e 0a 2a 2a 20 5e 41 20 63 61 6c 6c 20  t()..** ^A call 
25110 74 6f 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  to sqlite3_inter
25120 72 75 70 74 28 44 29 20 74 68 61 74 20 6f 63 63  rupt(D) that occ
25130 75 72 73 20 77 68 65 6e 20 74 68 65 72 65 20 61  urs when there a
25140 72 65 20 6e 6f 20 72 75 6e 6e 69 6e 67 0a 2a 2a  re no running.**
25150 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20   SQL statements 
25160 69 73 20 61 20 6e 6f 2d 6f 70 20 61 6e 64 20 68  is a no-op and h
25170 61 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20  as no effect on 
25180 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a  SQL statements.*
25190 2a 20 74 68 61 74 20 61 72 65 20 73 74 61 72 74  * that are start
251a0 65 64 20 61 66 74 65 72 20 74 68 65 20 73 71 6c  ed after the sql
251b0 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29  ite3_interrupt()
251c0 20 63 61 6c 6c 20 72 65 74 75 72 6e 73 2e 0a 2a   call returns..*
251d0 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  /.SQLITE_API voi
251e0 64 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72  d sqlite3_interr
251f0 75 70 74 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a  upt(sqlite3*);..
25200 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
25210 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41 6e 20  Determine If An 
25220 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20 49 73  SQL Statement Is
25230 20 43 6f 6d 70 6c 65 74 65 0a 2a 2a 0a 2a 2a 20   Complete.**.** 
25240 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 61  These routines a
25250 72 65 20 75 73 65 66 75 6c 20 64 75 72 69 6e 67  re useful during
25260 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 69 6e   command-line in
25270 70 75 74 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  put to determine
25280 20 69 66 20 74 68 65 0a 2a 2a 20 63 75 72 72 65   if the.** curre
25290 6e 74 6c 79 20 65 6e 74 65 72 65 64 20 74 65 78  ntly entered tex
252a0 74 20 73 65 65 6d 73 20 74 6f 20 66 6f 72 6d 20  t seems to form 
252b0 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20 73  a complete SQL s
252c0 74 61 74 65 6d 65 6e 74 20 6f 72 0a 2a 2a 20 69  tatement or.** i
252d0 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 70  f additional inp
252e0 75 74 20 69 73 20 6e 65 65 64 65 64 20 62 65 66  ut is needed bef
252f0 6f 72 65 20 73 65 6e 64 69 6e 67 20 74 68 65 20  ore sending the 
25300 74 65 78 74 20 69 6e 74 6f 0a 2a 2a 20 53 51 4c  text into.** SQL
25310 69 74 65 20 66 6f 72 20 70 61 72 73 69 6e 67 2e  ite for parsing.
25320 20 20 5e 54 68 65 73 65 20 72 6f 75 74 69 6e 65    ^These routine
25330 73 20 72 65 74 75 72 6e 20 31 20 69 66 20 74 68  s return 1 if th
25340 65 20 69 6e 70 75 74 20 73 74 72 69 6e 67 0a 2a  e input string.*
25350 2a 20 61 70 70 65 61 72 73 20 74 6f 20 62 65 20  * appears to be 
25360 61 20 63 6f 6d 70 6c 65 74 65 20 53 51 4c 20 73  a complete SQL s
25370 74 61 74 65 6d 65 6e 74 2e 20 20 5e 41 20 73 74  tatement.  ^A st
25380 61 74 65 6d 65 6e 74 20 69 73 20 6a 75 64 67 65  atement is judge
25390 64 20 74 6f 20 62 65 0a 2a 2a 20 63 6f 6d 70 6c  d to be.** compl
253a0 65 74 65 20 69 66 20 69 74 20 65 6e 64 73 20 77  ete if it ends w
253b0 69 74 68 20 61 20 73 65 6d 69 63 6f 6c 6f 6e 20  ith a semicolon 
253c0 74 6f 6b 65 6e 20 61 6e 64 20 69 73 20 6e 6f 74  token and is not
253d0 20 61 20 70 72 65 66 69 78 20 6f 66 20 61 0a 2a   a prefix of a.*
253e0 2a 20 77 65 6c 6c 2d 66 6f 72 6d 65 64 20 43 52  * well-formed CR
253f0 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74 61  EATE TRIGGER sta
25400 74 65 6d 65 6e 74 2e 20 20 5e 53 65 6d 69 63 6f  tement.  ^Semico
25410 6c 6f 6e 73 20 74 68 61 74 20 61 72 65 20 65 6d  lons that are em
25420 62 65 64 64 65 64 20 77 69 74 68 69 6e 0a 2a 2a  bedded within.**
25430 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73   string literals
25440 20 6f 72 20 71 75 6f 74 65 64 20 69 64 65 6e 74   or quoted ident
25450 69 66 69 65 72 20 6e 61 6d 65 73 20 6f 72 20 63  ifier names or c
25460 6f 6d 6d 65 6e 74 73 20 61 72 65 20 6e 6f 74 0a  omments are not.
25470 2a 2a 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 74  ** independent t
25480 6f 6b 65 6e 73 20 28 74 68 65 79 20 61 72 65 20  okens (they are 
25490 70 61 72 74 20 6f 66 20 74 68 65 20 74 6f 6b 65  part of the toke
254a0 6e 20 69 6e 20 77 68 69 63 68 20 74 68 65 79 20  n in which they 
254b0 61 72 65 0a 2a 2a 20 65 6d 62 65 64 64 65 64 29  are.** embedded)
254c0 20 61 6e 64 20 74 68 75 73 20 64 6f 20 6e 6f 74   and thus do not
254d0 20 63 6f 75 6e 74 20 61 73 20 61 20 73 74 61 74   count as a stat
254e0 65 6d 65 6e 74 20 74 65 72 6d 69 6e 61 74 6f 72  ement terminator
254f0 2e 20 20 5e 57 68 69 74 65 73 70 61 63 65 0a 2a  .  ^Whitespace.*
25500 2a 20 61 6e 64 20 63 6f 6d 6d 65 6e 74 73 20 74  * and comments t
25510 68 61 74 20 66 6f 6c 6c 6f 77 20 74 68 65 20 66  hat follow the f
25520 69 6e 61 6c 20 73 65 6d 69 63 6f 6c 6f 6e 20 61  inal semicolon a
25530 72 65 20 69 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a  re ignored..**.*
25540 2a 20 5e 54 68 65 73 65 20 72 6f 75 74 69 6e 65  * ^These routine
25550 73 20 72 65 74 75 72 6e 20 30 20 69 66 20 74 68  s return 0 if th
25560 65 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 69  e statement is i
25570 6e 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 49 66 20  ncomplete.  ^If 
25580 61 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  a.** memory allo
25590 63 61 74 69 6f 6e 20 66 61 69 6c 73 2c 20 74 68  cation fails, th
255a0 65 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20  en SQLITE_NOMEM 
255b0 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a  is returned..**.
255c0 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75 74 69 6e  ** ^These routin
255d0 65 73 20 64 6f 20 6e 6f 74 20 70 61 72 73 65 20  es do not parse 
255e0 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
255f0 74 73 20 74 68 75 73 0a 2a 2a 20 77 69 6c 6c 20  ts thus.** will 
25600 6e 6f 74 20 64 65 74 65 63 74 20 73 79 6e 74 61  not detect synta
25610 63 74 69 63 61 6c 6c 79 20 69 6e 63 6f 72 72 65  ctically incorre
25620 63 74 20 53 51 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28  ct SQL..**.** ^(
25630 49 66 20 53 51 4c 69 74 65 20 68 61 73 20 6e 6f  If SQLite has no
25640 74 20 62 65 65 6e 20 69 6e 69 74 69 61 6c 69 7a  t been initializ
25650 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ed using [sqlite
25660 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 5d 20  3_initialize()] 
25670 70 72 69 6f 72 20 0a 2a 2a 20 74 6f 20 69 6e 76  prior .** to inv
25680 6f 6b 69 6e 67 20 73 71 6c 69 74 65 33 5f 63 6f  oking sqlite3_co
25690 6d 70 6c 65 74 65 31 36 28 29 20 74 68 65 6e 20  mplete16() then 
256a0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
256b0 7a 65 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a  ze() is invoked.
256c0 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  ** automatically
256d0 20 62 79 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70   by sqlite3_comp
256e0 6c 65 74 65 31 36 28 29 2e 20 20 49 66 20 74 68  lete16().  If th
256f0 61 74 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f  at initializatio
25700 6e 20 66 61 69 6c 73 2c 0a 2a 2a 20 74 68 65 6e  n fails,.** then
25710 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
25720 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 63  e from sqlite3_c
25730 6f 6d 70 6c 65 74 65 31 36 28 29 20 77 69 6c 6c  omplete16() will
25740 20 62 65 20 6e 6f 6e 2d 7a 65 72 6f 0a 2a 2a 20   be non-zero.** 
25750 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  regardless of wh
25760 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
25770 20 69 6e 70 75 74 20 53 51 4c 20 69 73 20 63 6f   input SQL is co
25780 6d 70 6c 65 74 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20  mplete.)^.**.** 
25790 54 68 65 20 69 6e 70 75 74 20 74 6f 20 5b 73 71  The input to [sq
257a0 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 28 29  lite3_complete()
257b0 5d 20 6d 75 73 74 20 62 65 20 61 20 7a 65 72 6f  ] must be a zero
257c0 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55  -terminated.** U
257d0 54 46 2d 38 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a  TF-8 string..**.
257e0 2a 2a 20 54 68 65 20 69 6e 70 75 74 20 74 6f 20  ** The input to 
257f0 5b 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74  [sqlite3_complet
25800 65 31 36 28 29 5d 20 6d 75 73 74 20 62 65 20 61  e16()] must be a
25810 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
25820 0a 2a 2a 20 55 54 46 2d 31 36 20 73 74 72 69 6e  .** UTF-16 strin
25830 67 20 69 6e 20 6e 61 74 69 76 65 20 62 79 74 65  g in native byte
25840 20 6f 72 64 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54   order..*/.SQLIT
25850 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
25860 33 5f 63 6f 6d 70 6c 65 74 65 28 63 6f 6e 73 74  3_complete(const
25870 20 63 68 61 72 20 2a 73 71 6c 29 3b 0a 53 51 4c   char *sql);.SQL
25880 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
25890 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 63  te3_complete16(c
258a0 6f 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 29 3b  onst void *sql);
258b0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
258c0 3a 20 52 65 67 69 73 74 65 72 20 41 20 43 61 6c  : Register A Cal
258d0 6c 62 61 63 6b 20 54 6f 20 48 61 6e 64 6c 65 20  lback To Handle 
258e0 53 51 4c 49 54 45 5f 42 55 53 59 20 45 72 72 6f  SQLITE_BUSY Erro
258f0 72 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  rs.** KEYWORDS: 
25900 7b 62 75 73 79 2d 68 61 6e 64 6c 65 72 20 63 61  {busy-handler ca
25910 6c 6c 62 61 63 6b 7d 20 7b 62 75 73 79 20 68 61  llback} {busy ha
25920 6e 64 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44  ndler}.** METHOD
25930 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
25940 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 62 75 73  ^The sqlite3_bus
25950 79 5f 68 61 6e 64 6c 65 72 28 44 2c 58 2c 50 29  y_handler(D,X,P)
25960 20 72 6f 75 74 69 6e 65 20 73 65 74 73 20 61 20   routine sets a 
25970 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
25980 6e 20 58 0a 2a 2a 20 74 68 61 74 20 6d 69 67 68  n X.** that migh
25990 74 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69 74  t be invoked wit
259a0 68 20 61 72 67 75 6d 65 6e 74 20 50 20 77 68 65  h argument P whe
259b0 6e 65 76 65 72 0a 2a 2a 20 61 6e 20 61 74 74 65  never.** an atte
259c0 6d 70 74 20 69 73 20 6d 61 64 65 20 74 6f 20 61  mpt is made to a
259d0 63 63 65 73 73 20 61 20 64 61 74 61 62 61 73 65  ccess a database
259e0 20 74 61 62 6c 65 20 61 73 73 6f 63 69 61 74 65   table associate
259f0 64 20 77 69 74 68 0a 2a 2a 20 5b 64 61 74 61 62  d with.** [datab
25a00 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
25a10 44 20 77 68 65 6e 20 61 6e 6f 74 68 65 72 20 74  D when another t
25a20 68 72 65 61 64 0a 2a 2a 20 6f 72 20 70 72 6f 63  hread.** or proc
25a30 65 73 73 20 68 61 73 20 74 68 65 20 74 61 62 6c  ess has the tabl
25a40 65 20 6c 6f 63 6b 65 64 2e 0a 2a 2a 20 54 68 65  e locked..** The
25a50 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
25a60 6e 64 6c 65 72 28 29 20 69 6e 74 65 72 66 61 63  ndler() interfac
25a70 65 20 69 73 20 75 73 65 64 20 74 6f 20 69 6d 70  e is used to imp
25a80 6c 65 6d 65 6e 74 0a 2a 2a 20 5b 73 71 6c 69 74  lement.** [sqlit
25a90 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28  e3_busy_timeout(
25aa0 29 5d 20 61 6e 64 20 5b 50 52 41 47 4d 41 20 62  )] and [PRAGMA b
25ab0 75 73 79 5f 74 69 6d 65 6f 75 74 5d 2e 0a 2a 2a  usy_timeout]..**
25ac0 0a 2a 2a 20 5e 49 66 20 74 68 65 20 62 75 73 79  .** ^If the busy
25ad0 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 55 4c   callback is NUL
25ae0 4c 2c 20 74 68 65 6e 20 5b 53 51 4c 49 54 45 5f  L, then [SQLITE_
25af0 42 55 53 59 5d 0a 2a 2a 20 69 73 20 72 65 74 75  BUSY].** is retu
25b00 72 6e 65 64 20 69 6d 6d 65 64 69 61 74 65 6c 79  rned immediately
25b10 20 75 70 6f 6e 20 65 6e 63 6f 75 6e 74 65 72 69   upon encounteri
25b20 6e 67 20 74 68 65 20 6c 6f 63 6b 2e 20 20 5e 49  ng the lock.  ^I
25b30 66 20 74 68 65 20 62 75 73 79 20 63 61 6c 6c 62  f the busy callb
25b40 61 63 6b 0a 2a 2a 20 69 73 20 6e 6f 74 20 4e 55  ack.** is not NU
25b50 4c 4c 2c 20 74 68 65 6e 20 74 68 65 20 63 61 6c  LL, then the cal
25b60 6c 62 61 63 6b 20 6d 69 67 68 74 20 62 65 20 69  lback might be i
25b70 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20  nvoked with two 
25b80 61 72 67 75 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a  arguments..**.**
25b90 20 5e 54 68 65 20 66 69 72 73 74 20 61 72 67 75   ^The first argu
25ba0 6d 65 6e 74 20 74 6f 20 74 68 65 20 62 75 73 79  ment to the busy
25bb0 20 68 61 6e 64 6c 65 72 20 69 73 20 61 20 63 6f   handler is a co
25bc0 70 79 20 6f 66 20 74 68 65 20 76 6f 69 64 2a 20  py of the void* 
25bd0 70 6f 69 6e 74 65 72 20 77 68 69 63 68 0a 2a 2a  pointer which.**
25be0 20 69 73 20 74 68 65 20 74 68 69 72 64 20 61 72   is the third ar
25bf0 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65  gument to sqlite
25c00 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29  3_busy_handler()
25c10 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 61  .  ^The second a
25c20 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 74 68  rgument to.** th
25c30 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 63  e busy handler c
25c40 61 6c 6c 62 61 63 6b 20 69 73 20 74 68 65 20 6e  allback is the n
25c50 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73 20 74  umber of times t
25c60 68 61 74 20 74 68 65 20 62 75 73 79 20 68 61 6e  hat the busy han
25c70 64 6c 65 72 20 68 61 73 0a 2a 2a 20 62 65 65 6e  dler has.** been
25c80 20 69 6e 76 6f 6b 65 64 20 70 72 65 76 69 6f 75   invoked previou
25c90 73 6c 79 20 66 6f 72 20 74 68 65 20 73 61 6d 65  sly for the same
25ca0 20 6c 6f 63 6b 69 6e 67 20 65 76 65 6e 74 2e 20   locking event. 
25cb0 20 5e 49 66 20 74 68 65 0a 2a 2a 20 62 75 73 79   ^If the.** busy
25cc0 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
25cd0 73 20 30 2c 20 74 68 65 6e 20 6e 6f 20 61 64 64  s 0, then no add
25ce0 69 74 69 6f 6e 61 6c 20 61 74 74 65 6d 70 74 73  itional attempts
25cf0 20 61 72 65 20 6d 61 64 65 20 74 6f 0a 2a 2a 20   are made to.** 
25d00 61 63 63 65 73 73 20 74 68 65 20 64 61 74 61 62  access the datab
25d10 61 73 65 20 61 6e 64 20 5b 53 51 4c 49 54 45 5f  ase and [SQLITE_
25d20 42 55 53 59 5d 20 69 73 20 72 65 74 75 72 6e 65  BUSY] is returne
25d30 64 0a 2a 2a 20 74 6f 20 74 68 65 20 61 70 70 6c  d.** to the appl
25d40 69 63 61 74 69 6f 6e 2e 0a 2a 2a 20 5e 49 66 20  ication..** ^If 
25d50 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  the callback ret
25d60 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74  urns non-zero, t
25d70 68 65 6e 20 61 6e 6f 74 68 65 72 20 61 74 74 65  hen another atte
25d80 6d 70 74 0a 2a 2a 20 69 73 20 6d 61 64 65 20 74  mpt.** is made t
25d90 6f 20 61 63 63 65 73 73 20 74 68 65 20 64 61 74  o access the dat
25da0 61 62 61 73 65 20 61 6e 64 20 74 68 65 20 63 79  abase and the cy
25db0 63 6c 65 20 72 65 70 65 61 74 73 2e 0a 2a 2a 0a  cle repeats..**.
25dc0 2a 2a 20 54 68 65 20 70 72 65 73 65 6e 63 65 20  ** The presence 
25dd0 6f 66 20 61 20 62 75 73 79 20 68 61 6e 64 6c 65  of a busy handle
25de0 72 20 64 6f 65 73 20 6e 6f 74 20 67 75 61 72 61  r does not guara
25df0 6e 74 65 65 20 74 68 61 74 20 69 74 20 77 69 6c  ntee that it wil
25e00 6c 20 62 65 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20  l be invoked.** 
25e10 77 68 65 6e 20 74 68 65 72 65 20 69 73 20 6c 6f  when there is lo
25e20 63 6b 20 63 6f 6e 74 65 6e 74 69 6f 6e 2e 20 5e  ck contention. ^
25e30 49 66 20 53 51 4c 69 74 65 20 64 65 74 65 72 6d  If SQLite determ
25e40 69 6e 65 73 20 74 68 61 74 20 69 6e 76 6f 6b 69  ines that invoki
25e50 6e 67 20 74 68 65 20 62 75 73 79 0a 2a 2a 20 68  ng the busy.** h
25e60 61 6e 64 6c 65 72 20 63 6f 75 6c 64 20 72 65 73  andler could res
25e70 75 6c 74 20 69 6e 20 61 20 64 65 61 64 6c 6f 63  ult in a deadloc
25e80 6b 2c 20 69 74 20 77 69 6c 6c 20 67 6f 20 61 68  k, it will go ah
25e90 65 61 64 20 61 6e 64 20 72 65 74 75 72 6e 20 5b  ead and return [
25ea0 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a 2a 20  SQLITE_BUSY].** 
25eb0 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
25ec0 6f 6e 20 69 6e 73 74 65 61 64 20 6f 66 20 69 6e  on instead of in
25ed0 76 6f 6b 69 6e 67 20 74 68 65 20 0a 2a 2a 20 62  voking the .** b
25ee0 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20  usy handler..** 
25ef0 43 6f 6e 73 69 64 65 72 20 61 20 73 63 65 6e 61  Consider a scena
25f00 72 69 6f 20 77 68 65 72 65 20 6f 6e 65 20 70 72  rio where one pr
25f10 6f 63 65 73 73 20 69 73 20 68 6f 6c 64 69 6e 67  ocess is holding
25f20 20 61 20 72 65 61 64 20 6c 6f 63 6b 20 74 68 61   a read lock tha
25f30 74 0a 2a 2a 20 69 74 20 69 73 20 74 72 79 69 6e  t.** it is tryin
25f40 67 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20  g to promote to 
25f50 61 20 72 65 73 65 72 76 65 64 20 6c 6f 63 6b 20  a reserved lock 
25f60 61 6e 64 0a 2a 2a 20 61 20 73 65 63 6f 6e 64 20  and.** a second 
25f70 70 72 6f 63 65 73 73 20 69 73 20 68 6f 6c 64 69  process is holdi
25f80 6e 67 20 61 20 72 65 73 65 72 76 65 64 20 6c 6f  ng a reserved lo
25f90 63 6b 20 74 68 61 74 20 69 74 20 69 73 20 74 72  ck that it is tr
25fa0 79 69 6e 67 0a 2a 2a 20 74 6f 20 70 72 6f 6d 6f  ying.** to promo
25fb0 74 65 20 74 6f 20 61 6e 20 65 78 63 6c 75 73 69  te to an exclusi
25fc0 76 65 20 6c 6f 63 6b 2e 20 20 54 68 65 20 66 69  ve lock.  The fi
25fd0 72 73 74 20 70 72 6f 63 65 73 73 20 63 61 6e 6e  rst process cann
25fe0 6f 74 20 70 72 6f 63 65 65 64 0a 2a 2a 20 62 65  ot proceed.** be
25ff0 63 61 75 73 65 20 69 74 20 69 73 20 62 6c 6f 63  cause it is bloc
26000 6b 65 64 20 62 79 20 74 68 65 20 73 65 63 6f 6e  ked by the secon
26010 64 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64  d and the second
26020 20 70 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74 0a   process cannot.
26030 2a 2a 20 70 72 6f 63 65 65 64 20 62 65 63 61 75  ** proceed becau
26040 73 65 20 69 74 20 69 73 20 62 6c 6f 63 6b 65 64  se it is blocked
26050 20 62 79 20 74 68 65 20 66 69 72 73 74 2e 20 20   by the first.  
26060 49 66 20 62 6f 74 68 20 70 72 6f 63 65 73 73 65  If both processe
26070 73 0a 2a 2a 20 69 6e 76 6f 6b 65 20 74 68 65 20  s.** invoke the 
26080 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2c 20 6e  busy handlers, n
26090 65 69 74 68 65 72 20 77 69 6c 6c 20 6d 61 6b 65  either will make
260a0 20 61 6e 79 20 70 72 6f 67 72 65 73 73 2e 20 20   any progress.  
260b0 54 68 65 72 65 66 6f 72 65 2c 0a 2a 2a 20 53 51  Therefore,.** SQ
260c0 4c 69 74 65 20 72 65 74 75 72 6e 73 20 5b 53 51  Lite returns [SQ
260d0 4c 49 54 45 5f 42 55 53 59 5d 20 66 6f 72 20 74  LITE_BUSY] for t
260e0 68 65 20 66 69 72 73 74 20 70 72 6f 63 65 73 73  he first process
260f0 2c 20 68 6f 70 69 6e 67 20 74 68 61 74 20 74 68  , hoping that th
26100 69 73 0a 2a 2a 20 77 69 6c 6c 20 69 6e 64 75 63  is.** will induc
26110 65 20 74 68 65 20 66 69 72 73 74 20 70 72 6f 63  e the first proc
26120 65 73 73 20 74 6f 20 72 65 6c 65 61 73 65 20 69  ess to release i
26130 74 73 20 72 65 61 64 20 6c 6f 63 6b 20 61 6e 64  ts read lock and
26140 20 61 6c 6c 6f 77 0a 2a 2a 20 74 68 65 20 73 65   allow.** the se
26150 63 6f 6e 64 20 70 72 6f 63 65 73 73 20 74 6f 20  cond process to 
26160 70 72 6f 63 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  proceed..**.** ^
26170 54 68 65 20 64 65 66 61 75 6c 74 20 62 75 73 79  The default busy
26180 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 4e 55 4c   callback is NUL
26190 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 72 65  L..**.** ^(There
261a0 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61 20 73   can only be a s
261b0 69 6e 67 6c 65 20 62 75 73 79 20 68 61 6e 64 6c  ingle busy handl
261c0 65 72 20 64 65 66 69 6e 65 64 20 66 6f 72 20 65  er defined for e
261d0 61 63 68 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65  ach.** [database
261e0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 20 20 53   connection].  S
261f0 65 74 74 69 6e 67 20 61 20 6e 65 77 20 62 75 73  etting a new bus
26200 79 20 68 61 6e 64 6c 65 72 20 63 6c 65 61 72 73  y handler clears
26210 20 61 6e 79 0a 2a 2a 20 70 72 65 76 69 6f 75 73   any.** previous
26220 6c 79 20 73 65 74 20 68 61 6e 64 6c 65 72 2e 29  ly set handler.)
26230 5e 20 20 5e 4e 6f 74 65 20 74 68 61 74 20 63 61  ^  ^Note that ca
26240 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 62  lling [sqlite3_b
26250 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 0a 2a  usy_timeout()].*
26260 2a 20 6f 72 20 65 76 61 6c 75 61 74 69 6e 67 20  * or evaluating 
26270 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d  [PRAGMA busy_tim
26280 65 6f 75 74 3d 4e 5d 20 77 69 6c 6c 20 63 68 61  eout=N] will cha
26290 6e 67 65 20 74 68 65 0a 2a 2a 20 62 75 73 79 20  nge the.** busy 
262a0 68 61 6e 64 6c 65 72 20 61 6e 64 20 74 68 75 73  handler and thus
262b0 20 63 6c 65 61 72 20 61 6e 79 20 70 72 65 76 69   clear any previ
262c0 6f 75 73 6c 79 20 73 65 74 20 62 75 73 79 20 68  ously set busy h
262d0 61 6e 64 6c 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68  andler..**.** Th
262e0 65 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 20  e busy callback 
262f0 73 68 6f 75 6c 64 20 6e 6f 74 20 74 61 6b 65 20  should not take 
26300 61 6e 79 20 61 63 74 69 6f 6e 73 20 77 68 69 63  any actions whic
26310 68 20 6d 6f 64 69 66 79 20 74 68 65 0a 2a 2a 20  h modify the.** 
26320 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
26330 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b 65 64  ion that invoked
26340 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
26350 72 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  r.  In other wor
26360 64 73 2c 0a 2a 2a 20 74 68 65 20 62 75 73 79 20  ds,.** the busy 
26370 68 61 6e 64 6c 65 72 20 69 73 20 6e 6f 74 20 72  handler is not r
26380 65 65 6e 74 72 61 6e 74 2e 20 20 41 6e 79 20 73  eentrant.  Any s
26390 75 63 68 20 61 63 74 69 6f 6e 73 0a 2a 2a 20 72  uch actions.** r
263a0 65 73 75 6c 74 20 69 6e 20 75 6e 64 65 66 69 6e  esult in undefin
263b0 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 2a 2a 20  ed behavior..** 
263c0 0a 2a 2a 20 41 20 62 75 73 79 20 68 61 6e 64 6c  .** A busy handl
263d0 65 72 20 6d 75 73 74 20 6e 6f 74 20 63 6c 6f 73  er must not clos
263e0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  e the database c
263f0 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 6f 72 20  onnection.** or 
26400 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
26410 65 6e 74 5d 20 74 68 61 74 20 69 6e 76 6f 6b 65  ent] that invoke
26420 64 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c  d the busy handl
26430 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  er..*/.SQLITE_AP
26440 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62 75  I int sqlite3_bu
26450 73 79 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69 74  sy_handler(sqlit
26460 65 33 2a 2c 69 6e 74 28 2a 29 28 76 6f 69 64 2a  e3*,int(*)(void*
26470 2c 69 6e 74 29 2c 76 6f 69 64 2a 29 3b 0a 0a 2f  ,int),void*);../
26480 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53  *.** CAPI3REF: S
26490 65 74 20 41 20 42 75 73 79 20 54 69 6d 65 6f 75  et A Busy Timeou
264a0 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  t.** METHOD: sql
264b0 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 69 73  ite3.**.** ^This
264c0 20 72 6f 75 74 69 6e 65 20 73 65 74 73 20 61 20   routine sets a 
264d0 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61  [sqlite3_busy_ha
264e0 6e 64 6c 65 72 20 7c 20 62 75 73 79 20 68 61 6e  ndler | busy han
264f0 64 6c 65 72 5d 20 74 68 61 74 20 73 6c 65 65 70  dler] that sleep
26500 73 0a 2a 2a 20 66 6f 72 20 61 20 73 70 65 63 69  s.** for a speci
26510 66 69 65 64 20 61 6d 6f 75 6e 74 20 6f 66 20 74  fied amount of t
26520 69 6d 65 20 77 68 65 6e 20 61 20 74 61 62 6c 65  ime when a table
26530 20 69 73 20 6c 6f 63 6b 65 64 2e 20 20 5e 54 68   is locked.  ^Th
26540 65 20 68 61 6e 64 6c 65 72 0a 2a 2a 20 77 69 6c  e handler.** wil
26550 6c 20 73 6c 65 65 70 20 6d 75 6c 74 69 70 6c 65  l sleep multiple
26560 20 74 69 6d 65 73 20 75 6e 74 69 6c 20 61 74 20   times until at 
26570 6c 65 61 73 74 20 22 6d 73 22 20 6d 69 6c 6c 69  least "ms" milli
26580 73 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70  seconds of sleep
26590 69 6e 67 0a 2a 2a 20 68 61 76 65 20 61 63 63 75  ing.** have accu
265a0 6d 75 6c 61 74 65 64 2e 20 20 5e 41 66 74 65 72  mulated.  ^After
265b0 20 61 74 20 6c 65 61 73 74 20 22 6d 73 22 20 6d   at least "ms" m
265c0 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f 66 20 73  illiseconds of s
265d0 6c 65 65 70 69 6e 67 2c 0a 2a 2a 20 74 68 65 20  leeping,.** the 
265e0 68 61 6e 64 6c 65 72 20 72 65 74 75 72 6e 73 20  handler returns 
265f0 30 20 77 68 69 63 68 20 63 61 75 73 65 73 20 5b  0 which causes [
26600 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
26610 74 6f 20 72 65 74 75 72 6e 0a 2a 2a 20 5b 53 51  to return.** [SQ
26620 4c 49 54 45 5f 42 55 53 59 5d 2e 0a 2a 2a 0a 2a  LITE_BUSY]..**.*
26630 2a 20 5e 43 61 6c 6c 69 6e 67 20 74 68 69 73 20  * ^Calling this 
26640 72 6f 75 74 69 6e 65 20 77 69 74 68 20 61 6e 20  routine with an 
26650 61 72 67 75 6d 65 6e 74 20 6c 65 73 73 20 74 68  argument less th
26660 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 7a  an or equal to z
26670 65 72 6f 0a 2a 2a 20 74 75 72 6e 73 20 6f 66 66  ero.** turns off
26680 20 61 6c 6c 20 62 75 73 79 20 68 61 6e 64 6c 65   all busy handle
26690 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 72  rs..**.** ^(Ther
266a0 65 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 61 20  e can only be a 
266b0 73 69 6e 67 6c 65 20 62 75 73 79 20 68 61 6e 64  single busy hand
266c0 6c 65 72 20 66 6f 72 20 61 20 70 61 72 74 69 63  ler for a partic
266d0 75 6c 61 72 0a 2a 2a 20 5b 64 61 74 61 62 61 73  ular.** [databas
266e0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74  e connection] at
266f0 20 61 6e 79 20 67 69 76 65 6e 20 6d 6f 6d 65 6e   any given momen
26700 74 2e 20 20 49 66 20 61 6e 6f 74 68 65 72 20 62  t.  If another b
26710 75 73 79 20 68 61 6e 64 6c 65 72 0a 2a 2a 20 77  usy handler.** w
26720 61 73 20 64 65 66 69 6e 65 64 20 20 28 75 73 69  as defined  (usi
26730 6e 67 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79  ng [sqlite3_busy
26740 5f 68 61 6e 64 6c 65 72 28 29 5d 29 20 70 72 69  _handler()]) pri
26750 6f 72 20 74 6f 20 63 61 6c 6c 69 6e 67 0a 2a 2a  or to calling.**
26760 20 74 68 69 73 20 72 6f 75 74 69 6e 65 2c 20 74   this routine, t
26770 68 61 74 20 6f 74 68 65 72 20 62 75 73 79 20 68  hat other busy h
26780 61 6e 64 6c 65 72 20 69 73 20 63 6c 65 61 72 65  andler is cleare
26790 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61  d.)^.**.** See a
267a0 6c 73 6f 3a 20 20 5b 50 52 41 47 4d 41 20 62 75  lso:  [PRAGMA bu
267b0 73 79 5f 74 69 6d 65 6f 75 74 5d 0a 2a 2f 0a 53  sy_timeout].*/.S
267c0 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
267d0 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d 65 6f  lite3_busy_timeo
267e0 75 74 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74  ut(sqlite3*, int
267f0 20 6d 73 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50   ms);../*.** CAP
26800 49 33 52 45 46 3a 20 43 6f 6e 76 65 6e 69 65 6e  I3REF: Convenien
26810 63 65 20 52 6f 75 74 69 6e 65 73 20 46 6f 72 20  ce Routines For 
26820 52 75 6e 6e 69 6e 67 20 51 75 65 72 69 65 73 0a  Running Queries.
26830 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
26840 65 33 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 73  e3.**.** This is
26850 20 61 20 6c 65 67 61 63 79 20 69 6e 74 65 72 66   a legacy interf
26860 61 63 65 20 74 68 61 74 20 69 73 20 70 72 65 73  ace that is pres
26870 65 72 76 65 64 20 66 6f 72 20 62 61 63 6b 77 61  erved for backwa
26880 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  rds compatibilit
26890 79 2e 0a 2a 2a 20 55 73 65 20 6f 66 20 74 68 69  y..** Use of thi
268a0 73 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 6e  s interface is n
268b0 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2e 0a  ot recommended..
268c0 2a 2a 0a 2a 2a 20 44 65 66 69 6e 69 74 69 6f 6e  **.** Definition
268d0 3a 20 41 20 3c 62 3e 72 65 73 75 6c 74 20 74 61  : A <b>result ta
268e0 62 6c 65 3c 2f 62 3e 20 69 73 20 6d 65 6d 6f 72  ble</b> is memor
268f0 79 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65  y data structure
26900 20 63 72 65 61 74 65 64 20 62 79 20 74 68 65 0a   created by the.
26910 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f  ** [sqlite3_get_
26920 74 61 62 6c 65 28 29 5d 20 69 6e 74 65 72 66 61  table()] interfa
26930 63 65 2e 20 20 41 20 72 65 73 75 6c 74 20 74 61  ce.  A result ta
26940 62 6c 65 20 72 65 63 6f 72 64 73 20 74 68 65 0a  ble records the.
26950 2a 2a 20 63 6f 6d 70 6c 65 74 65 20 71 75 65 72  ** complete quer
26960 79 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 6f  y results from o
26970 6e 65 20 6f 72 20 6d 6f 72 65 20 71 75 65 72 69  ne or more queri
26980 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 61  es..**.** The ta
26990 62 6c 65 20 63 6f 6e 63 65 70 74 75 61 6c 6c 79  ble conceptually
269a0 20 68 61 73 20 61 20 6e 75 6d 62 65 72 20 6f 66   has a number of
269b0 20 72 6f 77 73 20 61 6e 64 20 63 6f 6c 75 6d 6e   rows and column
269c0 73 2e 20 20 42 75 74 0a 2a 2a 20 74 68 65 73 65  s.  But.** these
269d0 20 6e 75 6d 62 65 72 73 20 61 72 65 20 6e 6f 74   numbers are not
269e0 20 70 61 72 74 20 6f 66 20 74 68 65 20 72 65 73   part of the res
269f0 75 6c 74 20 74 61 62 6c 65 20 69 74 73 65 6c 66  ult table itself
26a00 2e 20 20 54 68 65 73 65 0a 2a 2a 20 6e 75 6d 62  .  These.** numb
26a10 65 72 73 20 61 72 65 20 6f 62 74 61 69 6e 65 64  ers are obtained
26a20 20 73 65 70 61 72 61 74 65 6c 79 2e 20 20 4c 65   separately.  Le
26a30 74 20 4e 20 62 65 20 74 68 65 20 6e 75 6d 62 65  t N be the numbe
26a40 72 20 6f 66 20 72 6f 77 73 0a 2a 2a 20 61 6e 64  r of rows.** and
26a50 20 4d 20 62 65 20 74 68 65 20 6e 75 6d 62 65 72   M be the number
26a60 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a 0a   of columns..**.
26a70 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61 62 6c  ** A result tabl
26a80 65 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66  e is an array of
26a90 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 7a 65 72   pointers to zer
26aa0 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 55 54 46  o-terminated UTF
26ab0 2d 38 20 73 74 72 69 6e 67 73 2e 0a 2a 2a 20 54  -8 strings..** T
26ac0 68 65 72 65 20 61 72 65 20 28 4e 2b 31 29 2a 4d  here are (N+1)*M
26ad0 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68 65   elements in the
26ae0 20 61 72 72 61 79 2e 20 20 54 68 65 20 66 69 72   array.  The fir
26af0 73 74 20 4d 20 70 6f 69 6e 74 65 72 73 20 70 6f  st M pointers po
26b00 69 6e 74 0a 2a 2a 20 74 6f 20 7a 65 72 6f 2d 74  int.** to zero-t
26b10 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e 67  erminated string
26b20 73 20 74 68 61 74 20 20 63 6f 6e 74 61 69 6e 20  s that  contain 
26b30 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68 65  the names of the
26b40 20 63 6f 6c 75 6d 6e 73 2e 0a 2a 2a 20 54 68 65   columns..** The
26b50 20 72 65 6d 61 69 6e 69 6e 67 20 65 6e 74 72 69   remaining entri
26b60 65 73 20 61 6c 6c 20 70 6f 69 6e 74 20 74 6f 20  es all point to 
26b70 71 75 65 72 79 20 72 65 73 75 6c 74 73 2e 20 20  query results.  
26b80 4e 55 4c 4c 20 76 61 6c 75 65 73 20 72 65 73 75  NULL values resu
26b90 6c 74 0a 2a 2a 20 69 6e 20 4e 55 4c 4c 20 70 6f  lt.** in NULL po
26ba0 69 6e 74 65 72 73 2e 20 20 41 6c 6c 20 6f 74 68  inters.  All oth
26bb0 65 72 20 76 61 6c 75 65 73 20 61 72 65 20 69 6e  er values are in
26bc0 20 74 68 65 69 72 20 55 54 46 2d 38 20 7a 65 72   their UTF-8 zer
26bd0 6f 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20  o-terminated.** 
26be0 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 6e 74  string represent
26bf0 61 74 69 6f 6e 20 61 73 20 72 65 74 75 72 6e 65  ation as returne
26c00 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 63 6f  d by [sqlite3_co
26c10 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2e 0a 2a 2a  lumn_text()]..**
26c20 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20 74 61 62  .** A result tab
26c30 6c 65 20 6d 69 67 68 74 20 63 6f 6e 73 69 73 74  le might consist
26c40 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20   of one or more 
26c50 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
26c60 6e 73 2e 0a 2a 2a 20 49 74 20 69 73 20 6e 6f 74  ns..** It is not
26c70 20 73 61 66 65 20 74 6f 20 70 61 73 73 20 61 20   safe to pass a 
26c80 72 65 73 75 6c 74 20 74 61 62 6c 65 20 64 69 72  result table dir
26c90 65 63 74 6c 79 20 74 6f 20 5b 73 71 6c 69 74 65  ectly to [sqlite
26ca0 33 5f 66 72 65 65 28 29 5d 2e 0a 2a 2a 20 41 20  3_free()]..** A 
26cb0 72 65 73 75 6c 74 20 74 61 62 6c 65 20 73 68 6f  result table sho
26cc0 75 6c 64 20 62 65 20 64 65 61 6c 6c 6f 63 61 74  uld be deallocat
26cd0 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ed using [sqlite
26ce0 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29 5d 2e  3_free_table()].
26cf0 0a 2a 2a 0a 2a 2a 20 5e 28 41 73 20 61 6e 20 65  .**.** ^(As an e
26d00 78 61 6d 70 6c 65 20 6f 66 20 74 68 65 20 72 65  xample of the re
26d10 73 75 6c 74 20 74 61 62 6c 65 20 66 6f 72 6d 61  sult table forma
26d20 74 2c 20 73 75 70 70 6f 73 65 20 61 20 71 75 65  t, suppose a que
26d30 72 79 20 72 65 73 75 6c 74 0a 2a 2a 20 69 73 20  ry result.** is 
26d40 61 73 20 66 6f 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a  as follows:.**.*
26d50 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70  * <blockquote><p
26d60 72 65 3e 0a 2a 2a 20 20 20 20 20 20 20 20 4e 61  re>.**        Na
26d70 6d 65 20 20 20 20 20 20 20 20 7c 20 41 67 65 0a  me        | Age.
26d80 2a 2a 20 20 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d  **        ------
26d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
26da0 2d 0a 2a 2a 20 20 20 20 20 20 20 20 41 6c 69 63  -.**        Alic
26db0 65 20 20 20 20 20 20 20 7c 20 34 33 0a 2a 2a 20  e       | 43.** 
26dc0 20 20 20 20 20 20 20 42 6f 62 20 20 20 20 20 20         Bob      
26dd0 20 20 20 7c 20 32 38 0a 2a 2a 20 20 20 20 20 20     | 28.**      
26de0 20 20 43 69 6e 64 79 20 20 20 20 20 20 20 7c 20    Cindy       | 
26df0 32 31 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c  21.** </pre></bl
26e00 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20  ockquote>.**.** 
26e10 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 63 6f  There are two co
26e20 6c 75 6d 6e 20 28 4d 3d 3d 32 29 20 61 6e 64 20  lumn (M==2) and 
26e30 74 68 72 65 65 20 72 6f 77 73 20 28 4e 3d 3d 33  three rows (N==3
26e40 29 2e 20 20 54 68 75 73 20 74 68 65 0a 2a 2a 20  ).  Thus the.** 
26e50 72 65 73 75 6c 74 20 74 61 62 6c 65 20 68 61 73  result table has
26e60 20 38 20 65 6e 74 72 69 65 73 2e 20 20 53 75 70   8 entries.  Sup
26e70 70 6f 73 65 20 74 68 65 20 72 65 73 75 6c 74 20  pose the result 
26e80 74 61 62 6c 65 20 69 73 20 73 74 6f 72 65 64 0a  table is stored.
26e90 2a 2a 20 69 6e 20 61 6e 20 61 72 72 61 79 20 6e  ** in an array n
26ea0 61 6d 65 73 20 61 7a 52 65 73 75 6c 74 2e 20 20  ames azResult.  
26eb0 54 68 65 6e 20 61 7a 52 65 73 75 6c 74 20 68 6f  Then azResult ho
26ec0 6c 64 73 20 74 68 69 73 20 63 6f 6e 74 65 6e 74  lds this content
26ed0 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75  :.**.** <blockqu
26ee0 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20  ote><pre>.**    
26ef0 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
26f00 3b 30 5d 20 3d 20 22 4e 61 6d 65 22 3b 0a 2a 2a  ;0] = "Name";.**
26f10 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74          azResult
26f20 26 23 39 31 3b 31 5d 20 3d 20 22 41 67 65 22 3b  &#91;1] = "Age";
26f30 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
26f40 75 6c 74 26 23 39 31 3b 32 5d 20 3d 20 22 41 6c  ult&#91;2] = "Al
26f50 69 63 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  ice";.**        
26f60 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 33 5d 20  azResult&#91;3] 
26f70 3d 20 22 34 33 22 3b 0a 2a 2a 20 20 20 20 20 20  = "43";.**      
26f80 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 34    azResult&#91;4
26f90 5d 20 3d 20 22 42 6f 62 22 3b 0a 2a 2a 20 20 20  ] = "Bob";.**   
26fa0 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39       azResult&#9
26fb0 31 3b 35 5d 20 3d 20 22 32 38 22 3b 0a 2a 2a 20  1;5] = "28";.** 
26fc0 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
26fd0 23 39 31 3b 36 5d 20 3d 20 22 43 69 6e 64 79 22  #91;6] = "Cindy"
26fe0 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65  ;.**        azRe
26ff0 73 75 6c 74 26 23 39 31 3b 37 5d 20 3d 20 22 32  sult&#91;7] = "2
27000 31 22 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62  1";.** </pre></b
27010 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 2a 2a 0a  lockquote>)^.**.
27020 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
27030 67 65 74 5f 74 61 62 6c 65 28 29 20 66 75 6e 63  get_table() func
27040 74 69 6f 6e 20 65 76 61 6c 75 61 74 65 73 20 6f  tion evaluates o
27050 6e 65 20 6f 72 20 6d 6f 72 65 0a 2a 2a 20 73 65  ne or more.** se
27060 6d 69 63 6f 6c 6f 6e 2d 73 65 70 61 72 61 74 65  micolon-separate
27070 64 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  d SQL statements
27080 20 69 6e 20 74 68 65 20 7a 65 72 6f 2d 74 65 72   in the zero-ter
27090 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 0a 2a 2a  minated UTF-8.**
270a0 20 73 74 72 69 6e 67 20 6f 66 20 69 74 73 20 32   string of its 2
270b0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 61 6e 64  nd parameter and
270c0 20 72 65 74 75 72 6e 73 20 61 20 72 65 73 75 6c   returns a resul
270d0 74 20 74 61 62 6c 65 20 74 6f 20 74 68 65 0a 2a  t table to the.*
270e0 2a 20 70 6f 69 6e 74 65 72 20 67 69 76 65 6e 20  * pointer given 
270f0 69 6e 20 69 74 73 20 33 72 64 20 70 61 72 61 6d  in its 3rd param
27100 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 41 66 74 65  eter..**.** Afte
27110 72 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  r the applicatio
27120 6e 20 68 61 73 20 66 69 6e 69 73 68 65 64 20 77  n has finished w
27130 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 20 66  ith the result f
27140 72 6f 6d 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  rom sqlite3_get_
27150 74 61 62 6c 65 28 29 2c 0a 2a 2a 20 69 74 20 6d  table(),.** it m
27160 75 73 74 20 70 61 73 73 20 74 68 65 20 72 65 73  ust pass the res
27170 75 6c 74 20 74 61 62 6c 65 20 70 6f 69 6e 74 65  ult table pointe
27180 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 66 72 65  r to sqlite3_fre
27190 65 5f 74 61 62 6c 65 28 29 20 69 6e 20 6f 72 64  e_table() in ord
271a0 65 72 20 74 6f 0a 2a 2a 20 72 65 6c 65 61 73 65  er to.** release
271b0 20 74 68 65 20 6d 65 6d 6f 72 79 20 74 68 61 74   the memory that
271c0 20 77 61 73 20 6d 61 6c 6c 6f 63 65 64 2e 20 20   was malloced.  
271d0 42 65 63 61 75 73 65 20 6f 66 20 74 68 65 20 77  Because of the w
271e0 61 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  ay the.** [sqlit
271f0 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 68 61 70  e3_malloc()] hap
27200 70 65 6e 73 20 77 69 74 68 69 6e 20 73 71 6c 69  pens within sqli
27210 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 2c  te3_get_table(),
27220 20 74 68 65 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20   the calling.** 
27230 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 6e 6f  function must no
27240 74 20 74 72 79 20 74 6f 20 63 61 6c 6c 20 5b 73  t try to call [s
27250 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20 64  qlite3_free()] d
27260 69 72 65 63 74 6c 79 2e 20 20 4f 6e 6c 79 0a 2a  irectly.  Only.*
27270 2a 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f  * [sqlite3_free_
27280 74 61 62 6c 65 28 29 5d 20 69 73 20 61 62 6c 65  table()] is able
27290 20 74 6f 20 72 65 6c 65 61 73 65 20 74 68 65 20   to release the 
272a0 6d 65 6d 6f 72 79 20 70 72 6f 70 65 72 6c 79 20  memory properly 
272b0 61 6e 64 20 73 61 66 65 6c 79 2e 0a 2a 2a 0a 2a  and safely..**.*
272c0 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 67 65  * The sqlite3_ge
272d0 74 5f 74 61 62 6c 65 28 29 20 69 6e 74 65 72 66  t_table() interf
272e0 61 63 65 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74  ace is implement
272f0 65 64 20 61 73 20 61 20 77 72 61 70 70 65 72 20  ed as a wrapper 
27300 61 72 6f 75 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74  around.** [sqlit
27310 65 33 5f 65 78 65 63 28 29 5d 2e 20 20 54 68 65  e3_exec()].  The
27320 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
27330 6c 65 28 29 20 72 6f 75 74 69 6e 65 20 64 6f 65  le() routine doe
27340 73 20 6e 6f 74 20 68 61 76 65 20 61 63 63 65 73  s not have acces
27350 73 0a 2a 2a 20 74 6f 20 61 6e 79 20 69 6e 74 65  s.** to any inte
27360 72 6e 61 6c 20 64 61 74 61 20 73 74 72 75 63 74  rnal data struct
27370 75 72 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 20  ures of SQLite. 
27380 20 49 74 20 75 73 65 73 20 6f 6e 6c 79 20 74 68   It uses only th
27390 65 20 70 75 62 6c 69 63 0a 2a 2a 20 69 6e 74 65  e public.** inte
273a0 72 66 61 63 65 20 64 65 66 69 6e 65 64 20 68 65  rface defined he
273b0 72 65 2e 20 20 41 73 20 61 20 63 6f 6e 73 65 71  re.  As a conseq
273c0 75 65 6e 63 65 2c 20 65 72 72 6f 72 73 20 74 68  uence, errors th
273d0 61 74 20 6f 63 63 75 72 20 69 6e 20 74 68 65 0a  at occur in the.
273e0 2a 2a 20 77 72 61 70 70 65 72 20 6c 61 79 65 72  ** wrapper layer
273f0 20 6f 75 74 73 69 64 65 20 6f 66 20 74 68 65 20   outside of the 
27400 69 6e 74 65 72 6e 61 6c 20 5b 73 71 6c 69 74 65  internal [sqlite
27410 33 5f 65 78 65 63 28 29 5d 20 63 61 6c 6c 20 61  3_exec()] call a
27420 72 65 20 6e 6f 74 0a 2a 2a 20 72 65 66 6c 65 63  re not.** reflec
27430 74 65 64 20 69 6e 20 73 75 62 73 65 71 75 65 6e  ted in subsequen
27440 74 20 63 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69  t calls to [sqli
27450 74 65 33 5f 65 72 72 63 6f 64 65 28 29 5d 20 6f  te3_errcode()] o
27460 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 72  r.** [sqlite3_er
27470 72 6d 73 67 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49  rmsg()]..*/.SQLI
27480 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
27490 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 0a 20 20  e3_get_table(.  
274a0 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
274b0 20 20 20 20 20 20 2f 2a 20 41 6e 20 6f 70 65 6e        /* An open
274c0 20 64 61 74 61 62 61 73 65 20 2a 2f 0a 20 20 63   database */.  c
274d0 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c  onst char *zSql,
274e0 20 20 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62       /* SQL to b
274f0 65 20 65 76 61 6c 75 61 74 65 64 20 2a 2f 0a 20  e evaluated */. 
27500 20 63 68 61 72 20 2a 2a 2a 70 61 7a 52 65 73 75   char ***pazResu
27510 6c 74 2c 20 20 20 20 2f 2a 20 52 65 73 75 6c 74  lt,    /* Result
27520 73 20 6f 66 20 74 68 65 20 71 75 65 72 79 20 2a  s of the query *
27530 2f 0a 20 20 69 6e 74 20 2a 70 6e 52 6f 77 2c 20  /.  int *pnRow, 
27540 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4e 75 6d            /* Num
27550 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 72 6f  ber of result ro
27560 77 73 20 77 72 69 74 74 65 6e 20 68 65 72 65 20  ws written here 
27570 2a 2f 0a 20 20 69 6e 74 20 2a 70 6e 43 6f 6c 75  */.  int *pnColu
27580 6d 6e 2c 20 20 20 20 20 20 20 20 2f 2a 20 4e 75  mn,        /* Nu
27590 6d 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63  mber of result c
275a0 6f 6c 75 6d 6e 73 20 77 72 69 74 74 65 6e 20 68  olumns written h
275b0 65 72 65 20 2a 2f 0a 20 20 63 68 61 72 20 2a 2a  ere */.  char **
275c0 70 7a 45 72 72 6d 73 67 20 20 20 20 20 20 20 2f  pzErrmsg       /
275d0 2a 20 45 72 72 6f 72 20 6d 73 67 20 77 72 69 74  * Error msg writ
275e0 74 65 6e 20 68 65 72 65 20 2a 2f 0a 29 3b 0a 53  ten here */.);.S
275f0 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73  QLITE_API void s
27600 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c  qlite3_free_tabl
27610 65 28 63 68 61 72 20 2a 2a 72 65 73 75 6c 74 29  e(char **result)
27620 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
27630 46 3a 20 46 6f 72 6d 61 74 74 65 64 20 53 74 72  F: Formatted Str
27640 69 6e 67 20 50 72 69 6e 74 69 6e 67 20 46 75 6e  ing Printing Fun
27650 63 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65  ctions.**.** The
27660 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20  se routines are 
27670 77 6f 72 6b 2d 61 6c 69 6b 65 73 20 6f 66 20 74  work-alikes of t
27680 68 65 20 22 70 72 69 6e 74 66 28 29 22 20 66 61  he "printf()" fa
27690 6d 69 6c 79 20 6f 66 20 66 75 6e 63 74 69 6f 6e  mily of function
276a0 73 0a 2a 2a 20 66 72 6f 6d 20 74 68 65 20 73 74  s.** from the st
276b0 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79  andard C library
276c0 2e 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69  ..** These routi
276d0 6e 65 73 20 75 6e 64 65 72 73 74 61 6e 64 20 6d  nes understand m
276e0 6f 73 74 20 6f 66 20 74 68 65 20 63 6f 6d 6d 6f  ost of the commo
276f0 6e 20 66 6f 72 6d 61 74 74 69 6e 67 20 6f 70 74  n formatting opt
27700 69 6f 6e 73 20 66 72 6f 6d 0a 2a 2a 20 74 68 65  ions from.** the
27710 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72   standard librar
27720 79 20 70 72 69 6e 74 66 28 29 20 0a 2a 2a 20 70  y printf() .** p
27730 6c 75 73 20 73 6f 6d 65 20 61 64 64 69 74 69 6f  lus some additio
27740 6e 61 6c 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  nal non-standard
27750 20 66 6f 72 6d 61 74 73 20 28 5b 25 71 5d 2c 20   formats ([%q], 
27760 5b 25 51 5d 2c 20 5b 25 77 5d 2c 20 61 6e 64 20  [%Q], [%w], and 
27770 5b 25 7a 5d 29 2e 0a 2a 2a 20 53 65 65 20 74 68  [%z])..** See th
27780 65 20 5b 62 75 69 6c 74 2d 69 6e 20 70 72 69 6e  e [built-in prin
27790 74 66 28 29 5d 20 64 6f 63 75 6d 65 6e 74 61 74  tf()] documentat
277a0 69 6f 6e 20 66 6f 72 20 64 65 74 61 69 6c 73 2e  ion for details.
277b0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
277c0 74 65 33 5f 6d 70 72 69 6e 74 66 28 29 20 61 6e  te3_mprintf() an
277d0 64 20 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e  d sqlite3_vmprin
277e0 74 66 28 29 20 72 6f 75 74 69 6e 65 73 20 77 72  tf() routines wr
277f0 69 74 65 20 74 68 65 69 72 0a 2a 2a 20 72 65 73  ite their.** res
27800 75 6c 74 73 20 69 6e 74 6f 20 6d 65 6d 6f 72 79  ults into memory
27810 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
27820 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34  sqlite3_malloc64
27830 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73 74 72 69  ()]..** The stri
27840 6e 67 73 20 72 65 74 75 72 6e 65 64 20 62 79 20  ngs returned by 
27850 74 68 65 73 65 20 74 77 6f 20 72 6f 75 74 69 6e  these two routin
27860 65 73 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20  es should be.** 
27870 72 65 6c 65 61 73 65 64 20 62 79 20 5b 73 71 6c  released by [sql
27880 69 74 65 33 5f 66 72 65 65 28 29 5d 2e 20 20 5e  ite3_free()].  ^
27890 42 6f 74 68 20 72 6f 75 74 69 6e 65 73 20 72 65  Both routines re
278a0 74 75 72 6e 20 61 0a 2a 2a 20 4e 55 4c 4c 20 70  turn a.** NULL p
278b0 6f 69 6e 74 65 72 20 69 66 20 5b 73 71 6c 69 74  ointer if [sqlit
278c0 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 5d 20 69  e3_malloc64()] i
278d0 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f  s unable to allo
278e0 63 61 74 65 20 65 6e 6f 75 67 68 0a 2a 2a 20 6d  cate enough.** m
278f0 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68  emory to hold th
27900 65 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69  e resulting stri
27910 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 65 20  ng..**.** ^(The 
27920 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
27930 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 73 69  () routine is si
27940 6d 69 6c 61 72 20 74 6f 20 22 73 6e 70 72 69 6e  milar to "snprin
27950 74 66 28 29 22 20 66 72 6f 6d 0a 2a 2a 20 74 68  tf()" from.** th
27960 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62  e standard C lib
27970 72 61 72 79 2e 20 20 54 68 65 20 72 65 73 75 6c  rary.  The resul
27980 74 20 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74  t is written int
27990 6f 20 74 68 65 0a 2a 2a 20 62 75 66 66 65 72 20  o the.** buffer 
279a0 73 75 70 70 6c 69 65 64 20 61 73 20 74 68 65 20  supplied as the 
279b0 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
279c0 20 77 68 6f 73 65 20 73 69 7a 65 20 69 73 20 67   whose size is g
279d0 69 76 65 6e 20 62 79 0a 2a 2a 20 74 68 65 20 66  iven by.** the f
279e0 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e 20  irst parameter. 
279f0 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 6f 72  Note that the or
27a00 64 65 72 20 6f 66 20 74 68 65 0a 2a 2a 20 66 69  der of the.** fi
27a10 72 73 74 20 74 77 6f 20 70 61 72 61 6d 65 74 65  rst two paramete
27a20 72 73 20 69 73 20 72 65 76 65 72 73 65 64 20 66  rs is reversed f
27a30 72 6f 6d 20 73 6e 70 72 69 6e 74 66 28 29 2e 29  rom snprintf().)
27a40 5e 20 20 54 68 69 73 20 69 73 20 61 6e 0a 2a 2a  ^  This is an.**
27a50 20 68 69 73 74 6f 72 69 63 61 6c 20 61 63 63 69   historical acci
27a60 64 65 6e 74 20 74 68 61 74 20 63 61 6e 6e 6f 74  dent that cannot
27a70 20 62 65 20 66 69 78 65 64 20 77 69 74 68 6f 75   be fixed withou
27a80 74 20 62 72 65 61 6b 69 6e 67 0a 2a 2a 20 62 61  t breaking.** ba
27a90 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69 62  ckwards compatib
27aa0 69 6c 69 74 79 2e 20 20 5e 28 4e 6f 74 65 20 61  ility.  ^(Note a
27ab0 6c 73 6f 20 74 68 61 74 20 73 71 6c 69 74 65 33  lso that sqlite3
27ac0 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20 72  _snprintf().** r
27ad0 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
27ae0 20 74 6f 20 69 74 73 20 62 75 66 66 65 72 20 69   to its buffer i
27af0 6e 73 74 65 61 64 20 6f 66 20 74 68 65 20 6e 75  nstead of the nu
27b00 6d 62 65 72 20 6f 66 0a 2a 2a 20 63 68 61 72 61  mber of.** chara
27b10 63 74 65 72 73 20 61 63 74 75 61 6c 6c 79 20 77  cters actually w
27b20 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65 20  ritten into the 
27b30 62 75 66 66 65 72 2e 29 5e 20 20 57 65 20 61 64  buffer.)^  We ad
27b40 6d 69 74 20 74 68 61 74 0a 2a 2a 20 74 68 65 20  mit that.** the 
27b50 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63  number of charac
27b60 74 65 72 73 20 77 72 69 74 74 65 6e 20 77 6f 75  ters written wou
27b70 6c 64 20 62 65 20 61 20 6d 6f 72 65 20 75 73 65  ld be a more use
27b80 66 75 6c 20 72 65 74 75 72 6e 0a 2a 2a 20 76 61  ful return.** va
27b90 6c 75 65 20 62 75 74 20 77 65 20 63 61 6e 6e 6f  lue but we canno
27ba0 74 20 63 68 61 6e 67 65 20 74 68 65 20 69 6d 70  t change the imp
27bb0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73  lementation of s
27bc0 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66 28  qlite3_snprintf(
27bd0 29 0a 2a 2a 20 6e 6f 77 20 77 69 74 68 6f 75 74  ).** now without
27be0 20 62 72 65 61 6b 69 6e 67 20 63 6f 6d 70 61 74   breaking compat
27bf0 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e  ibility..**.** ^
27c00 41 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20 62  As long as the b
27c10 75 66 66 65 72 20 73 69 7a 65 20 69 73 20 67 72  uffer size is gr
27c20 65 61 74 65 72 20 74 68 61 6e 20 7a 65 72 6f 2c  eater than zero,
27c30 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74   sqlite3_snprint
27c40 66 28 29 0a 2a 2a 20 67 75 61 72 61 6e 74 65 65  f().** guarantee
27c50 73 20 74 68 61 74 20 74 68 65 20 62 75 66 66 65  s that the buffe
27c60 72 20 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f  r is always zero
27c70 2d 74 65 72 6d 69 6e 61 74 65 64 2e 20 20 5e 54  -terminated.  ^T
27c80 68 65 20 66 69 72 73 74 0a 2a 2a 20 70 61 72 61  he first.** para
27c90 6d 65 74 65 72 20 22 6e 22 20 69 73 20 74 68 65  meter "n" is the
27ca0 20 74 6f 74 61 6c 20 73 69 7a 65 20 6f 66 20 74   total size of t
27cb0 68 65 20 62 75 66 66 65 72 2c 20 69 6e 63 6c 75  he buffer, inclu
27cc0 64 69 6e 67 20 73 70 61 63 65 20 66 6f 72 0a 2a  ding space for.*
27cd0 2a 20 74 68 65 20 7a 65 72 6f 20 74 65 72 6d 69  * the zero termi
27ce0 6e 61 74 6f 72 2e 20 20 53 6f 20 74 68 65 20 6c  nator.  So the l
27cf0 6f 6e 67 65 73 74 20 73 74 72 69 6e 67 20 74 68  ongest string th
27d00 61 74 20 63 61 6e 20 62 65 20 63 6f 6d 70 6c 65  at can be comple
27d10 74 65 6c 79 0a 2a 2a 20 77 72 69 74 74 65 6e 20  tely.** written 
27d20 77 69 6c 6c 20 62 65 20 6e 2d 31 20 63 68 61 72  will be n-1 char
27d30 61 63 74 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54  acters..**.** ^T
27d40 68 65 20 73 71 6c 69 74 65 33 5f 76 73 6e 70 72  he sqlite3_vsnpr
27d50 69 6e 74 66 28 29 20 72 6f 75 74 69 6e 65 20 69  intf() routine i
27d60 73 20 61 20 76 61 72 61 72 67 73 20 76 65 72 73  s a varargs vers
27d70 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f 73  ion of sqlite3_s
27d80 6e 70 72 69 6e 74 66 28 29 2e 0a 2a 2a 0a 2a 2a  nprintf()..**.**
27d90 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b 62 75 69   See also:  [bui
27da0 6c 74 2d 69 6e 20 70 72 69 6e 74 66 28 29 5d 2c  lt-in printf()],
27db0 20 5b 70 72 69 6e 74 66 28 29 20 53 51 4c 20 66   [printf() SQL f
27dc0 75 6e 63 74 69 6f 6e 5d 0a 2a 2f 0a 53 51 4c 49  unction].*/.SQLI
27dd0 54 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c  TE_API char *sql
27de0 69 74 65 33 5f 6d 70 72 69 6e 74 66 28 63 6f 6e  ite3_mprintf(con
27df0 73 74 20 63 68 61 72 2a 2c 2e 2e 2e 29 3b 0a 53  st char*,...);.S
27e00 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20 2a  QLITE_API char *
27e10 73 71 6c 69 74 65 33 5f 76 6d 70 72 69 6e 74 66  sqlite3_vmprintf
27e20 28 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76 61  (const char*, va
27e30 5f 6c 69 73 74 29 3b 0a 53 51 4c 49 54 45 5f 41  _list);.SQLITE_A
27e40 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  PI char *sqlite3
27e50 5f 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63 68  _snprintf(int,ch
27e60 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
27e70 20 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41 50   ...);.SQLITE_AP
27e80 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  I char *sqlite3_
27e90 76 73 6e 70 72 69 6e 74 66 28 69 6e 74 2c 63 68  vsnprintf(int,ch
27ea0 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
27eb0 20 76 61 5f 6c 69 73 74 29 3b 0a 0a 2f 2a 0a 2a   va_list);../*.*
27ec0 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 65 6d 6f  * CAPI3REF: Memo
27ed0 72 79 20 41 6c 6c 6f 63 61 74 69 6f 6e 20 53 75  ry Allocation Su
27ee0 62 73 79 73 74 65 6d 0a 2a 2a 0a 2a 2a 20 54 68  bsystem.**.** Th
27ef0 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 75 73  e SQLite core us
27f00 65 73 20 74 68 65 73 65 20 74 68 72 65 65 20 72  es these three r
27f10 6f 75 74 69 6e 65 73 20 66 6f 72 20 61 6c 6c 20  outines for all 
27f20 6f 66 20 69 74 73 20 6f 77 6e 0a 2a 2a 20 69 6e  of its own.** in
27f30 74 65 72 6e 61 6c 20 6d 65 6d 6f 72 79 20 61 6c  ternal memory al
27f40 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e 20  location needs. 
27f50 22 43 6f 72 65 22 20 69 6e 20 74 68 65 20 70 72  "Core" in the pr
27f60 65 76 69 6f 75 73 20 73 65 6e 74 65 6e 63 65 0a  evious sentence.
27f70 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c  ** does not incl
27f80 75 64 65 20 6f 70 65 72 61 74 69 6e 67 2d 73 79  ude operating-sy
27f90 73 74 65 6d 20 73 70 65 63 69 66 69 63 20 56 46  stem specific VF
27fa0 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  S implementation
27fb0 2e 20 20 54 68 65 0a 2a 2a 20 57 69 6e 64 6f 77  .  The.** Window
27fc0 73 20 56 46 53 20 75 73 65 73 20 6e 61 74 69 76  s VFS uses nativ
27fd0 65 20 6d 61 6c 6c 6f 63 28 29 20 61 6e 64 20 66  e malloc() and f
27fe0 72 65 65 28 29 20 66 6f 72 20 73 6f 6d 65 20 6f  ree() for some o
27ff0 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
28000 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d 61   ^The sqlite3_ma
28010 6c 6c 6f 63 28 29 20 72 6f 75 74 69 6e 65 20 72  lloc() routine r
28020 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
28030 20 74 6f 20 61 20 62 6c 6f 63 6b 0a 2a 2a 20 6f   to a block.** o
28040 66 20 6d 65 6d 6f 72 79 20 61 74 20 6c 65 61 73  f memory at leas
28050 74 20 4e 20 62 79 74 65 73 20 69 6e 20 6c 65 6e  t N bytes in len
28060 67 74 68 2c 20 77 68 65 72 65 20 4e 20 69 73 20  gth, where N is 
28070 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  the parameter..*
28080 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f 6d 61  * ^If sqlite3_ma
28090 6c 6c 6f 63 28 29 20 69 73 20 75 6e 61 62 6c 65  lloc() is unable
280a0 20 74 6f 20 6f 62 74 61 69 6e 20 73 75 66 66 69   to obtain suffi
280b0 63 69 65 6e 74 20 66 72 65 65 0a 2a 2a 20 6d 65  cient free.** me
280c0 6d 6f 72 79 2c 20 69 74 20 72 65 74 75 72 6e 73  mory, it returns
280d0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e   a NULL pointer.
280e0 20 20 5e 49 66 20 74 68 65 20 70 61 72 61 6d 65    ^If the parame
280f0 74 65 72 20 4e 20 74 6f 0a 2a 2a 20 73 71 6c 69  ter N to.** sqli
28100 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 69 73 20  te3_malloc() is 
28110 7a 65 72 6f 20 6f 72 20 6e 65 67 61 74 69 76 65  zero or negative
28120 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 6d 61   then sqlite3_ma
28130 6c 6c 6f 63 28 29 20 72 65 74 75 72 6e 73 0a 2a  lloc() returns.*
28140 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  * a NULL pointer
28150 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ..**.** ^The sql
28160 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 4e 29  ite3_malloc64(N)
28170 20 72 6f 75 74 69 6e 65 20 77 6f 72 6b 73 20 6a   routine works j
28180 75 73 74 20 6c 69 6b 65 0a 2a 2a 20 73 71 6c 69  ust like.** sqli
28190 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 20 65 78  te3_malloc(N) ex
281a0 63 65 70 74 20 74 68 61 74 20 4e 20 69 73 20 61  cept that N is a
281b0 6e 20 75 6e 73 69 67 6e 65 64 20 36 34 2d 62 69  n unsigned 64-bi
281c0 74 20 69 6e 74 65 67 65 72 20 69 6e 73 74 65 61  t integer instea
281d0 64 0a 2a 2a 20 6f 66 20 61 20 73 69 67 6e 65 64  d.** of a signed
281e0 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 72 2e   32-bit integer.
281f0 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c 69 6e 67 20  .**.** ^Calling 
28200 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 77  sqlite3_free() w
28210 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20 70 72  ith a pointer pr
28220 65 76 69 6f 75 73 6c 79 20 72 65 74 75 72 6e 65  eviously returne
28230 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33 5f  d.** by sqlite3_
28240 6d 61 6c 6c 6f 63 28 29 20 6f 72 20 73 71 6c 69  malloc() or sqli
28250 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 20 72 65  te3_realloc() re
28260 6c 65 61 73 65 73 20 74 68 61 74 20 6d 65 6d 6f  leases that memo
28270 72 79 20 73 6f 0a 2a 2a 20 74 68 61 74 20 69 74  ry so.** that it
28280 20 6d 69 67 68 74 20 62 65 20 72 65 75 73 65 64   might be reused
28290 2e 20 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  .  ^The sqlite3_
282a0 66 72 65 65 28 29 20 72 6f 75 74 69 6e 65 20 69  free() routine i
282b0 73 0a 2a 2a 20 61 20 6e 6f 2d 6f 70 20 69 66 20  s.** a no-op if 
282c0 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61  is called with a
282d0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20   NULL pointer.  
282e0 50 61 73 73 69 6e 67 20 61 20 4e 55 4c 4c 20 70  Passing a NULL p
282f0 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 73 71 6c  ointer.** to sql
28300 69 74 65 33 5f 66 72 65 65 28 29 20 69 73 20 68  ite3_free() is h
28310 61 72 6d 6c 65 73 73 2e 20 20 41 66 74 65 72 20  armless.  After 
28320 62 65 69 6e 67 20 66 72 65 65 64 2c 20 6d 65 6d  being freed, mem
28330 6f 72 79 0a 2a 2a 20 73 68 6f 75 6c 64 20 6e 65  ory.** should ne
28340 69 74 68 65 72 20 62 65 20 72 65 61 64 20 6e 6f  ither be read no
28350 72 20 77 72 69 74 74 65 6e 2e 20 20 45 76 65 6e  r written.  Even
28360 20 72 65 61 64 69 6e 67 20 70 72 65 76 69 6f 75   reading previou
28370 73 6c 79 20 66 72 65 65 64 0a 2a 2a 20 6d 65 6d  sly freed.** mem
28380 6f 72 79 20 6d 69 67 68 74 20 72 65 73 75 6c 74  ory might result
28390 20 69 6e 20 61 20 73 65 67 6d 65 6e 74 61 74 69   in a segmentati
283a0 6f 6e 20 66 61 75 6c 74 20 6f 72 20 6f 74 68 65  on fault or othe
283b0 72 20 73 65 76 65 72 65 20 65 72 72 6f 72 2e 0a  r severe error..
283c0 2a 2a 20 4d 65 6d 6f 72 79 20 63 6f 72 72 75 70  ** Memory corrup
283d0 74 69 6f 6e 2c 20 61 20 73 65 67 6d 65 6e 74 61  tion, a segmenta
283e0 74 69 6f 6e 20 66 61 75 6c 74 2c 20 6f 72 20 6f  tion fault, or o
283f0 74 68 65 72 20 73 65 76 65 72 65 20 65 72 72 6f  ther severe erro
28400 72 0a 2a 2a 20 6d 69 67 68 74 20 72 65 73 75 6c  r.** might resul
28410 74 20 69 66 20 73 71 6c 69 74 65 33 5f 66 72 65  t if sqlite3_fre
28420 65 28 29 20 69 73 20 63 61 6c 6c 65 64 20 77 69  e() is called wi
28430 74 68 20 61 20 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f  th a non-NULL po
28440 69 6e 74 65 72 20 74 68 61 74 0a 2a 2a 20 77 61  inter that.** wa
28450 73 20 6e 6f 74 20 6f 62 74 61 69 6e 65 64 20 66  s not obtained f
28460 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
28470 6f 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  oc() or sqlite3_
28480 72 65 61 6c 6c 6f 63 28 29 2e 0a 2a 2a 0a 2a 2a  realloc()..**.**
28490 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 72 65   ^The sqlite3_re
284a0 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 6e 74 65 72  alloc(X,N) inter
284b0 66 61 63 65 20 61 74 74 65 6d 70 74 73 20 74 6f  face attempts to
284c0 20 72 65 73 69 7a 65 20 61 0a 2a 2a 20 70 72 69   resize a.** pri
284d0 6f 72 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  or memory alloca
284e0 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 61 74 20  tion X to be at 
284f0 6c 65 61 73 74 20 4e 20 62 79 74 65 73 2e 0a 2a  least N bytes..*
28500 2a 20 5e 49 66 20 74 68 65 20 58 20 70 61 72 61  * ^If the X para
28510 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33  meter to sqlite3
28520 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 0a 2a 2a  _realloc(X,N).**
28530 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   is a NULL point
28540 65 72 20 74 68 65 6e 20 69 74 73 20 62 65 68 61  er then its beha
28550 76 69 6f 72 20 69 73 20 69 64 65 6e 74 69 63 61  vior is identica
28560 6c 20 74 6f 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20  l to calling.** 
28570 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 4e  sqlite3_malloc(N
28580 29 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 4e 20  )..** ^If the N 
28590 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
285a0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
285b0 29 20 69 73 20 7a 65 72 6f 20 6f 72 0a 2a 2a 20  ) is zero or.** 
285c0 6e 65 67 61 74 69 76 65 20 74 68 65 6e 20 74 68  negative then th
285d0 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 65 78  e behavior is ex
285e0 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61  actly the same a
285f0 73 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c  s calling.** sql
28600 69 74 65 33 5f 66 72 65 65 28 58 29 2e 0a 2a 2a  ite3_free(X)..**
28610 20 5e 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   ^sqlite3_reallo
28620 63 28 58 2c 4e 29 20 72 65 74 75 72 6e 73 20 61  c(X,N) returns a
28630 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6d 65   pointer to a me
28640 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a  mory allocation.
28650 2a 2a 20 6f 66 20 61 74 20 6c 65 61 73 74 20 4e  ** of at least N
28660 20 62 79 74 65 73 20 69 6e 20 73 69 7a 65 20 6f   bytes in size o
28670 72 20 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66 66  r NULL if insuff
28680 69 63 69 65 6e 74 20 6d 65 6d 6f 72 79 20 69 73  icient memory is
28690 20 61 76 61 69 6c 61 62 6c 65 2e 0a 2a 2a 20 5e   available..** ^
286a0 49 66 20 4d 20 69 73 20 74 68 65 20 73 69 7a 65  If M is the size
286b0 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61 6c   of the prior al
286c0 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65 6e 20 6d  location, then m
286d0 69 6e 28 4e 2c 4d 29 20 62 79 74 65 73 0a 2a 2a  in(N,M) bytes.**
286e0 20 6f 66 20 74 68 65 20 70 72 69 6f 72 20 61 6c   of the prior al
286f0 6c 6f 63 61 74 69 6f 6e 20 61 72 65 20 63 6f 70  location are cop
28700 69 65 64 20 69 6e 74 6f 20 74 68 65 20 62 65 67  ied into the beg
28710 69 6e 6e 69 6e 67 20 6f 66 20 62 75 66 66 65 72  inning of buffer
28720 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79 20   returned.** by 
28730 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
28740 58 2c 4e 29 20 61 6e 64 20 74 68 65 20 70 72 69  X,N) and the pri
28750 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73  or allocation is
28760 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66 20 73   freed..** ^If s
28770 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58  qlite3_realloc(X
28780 2c 4e 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c  ,N) returns NULL
28790 20 61 6e 64 20 4e 20 69 73 20 70 6f 73 69 74 69   and N is positi
287a0 76 65 2c 20 74 68 65 6e 20 74 68 65 0a 2a 2a 20  ve, then the.** 
287b0 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e  prior allocation
287c0 20 69 73 20 6e 6f 74 20 66 72 65 65 64 2e 0a 2a   is not freed..*
287d0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
287e0 33 5f 72 65 61 6c 6c 6f 63 36 34 28 58 2c 4e 29  3_realloc64(X,N)
287f0 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f 72 6b   interfaces work
28800 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 2a 2a  s the same as.**
28810 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
28820 28 58 2c 4e 29 20 65 78 63 65 70 74 20 74 68 61  (X,N) except tha
28830 74 20 4e 20 69 73 20 61 20 36 34 2d 62 69 74 20  t N is a 64-bit 
28840 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  unsigned integer
28850 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66 20 61   instead.** of a
28860 20 33 32 2d 62 69 74 20 73 69 67 6e 65 64 20 69   32-bit signed i
28870 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49  nteger..**.** ^I
28880 66 20 58 20 69 73 20 61 20 6d 65 6d 6f 72 79 20  f X is a memory 
28890 61 6c 6c 6f 63 61 74 69 6f 6e 20 70 72 65 76 69  allocation previ
288a0 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65 64 20 66  ously obtained f
288b0 72 6f 6d 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  rom sqlite3_mall
288c0 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33  oc(),.** sqlite3
288d0 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 73 71 6c  _malloc64(), sql
288e0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 2c 20  ite3_realloc(), 
288f0 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  or sqlite3_reall
28900 6f 63 36 34 28 29 2c 20 74 68 65 6e 0a 2a 2a 20  oc64(), then.** 
28910 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29  sqlite3_msize(X)
28920 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 69 7a   returns the siz
28930 65 20 6f 66 20 74 68 61 74 20 6d 65 6d 6f 72 79  e of that memory
28940 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 6e 20 62   allocation in b
28950 79 74 65 73 2e 0a 2a 2a 20 5e 54 68 65 20 76 61  ytes..** ^The va
28960 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
28970 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29  sqlite3_msize(X)
28980 20 6d 69 67 68 74 20 62 65 20 6c 61 72 67 65 72   might be larger
28990 20 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65 72   than the number
289a0 0a 2a 2a 20 6f 66 20 62 79 74 65 73 20 72 65 71  .** of bytes req
289b0 75 65 73 74 65 64 20 77 68 65 6e 20 58 20 77 61  uested when X wa
289c0 73 20 61 6c 6c 6f 63 61 74 65 64 2e 20 20 5e 49  s allocated.  ^I
289d0 66 20 58 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f  f X is a NULL po
289e0 69 6e 74 65 72 20 74 68 65 6e 0a 2a 2a 20 73 71  inter then.** sq
289f0 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20 72  lite3_msize(X) r
28a00 65 74 75 72 6e 73 20 7a 65 72 6f 2e 20 20 49 66  eturns zero.  If
28a10 20 58 20 70 6f 69 6e 74 73 20 74 6f 20 73 6f 6d   X points to som
28a20 65 74 68 69 6e 67 20 74 68 61 74 20 69 73 20 6e  ething that is n
28a30 6f 74 0a 2a 2a 20 74 68 65 20 62 65 67 69 6e 6e  ot.** the beginn
28a40 69 6e 67 20 6f 66 20 6d 65 6d 6f 72 79 20 61 6c  ing of memory al
28a50 6c 6f 63 61 74 69 6f 6e 2c 20 6f 72 20 69 66 20  location, or if 
28a60 69 74 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 66  it points to a f
28a70 6f 72 6d 65 72 6c 79 0a 2a 2a 20 76 61 6c 69 64  ormerly.** valid
28a80 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
28a90 6f 6e 20 74 68 61 74 20 68 61 73 20 6e 6f 77 20  on that has now 
28aa0 62 65 65 6e 20 66 72 65 65 64 2c 20 74 68 65 6e  been freed, then
28ab0 20 74 68 65 20 62 65 68 61 76 69 6f 72 0a 2a 2a   the behavior.**
28ac0 20 6f 66 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a   of sqlite3_msiz
28ad0 65 28 58 29 20 69 73 20 75 6e 64 65 66 69 6e 65  e(X) is undefine
28ae0 64 20 61 6e 64 20 70 6f 73 73 69 62 6c 79 20 68  d and possibly h
28af0 61 72 6d 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 54  armful..**.** ^T
28b00 68 65 20 6d 65 6d 6f 72 79 20 72 65 74 75 72 6e  he memory return
28b10 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 6d 61  ed by sqlite3_ma
28b20 6c 6c 6f 63 28 29 2c 20 73 71 6c 69 74 65 33 5f  lloc(), sqlite3_
28b30 72 65 61 6c 6c 6f 63 28 29 2c 0a 2a 2a 20 73 71  realloc(),.** sq
28b40 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29  lite3_malloc64()
28b50 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 72 65  , and sqlite3_re
28b60 61 6c 6c 6f 63 36 34 28 29 0a 2a 2a 20 69 73 20  alloc64().** is 
28b70 61 6c 77 61 79 73 20 61 6c 69 67 6e 65 64 20 74  always aligned t
28b80 6f 20 61 74 20 6c 65 61 73 74 20 61 6e 20 38 20  o at least an 8 
28b90 62 79 74 65 20 62 6f 75 6e 64 61 72 79 2c 20 6f  byte boundary, o
28ba0 72 20 74 6f 20 61 0a 2a 2a 20 34 20 62 79 74 65  r to a.** 4 byte
28bb0 20 62 6f 75 6e 64 61 72 79 20 69 66 20 74 68 65   boundary if the
28bc0 20 5b 53 51 4c 49 54 45 5f 34 5f 42 59 54 45 5f   [SQLITE_4_BYTE_
28bd0 41 4c 49 47 4e 45 44 5f 4d 41 4c 4c 4f 43 5d 20  ALIGNED_MALLOC] 
28be0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20  compile-time.** 
28bf0 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a  option is used..
28c00 2a 2a 0a 2a 2a 20 49 6e 20 53 51 4c 69 74 65 20  **.** In SQLite 
28c10 76 65 72 73 69 6f 6e 20 33 2e 35 2e 30 20 61 6e  version 3.5.0 an
28c20 64 20 33 2e 35 2e 31 2c 20 69 74 20 77 61 73 20  d 3.5.1, it was 
28c30 70 6f 73 73 69 62 6c 65 20 74 6f 20 64 65 66 69  possible to defi
28c40 6e 65 0a 2a 2a 20 74 68 65 20 53 51 4c 49 54 45  ne.** the SQLITE
28c50 5f 4f 4d 49 54 5f 4d 45 4d 4f 52 59 5f 41 4c 4c  _OMIT_MEMORY_ALL
28c60 4f 43 41 54 49 4f 4e 20 77 68 69 63 68 20 77 6f  OCATION which wo
28c70 75 6c 64 20 63 61 75 73 65 20 74 68 65 20 62 75  uld cause the bu
28c80 69 6c 74 2d 69 6e 0a 2a 2a 20 69 6d 70 6c 65 6d  ilt-in.** implem
28c90 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 73  entation of thes
28ca0 65 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62 65  e routines to be
28cb0 20 6f 6d 69 74 74 65 64 2e 20 20 54 68 61 74 20   omitted.  That 
28cc0 63 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69 73  capability.** is
28cd0 20 6e 6f 20 6c 6f 6e 67 65 72 20 70 72 6f 76 69   no longer provi
28ce0 64 65 64 2e 20 20 4f 6e 6c 79 20 62 75 69 6c 74  ded.  Only built
28cf0 2d 69 6e 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  -in memory alloc
28d00 61 74 6f 72 73 20 63 61 6e 20 62 65 20 75 73 65  ators can be use
28d10 64 2e 0a 2a 2a 0a 2a 2a 20 50 72 69 6f 72 20 74  d..**.** Prior t
28d20 6f 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  o SQLite version
28d30 20 33 2e 37 2e 31 30 2c 20 74 68 65 20 57 69 6e   3.7.10, the Win
28d40 64 6f 77 73 20 4f 53 20 69 6e 74 65 72 66 61 63  dows OS interfac
28d50 65 20 6c 61 79 65 72 20 63 61 6c 6c 65 64 0a 2a  e layer called.*
28d60 2a 20 74 68 65 20 73 79 73 74 65 6d 20 6d 61 6c  * the system mal
28d70 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
28d80 20 64 69 72 65 63 74 6c 79 20 77 68 65 6e 20 63   directly when c
28d90 6f 6e 76 65 72 74 69 6e 67 0a 2a 2a 20 66 69 6c  onverting.** fil
28da0 65 6e 61 6d 65 73 20 62 65 74 77 65 65 6e 20 74  enames between t
28db0 68 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 69 6e  he UTF-8 encodin
28dc0 67 20 75 73 65 64 20 62 79 20 53 51 4c 69 74 65  g used by SQLite
28dd0 0a 2a 2a 20 61 6e 64 20 77 68 61 74 65 76 65 72  .** and whatever
28de0 20 66 69 6c 65 6e 61 6d 65 20 65 6e 63 6f 64 69   filename encodi
28df0 6e 67 20 69 73 20 75 73 65 64 20 62 79 20 74 68  ng is used by th
28e00 65 20 70 61 72 74 69 63 75 6c 61 72 20 57 69 6e  e particular Win
28e10 64 6f 77 73 0a 2a 2a 20 69 6e 73 74 61 6c 6c 61  dows.** installa
28e20 74 69 6f 6e 2e 20 20 4d 65 6d 6f 72 79 20 61 6c  tion.  Memory al
28e30 6c 6f 63 61 74 69 6f 6e 20 65 72 72 6f 72 73 20  location errors 
28e40 77 65 72 65 20 64 65 74 65 63 74 65 64 2c 20 62  were detected, b
28e50 75 74 0a 2a 2a 20 74 68 65 79 20 77 65 72 65 20  ut.** they were 
28e60 72 65 70 6f 72 74 65 64 20 62 61 63 6b 20 61 73  reported back as
28e70 20 5b 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50 45   [SQLITE_CANTOPE
28e80 4e 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c 49 54 45  N] or.** [SQLITE
28e90 5f 49 4f 45 52 52 5d 20 72 61 74 68 65 72 20 74  _IOERR] rather t
28ea0 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4e 4f 4d 45  han [SQLITE_NOME
28eb0 4d 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 6f  M]..**.** The po
28ec0 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73 20  inter arguments 
28ed0 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  to [sqlite3_free
28ee0 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  ()] and [sqlite3
28ef0 5f 72 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 6d  _realloc()].** m
28f00 75 73 74 20 62 65 20 65 69 74 68 65 72 20 4e 55  ust be either NU
28f10 4c 4c 20 6f 72 20 65 6c 73 65 20 70 6f 69 6e 74  LL or else point
28f20 65 72 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f  ers obtained fro
28f30 6d 20 61 20 70 72 69 6f 72 0a 2a 2a 20 69 6e 76  m a prior.** inv
28f40 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69  ocation of [sqli
28f50 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6f 72  te3_malloc()] or
28f60 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
28f70 63 28 29 5d 20 74 68 61 74 20 68 61 76 65 0a 2a  c()] that have.*
28f80 2a 20 6e 6f 74 20 79 65 74 20 62 65 65 6e 20 72  * not yet been r
28f90 65 6c 65 61 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  eleased..**.** T
28fa0 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d  he application m
28fb0 75 73 74 20 6e 6f 74 20 72 65 61 64 20 6f 72 20  ust not read or 
28fc0 77 72 69 74 65 20 61 6e 79 20 70 61 72 74 20 6f  write any part o
28fd0 66 0a 2a 2a 20 61 20 62 6c 6f 63 6b 20 6f 66 20  f.** a block of 
28fe0 6d 65 6d 6f 72 79 20 61 66 74 65 72 20 69 74 20  memory after it 
28ff0 68 61 73 20 62 65 65 6e 20 72 65 6c 65 61 73 65  has been release
29000 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69  d using.** [sqli
29010 74 65 33 5f 66 72 65 65 28 29 5d 20 6f 72 20 5b  te3_free()] or [
29020 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
29030 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  )]..*/.SQLITE_AP
29040 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  I void *sqlite3_
29050 6d 61 6c 6c 6f 63 28 69 6e 74 29 3b 0a 53 51 4c  malloc(int);.SQL
29060 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73 71  ITE_API void *sq
29070 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 73  lite3_malloc64(s
29080 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29 3b 0a  qlite3_uint64);.
29090 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
290a0 2a 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63  *sqlite3_realloc
290b0 28 76 6f 69 64 2a 2c 20 69 6e 74 29 3b 0a 53 51  (void*, int);.SQ
290c0 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 2a 73  LITE_API void *s
290d0 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34  qlite3_realloc64
290e0 28 76 6f 69 64 2a 2c 20 73 71 6c 69 74 65 33 5f  (void*, sqlite3_
290f0 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f  uint64);.SQLITE_
29100 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
29110 5f 66 72 65 65 28 76 6f 69 64 2a 29 3b 0a 53 51  _free(void*);.SQ
29120 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33  LITE_API sqlite3
29130 5f 75 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f  _uint64 sqlite3_
29140 6d 73 69 7a 65 28 76 6f 69 64 2a 29 3b 0a 0a 2f  msize(void*);../
29150 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d  *.** CAPI3REF: M
29160 65 6d 6f 72 79 20 41 6c 6c 6f 63 61 74 6f 72 20  emory Allocator 
29170 53 74 61 74 69 73 74 69 63 73 0a 2a 2a 0a 2a 2a  Statistics.**.**
29180 20 53 51 4c 69 74 65 20 70 72 6f 76 69 64 65 73   SQLite provides
29190 20 74 68 65 73 65 20 74 77 6f 20 69 6e 74 65 72   these two inter
291a0 66 61 63 65 73 20 66 6f 72 20 72 65 70 6f 72 74  faces for report
291b0 69 6e 67 20 6f 6e 20 74 68 65 20 73 74 61 74 75  ing on the statu
291c0 73 0a 2a 2a 20 6f 66 20 74 68 65 20 5b 73 71 6c  s.** of the [sql
291d0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 20  ite3_malloc()], 
291e0 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
291f0 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 72  , and [sqlite3_r
29200 65 61 6c 6c 6f 63 28 29 5d 0a 2a 2a 20 72 6f 75  ealloc()].** rou
29210 74 69 6e 65 73 2c 20 77 68 69 63 68 20 66 6f 72  tines, which for
29220 6d 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 6d  m the built-in m
29230 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
29240 20 73 75 62 73 79 73 74 65 6d 2e 0a 2a 2a 0a 2a   subsystem..**.*
29250 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33 5f  * ^The [sqlite3_
29260 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 72  memory_used()] r
29270 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74  outine returns t
29280 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74  he number of byt
29290 65 73 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72 79 20  es.** of memory 
292a0 63 75 72 72 65 6e 74 6c 79 20 6f 75 74 73 74 61  currently outsta
292b0 6e 64 69 6e 67 20 28 6d 61 6c 6c 6f 63 65 64 20  nding (malloced 
292c0 62 75 74 20 6e 6f 74 20 66 72 65 65 64 29 2e 0a  but not freed)..
292d0 2a 2a 20 5e 54 68 65 20 5b 73 71 6c 69 74 65 33  ** ^The [sqlite3
292e0 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65  _memory_highwate
292f0 72 28 29 5d 20 72 6f 75 74 69 6e 65 20 72 65 74  r()] routine ret
29300 75 72 6e 73 20 74 68 65 20 6d 61 78 69 6d 75 6d  urns the maximum
29310 0a 2a 2a 20 76 61 6c 75 65 20 6f 66 20 5b 73 71  .** value of [sq
29320 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
29330 64 28 29 5d 20 73 69 6e 63 65 20 74 68 65 20 68  d()] since the h
29340 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 0a 2a  igh-water mark.*
29350 2a 20 77 61 73 20 6c 61 73 74 20 72 65 73 65 74  * was last reset
29360 2e 20 20 5e 54 68 65 20 76 61 6c 75 65 73 20 72  .  ^The values r
29370 65 74 75 72 6e 65 64 20 62 79 20 5b 73 71 6c 69  eturned by [sqli
29380 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
29390 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74  )] and.** [sqlit
293a0 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
293b0 74 65 72 28 29 5d 20 69 6e 63 6c 75 64 65 20 61  ter()] include a
293c0 6e 79 20 6f 76 65 72 68 65 61 64 0a 2a 2a 20 61  ny overhead.** a
293d0 64 64 65 64 20 62 79 20 53 51 4c 69 74 65 20 69  dded by SQLite i
293e0 6e 20 69 74 73 20 69 6d 70 6c 65 6d 65 6e 74 61  n its implementa
293f0 74 69 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65 33  tion of [sqlite3
29400 5f 6d 61 6c 6c 6f 63 28 29 5d 2c 0a 2a 2a 20 62  _malloc()],.** b
29410 75 74 20 6e 6f 74 20 6f 76 65 72 68 65 61 64 20  ut not overhead 
29420 61 64 64 65 64 20 62 79 20 74 68 65 20 61 6e 79  added by the any
29430 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 79 73 74   underlying syst
29440 65 6d 20 6c 69 62 72 61 72 79 0a 2a 2a 20 72 6f  em library.** ro
29450 75 74 69 6e 65 73 20 74 68 61 74 20 5b 73 71 6c  utines that [sql
29460 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 6d  ite3_malloc()] m
29470 61 79 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5e  ay call..**.** ^
29480 54 68 65 20 6d 65 6d 6f 72 79 20 68 69 67 68 2d  The memory high-
29490 77 61 74 65 72 20 6d 61 72 6b 20 69 73 20 72 65  water mark is re
294a0 73 65 74 20 74 6f 20 74 68 65 20 63 75 72 72 65  set to the curre
294b0 6e 74 20 76 61 6c 75 65 20 6f 66 0a 2a 2a 20 5b  nt value of.** [
294c0 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75  sqlite3_memory_u
294d0 73 65 64 28 29 5d 20 69 66 20 61 6e 64 20 6f 6e  sed()] if and on
294e0 6c 79 20 69 66 20 74 68 65 20 70 61 72 61 6d 65  ly if the parame
294f0 74 65 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  ter to.** [sqlit
29500 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61  e3_memory_highwa
29510 74 65 72 28 29 5d 20 69 73 20 74 72 75 65 2e 20  ter()] is true. 
29520 20 5e 54 68 65 20 76 61 6c 75 65 20 72 65 74 75   ^The value retu
29530 72 6e 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c 69  rned.** by [sqli
29540 74 65 33 5f 6d 65 6d 6f 72 79 5f 68 69 67 68 77  te3_memory_highw
29550 61 74 65 72 28 31 29 5d 20 69 73 20 74 68 65 20  ater(1)] is the 
29560 68 69 67 68 2d 77 61 74 65 72 20 6d 61 72 6b 0a  high-water mark.
29570 2a 2a 20 70 72 69 6f 72 20 74 6f 20 74 68 65 20  ** prior to the 
29580 72 65 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45  reset..*/.SQLITE
29590 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e 74  _API sqlite3_int
295a0 36 34 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  64 sqlite3_memor
295b0 79 5f 75 73 65 64 28 76 6f 69 64 29 3b 0a 53 51  y_used(void);.SQ
295c0 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33  LITE_API sqlite3
295d0 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 6d  _int64 sqlite3_m
295e0 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
295f0 69 6e 74 20 72 65 73 65 74 46 6c 61 67 29 3b 0a  int resetFlag);.
29600 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
29610 20 50 73 65 75 64 6f 2d 52 61 6e 64 6f 6d 20 4e   Pseudo-Random N
29620 75 6d 62 65 72 20 47 65 6e 65 72 61 74 6f 72 0a  umber Generator.
29630 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 63 6f 6e  **.** SQLite con
29640 74 61 69 6e 73 20 61 20 68 69 67 68 2d 71 75 61  tains a high-qua
29650 6c 69 74 79 20 70 73 65 75 64 6f 2d 72 61 6e 64  lity pseudo-rand
29660 6f 6d 20 6e 75 6d 62 65 72 20 67 65 6e 65 72 61  om number genera
29670 74 6f 72 20 28 50 52 4e 47 29 20 75 73 65 64 20  tor (PRNG) used 
29680 74 6f 0a 2a 2a 20 73 65 6c 65 63 74 20 72 61 6e  to.** select ran
29690 64 6f 6d 20 5b 52 4f 57 49 44 20 7c 20 52 4f 57  dom [ROWID | ROW
296a0 49 44 73 5d 20 77 68 65 6e 20 69 6e 73 65 72 74  IDs] when insert
296b0 69 6e 67 20 6e 65 77 20 72 65 63 6f 72 64 73 20  ing new records 
296c0 69 6e 74 6f 20 61 20 74 61 62 6c 65 20 74 68 61  into a table tha
296d0 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 75 73 65  t.** already use
296e0 73 20 74 68 65 20 6c 61 72 67 65 73 74 20 70 6f  s the largest po
296f0 73 73 69 62 6c 65 20 5b 52 4f 57 49 44 5d 2e 20  ssible [ROWID]. 
29700 20 54 68 65 20 50 52 4e 47 20 69 73 20 61 6c 73   The PRNG is als
29710 6f 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 68  o used for.** th
29720 65 20 62 75 69 6c 64 2d 69 6e 20 72 61 6e 64 6f  e build-in rando
29730 6d 28 29 20 61 6e 64 20 72 61 6e 64 6f 6d 62 6c  m() and randombl
29740 6f 62 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f  ob() SQL functio
29750 6e 73 2e 20 20 54 68 69 73 20 69 6e 74 65 72 66  ns.  This interf
29760 61 63 65 20 61 6c 6c 6f 77 73 0a 2a 2a 20 61 70  ace allows.** ap
29770 70 6c 69 63 61 74 69 6f 6e 73 20 74 6f 20 61 63  plications to ac
29780 63 65 73 73 20 74 68 65 20 73 61 6d 65 20 50 52  cess the same PR
29790 4e 47 20 66 6f 72 20 6f 74 68 65 72 20 70 75 72  NG for other pur
297a0 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20  poses..**.** ^A 
297b0 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72 6f 75  call to this rou
297c0 74 69 6e 65 20 73 74 6f 72 65 73 20 4e 20 62 79  tine stores N by
297d0 74 65 73 20 6f 66 20 72 61 6e 64 6f 6d 6e 65 73  tes of randomnes
297e0 73 20 69 6e 74 6f 20 62 75 66 66 65 72 20 50 2e  s into buffer P.
297f0 0a 2a 2a 20 5e 54 68 65 20 50 20 70 61 72 61 6d  .** ^The P param
29800 65 74 65 72 20 63 61 6e 20 62 65 20 61 20 4e 55  eter can be a NU
29810 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a  LL pointer..**.*
29820 2a 20 5e 49 66 20 74 68 69 73 20 72 6f 75 74 69  * ^If this routi
29830 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ne has not been 
29840 70 72 65 76 69 6f 75 73 6c 79 20 63 61 6c 6c 65  previously calle
29850 64 20 6f 72 20 69 66 20 74 68 65 20 70 72 65 76  d or if the prev
29860 69 6f 75 73 0a 2a 2a 20 63 61 6c 6c 20 68 61 64  ious.** call had
29870 20 4e 20 6c 65 73 73 20 74 68 61 6e 20 6f 6e 65   N less than one
29880 20 6f 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74   or a NULL point
29890 65 72 20 66 6f 72 20 50 2c 20 74 68 65 6e 20 74  er for P, then t
298a0 68 65 20 50 52 4e 47 20 69 73 0a 2a 2a 20 73 65  he PRNG is.** se
298b0 65 64 65 64 20 75 73 69 6e 67 20 72 61 6e 64 6f  eded using rando
298c0 6d 6e 65 73 73 20 6f 62 74 61 69 6e 65 64 20 66  mness obtained f
298d0 72 6f 6d 20 74 68 65 20 78 52 61 6e 64 6f 6d 6e  rom the xRandomn
298e0 65 73 73 20 6d 65 74 68 6f 64 20 6f 66 0a 2a 2a  ess method of.**
298f0 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 73 71   the default [sq
29900 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
29910 74 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 70 72  t..** ^If the pr
29920 65 76 69 6f 75 73 20 63 61 6c 6c 20 74 6f 20 74  evious call to t
29930 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61 64 20  his routine had 
29940 61 6e 20 4e 20 6f 66 20 31 20 6f 72 20 6d 6f 72  an N of 1 or mor
29950 65 20 61 6e 64 20 61 0a 2a 2a 20 6e 6f 6e 2d 4e  e and a.** non-N
29960 55 4c 4c 20 50 20 74 68 65 6e 20 74 68 65 20 70  ULL P then the p
29970 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 6e 65 73 73  seudo-randomness
29980 20 69 73 20 67 65 6e 65 72 61 74 65 64 0a 2a 2a   is generated.**
29990 20 69 6e 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20   internally and 
299a0 77 69 74 68 6f 75 74 20 72 65 63 6f 75 72 73 65  without recourse
299b0 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
299c0 5f 76 66 73 5d 20 78 52 61 6e 64 6f 6d 6e 65 73  _vfs] xRandomnes
299d0 73 0a 2a 2a 20 6d 65 74 68 6f 64 2e 0a 2a 2f 0a  s.** method..*/.
299e0 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
299f0 73 71 6c 69 74 65 33 5f 72 61 6e 64 6f 6d 6e 65  sqlite3_randomne
29a00 73 73 28 69 6e 74 20 4e 2c 20 76 6f 69 64 20 2a  ss(int N, void *
29a10 50 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  P);../*.** CAPI3
29a20 52 45 46 3a 20 43 6f 6d 70 69 6c 65 2d 54 69 6d  REF: Compile-Tim
29a30 65 20 41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20  e Authorization 
29a40 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d 45 54  Callbacks.** MET
29a50 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 20  HOD: sqlite3.** 
29a60 4b 45 59 57 4f 52 44 53 3a 20 7b 61 75 74 68 6f  KEYWORDS: {autho
29a70 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 7d 0a  rizer callback}.
29a80 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74  **.** ^This rout
29a90 69 6e 65 20 72 65 67 69 73 74 65 72 73 20 61 6e  ine registers an
29aa0 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
29ab0 62 61 63 6b 20 77 69 74 68 20 61 20 70 61 72 74  back with a part
29ac0 69 63 75 6c 61 72 0a 2a 2a 20 5b 64 61 74 61 62  icular.** [datab
29ad0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2c  ase connection],
29ae0 20 73 75 70 70 6c 69 65 64 20 69 6e 20 74 68 65   supplied in the
29af0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 2e   first argument.
29b00 0a 2a 2a 20 5e 54 68 65 20 61 75 74 68 6f 72 69  .** ^The authori
29b10 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
29b20 69 6e 76 6f 6b 65 64 20 61 73 20 53 51 4c 20 73  invoked as SQL s
29b30 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 62 65  tatements are be
29b40 69 6e 67 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20  ing compiled.** 
29b50 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  by [sqlite3_prep
29b60 61 72 65 28 29 5d 20 6f 72 20 69 74 73 20 76 61  are()] or its va
29b70 72 69 61 6e 74 73 20 5b 73 71 6c 69 74 65 33 5f  riants [sqlite3_
29b80 70 72 65 70 61 72 65 5f 76 32 28 29 5d 2c 0a 2a  prepare_v2()],.*
29b90 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
29ba0 72 65 5f 76 33 28 29 5d 2c 20 5b 73 71 6c 69 74  re_v3()], [sqlit
29bb0 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 5d 2c  e3_prepare16()],
29bc0 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
29bd0 65 31 36 5f 76 32 28 29 5d 2c 0a 2a 2a 20 61 6e  e16_v2()],.** an
29be0 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  d [sqlite3_prepa
29bf0 72 65 31 36 5f 76 33 28 29 5d 2e 20 20 5e 41 74  re16_v3()].  ^At
29c00 20 76 61 72 69 6f 75 73 0a 2a 2a 20 70 6f 69 6e   various.** poin
29c10 74 73 20 64 75 72 69 6e 67 20 74 68 65 20 63 6f  ts during the co
29c20 6d 70 69 6c 61 74 69 6f 6e 20 70 72 6f 63 65 73  mpilation proces
29c30 73 2c 20 61 73 20 6c 6f 67 69 63 20 69 73 20 62  s, as logic is b
29c40 65 69 6e 67 20 63 72 65 61 74 65 64 0a 2a 2a 20  eing created.** 
29c50 74 6f 20 70 65 72 66 6f 72 6d 20 76 61 72 69 6f  to perform vario
29c60 75 73 20 61 63 74 69 6f 6e 73 2c 20 74 68 65 20  us actions, the 
29c70 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
29c80 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 74  ack is invoked t
29c90 6f 0a 2a 2a 20 73 65 65 20 69 66 20 74 68 6f 73  o.** see if thos
29ca0 65 20 61 63 74 69 6f 6e 73 20 61 72 65 20 61 6c  e actions are al
29cb0 6c 6f 77 65 64 2e 20 20 5e 54 68 65 20 61 75 74  lowed.  ^The aut
29cc0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
29cd0 20 73 68 6f 75 6c 64 0a 2a 2a 20 72 65 74 75 72   should.** retur
29ce0 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 74 6f  n [SQLITE_OK] to
29cf0 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74 69 6f   allow the actio
29d00 6e 2c 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52  n, [SQLITE_IGNOR
29d10 45 5d 20 74 6f 20 64 69 73 61 6c 6c 6f 77 20 74  E] to disallow t
29d20 68 65 0a 2a 2a 20 73 70 65 63 69 66 69 63 20 61  he.** specific a
29d30 63 74 69 6f 6e 20 62 75 74 20 61 6c 6c 6f 77 20  ction but allow 
29d40 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  the SQL statemen
29d50 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f  t to continue to
29d60 20 62 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 2c   be.** compiled,
29d70 20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59   or [SQLITE_DENY
29d80 5d 20 74 6f 20 63 61 75 73 65 20 74 68 65 20 65  ] to cause the e
29d90 6e 74 69 72 65 20 53 51 4c 20 73 74 61 74 65 6d  ntire SQL statem
29da0 65 6e 74 20 74 6f 20 62 65 0a 2a 2a 20 72 65 6a  ent to be.** rej
29db0 65 63 74 65 64 20 77 69 74 68 20 61 6e 20 65 72  ected with an er
29dc0 72 6f 72 2e 20 20 5e 49 66 20 74 68 65 20 61 75  ror.  ^If the au
29dd0 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
29de0 6b 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 6e 79  k returns.** any
29df0 20 76 61 6c 75 65 20 6f 74 68 65 72 20 74 68 61   value other tha
29e00 6e 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  n [SQLITE_IGNORE
29e10 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20  ], [SQLITE_OK], 
29e20 6f 72 20 5b 53 51 4c 49 54 45 5f 44 45 4e 59 5d  or [SQLITE_DENY]
29e30 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 5b 73 71  .** then the [sq
29e40 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32  lite3_prepare_v2
29e50 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65 6e  ()] or equivalen
29e60 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69 67  t call that trig
29e70 67 65 72 65 64 0a 2a 2a 20 74 68 65 20 61 75 74  gered.** the aut
29e80 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61 69  horizer will fai
29e90 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20  l with an error 
29ea0 6d 65 73 73 61 67 65 2e 0a 2a 2a 0a 2a 2a 20 57  message..**.** W
29eb0 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  hen the callback
29ec0 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
29ed0 5f 4f 4b 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  _OK], that means
29ee0 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 0a 2a   the operation.*
29ef0 2a 20 72 65 71 75 65 73 74 65 64 20 69 73 20 6f  * requested is o
29f00 6b 2e 20 20 5e 57 68 65 6e 20 74 68 65 20 63 61  k.  ^When the ca
29f10 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 5b  llback returns [
29f20 53 51 4c 49 54 45 5f 44 45 4e 59 5d 2c 20 74 68  SQLITE_DENY], th
29f30 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  e.** [sqlite3_pr
29f40 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20 65  epare_v2()] or e
29f50 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20 74  quivalent call t
29f60 68 61 74 20 74 72 69 67 67 65 72 65 64 20 74 68  hat triggered th
29f70 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 72 20  e.** authorizer 
29f80 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20 61  will fail with a
29f90 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  n error message 
29fa0 65 78 70 6c 61 69 6e 69 6e 67 20 74 68 61 74 0a  explaining that.
29fb0 2a 2a 20 61 63 63 65 73 73 20 69 73 20 64 65 6e  ** access is den
29fc0 69 65 64 2e 20 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ied. .**.** ^The
29fd0 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72   first parameter
29fe0 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a   to the authoriz
29ff0 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 61  er callback is a
2a000 20 63 6f 70 79 20 6f 66 20 74 68 65 20 74 68 69   copy of the thi
2a010 72 64 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20  rd.** parameter 
2a020 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 73  to the sqlite3_s
2a030 65 74 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 20  et_authorizer() 
2a040 69 6e 74 65 72 66 61 63 65 2e 20 5e 54 68 65 20  interface. ^The 
2a050 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
2a060 0a 2a 2a 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  .** to the callb
2a070 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67 65  ack is an intege
2a080 72 20 5b 53 51 4c 49 54 45 5f 43 4f 50 59 20 7c  r [SQLITE_COPY |
2a090 20 61 63 74 69 6f 6e 20 63 6f 64 65 5d 20 74 68   action code] th
2a0a0 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20  at specifies.** 
2a0b0 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 61  the particular a
2a0c0 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75 74 68  ction to be auth
2a0d0 6f 72 69 7a 65 64 2e 20 5e 54 68 65 20 74 68 69  orized. ^The thi
2a0e0 72 64 20 74 68 72 6f 75 67 68 20 73 69 78 74 68  rd through sixth
2a0f0 20 70 61 72 61 6d 65 74 65 72 73 0a 2a 2a 20 74   parameters.** t
2a100 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 61  o the callback a
2a110 72 65 20 65 69 74 68 65 72 20 4e 55 4c 4c 20 70  re either NULL p
2a120 6f 69 6e 74 65 72 73 20 6f 72 20 7a 65 72 6f 2d  ointers or zero-
2a130 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72 69 6e  terminated strin
2a140 67 73 0a 2a 2a 20 74 68 61 74 20 63 6f 6e 74 61  gs.** that conta
2a150 69 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 65  in additional de
2a160 74 61 69 6c 73 20 61 62 6f 75 74 20 74 68 65 20  tails about the 
2a170 61 63 74 69 6f 6e 20 74 6f 20 62 65 20 61 75 74  action to be aut
2a180 68 6f 72 69 7a 65 64 2e 0a 2a 2a 20 41 70 70 6c  horized..** Appl
2a190 69 63 61 74 69 6f 6e 73 20 6d 75 73 74 20 61 6c  ications must al
2a1a0 77 61 79 73 20 62 65 20 70 72 65 70 61 72 65 64  ways be prepared
2a1b0 20 74 6f 20 65 6e 63 6f 75 6e 74 65 72 20 61 20   to encounter a 
2a1c0 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 6e 20  NULL pointer in 
2a1d0 61 6e 79 0a 2a 2a 20 6f 66 20 74 68 65 20 74 68  any.** of the th
2a1e0 69 72 64 20 74 68 72 6f 75 67 68 20 74 68 65 20  ird through the 
2a1f0 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72 73  sixth parameters
2a200 20 6f 66 20 74 68 65 20 61 75 74 68 6f 72 69 7a   of the authoriz
2a210 61 74 69 6f 6e 20 63 61 6c 6c 62 61 63 6b 2e 0a  ation callback..
2a220 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 61 63  **.** ^If the ac
2a230 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b 53 51  tion code is [SQ
2a240 4c 49 54 45 5f 52 45 41 44 5d 0a 2a 2a 20 61 6e  LITE_READ].** an
2a250 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  d the callback r
2a260 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 49  eturns [SQLITE_I
2a270 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74 68 65 0a  GNORE] then the.
2a280 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
2a290 74 65 6d 65 6e 74 5d 20 73 74 61 74 65 6d 65 6e  tement] statemen
2a2a0 74 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64  t is constructed
2a2b0 20 74 6f 20 73 75 62 73 74 69 74 75 74 65 0a 2a   to substitute.*
2a2c0 2a 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69  * a NULL value i
2a2d0 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 74  n place of the t
2a2e0 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 68 61 74  able column that
2a2f0 20 77 6f 75 6c 64 20 68 61 76 65 0a 2a 2a 20 62   would have.** b
2a300 65 65 6e 20 72 65 61 64 20 69 66 20 5b 53 51 4c  een read if [SQL
2a310 49 54 45 5f 4f 4b 5d 20 68 61 64 20 62 65 65 6e  ITE_OK] had been
2a320 20 72 65 74 75 72 6e 65 64 2e 20 20 54 68 65 20   returned.  The 
2a330 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 0a  [SQLITE_IGNORE].
2a340 2a 2a 20 72 65 74 75 72 6e 20 63 61 6e 20 62 65  ** return can be
2a350 20 75 73 65 64 20 74 6f 20 64 65 6e 79 20 61 6e   used to deny an
2a360 20 75 6e 74 72 75 73 74 65 64 20 75 73 65 72 20   untrusted user 
2a370 61 63 63 65 73 73 20 74 6f 20 69 6e 64 69 76 69  access to indivi
2a380 64 75 61 6c 0a 2a 2a 20 63 6f 6c 75 6d 6e 73 20  dual.** columns 
2a390 6f 66 20 61 20 74 61 62 6c 65 2e 0a 2a 2a 20 5e  of a table..** ^
2a3a0 57 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73 20  When a table is 
2a3b0 72 65 66 65 72 65 6e 63 65 64 20 62 79 20 61 20  referenced by a 
2a3c0 5b 53 45 4c 45 43 54 5d 20 62 75 74 20 6e 6f 20  [SELECT] but no 
2a3d0 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73 20 61 72  column values ar
2a3e0 65 0a 2a 2a 20 65 78 74 72 61 63 74 65 64 20 66  e.** extracted f
2a3f0 72 6f 6d 20 74 68 61 74 20 74 61 62 6c 65 20 28  rom that table (
2a400 66 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e 20 61  for example in a
2a410 20 71 75 65 72 79 20 6c 69 6b 65 0a 2a 2a 20 22   query like.** "
2a420 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20  SELECT count(*) 
2a430 46 52 4f 4d 20 74 61 62 22 29 20 74 68 65 6e 20  FROM tab") then 
2a440 74 68 65 20 5b 53 51 4c 49 54 45 5f 52 45 41 44  the [SQLITE_READ
2a450 5d 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  ] authorizer cal
2a460 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 69 6e 76 6f  lback.** is invo
2a470 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20 74 68 61  ked once for tha
2a480 74 20 74 61 62 6c 65 20 77 69 74 68 20 61 20 63  t table with a c
2a490 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 68 61 74 20  olumn name that 
2a4a0 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  is an empty stri
2a4b0 6e 67 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 61  ng..** ^If the a
2a4c0 63 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 5b 53  ction code is [S
2a4d0 51 4c 49 54 45 5f 44 45 4c 45 54 45 5d 20 61 6e  QLITE_DELETE] an
2a4e0 64 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 72  d the callback r
2a4f0 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54  eturns.** [SQLIT
2a500 45 5f 49 47 4e 4f 52 45 5d 20 74 68 65 6e 20 74  E_IGNORE] then t
2a510 68 65 20 5b 44 45 4c 45 54 45 5d 20 6f 70 65 72  he [DELETE] oper
2a520 61 74 69 6f 6e 20 70 72 6f 63 65 65 64 73 20 62  ation proceeds b
2a530 75 74 20 74 68 65 0a 2a 2a 20 5b 74 72 75 6e 63  ut the.** [trunc
2a540 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  ate optimization
2a550 5d 20 69 73 20 64 69 73 61 62 6c 65 64 20 61 6e  ] is disabled an
2a560 64 20 61 6c 6c 20 72 6f 77 73 20 61 72 65 20 64  d all rows are d
2a570 65 6c 65 74 65 64 20 69 6e 64 69 76 69 64 75 61  eleted individua
2a580 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 41 6e 20 61 75  lly..**.** An au
2a590 74 68 6f 72 69 7a 65 72 20 69 73 20 75 73 65 64  thorizer is used
2a5a0 20 77 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f 70   when [sqlite3_p
2a5b0 72 65 70 61 72 65 20 7c 20 70 72 65 70 61 72 69  repare | prepari
2a5c0 6e 67 5d 0a 2a 2a 20 53 51 4c 20 73 74 61 74 65  ng].** SQL state
2a5d0 6d 65 6e 74 73 20 66 72 6f 6d 20 61 6e 20 75 6e  ments from an un
2a5e0 74 72 75 73 74 65 64 20 73 6f 75 72 63 65 2c 20  trusted source, 
2a5f0 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74  to ensure that t
2a600 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  he SQL statement
2a610 73 0a 2a 2a 20 64 6f 20 6e 6f 74 20 74 72 79 20  s.** do not try 
2a620 74 6f 20 61 63 63 65 73 73 20 64 61 74 61 20 74  to access data t
2a630 68 65 79 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f  hey are not allo
2a640 77 65 64 20 74 6f 20 73 65 65 2c 20 6f 72 20 74  wed to see, or t
2a650 68 61 74 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a  hat they do not.
2a660 2a 2a 20 74 72 79 20 74 6f 20 65 78 65 63 75 74  ** try to execut
2a670 65 20 6d 61 6c 69 63 69 6f 75 73 20 73 74 61 74  e malicious stat
2a680 65 6d 65 6e 74 73 20 74 68 61 74 20 64 61 6d 61  ements that dama
2a690 67 65 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ge the database.
2a6a0 20 20 46 6f 72 0a 2a 2a 20 65 78 61 6d 70 6c 65    For.** example
2a6b0 2c 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  , an application
2a6c0 20 6d 61 79 20 61 6c 6c 6f 77 20 61 20 75 73 65   may allow a use
2a6d0 72 20 74 6f 20 65 6e 74 65 72 20 61 72 62 69 74  r to enter arbit
2a6e0 72 61 72 79 0a 2a 2a 20 53 51 4c 20 71 75 65 72  rary.** SQL quer
2a6f0 69 65 73 20 66 6f 72 20 65 76 61 6c 75 61 74 69  ies for evaluati
2a700 6f 6e 20 62 79 20 61 20 64 61 74 61 62 61 73 65  on by a database
2a710 2e 20 20 42 75 74 20 74 68 65 20 61 70 70 6c 69  .  But the appli
2a720 63 61 74 69 6f 6e 20 64 6f 65 73 0a 2a 2a 20 6e  cation does.** n
2a730 6f 74 20 77 61 6e 74 20 74 68 65 20 75 73 65 72  ot want the user
2a740 20 74 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 6d   to be able to m
2a750 61 6b 65 20 61 72 62 69 74 72 61 72 79 20 63 68  ake arbitrary ch
2a760 61 6e 67 65 73 20 74 6f 20 74 68 65 0a 2a 2a 20  anges to the.** 
2a770 64 61 74 61 62 61 73 65 2e 20 20 41 6e 20 61 75  database.  An au
2a780 74 68 6f 72 69 7a 65 72 20 63 6f 75 6c 64 20 74  thorizer could t
2a790 68 65 6e 20 62 65 20 70 75 74 20 69 6e 20 70 6c  hen be put in pl
2a7a0 61 63 65 20 77 68 69 6c 65 20 74 68 65 0a 2a 2a  ace while the.**
2a7b0 20 75 73 65 72 2d 65 6e 74 65 72 65 64 20 53 51   user-entered SQ
2a7c0 4c 20 69 73 20 62 65 69 6e 67 20 5b 73 71 6c 69  L is being [sqli
2a7d0 74 65 33 5f 70 72 65 70 61 72 65 20 7c 20 70 72  te3_prepare | pr
2a7e0 65 70 61 72 65 64 5d 20 74 68 61 74 0a 2a 2a 20  epared] that.** 
2a7f0 64 69 73 61 6c 6c 6f 77 73 20 65 76 65 72 79 74  disallows everyt
2a800 68 69 6e 67 20 65 78 63 65 70 74 20 5b 53 45 4c  hing except [SEL
2a810 45 43 54 5d 20 73 74 61 74 65 6d 65 6e 74 73 2e  ECT] statements.
2a820 0a 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  .**.** Applicati
2a830 6f 6e 73 20 74 68 61 74 20 6e 65 65 64 20 74 6f  ons that need to
2a840 20 70 72 6f 63 65 73 73 20 53 51 4c 20 66 72 6f   process SQL fro
2a850 6d 20 75 6e 74 72 75 73 74 65 64 20 73 6f 75 72  m untrusted sour
2a860 63 65 73 0a 2a 2a 20 6d 69 67 68 74 20 61 6c 73  ces.** might als
2a870 6f 20 63 6f 6e 73 69 64 65 72 20 6c 6f 77 65 72  o consider lower
2a880 69 6e 67 20 72 65 73 6f 75 72 63 65 20 6c 69 6d  ing resource lim
2a890 69 74 73 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  its using [sqlit
2a8a0 65 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20 61  e3_limit()].** a
2a8b0 6e 64 20 6c 69 6d 69 74 69 6e 67 20 64 61 74 61  nd limiting data
2a8c0 62 61 73 65 20 73 69 7a 65 20 75 73 69 6e 67 20  base size using 
2a8d0 74 68 65 20 5b 6d 61 78 5f 70 61 67 65 5f 63 6f  the [max_page_co
2a8e0 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 0a 2a 2a  unt] [PRAGMA].**
2a8f0 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
2a900 75 73 69 6e 67 20 61 6e 20 61 75 74 68 6f 72 69  using an authori
2a910 7a 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 28 4f 6e 6c  zer..**.** ^(Onl
2a920 79 20 61 20 73 69 6e 67 6c 65 20 61 75 74 68 6f  y a single autho
2a930 72 69 7a 65 72 20 63 61 6e 20 62 65 20 69 6e 20  rizer can be in 
2a940 70 6c 61 63 65 20 6f 6e 20 61 20 64 61 74 61 62  place on a datab
2a950 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase connection.*
2a960 2a 20 61 74 20 61 20 74 69 6d 65 2e 20 20 45 61  * at a time.  Ea
2a970 63 68 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74  ch call to sqlit
2a980 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
2a990 72 20 6f 76 65 72 72 69 64 65 73 20 74 68 65 0a  r overrides the.
2a9a0 2a 2a 20 70 72 65 76 69 6f 75 73 20 63 61 6c 6c  ** previous call
2a9b0 2e 29 5e 20 20 5e 44 69 73 61 62 6c 65 20 74 68  .)^  ^Disable th
2a9c0 65 20 61 75 74 68 6f 72 69 7a 65 72 20 62 79 20  e authorizer by 
2a9d0 69 6e 73 74 61 6c 6c 69 6e 67 20 61 20 4e 55 4c  installing a NUL
2a9e0 4c 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 54  L callback..** T
2a9f0 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 69 73  he authorizer is
2aa00 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
2aa10 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ault..**.** The 
2aa20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62  authorizer callb
2aa30 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64 6f 20  ack must not do 
2aa40 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 77 69  anything that wi
2aa50 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74 68 65  ll modify.** the
2aa60 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2aa70 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b 65  tion that invoke
2aa80 64 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  d the authorizer
2aa90 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 4e 6f   callback..** No
2aaa0 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33  te that [sqlite3
2aab0 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61  _prepare_v2()] a
2aac0 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  nd [sqlite3_step
2aad0 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66 79 20  ()] both modify 
2aae0 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62 61 73  their.** databas
2aaf0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f  e connections fo
2ab00 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66  r the meaning of
2ab10 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74 68 69   "modify" in thi
2ab20 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a 2a 0a  s paragraph..**.
2ab30 2a 2a 20 5e 57 68 65 6e 20 5b 73 71 6c 69 74 65  ** ^When [sqlite
2ab40 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
2ab50 69 73 20 75 73 65 64 20 74 6f 20 70 72 65 70 61  is used to prepa
2ab60 72 65 20 61 20 73 74 61 74 65 6d 65 6e 74 2c 20  re a statement, 
2ab70 74 68 65 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  the.** statement
2ab80 20 6d 69 67 68 74 20 62 65 20 72 65 2d 70 72 65   might be re-pre
2ab90 70 61 72 65 64 20 64 75 72 69 6e 67 20 5b 73 71  pared during [sq
2aba0 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 64 75  lite3_step()] du
2abb0 65 20 74 6f 20 61 20 0a 2a 2a 20 73 63 68 65 6d  e to a .** schem
2abc0 61 20 63 68 61 6e 67 65 2e 20 20 48 65 6e 63 65  a change.  Hence
2abd0 2c 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  , the applicatio
2abe0 6e 20 73 68 6f 75 6c 64 20 65 6e 73 75 72 65 20  n should ensure 
2abf0 74 68 61 74 20 74 68 65 0a 2a 2a 20 63 6f 72 72  that the.** corr
2ac00 65 63 74 20 61 75 74 68 6f 72 69 7a 65 72 20 63  ect authorizer c
2ac10 61 6c 6c 62 61 63 6b 20 72 65 6d 61 69 6e 73 20  allback remains 
2ac20 69 6e 20 70 6c 61 63 65 20 64 75 72 69 6e 67 20  in place during 
2ac30 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  the [sqlite3_ste
2ac40 70 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 4e 6f 74  p()]..**.** ^Not
2ac50 65 20 74 68 61 74 20 74 68 65 20 61 75 74 68 6f  e that the autho
2ac60 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  rizer callback i
2ac70 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 6c 79 20 64  s invoked only d
2ac80 75 72 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  uring.** [sqlite
2ac90 33 5f 70 72 65 70 61 72 65 28 29 5d 20 6f 72 20  3_prepare()] or 
2aca0 69 74 73 20 76 61 72 69 61 6e 74 73 2e 20 20 41  its variants.  A
2acb0 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 69 73 20  uthorization is 
2acc0 6e 6f 74 0a 2a 2a 20 70 65 72 66 6f 72 6d 65 64  not.** performed
2acd0 20 64 75 72 69 6e 67 20 73 74 61 74 65 6d 65 6e   during statemen
2ace0 74 20 65 76 61 6c 75 61 74 69 6f 6e 20 69 6e 20  t evaluation in 
2acf0 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
2ad00 2c 20 75 6e 6c 65 73 73 0a 2a 2a 20 61 73 20 73  , unless.** as s
2ad10 74 61 74 65 64 20 69 6e 20 74 68 65 20 70 72 65  tated in the pre
2ad20 76 69 6f 75 73 20 70 61 72 61 67 72 61 70 68 2c  vious paragraph,
2ad30 20 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20   sqlite3_step() 
2ad40 69 6e 76 6f 6b 65 73 0a 2a 2a 20 73 71 6c 69 74  invokes.** sqlit
2ad50 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 20  e3_prepare_v2() 
2ad60 74 6f 20 72 65 70 72 65 70 61 72 65 20 61 20 73  to reprepare a s
2ad70 74 61 74 65 6d 65 6e 74 20 61 66 74 65 72 20 61  tatement after a
2ad80 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65 2e 0a   schema change..
2ad90 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  */.SQLITE_API in
2ada0 74 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  t sqlite3_set_au
2adb0 74 68 6f 72 69 7a 65 72 28 0a 20 20 73 71 6c 69  thorizer(.  sqli
2adc0 74 65 33 2a 2c 0a 20 20 69 6e 74 20 28 2a 78 41  te3*,.  int (*xA
2add0 75 74 68 29 28 76 6f 69 64 2a 2c 69 6e 74 2c 63  uth)(void*,int,c
2ade0 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73 74  onst char*,const
2adf0 20 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61   char*,const cha
2ae00 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 29 2c  r*,const char*),
2ae10 0a 20 20 76 6f 69 64 20 2a 70 55 73 65 72 44 61  .  void *pUserDa
2ae20 74 61 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ta.);../*.** CAP
2ae30 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a 65  I3REF: Authorize
2ae40 72 20 52 65 74 75 72 6e 20 43 6f 64 65 73 0a 2a  r Return Codes.*
2ae50 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  *.** The [sqlite
2ae60 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
2ae70 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61   | authorizer ca
2ae80 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 5d  llback function]
2ae90 20 6d 75 73 74 0a 2a 2a 20 72 65 74 75 72 6e 20   must.** return 
2aea0 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45 5f 4f  either [SQLITE_O
2aeb0 4b 5d 20 6f 72 20 6f 6e 65 20 6f 66 20 74 68 65  K] or one of the
2aec0 73 65 20 74 77 6f 20 63 6f 6e 73 74 61 6e 74 73  se two constants
2aed0 20 69 6e 20 6f 72 64 65 72 0a 2a 2a 20 74 6f 20   in order.** to 
2aee0 73 69 67 6e 61 6c 20 53 51 4c 69 74 65 20 77 68  signal SQLite wh
2aef0 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
2af00 20 61 63 74 69 6f 6e 20 69 73 20 70 65 72 6d 69   action is permi
2af10 74 74 65 64 2e 20 20 53 65 65 20 74 68 65 0a 2a  tted.  See the.*
2af20 2a 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  * [sqlite3_set_a
2af30 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75 74 68  uthorizer | auth
2af40 6f 72 69 7a 65 72 20 64 6f 63 75 6d 65 6e 74 61  orizer documenta
2af50 74 69 6f 6e 5d 20 66 6f 72 20 61 64 64 69 74 69  tion] for additi
2af60 6f 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74  onal.** informat
2af70 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20  ion..**.** Note 
2af80 74 68 61 74 20 53 51 4c 49 54 45 5f 49 47 4e 4f  that SQLITE_IGNO
2af90 52 45 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20  RE is also used 
2afa0 61 73 20 61 20 5b 63 6f 6e 66 6c 69 63 74 20 72  as a [conflict r
2afb0 65 73 6f 6c 75 74 69 6f 6e 20 6d 6f 64 65 5d 0a  esolution mode].
2afc0 2a 2a 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d  ** returned from
2afd0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 74   the [sqlite3_vt
2afe0 61 62 5f 6f 6e 5f 63 6f 6e 66 6c 69 63 74 28 29  ab_on_conflict()
2aff0 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2f 0a  ] interface..*/.
2b000 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2b010 45 4e 59 20 20 20 31 20 20 20 2f 2a 20 41 62 6f  ENY   1   /* Abo
2b020 72 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  rt the SQL state
2b030 6d 65 6e 74 20 77 69 74 68 20 61 6e 20 65 72 72  ment with an err
2b040 6f 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  or */.#define SQ
2b050 4c 49 54 45 5f 49 47 4e 4f 52 45 20 32 20 20 20  LITE_IGNORE 2   
2b060 2f 2a 20 44 6f 6e 27 74 20 61 6c 6c 6f 77 20 61  /* Don't allow a
2b070 63 63 65 73 73 2c 20 62 75 74 20 64 6f 6e 27 74  ccess, but don't
2b080 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65 72 72   generate an err
2b090 6f 72 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  or */../*.** CAP
2b0a0 49 33 52 45 46 3a 20 41 75 74 68 6f 72 69 7a 65  I3REF: Authorize
2b0b0 72 20 41 63 74 69 6f 6e 20 43 6f 64 65 73 0a 2a  r Action Codes.*
2b0c0 2a 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  *.** The [sqlite
2b0d0 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
2b0e0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 72 65  ()] interface re
2b0f0 67 69 73 74 65 72 73 20 61 20 63 61 6c 6c 62 61  gisters a callba
2b100 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 74  ck function.** t
2b110 68 61 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 74  hat is invoked t
2b120 6f 20 61 75 74 68 6f 72 69 7a 65 20 63 65 72 74  o authorize cert
2b130 61 69 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ain SQL statemen
2b140 74 20 61 63 74 69 6f 6e 73 2e 20 20 54 68 65 0a  t actions.  The.
2b150 2a 2a 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  ** second parame
2b160 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c 6c 62  ter to the callb
2b170 61 63 6b 20 69 73 20 61 6e 20 69 6e 74 65 67 65  ack is an intege
2b180 72 20 63 6f 64 65 20 74 68 61 74 20 73 70 65 63  r code that spec
2b190 69 66 69 65 73 0a 2a 2a 20 77 68 61 74 20 61 63  ifies.** what ac
2b1a0 74 69 6f 6e 20 69 73 20 62 65 69 6e 67 20 61 75  tion is being au
2b1b0 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65 73 65  thorized.  These
2b1c0 20 61 72 65 20 74 68 65 20 69 6e 74 65 67 65 72   are the integer
2b1d0 20 61 63 74 69 6f 6e 20 63 6f 64 65 73 20 74 68   action codes th
2b1e0 61 74 0a 2a 2a 20 74 68 65 20 61 75 74 68 6f 72  at.** the author
2b1f0 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 61  izer callback ma
2b200 79 20 62 65 20 70 61 73 73 65 64 2e 0a 2a 2a 0a  y be passed..**.
2b210 2a 2a 20 54 68 65 73 65 20 61 63 74 69 6f 6e 20  ** These action 
2b220 63 6f 64 65 20 76 61 6c 75 65 73 20 73 69 67 6e  code values sign
2b230 69 66 79 20 77 68 61 74 20 6b 69 6e 64 20 6f 66  ify what kind of
2b240 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 74 6f   operation is to
2b250 20 62 65 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65   be.** authorize
2b260 64 2e 20 20 54 68 65 20 33 72 64 20 61 6e 64 20  d.  The 3rd and 
2b270 34 74 68 20 70 61 72 61 6d 65 74 65 72 73 20 74  4th parameters t
2b280 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a 61 74  o the authorizat
2b290 69 6f 6e 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20  ion.** callback 
2b2a0 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65  function will be
2b2b0 20 70 61 72 61 6d 65 74 65 72 73 20 6f 72 20 4e   parameters or N
2b2c0 55 4c 4c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ULL depending on
2b2d0 20 77 68 69 63 68 20 6f 66 20 74 68 65 73 65 0a   which of these.
2b2e0 2a 2a 20 63 6f 64 65 73 20 69 73 20 75 73 65 64  ** codes is used
2b2f0 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70   as the second p
2b300 61 72 61 6d 65 74 65 72 2e 20 20 5e 28 54 68 65  arameter.  ^(The
2b310 20 35 74 68 20 70 61 72 61 6d 65 74 65 72 20 74   5th parameter t
2b320 6f 20 74 68 65 0a 2a 2a 20 61 75 74 68 6f 72 69  o the.** authori
2b330 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
2b340 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
2b350 64 61 74 61 62 61 73 65 20 28 22 6d 61 69 6e 22  database ("main"
2b360 2c 20 22 74 65 6d 70 22 2c 0a 2a 2a 20 65 74 63  , "temp",.** etc
2b370 2e 29 20 69 66 20 61 70 70 6c 69 63 61 62 6c 65  .) if applicable
2b380 2e 29 5e 20 20 5e 54 68 65 20 36 74 68 20 70 61  .)^  ^The 6th pa
2b390 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 61  rameter to the a
2b3a0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2b3b0 63 6b 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d  ck.** is the nam
2b3c0 65 20 6f 66 20 74 68 65 20 69 6e 6e 65 72 2d 6d  e of the inner-m
2b3d0 6f 73 74 20 74 72 69 67 67 65 72 20 6f 72 20 76  ost trigger or v
2b3e0 69 65 77 20 74 68 61 74 20 69 73 20 72 65 73 70  iew that is resp
2b3f0 6f 6e 73 69 62 6c 65 20 66 6f 72 0a 2a 2a 20 74  onsible for.** t
2b400 68 65 20 61 63 63 65 73 73 20 61 74 74 65 6d 70  he access attemp
2b410 74 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 69  t or NULL if thi
2b420 73 20 61 63 63 65 73 73 20 61 74 74 65 6d 70 74  s access attempt
2b430 20 69 73 20 64 69 72 65 63 74 6c 79 20 66 72 6f   is directly fro
2b440 6d 0a 2a 2a 20 74 6f 70 2d 6c 65 76 65 6c 20 53  m.** top-level S
2b450 51 4c 20 63 6f 64 65 2e 0a 2a 2f 0a 2f 2a 2a 2a  QL code..*/./***
2b460 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2b470 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2b480 2a 2a 2a 2a 2a 2a 2a 2a 20 33 72 64 20 2a 2a 2a  ******** 3rd ***
2b490 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 34 74 68 20 2a 2a  ********* 4th **
2b4a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65 66 69  *********/.#defi
2b4b0 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45  ne SQLITE_CREATE
2b4c0 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20 20  _INDEX          
2b4d0 31 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d  1   /* Index Nam
2b4e0 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  e      Table Nam
2b4f0 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2b500 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
2b510 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 32  TABLE          2
2b520 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2b530 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2b540 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2b550 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54   SQLITE_CREATE_T
2b560 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 33 20  EMP_INDEX     3 
2b570 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20    /* Index Name 
2b580 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20       Table Name 
2b590 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2b5a0 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45  SQLITE_CREATE_TE
2b5b0 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 34 20 20  MP_TABLE     4  
2b5c0 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
2b5d0 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2b5e0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2b5f0 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d  QLITE_CREATE_TEM
2b600 50 5f 54 52 49 47 47 45 52 20 20 20 35 20 20 20  P_TRIGGER   5   
2b610 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20  /* Trigger Name 
2b620 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
2b630 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2b640 4c 49 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50  LITE_CREATE_TEMP
2b650 5f 56 49 45 57 20 20 20 20 20 20 36 20 20 20 2f  _VIEW      6   /
2b660 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20  * View Name     
2b670 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2b680 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2b690 49 54 45 5f 43 52 45 41 54 45 5f 54 52 49 47 47  ITE_CREATE_TRIGG
2b6a0 45 52 20 20 20 20 20 20 20 20 37 20 20 20 2f 2a  ER        7   /*
2b6b0 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20   Trigger Name   
2b6c0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2b6d0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2b6e0 54 45 5f 43 52 45 41 54 45 5f 56 49 45 57 20 20  TE_CREATE_VIEW  
2b6f0 20 20 20 20 20 20 20 20 20 38 20 20 20 2f 2a 20           8   /* 
2b700 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20  View Name       
2b710 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2b720 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2b730 45 5f 44 45 4c 45 54 45 20 20 20 20 20 20 20 20  E_DELETE        
2b740 20 20 20 20 20 20 20 20 39 20 20 20 2f 2a 20 54          9   /* T
2b750 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2b760 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2b770 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b780 5f 44 52 4f 50 5f 49 4e 44 45 58 20 20 20 20 20  _DROP_INDEX     
2b790 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 49 6e        10   /* In
2b7a0 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
2b7b0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2b7c0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b7d0 44 52 4f 50 5f 54 41 42 4c 45 20 20 20 20 20 20  DROP_TABLE      
2b7e0 20 20 20 20 20 31 31 20 20 20 2f 2a 20 54 61 62       11   /* Tab
2b7f0 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
2b800 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2b810 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
2b820 52 4f 50 5f 54 45 4d 50 5f 49 4e 44 45 58 20 20  ROP_TEMP_INDEX  
2b830 20 20 20 20 31 32 20 20 20 2f 2a 20 49 6e 64 65      12   /* Inde
2b840 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61 62 6c  x Name      Tabl
2b850 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
2b860 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52  define SQLITE_DR
2b870 4f 50 5f 54 45 4d 50 5f 54 41 42 4c 45 20 20 20  OP_TEMP_TABLE   
2b880 20 20 20 31 33 20 20 20 2f 2a 20 54 61 62 6c 65     13   /* Table
2b890 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20   Name      NULL 
2b8a0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2b8b0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
2b8c0 50 5f 54 45 4d 50 5f 54 52 49 47 47 45 52 20 20  P_TEMP_TRIGGER  
2b8d0 20 20 31 34 20 20 20 2f 2a 20 54 72 69 67 67 65    14   /* Trigge
2b8e0 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
2b8f0 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
2b900 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
2b910 5f 54 45 4d 50 5f 56 49 45 57 20 20 20 20 20 20  _TEMP_VIEW      
2b920 20 31 35 20 20 20 2f 2a 20 56 69 65 77 20 4e 61   15   /* View Na
2b930 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
2b940 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
2b950 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
2b960 54 52 49 47 47 45 52 20 20 20 20 20 20 20 20 20  TRIGGER         
2b970 31 36 20 20 20 2f 2a 20 54 72 69 67 67 65 72 20  16   /* Trigger 
2b980 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20 4e 61  Name    Table Na
2b990 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69  me      */.#defi
2b9a0 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56  ne SQLITE_DROP_V
2b9b0 49 45 57 20 20 20 20 20 20 20 20 20 20 20 20 31  IEW            1
2b9c0 37 20 20 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65  7   /* View Name
2b9d0 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20         NULL     
2b9e0 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
2b9f0 65 20 53 51 4c 49 54 45 5f 49 4e 53 45 52 54 20  e SQLITE_INSERT 
2ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 38                18
2ba10 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2ba20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2ba30 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2ba40 20 53 51 4c 49 54 45 5f 50 52 41 47 4d 41 20 20   SQLITE_PRAGMA  
2ba50 20 20 20 20 20 20 20 20 20 20 20 20 20 31 39 20               19 
2ba60 20 20 2f 2a 20 50 72 61 67 6d 61 20 4e 61 6d 65    /* Pragma Name
2ba70 20 20 20 20 20 31 73 74 20 61 72 67 20 6f 72 20       1st arg or 
2ba80 4e 55 4c 4c 20 2a 2f 0a 23 64 65 66 69 6e 65 20  NULL */.#define 
2ba90 53 51 4c 49 54 45 5f 52 45 41 44 20 20 20 20 20  SQLITE_READ     
2baa0 20 20 20 20 20 20 20 20 20 20 20 20 32 30 20 20              20  
2bab0 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
2bac0 20 20 20 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20      Column Name 
2bad0 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2bae0 51 4c 49 54 45 5f 53 45 4c 45 43 54 20 20 20 20  QLITE_SELECT    
2baf0 20 20 20 20 20 20 20 20 20 20 20 32 31 20 20 20             21   
2bb00 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20  /* NULL         
2bb10 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20     NULL         
2bb20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2bb30 4c 49 54 45 5f 54 52 41 4e 53 41 43 54 49 4f 4e  LITE_TRANSACTION
2bb40 20 20 20 20 20 20 20 20 20 20 32 32 20 20 20 2f            22   /
2bb50 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20 20 20 20  * Operation     
2bb60 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2bb70 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2bb80 49 54 45 5f 55 50 44 41 54 45 20 20 20 20 20 20  ITE_UPDATE      
2bb90 20 20 20 20 20 20 20 20 20 32 33 20 20 20 2f 2a           23   /*
2bba0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2bbb0 20 43 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20   Column Name    
2bbc0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2bbd0 54 45 5f 41 54 54 41 43 48 20 20 20 20 20 20 20  TE_ATTACH       
2bbe0 20 20 20 20 20 20 20 20 32 34 20 20 20 2f 2a 20          24   /* 
2bbf0 46 69 6c 65 6e 61 6d 65 20 20 20 20 20 20 20 20  Filename        
2bc00 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2bc10 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2bc20 45 5f 44 45 54 41 43 48 20 20 20 20 20 20 20 20  E_DETACH        
2bc30 20 20 20 20 20 20 20 32 35 20 20 20 2f 2a 20 44         25   /* D
2bc40 61 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 4e  atabase Name   N
2bc50 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2bc60 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2bc70 5f 41 4c 54 45 52 5f 54 41 42 4c 45 20 20 20 20  _ALTER_TABLE    
2bc80 20 20 20 20 20 20 32 36 20 20 20 2f 2a 20 44 61        26   /* Da
2bc90 74 61 62 61 73 65 20 4e 61 6d 65 20 20 20 54 61  tabase Name   Ta
2bca0 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2bcb0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2bcc0 52 45 49 4e 44 45 58 20 20 20 20 20 20 20 20 20  REINDEX         
2bcd0 20 20 20 20 20 32 37 20 20 20 2f 2a 20 49 6e 64       27   /* Ind
2bce0 65 78 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  ex Name      NUL
2bcf0 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2bd00 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
2bd10 4e 41 4c 59 5a 45 20 20 20 20 20 20 20 20 20 20  NALYZE          
2bd20 20 20 20 20 32 38 20 20 20 2f 2a 20 54 61 62 6c      28   /* Tabl
2bd30 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c  e Name      NULL
2bd40 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
2bd50 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
2bd60 45 41 54 45 5f 56 54 41 42 4c 45 20 20 20 20 20  EATE_VTABLE     
2bd70 20 20 20 32 39 20 20 20 2f 2a 20 54 61 62 6c 65     29   /* Table
2bd80 20 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c   Name      Modul
2bd90 65 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64  e Name     */.#d
2bda0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f  efine SQLITE_DRO
2bdb0 50 5f 56 54 41 42 4c 45 20 20 20 20 20 20 20 20  P_VTABLE        
2bdc0 20 20 33 30 20 20 20 2f 2a 20 54 61 62 6c 65 20    30   /* Table 
2bdd0 4e 61 6d 65 20 20 20 20 20 20 4d 6f 64 75 6c 65  Name      Module
2bde0 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65   Name     */.#de
2bdf0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 55 4e 43  fine SQLITE_FUNC
2be00 54 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20  TION            
2be10 20 33 31 20 20 20 2f 2a 20 4e 55 4c 4c 20 20 20   31   /* NULL   
2be20 20 20 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f           Functio
2be30 6e 20 4e 61 6d 65 20 20 20 2a 2f 0a 23 64 65 66  n Name   */.#def
2be40 69 6e 65 20 53 51 4c 49 54 45 5f 53 41 56 45 50  ine SQLITE_SAVEP
2be50 4f 49 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  OINT            
2be60 33 32 20 20 20 2f 2a 20 4f 70 65 72 61 74 69 6f  32   /* Operatio
2be70 6e 20 20 20 20 20 20 20 53 61 76 65 70 6f 69 6e  n       Savepoin
2be80 74 20 4e 61 6d 65 20 20 2a 2f 0a 23 64 65 66 69  t Name  */.#defi
2be90 6e 65 20 53 51 4c 49 54 45 5f 43 4f 50 59 20 20  ne SQLITE_COPY  
2bea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2beb0 30 20 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72  0   /* No longer
2bec0 20 75 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65   used */.#define
2bed0 20 53 51 4c 49 54 45 5f 52 45 43 55 52 53 49 56   SQLITE_RECURSIV
2bee0 45 20 20 20 20 20 20 20 20 20 20 20 20 33 33 20  E            33 
2bef0 20 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20    /* NULL       
2bf00 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
2bf10 20 20 20 20 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43       */../*.** C
2bf20 41 50 49 33 52 45 46 3a 20 54 72 61 63 69 6e 67  API3REF: Tracing
2bf30 20 41 6e 64 20 50 72 6f 66 69 6c 69 6e 67 20 46   And Profiling F
2bf40 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54 48  unctions.** METH
2bf50 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
2bf60 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
2bf70 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64 2e   are deprecated.
2bf80 20 55 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65   Use the [sqlite
2bf90 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 69 6e  3_trace_v2()] in
2bfa0 74 65 72 66 61 63 65 0a 2a 2a 20 69 6e 73 74 65  terface.** inste
2bfb0 61 64 20 6f 66 20 74 68 65 20 72 6f 75 74 69 6e  ad of the routin
2bfc0 65 73 20 64 65 73 63 72 69 62 65 64 20 68 65 72  es described her
2bfd0 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  e..**.** These r
2bfe0 6f 75 74 69 6e 65 73 20 72 65 67 69 73 74 65 72  outines register
2bff0 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
2c000 6f 6e 73 20 74 68 61 74 20 63 61 6e 20 62 65 20  ons that can be 
2c010 75 73 65 64 20 66 6f 72 0a 2a 2a 20 74 72 61 63  used for.** trac
2c020 69 6e 67 20 61 6e 64 20 70 72 6f 66 69 6c 69 6e  ing and profilin
2c030 67 20 74 68 65 20 65 78 65 63 75 74 69 6f 6e 20  g the execution 
2c040 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  of SQL statement
2c050 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63 61  s..**.** ^The ca
2c060 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20  llback function 
2c070 72 65 67 69 73 74 65 72 65 64 20 62 79 20 73 71  registered by sq
2c080 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 69 73  lite3_trace() is
2c090 20 69 6e 76 6f 6b 65 64 20 61 74 0a 2a 2a 20 76   invoked at.** v
2c0a0 61 72 69 6f 75 73 20 74 69 6d 65 73 20 77 68 65  arious times whe
2c0b0 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  n an SQL stateme
2c0c0 6e 74 20 69 73 20 62 65 69 6e 67 20 72 75 6e 20  nt is being run 
2c0d0 62 79 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  by [sqlite3_step
2c0e0 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ()]..** ^The sql
2c0f0 69 74 65 33 5f 74 72 61 63 65 28 29 20 63 61 6c  ite3_trace() cal
2c100 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
2c110 20 77 69 74 68 20 61 20 55 54 46 2d 38 20 72 65   with a UTF-8 re
2c120 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65 0a 2a  ndering of the.*
2c130 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  * SQL statement 
2c140 74 65 78 74 20 61 73 20 74 68 65 20 73 74 61 74  text as the stat
2c150 65 6d 65 6e 74 20 66 69 72 73 74 20 62 65 67 69  ement first begi
2c160 6e 73 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a  ns executing..**
2c170 20 5e 28 41 64 64 69 74 69 6f 6e 61 6c 20 73 71   ^(Additional sq
2c180 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20 63 61  lite3_trace() ca
2c190 6c 6c 62 61 63 6b 73 20 6d 69 67 68 74 20 6f 63  llbacks might oc
2c1a0 63 75 72 0a 2a 2a 20 61 73 20 65 61 63 68 20 74  cur.** as each t
2c1b0 72 69 67 67 65 72 65 64 20 73 75 62 70 72 6f 67  riggered subprog
2c1c0 72 61 6d 20 69 73 20 65 6e 74 65 72 65 64 2e 20  ram is entered. 
2c1d0 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 73 20 66   The callbacks f
2c1e0 6f 72 20 74 72 69 67 67 65 72 73 0a 2a 2a 20 63  or triggers.** c
2c1f0 6f 6e 74 61 69 6e 20 61 20 55 54 46 2d 38 20 53  ontain a UTF-8 S
2c200 51 4c 20 63 6f 6d 6d 65 6e 74 20 74 68 61 74 20  QL comment that 
2c210 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 74  identifies the t
2c220 72 69 67 67 65 72 2e 29 5e 0a 2a 2a 0a 2a 2a 20  rigger.)^.**.** 
2c230 54 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43  The [SQLITE_TRAC
2c240 45 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f  E_SIZE_LIMIT] co
2c250 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
2c260 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  n can be used to
2c270 20 6c 69 6d 69 74 0a 2a 2a 20 74 68 65 20 6c 65   limit.** the le
2c280 6e 67 74 68 20 6f 66 20 5b 62 6f 75 6e 64 20 70  ngth of [bound p
2c290 61 72 61 6d 65 74 65 72 5d 20 65 78 70 61 6e 73  arameter] expans
2c2a0 69 6f 6e 20 69 6e 20 74 68 65 20 6f 75 74 70 75  ion in the outpu
2c2b0 74 20 6f 66 20 73 71 6c 69 74 65 33 5f 74 72 61  t of sqlite3_tra
2c2c0 63 65 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ce()..**.** ^The
2c2d0 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69   callback functi
2c2e0 6f 6e 20 72 65 67 69 73 74 65 72 65 64 20 62 79  on registered by
2c2f0 20 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65   sqlite3_profile
2c300 28 29 20 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a  () is invoked.**
2c310 20 61 73 20 65 61 63 68 20 53 51 4c 20 73 74 61   as each SQL sta
2c320 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73 2e  tement finishes.
2c330 20 20 5e 54 68 65 20 70 72 6f 66 69 6c 65 20 63    ^The profile c
2c340 61 6c 6c 62 61 63 6b 20 63 6f 6e 74 61 69 6e 73  allback contains
2c350 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .** the original
2c360 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20   statement text 
2c370 61 6e 64 20 61 6e 20 65 73 74 69 6d 61 74 65 20  and an estimate 
2c380 6f 66 20 77 61 6c 6c 2d 63 6c 6f 63 6b 20 74 69  of wall-clock ti
2c390 6d 65 0a 2a 2a 20 6f 66 20 68 6f 77 20 6c 6f 6e  me.** of how lon
2c3a0 67 20 74 68 61 74 20 73 74 61 74 65 6d 65 6e 74  g that statement
2c3b0 20 74 6f 6f 6b 20 74 6f 20 72 75 6e 2e 20 20 5e   took to run.  ^
2c3c0 54 68 65 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c  The profile call
2c3d0 62 61 63 6b 0a 2a 2a 20 74 69 6d 65 20 69 73 20  back.** time is 
2c3e0 69 6e 20 75 6e 69 74 73 20 6f 66 20 6e 61 6e 6f  in units of nano
2c3f0 73 65 63 6f 6e 64 73 2c 20 68 6f 77 65 76 65 72  seconds, however
2c400 20 74 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70   the current imp
2c410 6c 65 6d 65 6e 74 61 74 69 6f 6e 0a 2a 2a 20 69  lementation.** i
2c420 73 20 6f 6e 6c 79 20 63 61 70 61 62 6c 65 20 6f  s only capable o
2c430 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 20 72 65  f millisecond re
2c440 73 6f 6c 75 74 69 6f 6e 20 73 6f 20 74 68 65 20  solution so the 
2c450 73 69 78 20 6c 65 61 73 74 20 73 69 67 6e 69 66  six least signif
2c460 69 63 61 6e 74 0a 2a 2a 20 64 69 67 69 74 73 20  icant.** digits 
2c470 69 6e 20 74 68 65 20 74 69 6d 65 20 61 72 65 20  in the time are 
2c480 6d 65 61 6e 69 6e 67 6c 65 73 73 2e 20 20 46 75  meaningless.  Fu
2c490 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66  ture versions of
2c4a0 20 53 51 4c 69 74 65 0a 2a 2a 20 6d 69 67 68 74   SQLite.** might
2c4b0 20 70 72 6f 76 69 64 65 20 67 72 65 61 74 65 72   provide greater
2c4c0 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6f 6e 20 74   resolution on t
2c4d0 68 65 20 70 72 6f 66 69 6c 65 72 20 63 61 6c 6c  he profiler call
2c4e0 62 61 63 6b 2e 20 20 49 6e 76 6f 6b 69 6e 67 0a  back.  Invoking.
2c4f0 2a 2a 20 65 69 74 68 65 72 20 5b 73 71 6c 69 74  ** either [sqlit
2c500 65 33 5f 74 72 61 63 65 28 29 5d 20 6f 72 20 5b  e3_trace()] or [
2c510 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2c520 28 29 5d 20 77 69 6c 6c 20 63 61 6e 63 65 6c 20  ()] will cancel 
2c530 74 68 65 0a 2a 2a 20 70 72 6f 66 69 6c 65 20 63  the.** profile c
2c540 61 6c 6c 62 61 63 6b 2e 0a 2a 2f 0a 53 51 4c 49  allback..*/.SQLI
2c550 54 45 5f 41 50 49 20 53 51 4c 49 54 45 5f 44 45  TE_API SQLITE_DE
2c560 50 52 45 43 41 54 45 44 20 76 6f 69 64 20 2a 73  PRECATED void *s
2c570 71 6c 69 74 65 33 5f 74 72 61 63 65 28 73 71 6c  qlite3_trace(sql
2c580 69 74 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a  ite3*,.   void(*
2c590 78 54 72 61 63 65 29 28 76 6f 69 64 2a 2c 63 6f  xTrace)(void*,co
2c5a0 6e 73 74 20 63 68 61 72 2a 29 2c 20 76 6f 69 64  nst char*), void
2c5b0 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 53  *);.SQLITE_API S
2c5c0 51 4c 49 54 45 5f 44 45 50 52 45 43 41 54 45 44  QLITE_DEPRECATED
2c5d0 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 70   void *sqlite3_p
2c5e0 72 6f 66 69 6c 65 28 73 71 6c 69 74 65 33 2a 2c  rofile(sqlite3*,
2c5f0 0a 20 20 20 76 6f 69 64 28 2a 78 50 72 6f 66 69  .   void(*xProfi
2c600 6c 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20  le)(void*,const 
2c610 63 68 61 72 2a 2c 73 71 6c 69 74 65 33 5f 75 69  char*,sqlite3_ui
2c620 6e 74 36 34 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a  nt64), void*);..
2c630 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2c640 53 51 4c 20 54 72 61 63 65 20 45 76 65 6e 74 20  SQL Trace Event 
2c650 43 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  Codes.** KEYWORD
2c660 53 3a 20 53 51 4c 49 54 45 5f 54 52 41 43 45 0a  S: SQLITE_TRACE.
2c670 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73  **.** These cons
2c680 74 61 6e 74 73 20 69 64 65 6e 74 69 66 79 20 63  tants identify c
2c690 6c 61 73 73 65 73 20 6f 66 20 65 76 65 6e 74 73  lasses of events
2c6a0 20 74 68 61 74 20 63 61 6e 20 62 65 20 6d 6f 6e   that can be mon
2c6b0 69 74 6f 72 65 64 0a 2a 2a 20 75 73 69 6e 67 20  itored.** using 
2c6c0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  the [sqlite3_tra
2c6d0 63 65 5f 76 32 28 29 5d 20 74 72 61 63 69 6e 67  ce_v2()] tracing
2c6e0 20 6c 6f 67 69 63 2e 20 20 54 68 65 20 4d 20 61   logic.  The M a
2c6f0 72 67 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20 5b 73  rgument.** to [s
2c700 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
2c710 44 2c 4d 2c 58 2c 50 29 5d 20 69 73 20 61 6e 20  D,M,X,P)] is an 
2c720 4f 52 2d 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f  OR-ed combinatio
2c730 6e 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  n of one or more
2c740 20 6f 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f   of.** the follo
2c750 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2e 20  wing constants. 
2c760 20 5e 54 68 65 20 66 69 72 73 74 20 61 72 67 75   ^The first argu
2c770 6d 65 6e 74 20 74 6f 20 74 68 65 20 74 72 61 63  ment to the trac
2c780 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73  e callback.** is
2c790 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c   one of the foll
2c7a0 6f 77 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2e  owing constants.
2c7b0 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 74 72 61 63 69  .**.** New traci
2c7c0 6e 67 20 63 6f 6e 73 74 61 6e 74 73 20 6d 61 79  ng constants may
2c7d0 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74   be added in fut
2c7e0 75 72 65 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2a  ure releases..**
2c7f0 0a 2a 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c  .** ^A trace cal
2c800 6c 62 61 63 6b 20 68 61 73 20 66 6f 75 72 20 61  lback has four a
2c810 72 67 75 6d 65 6e 74 73 3a 20 78 43 61 6c 6c 62  rguments: xCallb
2c820 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a 2a 2a  ack(T,C,P,X)..**
2c830 20 5e 54 68 65 20 54 20 61 72 67 75 6d 65 6e 74   ^The T argument
2c840 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 69   is one of the i
2c850 6e 74 65 67 65 72 20 74 79 70 65 20 63 6f 64 65  nteger type code
2c860 73 20 61 62 6f 76 65 2e 0a 2a 2a 20 5e 54 68 65  s above..** ^The
2c870 20 43 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61   C argument is a
2c880 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e   copy of the con
2c890 74 65 78 74 20 70 6f 69 6e 74 65 72 20 70 61 73  text pointer pas
2c8a0 73 65 64 20 69 6e 20 61 73 20 74 68 65 0a 2a 2a  sed in as the.**
2c8b0 20 66 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74   fourth argument
2c8c0 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 74 72 61   to [sqlite3_tra
2c8d0 63 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20 54 68 65  ce_v2()]..** The
2c8e0 20 50 20 61 6e 64 20 58 20 61 72 67 75 6d 65 6e   P and X argumen
2c8f0 74 73 20 61 72 65 20 70 6f 69 6e 74 65 72 73 20  ts are pointers 
2c900 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67 73 20 64  whose meanings d
2c910 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a  epend on T..**.*
2c920 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49  * <dl>.** [[SQLI
2c930 54 45 5f 54 52 41 43 45 5f 53 54 4d 54 5d 5d 20  TE_TRACE_STMT]] 
2c940 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45  <dt>SQLITE_TRACE
2c950 5f 53 54 4d 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _STMT</dt>.** <d
2c960 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41  d>^An SQLITE_TRA
2c970 43 45 5f 53 54 4d 54 20 63 61 6c 6c 62 61 63 6b  CE_STMT callback
2c980 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
2c990 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74   a prepared stat
2c9a0 65 6d 65 6e 74 0a 2a 2a 20 66 69 72 73 74 20 62  ement.** first b
2c9b0 65 67 69 6e 73 20 72 75 6e 6e 69 6e 67 20 61 6e  egins running an
2c9c0 64 20 70 6f 73 73 69 62 6c 79 20 61 74 20 6f 74  d possibly at ot
2c9d0 68 65 72 20 74 69 6d 65 73 20 64 75 72 69 6e 67  her times during
2c9e0 20 74 68 65 0a 2a 2a 20 65 78 65 63 75 74 69 6f   the.** executio
2c9f0 6e 20 6f 66 20 74 68 65 20 70 72 65 70 61 72 65  n of the prepare
2ca00 64 20 73 74 61 74 65 6d 65 6e 74 2c 20 73 75 63  d statement, suc
2ca10 68 20 61 73 20 61 74 20 74 68 65 20 73 74 61 72  h as at the star
2ca20 74 20 6f 66 20 65 61 63 68 0a 2a 2a 20 74 72 69  t of each.** tri
2ca30 67 67 65 72 20 73 75 62 70 72 6f 67 72 61 6d 2e  gger subprogram.
2ca40 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74   ^The P argument
2ca50 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2ca60 20 74 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65   the.** [prepare
2ca70 64 20 73 74 61 74 65 6d 65 6e 74 5d 2e 20 5e 54  d statement]. ^T
2ca80 68 65 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73  he X argument is
2ca90 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
2caa0 73 74 72 69 6e 67 20 77 68 69 63 68 0a 2a 2a 20  string which.** 
2cab0 69 73 20 74 68 65 20 75 6e 65 78 70 61 6e 64 65  is the unexpande
2cac0 64 20 53 51 4c 20 74 65 78 74 20 6f 66 20 74 68  d SQL text of th
2cad0 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
2cae0 6d 65 6e 74 20 6f 72 20 61 6e 20 53 51 4c 20 63  ment or an SQL c
2caf0 6f 6d 6d 65 6e 74 20 0a 2a 2a 20 74 68 61 74 20  omment .** that 
2cb00 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 69 6e  indicates the in
2cb10 76 6f 63 61 74 69 6f 6e 20 6f 66 20 61 20 74 72  vocation of a tr
2cb20 69 67 67 65 72 2e 20 20 5e 54 68 65 20 63 61 6c  igger.  ^The cal
2cb30 6c 62 61 63 6b 20 63 61 6e 20 63 6f 6d 70 75 74  lback can comput
2cb40 65 0a 2a 2a 20 74 68 65 20 73 61 6d 65 20 74 65  e.** the same te
2cb50 78 74 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61  xt that would ha
2cb60 76 65 20 62 65 65 6e 20 72 65 74 75 72 6e 65 64  ve been returned
2cb70 20 62 79 20 74 68 65 20 6c 65 67 61 63 79 20 5b   by the legacy [
2cb80 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d  sqlite3_trace()]
2cb90 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 62 79  .** interface by
2cba0 20 75 73 69 6e 67 20 74 68 65 20 58 20 61 72 67   using the X arg
2cbb0 75 6d 65 6e 74 20 77 68 65 6e 20 58 20 62 65 67  ument when X beg
2cbc0 69 6e 73 20 77 69 74 68 20 22 2d 2d 22 20 61 6e  ins with "--" an
2cbd0 64 20 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 5b 73  d invoking.** [s
2cbe0 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f  qlite3_expanded_
2cbf0 73 71 6c 28 50 29 5d 20 6f 74 68 65 72 77 69 73  sql(P)] otherwis
2cc00 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  e..**.** [[SQLIT
2cc10 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 5d  E_TRACE_PROFILE]
2cc20 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41  ] <dt>SQLITE_TRA
2cc30 43 45 5f 50 52 4f 46 49 4c 45 3c 2f 64 74 3e 0a  CE_PROFILE</dt>.
2cc40 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54  ** <dd>^An SQLIT
2cc50 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 20  E_TRACE_PROFILE 
2cc60 63 61 6c 6c 62 61 63 6b 20 70 72 6f 76 69 64 65  callback provide
2cc70 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 20  s approximately 
2cc80 74 68 65 20 73 61 6d 65 0a 2a 2a 20 69 6e 66 6f  the same.** info
2cc90 72 6d 61 74 69 6f 6e 20 61 73 20 69 73 20 70 72  rmation as is pr
2cca0 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 5b 73  ovided by the [s
2ccb0 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
2ccc0 5d 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 5e  ] callback..** ^
2ccd0 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69  The P argument i
2cce0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
2ccf0 68 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  he [prepared sta
2cd00 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68 65 0a  tement] and the.
2cd10 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20 70 6f  ** X argument po
2cd20 69 6e 74 73 20 74 6f 20 61 20 36 34 2d 62 69 74  ints to a 64-bit
2cd30 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69   integer which i
2cd40 73 20 74 68 65 20 65 73 74 69 6d 61 74 65 64 20  s the estimated 
2cd50 6f 66 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72  of.** the number
2cd60 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e 64 20 74   of nanosecond t
2cd70 68 61 74 20 74 68 65 20 70 72 65 70 61 72 65 64  hat the prepared
2cd80 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 6f 6b 20   statement took 
2cd90 74 6f 20 72 75 6e 2e 0a 2a 2a 20 5e 54 68 65 20  to run..** ^The 
2cda0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f  SQLITE_TRACE_PRO
2cdb0 46 49 4c 45 20 63 61 6c 6c 62 61 63 6b 20 69 73  FILE callback is
2cdc0 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74 68   invoked when th
2cdd0 65 20 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69  e statement fini
2cde0 73 68 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  shes..**.** [[SQ
2cdf0 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 5d 5d  LITE_TRACE_ROW]]
2ce00 20 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41 43   <dt>SQLITE_TRAC
2ce10 45 5f 52 4f 57 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  E_ROW</dt>.** <d
2ce20 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41  d>^An SQLITE_TRA
2ce30 43 45 5f 52 4f 57 20 63 61 6c 6c 62 61 63 6b 20  CE_ROW callback 
2ce40 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65  is invoked whene
2ce50 76 65 72 20 61 20 70 72 65 70 61 72 65 64 0a 2a  ver a prepared.*
2ce60 2a 20 73 74 61 74 65 6d 65 6e 74 20 67 65 6e 65  * statement gene
2ce70 72 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20 72  rates a single r
2ce80 6f 77 20 6f 66 20 72 65 73 75 6c 74 2e 20 20 0a  ow of result.  .
2ce90 2a 2a 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65  ** ^The P argume
2cea0 6e 74 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20  nt is a pointer 
2ceb0 74 6f 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  to the [prepared
2cec0 20 73 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20   statement] and 
2ced0 74 68 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e  the.** X argumen
2cee0 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a 2a 0a  t is unused..**.
2cef0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41 43  ** [[SQLITE_TRAC
2cf00 45 5f 43 4c 4f 53 45 5d 5d 20 3c 64 74 3e 53 51  E_CLOSE]] <dt>SQ
2cf10 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45  LITE_TRACE_CLOSE
2cf20 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e  </dt>.** <dd>^An
2cf30 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c   SQLITE_TRACE_CL
2cf40 4f 53 45 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  OSE callback is 
2cf50 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 64  invoked when a d
2cf60 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65  atabase.** conne
2cf70 63 74 69 6f 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a  ction closes..**
2cf80 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74   ^The P argument
2cf90 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2cfa0 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
2cfb0 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62 6a 65 63  onnection] objec
2cfc0 74 0a 2a 2a 20 61 6e 64 20 74 68 65 20 58 20 61  t.** and the X a
2cfd0 72 67 75 6d 65 6e 74 20 69 73 20 75 6e 75 73 65  rgument is unuse
2cfe0 64 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23  d..** </dl>.*/.#
2cff0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52  define SQLITE_TR
2d000 41 43 45 5f 53 54 4d 54 20 20 20 20 20 20 20 30  ACE_STMT       0
2d010 78 30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  x01.#define SQLI
2d020 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45  TE_TRACE_PROFILE
2d030 20 20 20 20 30 78 30 32 0a 23 64 65 66 69 6e 65      0x02.#define
2d040 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f   SQLITE_TRACE_RO
2d050 57 20 20 20 20 20 20 20 20 30 78 30 34 0a 23 64  W        0x04.#d
2d060 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41  efine SQLITE_TRA
2d070 43 45 5f 43 4c 4f 53 45 20 20 20 20 20 20 30 78  CE_CLOSE      0x
2d080 30 38 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  08../*.** CAPI3R
2d090 45 46 3a 20 53 51 4c 20 54 72 61 63 65 20 48 6f  EF: SQL Trace Ho
2d0a0 6f 6b 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  ok.** METHOD: sq
2d0b0 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
2d0c0 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76   sqlite3_trace_v
2d0d0 32 28 44 2c 4d 2c 58 2c 50 29 20 69 6e 74 65 72  2(D,M,X,P) inter
2d0e0 66 61 63 65 20 72 65 67 69 73 74 65 72 73 20 61  face registers a
2d0f0 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a   trace callback.
2d100 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20 61 67  ** function X ag
2d110 61 69 6e 73 74 20 5b 64 61 74 61 62 61 73 65 20  ainst [database 
2d120 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 2c 20 75  connection] D, u
2d130 73 69 6e 67 20 70 72 6f 70 65 72 74 79 20 6d 61  sing property ma
2d140 73 6b 20 4d 0a 2a 2a 20 61 6e 64 20 63 6f 6e 74  sk M.** and cont
2d150 65 78 74 20 70 6f 69 6e 74 65 72 20 50 2e 20 20  ext pointer P.  
2d160 5e 49 66 20 74 68 65 20 58 20 63 61 6c 6c 62 61  ^If the X callba
2d170 63 6b 20 69 73 0a 2a 2a 20 4e 55 4c 4c 20 6f 72  ck is.** NULL or
2d180 20 69 66 20 74 68 65 20 4d 20 6d 61 73 6b 20 69   if the M mask i
2d190 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 74 72 61  s zero, then tra
2d1a0 63 69 6e 67 20 69 73 20 64 69 73 61 62 6c 65 64  cing is disabled
2d1b0 2e 20 20 54 68 65 0a 2a 2a 20 4d 20 61 72 67 75  .  The.** M argu
2d1c0 6d 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 74  ment should be t
2d1d0 68 65 20 62 69 74 77 69 73 65 20 4f 52 2d 65 64  he bitwise OR-ed
2d1e0 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a   combination of.
2d1f0 2a 2a 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  ** zero or more 
2d200 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d 20 63  [SQLITE_TRACE] c
2d210 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20  onstants..**.** 
2d220 5e 45 61 63 68 20 63 61 6c 6c 20 74 6f 20 65 69  ^Each call to ei
2d230 74 68 65 72 20 73 71 6c 69 74 65 33 5f 74 72 61  ther sqlite3_tra
2d240 63 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f  ce() or sqlite3_
2d250 74 72 61 63 65 5f 76 32 28 29 20 6f 76 65 72 72  trace_v2() overr
2d260 69 64 65 73 20 0a 2a 2a 20 28 63 61 6e 63 65 6c  ides .** (cancel
2d270 73 29 20 61 6e 79 20 70 72 69 6f 72 20 63 61 6c  s) any prior cal
2d280 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 74 72  ls to sqlite3_tr
2d290 61 63 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33  ace() or sqlite3
2d2a0 5f 74 72 61 63 65 5f 76 32 28 29 2e 0a 2a 2a 0a  _trace_v2()..**.
2d2b0 2a 2a 20 5e 54 68 65 20 58 20 63 61 6c 6c 62 61  ** ^The X callba
2d2c0 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68  ck is invoked wh
2d2d0 65 6e 65 76 65 72 20 61 6e 79 20 6f 66 20 74 68  enever any of th
2d2e0 65 20 65 76 65 6e 74 73 20 69 64 65 6e 74 69 66  e events identif
2d2f0 69 65 64 20 62 79 20 0a 2a 2a 20 6d 61 73 6b 20  ied by .** mask 
2d300 4d 20 6f 63 63 75 72 2e 20 20 5e 54 68 65 20 69  M occur.  ^The i
2d310 6e 74 65 67 65 72 20 72 65 74 75 72 6e 20 76 61  nteger return va
2d320 6c 75 65 20 66 72 6f 6d 20 74 68 65 20 63 61 6c  lue from the cal
2d330 6c 62 61 63 6b 20 69 73 20 63 75 72 72 65 6e 74  lback is current
2d340 6c 79 0a 2a 2a 20 69 67 6e 6f 72 65 64 2c 20 74  ly.** ignored, t
2d350 68 6f 75 67 68 20 74 68 69 73 20 6d 61 79 20 63  hough this may c
2d360 68 61 6e 67 65 20 69 6e 20 66 75 74 75 72 65 20  hange in future 
2d370 72 65 6c 65 61 73 65 73 2e 20 20 43 61 6c 6c 62  releases.  Callb
2d380 61 63 6b 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74  ack.** implement
2d390 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 72 65  ations should re
2d3a0 74 75 72 6e 20 7a 65 72 6f 20 74 6f 20 65 6e 73  turn zero to ens
2d3b0 75 72 65 20 66 75 74 75 72 65 20 63 6f 6d 70 61  ure future compa
2d3c0 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20  tibility..**.** 
2d3d0 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  ^A trace callbac
2d3e0 6b 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74  k is invoked wit
2d3f0 68 20 66 6f 75 72 20 61 72 67 75 6d 65 6e 74 73  h four arguments
2d400 3a 20 63 61 6c 6c 62 61 63 6b 28 54 2c 43 2c 50  : callback(T,C,P
2d410 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65 20 54 20 61  ,X)..** ^The T a
2d420 72 67 75 6d 65 6e 74 20 69 73 20 6f 6e 65 20 6f  rgument is one o
2d430 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 52  f the [SQLITE_TR
2d440 41 43 45 5d 0a 2a 2a 20 63 6f 6e 73 74 61 6e 74  ACE].** constant
2d450 73 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  s to indicate wh
2d460 79 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77  y the callback w
2d470 61 73 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 20 5e  as invoked..** ^
2d480 54 68 65 20 43 20 61 72 67 75 6d 65 6e 74 20 69  The C argument i
2d490 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20  s a copy of the 
2d4a0 63 6f 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 2e  context pointer.
2d4b0 0a 2a 2a 20 54 68 65 20 50 20 61 6e 64 20 58 20  .** The P and X 
2d4c0 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20 70 6f  arguments are po
2d4d0 69 6e 74 65 72 73 20 77 68 6f 73 65 20 6d 65 61  inters whose mea
2d4e0 6e 69 6e 67 73 20 64 65 70 65 6e 64 20 6f 6e 20  nings depend on 
2d4f0 54 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c  T..**.** The sql
2d500 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 29 20  ite3_trace_v2() 
2d510 69 6e 74 65 72 66 61 63 65 20 69 73 20 69 6e 74  interface is int
2d520 65 6e 64 65 64 20 74 6f 20 72 65 70 6c 61 63 65  ended to replace
2d530 20 74 68 65 20 6c 65 67 61 63 79 0a 2a 2a 20 69   the legacy.** i
2d540 6e 74 65 72 66 61 63 65 73 20 5b 73 71 6c 69 74  nterfaces [sqlit
2d550 65 33 5f 74 72 61 63 65 28 29 5d 20 61 6e 64 20  e3_trace()] and 
2d560 5b 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65  [sqlite3_profile
2d570 28 29 5d 2c 20 62 6f 74 68 20 6f 66 20 77 68 69  ()], both of whi
2d580 63 68 0a 2a 2a 20 61 72 65 20 64 65 70 72 65 63  ch.** are deprec
2d590 61 74 65 64 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  ated..*/.SQLITE_
2d5a0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
2d5b0 74 72 61 63 65 5f 76 32 28 0a 20 20 73 71 6c 69  trace_v2(.  sqli
2d5c0 74 65 33 2a 2c 0a 20 20 75 6e 73 69 67 6e 65 64  te3*,.  unsigned
2d5d0 20 75 4d 61 73 6b 2c 0a 20 20 69 6e 74 28 2a 78   uMask,.  int(*x
2d5e0 43 61 6c 6c 62 61 63 6b 29 28 75 6e 73 69 67 6e  Callback)(unsign
2d5f0 65 64 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a 2c 76  ed,void*,void*,v
2d600 6f 69 64 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70  oid*),.  void *p
2d610 43 74 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  Ctx.);../*.** CA
2d620 50 49 33 52 45 46 3a 20 51 75 65 72 79 20 50 72  PI3REF: Query Pr
2d630 6f 67 72 65 73 73 20 43 61 6c 6c 62 61 63 6b 73  ogress Callbacks
2d640 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
2d650 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  te3.**.** ^The s
2d660 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f  qlite3_progress_
2d670 68 61 6e 64 6c 65 72 28 44 2c 4e 2c 58 2c 50 29  handler(D,N,X,P)
2d680 20 69 6e 74 65 72 66 61 63 65 20 63 61 75 73 65   interface cause
2d690 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a 2a  s the callback.*
2d6a0 2a 20 66 75 6e 63 74 69 6f 6e 20 58 20 74 6f 20  * function X to 
2d6b0 62 65 20 69 6e 76 6f 6b 65 64 20 70 65 72 69 6f  be invoked perio
2d6c0 64 69 63 61 6c 6c 79 20 64 75 72 69 6e 67 20 6c  dically during l
2d6d0 6f 6e 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c 6c  ong running call
2d6e0 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  s to.** [sqlite3
2d6f0 5f 65 78 65 63 28 29 5d 2c 20 5b 73 71 6c 69 74  _exec()], [sqlit
2d700 65 33 5f 73 74 65 70 28 29 5d 20 61 6e 64 20 5b  e3_step()] and [
2d710 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c  sqlite3_get_tabl
2d720 65 28 29 5d 20 66 6f 72 0a 2a 2a 20 64 61 74 61  e()] for.** data
2d730 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2d740 44 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 75  D.  An example u
2d750 73 65 20 66 6f 72 20 74 68 69 73 0a 2a 2a 20 69  se for this.** i
2d760 6e 74 65 72 66 61 63 65 20 69 73 20 74 6f 20 6b  nterface is to k
2d770 65 65 70 20 61 20 47 55 49 20 75 70 64 61 74 65  eep a GUI update
2d780 64 20 64 75 72 69 6e 67 20 61 20 6c 61 72 67 65  d during a large
2d790 20 71 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54   query..**.** ^T
2d7a0 68 65 20 70 61 72 61 6d 65 74 65 72 20 50 20 69  he parameter P i
2d7b0 73 20 70 61 73 73 65 64 20 74 68 72 6f 75 67 68  s passed through
2d7c0 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70 61 72   as the only par
2d7d0 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 0a 2a  ameter to the .*
2d7e0 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  * callback funct
2d7f0 69 6f 6e 20 58 2e 20 20 5e 54 68 65 20 70 61 72  ion X.  ^The par
2d800 61 6d 65 74 65 72 20 4e 20 69 73 20 74 68 65 20  ameter N is the 
2d810 61 70 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d 62  approximate numb
2d820 65 72 20 6f 66 20 0a 2a 2a 20 5b 76 69 72 74 75  er of .** [virtu
2d830 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
2d840 75 63 74 69 6f 6e 73 5d 20 74 68 61 74 20 61 72  uctions] that ar
2d850 65 20 65 76 61 6c 75 61 74 65 64 20 62 65 74 77  e evaluated betw
2d860 65 65 6e 20 73 75 63 63 65 73 73 69 76 65 0a 2a  een successive.*
2d870 2a 20 69 6e 76 6f 63 61 74 69 6f 6e 73 20 6f 66  * invocations of
2d880 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 58 2e   the callback X.
2d890 20 20 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20    ^If N is less 
2d8a0 74 68 61 6e 20 6f 6e 65 20 74 68 65 6e 20 74 68  than one then th
2d8b0 65 20 70 72 6f 67 72 65 73 73 0a 2a 2a 20 68 61  e progress.** ha
2d8c0 6e 64 6c 65 72 20 69 73 20 64 69 73 61 62 6c 65  ndler is disable
2d8d0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 61  d..**.** ^Only a
2d8e0 20 73 69 6e 67 6c 65 20 70 72 6f 67 72 65 73 73   single progress
2d8f0 20 68 61 6e 64 6c 65 72 20 6d 61 79 20 62 65 20   handler may be 
2d900 64 65 66 69 6e 65 64 20 61 74 20 6f 6e 65 20 74  defined at one t
2d910 69 6d 65 20 70 65 72 0a 2a 2a 20 5b 64 61 74 61  ime per.** [data
2d920 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
2d930 3b 20 73 65 74 74 69 6e 67 20 61 20 6e 65 77 20  ; setting a new 
2d940 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72  progress handler
2d950 20 63 61 6e 63 65 6c 73 20 74 68 65 0a 2a 2a 20   cancels the.** 
2d960 6f 6c 64 20 6f 6e 65 2e 20 20 5e 53 65 74 74 69  old one.  ^Setti
2d970 6e 67 20 70 61 72 61 6d 65 74 65 72 20 58 20 74  ng parameter X t
2d980 6f 20 4e 55 4c 4c 20 64 69 73 61 62 6c 65 73 20  o NULL disables 
2d990 74 68 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e  the progress han
2d9a0 64 6c 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 70 72  dler..** ^The pr
2d9b0 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20 69  ogress handler i
2d9c0 73 20 61 6c 73 6f 20 64 69 73 61 62 6c 65 64 20  s also disabled 
2d9d0 62 79 20 73 65 74 74 69 6e 67 20 4e 20 74 6f 20  by setting N to 
2d9e0 61 20 76 61 6c 75 65 20 6c 65 73 73 0a 2a 2a 20  a value less.** 
2d9f0 74 68 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a 20 5e 49  than 1..**.** ^I
2da00 66 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 63  f the progress c
2da10 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
2da20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 6f 70  non-zero, the op
2da30 65 72 61 74 69 6f 6e 20 69 73 0a 2a 2a 20 69 6e  eration is.** in
2da40 74 65 72 72 75 70 74 65 64 2e 20 20 54 68 69 73  terrupted.  This
2da50 20 66 65 61 74 75 72 65 20 63 61 6e 20 62 65 20   feature can be 
2da60 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  used to implemen
2da70 74 20 61 0a 2a 2a 20 22 43 61 6e 63 65 6c 22 20  t a.** "Cancel" 
2da80 62 75 74 74 6f 6e 20 6f 6e 20 61 20 47 55 49 20  button on a GUI 
2da90 70 72 6f 67 72 65 73 73 20 64 69 61 6c 6f 67 20  progress dialog 
2daa0 62 6f 78 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70  box..**.** The p
2dab0 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20  rogress handler 
2dac0 63 61 6c 6c 62 61 63 6b 20 6d 75 73 74 20 6e 6f  callback must no
2dad0 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 74 68  t do anything th
2dae0 61 74 20 77 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a  at will modify.*
2daf0 2a 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  * the database c
2db00 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69  onnection that i
2db10 6e 76 6f 6b 65 64 20 74 68 65 20 70 72 6f 67 72  nvoked the progr
2db20 65 73 73 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20  ess handler..** 
2db30 4e 6f 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74  Note that [sqlit
2db40 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
2db50 20 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74   and [sqlite3_st
2db60 65 70 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66  ep()] both modif
2db70 79 20 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62  y their.** datab
2db80 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
2db90 66 6f 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20  for the meaning 
2dba0 6f 66 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74  of "modify" in t
2dbb0 68 69 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a  his paragraph..*
2dbc0 2a 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  *.*/.SQLITE_API 
2dbd0 76 6f 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f  void sqlite3_pro
2dbe0 67 72 65 73 73 5f 68 61 6e 64 6c 65 72 28 73 71  gress_handler(sq
2dbf0 6c 69 74 65 33 2a 2c 20 69 6e 74 2c 20 69 6e 74  lite3*, int, int
2dc00 28 2a 29 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64  (*)(void*), void
2dc10 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
2dc20 52 45 46 3a 20 4f 70 65 6e 69 6e 67 20 41 20 4e  REF: Opening A N
2dc30 65 77 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e  ew Database Conn
2dc40 65 63 74 69 6f 6e 0a 2a 2a 20 43 4f 4e 53 54 52  ection.** CONSTR
2dc50 55 43 54 4f 52 3a 20 73 71 6c 69 74 65 33 0a 2a  UCTOR: sqlite3.*
2dc60 2a 0a 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75 74  *.** ^These rout
2dc70 69 6e 65 73 20 6f 70 65 6e 20 61 6e 20 53 51 4c  ines open an SQL
2dc80 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
2dc90 65 20 61 73 20 73 70 65 63 69 66 69 65 64 20 62  e as specified b
2dca0 79 20 74 68 65 20 0a 2a 2a 20 66 69 6c 65 6e 61  y the .** filena
2dcb0 6d 65 20 61 72 67 75 6d 65 6e 74 2e 20 5e 54 68  me argument. ^Th
2dcc0 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d  e filename argum
2dcd0 65 6e 74 20 69 73 20 69 6e 74 65 72 70 72 65 74  ent is interpret
2dce0 65 64 20 61 73 20 55 54 46 2d 38 20 66 6f 72 0a  ed as UTF-8 for.
2dcf0 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  ** sqlite3_open(
2dd00 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70  ) and sqlite3_op
2dd10 65 6e 5f 76 32 28 29 20 61 6e 64 20 61 73 20 55  en_v2() and as U
2dd20 54 46 2d 31 36 20 69 6e 20 74 68 65 20 6e 61 74  TF-16 in the nat
2dd30 69 76 65 20 62 79 74 65 0a 2a 2a 20 6f 72 64 65  ive byte.** orde
2dd40 72 20 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70  r for sqlite3_op
2dd50 65 6e 31 36 28 29 2e 20 5e 28 41 20 5b 64 61 74  en16(). ^(A [dat
2dd60 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2dd70 5d 20 68 61 6e 64 6c 65 20 69 73 20 75 73 75 61  ] handle is usua
2dd80 6c 6c 79 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20  lly.** returned 
2dd90 69 6e 20 2a 70 70 44 62 2c 20 65 76 65 6e 20 69  in *ppDb, even i
2dda0 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72  f an error occur
2ddb0 73 2e 20 20 54 68 65 20 6f 6e 6c 79 20 65 78 63  s.  The only exc
2ddc0 65 70 74 69 6f 6e 20 69 73 20 74 68 61 74 0a 2a  eption is that.*
2ddd0 2a 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 75  * if SQLite is u
2dde0 6e 61 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74  nable to allocat
2ddf0 65 20 6d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64  e memory to hold
2de00 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f   the [sqlite3] o
2de10 62 6a 65 63 74 2c 0a 2a 2a 20 61 20 4e 55 4c 4c  bject,.** a NULL
2de20 20 77 69 6c 6c 20 62 65 20 77 72 69 74 74 65 6e   will be written
2de30 20 69 6e 74 6f 20 2a 70 70 44 62 20 69 6e 73 74   into *ppDb inst
2de40 65 61 64 20 6f 66 20 61 20 70 6f 69 6e 74 65 72  ead of a pointer
2de50 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33   to the [sqlite3
2de60 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2e 29 5e 20 5e  ].** object.)^ ^
2de70 28 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65  (If the database
2de80 20 69 73 20 6f 70 65 6e 65 64 20 28 61 6e 64 2f   is opened (and/
2de90 6f 72 20 63 72 65 61 74 65 64 29 20 73 75 63 63  or created) succ
2dea0 65 73 73 66 75 6c 6c 79 2c 20 74 68 65 6e 0a 2a  essfully, then.*
2deb0 2a 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 69 73  * [SQLITE_OK] is
2dec0 20 72 65 74 75 72 6e 65 64 2e 20 20 4f 74 68 65   returned.  Othe
2ded0 72 77 69 73 65 20 61 6e 20 5b 65 72 72 6f 72 20  rwise an [error 
2dee0 63 6f 64 65 5d 20 69 73 20 72 65 74 75 72 6e 65  code] is returne
2def0 64 2e 29 5e 20 5e 54 68 65 0a 2a 2a 20 5b 73 71  d.)^ ^The.** [sq
2df00 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 20  lite3_errmsg()] 
2df10 6f 72 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d  or [sqlite3_errm
2df20 73 67 31 36 28 29 5d 20 72 6f 75 74 69 6e 65 73  sg16()] routines
2df30 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
2df40 6f 62 74 61 69 6e 0a 2a 2a 20 61 6e 20 45 6e 67  obtain.** an Eng
2df50 6c 69 73 68 20 6c 61 6e 67 75 61 67 65 20 64 65  lish language de
2df60 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65  scription of the
2df70 20 65 72 72 6f 72 20 66 6f 6c 6c 6f 77 69 6e 67   error following
2df80 20 61 20 66 61 69 6c 75 72 65 20 6f 66 20 61 6e   a failure of an
2df90 79 0a 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69  y.** of the sqli
2dfa0 74 65 33 5f 6f 70 65 6e 28 29 20 72 6f 75 74 69  te3_open() routi
2dfb0 6e 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  nes..**.** ^The 
2dfc0 64 65 66 61 75 6c 74 20 65 6e 63 6f 64 69 6e 67  default encoding
2dfd0 20 77 69 6c 6c 20 62 65 20 55 54 46 2d 38 20 66   will be UTF-8 f
2dfe0 6f 72 20 64 61 74 61 62 61 73 65 73 20 63 72 65  or databases cre
2dff0 61 74 65 64 20 75 73 69 6e 67 0a 2a 2a 20 73 71  ated using.** sq
2e000 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20  lite3_open() or 
2e010 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2e020 29 2e 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74  ).  ^The default
2e030 20 65 6e 63 6f 64 69 6e 67 20 66 6f 72 20 64 61   encoding for da
2e040 74 61 62 61 73 65 73 0a 2a 2a 20 63 72 65 61 74  tabases.** creat
2e050 65 64 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33  ed using sqlite3
2e060 5f 6f 70 65 6e 31 36 28 29 20 77 69 6c 6c 20 62  _open16() will b
2e070 65 20 55 54 46 2d 31 36 20 69 6e 20 74 68 65 20  e UTF-16 in the 
2e080 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64 65  native byte orde
2e090 72 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68 65 72  r..**.** Whether
2e0a0 20 6f 72 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72   or not an error
2e0b0 20 6f 63 63 75 72 73 20 77 68 65 6e 20 69 74 20   occurs when it 
2e0c0 69 73 20 6f 70 65 6e 65 64 2c 20 72 65 73 6f 75  is opened, resou
2e0d0 72 63 65 73 0a 2a 2a 20 61 73 73 6f 63 69 61 74  rces.** associat
2e0e0 65 64 20 77 69 74 68 20 74 68 65 20 5b 64 61 74  ed with the [dat
2e0f0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2e100 5d 20 68 61 6e 64 6c 65 20 73 68 6f 75 6c 64 20  ] handle should 
2e110 62 65 20 72 65 6c 65 61 73 65 64 20 62 79 0a 2a  be released by.*
2e120 2a 20 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20  * passing it to 
2e130 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29  [sqlite3_close()
2e140 5d 20 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 20  ] when it is no 
2e150 6c 6f 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e  longer required.
2e160 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
2e170 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 6e 74  e3_open_v2() int
2e180 65 72 66 61 63 65 20 77 6f 72 6b 73 20 6c 69 6b  erface works lik
2e190 65 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  e sqlite3_open()
2e1a0 0a 2a 2a 20 65 78 63 65 70 74 20 74 68 61 74 20  .** except that 
2e1b0 69 74 20 61 63 63 65 70 74 73 20 74 77 6f 20 61  it accepts two a
2e1c0 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65  dditional parame
2e1d0 74 65 72 73 20 66 6f 72 20 61 64 64 69 74 69 6f  ters for additio
2e1e0 6e 61 6c 20 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 6f  nal control.** o
2e1f0 76 65 72 20 74 68 65 20 6e 65 77 20 64 61 74 61  ver the new data
2e200 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  base connection.
2e210 20 20 5e 28 54 68 65 20 66 6c 61 67 73 20 70 61    ^(The flags pa
2e220 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 73 71  rameter to.** sq
2e230 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2e240 63 61 6e 20 74 61 6b 65 20 6f 6e 65 20 6f 66 0a  can take one of.
2e250 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  ** the following
2e260 20 74 68 72 65 65 20 76 61 6c 75 65 73 2c 20 6f   three values, o
2e270 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62 69 6e  ptionally combin
2e280 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a 2a 20  ed with the .** 
2e290 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d  [SQLITE_OPEN_NOM
2e2a0 55 54 45 58 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f  UTEX], [SQLITE_O
2e2b0 50 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 2c 20  PEN_FULLMUTEX], 
2e2c0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41  [SQLITE_OPEN_SHA
2e2d0 52 45 44 43 41 43 48 45 5d 2c 0a 2a 2a 20 5b 53  REDCACHE],.** [S
2e2e0 51 4c 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41  QLITE_OPEN_PRIVA
2e2f0 54 45 43 41 43 48 45 5d 2c 20 61 6e 64 2f 6f 72  TECACHE], and/or
2e300 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52   [SQLITE_OPEN_UR
2e310 49 5d 20 66 6c 61 67 73 3a 29 5e 0a 2a 2a 0a 2a  I] flags:)^.**.*
2e320 2a 20 3c 64 6c 3e 0a 2a 2a 20 5e 28 3c 64 74 3e  * <dl>.** ^(<dt>
2e330 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41  [SQLITE_OPEN_REA
2e340 44 4f 4e 4c 59 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c  DONLY]</dt>.** <
2e350 64 64 3e 54 68 65 20 64 61 74 61 62 61 73 65 20  dd>The database 
2e360 69 73 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61  is opened in rea
2e370 64 2d 6f 6e 6c 79 20 6d 6f 64 65 2e 20 20 49 66  d-only mode.  If
2e380 20 74 68 65 20 64 61 74 61 62 61 73 65 20 64 6f   the database do
2e390 65 73 20 6e 6f 74 0a 2a 2a 20 61 6c 72 65 61 64  es not.** alread
2e3a0 79 20 65 78 69 73 74 2c 20 61 6e 20 65 72 72 6f  y exist, an erro
2e3b0 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f  r is returned.</
2e3c0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64  dd>)^.**.** ^(<d
2e3d0 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  t>[SQLITE_OPEN_R
2e3e0 45 41 44 57 52 49 54 45 5d 3c 2f 64 74 3e 0a 2a  EADWRITE]</dt>.*
2e3f0 2a 20 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61  * <dd>The databa
2e400 73 65 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72  se is opened for
2e410 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69   reading and wri
2e420 74 69 6e 67 20 69 66 20 70 6f 73 73 69 62 6c 65  ting if possible
2e430 2c 20 6f 72 20 72 65 61 64 69 6e 67 0a 2a 2a 20  , or reading.** 
2e440 6f 6e 6c 79 20 69 66 20 74 68 65 20 66 69 6c 65  only if the file
2e450 20 69 73 20 77 72 69 74 65 20 70 72 6f 74 65 63   is write protec
2e460 74 65 64 20 62 79 20 74 68 65 20 6f 70 65 72 61  ted by the opera
2e470 74 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 6e  ting system.  In
2e480 20 65 69 74 68 65 72 0a 2a 2a 20 63 61 73 65 20   either.** case 
2e490 74 68 65 20 64 61 74 61 62 61 73 65 20 6d 75 73  the database mus
2e4a0 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 2c  t already exist,
2e4b0 20 6f 74 68 65 72 77 69 73 65 20 61 6e 20 65 72   otherwise an er
2e4c0 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
2e4d0 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28  </dd>)^.**.** ^(
2e4e0 3c 64 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  <dt>[SQLITE_OPEN
2e4f0 5f 52 45 41 44 57 52 49 54 45 5d 20 7c 20 5b 53  _READWRITE] | [S
2e500 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54  QLITE_OPEN_CREAT
2e510 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  E]</dt>.** <dd>T
2e520 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
2e530 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64 69 6e  pened for readin
2e540 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c 20 61  g and writing, a
2e550 6e 64 20 69 73 20 63 72 65 61 74 65 64 20 69 66  nd is created if
2e560 0a 2a 2a 20 69 74 20 64 6f 65 73 20 6e 6f 74 20  .** it does not 
2e570 61 6c 72 65 61 64 79 20 65 78 69 73 74 2e 20 54  already exist. T
2e580 68 69 73 20 69 73 20 74 68 65 20 62 65 68 61 76  his is the behav
2e590 69 6f 72 20 74 68 61 74 20 69 73 20 61 6c 77 61  ior that is alwa
2e5a0 79 73 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 73  ys used for.** s
2e5b0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e  qlite3_open() an
2e5c0 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36  d sqlite3_open16
2e5d0 28 29 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f  ().</dd>)^.** </
2e5e0 64 6c 3e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65  dl>.**.** If the
2e5f0 20 33 72 64 20 70 61 72 61 6d 65 74 65 72 20 74   3rd parameter t
2e600 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  o sqlite3_open_v
2e610 32 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65 20 6f  2() is not one o
2e620 66 20 74 68 65 0a 2a 2a 20 63 6f 6d 62 69 6e 61  f the.** combina
2e630 74 69 6f 6e 73 20 73 68 6f 77 6e 20 61 62 6f 76  tions shown abov
2e640 65 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d  e optionally com
2e650 62 69 6e 65 64 20 77 69 74 68 20 6f 74 68 65 72  bined with other
2e660 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  .** [SQLITE_OPEN
2e670 5f 52 45 41 44 4f 4e 4c 59 20 7c 20 53 51 4c 49  _READONLY | SQLI
2e680 54 45 5f 4f 50 45 4e 5f 2a 20 62 69 74 73 5d 0a  TE_OPEN_* bits].
2e690 2a 2a 20 74 68 65 6e 20 74 68 65 20 62 65 68 61  ** then the beha
2e6a0 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
2e6b0 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  d..**.** ^If the
2e6c0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f   [SQLITE_OPEN_NO
2e6d0 4d 55 54 45 58 5d 20 66 6c 61 67 20 69 73 20 73  MUTEX] flag is s
2e6e0 65 74 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74  et, then the dat
2e6f0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2e700 0a 2a 2a 20 6f 70 65 6e 73 20 69 6e 20 74 68 65  .** opens in the
2e710 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 20 5b 74   multi-thread [t
2e720 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61  hreading mode] a
2e730 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20 73 69  s long as the si
2e740 6e 67 6c 65 2d 74 68 72 65 61 64 0a 2a 2a 20 6d  ngle-thread.** m
2e750 6f 64 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e  ode has not been
2e760 20 73 65 74 20 61 74 20 63 6f 6d 70 69 6c 65 2d   set at compile-
2e770 74 69 6d 65 20 6f 72 20 73 74 61 72 74 2d 74 69  time or start-ti
2e780 6d 65 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20  me.  ^If the.** 
2e790 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c  [SQLITE_OPEN_FUL
2e7a0 4c 4d 55 54 45 58 5d 20 66 6c 61 67 20 69 73 20  LMUTEX] flag is 
2e7b0 73 65 74 20 74 68 65 6e 20 74 68 65 20 64 61 74  set then the dat
2e7c0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
2e7d0 20 6f 70 65 6e 73 0a 2a 2a 20 69 6e 20 74 68 65   opens.** in the
2e7e0 20 73 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72   serialized [thr
2e7f0 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 75 6e 6c  eading mode] unl
2e800 65 73 73 20 73 69 6e 67 6c 65 2d 74 68 72 65 61  ess single-threa
2e810 64 20 77 61 73 0a 2a 2a 20 70 72 65 76 69 6f 75  d was.** previou
2e820 73 6c 79 20 73 65 6c 65 63 74 65 64 20 61 74 20  sly selected at 
2e830 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20  compile-time or 
2e840 73 74 61 72 74 2d 74 69 6d 65 2e 0a 2a 2a 20 5e  start-time..** ^
2e850 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  The [SQLITE_OPEN
2e860 5f 53 48 41 52 45 44 43 41 43 48 45 5d 20 66 6c  _SHAREDCACHE] fl
2e870 61 67 20 63 61 75 73 65 73 20 74 68 65 20 64 61  ag causes the da
2e880 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e890 6e 20 74 6f 20 62 65 0a 2a 2a 20 65 6c 69 67 69  n to be.** eligi
2e8a0 62 6c 65 20 74 6f 20 75 73 65 20 5b 73 68 61 72  ble to use [shar
2e8b0 65 64 20 63 61 63 68 65 20 6d 6f 64 65 5d 2c 20  ed cache mode], 
2e8c0 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  regardless of wh
2e8d0 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 73 68 61  ether or not sha
2e8e0 72 65 64 0a 2a 2a 20 63 61 63 68 65 20 69 73 20  red.** cache is 
2e8f0 65 6e 61 62 6c 65 64 20 75 73 69 6e 67 20 5b 73  enabled using [s
2e900 71 6c 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68  qlite3_enable_sh
2e910 61 72 65 64 5f 63 61 63 68 65 28 29 5d 2e 20 20  ared_cache()].  
2e920 5e 54 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  ^The.** [SQLITE_
2e930 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48  OPEN_PRIVATECACH
2e940 45 5d 20 66 6c 61 67 20 63 61 75 73 65 73 20 74  E] flag causes t
2e950 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
2e960 65 63 74 69 6f 6e 20 74 6f 20 6e 6f 74 0a 2a 2a  ection to not.**
2e970 20 70 61 72 74 69 63 69 70 61 74 65 20 69 6e 20   participate in 
2e980 5b 73 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f  [shared cache mo
2e990 64 65 5d 20 65 76 65 6e 20 69 66 20 69 74 20 69  de] even if it i
2e9a0 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a  s enabled..**.**
2e9b0 20 5e 54 68 65 20 66 6f 75 72 74 68 20 70 61 72   ^The fourth par
2e9c0 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65  ameter to sqlite
2e9d0 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 74  3_open_v2() is t
2e9e0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 0a 2a  he name of the.*
2e9f0 2a 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20  * [sqlite3_vfs] 
2ea00 6f 62 6a 65 63 74 20 74 68 61 74 20 64 65 66 69  object that defi
2ea10 6e 65 73 20 74 68 65 20 6f 70 65 72 61 74 69 6e  nes the operatin
2ea20 67 20 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61  g system interfa
2ea30 63 65 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 6e  ce that.** the n
2ea40 65 77 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  ew database conn
2ea50 65 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 75 73  ection should us
2ea60 65 2e 20 20 5e 49 66 20 74 68 65 20 66 6f 75 72  e.  ^If the four
2ea70 74 68 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a  th parameter is.
2ea80 2a 2a 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ** a NULL pointe
2ea90 72 20 74 68 65 6e 20 74 68 65 20 64 65 66 61 75  r then the defau
2eaa0 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d  lt [sqlite3_vfs]
2eab0 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65 64 2e   object is used.
2eac0 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66  .**.** ^If the f
2ead0 69 6c 65 6e 61 6d 65 20 69 73 20 22 3a 6d 65 6d  ilename is ":mem
2eae0 6f 72 79 3a 22 2c 20 74 68 65 6e 20 61 20 70 72  ory:", then a pr
2eaf0 69 76 61 74 65 2c 20 74 65 6d 70 6f 72 61 72 79  ivate, temporary
2eb00 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62   in-memory datab
2eb10 61 73 65 0a 2a 2a 20 69 73 20 63 72 65 61 74 65  ase.** is create
2eb20 64 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63  d for the connec
2eb30 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20 69 6e 2d  tion.  ^This in-
2eb40 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 20  memory database 
2eb50 77 69 6c 6c 20 76 61 6e 69 73 68 20 77 68 65 6e  will vanish when
2eb60 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61 73 65  .** the database
2eb70 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63   connection is c
2eb80 6c 6f 73 65 64 2e 20 20 46 75 74 75 72 65 20 76  losed.  Future v
2eb90 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
2eba0 65 20 6d 69 67 68 74 0a 2a 2a 20 6d 61 6b 65 20  e might.** make 
2ebb0 75 73 65 20 6f 66 20 61 64 64 69 74 69 6f 6e 61  use of additiona
2ebc0 6c 20 73 70 65 63 69 61 6c 20 66 69 6c 65 6e 61  l special filena
2ebd0 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e 20 77  mes that begin w
2ebe0 69 74 68 20 74 68 65 20 22 3a 22 20 63 68 61 72  ith the ":" char
2ebf0 61 63 74 65 72 2e 0a 2a 2a 20 49 74 20 69 73 20  acter..** It is 
2ec00 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74  recommended that
2ec10 20 77 68 65 6e 20 61 20 64 61 74 61 62 61 73 65   when a database
2ec20 20 66 69 6c 65 6e 61 6d 65 20 61 63 74 75 61 6c   filename actual
2ec30 6c 79 20 64 6f 65 73 20 62 65 67 69 6e 20 77 69  ly does begin wi
2ec40 74 68 0a 2a 2a 20 61 20 22 3a 22 20 63 68 61 72  th.** a ":" char
2ec50 61 63 74 65 72 20 79 6f 75 20 73 68 6f 75 6c 64  acter you should
2ec60 20 70 72 65 66 69 78 20 74 68 65 20 66 69 6c 65   prefix the file
2ec70 6e 61 6d 65 20 77 69 74 68 20 61 20 70 61 74 68  name with a path
2ec80 6e 61 6d 65 20 73 75 63 68 20 61 73 0a 2a 2a 20  name such as.** 
2ec90 22 2e 2f 22 20 74 6f 20 61 76 6f 69 64 20 61 6d  "./" to avoid am
2eca0 62 69 67 75 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e  biguity..**.** ^
2ecb0 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20  If the filename 
2ecc0 69 73 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  is an empty stri
2ecd0 6e 67 2c 20 74 68 65 6e 20 61 20 70 72 69 76 61  ng, then a priva
2ece0 74 65 2c 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a  te, temporary.**
2ecf0 20 6f 6e 2d 64 69 73 6b 20 64 61 74 61 62 61 73   on-disk databas
2ed00 65 20 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65  e will be create
2ed10 64 2e 20 20 5e 54 68 69 73 20 70 72 69 76 61 74  d.  ^This privat
2ed20 65 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20  e database will 
2ed30 62 65 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61  be.** automatica
2ed40 6c 6c 79 20 64 65 6c 65 74 65 64 20 61 73 20 73  lly deleted as s
2ed50 6f 6f 6e 20 61 73 20 74 68 65 20 64 61 74 61 62  oon as the datab
2ed60 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69  ase connection i
2ed70 73 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20  s closed..**.** 
2ed80 5b 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20  [[URI filenames 
2ed90 69 6e 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  in sqlite3_open(
2eda0 29 5d 5d 20 3c 68 33 3e 55 52 49 20 46 69 6c 65  )]] <h3>URI File
2edb0 6e 61 6d 65 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a  names</h3>.**.**
2edc0 20 5e 49 66 20 5b 55 52 49 20 66 69 6c 65 6e 61   ^If [URI filena
2edd0 6d 65 5d 20 69 6e 74 65 72 70 72 65 74 61 74 69  me] interpretati
2ede0 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 61  on is enabled, a
2edf0 6e 64 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20  nd the filename 
2ee00 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 62 65 67 69  argument.** begi
2ee10 6e 73 20 77 69 74 68 20 22 66 69 6c 65 3a 22 2c  ns with "file:",
2ee20 20 74 68 65 6e 20 74 68 65 20 66 69 6c 65 6e 61   then the filena
2ee30 6d 65 20 69 73 20 69 6e 74 65 72 70 72 65 74 65  me is interprete
2ee40 64 20 61 73 20 61 20 55 52 49 2e 20 5e 55 52 49  d as a URI. ^URI
2ee50 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74  .** filename int
2ee60 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73 20 65  erpretation is e
2ee70 6e 61 62 6c 65 64 20 69 66 20 74 68 65 20 5b 53  nabled if the [S
2ee80 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20  QLITE_OPEN_URI] 
2ee90 66 6c 61 67 20 69 73 0a 2a 2a 20 73 65 74 20 69  flag is.** set i
2eea0 6e 20 74 68 65 20 74 68 69 72 64 20 61 72 67 75  n the third argu
2eeb0 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f  ment to sqlite3_
2eec0 6f 70 65 6e 5f 76 32 28 29 2c 20 6f 72 20 69 66  open_v2(), or if
2eed0 20 69 74 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20   it has.** been 
2eee0 65 6e 61 62 6c 65 64 20 67 6c 6f 62 61 6c 6c 79  enabled globally
2eef0 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49   using the [SQLI
2ef00 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 5d 20 6f  TE_CONFIG_URI] o
2ef10 70 74 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 2a  ption with the.*
2ef20 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  * [sqlite3_confi
2ef30 67 28 29 5d 20 6d 65 74 68 6f 64 20 6f 72 20 62  g()] method or b
2ef40 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55 53  y the [SQLITE_US
2ef50 45 5f 55 52 49 5d 20 63 6f 6d 70 69 6c 65 2d 74  E_URI] compile-t
2ef60 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 55  ime option..** U
2ef70 52 49 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 65  RI filename inte
2ef80 72 70 72 65 74 61 74 69 6f 6e 20 69 73 20 74 75  rpretation is tu
2ef90 72 6e 65 64 20 6f 66 66 0a 2a 2a 20 62 79 20 64  rned off.** by d
2efa0 65 66 61 75 6c 74 2c 20 62 75 74 20 66 75 74 75  efault, but futu
2efb0 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53  re releases of S
2efc0 51 4c 69 74 65 20 6d 69 67 68 74 20 65 6e 61 62  QLite might enab
2efd0 6c 65 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 0a  le URI filename.
2efe0 2a 2a 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f  ** interpretatio
2eff0 6e 20 62 79 20 64 65 66 61 75 6c 74 2e 20 20 53  n by default.  S
2f000 65 65 20 22 5b 55 52 49 20 66 69 6c 65 6e 61 6d  ee "[URI filenam
2f010 65 73 5d 22 20 66 6f 72 20 61 64 64 69 74 69 6f  es]" for additio
2f020 6e 61 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69  nal.** informati
2f030 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 55 52 49 20 66 69  on..**.** URI fi
2f040 6c 65 6e 61 6d 65 73 20 61 72 65 20 70 61 72 73  lenames are pars
2f050 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20  ed according to 
2f060 52 46 43 20 33 39 38 36 2e 20 5e 49 66 20 74 68  RFC 3986. ^If th
2f070 65 20 55 52 49 20 63 6f 6e 74 61 69 6e 73 20 61  e URI contains a
2f080 6e 0a 2a 2a 20 61 75 74 68 6f 72 69 74 79 2c 20  n.** authority, 
2f090 74 68 65 6e 20 69 74 20 6d 75 73 74 20 62 65 20  then it must be 
2f0a0 65 69 74 68 65 72 20 61 6e 20 65 6d 70 74 79 20  either an empty 
2f0b0 73 74 72 69 6e 67 20 6f 72 20 74 68 65 20 73 74  string or the st
2f0c0 72 69 6e 67 20 0a 2a 2a 20 22 6c 6f 63 61 6c 68  ring .** "localh
2f0d0 6f 73 74 22 2e 20 5e 49 66 20 74 68 65 20 61 75  ost". ^If the au
2f0e0 74 68 6f 72 69 74 79 20 69 73 20 6e 6f 74 20 61  thority is not a
2f0f0 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f  n empty string o
2f100 72 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2c 20 61  r "localhost", a
2f110 6e 20 0a 2a 2a 20 65 72 72 6f 72 20 69 73 20 72  n .** error is r
2f120 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 63  eturned to the c
2f130 61 6c 6c 65 72 2e 20 5e 54 68 65 20 66 72 61 67  aller. ^The frag
2f140 6d 65 6e 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f  ment component o
2f150 66 20 61 20 55 52 49 2c 20 69 66 20 0a 2a 2a 20  f a URI, if .** 
2f160 70 72 65 73 65 6e 74 2c 20 69 73 20 69 67 6e 6f  present, is igno
2f170 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69  red..**.** ^SQLi
2f180 74 65 20 75 73 65 73 20 74 68 65 20 70 61 74 68  te uses the path
2f190 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 74 68   component of th
2f1a0 65 20 55 52 49 20 61 73 20 74 68 65 20 6e 61 6d  e URI as the nam
2f1b0 65 20 6f 66 20 74 68 65 20 64 69 73 6b 20 66 69  e of the disk fi
2f1c0 6c 65 0a 2a 2a 20 77 68 69 63 68 20 63 6f 6e 74  le.** which cont
2f1d0 61 69 6e 73 20 74 68 65 20 64 61 74 61 62 61 73  ains the databas
2f1e0 65 2e 20 5e 49 66 20 74 68 65 20 70 61 74 68 20  e. ^If the path 
2f1f0 62 65 67 69 6e 73 20 77 69 74 68 20 61 20 27 2f  begins with a '/
2f200 27 20 63 68 61 72 61 63 74 65 72 2c 20 0a 2a 2a  ' character, .**
2f210 20 74 68 65 6e 20 69 74 20 69 73 20 69 6e 74 65   then it is inte
2f220 72 70 72 65 74 65 64 20 61 73 20 61 6e 20 61 62  rpreted as an ab
2f230 73 6f 6c 75 74 65 20 70 61 74 68 2e 20 5e 49 66  solute path. ^If
2f240 20 74 68 65 20 70 61 74 68 20 64 6f 65 73 20 6e   the path does n
2f250 6f 74 20 62 65 67 69 6e 20 0a 2a 2a 20 77 69 74  ot begin .** wit
2f260 68 20 61 20 27 2f 27 20 28 6d 65 61 6e 69 6e 67  h a '/' (meaning
2f270 20 74 68 61 74 20 74 68 65 20 61 75 74 68 6f 72   that the author
2f280 69 74 79 20 73 65 63 74 69 6f 6e 20 69 73 20 6f  ity section is o
2f290 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20  mitted from the 
2f2a0 55 52 49 29 0a 2a 2a 20 74 68 65 6e 20 74 68 65  URI).** then the
2f2b0 20 70 61 74 68 20 69 73 20 69 6e 74 65 72 70 72   path is interpr
2f2c0 65 74 65 64 20 61 73 20 61 20 72 65 6c 61 74 69  eted as a relati
2f2d0 76 65 20 70 61 74 68 2e 20 0a 2a 2a 20 5e 28 4f  ve path. .** ^(O
2f2e0 6e 20 77 69 6e 64 6f 77 73 2c 20 74 68 65 20 66  n windows, the f
2f2f0 69 72 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f  irst component o
2f300 66 20 61 6e 20 61 62 73 6f 6c 75 74 65 20 70 61  f an absolute pa
2f310 74 68 20 0a 2a 2a 20 69 73 20 61 20 64 72 69 76  th .** is a driv
2f320 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20  e specification 
2f330 28 65 2e 67 2e 20 22 43 3a 22 29 2e 29 5e 0a 2a  (e.g. "C:").)^.*
2f340 2a 0a 2a 2a 20 5b 5b 63 6f 72 65 20 55 52 49 20  *.** [[core URI 
2f350 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73  query parameters
2f360 5d 5d 0a 2a 2a 20 54 68 65 20 71 75 65 72 79 20  ]].** The query 
2f370 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55  component of a U
2f380 52 49 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 70  RI may contain p
2f390 61 72 61 6d 65 74 65 72 73 20 74 68 61 74 20 61  arameters that a
2f3a0 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 0a 2a  re interpreted.*
2f3b0 2a 20 65 69 74 68 65 72 20 62 79 20 53 51 4c 69  * either by SQLi
2f3c0 74 65 20 69 74 73 65 6c 66 2c 20 6f 72 20 62 79  te itself, or by
2f3d0 20 61 20 5b 56 46 53 20 7c 20 63 75 73 74 6f 6d   a [VFS | custom
2f3e0 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74   VFS implementat
2f3f0 69 6f 6e 5d 2e 0a 2a 2a 20 53 51 4c 69 74 65 20  ion]..** SQLite 
2f400 61 6e 64 20 69 74 73 20 62 75 69 6c 74 2d 69 6e  and its built-in
2f410 20 5b 56 46 53 65 73 5d 20 69 6e 74 65 72 70 72   [VFSes] interpr
2f420 65 74 20 74 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77  et the.** follow
2f430 69 6e 67 20 71 75 65 72 79 20 70 61 72 61 6d 65  ing query parame
2f440 74 65 72 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e  ters:.**.** <ul>
2f450 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 76 66  .**   <li> <b>vf
2f460 73 3c 2f 62 3e 3a 20 5e 54 68 65 20 22 76 66 73  s</b>: ^The "vfs
2f470 22 20 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20  " parameter may 
2f480 62 65 20 75 73 65 64 20 74 6f 20 73 70 65 63 69  be used to speci
2f490 66 79 20 74 68 65 20 6e 61 6d 65 20 6f 66 0a 2a  fy the name of.*
2f4a0 2a 20 20 20 20 20 61 20 56 46 53 20 6f 62 6a 65  *     a VFS obje
2f4b0 63 74 20 74 68 61 74 20 70 72 6f 76 69 64 65 73  ct that provides
2f4c0 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
2f4d0 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65 20  ystem interface 
2f4e0 74 68 61 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 20  that should.**  
2f4f0 20 20 20 62 65 20 75 73 65 64 20 74 6f 20 61 63     be used to ac
2f500 63 65 73 73 20 74 68 65 20 64 61 74 61 62 61 73  cess the databas
2f510 65 20 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2e 20  e file on disk. 
2f520 5e 49 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20  ^If this option 
2f530 69 73 20 73 65 74 20 74 6f 0a 2a 2a 20 20 20 20  is set to.**    
2f540 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
2f550 20 74 68 65 20 64 65 66 61 75 6c 74 20 56 46 53   the default VFS
2f560 20 6f 62 6a 65 63 74 20 69 73 20 75 73 65 64 2e   object is used.
2f570 20 5e 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20   ^Specifying an 
2f580 75 6e 6b 6e 6f 77 6e 0a 2a 2a 20 20 20 20 20 56  unknown.**     V
2f590 46 53 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 20  FS is an error. 
2f5a0 5e 49 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ^If sqlite3_open
2f5b0 5f 76 32 28 29 20 69 73 20 75 73 65 64 20 61 6e  _v2() is used an
2f5c0 64 20 74 68 65 20 76 66 73 20 6f 70 74 69 6f 6e  d the vfs option
2f5d0 20 69 73 0a 2a 2a 20 20 20 20 20 70 72 65 73 65   is.**     prese
2f5e0 6e 74 2c 20 74 68 65 6e 20 74 68 65 20 56 46 53  nt, then the VFS
2f5f0 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68   specified by th
2f600 65 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 70  e option takes p
2f610 72 65 63 65 64 65 6e 63 65 20 6f 76 65 72 0a 2a  recedence over.*
2f620 2a 20 20 20 20 20 74 68 65 20 76 61 6c 75 65 20  *     the value 
2f630 70 61 73 73 65 64 20 61 73 20 74 68 65 20 66 6f  passed as the fo
2f640 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74  urth parameter t
2f650 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  o sqlite3_open_v
2f660 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69  2()..**.**   <li
2f670 3e 20 3c 62 3e 6d 6f 64 65 3c 2f 62 3e 3a 20 5e  > <b>mode</b>: ^
2f680 28 54 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65  (The mode parame
2f690 74 65 72 20 6d 61 79 20 62 65 20 73 65 74 20 74  ter may be set t
2f6a0 6f 20 65 69 74 68 65 72 20 22 72 6f 22 2c 20 22  o either "ro", "
2f6b0 72 77 22 2c 0a 2a 2a 20 20 20 20 20 22 72 77 63  rw",.**     "rwc
2f6c0 22 2c 20 6f 72 20 22 6d 65 6d 6f 72 79 22 2e 20  ", or "memory". 
2f6d0 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 65  Attempting to se
2f6e0 74 20 69 74 20 74 6f 20 61 6e 79 20 6f 74 68 65  t it to any othe
2f6f0 72 20 76 61 6c 75 65 20 69 73 0a 2a 2a 20 20 20  r value is.**   
2f700 20 20 61 6e 20 65 72 72 6f 72 29 5e 2e 20 0a 2a    an error)^. .*
2f710 2a 20 20 20 20 20 5e 49 66 20 22 72 6f 22 20 69  *     ^If "ro" i
2f720 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
2f730 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
2f740 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61  s opened for rea
2f750 64 2d 6f 6e 6c 79 20 0a 2a 2a 20 20 20 20 20 61  d-only .**     a
2f760 63 63 65 73 73 2c 20 6a 75 73 74 20 61 73 20 69  ccess, just as i
2f770 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50  f the [SQLITE_OP
2f780 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 20 66 6c 61  EN_READONLY] fla
2f790 67 20 68 61 64 20 62 65 65 6e 20 73 65 74 20 69  g had been set i
2f7a0 6e 20 74 68 65 20 0a 2a 2a 20 20 20 20 20 74 68  n the .**     th
2f7b0 69 72 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ird argument to 
2f7c0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2f7d0 29 2e 20 5e 49 66 20 74 68 65 20 6d 6f 64 65 20  ). ^If the mode 
2f7e0 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 20 74 6f  option is set to
2f7f0 20 0a 2a 2a 20 20 20 20 20 22 72 77 22 2c 20 74   .**     "rw", t
2f800 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
2f810 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72   is opened for r
2f820 65 61 64 2d 77 72 69 74 65 20 28 62 75 74 20 6e  ead-write (but n
2f830 6f 74 20 63 72 65 61 74 65 29 20 0a 2a 2a 20 20  ot create) .**  
2f840 20 20 20 61 63 63 65 73 73 2c 20 61 73 20 69 66     access, as if
2f850 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41   SQLITE_OPEN_REA
2f860 44 57 52 49 54 45 20 28 62 75 74 20 6e 6f 74 20  DWRITE (but not 
2f870 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41  SQLITE_OPEN_CREA
2f880 54 45 29 20 68 61 64 20 0a 2a 2a 20 20 20 20 20  TE) had .**     
2f890 62 65 65 6e 20 73 65 74 2e 20 5e 56 61 6c 75 65  been set. ^Value
2f8a0 20 22 72 77 63 22 20 69 73 20 65 71 75 69 76 61   "rwc" is equiva
2f8b0 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20  lent to setting 
2f8c0 62 6f 74 68 20 0a 2a 2a 20 20 20 20 20 53 51 4c  both .**     SQL
2f8d0 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49  ITE_OPEN_READWRI
2f8e0 54 45 20 61 6e 64 20 53 51 4c 49 54 45 5f 4f 50  TE and SQLITE_OP
2f8f0 45 4e 5f 43 52 45 41 54 45 2e 20 20 5e 49 66 20  EN_CREATE.  ^If 
2f900 74 68 65 20 6d 6f 64 65 20 6f 70 74 69 6f 6e 20  the mode option 
2f910 69 73 0a 2a 2a 20 20 20 20 20 73 65 74 20 74 6f  is.**     set to
2f920 20 22 6d 65 6d 6f 72 79 22 20 74 68 65 6e 20 61   "memory" then a
2f930 20 70 75 72 65 20 5b 69 6e 2d 6d 65 6d 6f 72 79   pure [in-memory
2f940 20 64 61 74 61 62 61 73 65 5d 20 74 68 61 74 20   database] that 
2f950 6e 65 76 65 72 20 72 65 61 64 73 0a 2a 2a 20 20  never reads.**  
2f960 20 20 20 6f 72 20 77 72 69 74 65 73 20 66 72 6f     or writes fro
2f970 6d 20 64 69 73 6b 20 69 73 20 75 73 65 64 2e 20  m disk is used. 
2f980 5e 49 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20  ^It is an error 
2f990 74 6f 20 73 70 65 63 69 66 79 20 61 20 76 61 6c  to specify a val
2f9a0 75 65 20 66 6f 72 0a 2a 2a 20 20 20 20 20 74 68  ue for.**     th
2f9b0 65 20 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72  e mode parameter
2f9c0 20 74 68 61 74 20 69 73 20 6c 65 73 73 20 72 65   that is less re
2f9d0 73 74 72 69 63 74 69 76 65 20 74 68 61 6e 20 74  strictive than t
2f9e0 68 61 74 20 73 70 65 63 69 66 69 65 64 20 62 79  hat specified by
2f9f0 0a 2a 2a 20 20 20 20 20 74 68 65 20 66 6c 61 67  .**     the flag
2fa00 73 20 70 61 73 73 65 64 20 69 6e 20 74 68 65 20  s passed in the 
2fa10 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
2fa20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  to sqlite3_open_
2fa30 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c  v2()..**.**   <l
2fa40 69 3e 20 3c 62 3e 63 61 63 68 65 3c 2f 62 3e 3a  i> <b>cache</b>:
2fa50 20 5e 54 68 65 20 63 61 63 68 65 20 70 61 72 61   ^The cache para
2fa60 6d 65 74 65 72 20 6d 61 79 20 62 65 20 73 65 74  meter may be set
2fa70 20 74 6f 20 65 69 74 68 65 72 20 22 73 68 61 72   to either "shar
2fa80 65 64 22 20 6f 72 0a 2a 2a 20 20 20 20 20 22 70  ed" or.**     "p
2fa90 72 69 76 61 74 65 22 2e 20 5e 53 65 74 74 69 6e  rivate". ^Settin
2faa0 67 20 69 74 20 74 6f 20 22 73 68 61 72 65 64 22  g it to "shared"
2fab0 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74   is equivalent t
2fac0 6f 20 73 65 74 74 69 6e 67 20 74 68 65 0a 2a 2a  o setting the.**
2fad0 20 20 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e       SQLITE_OPEN
2fae0 5f 53 48 41 52 45 44 43 41 43 48 45 20 62 69 74  _SHAREDCACHE bit
2faf0 20 69 6e 20 74 68 65 20 66 6c 61 67 73 20 61 72   in the flags ar
2fb00 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f  gument passed to
2fb10 0a 2a 2a 20 20 20 20 20 73 71 6c 69 74 65 33 5f  .**     sqlite3_
2fb20 6f 70 65 6e 5f 76 32 28 29 2e 20 5e 53 65 74 74  open_v2(). ^Sett
2fb30 69 6e 67 20 74 68 65 20 63 61 63 68 65 20 70 61  ing the cache pa
2fb40 72 61 6d 65 74 65 72 20 74 6f 20 22 70 72 69 76  rameter to "priv
2fb50 61 74 65 22 20 69 73 20 0a 2a 2a 20 20 20 20 20  ate" is .**     
2fb60 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65  equivalent to se
2fb70 74 74 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45  tting the SQLITE
2fb80 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43  _OPEN_PRIVATECAC
2fb90 48 45 20 62 69 74 2e 0a 2a 2a 20 20 20 20 20 5e  HE bit..**     ^
2fba0 49 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  If sqlite3_open_
2fbb0 76 32 28 29 20 69 73 20 75 73 65 64 20 61 6e 64  v2() is used and
2fbc0 20 74 68 65 20 22 63 61 63 68 65 22 20 70 61 72   the "cache" par
2fbd0 61 6d 65 74 65 72 20 69 73 20 70 72 65 73 65 6e  ameter is presen
2fbe0 74 20 69 6e 0a 2a 2a 20 20 20 20 20 61 20 55 52  t in.**     a UR
2fbf0 49 20 66 69 6c 65 6e 61 6d 65 2c 20 69 74 73 20  I filename, its 
2fc00 76 61 6c 75 65 20 6f 76 65 72 72 69 64 65 73 20  value overrides 
2fc10 61 6e 79 20 62 65 68 61 76 69 6f 72 20 72 65 71  any behavior req
2fc20 75 65 73 74 65 64 20 62 79 20 73 65 74 74 69 6e  uested by settin
2fc30 67 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f  g.**     SQLITE_
2fc40 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48  OPEN_PRIVATECACH
2fc50 45 20 6f 72 20 53 51 4c 49 54 45 5f 4f 50 45 4e  E or SQLITE_OPEN
2fc60 5f 53 48 41 52 45 44 43 41 43 48 45 20 66 6c 61  _SHAREDCACHE fla
2fc70 67 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c  g..**.**  <li> <
2fc80 62 3e 70 73 6f 77 3c 2f 62 3e 3a 20 5e 54 68 65  b>psow</b>: ^The
2fc90 20 70 73 6f 77 20 70 61 72 61 6d 65 74 65 72 20   psow parameter 
2fca0 69 6e 64 69 63 61 74 65 73 20 77 68 65 74 68 65  indicates whethe
2fcb0 72 20 6f 72 20 6e 6f 74 20 74 68 65 0a 2a 2a 20  r or not the.** 
2fcc0 20 20 20 20 5b 70 6f 77 65 72 73 61 66 65 20 6f      [powersafe o
2fcd0 76 65 72 77 72 69 74 65 5d 20 70 72 6f 70 65 72  verwrite] proper
2fce0 74 79 20 64 6f 65 73 20 6f 72 20 64 6f 65 73 20  ty does or does 
2fcf0 6e 6f 74 20 61 70 70 6c 79 20 74 6f 20 74 68 65  not apply to the
2fd00 0a 2a 2a 20 20 20 20 20 73 74 6f 72 61 67 65 20  .**     storage 
2fd10 6d 65 64 69 61 20 6f 6e 20 77 68 69 63 68 20 74  media on which t
2fd20 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
2fd30 20 72 65 73 69 64 65 73 2e 0a 2a 2a 0a 2a 2a 20   resides..**.** 
2fd40 20 3c 6c 69 3e 20 3c 62 3e 6e 6f 6c 6f 63 6b 3c   <li> <b>nolock<
2fd50 2f 62 3e 3a 20 5e 54 68 65 20 6e 6f 6c 6f 63 6b  /b>: ^The nolock
2fd60 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
2fd70 62 6f 6f 6c 65 61 6e 20 71 75 65 72 79 20 70 61  boolean query pa
2fd80 72 61 6d 65 74 65 72 0a 2a 2a 20 20 20 20 20 77  rameter.**     w
2fd90 68 69 63 68 20 69 66 20 73 65 74 20 64 69 73 61  hich if set disa
2fda0 62 6c 65 73 20 66 69 6c 65 20 6c 6f 63 6b 69 6e  bles file lockin
2fdb0 67 20 69 6e 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f  g in rollback jo
2fdc0 75 72 6e 61 6c 20 6d 6f 64 65 73 2e 20 20 54 68  urnal modes.  Th
2fdd0 69 73 0a 2a 2a 20 20 20 20 20 69 73 20 75 73 65  is.**     is use
2fde0 66 75 6c 20 66 6f 72 20 61 63 63 65 73 73 69 6e  ful for accessin
2fdf0 67 20 61 20 64 61 74 61 62 61 73 65 20 6f 6e 20  g a database on 
2fe00 61 20 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61  a filesystem tha
2fe10 74 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 20 20  t does not.**   
2fe20 20 20 73 75 70 70 6f 72 74 20 6c 6f 63 6b 69 6e    support lockin
2fe30 67 2e 20 20 43 61 75 74 69 6f 6e 3a 20 20 44 61  g.  Caution:  Da
2fe40 74 61 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f  tabase corruptio
2fe50 6e 20 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69  n might result i
2fe60 66 20 74 77 6f 0a 2a 2a 20 20 20 20 20 6f 72 20  f two.**     or 
2fe70 6d 6f 72 65 20 70 72 6f 63 65 73 73 65 73 20 77  more processes w
2fe80 72 69 74 65 20 74 6f 20 74 68 65 20 73 61 6d 65  rite to the same
2fe90 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 61 6e   database and an
2fea0 79 20 6f 6e 65 20 6f 66 20 74 68 6f 73 65 0a 2a  y one of those.*
2feb0 2a 20 20 20 20 20 70 72 6f 63 65 73 73 65 73 20  *     processes 
2fec0 75 73 65 73 20 6e 6f 6c 6f 63 6b 3d 31 2e 0a 2a  uses nolock=1..*
2fed0 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 69 6d  *.**  <li> <b>im
2fee0 6d 75 74 61 62 6c 65 3c 2f 62 3e 3a 20 5e 54 68  mutable</b>: ^Th
2fef0 65 20 69 6d 6d 75 74 61 62 6c 65 20 70 61 72 61  e immutable para
2ff00 6d 65 74 65 72 20 69 73 20 61 20 62 6f 6f 6c 65  meter is a boole
2ff10 61 6e 20 71 75 65 72 79 0a 2a 2a 20 20 20 20 20  an query.**     
2ff20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74 20 69  parameter that i
2ff30 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68  ndicates that th
2ff40 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2ff50 69 73 20 73 74 6f 72 65 64 20 6f 6e 0a 2a 2a 20  is stored on.** 
2ff60 20 20 20 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65      read-only me
2ff70 64 69 61 2e 20 20 5e 57 68 65 6e 20 69 6d 6d 75  dia.  ^When immu
2ff80 74 61 62 6c 65 20 69 73 20 73 65 74 2c 20 53 51  table is set, SQ
2ff90 4c 69 74 65 20 61 73 73 75 6d 65 73 20 74 68 61  Lite assumes tha
2ffa0 74 20 74 68 65 0a 2a 2a 20 20 20 20 20 64 61 74  t the.**     dat
2ffb0 61 62 61 73 65 20 66 69 6c 65 20 63 61 6e 6e 6f  abase file canno
2ffc0 74 20 62 65 20 63 68 61 6e 67 65 64 2c 20 65 76  t be changed, ev
2ffd0 65 6e 20 62 79 20 61 20 70 72 6f 63 65 73 73 20  en by a process 
2ffe0 77 69 74 68 20 68 69 67 68 65 72 0a 2a 2a 20 20  with higher.**  
2fff0 20 20 20 70 72 69 76 69 6c 65 67 65 2c 20 61 6e     privilege, an
30000 64 20 73 6f 20 74 68 65 20 64 61 74 61 62 61 73  d so the databas
30010 65 20 69 73 20 6f 70 65 6e 65 64 20 72 65 61 64  e is opened read
30020 2d 6f 6e 6c 79 20 61 6e 64 20 61 6c 6c 20 6c 6f  -only and all lo
30030 63 6b 69 6e 67 0a 2a 2a 20 20 20 20 20 61 6e 64  cking.**     and
30040 20 63 68 61 6e 67 65 20 64 65 74 65 63 74 69 6f   change detectio
30050 6e 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20  n is disabled.  
30060 43 61 75 74 69 6f 6e 3a 20 53 65 74 74 69 6e 67  Caution: Setting
30070 20 74 68 65 20 69 6d 6d 75 74 61 62 6c 65 0a 2a   the immutable.*
30080 2a 20 20 20 20 20 70 72 6f 70 65 72 74 79 20 6f  *     property o
30090 6e 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  n a database fil
300a0 65 20 74 68 61 74 20 64 6f 65 73 20 69 6e 20 66  e that does in f
300b0 61 63 74 20 63 68 61 6e 67 65 20 63 61 6e 20 72  act change can r
300c0 65 73 75 6c 74 0a 2a 2a 20 20 20 20 20 69 6e 20  esult.**     in 
300d0 69 6e 63 6f 72 72 65 63 74 20 71 75 65 72 79 20  incorrect query 
300e0 72 65 73 75 6c 74 73 20 61 6e 64 2f 6f 72 20 5b  results and/or [
300f0 53 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 5d 20  SQLITE_CORRUPT] 
30100 65 72 72 6f 72 73 2e 0a 2a 2a 20 20 20 20 20 53  errors..**     S
30110 65 65 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45  ee also: [SQLITE
30120 5f 49 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45  _IOCAP_IMMUTABLE
30130 5d 2e 0a 2a 2a 20 20 20 20 20 20 20 0a 2a 2a 20  ]..**       .** 
30140 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 53 70 65  </ul>.**.** ^Spe
30150 63 69 66 79 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f  cifying an unkno
30160 77 6e 20 70 61 72 61 6d 65 74 65 72 20 69 6e 20  wn parameter in 
30170 74 68 65 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e  the query compon
30180 65 6e 74 20 6f 66 20 61 20 55 52 49 20 69 73 20  ent of a URI is 
30190 6e 6f 74 20 61 6e 0a 2a 2a 20 65 72 72 6f 72 2e  not an.** error.
301a0 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e    Future version
301b0 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68  s of SQLite migh
301c0 74 20 75 6e 64 65 72 73 74 61 6e 64 20 61 64 64  t understand add
301d0 69 74 69 6f 6e 61 6c 20 71 75 65 72 79 0a 2a 2a  itional query.**
301e0 20 70 61 72 61 6d 65 74 65 72 73 2e 20 20 53 65   parameters.  Se
301f0 65 20 22 5b 71 75 65 72 79 20 70 61 72 61 6d 65  e "[query parame
30200 74 65 72 73 20 77 69 74 68 20 73 70 65 63 69 61  ters with specia
30210 6c 20 6d 65 61 6e 69 6e 67 20 74 6f 20 53 51 4c  l meaning to SQL
30220 69 74 65 5d 22 20 66 6f 72 0a 2a 2a 20 61 64 64  ite]" for.** add
30230 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
30240 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49  ion..**.** [[URI
30250 20 66 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c   filename exampl
30260 65 73 5d 5d 20 3c 68 33 3e 55 52 49 20 66 69 6c  es]] <h3>URI fil
30270 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73 3c 2f  ename examples</
30280 68 33 3e 0a 2a 2a 0a 2a 2a 20 3c 74 61 62 6c 65  h3>.**.** <table
30290 20 62 6f 72 64 65 72 3d 22 31 22 20 61 6c 69 67   border="1" alig
302a0 6e 3d 63 65 6e 74 65 72 20 63 65 6c 6c 70 61 64  n=center cellpad
302b0 64 69 6e 67 3d 35 3e 0a 2a 2a 20 3c 74 72 3e 3c  ding=5>.** <tr><
302c0 74 68 3e 20 55 52 49 20 66 69 6c 65 6e 61 6d 65  th> URI filename
302d0 73 20 3c 74 68 3e 20 52 65 73 75 6c 74 73 0a 2a  s <th> Results.*
302e0 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a  * <tr><td> file:
302f0 64 61 74 61 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a  data.db <td> .**
30300 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74            Open t
30310 68 65 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62  he file "data.db
30320 22 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74  " in the current
30330 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a 20 3c   directory..** <
30340 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f 68 6f  tr><td> file:/ho
30350 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 3c  me/fred/data.db<
30360 62 72 3e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20  br>.**          
30370 66 69 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f 66 72 65  file:///home/fre
30380 64 2f 64 61 74 61 2e 64 62 20 3c 62 72 3e 20 0a  d/data.db <br> .
30390 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65  **          file
303a0 3a 2f 2f 6c 6f 63 61 6c 68 6f 73 74 2f 68 6f 6d  ://localhost/hom
303b0 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c  e/fred/data.db <
303c0 62 72 3e 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20  br> <td> .**    
303d0 20 20 20 20 20 20 4f 70 65 6e 20 74 68 65 20 64        Open the d
303e0 61 74 61 62 61 73 65 20 66 69 6c 65 20 22 2f 68  atabase file "/h
303f0 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62  ome/fred/data.db
30400 22 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66  "..** <tr><td> f
30410 69 6c 65 3a 2f 2f 64 61 72 6b 73 74 61 72 2f 68  ile://darkstar/h
30420 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62  ome/fred/data.db
30430 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20   <td> .**       
30440 20 20 20 41 6e 20 65 72 72 6f 72 2e 20 22 64 61     An error. "da
30450 72 6b 73 74 61 72 22 20 69 73 20 6e 6f 74 20 61  rkstar" is not a
30460 20 72 65 63 6f 67 6e 69 7a 65 64 20 61 75 74 68   recognized auth
30470 6f 72 69 74 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74  ority..** <tr><t
30480 64 20 73 74 79 6c 65 3d 22 77 68 69 74 65 2d 73  d style="white-s
30490 70 61 63 65 3a 6e 6f 77 72 61 70 22 3e 20 0a 2a  pace:nowrap"> .*
304a0 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a  *          file:
304b0 2f 2f 2f 43 3a 2f 44 6f 63 75 6d 65 6e 74 73 25  ///C:/Documents%
304c0 32 30 61 6e 64 25 32 30 53 65 74 74 69 6e 67 73  20and%20Settings
304d0 2f 66 72 65 64 2f 44 65 73 6b 74 6f 70 2f 64 61  /fred/Desktop/da
304e0 74 61 2e 64 62 0a 2a 2a 20 20 20 20 20 3c 74 64  ta.db.**     <td
304f0 3e 20 57 69 6e 64 6f 77 73 20 6f 6e 6c 79 3a 20  > Windows only: 
30500 4f 70 65 6e 20 74 68 65 20 66 69 6c 65 20 22 64  Open the file "d
30510 61 74 61 2e 64 62 22 20 6f 6e 20 66 72 65 64 27  ata.db" on fred'
30520 73 20 64 65 73 6b 74 6f 70 20 6f 6e 20 64 72 69  s desktop on dri
30530 76 65 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 43  ve.**          C
30540 3a 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65  :. Note that the
30550 20 25 32 30 20 65 73 63 61 70 69 6e 67 20 69 6e   %20 escaping in
30560 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73   this example is
30570 20 6e 6f 74 20 73 74 72 69 63 74 6c 79 20 0a 2a   not strictly .*
30580 2a 20 20 20 20 20 20 20 20 20 20 6e 65 63 65 73  *          neces
30590 73 61 72 79 20 2d 20 73 70 61 63 65 20 63 68 61  sary - space cha
305a0 72 61 63 74 65 72 73 20 63 61 6e 20 62 65 20 75  racters can be u
305b0 73 65 64 20 6c 69 74 65 72 61 6c 6c 79 0a 2a 2a  sed literally.**
305c0 20 20 20 20 20 20 20 20 20 20 69 6e 20 55 52 49            in URI
305d0 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 2a 2a 20 3c   filenames..** <
305e0 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74  tr><td> file:dat
305f0 61 2e 64 62 3f 6d 6f 64 65 3d 72 6f 26 63 61 63  a.db?mode=ro&cac
30600 68 65 3d 70 72 69 76 61 74 65 20 3c 74 64 3e 20  he=private <td> 
30610 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65  .**          Ope
30620 6e 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22  n file "data.db"
30630 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
30640 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 72 65  directory for re
30650 61 64 2d 6f 6e 6c 79 20 61 63 63 65 73 73 2e 0a  ad-only access..
30660 2a 2a 20 20 20 20 20 20 20 20 20 20 52 65 67 61  **          Rega
30670 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65  rdless of whethe
30680 72 20 6f 72 20 6e 6f 74 20 73 68 61 72 65 64 2d  r or not shared-
30690 63 61 63 68 65 20 6d 6f 64 65 20 69 73 20 65 6e  cache mode is en
306a0 61 62 6c 65 64 20 62 79 0a 2a 2a 20 20 20 20 20  abled by.**     
306b0 20 20 20 20 20 64 65 66 61 75 6c 74 2c 20 75 73       default, us
306c0 65 20 61 20 70 72 69 76 61 74 65 20 63 61 63 68  e a private cach
306d0 65 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66  e..** <tr><td> f
306e0 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f 64  ile:/home/fred/d
306f0 61 74 61 2e 64 62 3f 76 66 73 3d 75 6e 69 78 2d  ata.db?vfs=unix-
30700 64 6f 74 66 69 6c 65 20 3c 74 64 3e 0a 2a 2a 20  dotfile <td>.** 
30710 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20 66 69           Open fi
30720 6c 65 20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64  le "/home/fred/d
30730 61 74 61 2e 64 62 22 2e 20 55 73 65 20 74 68 65  ata.db". Use the
30740 20 73 70 65 63 69 61 6c 20 56 46 53 20 22 75 6e   special VFS "un
30750 69 78 2d 64 6f 74 66 69 6c 65 22 0a 2a 2a 20 20  ix-dotfile".**  
30760 20 20 20 20 20 20 20 20 74 68 61 74 20 75 73 65          that use
30770 73 20 64 6f 74 2d 66 69 6c 65 73 20 69 6e 20 70  s dot-files in p
30780 6c 61 63 65 20 6f 66 20 70 6f 73 69 78 20 61 64  lace of posix ad
30790 76 69 73 6f 72 79 20 6c 6f 63 6b 69 6e 67 2e 0a  visory locking..
307a0 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65  ** <tr><td> file
307b0 3a 64 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 65  :data.db?mode=re
307c0 61 64 6f 6e 6c 79 20 3c 74 64 3e 20 0a 2a 2a 20  adonly <td> .** 
307d0 20 20 20 20 20 20 20 20 20 41 6e 20 65 72 72 6f           An erro
307e0 72 2e 20 22 72 65 61 64 6f 6e 6c 79 22 20 69 73  r. "readonly" is
307f0 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 6f 70 74   not a valid opt
30800 69 6f 6e 20 66 6f 72 20 74 68 65 20 22 6d 6f 64  ion for the "mod
30810 65 22 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a  e" parameter..**
30820 20 3c 2f 74 61 62 6c 65 3e 0a 2a 2a 0a 2a 2a 20   </table>.**.** 
30830 5e 55 52 49 20 68 65 78 61 64 65 63 69 6d 61 6c  ^URI hexadecimal
30840 20 65 73 63 61 70 65 20 73 65 71 75 65 6e 63 65   escape sequence
30850 73 20 28 25 48 48 29 20 61 72 65 20 73 75 70 70  s (%HH) are supp
30860 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74 68 65  orted within the
30870 20 70 61 74 68 20 61 6e 64 0a 2a 2a 20 71 75 65   path and.** que
30880 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66  ry components of
30890 20 61 20 55 52 49 2e 20 41 20 68 65 78 61 64 65   a URI. A hexade
308a0 63 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71  cimal escape seq
308b0 75 65 6e 63 65 20 63 6f 6e 73 69 73 74 73 20 6f  uence consists o
308c0 66 20 61 0a 2a 2a 20 70 65 72 63 65 6e 74 20 73  f a.** percent s
308d0 69 67 6e 20 2d 20 22 25 22 20 2d 20 66 6f 6c 6c  ign - "%" - foll
308e0 6f 77 65 64 20 62 79 20 65 78 61 63 74 6c 79 20  owed by exactly 
308f0 74 77 6f 20 68 65 78 61 64 65 63 69 6d 61 6c 20  two hexadecimal 
30900 64 69 67 69 74 73 20 0a 2a 2a 20 73 70 65 63 69  digits .** speci
30910 66 79 69 6e 67 20 61 6e 20 6f 63 74 65 74 20 76  fying an octet v
30920 61 6c 75 65 2e 20 5e 42 65 66 6f 72 65 20 74 68  alue. ^Before th
30930 65 20 70 61 74 68 20 6f 72 20 71 75 65 72 79 20  e path or query 
30940 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 0a  components of a.
30950 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20  ** URI filename 
30960 61 72 65 20 69 6e 74 65 72 70 72 65 74 65 64 2c  are interpreted,
30970 20 74 68 65 79 20 61 72 65 20 65 6e 63 6f 64 65   they are encode
30980 64 20 75 73 69 6e 67 20 55 54 46 2d 38 20 61 6e  d using UTF-8 an
30990 64 20 61 6c 6c 20 0a 2a 2a 20 68 65 78 61 64 65  d all .** hexade
309a0 63 69 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71  cimal escape seq
309b0 75 65 6e 63 65 73 20 72 65 70 6c 61 63 65 64 20  uences replaced 
309c0 62 79 20 61 20 73 69 6e 67 6c 65 20 62 79 74 65  by a single byte
309d0 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a   containing the.
309e0 2a 2a 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ** corresponding
309f0 20 6f 63 74 65 74 2e 20 49 66 20 74 68 69 73 20   octet. If this 
30a00 70 72 6f 63 65 73 73 20 67 65 6e 65 72 61 74 65  process generate
30a10 73 20 61 6e 20 69 6e 76 61 6c 69 64 20 55 54 46  s an invalid UTF
30a20 2d 38 20 65 6e 63 6f 64 69 6e 67 2c 0a 2a 2a 20  -8 encoding,.** 
30a30 74 68 65 20 72 65 73 75 6c 74 73 20 61 72 65 20  the results are 
30a40 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a  undefined..**.**
30a50 20 3c 62 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64   <b>Note to Wind
30a60 6f 77 73 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20  ows users:</b>  
30a70 54 68 65 20 65 6e 63 6f 64 69 6e 67 20 75 73 65  The encoding use
30a80 64 20 66 6f 72 20 74 68 65 20 66 69 6c 65 6e 61  d for the filena
30a90 6d 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 6f  me argument.** o
30aa0 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29  f sqlite3_open()
30ab0 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65   and sqlite3_ope
30ac0 6e 5f 76 32 28 29 20 6d 75 73 74 20 62 65 20 55  n_v2() must be U
30ad0 54 46 2d 38 2c 20 6e 6f 74 20 77 68 61 74 65 76  TF-8, not whatev
30ae0 65 72 0a 2a 2a 20 63 6f 64 65 70 61 67 65 20 69  er.** codepage i
30af0 73 20 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69  s currently defi
30b00 6e 65 64 2e 20 20 46 69 6c 65 6e 61 6d 65 73 20  ned.  Filenames 
30b10 63 6f 6e 74 61 69 6e 69 6e 67 20 69 6e 74 65 72  containing inter
30b20 6e 61 74 69 6f 6e 61 6c 0a 2a 2a 20 63 68 61 72  national.** char
30b30 61 63 74 65 72 73 20 6d 75 73 74 20 62 65 20 63  acters must be c
30b40 6f 6e 76 65 72 74 65 64 20 74 6f 20 55 54 46 2d  onverted to UTF-
30b50 38 20 70 72 69 6f 72 20 74 6f 20 70 61 73 73 69  8 prior to passi
30b60 6e 67 20 74 68 65 6d 20 69 6e 74 6f 0a 2a 2a 20  ng them into.** 
30b70 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f  sqlite3_open() o
30b80 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  r sqlite3_open_v
30b90 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f  2()..**.** <b>No
30ba0 74 65 20 74 6f 20 57 69 6e 64 6f 77 73 20 52 75  te to Windows Ru
30bb0 6e 74 69 6d 65 20 75 73 65 72 73 3a 3c 2f 62 3e  ntime users:</b>
30bc0 20 20 54 68 65 20 74 65 6d 70 6f 72 61 72 79 20    The temporary 
30bd0 64 69 72 65 63 74 6f 72 79 20 6d 75 73 74 20 62  directory must b
30be0 65 20 73 65 74 0a 2a 2a 20 70 72 69 6f 72 20 74  e set.** prior t
30bf0 6f 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65  o calling sqlite
30c00 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69  3_open() or sqli
30c10 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 20  te3_open_v2().  
30c20 4f 74 68 65 72 77 69 73 65 2c 20 76 61 72 69 6f  Otherwise, vario
30c30 75 73 0a 2a 2a 20 66 65 61 74 75 72 65 73 20 74  us.** features t
30c40 68 61 74 20 72 65 71 75 69 72 65 20 74 68 65 20  hat require the 
30c50 75 73 65 20 6f 66 20 74 65 6d 70 6f 72 61 72 79  use of temporary
30c60 20 66 69 6c 65 73 20 6d 61 79 20 66 61 69 6c 2e   files may fail.
30c70 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a  .**.** See also:
30c80 20 5b 73 71 6c 69 74 65 33 5f 74 65 6d 70 5f 64   [sqlite3_temp_d
30c90 69 72 65 63 74 6f 72 79 5d 0a 2a 2f 0a 53 51 4c  irectory].*/.SQL
30ca0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
30cb0 74 65 33 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e 73  te3_open(.  cons
30cc0 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65  t char *filename
30cd0 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20  ,   /* Database 
30ce0 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38 29  filename (UTF-8)
30cf0 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a   */.  sqlite3 **
30d00 70 70 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a  ppDb          /*
30d10 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20   OUT: SQLite db 
30d20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c  handle */.);.SQL
30d30 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
30d40 74 65 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63 6f  te3_open16(.  co
30d50 6e 73 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e 61  nst void *filena
30d60 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73  me,   /* Databas
30d70 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d  e filename (UTF-
30d80 31 36 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  16) */.  sqlite3
30d90 20 2a 2a 70 70 44 62 20 20 20 20 20 20 20 20 20   **ppDb         
30da0 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20   /* OUT: SQLite 
30db0 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a  db handle */.);.
30dc0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
30dd0 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 0a  qlite3_open_v2(.
30de0 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69    const char *fi
30df0 6c 65 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74  lename,   /* Dat
30e00 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28  abase filename (
30e10 55 54 46 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69  UTF-8) */.  sqli
30e20 74 65 33 20 2a 2a 70 70 44 62 2c 20 20 20 20 20  te3 **ppDb,     
30e30 20 20 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69      /* OUT: SQLi
30e40 74 65 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a  te db handle */.
30e50 20 20 69 6e 74 20 66 6c 61 67 73 2c 20 20 20 20    int flags,    
30e60 20 20 20 20 20 20 20 20 20 20 2f 2a 20 46 6c 61            /* Fla
30e70 67 73 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  gs */.  const ch
30e80 61 72 20 2a 7a 56 66 73 20 20 20 20 20 20 20 20  ar *zVfs        
30e90 2f 2a 20 4e 61 6d 65 20 6f 66 20 56 46 53 20 6d  /* Name of VFS m
30ea0 6f 64 75 6c 65 20 74 6f 20 75 73 65 20 2a 2f 0a  odule to use */.
30eb0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
30ec0 45 46 3a 20 4f 62 74 61 69 6e 20 56 61 6c 75 65  EF: Obtain Value
30ed0 73 20 46 6f 72 20 55 52 49 20 50 61 72 61 6d 65  s For URI Parame
30ee0 74 65 72 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ters.**.** These
30ef0 20 61 72 65 20 75 74 69 6c 69 74 79 20 72 6f 75   are utility rou
30f00 74 69 6e 65 73 2c 20 75 73 65 66 75 6c 20 74 6f  tines, useful to
30f10 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74   VFS implementat
30f20 69 6f 6e 73 2c 20 74 68 61 74 20 63 68 65 63 6b  ions, that check
30f30 0a 2a 2a 20 74 6f 20 73 65 65 20 69 66 20 61 20  .** to see if a 
30f40 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 77 61  database file wa
30f50 73 20 61 20 55 52 49 20 74 68 61 74 20 63 6f 6e  s a URI that con
30f60 74 61 69 6e 65 64 20 61 20 73 70 65 63 69 66 69  tained a specifi
30f70 63 20 71 75 65 72 79 20 0a 2a 2a 20 70 61 72 61  c query .** para
30f80 6d 65 74 65 72 2c 20 61 6e 64 20 69 66 20 73 6f  meter, and if so
30f90 20 6f 62 74 61 69 6e 73 20 74 68 65 20 76 61 6c   obtains the val
30fa0 75 65 20 6f 66 20 74 68 61 74 20 71 75 65 72 79  ue of that query
30fb0 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
30fc0 2a 20 49 66 20 46 20 69 73 20 74 68 65 20 64 61  * If F is the da
30fd0 74 61 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20  tabase filename 
30fe0 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20 69  pointer passed i
30ff0 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 20  nto the xOpen() 
31000 6d 65 74 68 6f 64 20 6f 66 20 0a 2a 2a 20 61 20  method of .** a 
31010 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  VFS implementati
31020 6f 6e 20 77 68 65 6e 20 74 68 65 20 66 6c 61 67  on when the flag
31030 73 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78  s parameter to x
31040 4f 70 65 6e 28 29 20 68 61 73 20 6f 6e 65 20 6f  Open() has one o
31050 72 20 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68  r .** more of th
31060 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55  e [SQLITE_OPEN_U
31070 52 49 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4f  RI] or [SQLITE_O
31080 50 45 4e 5f 4d 41 49 4e 5f 44 42 5d 20 62 69 74  PEN_MAIN_DB] bit
31090 73 20 73 65 74 20 61 6e 64 0a 2a 2a 20 50 20 69  s set and.** P i
310a0 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
310b0 65 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  e query paramete
310c0 72 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74  r, then.** sqlit
310d0 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72  e3_uri_parameter
310e0 28 46 2c 50 29 20 72 65 74 75 72 6e 73 20 74 68  (F,P) returns th
310f0 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 50  e value of the P
31100 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 69 66  .** parameter if
31110 20 69 74 20 65 78 69 73 74 73 20 6f 72 20 61 20   it exists or a 
31120 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66 20  NULL pointer if 
31130 50 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61  P does not appea
31140 72 20 61 73 20 61 20 0a 2a 2a 20 71 75 65 72 79  r as a .** query
31150 20 70 61 72 61 6d 65 74 65 72 20 6f 6e 20 46 2e   parameter on F.
31160 20 20 49 66 20 50 20 69 73 20 61 20 71 75 65 72    If P is a quer
31170 79 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 46  y parameter of F
31180 0a 2a 2a 20 68 61 73 20 6e 6f 20 65 78 70 6c 69  .** has no expli
31190 63 69 74 20 76 61 6c 75 65 2c 20 74 68 65 6e 20  cit value, then 
311a0 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61  sqlite3_uri_para
311b0 6d 65 74 65 72 28 46 2c 50 29 20 72 65 74 75 72  meter(F,P) retur
311c0 6e 73 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20  ns.** a pointer 
311d0 74 6f 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69  to an empty stri
311e0 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  ng..**.** The sq
311f0 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61  lite3_uri_boolea
31200 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65  n(F,P,B) routine
31210 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 50 20   assumes that P 
31220 69 73 20 61 20 62 6f 6f 6c 65 61 6e 0a 2a 2a 20  is a boolean.** 
31230 70 61 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65  parameter and re
31240 74 75 72 6e 73 20 74 72 75 65 20 28 31 29 20 6f  turns true (1) o
31250 72 20 66 61 6c 73 65 20 28 30 29 20 61 63 63 6f  r false (0) acco
31260 72 64 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c  rding to the val
31270 75 65 0a 2a 2a 20 6f 66 20 50 2e 20 20 54 68 65  ue.** of P.  The
31280 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f   sqlite3_uri_boo
31290 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74  lean(F,P,B) rout
312a0 69 6e 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ine returns true
312b0 20 28 31 29 20 69 66 20 74 68 65 0a 2a 2a 20 76   (1) if the.** v
312c0 61 6c 75 65 20 6f 66 20 71 75 65 72 79 20 70 61  alue of query pa
312d0 72 61 6d 65 74 65 72 20 50 20 69 73 20 6f 6e 65  rameter P is one
312e0 20 6f 66 20 22 79 65 73 22 2c 20 22 74 72 75 65   of "yes", "true
312f0 22 2c 20 6f 72 20 22 6f 6e 22 20 69 6e 20 61 6e  ", or "on" in an
31300 79 0a 2a 2a 20 63 61 73 65 20 6f 72 20 69 66 20  y.** case or if 
31310 74 68 65 20 76 61 6c 75 65 20 62 65 67 69 6e 73  the value begins
31320 20 77 69 74 68 20 61 20 6e 6f 6e 2d 7a 65 72 6f   with a non-zero
31330 20 6e 75 6d 62 65 72 2e 20 20 54 68 65 20 0a 2a   number.  The .*
31340 2a 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f  * sqlite3_uri_bo
31350 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75  olean(F,P,B) rou
31360 74 69 6e 65 73 20 72 65 74 75 72 6e 73 20 66 61  tines returns fa
31370 6c 73 65 20 28 30 29 20 69 66 20 74 68 65 20 76  lse (0) if the v
31380 61 6c 75 65 20 6f 66 0a 2a 2a 20 71 75 65 72 79  alue of.** query
31390 20 70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20   parameter P is 
313a0 6f 6e 65 20 6f 66 20 22 6e 6f 22 2c 20 22 66 61  one of "no", "fa
313b0 6c 73 65 22 2c 20 6f 72 20 22 6f 66 66 22 20 69  lse", or "off" i
313c0 6e 20 61 6e 79 20 63 61 73 65 20 6f 72 0a 2a 2a  n any case or.**
313d0 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 62 65   if the value be
313e0 67 69 6e 73 20 77 69 74 68 20 61 20 6e 75 6d 65  gins with a nume
313f0 72 69 63 20 7a 65 72 6f 2e 20 20 49 66 20 50 20  ric zero.  If P 
31400 69 73 20 6e 6f 74 20 61 20 71 75 65 72 79 0a 2a  is not a query.*
31410 2a 20 70 61 72 61 6d 65 74 65 72 20 6f 6e 20 46  * parameter on F
31420 20 6f 72 20 69 66 20 74 68 65 20 76 61 6c 75 65   or if the value
31430 20 6f 66 20 50 20 69 73 20 64 6f 65 73 20 6e 6f   of P is does no
31440 74 20 6d 61 74 63 68 20 61 6e 79 20 6f 66 20 74  t match any of t
31450 68 65 0a 2a 2a 20 61 62 6f 76 65 2c 20 74 68 65  he.** above, the
31460 6e 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f  n sqlite3_uri_bo
31470 6f 6c 65 61 6e 28 46 2c 50 2c 42 29 20 72 65 74  olean(F,P,B) ret
31480 75 72 6e 73 20 28 42 21 3d 30 29 2e 0a 2a 2a 0a  urns (B!=0)..**.
31490 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75  ** The sqlite3_u
314a0 72 69 5f 69 6e 74 36 34 28 46 2c 50 2c 44 29 20  ri_int64(F,P,D) 
314b0 72 6f 75 74 69 6e 65 20 63 6f 6e 76 65 72 74 73  routine converts
314c0 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20   the value of P 
314d0 69 6e 74 6f 20 61 0a 2a 2a 20 36 34 2d 62 69 74  into a.** 64-bit
314e0 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20   signed integer 
314f0 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 61 74  and returns that
31500 20 69 6e 74 65 67 65 72 2c 20 6f 72 20 44 20 69   integer, or D i
31510 66 20 50 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20  f P does not.** 
31520 65 78 69 73 74 2e 20 20 49 66 20 74 68 65 20 76  exist.  If the v
31530 61 6c 75 65 20 6f 66 20 50 20 69 73 20 73 6f 6d  alue of P is som
31540 65 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61  ething other tha
31550 6e 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 74 68  n an integer, th
31560 65 6e 0a 2a 2a 20 7a 65 72 6f 20 69 73 20 72 65  en.** zero is re
31570 74 75 72 6e 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 49  turned..** .** I
31580 66 20 46 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f  f F is a NULL po
31590 69 6e 74 65 72 2c 20 74 68 65 6e 20 73 71 6c 69  inter, then sqli
315a0 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65  te3_uri_paramete
315b0 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73 20 4e  r(F,P) returns N
315c0 55 4c 4c 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74  ULL and.** sqlit
315d0 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46  e3_uri_boolean(F
315e0 2c 50 2c 42 29 20 72 65 74 75 72 6e 73 20 42 2e  ,P,B) returns B.
315f0 20 20 49 66 20 46 20 69 73 20 6e 6f 74 20 61 20    If F is not a 
31600 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 61 6e 64  NULL pointer and
31610 0a 2a 2a 20 69 73 20 6e 6f 74 20 61 20 64 61 74  .** is not a dat
31620 61 62 61 73 65 20 66 69 6c 65 20 70 61 74 68 6e  abase file pathn
31630 61 6d 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74  ame pointer that
31640 20 53 51 4c 69 74 65 20 70 61 73 73 65 64 20 69   SQLite passed i
31650 6e 74 6f 20 74 68 65 20 78 4f 70 65 6e 0a 2a 2a  nto the xOpen.**
31660 20 56 46 53 20 6d 65 74 68 6f 64 2c 20 74 68 65   VFS method, the
31670 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f  n the behavior o
31680 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69  f this routine i
31690 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20  s undefined and 
316a0 70 72 6f 62 61 62 6c 79 0a 2a 2a 20 75 6e 64 65  probably.** unde
316b0 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 53  sirable..**.** S
316c0 65 65 20 74 68 65 20 5b 55 52 49 20 66 69 6c 65  ee the [URI file
316d0 6e 61 6d 65 5d 20 64 6f 63 75 6d 65 6e 74 61 74  name] documentat
316e0 69 6f 6e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e  ion for addition
316f0 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
31700 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  */.SQLITE_API co
31710 6e 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65  nst char *sqlite
31720 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28  3_uri_parameter(
31730 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69 6c  const char *zFil
31740 65 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 61  ename, const cha
31750 72 20 2a 7a 50 61 72 61 6d 29 3b 0a 53 51 4c 49  r *zParam);.SQLI
31760 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
31770 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 63  e3_uri_boolean(c
31780 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 69 6c 65  onst char *zFile
31790 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 50  , const char *zP
317a0 61 72 61 6d 2c 20 69 6e 74 20 62 44 65 66 61 75  aram, int bDefau
317b0 6c 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20  lt);.SQLITE_API 
317c0 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71  sqlite3_int64 sq
317d0 6c 69 74 65 33 5f 75 72 69 5f 69 6e 74 36 34 28  lite3_uri_int64(
317e0 63 6f 6e 73 74 20 63 68 61 72 2a 2c 20 63 6f 6e  const char*, con
317f0 73 74 20 63 68 61 72 2a 2c 20 73 71 6c 69 74 65  st char*, sqlite
31800 33 5f 69 6e 74 36 34 29 3b 0a 0a 0a 2f 2a 0a 2a  3_int64);.../*.*
31810 2a 20 43 41 50 49 33 52 45 46 3a 20 45 72 72 6f  * CAPI3REF: Erro
31820 72 20 43 6f 64 65 73 20 41 6e 64 20 4d 65 73 73  r Codes And Mess
31830 61 67 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  ages.** METHOD: 
31840 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 49  sqlite3.**.** ^I
31850 66 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e  f the most recen
31860 74 20 73 71 6c 69 74 65 33 5f 2a 20 41 50 49 20  t sqlite3_* API 
31870 63 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20  call associated 
31880 77 69 74 68 20 0a 2a 2a 20 5b 64 61 74 61 62 61  with .** [databa
31890 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44  se connection] D
318a0 20 66 61 69 6c 65 64 2c 20 74 68 65 6e 20 74 68   failed, then th
318b0 65 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  e sqlite3_errcod
318c0 65 28 44 29 20 69 6e 74 65 72 66 61 63 65 0a 2a  e(D) interface.*
318d0 2a 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  * returns the nu
318e0 6d 65 72 69 63 20 5b 72 65 73 75 6c 74 20 63 6f  meric [result co
318f0 64 65 5d 20 6f 72 20 5b 65 78 74 65 6e 64 65 64  de] or [extended
31900 20 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 66 6f   result code] fo
31910 72 20 74 68 61 74 0a 2a 2a 20 41 50 49 20 63 61  r that.** API ca
31920 6c 6c 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  ll..** ^The sqli
31930 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72  te3_extended_err
31940 63 6f 64 65 28 29 0a 2a 2a 20 69 6e 74 65 72 66  code().** interf
31950 61 63 65 20 69 73 20 74 68 65 20 73 61 6d 65 20  ace is the same 
31960 65 78 63 65 70 74 20 74 68 61 74 20 69 74 20 61  except that it a
31970 6c 77 61 79 73 20 72 65 74 75 72 6e 73 20 74 68  lways returns th
31980 65 20 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20  e .** [extended 
31990 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 65 76 65  result code] eve
319a0 6e 20 77 68 65 6e 20 65 78 74 65 6e 64 65 64 20  n when extended 
319b0 72 65 73 75 6c 74 20 63 6f 64 65 73 20 61 72 65  result codes are
319c0 0a 2a 2a 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a  .** disabled..**
319d0 0a 2a 2a 20 54 68 65 20 76 61 6c 75 65 73 20 72  .** The values r
319e0 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
319f0 65 33 5f 65 72 72 63 6f 64 65 28 29 20 61 6e 64  e3_errcode() and
31a00 2f 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65  /or.** sqlite3_e
31a10 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
31a20 29 20 6d 69 67 68 74 20 63 68 61 6e 67 65 20 77  ) might change w
31a30 69 74 68 20 65 61 63 68 20 41 50 49 20 63 61 6c  ith each API cal
31a40 6c 2e 0a 2a 2a 20 45 78 63 65 70 74 2c 20 74 68  l..** Except, th
31a50 65 72 65 20 61 72 65 20 73 6f 6d 65 20 69 6e 74  ere are some int
31a60 65 72 66 61 63 65 73 20 74 68 61 74 20 61 72 65  erfaces that are
31a70 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 6e   guaranteed to n
31a80 65 76 65 72 0a 2a 2a 20 63 68 61 6e 67 65 20 74  ever.** change t
31a90 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  he value of the 
31aa0 65 72 72 6f 72 20 63 6f 64 65 2e 20 20 54 68 65  error code.  The
31ab0 20 65 72 72 6f 72 2d 63 6f 64 65 20 70 72 65 73   error-code pres
31ac0 65 72 76 69 6e 67 0a 2a 2a 20 69 6e 74 65 72 66  erving.** interf
31ad0 61 63 65 73 20 61 72 65 3a 0a 2a 2a 0a 2a 2a 20  aces are:.**.** 
31ae0 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c  <ul>.** <li> sql
31af0 69 74 65 33 5f 65 72 72 63 6f 64 65 28 29 0a 2a  ite3_errcode().*
31b00 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65  * <li> sqlite3_e
31b10 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
31b20 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65  ).** <li> sqlite
31b30 33 5f 65 72 72 6d 73 67 28 29 0a 2a 2a 20 3c 6c  3_errmsg().** <l
31b40 69 3e 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  i> sqlite3_errms
31b50 67 31 36 28 29 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a  g16().** </ul>.*
31b60 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
31b70 33 5f 65 72 72 6d 73 67 28 29 20 61 6e 64 20 73  3_errmsg() and s
31b80 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28  qlite3_errmsg16(
31b90 29 20 72 65 74 75 72 6e 20 45 6e 67 6c 69 73 68  ) return English
31ba0 2d 6c 61 6e 67 75 61 67 65 0a 2a 2a 20 74 65 78  -language.** tex
31bb0 74 20 74 68 61 74 20 64 65 73 63 72 69 62 65 73  t that describes
31bc0 20 74 68 65 20 65 72 72 6f 72 2c 20 61 73 20 65   the error, as e
31bd0 69 74 68 65 72 20 55 54 46 2d 38 20 6f 72 20 55  ither UTF-8 or U
31be0 54 46 2d 31 36 20 72 65 73 70 65 63 74 69 76 65  TF-16 respective
31bf0 6c 79 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20  ly..** ^(Memory 
31c00 74 6f 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f  to hold the erro
31c10 72 20 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67  r message string
31c20 20 69 73 20 6d 61 6e 61 67 65 64 20 69 6e 74 65   is managed inte
31c30 72 6e 61 6c 6c 79 2e 0a 2a 2a 20 54 68 65 20 61  rnally..** The a
31c40 70 70 6c 69 63 61 74 69 6f 6e 20 64 6f 65 73 20  pplication does 
31c50 6e 6f 74 20 6e 65 65 64 20 74 6f 20 77 6f 72 72  not need to worr
31c60 79 20 61 62 6f 75 74 20 66 72 65 65 69 6e 67 20  y about freeing 
31c70 74 68 65 20 72 65 73 75 6c 74 2e 0a 2a 2a 20 48  the result..** H
31c80 6f 77 65 76 65 72 2c 20 74 68 65 20 65 72 72 6f  owever, the erro
31c90 72 20 73 74 72 69 6e 67 20 6d 69 67 68 74 20 62  r string might b
31ca0 65 20 6f 76 65 72 77 72 69 74 74 65 6e 20 6f 72  e overwritten or
31cb0 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 62 79 0a   deallocated by.
31cc0 2a 2a 20 73 75 62 73 65 71 75 65 6e 74 20 63 61  ** subsequent ca
31cd0 6c 6c 73 20 74 6f 20 6f 74 68 65 72 20 53 51 4c  lls to other SQL
31ce0 69 74 65 20 69 6e 74 65 72 66 61 63 65 20 66 75  ite interface fu
31cf0 6e 63 74 69 6f 6e 73 2e 29 5e 0a 2a 2a 0a 2a 2a  nctions.)^.**.**
31d00 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 72   ^The sqlite3_er
31d10 72 73 74 72 28 29 20 69 6e 74 65 72 66 61 63 65  rstr() interface
31d20 20 72 65 74 75 72 6e 73 20 74 68 65 20 45 6e 67   returns the Eng
31d30 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65 20 74 65  lish-language te
31d40 78 74 0a 2a 2a 20 74 68 61 74 20 64 65 73 63 72  xt.** that descr
31d50 69 62 65 73 20 74 68 65 20 5b 72 65 73 75 6c 74  ibes the [result
31d60 20 63 6f 64 65 5d 2c 20 61 73 20 55 54 46 2d 38   code], as UTF-8
31d70 2e 0a 2a 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f  ..** ^(Memory to
31d80 20 68 6f 6c 64 20 74 68 65 20 65 72 72 6f 72 20   hold the error 
31d90 6d 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69  message string i
31da0 73 20 6d 61 6e 61 67 65 64 20 69 6e 74 65 72 6e  s managed intern
31db0 61 6c 6c 79 0a 2a 2a 20 61 6e 64 20 6d 75 73 74  ally.** and must
31dc0 20 6e 6f 74 20 62 65 20 66 72 65 65 64 20 62 79   not be freed by
31dd0 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
31de0 29 5e 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74  )^..**.** When t
31df0 68 65 20 73 65 72 69 61 6c 69 7a 65 64 20 5b 74  he serialized [t
31e00 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 69  hreading mode] i
31e10 73 20 69 6e 20 75 73 65 2c 20 69 74 20 6d 69 67  s in use, it mig
31e20 68 74 20 62 65 20 74 68 65 0a 2a 2a 20 63 61 73  ht be the.** cas
31e30 65 20 74 68 61 74 20 61 20 73 65 63 6f 6e 64 20  e that a second 
31e40 65 72 72 6f 72 20 6f 63 63 75 72 73 20 6f 6e 20  error occurs on 
31e50 61 20 73 65 70 61 72 61 74 65 20 74 68 72 65 61  a separate threa
31e60 64 20 69 6e 20 62 65 74 77 65 65 6e 0a 2a 2a 20  d in between.** 
31e70 74 68 65 20 74 69 6d 65 20 6f 66 20 74 68 65 20  the time of the 
31e80 66 69 72 73 74 20 65 72 72 6f 72 20 61 6e 64 20  first error and 
31e90 74 68 65 20 63 61 6c 6c 20 74 6f 20 74 68 65 73  the call to thes
31ea0 65 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a  e interfaces..**
31eb0 20 57 68 65 6e 20 74 68 61 74 20 68 61 70 70 65   When that happe
31ec0 6e 73 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 65  ns, the second e
31ed0 72 72 6f 72 20 77 69 6c 6c 20 62 65 20 72 65 70  rror will be rep
31ee0 6f 72 74 65 64 20 73 69 6e 63 65 20 74 68 65 73  orted since thes
31ef0 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  e.** interfaces 
31f00 61 6c 77 61 79 73 20 72 65 70 6f 72 74 20 74 68  always report th
31f10 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 72 65  e most recent re
31f20 73 75 6c 74 2e 20 20 54 6f 20 61 76 6f 69 64 0a  sult.  To avoid.
31f30 2a 2a 20 74 68 69 73 2c 20 65 61 63 68 20 74 68  ** this, each th
31f40 72 65 61 64 20 63 61 6e 20 6f 62 74 61 69 6e 20  read can obtain 
31f50 65 78 63 6c 75 73 69 76 65 20 75 73 65 20 6f 66  exclusive use of
31f60 20 74 68 65 20 5b 64 61 74 61 62 61 73 65 20 63   the [database c
31f70 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 0a 2a 2a 20  onnection] D.** 
31f80 62 79 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c  by invoking [sql
31f90 69 74 65 33 5f 6d 75 74 65 78 5f 65 6e 74 65 72  ite3_mutex_enter
31fa0 5d 28 5b 73 71 6c 69 74 65 33 5f 64 62 5f 6d 75  ]([sqlite3_db_mu
31fb0 74 65 78 5d 28 44 29 29 20 62 65 66 6f 72 65 20  tex](D)) before 
31fc0 62 65 67 69 6e 6e 69 6e 67 0a 2a 2a 20 74 6f 20  beginning.** to 
31fd0 75 73 65 20 44 20 61 6e 64 20 69 6e 76 6f 6b 69  use D and invoki
31fe0 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  ng [sqlite3_mute
31ff0 78 5f 6c 65 61 76 65 5d 28 5b 73 71 6c 69 74 65  x_leave]([sqlite
32000 33 5f 64 62 5f 6d 75 74 65 78 5d 28 44 29 29 20  3_db_mutex](D)) 
32010 61 66 74 65 72 0a 2a 2a 20 61 6c 6c 20 63 61 6c  after.** all cal
32020 6c 73 20 74 6f 20 74 68 65 20 69 6e 74 65 72 66  ls to the interf
32030 61 63 65 73 20 6c 69 73 74 65 64 20 68 65 72 65  aces listed here
32040 20 61 72 65 20 63 6f 6d 70 6c 65 74 65 64 2e 0a   are completed..
32050 2a 2a 0a 2a 2a 20 49 66 20 61 6e 20 69 6e 74 65  **.** If an inte
32060 72 66 61 63 65 20 66 61 69 6c 73 20 77 69 74 68  rface fails with
32070 20 53 51 4c 49 54 45 5f 4d 49 53 55 53 45 2c 20   SQLITE_MISUSE, 
32080 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 20 69  that means the i
32090 6e 74 65 72 66 61 63 65 0a 2a 2a 20 77 61 73 20  nterface.** was 
320a0 69 6e 76 6f 6b 65 64 20 69 6e 63 6f 72 72 65 63  invoked incorrec
320b0 74 6c 79 20 62 79 20 74 68 65 20 61 70 70 6c 69  tly by the appli
320c0 63 61 74 69 6f 6e 2e 20 20 49 6e 20 74 68 61 74  cation.  In that
320d0 20 63 61 73 65 2c 20 74 68 65 0a 2a 2a 20 65 72   case, the.** er
320e0 72 6f 72 20 63 6f 64 65 20 61 6e 64 20 6d 65 73  ror code and mes
320f0 73 61 67 65 20 6d 61 79 20 6f 72 20 6d 61 79 20  sage may or may 
32100 6e 6f 74 20 62 65 20 73 65 74 2e 0a 2a 2f 0a 53  not be set..*/.S
32110 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71  QLITE_API int sq
32120 6c 69 74 65 33 5f 65 72 72 63 6f 64 65 28 73 71  lite3_errcode(sq
32130 6c 69 74 65 33 20 2a 64 62 29 3b 0a 53 51 4c 49  lite3 *db);.SQLI
32140 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
32150 65 33 5f 65 78 74 65 6e 64 65 64 5f 65 72 72 63  e3_extended_errc
32160 6f 64 65 28 73 71 6c 69 74 65 33 20 2a 64 62 29  ode(sqlite3 *db)
32170 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  ;.SQLITE_API con
32180 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
32190 5f 65 72 72 6d 73 67 28 73 71 6c 69 74 65 33 2a  _errmsg(sqlite3*
321a0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f  );.SQLITE_API co
321b0 6e 73 74 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  nst void *sqlite
321c0 33 5f 65 72 72 6d 73 67 31 36 28 73 71 6c 69 74  3_errmsg16(sqlit
321d0 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  e3*);.SQLITE_API
321e0 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71 6c   const char *sql
321f0 69 74 65 33 5f 65 72 72 73 74 72 28 69 6e 74 29  ite3_errstr(int)
32200 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
32210 46 3a 20 50 72 65 70 61 72 65 64 20 53 74 61 74  F: Prepared Stat
32220 65 6d 65 6e 74 20 4f 62 6a 65 63 74 0a 2a 2a 20  ement Object.** 
32230 4b 45 59 57 4f 52 44 53 3a 20 7b 70 72 65 70 61  KEYWORDS: {prepa
32240 72 65 64 20 73 74 61 74 65 6d 65 6e 74 7d 20 7b  red statement} {
32250 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
32260 6e 74 73 7d 0a 2a 2a 0a 2a 2a 20 41 6e 20 69 6e  nts}.**.** An in
32270 73 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f  stance of this o
32280 62 6a 65 63 74 20 72 65 70 72 65 73 65 6e 74 73  bject represents
32290 20 61 20 73 69 6e 67 6c 65 20 53 51 4c 20 73 74   a single SQL st
322a0 61 74 65 6d 65 6e 74 20 74 68 61 74 0a 2a 2a 20  atement that.** 
322b0 68 61 73 20 62 65 65 6e 20 63 6f 6d 70 69 6c 65  has been compile
322c0 64 20 69 6e 74 6f 20 62 69 6e 61 72 79 20 66 6f  d into binary fo
322d0 72 6d 20 61 6e 64 20 69 73 20 72 65 61 64 79 20  rm and is ready 
322e0 74 6f 20 62 65 20 65 76 61 6c 75 61 74 65 64 2e  to be evaluated.
322f0 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 6b 20 6f 66 20  .**.** Think of 
32300 65 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65  each SQL stateme
32310 6e 74 20 61 73 20 61 20 73 65 70 61 72 61 74 65  nt as a separate
32320 20 63 6f 6d 70 75 74 65 72 20 70 72 6f 67 72 61   computer progra
32330 6d 2e 20 20 54 68 65 0a 2a 2a 20 6f 72 69 67 69  m.  The.** origi
32340 6e 61 6c 20 53 51 4c 20 74 65 78 74 20 69 73 20  nal SQL text is 
32350 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 41 20  source code.  A 
32360 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
32370 6e 74 20 6f 62 6a 65 63 74 20 0a 2a 2a 20 69 73  nt object .** is
32380 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 20 6f 62   the compiled ob
32390 6a 65 63 74 20 63 6f 64 65 2e 20 20 41 6c 6c 20  ject code.  All 
323a0 53 51 4c 20 6d 75 73 74 20 62 65 20 63 6f 6e 76  SQL must be conv
323b0 65 72 74 65 64 20 69 6e 74 6f 20 61 0a 2a 2a 20  erted into a.** 
323c0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
323d0 6e 74 20 62 65 66 6f 72 65 20 69 74 20 63 61 6e  nt before it can
323e0 20 62 65 20 72 75 6e 2e 0a 2a 2a 0a 2a 2a 20 54   be run..**.** T
323f0 68 65 20 6c 69 66 65 2d 63 79 63 6c 65 20 6f 66  he life-cycle of
32400 20 61 20 70 72 65 70 61 72 65 64 20 73 74 61 74   a prepared stat
32410 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75 73 75  ement object usu
32420 61 6c 6c 79 20 67 6f 65 73 20 6c 69 6b 65 20 74  ally goes like t
32430 68 69 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a  his:.**.** <ol>.
32440 2a 2a 20 3c 6c 69 3e 20 43 72 65 61 74 65 20 74  ** <li> Create t
32450 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
32460 65 6d 65 6e 74 20 6f 62 6a 65 63 74 20 75 73 69  ement object usi
32470 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ng [sqlite3_prep
32480 61 72 65 5f 76 32 28 29 5d 2e 0a 2a 2a 20 3c 6c  are_v2()]..** <l
32490 69 3e 20 42 69 6e 64 20 76 61 6c 75 65 73 20 74  i> Bind values t
324a0 6f 20 5b 70 61 72 61 6d 65 74 65 72 73 5d 20 75  o [parameters] u
324b0 73 69 6e 67 20 74 68 65 20 73 71 6c 69 74 65 33  sing the sqlite3
324c0 5f 62 69 6e 64 5f 2a 28 29 0a 2a 2a 20 20 20 20  _bind_*().**    
324d0 20 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a    interfaces..**
324e0 20 3c 6c 69 3e 20 52 75 6e 20 74 68 65 20 53 51   <li> Run the SQ
324f0 4c 20 62 79 20 63 61 6c 6c 69 6e 67 20 5b 73 71  L by calling [sq
32500 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 6f 6e  lite3_step()] on
32510 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 2e  e or more times.
32520 0a 2a 2a 20 3c 6c 69 3e 20 52 65 73 65 74 20 74  .** <li> Reset t
32530 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
32540 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73 71 6c  ement using [sql
32550 69 74 65 33 5f 72 65 73 65 74 28 29 5d 20 74 68  ite3_reset()] th
32560 65 6e 20 67 6f 20 62 61 63 6b 0a 2a 2a 20 20 20  en go back.**   
32570 20 20 20 74 6f 20 73 74 65 70 20 32 2e 20 20 44     to step 2.  D
32580 6f 20 74 68 69 73 20 7a 65 72 6f 20 6f 72 20 6d  o this zero or m
32590 6f 72 65 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c 6c  ore times..** <l
325a0 69 3e 20 44 65 73 74 72 6f 79 20 74 68 65 20 6f  i> Destroy the o
325b0 62 6a 65 63 74 20 75 73 69 6e 67 20 5b 73 71 6c  bject using [sql
325c0 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d  ite3_finalize()]
325d0 2e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2f 0a 74 79  ..** </ol>.*/.ty
325e0 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c  pedef struct sql
325f0 69 74 65 33 5f 73 74 6d 74 20 73 71 6c 69 74 65  ite3_stmt sqlite
32600 33 5f 73 74 6d 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43  3_stmt;../*.** C
32610 41 50 49 33 52 45 46 3a 20 52 75 6e 2d 74 69 6d  API3REF: Run-tim
32620 65 20 4c 69 6d 69 74 73 0a 2a 2a 20 4d 45 54 48  e Limits.** METH
32630 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
32640 2a 20 5e 28 54 68 69 73 20 69 6e 74 65 72 66 61  * ^(This interfa
32650 63 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 69  ce allows the si
32660 7a 65 20 6f 66 20 76 61 72 69 6f 75 73 20 63 6f  ze of various co
32670 6e 73 74 72 75 63 74 73 20 74 6f 20 62 65 20 6c  nstructs to be l
32680 69 6d 69 74 65 64 0a 2a 2a 20 6f 6e 20 61 20 63  imited.** on a c
32690 6f 6e 6e 65 63 74 69 6f 6e 20 62 79 20 63 6f 6e  onnection by con
326a0 6e 65 63 74 69 6f 6e 20 62 61 73 69 73 2e 20 20  nection basis.  
326b0 54 68 65 20 66 69 72 73 74 20 70 61 72 61 6d 65  The first parame
326c0 74 65 72 20 69 73 20 74 68 65 0a 2a 2a 20 5b 64  ter is the.** [d
326d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
326e0 6f 6e 5d 20 77 68 6f 73 65 20 6c 69 6d 69 74 20  on] whose limit 
326f0 69 73 20 74 6f 20 62 65 20 73 65 74 20 6f 72 20  is to be set or 
32700 71 75 65 72 69 65 64 2e 20 20 54 68 65 0a 2a 2a  queried.  The.**
32710 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
32720 72 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20  r is one of the 
32730 5b 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69 65  [limit categorie
32740 73 5d 20 74 68 61 74 20 64 65 66 69 6e 65 20 61  s] that define a
32750 0a 2a 2a 20 63 6c 61 73 73 20 6f 66 20 63 6f 6e  .** class of con
32760 73 74 72 75 63 74 73 20 74 6f 20 62 65 20 73 69  structs to be si
32770 7a 65 20 6c 69 6d 69 74 65 64 2e 20 20 54 68 65  ze limited.  The
32780 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
32790 20 69 73 20 74 68 65 0a 2a 2a 20 6e 65 77 20 6c   is the.** new l
327a0 69 6d 69 74 20 66 6f 72 20 74 68 61 74 20 63 6f  imit for that co
327b0 6e 73 74 72 75 63 74 2e 29 5e 0a 2a 2a 0a 2a 2a  nstruct.)^.**.**
327c0 20 5e 49 66 20 74 68 65 20 6e 65 77 20 6c 69 6d   ^If the new lim
327d0 69 74 20 69 73 20 61 20 6e 65 67 61 74 69 76 65  it is a negative
327e0 20 6e 75 6d 62 65 72 2c 20 74 68 65 20 6c 69 6d   number, the lim
327f0 69 74 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2e  it is unchanged.
32800 0a 2a 2a 20 5e 28 46 6f 72 20 65 61 63 68 20 6c  .** ^(For each l
32810 69 6d 69 74 20 63 61 74 65 67 6f 72 79 20 53 51  imit category SQ
32820 4c 49 54 45 5f 4c 49 4d 49 54 5f 3c 69 3e 4e 41  LITE_LIMIT_<i>NA
32830 4d 45 3c 2f 69 3e 20 74 68 65 72 65 20 69 73 20  ME</i> there is 
32840 61 20 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c 20  a .** [limits | 
32850 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64  hard upper bound
32860 5d 0a 2a 2a 20 73 65 74 20 61 74 20 63 6f 6d 70  ].** set at comp
32870 69 6c 65 2d 74 69 6d 65 20 62 79 20 61 20 43 20  ile-time by a C 
32880 70 72 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63  preprocessor mac
32890 72 6f 20 63 61 6c 6c 65 64 0a 2a 2a 20 5b 6c 69  ro called.** [li
328a0 6d 69 74 73 20 7c 20 53 51 4c 49 54 45 5f 4d 41  mits | SQLITE_MA
328b0 58 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 5d 2e 0a  X_<i>NAME</i>]..
328c0 2a 2a 20 28 54 68 65 20 22 5f 4c 49 4d 49 54 5f  ** (The "_LIMIT_
328d0 22 20 69 6e 20 74 68 65 20 6e 61 6d 65 20 69 73  " in the name is
328e0 20 63 68 61 6e 67 65 64 20 74 6f 20 22 5f 4d 41   changed to "_MA
328f0 58 5f 22 2e 29 29 5e 0a 2a 2a 20 5e 41 74 74 65  X_".))^.** ^Atte
32900 6d 70 74 73 20 74 6f 20 69 6e 63 72 65 61 73 65  mpts to increase
32910 20 61 20 6c 69 6d 69 74 20 61 62 6f 76 65 20 69   a limit above i
32920 74 73 20 68 61 72 64 20 75 70 70 65 72 20 62 6f  ts hard upper bo
32930 75 6e 64 20 61 72 65 0a 2a 2a 20 73 69 6c 65 6e  und are.** silen
32940 74 6c 79 20 74 72 75 6e 63 61 74 65 64 20 74 6f  tly truncated to
32950 20 74 68 65 20 68 61 72 64 20 75 70 70 65 72 20   the hard upper 
32960 62 6f 75 6e 64 2e 0a 2a 2a 0a 2a 2a 20 5e 52 65  bound..**.** ^Re
32970 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74  gardless of whet
32980 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 6c  her or not the l
32990 69 6d 69 74 20 77 61 73 20 63 68 61 6e 67 65 64  imit was changed
329a0 2c 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c 69 74  , the .** [sqlit
329b0 65 33 5f 6c 69 6d 69 74 28 29 5d 20 69 6e 74 65  e3_limit()] inte
329c0 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 68  rface returns th
329d0 65 20 70 72 69 6f 72 20 76 61 6c 75 65 20 6f 66  e prior value of
329e0 20 74 68 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20 5e   the limit..** ^
329f0 48 65 6e 63 65 2c 20 74 6f 20 66 69 6e 64 20 74  Hence, to find t
32a00 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65  he current value
32a10 20 6f 66 20 61 20 6c 69 6d 69 74 20 77 69 74 68   of a limit with
32a20 6f 75 74 20 63 68 61 6e 67 69 6e 67 20 69 74 2c  out changing it,
32a30 0a 2a 2a 20 73 69 6d 70 6c 79 20 69 6e 76 6f 6b  .** simply invok
32a40 65 20 74 68 69 73 20 69 6e 74 65 72 66 61 63 65  e this interface
32a50 20 77 69 74 68 20 74 68 65 20 74 68 69 72 64 20   with the third 
32a60 70 61 72 61 6d 65 74 65 72 20 73 65 74 20 74 6f  parameter set to
32a70 20 2d 31 2e 0a 2a 2a 0a 2a 2a 20 52 75 6e 2d 74   -1..**.** Run-t
32a80 69 6d 65 20 6c 69 6d 69 74 73 20 61 72 65 20 69  ime limits are i
32a90 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20  ntended for use 
32aa0 69 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20  in applications 
32ab0 74 68 61 74 20 6d 61 6e 61 67 65 0a 2a 2a 20 62  that manage.** b
32ac0 6f 74 68 20 74 68 65 69 72 20 6f 77 6e 20 69 6e  oth their own in
32ad0 74 65 72 6e 61 6c 20 64 61 74 61 62 61 73 65 20  ternal database 
32ae0 61 6e 64 20 61 6c 73 6f 20 64 61 74 61 62 61 73  and also databas
32af0 65 73 20 74 68 61 74 20 61 72 65 20 63 6f 6e 74  es that are cont
32b00 72 6f 6c 6c 65 64 0a 2a 2a 20 62 79 20 75 6e 74  rolled.** by unt
32b10 72 75 73 74 65 64 20 65 78 74 65 72 6e 61 6c 20  rusted external 
32b20 73 6f 75 72 63 65 73 2e 20 20 41 6e 20 65 78 61  sources.  An exa
32b30 6d 70 6c 65 20 61 70 70 6c 69 63 61 74 69 6f 6e  mple application
32b40 20 6d 69 67 68 74 20 62 65 20 61 0a 2a 2a 20 77   might be a.** w
32b50 65 62 20 62 72 6f 77 73 65 72 20 74 68 61 74 20  eb browser that 
32b60 68 61 73 20 69 74 73 20 6f 77 6e 20 64 61 74 61  has its own data
32b70 62 61 73 65 73 20 66 6f 72 20 73 74 6f 72 69 6e  bases for storin
32b80 67 20 68 69 73 74 6f 72 79 20 61 6e 64 0a 2a 2a  g history and.**
32b90 20 73 65 70 61 72 61 74 65 20 64 61 74 61 62 61   separate databa
32ba0 73 65 73 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62  ses controlled b
32bb0 79 20 4a 61 76 61 53 63 72 69 70 74 20 61 70 70  y JavaScript app
32bc0 6c 69 63 61 74 69 6f 6e 73 20 64 6f 77 6e 6c 6f  lications downlo
32bd0 61 64 65 64 0a 2a 2a 20 6f 66 66 20 74 68 65 20  aded.** off the 
32be0 49 6e 74 65 72 6e 65 74 2e 20 20 54 68 65 20 69  Internet.  The i
32bf0 6e 74 65 72 6e 61 6c 20 64 61 74 61 62 61 73 65  nternal database
32c00 73 20 63 61 6e 20 62 65 20 67 69 76 65 6e 20 74  s can be given t
32c10 68 65 0a 2a 2a 20 6c 61 72 67 65 2c 20 64 65 66  he.** large, def
32c20 61 75 6c 74 20 6c 69 6d 69 74 73 2e 20 20 44 61  ault limits.  Da
32c30 74 61 62 61 73 65 73 20 6d 61 6e 61 67 65 64 20  tabases managed 
32c40 62 79 20 65 78 74 65 72 6e 61 6c 20 73 6f 75 72  by external sour
32c50 63 65 73 20 63 61 6e 0a 2a 2a 20 62 65 20 67 69  ces can.** be gi
32c60 76 65 6e 20 6d 75 63 68 20 73 6d 61 6c 6c 65 72  ven much smaller
32c70 20 6c 69 6d 69 74 73 20 64 65 73 69 67 6e 65 64   limits designed
32c80 20 74 6f 20 70 72 65 76 65 6e 74 20 61 20 64 65   to prevent a de
32c90 6e 69 61 6c 20 6f 66 20 73 65 72 76 69 63 65 0a  nial of service.
32ca0 2a 2a 20 61 74 74 61 63 6b 2e 20 20 44 65 76 65  ** attack.  Deve
32cb0 6c 6f 70 65 72 73 20 6d 69 67 68 74 20 61 6c 73  lopers might als
32cc0 6f 20 77 61 6e 74 20 74 6f 20 75 73 65 20 74 68  o want to use th
32cd0 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  e [sqlite3_set_a
32ce0 75 74 68 6f 72 69 7a 65 72 28 29 5d 0a 2a 2a 20  uthorizer()].** 
32cf0 69 6e 74 65 72 66 61 63 65 20 74 6f 20 66 75 72  interface to fur
32d00 74 68 65 72 20 63 6f 6e 74 72 6f 6c 20 75 6e 74  ther control unt
32d10 72 75 73 74 65 64 20 53 51 4c 2e 20 20 54 68 65  rusted SQL.  The
32d20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 64 61 74   size of the dat
32d30 61 62 61 73 65 0a 2a 2a 20 63 72 65 61 74 65 64  abase.** created
32d40 20 62 79 20 61 6e 20 75 6e 74 72 75 73 74 65 64   by an untrusted
32d50 20 73 63 72 69 70 74 20 63 61 6e 20 62 65 20 63   script can be c
32d60 6f 6e 74 61 69 6e 65 64 20 75 73 69 6e 67 20 74  ontained using t
32d70 68 65 0a 2a 2a 20 5b 6d 61 78 5f 70 61 67 65 5f  he.** [max_page_
32d80 63 6f 75 6e 74 5d 20 5b 50 52 41 47 4d 41 5d 2e  count] [PRAGMA].
32d90 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 72 75 6e 2d 74  .**.** New run-t
32da0 69 6d 65 20 6c 69 6d 69 74 20 63 61 74 65 67 6f  ime limit catego
32db0 72 69 65 73 20 6d 61 79 20 62 65 20 61 64 64 65  ries may be adde
32dc0 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65  d in future rele
32dd0 61 73 65 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  ases..*/.SQLITE_
32de0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
32df0 6c 69 6d 69 74 28 73 71 6c 69 74 65 33 2a 2c 20  limit(sqlite3*, 
32e00 69 6e 74 20 69 64 2c 20 69 6e 74 20 6e 65 77 56  int id, int newV
32e10 61 6c 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  al);../*.** CAPI
32e20 33 52 45 46 3a 20 52 75 6e 2d 54 69 6d 65 20 4c  3REF: Run-Time L
32e30 69 6d 69 74 20 43 61 74 65 67 6f 72 69 65 73 0a  imit Categories.
32e40 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 6c 69  ** KEYWORDS: {li
32e50 6d 69 74 20 63 61 74 65 67 6f 72 79 7d 20 7b 2a  mit category} {*
32e60 6c 69 6d 69 74 20 63 61 74 65 67 6f 72 69 65 73  limit categories
32e70 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f  }.**.** These co
32e80 6e 73 74 61 6e 74 73 20 64 65 66 69 6e 65 20 76  nstants define v
32e90 61 72 69 6f 75 73 20 70 65 72 66 6f 72 6d 61 6e  arious performan
32ea0 63 65 20 6c 69 6d 69 74 73 0a 2a 2a 20 74 68 61  ce limits.** tha
32eb0 74 20 63 61 6e 20 62 65 20 6c 6f 77 65 72 65 64  t can be lowered
32ec0 20 61 74 20 72 75 6e 2d 74 69 6d 65 20 75 73 69   at run-time usi
32ed0 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  ng [sqlite3_limi
32ee0 74 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 73 79 6e  t()]..** The syn
32ef0 6f 70 73 69 73 20 6f 66 20 74 68 65 20 6d 65 61  opsis of the mea
32f00 6e 69 6e 67 73 20 6f 66 20 74 68 65 20 76 61 72  nings of the var
32f10 69 6f 75 73 20 6c 69 6d 69 74 73 20 69 73 20 73  ious limits is s
32f20 68 6f 77 6e 20 62 65 6c 6f 77 2e 0a 2a 2a 20 41  hown below..** A
32f30 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
32f40 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62  ation is availab
32f50 6c 65 20 61 74 20 5b 6c 69 6d 69 74 73 20 7c 20  le at [limits | 
32f60 4c 69 6d 69 74 73 20 69 6e 20 53 51 4c 69 74 65  Limits in SQLite
32f70 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a  ]..**.** <dl>.**
32f80 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
32f90 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c 64 74 3e 53  LENGTH]] ^(<dt>S
32fa0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47  QLITE_LIMIT_LENG
32fb0 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  TH</dt>.** <dd>T
32fc0 68 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20  he maximum size 
32fd0 6f 66 20 61 6e 79 20 73 74 72 69 6e 67 20 6f 72  of any string or
32fe0 20 42 4c 4f 42 20 6f 72 20 74 61 62 6c 65 20 72   BLOB or table r
32ff0 6f 77 2c 20 69 6e 20 62 79 74 65 73 2e 3c 64 64  ow, in bytes.<dd
33000 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
33010 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e  TE_LIMIT_SQL_LEN
33020 47 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  GTH]] ^(<dt>SQLI
33030 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e  TE_LIMIT_SQL_LEN
33040 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  GTH</dt>.** <dd>
33050 54 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67  The maximum leng
33060 74 68 20 6f 66 20 61 6e 20 53 51 4c 20 73 74 61  th of an SQL sta
33070 74 65 6d 65 6e 74 2c 20 69 6e 20 62 79 74 65 73  tement, in bytes
33080 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
33090 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f  [SQLITE_LIMIT_CO
330a0 4c 55 4d 4e 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c  LUMN]] ^(<dt>SQL
330b0 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e  ITE_LIMIT_COLUMN
330c0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
330d0 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
330e0 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 20  of columns in a 
330f0 74 61 62 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e  table definition
33100 20 6f 72 20 69 6e 20 74 68 65 0a 2a 2a 20 72 65   or in the.** re
33110 73 75 6c 74 20 73 65 74 20 6f 66 20 61 20 5b 53  sult set of a [S
33120 45 4c 45 43 54 5d 20 6f 72 20 74 68 65 20 6d 61  ELECT] or the ma
33130 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
33140 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e  columns in an in
33150 64 65 78 0a 2a 2a 20 6f 72 20 69 6e 20 61 6e 20  dex.** or in an 
33160 4f 52 44 45 52 20 42 59 20 6f 72 20 47 52 4f 55  ORDER BY or GROU
33170 50 20 42 59 20 63 6c 61 75 73 65 2e 3c 2f 64 64  P BY clause.</dd
33180 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
33190 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45  TE_LIMIT_EXPR_DE
331a0 50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  PTH]] ^(<dt>SQLI
331b0 54 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45  TE_LIMIT_EXPR_DE
331c0 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  PTH</dt>.** <dd>
331d0 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70 74  The maximum dept
331e0 68 20 6f 66 20 74 68 65 20 70 61 72 73 65 20 74  h of the parse t
331f0 72 65 65 20 6f 6e 20 61 6e 79 20 65 78 70 72 65  ree on any expre
33200 73 73 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  ssion.</dd>)^.**
33210 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
33220 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  IT_COMPOUND_SELE
33230 43 54 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54  CT]] ^(<dt>SQLIT
33240 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44  E_LIMIT_COMPOUND
33250 5f 53 45 4c 45 43 54 3c 2f 64 74 3e 0a 2a 2a 20  _SELECT</dt>.** 
33260 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33270 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20  number of terms 
33280 69 6e 20 61 20 63 6f 6d 70 6f 75 6e 64 20 53 45  in a compound SE
33290 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e 3c  LECT statement.<
332a0 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  /dd>)^.**.** [[S
332b0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45  QLITE_LIMIT_VDBE
332c0 5f 4f 50 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  _OP]] ^(<dt>SQLI
332d0 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50  TE_LIMIT_VDBE_OP
332e0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
332f0 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
33300 6f 66 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20  of instructions 
33310 69 6e 20 61 20 76 69 72 74 75 61 6c 20 6d 61 63  in a virtual mac
33320 68 69 6e 65 20 70 72 6f 67 72 61 6d 0a 2a 2a 20  hine program.** 
33330 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  used to implemen
33340 74 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  t an SQL stateme
33350 6e 74 2e 20 20 49 66 20 5b 73 71 6c 69 74 65 33  nt.  If [sqlite3
33360 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f  _prepare_v2()] o
33370 72 0a 2a 2a 20 74 68 65 20 65 71 75 69 76 61 6c  r.** the equival
33380 65 6e 74 20 74 72 69 65 73 20 74 6f 20 61 6c 6c  ent tries to all
33390 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72 20  ocate space for 
333a0 6d 6f 72 65 20 74 68 61 6e 20 74 68 69 73 20 6d  more than this m
333b0 61 6e 79 20 6f 70 63 6f 64 65 73 0a 2a 2a 20 69  any opcodes.** i
333c0 6e 20 61 20 73 69 6e 67 6c 65 20 70 72 65 70 61  n a single prepa
333d0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 2c 20 61  red statement, a
333e0 6e 20 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 65  n SQLITE_NOMEM e
333f0 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64  rror is returned
33400 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
33410 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55  [SQLITE_LIMIT_FU
33420 4e 43 54 49 4f 4e 5f 41 52 47 5d 5d 20 5e 28 3c  NCTION_ARG]] ^(<
33430 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
33440 46 55 4e 43 54 49 4f 4e 5f 41 52 47 3c 2f 64 74  FUNCTION_ARG</dt
33450 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78  >.** <dd>The max
33460 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61  imum number of a
33470 72 67 75 6d 65 6e 74 73 20 6f 6e 20 61 20 66 75  rguments on a fu
33480 6e 63 74 69 6f 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a  nction.</dd>)^.*
33490 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
334a0 4d 49 54 5f 41 54 54 41 43 48 45 44 5d 5d 20 5e  MIT_ATTACHED]] ^
334b0 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
334c0 54 5f 41 54 54 41 43 48 45 44 3c 2f 64 74 3e 0a  T_ATTACHED</dt>.
334d0 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
334e0 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 5b 41 54  um number of [AT
334f0 54 41 43 48 20 7c 20 61 74 74 61 63 68 65 64 20  TACH | attached 
33500 64 61 74 61 62 61 73 65 73 5d 2e 29 5e 3c 2f 64  databases].)^</d
33510 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
33520 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41 54  E_LIMIT_LIKE_PAT
33530 54 45 52 4e 5f 4c 45 4e 47 54 48 5d 5d 0a 2a 2a  TERN_LENGTH]].**
33540 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
33550 4d 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e  MIT_LIKE_PATTERN
33560 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a 2a 20  _LENGTH</dt>.** 
33570 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33580 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 70 61  length of the pa
33590 74 74 65 72 6e 20 61 72 67 75 6d 65 6e 74 20 74  ttern argument t
335a0 6f 20 74 68 65 20 5b 4c 49 4b 45 5d 20 6f 72 0a  o the [LIKE] or.
335b0 2a 2a 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  ** [GLOB] operat
335c0 6f 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a  ors.</dd>)^.**.*
335d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  * [[SQLITE_LIMIT
335e0 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
335f0 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51 4c 49  ]].** ^(<dt>SQLI
33600 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c  TE_LIMIT_VARIABL
33610 45 5f 4e 55 4d 42 45 52 3c 2f 64 74 3e 0a 2a 2a  E_NUMBER</dt>.**
33620 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
33630 20 69 6e 64 65 78 20 6e 75 6d 62 65 72 20 6f 66   index number of
33640 20 61 6e 79 20 5b 70 61 72 61 6d 65 74 65 72 5d   any [parameter]
33650 20 69 6e 20 61 6e 20 53 51 4c 20 73 74 61 74 65   in an SQL state
33660 6d 65 6e 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b  ment.)^.**.** [[
33670 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49  SQLITE_LIMIT_TRI
33680 47 47 45 52 5f 44 45 50 54 48 5d 5d 20 5e 28 3c  GGER_DEPTH]] ^(<
33690 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
336a0 54 52 49 47 47 45 52 5f 44 45 50 54 48 3c 2f 64  TRIGGER_DEPTH</d
336b0 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
336c0 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20 72  ximum depth of r
336d0 65 63 75 72 73 69 6f 6e 20 66 6f 72 20 74 72 69  ecursion for tri
336e0 67 67 65 72 73 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  ggers.</dd>)^.**
336f0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
33700 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44  IT_WORKER_THREAD
33710 53 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  S]] ^(<dt>SQLITE
33720 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48  _LIMIT_WORKER_TH
33730 52 45 41 44 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  READS</dt>.** <d
33740 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  d>The maximum nu
33750 6d 62 65 72 20 6f 66 20 61 75 78 69 6c 69 61 72  mber of auxiliar
33760 79 20 77 6f 72 6b 65 72 20 74 68 72 65 61 64 73  y worker threads
33770 20 74 68 61 74 20 61 20 73 69 6e 67 6c 65 0a 2a   that a single.*
33780 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  * [prepared stat
33790 65 6d 65 6e 74 5d 20 6d 61 79 20 73 74 61 72 74  ement] may start
337a0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c  .</dd>)^.** </dl
337b0 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  >.*/.#define SQL
337c0 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48  ITE_LIMIT_LENGTH
337d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
337e0 20 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51      0.#define SQ
337f0 4c 49 54 45 5f 4c 49 4d 49 54 5f 53 51 4c 5f 4c  LITE_LIMIT_SQL_L
33800 45 4e 47 54 48 20 20 20 20 20 20 20 20 20 20 20  ENGTH           
33810 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53       1.#define S
33820 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55  QLITE_LIMIT_COLU
33830 4d 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20  MN              
33840 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20        2.#define 
33850 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 45 58 50  SQLITE_LIMIT_EXP
33860 52 5f 44 45 50 54 48 20 20 20 20 20 20 20 20 20  R_DEPTH         
33870 20 20 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65         3.#define
33880 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f   SQLITE_LIMIT_CO
33890 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 20 20 20  MPOUND_SELECT   
338a0 20 20 20 20 20 20 20 20 34 0a 23 64 65 66 69 6e          4.#defin
338b0 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56  e SQLITE_LIMIT_V
338c0 44 42 45 5f 4f 50 20 20 20 20 20 20 20 20 20 20  DBE_OP          
338d0 20 20 20 20 20 20 20 20 20 35 0a 23 64 65 66 69           5.#defi
338e0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
338f0 46 55 4e 43 54 49 4f 4e 5f 41 52 47 20 20 20 20  FUNCTION_ARG    
33900 20 20 20 20 20 20 20 20 20 20 36 0a 23 64 65 66            6.#def
33910 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
33920 5f 41 54 54 41 43 48 45 44 20 20 20 20 20 20 20  _ATTACHED       
33930 20 20 20 20 20 20 20 20 20 20 20 37 0a 23 64 65             7.#de
33940 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
33950 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c  T_LIKE_PATTERN_L
33960 45 4e 47 54 48 20 20 20 20 20 20 20 38 0a 23 64  ENGTH       8.#d
33970 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
33980 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42  IT_VARIABLE_NUMB
33990 45 52 20 20 20 20 20 20 20 20 20 20 20 39 0a 23  ER           9.#
339a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
339b0 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50 54  MIT_TRIGGER_DEPT
339c0 48 20 20 20 20 20 20 20 20 20 20 20 20 31 30 0a  H            10.
339d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
339e0 49 4d 49 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45  IMIT_WORKER_THRE
339f0 41 44 53 20 20 20 20 20 20 20 20 20 20 20 31 31  ADS           11
33a00 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
33a10 3a 20 50 72 65 70 61 72 65 20 46 6c 61 67 73 0a  : Prepare Flags.
33a20 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73  **.** These cons
33a30 74 61 6e 74 73 20 64 65 66 69 6e 65 20 76 61 72  tants define var
33a40 69 6f 75 73 20 66 6c 61 67 73 20 74 68 61 74 20  ious flags that 
33a50 63 61 6e 20 62 65 20 70 61 73 73 65 64 20 69 6e  can be passed in
33a60 74 6f 0a 2a 2a 20 22 70 72 65 70 46 6c 61 67 73  to.** "prepFlags
33a70 22 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 74  " parameter of t
33a80 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  he [sqlite3_prep
33a90 61 72 65 5f 76 33 28 29 5d 20 61 6e 64 0a 2a 2a  are_v3()] and.**
33aa0 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
33ab0 65 31 36 5f 76 33 28 29 5d 20 69 6e 74 65 72 66  e16_v3()] interf
33ac0 61 63 65 73 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20  aces..**.** New 
33ad0 66 6c 61 67 73 20 6d 61 79 20 62 65 20 61 64 64  flags may be add
33ae0 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c  ed in future rel
33af0 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e  eases of SQLite.
33b00 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b  .**.** <dl>.** [
33b10 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f  [SQLITE_PREPARE_
33b20 50 45 52 53 49 53 54 45 4e 54 5d 5d 20 5e 28 3c  PERSISTENT]] ^(<
33b30 64 74 3e 53 51 4c 49 54 45 5f 50 52 45 50 41 52  dt>SQLITE_PREPAR
33b40 45 5f 50 45 52 53 49 53 54 45 4e 54 3c 2f 64 74  E_PERSISTENT</dt
33b50 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c  >.** <dd>The SQL
33b60 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53  ITE_PREPARE_PERS
33b70 49 53 54 45 4e 54 20 66 6c 61 67 20 69 73 20 61  ISTENT flag is a
33b80 20 68 69 6e 74 20 74 6f 20 74 68 65 20 71 75 65   hint to the que
33b90 72 79 20 70 6c 61 6e 6e 65 72 0a 2a 2a 20 74 68  ry planner.** th
33ba0 61 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20  at the prepared 
33bb0 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 62  statement will b
33bc0 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 61  e retained for a
33bd0 20 6c 6f 6e 67 20 74 69 6d 65 20 61 6e 64 0a 2a   long time and.*
33be0 2a 20 70 72 6f 62 61 62 6c 79 20 72 65 75 73 65  * probably reuse
33bf0 64 20 6d 61 6e 79 20 74 69 6d 65 73 2e 29 5e 20  d many times.)^ 
33c00 5e 57 69 74 68 6f 75 74 20 74 68 69 73 20 66 6c  ^Without this fl
33c10 61 67 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ag, [sqlite3_pre
33c20 70 61 72 65 5f 76 33 28 29 5d 0a 2a 2a 20 61 6e  pare_v3()].** an
33c30 64 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  d [sqlite3_prepa
33c40 72 65 31 36 5f 76 33 28 29 5d 20 61 73 73 75 6d  re16_v3()] assum
33c50 65 20 74 68 61 74 20 74 68 65 20 70 72 65 70 61  e that the prepa
33c60 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 77 69  red statement wi
33c70 6c 6c 20 0a 2a 2a 20 62 65 20 75 73 65 64 20 6a  ll .** be used j
33c80 75 73 74 20 6f 6e 63 65 20 6f 72 20 61 74 20 6d  ust once or at m
33c90 6f 73 74 20 61 20 66 65 77 20 74 69 6d 65 73 20  ost a few times 
33ca0 61 6e 64 20 74 68 65 6e 20 64 65 73 74 72 6f 79  and then destroy
33cb0 65 64 20 75 73 69 6e 67 0a 2a 2a 20 5b 73 71 6c  ed using.** [sql
33cc0 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d  ite3_finalize()]
33cd0 20 72 65 6c 61 74 69 76 65 6c 79 20 73 6f 6f 6e   relatively soon
33ce0 2e 20 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d  . The current im
33cf0 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 63 74  plementation act
33d00 73 0a 2a 2a 20 6f 6e 20 74 68 69 73 20 68 69 6e  s.** on this hin
33d10 74 20 62 79 20 61 76 6f 69 64 69 6e 67 20 74 68  t by avoiding th
33d20 65 20 75 73 65 20 6f 66 20 5b 6c 6f 6f 6b 61 73  e use of [lookas
33d30 69 64 65 20 6d 65 6d 6f 72 79 5d 20 73 6f 20 61  ide memory] so a
33d40 73 20 6e 6f 74 20 74 6f 0a 2a 2a 20 64 65 70 6c  s not to.** depl
33d50 65 74 65 20 74 68 65 20 6c 69 6d 69 74 65 64 20  ete the limited 
33d60 73 74 6f 72 65 20 6f 66 20 6c 6f 6f 6b 61 73 69  store of lookasi
33d70 64 65 20 6d 65 6d 6f 72 79 2e 20 46 75 74 75 72  de memory. Futur
33d80 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 2a 2a  e versions of.**
33d90 20 53 51 4c 69 74 65 20 6d 61 79 20 61 63 74 20   SQLite may act 
33da0 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 64 69 66  on this hint dif
33db0 66 65 72 65 6e 74 6c 79 2e 0a 2a 2a 0a 2a 2a 20  ferently..**.** 
33dc0 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45  [[SQLITE_PREPARE
33dd0 5f 4e 4f 52 4d 41 4c 49 5a 45 5d 5d 20 3c 64 74  _NORMALIZE]] <dt
33de0 3e 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f  >SQLITE_PREPARE_
33df0 4e 4f 52 4d 41 4c 49 5a 45 3c 2f 64 74 3e 0a 2a  NORMALIZE</dt>.*
33e00 2a 20 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45  * <dd>The SQLITE
33e10 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49  _PREPARE_NORMALI
33e20 5a 45 20 66 6c 61 67 20 69 73 20 61 20 6e 6f 2d  ZE flag is a no-
33e30 6f 70 2e 20 54 68 69 73 20 66 6c 61 67 20 75 73  op. This flag us
33e40 65 64 0a 2a 2a 20 74 6f 20 62 65 20 72 65 71 75  ed.** to be requ
33e50 69 72 65 64 20 66 6f 72 20 61 6e 79 20 70 72 65  ired for any pre
33e60 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
33e70 74 68 61 74 20 77 61 6e 74 65 64 20 74 6f 20 75  that wanted to u
33e80 73 65 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  se the.** [sqlit
33e90 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f 73 71  e3_normalized_sq
33ea0 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20  l()] interface. 
33eb0 20 48 6f 77 65 76 65 72 2c 20 74 68 65 0a 2a 2a   However, the.**
33ec0 20 5b 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c   [sqlite3_normal
33ed0 69 7a 65 64 5f 73 71 6c 28 29 5d 20 69 6e 74 65  ized_sql()] inte
33ee0 72 66 61 63 65 20 69 73 20 6e 6f 77 20 61 76 61  rface is now ava
33ef0 69 6c 61 62 6c 65 20 74 6f 20 61 6c 6c 0a 2a 2a  ilable to all.**
33f00 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
33f10 65 6e 74 73 2c 20 72 65 67 61 72 64 6c 65 73 73  ents, regardless
33f20 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e   of whether or n
33f30 6f 74 20 74 68 65 79 20 75 73 65 20 74 68 69 73  ot they use this
33f40 0a 2a 2a 20 66 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20  .** flag..**.** 
33f50 5b 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45  [[SQLITE_PREPARE
33f60 5f 4e 4f 5f 56 54 41 42 5d 5d 20 3c 64 74 3e 53  _NO_VTAB]] <dt>S
33f70 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f  QLITE_PREPARE_NO
33f80 5f 56 54 41 42 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _VTAB</dt>.** <d
33f90 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 50 52 45  d>The SQLITE_PRE
33fa0 50 41 52 45 5f 4e 4f 5f 56 54 41 42 20 66 6c 61  PARE_NO_VTAB fla
33fb0 67 20 63 61 75 73 65 73 20 74 68 65 20 53 51 4c  g causes the SQL
33fc0 20 63 6f 6d 70 69 6c 65 72 0a 2a 2a 20 74 6f 20   compiler.** to 
33fd0 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72 20  return an error 
33fe0 28 65 72 72 6f 72 20 63 6f 64 65 20 53 51 4c 49  (error code SQLI
33ff0 54 45 5f 45 52 52 4f 52 29 20 69 66 20 74 68 65  TE_ERROR) if the
34000 20 73 74 61 74 65 6d 65 6e 74 20 75 73 65 73 0a   statement uses.
34010 2a 2a 20 61 6e 79 20 76 69 72 74 75 61 6c 20 74  ** any virtual t
34020 61 62 6c 65 73 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a  ables..** </dl>.
34030 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
34040 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49 53  E_PREPARE_PERSIS
34050 54 45 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  TENT            
34060 20 20 30 78 30 31 0a 23 64 65 66 69 6e 65 20 53    0x01.#define S
34070 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f  QLITE_PREPARE_NO
34080 52 4d 41 4c 49 5a 45 20 20 20 20 20 20 20 20 20  RMALIZE         
34090 20 20 20 20 20 20 30 78 30 32 0a 23 64 65 66 69        0x02.#defi
340a0 6e 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52  ne SQLITE_PREPAR
340b0 45 5f 4e 4f 5f 56 54 41 42 20 20 20 20 20 20 20  E_NO_VTAB       
340c0 20 20 20 20 20 20 20 20 20 20 30 78 30 34 0a 0a            0x04..
340d0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
340e0 43 6f 6d 70 69 6c 69 6e 67 20 41 6e 20 53 51 4c  Compiling An SQL
340f0 20 53 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 4b 45   Statement.** KE
34100 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20 73 74 61  YWORDS: {SQL sta
34110 74 65 6d 65 6e 74 20 63 6f 6d 70 69 6c 65 72 7d  tement compiler}
34120 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
34130 74 65 33 0a 2a 2a 20 43 4f 4e 53 54 52 55 43 54  te3.** CONSTRUCT
34140 4f 52 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  OR: sqlite3_stmt
34150 0a 2a 2a 0a 2a 2a 20 54 6f 20 65 78 65 63 75 74  .**.** To execut
34160 65 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65  e an SQL stateme
34170 6e 74 2c 20 69 74 20 6d 75 73 74 20 66 69 72 73  nt, it must firs
34180 74 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 69 6e  t be compiled in
34190 74 6f 20 61 20 62 79 74 65 2d 63 6f 64 65 0a 2a  to a byte-code.*
341a0 2a 20 70 72 6f 67 72 61 6d 20 75 73 69 6e 67 20  * program using 
341b0 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 72 6f 75  one of these rou
341c0 74 69 6e 65 73 2e 20 20 4f 72 2c 20 69 6e 20 6f  tines.  Or, in o
341d0 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 73  ther words, thes
341e0 65 20 72 6f 75 74 69 6e 65 73 0a 2a 2a 20 61 72  e routines.** ar
341f0 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 73 20 66  e constructors f
34200 6f 72 20 74 68 65 20 5b 70 72 65 70 61 72 65 64  or the [prepared
34210 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65   statement] obje
34220 63 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72  ct..**.** The pr
34230 65 66 65 72 72 65 64 20 72 6f 75 74 69 6e 65 20  eferred routine 
34240 74 6f 20 75 73 65 20 69 73 20 5b 73 71 6c 69 74  to use is [sqlit
34250 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
34260 2e 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  .  The.** [sqlit
34270 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20 69 6e  e3_prepare()] in
34280 74 65 72 66 61 63 65 20 69 73 20 6c 65 67 61 63  terface is legac
34290 79 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20  y and should be 
342a0 61 76 6f 69 64 65 64 2e 0a 2a 2a 20 5b 73 71 6c  avoided..** [sql
342b0 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28  ite3_prepare_v3(
342c0 29 5d 20 68 61 73 20 61 6e 20 65 78 74 72 61 20  )] has an extra 
342d0 22 70 72 65 70 46 6c 61 67 73 22 20 6f 70 74 69  "prepFlags" opti
342e0 6f 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 0a  on that is used.
342f0 2a 2a 20 66 6f 72 20 73 70 65 63 69 61 6c 20 70  ** for special p
34300 75 72 70 6f 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 54  urposes..**.** T
34310 68 65 20 75 73 65 20 6f 66 20 74 68 65 20 55 54  he use of the UT
34320 46 2d 38 20 69 6e 74 65 72 66 61 63 65 73 20 69  F-8 interfaces i
34330 73 20 70 72 65 66 65 72 72 65 64 2c 20 61 73 20  s preferred, as 
34340 53 51 4c 69 74 65 20 63 75 72 72 65 6e 74 6c 79  SQLite currently
34350 0a 2a 2a 20 64 6f 65 73 20 61 6c 6c 20 70 61 72  .** does all par
34360 73 69 6e 67 20 75 73 69 6e 67 20 55 54 46 2d 38  sing using UTF-8
34370 2e 20 20 54 68 65 20 55 54 46 2d 31 36 20 69 6e  .  The UTF-16 in
34380 74 65 72 66 61 63 65 73 20 61 72 65 20 70 72 6f  terfaces are pro
34390 76 69 64 65 64 0a 2a 2a 20 61 73 20 61 20 63 6f  vided.** as a co
343a0 6e 76 65 6e 69 65 6e 63 65 2e 20 20 54 68 65 20  nvenience.  The 
343b0 55 54 46 2d 31 36 20 69 6e 74 65 72 66 61 63 65  UTF-16 interface
343c0 73 20 77 6f 72 6b 20 62 79 20 63 6f 6e 76 65 72  s work by conver
343d0 74 69 6e 67 20 74 68 65 0a 2a 2a 20 69 6e 70 75  ting the.** inpu
343e0 74 20 74 65 78 74 20 69 6e 74 6f 20 55 54 46 2d  t text into UTF-
343f0 38 2c 20 74 68 65 6e 20 69 6e 76 6f 6b 69 6e 67  8, then invoking
34400 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64 69   the correspondi
34410 6e 67 20 55 54 46 2d 38 20 69 6e 74 65 72 66 61  ng UTF-8 interfa
34420 63 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69  ce..**.** The fi
34430 72 73 74 20 61 72 67 75 6d 65 6e 74 2c 20 22 64  rst argument, "d
34440 62 22 2c 20 69 73 20 61 20 5b 64 61 74 61 62 61  b", is a [databa
34450 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 6f  se connection] o
34460 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61 0a 2a  btained from a.*
34470 2a 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66  * prior successf
34480 75 6c 20 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69  ul call to [sqli
34490 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
344a0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d  lite3_open_v2()]
344b0 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   or.** [sqlite3_
344c0 6f 70 65 6e 31 36 28 29 5d 2e 20 20 54 68 65 20  open16()].  The 
344d0 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
344e0 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 68 61 76  ion must not hav
344f0 65 20 62 65 65 6e 20 63 6c 6f 73 65 64 2e 0a 2a  e been closed..*
34500 2a 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20  *.** The second 
34510 61 72 67 75 6d 65 6e 74 2c 20 22 7a 53 71 6c 22  argument, "zSql"
34520 2c 20 69 73 20 74 68 65 20 73 74 61 74 65 6d 65  , is the stateme
34530 6e 74 20 74 6f 20 62 65 20 63 6f 6d 70 69 6c 65  nt to be compile
34540 64 2c 20 65 6e 63 6f 64 65 64 0a 2a 2a 20 61 73  d, encoded.** as
34550 20 65 69 74 68 65 72 20 55 54 46 2d 38 20 6f 72   either UTF-8 or
34560 20 55 54 46 2d 31 36 2e 20 20 54 68 65 20 73 71   UTF-16.  The sq
34570 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 2c  lite3_prepare(),
34580 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
34590 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73 71  _v2(),.** and sq
345a0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
345b0 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73  ().** interfaces
345c0 20 75 73 65 20 55 54 46 2d 38 2c 20 61 6e 64 20   use UTF-8, and 
345d0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
345e0 36 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65  6(), sqlite3_pre
345f0 70 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a 2a 20  pare16_v2(),.** 
34600 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70  and sqlite3_prep
34610 61 72 65 31 36 5f 76 33 28 29 20 75 73 65 20 55  are16_v3() use U
34620 54 46 2d 31 36 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  TF-16..**.** ^If
34630 20 74 68 65 20 6e 42 79 74 65 20 61 72 67 75 6d   the nByte argum
34640 65 6e 74 20 69 73 20 6e 65 67 61 74 69 76 65 2c  ent is negative,
34650 20 74 68 65 6e 20 7a 53 71 6c 20 69 73 20 72 65   then zSql is re
34660 61 64 20 75 70 20 74 6f 20 74 68 65 0a 2a 2a 20  ad up to the.** 
34670 66 69 72 73 74 20 7a 65 72 6f 20 74 65 72 6d 69  first zero termi
34680 6e 61 74 6f 72 2e 20 5e 49 66 20 6e 42 79 74 65  nator. ^If nByte
34690 20 69 73 20 70 6f 73 69 74 69 76 65 2c 20 74 68   is positive, th
346a0 65 6e 20 69 74 20 69 73 20 74 68 65 0a 2a 2a 20  en it is the.** 
346b0 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
346c0 72 65 61 64 20 66 72 6f 6d 20 7a 53 71 6c 2e 20  read from zSql. 
346d0 20 5e 49 66 20 6e 42 79 74 65 20 69 73 20 7a 65   ^If nByte is ze
346e0 72 6f 2c 20 74 68 65 6e 20 6e 6f 20 70 72 65 70  ro, then no prep
346f0 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e  ared.** statemen
34700 74 20 69 73 20 67 65 6e 65 72 61 74 65 64 2e 0a  t is generated..
34710 2a 2a 20 49 66 20 74 68 65 20 63 61 6c 6c 65 72  ** If the caller
34720 20 6b 6e 6f 77 73 20 74 68 61 74 20 74 68 65 20   knows that the 
34730 73 75 70 70 6c 69 65 64 20 73 74 72 69 6e 67 20  supplied string 
34740 69 73 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 65  is nul-terminate
34750 64 2c 20 74 68 65 6e 0a 2a 2a 20 74 68 65 72 65  d, then.** there
34760 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 65 72 66   is a small perf
34770 6f 72 6d 61 6e 63 65 20 61 64 76 61 6e 74 61 67  ormance advantag
34780 65 20 74 6f 20 70 61 73 73 69 6e 67 20 61 6e 20  e to passing an 
34790 6e 42 79 74 65 20 70 61 72 61 6d 65 74 65 72 20  nByte parameter 
347a0 74 68 61 74 0a 2a 2a 20 69 73 20 74 68 65 20 6e  that.** is the n
347b0 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69  umber of bytes i
347c0 6e 20 74 68 65 20 69 6e 70 75 74 20 73 74 72 69  n the input stri
347d0 6e 67 20 3c 69 3e 69 6e 63 6c 75 64 69 6e 67 3c  ng <i>including<
347e0 2f 69 3e 0a 2a 2a 20 74 68 65 20 6e 75 6c 2d 74  /i>.** the nul-t
347f0 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 0a 2a 2a  erminator..**.**
34800 20 5e 49 66 20 70 7a 54 61 69 6c 20 69 73 20 6e   ^If pzTail is n
34810 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20 2a 70 7a  ot NULL then *pz
34820 54 61 69 6c 20 69 73 20 6d 61 64 65 20 74 6f 20  Tail is made to 
34830 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 66 69 72  point to the fir
34840 73 74 20 62 79 74 65 0a 2a 2a 20 70 61 73 74 20  st byte.** past 
34850 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 66  the end of the f
34860 69 72 73 74 20 53 51 4c 20 73 74 61 74 65 6d 65  irst SQL stateme
34870 6e 74 20 69 6e 20 7a 53 71 6c 2e 20 20 54 68 65  nt in zSql.  The
34880 73 65 20 72 6f 75 74 69 6e 65 73 20 6f 6e 6c 79  se routines only
34890 0a 2a 2a 20 63 6f 6d 70 69 6c 65 20 74 68 65 20  .** compile the 
348a0 66 69 72 73 74 20 73 74 61 74 65 6d 65 6e 74 20  first statement 
348b0 69 6e 20 7a 53 71 6c 2c 20 73 6f 20 2a 70 7a 54  in zSql, so *pzT
348c0 61 69 6c 20 69 73 20 6c 65 66 74 20 70 6f 69 6e  ail is left poin
348d0 74 69 6e 67 20 74 6f 0a 2a 2a 20 77 68 61 74 20  ting to.** what 
348e0 72 65 6d 61 69 6e 73 20 75 6e 63 6f 6d 70 69 6c  remains uncompil
348f0 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 2a 70 70 53 74  ed..**.** ^*ppSt
34900 6d 74 20 69 73 20 6c 65 66 74 20 70 6f 69 6e 74  mt is left point
34910 69 6e 67 20 74 6f 20 61 20 63 6f 6d 70 69 6c 65  ing to a compile
34920 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  d [prepared stat
34930 65 6d 65 6e 74 5d 20 74 68 61 74 20 63 61 6e 20  ement] that can 
34940 62 65 0a 2a 2a 20 65 78 65 63 75 74 65 64 20 75  be.** executed u
34950 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74  sing [sqlite3_st
34960 65 70 28 29 5d 2e 20 20 5e 49 66 20 74 68 65 72  ep()].  ^If ther
34970 65 20 69 73 20 61 6e 20 65 72 72 6f 72 2c 20 2a  e is an error, *
34980 70 70 53 74 6d 74 20 69 73 20 73 65 74 0a 2a 2a  ppStmt is set.**
34990 20 74 6f 20 4e 55 4c 4c 2e 20 20 5e 49 66 20 74   to NULL.  ^If t
349a0 68 65 20 69 6e 70 75 74 20 74 65 78 74 20 63 6f  he input text co
349b0 6e 74 61 69 6e 73 20 6e 6f 20 53 51 4c 20 28 69  ntains no SQL (i
349c0 66 20 74 68 65 20 69 6e 70 75 74 20 69 73 20 61  f the input is a
349d0 6e 20 65 6d 70 74 79 0a 2a 2a 20 73 74 72 69 6e  n empty.** strin
349e0 67 20 6f 72 20 61 20 63 6f 6d 6d 65 6e 74 29 20  g or a comment) 
349f0 74 68 65 6e 20 2a 70 70 53 74 6d 74 20 69 73 20  then *ppStmt is 
34a00 73 65 74 20 74 6f 20 4e 55 4c 4c 2e 0a 2a 2a 20  set to NULL..** 
34a10 54 68 65 20 63 61 6c 6c 69 6e 67 20 70 72 6f 63  The calling proc
34a20 65 64 75 72 65 20 69 73 20 72 65 73 70 6f 6e 73  edure is respons
34a30 69 62 6c 65 20 66 6f 72 20 64 65 6c 65 74 69 6e  ible for deletin
34a40 67 20 74 68 65 20 63 6f 6d 70 69 6c 65 64 0a 2a  g the compiled.*
34a50 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  * SQL statement 
34a60 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66  using [sqlite3_f
34a70 69 6e 61 6c 69 7a 65 28 29 5d 20 61 66 74 65 72  inalize()] after
34a80 20 69 74 20 68 61 73 20 66 69 6e 69 73 68 65 64   it has finished
34a90 20 77 69 74 68 20 69 74 2e 0a 2a 2a 20 70 70 53   with it..** ppS
34aa0 74 6d 74 20 6d 61 79 20 6e 6f 74 20 62 65 20 4e  tmt may not be N
34ab0 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 20 73  ULL..**.** ^On s
34ac0 75 63 63 65 73 73 2c 20 74 68 65 20 73 71 6c 69  uccess, the sqli
34ad0 74 65 33 5f 70 72 65 70 61 72 65 28 29 20 66 61  te3_prepare() fa
34ae0 6d 69 6c 79 20 6f 66 20 72 6f 75 74 69 6e 65 73  mily of routines
34af0 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
34b00 4f 4b 5d 3b 0a 2a 2a 20 6f 74 68 65 72 77 69 73  OK];.** otherwis
34b10 65 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65  e an [error code
34b20 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a  ] is returned..*
34b30 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
34b40 5f 70 72 65 70 61 72 65 5f 76 32 28 29 2c 20 73  _prepare_v2(), s
34b50 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34b60 33 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65  3(), sqlite3_pre
34b70 70 61 72 65 31 36 5f 76 32 28 29 2c 0a 2a 2a 20  pare16_v2(),.** 
34b80 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70  and sqlite3_prep
34b90 61 72 65 31 36 5f 76 33 28 29 20 69 6e 74 65 72  are16_v3() inter
34ba0 66 61 63 65 73 20 61 72 65 20 72 65 63 6f 6d 6d  faces are recomm
34bb0 65 6e 64 65 64 20 66 6f 72 20 61 6c 6c 20 6e 65  ended for all ne
34bc0 77 20 70 72 6f 67 72 61 6d 73 2e 0a 2a 2a 20 54  w programs..** T
34bd0 68 65 20 6f 6c 64 65 72 20 69 6e 74 65 72 66 61  he older interfa
34be0 63 65 73 20 28 73 71 6c 69 74 65 33 5f 70 72 65  ces (sqlite3_pre
34bf0 70 61 72 65 28 29 20 61 6e 64 20 73 71 6c 69 74  pare() and sqlit
34c00 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 29 0a  e3_prepare16()).
34c10 2a 2a 20 61 72 65 20 72 65 74 61 69 6e 65 64 20  ** are retained 
34c20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f  for backwards co
34c30 6d 70 61 74 69 62 69 6c 69 74 79 2c 20 62 75 74  mpatibility, but
34c40 20 74 68 65 69 72 20 75 73 65 20 69 73 20 64 69   their use is di
34c50 73 63 6f 75 72 61 67 65 64 2e 0a 2a 2a 20 5e 49  scouraged..** ^I
34c60 6e 20 74 68 65 20 22 76 58 22 20 69 6e 74 65 72  n the "vX" inter
34c70 66 61 63 65 73 2c 20 74 68 65 20 70 72 65 70 61  faces, the prepa
34c80 72 65 64 20 73 74 61 74 65 6d 65 6e 74 0a 2a 2a  red statement.**
34c90 20 74 68 61 74 20 69 73 20 72 65 74 75 72 6e 65   that is returne
34ca0 64 20 28 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  d (the [sqlite3_
34cb0 73 74 6d 74 5d 20 6f 62 6a 65 63 74 29 20 63 6f  stmt] object) co
34cc0 6e 74 61 69 6e 73 20 61 20 63 6f 70 79 20 6f 66  ntains a copy of
34cd0 20 74 68 65 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c   the.** original
34ce0 20 53 51 4c 20 74 65 78 74 2e 20 54 68 69 73 20   SQL text. This 
34cf0 63 61 75 73 65 73 20 74 68 65 20 5b 73 71 6c 69  causes the [sqli
34d00 74 65 33 5f 73 74 65 70 28 29 5d 20 69 6e 74 65  te3_step()] inte
34d10 72 66 61 63 65 20 74 6f 0a 2a 2a 20 62 65 68 61  rface to.** beha
34d20 76 65 20 64 69 66 66 65 72 65 6e 74 6c 79 20 69  ve differently i
34d30 6e 20 74 68 72 65 65 20 77 61 79 73 3a 0a 2a 2a  n three ways:.**
34d40 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ol>.** <li>
34d50 0a 2a 2a 20 5e 49 66 20 74 68 65 20 64 61 74 61  .** ^If the data
34d60 62 61 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e  base schema chan
34d70 67 65 73 2c 20 69 6e 73 74 65 61 64 20 6f 66 20  ges, instead of 
34d80 72 65 74 75 72 6e 69 6e 67 20 5b 53 51 4c 49 54  returning [SQLIT
34d90 45 5f 53 43 48 45 4d 41 5d 20 61 73 20 69 74 0a  E_SCHEMA] as it.
34da0 2a 2a 20 61 6c 77 61 79 73 20 75 73 65 64 20 74  ** always used t
34db0 6f 20 64 6f 2c 20 5b 73 71 6c 69 74 65 33 5f 73  o do, [sqlite3_s
34dc0 74 65 70 28 29 5d 20 77 69 6c 6c 20 61 75 74 6f  tep()] will auto
34dd0 6d 61 74 69 63 61 6c 6c 79 20 72 65 63 6f 6d 70  matically recomp
34de0 69 6c 65 20 74 68 65 20 53 51 4c 0a 2a 2a 20 73  ile the SQL.** s
34df0 74 61 74 65 6d 65 6e 74 20 61 6e 64 20 74 72 79  tatement and try
34e00 20 74 6f 20 72 75 6e 20 69 74 20 61 67 61 69 6e   to run it again
34e10 2e 20 41 73 20 6d 61 6e 79 20 61 73 20 5b 53 51  . As many as [SQ
34e20 4c 49 54 45 5f 4d 41 58 5f 53 43 48 45 4d 41 5f  LITE_MAX_SCHEMA_
34e30 52 45 54 52 59 5d 0a 2a 2a 20 72 65 74 72 69 65  RETRY].** retrie
34e40 73 20 77 69 6c 6c 20 6f 63 63 75 72 20 62 65 66  s will occur bef
34e50 6f 72 65 20 73 71 6c 69 74 65 33 5f 73 74 65 70  ore sqlite3_step
34e60 28 29 20 67 69 76 65 73 20 75 70 20 61 6e 64 20  () gives up and 
34e70 72 65 74 75 72 6e 73 20 61 6e 20 65 72 72 6f 72  returns an error
34e80 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a  ..** </li>.**.**
34e90 20 3c 6c 69 3e 0a 2a 2a 20 5e 57 68 65 6e 20 61   <li>.** ^When a
34ea0 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2c 20  n error occurs, 
34eb0 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
34ec0 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 6f 6e 65   will return one
34ed0 20 6f 66 20 74 68 65 20 64 65 74 61 69 6c 65 64   of the detailed
34ee0 0a 2a 2a 20 5b 65 72 72 6f 72 20 63 6f 64 65 73  .** [error codes
34ef0 5d 20 6f 72 20 5b 65 78 74 65 6e 64 65 64 20 65  ] or [extended e
34f00 72 72 6f 72 20 63 6f 64 65 73 5d 2e 20 20 5e 54  rror codes].  ^T
34f10 68 65 20 6c 65 67 61 63 79 20 62 65 68 61 76 69  he legacy behavi
34f20 6f 72 20 77 61 73 20 74 68 61 74 0a 2a 2a 20 5b  or was that.** [
34f30 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20  sqlite3_step()] 
34f40 77 6f 75 6c 64 20 6f 6e 6c 79 20 72 65 74 75 72  would only retur
34f50 6e 20 61 20 67 65 6e 65 72 69 63 20 5b 53 51 4c  n a generic [SQL
34f60 49 54 45 5f 45 52 52 4f 52 5d 20 72 65 73 75 6c  ITE_ERROR] resul
34f70 74 20 63 6f 64 65 0a 2a 2a 20 61 6e 64 20 74 68  t code.** and th
34f80 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 77 6f  e application wo
34f90 75 6c 64 20 68 61 76 65 20 74 6f 20 6d 61 6b 65  uld have to make
34fa0 20 61 20 73 65 63 6f 6e 64 20 63 61 6c 6c 20 74   a second call t
34fb0 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74  o [sqlite3_reset
34fc0 28 29 5d 0a 2a 2a 20 69 6e 20 6f 72 64 65 72 20  ()].** in order 
34fd0 74 6f 20 66 69 6e 64 20 74 68 65 20 75 6e 64 65  to find the unde
34fe0 72 6c 79 69 6e 67 20 63 61 75 73 65 20 6f 66 20  rlying cause of 
34ff0 74 68 65 20 70 72 6f 62 6c 65 6d 2e 20 57 69 74  the problem. Wit
35000 68 20 74 68 65 20 22 76 32 22 20 70 72 65 70 61  h the "v2" prepa
35010 72 65 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73  re.** interfaces
35020 2c 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67  , the underlying
35030 20 72 65 61 73 6f 6e 20 66 6f 72 20 74 68 65 20   reason for the 
35040 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65  error is returne
35050 64 20 69 6d 6d 65 64 69 61 74 65 6c 79 2e 0a 2a  d immediately..*
35060 2a 20 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c  * </li>.**.** <l
35070 69 3e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 73 70  i>.** ^If the sp
35080 65 63 69 66 69 63 20 76 61 6c 75 65 20 62 6f 75  ecific value bou
35090 6e 64 20 74 6f 20 5b 70 61 72 61 6d 65 74 65 72  nd to [parameter
350a0 20 7c 20 68 6f 73 74 20 70 61 72 61 6d 65 74 65   | host paramete
350b0 72 5d 20 69 6e 20 74 68 65 20 0a 2a 2a 20 57 48  r] in the .** WH
350c0 45 52 45 20 63 6c 61 75 73 65 20 6d 69 67 68 74  ERE clause might
350d0 20 69 6e 66 6c 75 65 6e 63 65 20 74 68 65 20 63   influence the c
350e0 68 6f 69 63 65 20 6f 66 20 71 75 65 72 79 20 70  hoice of query p
350f0 6c 61 6e 20 66 6f 72 20 61 20 73 74 61 74 65 6d  lan for a statem
35100 65 6e 74 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65  ent,.** then the
35110 20 73 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20   statement will 
35120 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  be automatically
35130 20 72 65 63 6f 6d 70 69 6c 65 64 2c 20 61 73 20   recompiled, as 
35140 69 66 20 74 68 65 72 65 20 68 61 64 20 62 65 65  if there had bee
35150 6e 20 0a 2a 2a 20 61 20 73 63 68 65 6d 61 20 63  n .** a schema c
35160 68 61 6e 67 65 2c 20 6f 6e 20 74 68 65 20 66 69  hange, on the fi
35170 72 73 74 20 20 5b 73 71 6c 69 74 65 33 5f 73 74  rst  [sqlite3_st
35180 65 70 28 29 5d 20 63 61 6c 6c 20 66 6f 6c 6c 6f  ep()] call follo
35190 77 69 6e 67 20 61 6e 79 20 63 68 61 6e 67 65 0a  wing any change.
351a0 2a 2a 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74  ** to the [sqlit
351b0 65 33 5f 62 69 6e 64 5f 74 65 78 74 20 7c 20 62  e3_bind_text | b
351c0 69 6e 64 69 6e 67 73 5d 20 6f 66 20 74 68 61 74  indings] of that
351d0 20 5b 70 61 72 61 6d 65 74 65 72 5d 2e 20 0a 2a   [parameter]. .*
351e0 2a 20 5e 54 68 65 20 73 70 65 63 69 66 69 63 20  * ^The specific 
351f0 76 61 6c 75 65 20 6f 66 20 57 48 45 52 45 2d 63  value of WHERE-c
35200 6c 61 75 73 65 20 5b 70 61 72 61 6d 65 74 65 72  lause [parameter
35210 5d 20 6d 69 67 68 74 20 69 6e 66 6c 75 65 6e 63  ] might influenc
35220 65 20 74 68 65 20 0a 2a 2a 20 63 68 6f 69 63 65  e the .** choice
35230 20 6f 66 20 71 75 65 72 79 20 70 6c 61 6e 20 69   of query plan i
35240 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20  f the parameter 
35250 69 73 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64  is the left-hand
35260 20 73 69 64 65 20 6f 66 20 61 20 5b 4c 49 4b 45   side of a [LIKE
35270 5d 0a 2a 2a 20 6f 72 20 5b 47 4c 4f 42 5d 20 6f  ].** or [GLOB] o
35280 70 65 72 61 74 6f 72 20 6f 72 20 69 66 20 74 68  perator or if th
35290 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 63  e parameter is c
352a0 6f 6d 70 61 72 65 64 20 74 6f 20 61 6e 20 69 6e  ompared to an in
352b0 64 65 78 65 64 20 63 6f 6c 75 6d 6e 0a 2a 2a 20  dexed column.** 
352c0 61 6e 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  and the [SQLITE_
352d0 45 4e 41 42 4c 45 5f 53 54 41 54 33 5d 20 63 6f  ENABLE_STAT3] co
352e0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
352f0 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a  n is enabled..**
35300 20 3c 2f 6c 69 3e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a   </li>.** </ol>.
35310 2a 2a 0a 2a 2a 20 3c 70 3e 5e 73 71 6c 69 74 65  **.** <p>^sqlite
35320 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 20 64  3_prepare_v3() d
35330 69 66 66 65 72 73 20 66 72 6f 6d 20 73 71 6c 69  iffers from sqli
35340 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
35350 20 6f 6e 6c 79 20 69 6e 20 68 61 76 69 6e 67 0a   only in having.
35360 2a 2a 20 74 68 65 20 65 78 74 72 61 20 70 72 65  ** the extra pre
35370 70 46 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72  pFlags parameter
35380 2c 20 77 68 69 63 68 20 69 73 20 61 20 62 69 74  , which is a bit
35390 20 61 72 72 61 79 20 63 6f 6e 73 69 73 74 69 6e   array consistin
353a0 67 20 6f 66 20 7a 65 72 6f 20 6f 72 0a 2a 2a 20  g of zero or.** 
353b0 6d 6f 72 65 20 6f 66 20 74 68 65 20 5b 53 51 4c  more of the [SQL
353c0 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53  ITE_PREPARE_PERS
353d0 49 53 54 45 4e 54 7c 53 51 4c 49 54 45 5f 50 52  ISTENT|SQLITE_PR
353e0 45 50 41 52 45 5f 2a 5d 20 66 6c 61 67 73 2e 20  EPARE_*] flags. 
353f0 20 5e 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33   ^The.** sqlite3
35400 5f 70 72 65 70 61 72 65 5f 76 32 28 29 20 69 6e  _prepare_v2() in
35410 74 65 72 66 61 63 65 20 77 6f 72 6b 73 20 65 78  terface works ex
35420 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20 61  actly the same a
35430 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65  s.** sqlite3_pre
35440 70 61 72 65 5f 76 33 28 29 20 77 69 74 68 20 61  pare_v3() with a
35450 20 7a 65 72 6f 20 70 72 65 70 46 6c 61 67 73 20   zero prepFlags 
35460 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2f 0a 53 51  parameter..*/.SQ
35470 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
35480 69 74 65 33 5f 70 72 65 70 61 72 65 28 0a 20 20  ite3_prepare(.  
35490 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
354a0 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62          /* Datab
354b0 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ase handle */.  
354c0 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71 6c  const char *zSql
354d0 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73  ,       /* SQL s
354e0 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20  tatement, UTF-8 
354f0 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74  encoded */.  int
35500 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20 20   nByte,         
35510 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20       /* Maximum 
35520 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69  length of zSql i
35530 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71  n bytes. */.  sq
35540 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
35550 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
35560 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
35570 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
35580 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
35590 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
355a0 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
355b0 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49   zSql */.);.SQLI
355c0 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
355d0 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 0a 20  e3_prepare_v2(. 
355e0 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20   sqlite3 *db,   
355f0 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61           /* Data
35600 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20  base handle */. 
35610 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 71   const char *zSq
35620 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20  l,       /* SQL 
35630 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 38  statement, UTF-8
35640 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
35650 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20  t nByte,        
35660 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d        /* Maximum
35670 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20   length of zSql 
35680 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73  in bytes. */.  s
35690 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70  qlite3_stmt **pp
356a0 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53  Stmt,  /* OUT: S
356b0 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
356c0 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  */.  const char 
356d0 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20  **pzTail     /* 
356e0 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20  OUT: Pointer to 
356f0 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f  unused portion o
35700 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c  f zSql */.);.SQL
35710 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
35720 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 0a  te3_prepare_v3(.
35730 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20    sqlite3 *db,  
35740 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74            /* Dat
35750 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a  abase handle */.
35760 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53    const char *zS
35770 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c  ql,       /* SQL
35780 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d   statement, UTF-
35790 38 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69  8 encoded */.  i
357a0 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20  nt nByte,       
357b0 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75         /* Maximu
357c0 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c  m length of zSql
357d0 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20   in bytes. */.  
357e0 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 70 72 65  unsigned int pre
357f0 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72 6f 20  pFlags, /* Zero 
35800 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54 45 5f 50  or more SQLITE_P
35810 52 45 50 41 52 45 5f 20 66 6c 61 67 73 20 2a 2f  REPARE_ flags */
35820 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
35830 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
35840 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
35850 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63  dle */.  const c
35860 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  har **pzTail    
35870 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
35880 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
35890 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
358a0 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
358b0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
358c0 36 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62  6(.  sqlite3 *db
358d0 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ,            /* 
358e0 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20  Database handle 
358f0 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
35900 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20  *zSql,       /* 
35910 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55  SQL statement, U
35920 54 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f  TF-16 encoded */
35930 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20  .  int nByte,   
35940 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61             /* Ma
35950 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
35960 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
35970 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  /.  sqlite3_stmt
35980 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f   **ppStmt,  /* O
35990 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61  UT: Statement ha
359a0 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
359b0 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20  void **pzTail   
359c0 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65    /* OUT: Pointe
359d0 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74  r to unused port
359e0 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29  ion of zSql */.)
359f0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
35a00 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
35a10 31 36 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33  16_v2(.  sqlite3
35a20 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20   *db,           
35a30 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e   /* Database han
35a40 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
35a50 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20  oid *zSql,      
35a60 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   /* SQL statemen
35a70 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65  t, UTF-16 encode
35a80 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65  d */.  int nByte
35a90 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f  ,              /
35aa0 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68  * Maximum length
35ab0 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65   of zSql in byte
35ac0 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f  s. */.  sqlite3_
35ad0 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20  stmt **ppStmt,  
35ae0 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e  /* OUT: Statemen
35af0 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f  t handle */.  co
35b00 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69  nst void **pzTai
35b10 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f  l     /* OUT: Po
35b20 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64 20  inter to unused 
35b30 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20  portion of zSql 
35b40 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  */.);.SQLITE_API
35b50 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65   int sqlite3_pre
35b60 70 61 72 65 31 36 5f 76 33 28 0a 20 20 73 71 6c  pare16_v3(.  sql
35b70 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
35b80 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
35b90 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
35ba0 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20  st void *zSql,  
35bb0 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
35bc0 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e  ement, UTF-16 en
35bd0 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e  coded */.  int n
35be0 42 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20  Byte,           
35bf0 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65     /* Maximum le
35c00 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20  ngth of zSql in 
35c10 62 79 74 65 73 2e 20 2a 2f 0a 20 20 75 6e 73 69  bytes. */.  unsi
35c20 67 6e 65 64 20 69 6e 74 20 70 72 65 70 46 6c 61  gned int prepFla
35c30 67 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d  gs, /* Zero or m
35c40 6f 72 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41  ore SQLITE_PREPA
35c50 52 45 5f 20 66 6c 61 67 73 20 2a 2f 0a 20 20 73  RE_ flags */.  s
35c60 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70  qlite3_stmt **pp
35c70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53  Stmt,  /* OUT: S
35c80 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
35c90 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
35ca0 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20  **pzTail     /* 
35cb0 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20  OUT: Pointer to 
35cc0 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f  unused portion o
35cd0 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a  f zSql */.);../*
35ce0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65  .** CAPI3REF: Re
35cf0 74 72 69 65 76 69 6e 67 20 53 74 61 74 65 6d 65  trieving Stateme
35d00 6e 74 20 53 51 4c 0a 2a 2a 20 4d 45 54 48 4f 44  nt SQL.** METHOD
35d10 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a  : sqlite3_stmt.*
35d20 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
35d30 33 5f 73 71 6c 28 50 29 20 69 6e 74 65 72 66 61  3_sql(P) interfa
35d40 63 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69  ce returns a poi
35d50 6e 74 65 72 20 74 6f 20 61 20 63 6f 70 79 20 6f  nter to a copy o
35d60 66 20 74 68 65 20 55 54 46 2d 38 0a 2a 2a 20 53  f the UTF-8.** S
35d70 51 4c 20 74 65 78 74 20 75 73 65 64 20 74 6f 20  QL text used to 
35d80 63 72 65 61 74 65 20 5b 70 72 65 70 61 72 65 64  create [prepared
35d90 20 73 74 61 74 65 6d 65 6e 74 5d 20 50 20 69 66   statement] P if
35da0 20 50 20 77 61 73 0a 2a 2a 20 63 72 65 61 74 65   P was.** create
35db0 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 70 72  d by [sqlite3_pr
35dc0 65 70 61 72 65 5f 76 32 28 29 5d 2c 20 5b 73 71  epare_v2()], [sq
35dd0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
35de0 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
35df0 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28 29 5d  _prepare16_v2()]
35e00 2c 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 70 72  , or [sqlite3_pr
35e10 65 70 61 72 65 31 36 5f 76 33 28 29 5d 2e 0a 2a  epare16_v3()]..*
35e20 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
35e30 78 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 20 69  xpanded_sql(P) i
35e40 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
35e50 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
35e60 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20  UTF-8.** string 
35e70 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 53  containing the S
35e80 51 4c 20 74 65 78 74 20 6f 66 20 70 72 65 70 61  QL text of prepa
35e90 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 50 20  red statement P 
35ea0 77 69 74 68 0a 2a 2a 20 5b 62 6f 75 6e 64 20 70  with.** [bound p
35eb0 61 72 61 6d 65 74 65 72 73 5d 20 65 78 70 61 6e  arameters] expan
35ec0 64 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ded..** ^The sql
35ed0 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f  ite3_normalized_
35ee0 73 71 6c 28 50 29 20 69 6e 74 65 72 66 61 63 65  sql(P) interface
35ef0 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74   returns a point
35f00 65 72 20 74 6f 20 61 20 55 54 46 2d 38 0a 2a 2a  er to a UTF-8.**
35f10 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69   string containi
35f20 6e 67 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65  ng the normalize
35f30 64 20 53 51 4c 20 74 65 78 74 20 6f 66 20 70 72  d SQL text of pr
35f40 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
35f50 20 50 2e 20 20 54 68 65 0a 2a 2a 20 73 65 6d 61   P.  The.** sema
35f60 6e 74 69 63 73 20 75 73 65 64 20 74 6f 20 6e 6f  ntics used to no
35f70 72 6d 61 6c 69 7a 65 20 61 20 53 51 4c 20 73 74  rmalize a SQL st
35f80 61 74 65 6d 65 6e 74 20 61 72 65 20 75 6e 73 70  atement are unsp
35f90 65 63 69 66 69 65 64 20 61 6e 64 20 73 75 62 6a  ecified and subj
35fa0 65 63 74 0a 2a 2a 20 74 6f 20 63 68 61 6e 67 65  ect.** to change
35fb0 2e 20 20 41 74 20 61 20 6d 69 6e 69 6d 75 6d 2c  .  At a minimum,
35fc0 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 73 20   literal values 
35fd0 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64  will be replaced
35fe0 20 77 69 74 68 20 73 75 69 74 61 62 6c 65 0a 2a   with suitable.*
35ff0 2a 20 70 6c 61 63 65 68 6f 6c 64 65 72 73 2e 0a  * placeholders..
36000 2a 2a 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d  **.** ^(For exam
36010 70 6c 65 2c 20 69 66 20 61 20 70 72 65 70 61 72  ple, if a prepar
36020 65 64 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ed statement is 
36030 63 72 65 61 74 65 64 20 75 73 69 6e 67 20 74 68  created using th
36040 65 20 53 51 4c 0a 2a 2a 20 74 65 78 74 20 22 53  e SQL.** text "S
36050 45 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a 22  ELECT $abc,:xyz"
36060 20 61 6e 64 20 69 66 20 70 61 72 61 6d 65 74 65   and if paramete
36070 72 20 24 61 62 63 20 69 73 20 62 6f 75 6e 64 20  r $abc is bound 
36080 74 6f 20 69 6e 74 65 67 65 72 20 32 33 34 35 0a  to integer 2345.
36090 2a 2a 20 61 6e 64 20 70 61 72 61 6d 65 74 65 72  ** and parameter
360a0 20 3a 78 79 7a 20 69 73 20 75 6e 62 6f 75 6e 64   :xyz is unbound
360b0 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 73  , then sqlite3_s
360c0 71 6c 28 29 20 77 69 6c 6c 20 72 65 74 75 72 6e  ql() will return
360d0 0a 2a 2a 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .** the original
360e0 20 73 74 72 69 6e 67 2c 20 22 53 45 4c 45 43 54   string, "SELECT
360f0 20 24 61 62 63 2c 3a 78 79 7a 22 20 62 75 74 20   $abc,:xyz" but 
36100 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65 64  sqlite3_expanded
36110 5f 73 71 6c 28 29 0a 2a 2a 20 77 69 6c 6c 20 72  _sql().** will r
36120 65 74 75 72 6e 20 22 53 45 4c 45 43 54 20 32 33  eturn "SELECT 23
36130 34 35 2c 4e 55 4c 4c 22 2e 29 5e 0a 2a 2a 0a 2a  45,NULL".)^.**.*
36140 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
36150 78 70 61 6e 64 65 64 5f 73 71 6c 28 29 20 69 6e  xpanded_sql() in
36160 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
36170 4e 55 4c 4c 20 69 66 20 69 6e 73 75 66 66 69 63  NULL if insuffic
36180 69 65 6e 74 20 6d 65 6d 6f 72 79 0a 2a 2a 20 69  ient memory.** i
36190 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 68  s available to h
361a0 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74 2c 20  old the result, 
361b0 6f 72 20 69 66 20 74 68 65 20 72 65 73 75 6c 74  or if the result
361c0 20 77 6f 75 6c 64 20 65 78 63 65 65 64 20 74 68   would exceed th
361d0 65 0a 2a 2a 20 74 68 65 20 6d 61 78 69 6d 75 6d  e.** the maximum
361e0 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 64   string length d
361f0 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65  etermined by the
36200 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c   [SQLITE_LIMIT_L
36210 45 4e 47 54 48 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54  ENGTH]..**.** ^T
36220 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45  he [SQLITE_TRACE
36230 5f 53 49 5a 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d  _SIZE_LIMIT] com
36240 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
36250 20 6c 69 6d 69 74 73 20 74 68 65 20 73 69 7a 65   limits the size
36260 20 6f 66 0a 2a 2a 20 62 6f 75 6e 64 20 70 61 72   of.** bound par
36270 61 6d 65 74 65 72 20 65 78 70 61 6e 73 69 6f 6e  ameter expansion
36280 73 2e 20 20 5e 54 68 65 20 5b 53 51 4c 49 54 45  s.  ^The [SQLITE
36290 5f 4f 4d 49 54 5f 54 52 41 43 45 5d 20 63 6f 6d  _OMIT_TRACE] com
362a0 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74  pile-time.** opt
362b0 69 6f 6e 20 63 61 75 73 65 73 20 73 71 6c 69 74  ion causes sqlit
362c0 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
362d0 29 20 74 6f 20 61 6c 77 61 79 73 20 72 65 74 75  ) to always retu
362e0 72 6e 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e  rn NULL..**.** ^
362f0 54 68 65 20 73 74 72 69 6e 67 73 20 72 65 74 75  The strings retu
36300 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
36310 73 71 6c 28 50 29 20 61 6e 64 20 73 71 6c 69 74  sql(P) and sqlit
36320 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f 73 71  e3_normalized_sq
36330 6c 28 50 29 0a 2a 2a 20 61 72 65 20 6d 61 6e 61  l(P).** are mana
36340 67 65 64 20 62 79 20 53 51 4c 69 74 65 20 61 6e  ged by SQLite an
36350 64 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61  d are automatica
36360 6c 6c 79 20 66 72 65 65 64 20 77 68 65 6e 20 74  lly freed when t
36370 68 65 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73  he prepared.** s
36380 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69 6e 61  tatement is fina
36390 6c 69 7a 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73  lized..** ^The s
363a0 74 72 69 6e 67 20 72 65 74 75 72 6e 65 64 20 62  tring returned b
363b0 79 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64  y sqlite3_expand
363c0 65 64 5f 73 71 6c 28 50 29 2c 20 6f 6e 20 74 68  ed_sql(P), on th
363d0 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 0a 2a 2a  e other hand,.**
363e0 20 69 73 20 6f 62 74 61 69 6e 65 64 20 66 72 6f   is obtained fro
363f0 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  m [sqlite3_mallo
36400 63 28 29 5d 20 61 6e 64 20 6d 75 73 74 20 62 65  c()] and must be
36410 20 66 72 65 65 20 62 79 20 74 68 65 20 61 70 70   free by the app
36420 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 62 79 20 70  lication.** by p
36430 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71  assing it to [sq
36440 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 2e 0a 2a  lite3_free()]..*
36450 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  /.SQLITE_API con
36460 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
36470 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d  _sql(sqlite3_stm
36480 74 20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c 49 54  t *pStmt);.SQLIT
36490 45 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69  E_API char *sqli
364a0 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c  te3_expanded_sql
364b0 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
364c0 53 74 6d 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50  Stmt);.SQLITE_AP
364d0 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73 71  I const char *sq
364e0 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64  lite3_normalized
364f0 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73 74 6d  _sql(sqlite3_stm
36500 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a  t *pStmt);../*.*
36510 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65  * CAPI3REF: Dete
36520 72 6d 69 6e 65 20 49 66 20 41 6e 20 53 51 4c 20  rmine If An SQL 
36530 53 74 61 74 65 6d 65 6e 74 20 57 72 69 74 65 73  Statement Writes
36540 20 54 68 65 20 44 61 74 61 62 61 73 65 0a 2a 2a   The Database.**
36550 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
36560 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  _stmt.**.** ^The
36570 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
36580 61 64 6f 6e 6c 79 28 58 29 20 69 6e 74 65 72 66  adonly(X) interf
36590 61 63 65 20 72 65 74 75 72 6e 73 20 74 72 75 65  ace returns true
365a0 20 28 6e 6f 6e 2d 7a 65 72 6f 29 20 69 66 0a 2a   (non-zero) if.*
365b0 2a 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74 68  * and only if th
365c0 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
365d0 65 6d 65 6e 74 5d 20 58 20 6d 61 6b 65 73 20 6e  ement] X makes n
365e0 6f 20 64 69 72 65 63 74 20 63 68 61 6e 67 65 73  o direct changes
365f0 20 74 6f 0a 2a 2a 20 74 68 65 20 63 6f 6e 74 65   to.** the conte
36600 6e 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61  nt of the databa
36610 73 65 20 66 69 6c 65 2e 0a 2a 2a 0a 2a 2a 20 4e  se file..**.** N
36620 6f 74 65 20 74 68 61 74 20 5b 61 70 70 6c 69 63  ote that [applic
36630 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51  ation-defined SQ
36640 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 6f 72 0a  L functions] or.
36650 2a 2a 20 5b 76 69 72 74 75 61 6c 20 74 61 62 6c  ** [virtual tabl
36660 65 73 5d 20 6d 69 67 68 74 20 63 68 61 6e 67 65  es] might change
36670 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e   the database in
36680 64 69 72 65 63 74 6c 79 20 61 73 20 61 20 73 69  directly as a si
36690 64 65 20 65 66 66 65 63 74 2e 20 20 0a 2a 2a 20  de effect.  .** 
366a0 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69  ^(For example, i
366b0 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e  f an application
366c0 20 64 65 66 69 6e 65 73 20 61 20 66 75 6e 63 74   defines a funct
366d0 69 6f 6e 20 22 65 76 61 6c 28 29 22 20 74 68 61  ion "eval()" tha
366e0 74 20 0a 2a 2a 20 63 61 6c 6c 73 20 5b 73 71 6c  t .** calls [sql
366f0 69 74 65 33 5f 65 78 65 63 28 29 5d 2c 20 74 68  ite3_exec()], th
36700 65 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  en the following
36710 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77   SQL statement w
36720 6f 75 6c 64 0a 2a 2a 20 63 68 61 6e 67 65 20 74  ould.** change t
36730 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  he database file
36740 20 74 68 72 6f 75 67 68 20 73 69 64 65 2d 65 66   through side-ef
36750 66 65 63 74 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c  fects:.**.** <bl
36760 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a  ockquote><pre>.*
36770 2a 20 20 20 20 53 45 4c 45 43 54 20 65 76 61 6c  *    SELECT eval
36780 28 27 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31  ('DELETE FROM t1
36790 27 29 20 46 52 4f 4d 20 74 32 3b 0a 2a 2a 20 3c  ') FROM t2;.** <
367a0 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
367b0 65 3e 0a 2a 2a 0a 2a 2a 20 42 75 74 20 62 65 63  e>.**.** But bec
367c0 61 75 73 65 20 74 68 65 20 5b 53 45 4c 45 43 54  ause the [SELECT
367d0 5d 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73  ] statement does
367e0 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20   not change the 
367f0 64 61 74 61 62 61 73 65 20 66 69 6c 65 0a 2a 2a  database file.**
36800 20 64 69 72 65 63 74 6c 79 2c 20 73 71 6c 69 74   directly, sqlit
36810 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
36820 28 29 20 77 6f 75 6c 64 20 73 74 69 6c 6c 20 72  () would still r
36830 65 74 75 72 6e 20 74 72 75 65 2e 29 5e 0a 2a 2a  eturn true.)^.**
36840 0a 2a 2a 20 5e 54 72 61 6e 73 61 63 74 69 6f 6e  .** ^Transaction
36850 20 63 6f 6e 74 72 6f 6c 20 73 74 61 74 65 6d 65   control stateme
36860 6e 74 73 20 73 75 63 68 20 61 73 20 5b 42 45 47  nts such as [BEG
36870 49 4e 5d 2c 20 5b 43 4f 4d 4d 49 54 5d 2c 20 5b  IN], [COMMIT], [
36880 52 4f 4c 4c 42 41 43 4b 5d 2c 0a 2a 2a 20 5b 53  ROLLBACK],.** [S
36890 41 56 45 50 4f 49 4e 54 5d 2c 20 61 6e 64 20 5b  AVEPOINT], and [
368a0 52 45 4c 45 41 53 45 5d 20 63 61 75 73 65 20 73  RELEASE] cause s
368b0 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
368c0 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75 72 6e  only() to return
368d0 20 74 72 75 65 2c 0a 2a 2a 20 73 69 6e 63 65 20   true,.** since 
368e0 74 68 65 20 73 74 61 74 65 6d 65 6e 74 73 20 74  the statements t
368f0 68 65 6d 73 65 6c 76 65 73 20 64 6f 20 6e 6f 74  hemselves do not
36900 20 61 63 74 75 61 6c 6c 79 20 6d 6f 64 69 66 79   actually modify
36910 20 74 68 65 20 64 61 74 61 62 61 73 65 20 62 75   the database bu
36920 74 0a 2a 2a 20 72 61 74 68 65 72 20 74 68 65 79  t.** rather they
36930 20 63 6f 6e 74 72 6f 6c 20 74 68 65 20 74 69 6d   control the tim
36940 69 6e 67 20 6f 66 20 77 68 65 6e 20 6f 74 68 65  ing of when othe
36950 72 20 73 74 61 74 65 6d 65 6e 74 73 20 6d 6f 64  r statements mod
36960 69 66 79 20 74 68 65 20 0a 2a 2a 20 64 61 74 61  ify the .** data
36970 62 61 73 65 2e 20 20 5e 54 68 65 20 5b 41 54 54  base.  ^The [ATT
36980 41 43 48 5d 20 61 6e 64 20 5b 44 45 54 41 43 48  ACH] and [DETACH
36990 5d 20 73 74 61 74 65 6d 65 6e 74 73 20 61 6c 73  ] statements als
369a0 6f 20 63 61 75 73 65 0a 2a 2a 20 73 71 6c 69 74  o cause.** sqlit
369b0 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
369c0 28 29 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75  () to return tru
369d0 65 20 73 69 6e 63 65 2c 20 77 68 69 6c 65 20 74  e since, while t
369e0 68 6f 73 65 20 73 74 61 74 65 6d 65 6e 74 73 0a  hose statements.
369f0 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 63 6f  ** change the co
36a00 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 66 20 61  nfiguration of a
36a10 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
36a20 74 69 6f 6e 2c 20 74 68 65 79 20 64 6f 20 6e 6f  tion, they do no
36a30 74 20 6d 61 6b 65 20 0a 2a 2a 20 63 68 61 6e 67  t make .** chang
36a40 65 73 20 74 6f 20 74 68 65 20 63 6f 6e 74 65 6e  es to the conten
36a50 74 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  t of the databas
36a60 65 20 66 69 6c 65 73 20 6f 6e 20 64 69 73 6b 2e  e files on disk.
36a70 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
36a80 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29  _stmt_readonly()
36a90 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
36aa0 6e 73 20 74 72 75 65 20 66 6f 72 20 5b 42 45 47  ns true for [BEG
36ab0 49 4e 5d 20 73 69 6e 63 65 0a 2a 2a 20 5b 42 45  IN] since.** [BE
36ac0 47 49 4e 5d 20 6d 65 72 65 6c 79 20 73 65 74 73  GIN] merely sets
36ad0 20 69 6e 74 65 72 6e 61 6c 20 66 6c 61 67 73 2c   internal flags,
36ae0 20 62 75 74 20 74 68 65 20 5b 42 45 47 49 4e 7c   but the [BEGIN|
36af0 42 45 47 49 4e 20 49 4d 4d 45 44 49 41 54 45 5d  BEGIN IMMEDIATE]
36b00 20 61 6e 64 0a 2a 2a 20 5b 42 45 47 49 4e 7c 42   and.** [BEGIN|B
36b10 45 47 49 4e 20 45 58 43 4c 55 53 49 56 45 5d 20  EGIN EXCLUSIVE] 
36b20 63 6f 6d 6d 61 6e 64 73 20 64 6f 20 74 6f 75 63  commands do touc
36b30 68 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  h the database a
36b40 6e 64 20 73 6f 0a 2a 2a 20 73 71 6c 69 74 65 33  nd so.** sqlite3
36b50 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29  _stmt_readonly()
36b60 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20 66   returns false f
36b70 6f 72 20 74 68 6f 73 65 20 63 6f 6d 6d 61 6e 64  or those command
36b80 73 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  s..*/.SQLITE_API
36b90 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d   int sqlite3_stm
36ba0 74 5f 72 65 61 64 6f 6e 6c 79 28 73 71 6c 69 74  t_readonly(sqlit
36bb0 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
36bc0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
36bd0 3a 20 51 75 65 72 79 20 54 68 65 20 45 58 50 4c  : Query The EXPL
36be0 41 49 4e 20 53 65 74 74 69 6e 67 20 46 6f 72 20  AIN Setting For 
36bf0 41 20 50 72 65 70 61 72 65 64 20 53 74 61 74 65  A Prepared State
36c00 6d 65 6e 74 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  ment.** METHOD: 
36c10 73 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a  sqlite3_stmt.**.
36c20 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
36c30 73 74 6d 74 5f 69 73 65 78 70 6c 61 69 6e 28 53  stmt_isexplain(S
36c40 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
36c50 72 6e 73 20 31 20 69 66 20 74 68 65 0a 2a 2a 20  rns 1 if the.** 
36c60 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
36c70 6e 74 20 53 20 69 73 20 61 6e 20 45 58 50 4c 41  nt S is an EXPLA
36c80 49 4e 20 73 74 61 74 65 6d 65 6e 74 2c 20 6f 72  IN statement, or
36c90 20 32 20 69 66 20 74 68 65 0a 2a 2a 20 73 74 61   2 if the.** sta
36ca0 74 65 6d 65 6e 74 20 53 20 69 73 20 61 6e 20 45  tement S is an E
36cb0 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50 4c 41  XPLAIN QUERY PLA
36cc0 4e 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  N..** ^The sqlit
36cd0 65 33 5f 73 74 6d 74 5f 69 73 65 78 70 6c 61 69  e3_stmt_isexplai
36ce0 6e 28 53 29 20 69 6e 74 65 72 66 61 63 65 20 72  n(S) interface r
36cf0 65 74 75 72 6e 73 20 30 20 69 66 20 53 20 69 73  eturns 0 if S is
36d00 0a 2a 2a 20 61 6e 20 6f 72 64 69 6e 61 72 79 20  .** an ordinary 
36d10 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 61 20 4e  statement or a N
36d20 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2f 0a  ULL pointer..*/.
36d30 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
36d40 71 6c 69 74 65 33 5f 73 74 6d 74 5f 69 73 65 78  qlite3_stmt_isex
36d50 70 6c 61 69 6e 28 73 71 6c 69 74 65 33 5f 73 74  plain(sqlite3_st
36d60 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a  mt *pStmt);../*.
36d70 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74  ** CAPI3REF: Det
36d80 65 72 6d 69 6e 65 20 49 66 20 41 20 50 72 65 70  ermine If A Prep
36d90 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20 48  ared Statement H
36da0 61 73 20 42 65 65 6e 20 52 65 73 65 74 0a 2a 2a  as Been Reset.**
36db0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
36dc0 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  _stmt.**.** ^The
36dd0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75   sqlite3_stmt_bu
36de0 73 79 28 53 29 20 69 6e 74 65 72 66 61 63 65 20  sy(S) interface 
36df0 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f  returns true (no
36e00 6e 2d 7a 65 72 6f 29 20 69 66 20 74 68 65 0a 2a  n-zero) if the.*
36e10 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  * [prepared stat
36e20 65 6d 65 6e 74 5d 20 53 20 68 61 73 20 62 65 65  ement] S has bee
36e30 6e 20 73 74 65 70 70 65 64 20 61 74 20 6c 65 61  n stepped at lea
36e40 73 74 20 6f 6e 63 65 20 75 73 69 6e 67 20 0a 2a  st once using .*
36e50 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  * [sqlite3_step(
36e60 53 29 5d 20 62 75 74 20 68 61 73 20 6e 65 69 74  S)] but has neit
36e70 68 65 72 20 72 75 6e 20 74 6f 20 63 6f 6d 70 6c  her run to compl
36e80 65 74 69 6f 6e 20 28 72 65 74 75 72 6e 65 64 0a  etion (returned.
36e90 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d  ** [SQLITE_DONE]
36ea0 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73   from [sqlite3_s
36eb0 74 65 70 28 53 29 5d 29 20 6e 6f 72 0a 2a 2a 20  tep(S)]) nor.** 
36ec0 62 65 65 6e 20 72 65 73 65 74 20 75 73 69 6e 67  been reset using
36ed0 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
36ee0 53 29 5d 2e 20 20 5e 54 68 65 20 73 71 6c 69 74  S)].  ^The sqlit
36ef0 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29 0a  e3_stmt_busy(S).
36f00 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  ** interface ret
36f10 75 72 6e 73 20 66 61 6c 73 65 20 69 66 20 53 20  urns false if S 
36f20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  is a NULL pointe
36f30 72 2e 20 20 49 66 20 53 20 69 73 20 6e 6f 74 20  r.  If S is not 
36f40 61 20 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74  a .** NULL point
36f50 65 72 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20  er and is not a 
36f60 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c  pointer to a val
36f70 69 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  id [prepared sta
36f80 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a 65 63  tement].** objec
36f90 74 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61  t, then the beha
36fa0 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
36fb0 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 75  d and probably u
36fc0 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a  ndesirable..**.*
36fd0 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  * This interface
36fe0 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
36ff0 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 5b 73 71 6c  combination [sql
37000 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 29  ite3_next_stmt()
37010 5d 0a 2a 2a 20 74 6f 20 6c 6f 63 61 74 65 20 61  ].** to locate a
37020 6c 6c 20 70 72 65 70 61 72 65 64 20 73 74 61 74  ll prepared stat
37030 65 6d 65 6e 74 73 20 61 73 73 6f 63 69 61 74 65  ements associate
37040 64 20 77 69 74 68 20 61 20 64 61 74 61 62 61 73  d with a databas
37050 65 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e  e .** connection
37060 20 74 68 61 74 20 61 72 65 20 69 6e 20 6e 65 65   that are in nee
37070 64 20 6f 66 20 62 65 69 6e 67 20 72 65 73 65 74  d of being reset
37080 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75  .  This can be u
37090 73 65 64 2c 0a 2a 2a 20 66 6f 72 20 65 78 61 6d  sed,.** for exam
370a0 70 6c 65 2c 20 69 6e 20 64 69 61 67 6e 6f 73 74  ple, in diagnost
370b0 69 63 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 73  ic routines to s
370c0 65 61 72 63 68 20 66 6f 72 20 70 72 65 70 61 72  earch for prepar
370d0 65 64 20 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  ed .** statement
370e0 73 20 74 68 61 74 20 61 72 65 20 68 6f 6c 64 69  s that are holdi
370f0 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ng a transaction
37100 20 6f 70 65 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45   open..*/.SQLITE
37110 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
37120 5f 73 74 6d 74 5f 62 75 73 79 28 73 71 6c 69 74  _stmt_busy(sqlit
37130 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a  e3_stmt*);../*.*
37140 2a 20 43 41 50 49 33 52 45 46 3a 20 44 79 6e 61  * CAPI3REF: Dyna
37150 6d 69 63 61 6c 6c 79 20 54 79 70 65 64 20 56 61  mically Typed Va
37160 6c 75 65 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b 45  lue Object.** KE
37170 59 57 4f 52 44 53 3a 20 7b 70 72 6f 74 65 63 74  YWORDS: {protect
37180 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
37190 7d 20 7b 75 6e 70 72 6f 74 65 63 74 65 64 20 73  } {unprotected s
371a0 71 6c 69 74 65 33 5f 76 61 6c 75 65 7d 0a 2a 2a  qlite3_value}.**
371b0 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20  .** SQLite uses 
371c0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  the sqlite3_valu
371d0 65 20 6f 62 6a 65 63 74 20 74 6f 20 72 65 70 72  e object to repr
371e0 65 73 65 6e 74 20 61 6c 6c 20 76 61 6c 75 65 73  esent all values
371f0 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62 65 20  .** that can be 
37200 73 74 6f 72 65 64 20 69 6e 20 61 20 64 61 74 61  stored in a data
37210 62 61 73 65 20 74 61 62 6c 65 2e 20 53 51 4c 69  base table. SQLi
37220 74 65 20 75 73 65 73 20 64 79 6e 61 6d 69 63 20  te uses dynamic 
37230 74 79 70 69 6e 67 0a 2a 2a 20 66 6f 72 20 74 68  typing.** for th
37240 65 20 76 61 6c 75 65 73 20 69 74 20 73 74 6f 72  e values it stor
37250 65 73 2e 20 20 5e 56 61 6c 75 65 73 20 73 74 6f  es.  ^Values sto
37260 72 65 64 20 69 6e 20 73 71 6c 69 74 65 33 5f 76  red in sqlite3_v
37270 61 6c 75 65 20 6f 62 6a 65 63 74 73 0a 2a 2a 20  alue objects.** 
37280 63 61 6e 20 62 65 20 69 6e 74 65 67 65 72 73 2c  can be integers,
37290 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
372a0 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67 73 2c  values, strings,
372b0 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 2e   BLOBs, or NULL.
372c0 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71 6c 69 74 65  .**.** An sqlite
372d0 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 6d  3_value object m
372e0 61 79 20 62 65 20 65 69 74 68 65 72 20 22 70 72  ay be either "pr
372f0 6f 74 65 63 74 65 64 22 20 6f 72 20 22 75 6e 70  otected" or "unp
37300 72 6f 74 65 63 74 65 64 22 2e 0a 2a 2a 20 53 6f  rotected"..** So
37310 6d 65 20 69 6e 74 65 72 66 61 63 65 73 20 72 65  me interfaces re
37320 71 75 69 72 65 20 61 20 70 72 6f 74 65 63 74 65  quire a protecte
37330 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
37340 20 20 4f 74 68 65 72 20 69 6e 74 65 72 66 61 63    Other interfac
37350 65 73 0a 2a 2a 20 77 69 6c 6c 20 61 63 63 65 70  es.** will accep
37360 74 20 65 69 74 68 65 72 20 61 20 70 72 6f 74 65  t either a prote
37370 63 74 65 64 20 6f 72 20 61 6e 20 75 6e 70 72 6f  cted or an unpro
37380 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
37390 61 6c 75 65 2e 0a 2a 2a 20 45 76 65 72 79 20 69  alue..** Every i
373a0 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 61 63  nterface that ac
373b0 63 65 70 74 73 20 73 71 6c 69 74 65 33 5f 76 61  cepts sqlite3_va
373c0 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 20 73 70  lue arguments sp
373d0 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 65 74 68  ecifies.** wheth
373e0 65 72 20 6f 72 20 6e 6f 74 20 69 74 20 72 65 71  er or not it req
373f0 75 69 72 65 73 20 61 20 70 72 6f 74 65 63 74 65  uires a protecte
37400 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
37410 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65    The.** [sqlite
37420 33 5f 76 61 6c 75 65 5f 64 75 70 28 29 5d 20 69  3_value_dup()] i
37430 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
37440 75 73 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63  used to construc
37450 74 20 61 20 6e 65 77 20 0a 2a 2a 20 70 72 6f 74  t a new .** prot
37460 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
37470 6c 75 65 20 66 72 6f 6d 20 61 6e 20 75 6e 70 72  lue from an unpr
37480 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
37490 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  value..**.** The
374a0 20 74 65 72 6d 73 20 22 70 72 6f 74 65 63 74 65   terms "protecte
374b0 64 22 20 61 6e 64 20 22 75 6e 70 72 6f 74 65 63  d" and "unprotec
374c0 74 65 64 22 20 72 65 66 65 72 20 74 6f 20 77 68  ted" refer to wh
374d0 65 74 68 65 72 20 6f 72 20 6e 6f 74 0a 2a 2a 20  ether or not.** 
374e0 61 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64 2e  a mutex is held.
374f0 20 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20 6d 75    An internal mu
37500 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72 20  tex is held for 
37510 61 20 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73  a protected.** s
37520 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
37530 65 63 74 20 62 75 74 20 6e 6f 20 6d 75 74 65 78  ect but no mutex
37540 20 69 73 20 68 65 6c 64 20 66 6f 72 20 61 6e 20   is held for an 
37550 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73  unprotected.** s
37560 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
37570 65 63 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20  ect.  If SQLite 
37580 69 73 20 63 6f 6d 70 69 6c 65 64 20 74 6f 20 62  is compiled to b
37590 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 65  e single-threade
375a0 64 0a 2a 2a 20 28 77 69 74 68 20 5b 53 51 4c 49  d.** (with [SQLI
375b0 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
375c0 20 61 6e 64 20 77 69 74 68 20 5b 73 71 6c 69 74   and with [sqlit
375d0 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
375e0 20 72 65 74 75 72 6e 69 6e 67 20 30 29 0a 2a 2a   returning 0).**
375f0 20 6f 72 20 69 66 20 53 51 4c 69 74 65 20 69 73   or if SQLite is
37600 20 72 75 6e 20 69 6e 20 6f 6e 65 20 6f 66 20 72   run in one of r
37610 65 64 75 63 65 64 20 6d 75 74 65 78 20 6d 6f 64  educed mutex mod
37620 65 73 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43  es .** [SQLITE_C
37630 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
37640 41 44 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43  AD] or [SQLITE_C
37650 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
37660 44 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 72 65  D].** then there
37670 20 69 73 20 6e 6f 20 64 69 73 74 69 6e 63 74 69   is no distincti
37680 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74 65  on between prote
37690 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74 65  cted and unprote
376a0 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  cted.** sqlite3_
376b0 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 61 6e  value objects an
376c0 64 20 74 68 65 79 20 63 61 6e 20 62 65 20 75 73  d they can be us
376d0 65 64 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62  ed interchangeab
376e0 6c 79 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a  ly.  However,.**
376f0 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20 63 6f 64   for maximum cod
37700 65 20 70 6f 72 74 61 62 69 6c 69 74 79 20 69 74  e portability it
37710 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
37720 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  that application
37730 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d 61 6b 65 20  s.** still make 
37740 74 68 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 20  the distinction 
37750 62 65 74 77 65 65 6e 20 70 72 6f 74 65 63 74 65  between protecte
37760 64 20 61 6e 64 20 75 6e 70 72 6f 74 65 63 74 65  d and unprotecte
37770 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c  d.** sqlite3_val
37780 75 65 20 6f 62 6a 65 63 74 73 20 65 76 65 6e 20  ue objects even 
37790 77 68 65 6e 20 6e 6f 74 20 73 74 72 69 63 74 6c  when not strictl
377a0 79 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a  y required..**.*
377b0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76  * ^The sqlite3_v
377c0 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 74 68 61  alue objects tha
377d0 74 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  t are passed as 
377e0 70 61 72 61 6d 65 74 65 72 73 20 69 6e 74 6f 20  parameters into 
377f0 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74  the.** implement
37800 61 74 69 6f 6e 20 6f 66 20 5b 61 70 70 6c 69 63  ation of [applic
37810 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51  ation-defined SQ
37820 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65  L functions] are
37830 20 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20 5e   protected..** ^
37840 54 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  The sqlite3_valu
37850 65 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65  e object returne
37860 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  d by.** [sqlite3
37870 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28 29 5d  _column_value()]
37880 20 69 73 20 75 6e 70 72 6f 74 65 63 74 65 64 2e   is unprotected.
37890 0a 2a 2a 20 55 6e 70 72 6f 74 65 63 74 65 64 20  .** Unprotected 
378a0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62  sqlite3_value ob
378b0 6a 65 63 74 73 20 6d 61 79 20 6f 6e 6c 79 20 62  jects may only b
378c0 65 20 75 73 65 64 20 61 73 20 61 72 67 75 6d 65  e used as argume
378d0 6e 74 73 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74  nts.** to [sqlit
378e0 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28  e3_result_value(
378f0 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  )], [sqlite3_bin
37900 64 5f 76 61 6c 75 65 28 29 5d 2c 20 61 6e 64 0a  d_value()], and.
37910 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  ** [sqlite3_valu
37920 65 5f 64 75 70 28 29 5d 2e 0a 2a 2a 20 54 68 65  e_dup()]..** The
37930 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
37940 62 6c 6f 62 20 7c 20 73 71 6c 69 74 65 33 5f 76  blob | sqlite3_v
37950 61 6c 75 65 5f 74 79 70 65 28 29 5d 20 66 61 6d  alue_type()] fam
37960 69 6c 79 20 6f 66 0a 2a 2a 20 69 6e 74 65 72 66  ily of.** interf
37970 61 63 65 73 20 72 65 71 75 69 72 65 20 70 72 6f  aces require pro
37980 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
37990 61 6c 75 65 20 6f 62 6a 65 63 74 73 2e 0a 2a 2f  alue objects..*/
379a0 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
379b0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 71  sqlite3_value sq
379c0 6c 69 74 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f 2a  lite3_value;../*
379d0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51  .** CAPI3REF: SQ
379e0 4c 20 46 75 6e 63 74 69 6f 6e 20 43 6f 6e 74 65  L Function Conte
379f0 78 74 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20  xt Object.**.** 
37a00 54 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 20 77  The context in w
37a10 68 69 63 68 20 61 6e 20 53 51 4c 20 66 75 6e 63  hich an SQL func
37a20 74 69 6f 6e 20 65 78 65 63 75 74 65 73 20 69 73  tion executes is
37a30 20 73 74 6f 72 65 64 20 69 6e 20 61 6e 0a 2a 2a   stored in an.**
37a40 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
37a50 20 6f 62 6a 65 63 74 2e 20 20 5e 41 20 70 6f 69   object.  ^A poi
37a60 6e 74 65 72 20 74 6f 20 61 6e 20 73 71 6c 69 74  nter to an sqlit
37a70 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65 63  e3_context objec
37a80 74 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 66  t.** is always f
37a90 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74  irst parameter t
37aa0 6f 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  o [application-d
37ab0 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74  efined SQL funct
37ac0 69 6f 6e 73 5d 2e 0a 2a 2a 20 54 68 65 20 61 70  ions]..** The ap
37ad0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
37ae0 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  d SQL function i
37af0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69  mplementation wi
37b00 6c 6c 20 70 61 73 73 20 74 68 69 73 0a 2a 2a 20  ll pass this.** 
37b10 70 6f 69 6e 74 65 72 20 74 68 72 6f 75 67 68 20  pointer through 
37b20 69 6e 74 6f 20 63 61 6c 6c 73 20 74 6f 20 5b 73  into calls to [s
37b30 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
37b40 74 20 7c 20 73 71 6c 69 74 65 33 5f 72 65 73 75  t | sqlite3_resu
37b50 6c 74 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  lt()],.** [sqlit
37b60 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
37b70 74 65 78 74 28 29 5d 2c 20 5b 73 71 6c 69 74 65  text()], [sqlite
37b80 33 5f 75 73 65 72 5f 64 61 74 61 28 29 5d 2c 0a  3_user_data()],.
37b90 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ** [sqlite3_cont
37ba0 65 78 74 5f 64 62 5f 68 61 6e 64 6c 65 28 29 5d  ext_db_handle()]
37bb0 2c 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  , [sqlite3_get_a
37bc0 75 78 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 61 6e  uxdata()],.** an
37bd0 64 2f 6f 72 20 5b 73 71 6c 69 74 65 33 5f 73 65  d/or [sqlite3_se
37be0 74 5f 61 75 78 64 61 74 61 28 29 5d 2e 0a 2a 2f  t_auxdata()]..*/
37bf0 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
37c00 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
37c10 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 3b  sqlite3_context;
37c20 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
37c30 3a 20 42 69 6e 64 69 6e 67 20 56 61 6c 75 65 73  : Binding Values
37c40 20 54 6f 20 50 72 65 70 61 72 65 64 20 53 74 61   To Prepared Sta
37c50 74 65 6d 65 6e 74 73 0a 2a 2a 20 4b 45 59 57 4f  tements.** KEYWO
37c60 52 44 53 3a 20 7b 68 6f 73 74 20 70 61 72 61 6d  RDS: {host param
37c70 65 74 65 72 7d 20 7b 68 6f 73 74 20 70 61 72 61  eter} {host para
37c80 6d 65 74 65 72 73 7d 20 7b 68 6f 73 74 20 70 61  meters} {host pa
37c90 72 61 6d 65 74 65 72 20 6e 61 6d 65 7d 0a 2a 2a  rameter name}.**
37ca0 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20   KEYWORDS: {SQL 
37cb0 70 61 72 61 6d 65 74 65 72 7d 20 7b 53 51 4c 20  parameter} {SQL 
37cc0 70 61 72 61 6d 65 74 65 72 73 7d 20 7b 70 61 72  parameters} {par
37cd0 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 7d 0a  ameter binding}.
37ce0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
37cf0 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 28  e3_stmt.**.** ^(
37d00 49 6e 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  In the SQL state
37d10 6d 65 6e 74 20 74 65 78 74 20 69 6e 70 75 74 20  ment text input 
37d20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  to [sqlite3_prep
37d30 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20 69 74  are_v2()] and it
37d40 73 20 76 61 72 69 61 6e 74 73 2c 0a 2a 2a 20 6c  s variants,.** l
37d50 69 74 65 72 61 6c 73 20 6d 61 79 20 62 65 20 72  iterals may be r
37d60 65 70 6c 61 63 65 64 20 62 79 20 61 20 5b 70 61  eplaced by a [pa
37d70 72 61 6d 65 74 65 72 5d 20 74 68 61 74 20 6d 61  rameter] that ma
37d80 74 63 68 65 73 20 6f 6e 65 20 6f 66 20 66 6f 6c  tches one of fol
37d90 6c 6f 77 69 6e 67 0a 2a 2a 20 74 65 6d 70 6c 61  lowing.** templa
37da0 74 65 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  tes:.**.** <ul>.
37db0 2a 2a 20 3c 6c 69 3e 20 20 3f 0a 2a 2a 20 3c 6c  ** <li>  ?.** <l
37dc0 69 3e 20 20 3f 4e 4e 4e 0a 2a 2a 20 3c 6c 69 3e  i>  ?NNN.** <li>
37dd0 20 20 3a 56 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20    :VVV.** <li>  
37de0 40 56 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20 24 56  @VVV.** <li>  $V
37df0 56 56 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a  VV.** </ul>.**.*
37e00 2a 20 49 6e 20 74 68 65 20 74 65 6d 70 6c 61 74  * In the templat
37e10 65 73 20 61 62 6f 76 65 2c 20 4e 4e 4e 20 72 65  es above, NNN re
37e20 70 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 74 65  presents an inte
37e30 67 65 72 20 6c 69 74 65 72 61 6c 2c 0a 2a 2a 20  ger literal,.** 
37e40 61 6e 64 20 56 56 56 20 72 65 70 72 65 73 65 6e  and VVV represen
37e50 74 73 20 61 6e 20 61 6c 70 68 61 6e 75 6d 65 72  ts an alphanumer
37e60 69 63 20 69 64 65 6e 74 69 66 69 65 72 2e 29 5e  ic identifier.)^
37e70 20 20 5e 54 68 65 20 76 61 6c 75 65 73 20 6f 66    ^The values of
37e80 20 74 68 65 73 65 0a 2a 2a 20 70 61 72 61 6d 65   these.** parame
37e90 74 65 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65  ters (also calle
37ea0 64 20 22 68 6f 73 74 20 70 61 72 61 6d 65 74 65  d "host paramete
37eb0 72 20 6e 61 6d 65 73 22 20 6f 72 20 22 53 51 4c  r names" or "SQL
37ec0 20 70 61 72 61 6d 65 74 65 72 73 22 29 0a 2a 2a   parameters").**
37ed0 20 63 61 6e 20 62 65 20 73 65 74 20 75 73 69 6e   can be set usin
37ee0 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69  g the sqlite3_bi
37ef0 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73 20  nd_*() routines 
37f00 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a 2a 2a  defined here..**
37f10 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
37f20 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73  rgument to the s
37f30 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 20  qlite3_bind_*() 
37f40 72 6f 75 74 69 6e 65 73 20 69 73 20 61 6c 77 61  routines is alwa
37f50 79 73 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20  ys.** a pointer 
37f60 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
37f70 73 74 6d 74 5d 20 6f 62 6a 65 63 74 20 72 65 74  stmt] object ret
37f80 75 72 6e 65 64 20 66 72 6f 6d 0a 2a 2a 20 5b 73  urned from.** [s
37f90 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
37fa0 32 28 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69  2()] or its vari
37fb0 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ants..**.** ^The
37fc0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
37fd0 20 69 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66   is the index of
37fe0 20 74 68 65 20 53 51 4c 20 70 61 72 61 6d 65 74   the SQL paramet
37ff0 65 72 20 74 6f 20 62 65 20 73 65 74 2e 0a 2a 2a  er to be set..**
38000 20 5e 54 68 65 20 6c 65 66 74 6d 6f 73 74 20 53   ^The leftmost S
38010 51 4c 20 70 61 72 61 6d 65 74 65 72 20 68 61 73  QL parameter has
38020 20 61 6e 20 69 6e 64 65 78 20 6f 66 20 31 2e 20   an index of 1. 
38030 20 5e 57 68 65 6e 20 74 68 65 20 73 61 6d 65 20   ^When the same 
38040 6e 61 6d 65 64 0a 2a 2a 20 53 51 4c 20 70 61 72  named.** SQL par
38050 61 6d 65 74 65 72 20 69 73 20 75 73 65 64 20 6d  ameter is used m
38060 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 2c 20 73  ore than once, s
38070 65 63 6f 6e 64 20 61 6e 64 20 73 75 62 73 65 71  econd and subseq
38080 75 65 6e 74 0a 2a 2a 20 6f 63 63 75 72 72 65 6e  uent.** occurren
38090 63 65 73 20 68 61 76 65 20 74 68 65 20 73 61 6d  ces have the sam
380a0 65 20 69 6e 64 65 78 20 61 73 20 74 68 65 20 66  e index as the f
380b0 69 72 73 74 20 6f 63 63 75 72 72 65 6e 63 65 2e  irst occurrence.
380c0 0a 2a 2a 20 5e 54 68 65 20 69 6e 64 65 78 20 66  .** ^The index f
380d0 6f 72 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74  or named paramet
380e0 65 72 73 20 63 61 6e 20 62 65 20 6c 6f 6f 6b 65  ers can be looke
380f0 64 20 75 70 20 75 73 69 6e 67 20 74 68 65 0a 2a  d up using the.*
38100 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  * [sqlite3_bind_
38110 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
38120 29 5d 20 41 50 49 20 69 66 20 64 65 73 69 72 65  )] API if desire
38130 64 2e 20 20 5e 54 68 65 20 69 6e 64 65 78 0a 2a  d.  ^The index.*
38140 2a 20 66 6f 72 20 22 3f 4e 4e 4e 22 20 70 61 72  * for "?NNN" par
38150 61 6d 65 74 65 72 73 20 69 73 20 74 68 65 20 76  ameters is the v
38160 61 6c 75 65 20 6f 66 20 4e 4e 4e 2e 0a 2a 2a 20  alue of NNN..** 
38170 5e 54 68 65 20 4e 4e 4e 20 76 61 6c 75 65 20 6d  ^The NNN value m
38180 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 31  ust be between 1
38190 20 61 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65   and the [sqlite
381a0 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20 70 61  3_limit()].** pa
381b0 72 61 6d 65 74 65 72 20 5b 53 51 4c 49 54 45 5f  rameter [SQLITE_
381c0 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e  LIMIT_VARIABLE_N
381d0 55 4d 42 45 52 5d 20 28 64 65 66 61 75 6c 74 20  UMBER] (default 
381e0 76 61 6c 75 65 3a 20 39 39 39 29 2e 0a 2a 2a 0a  value: 999)..**.
381f0 2a 2a 20 5e 54 68 65 20 74 68 69 72 64 20 61 72  ** ^The third ar
38200 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 76 61  gument is the va
38210 6c 75 65 20 74 6f 20 62 69 6e 64 20 74 6f 20 74  lue to bind to t
38220 68 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a  he parameter..**
38230 20 5e 49 66 20 74 68 65 20 74 68 69 72 64 20 70   ^If the third p
38240 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
38250 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 29 20  te3_bind_text() 
38260 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  or sqlite3_bind_
38270 74 65 78 74 31 36 28 29 0a 2a 2a 20 6f 72 20 73  text16().** or s
38280 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
38290 28 29 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69  () is a NULL poi
382a0 6e 74 65 72 20 74 68 65 6e 20 74 68 65 20 66 6f  nter then the fo
382b0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 0a 2a  urth parameter.*
382c0 2a 20 69 73 20 69 67 6e 6f 72 65 64 20 61 6e 64  * is ignored and
382d0 20 74 68 65 20 65 6e 64 20 72 65 73 75 6c 74 20   the end result 
382e0 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 73  is the same as s
382f0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
38300 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74  ()..**.** ^(In t
38310 68 6f 73 65 20 72 6f 75 74 69 6e 65 73 20 74 68  hose routines th
38320 61 74 20 68 61 76 65 20 61 20 66 6f 75 72 74 68  at have a fourth
38330 20 61 72 67 75 6d 65 6e 74 2c 20 69 74 73 20 76   argument, its v
38340 61 6c 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e  alue is the.** n
38350 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69  umber of bytes i
38360 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e  n the parameter.
38370 20 20 54 6f 20 62 65 20 63 6c 65 61 72 3a 20 74    To be clear: t
38380 68 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  he value is the.
38390 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 3c 75 3e  ** number of <u>
383a0 62 79 74 65 73 3c 2f 75 3e 20 69 6e 20 74 68 65  bytes</u> in the
383b0 20 76 61 6c 75 65 2c 20 6e 6f 74 20 74 68 65 20   value, not the 
383c0 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63  number of charac
383d0 74 65 72 73 2e 29 5e 0a 2a 2a 20 5e 49 66 20 74  ters.)^.** ^If t
383e0 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  he fourth parame
383f0 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62  ter to sqlite3_b
38400 69 6e 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71  ind_text() or sq
38410 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
38420 36 28 29 0a 2a 2a 20 69 73 20 6e 65 67 61 74 69  6().** is negati
38430 76 65 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e  ve, then the len
38440 67 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e  gth of the strin
38450 67 20 69 73 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  g is.** the numb
38460 65 72 20 6f 66 20 62 79 74 65 73 20 75 70 20 74  er of bytes up t
38470 6f 20 74 68 65 20 66 69 72 73 74 20 7a 65 72 6f  o the first zero
38480 20 74 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 20   terminator..** 
38490 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  If the fourth pa
384a0 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
384b0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69  e3_bind_blob() i
384c0 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e  s negative, then
384d0 0a 2a 2a 20 74 68 65 20 62 65 68 61 76 69 6f 72  .** the behavior
384e0 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a   is undefined..*
384f0 2a 20 49 66 20 61 20 6e 6f 6e 2d 6e 65 67 61 74  * If a non-negat
38500 69 76 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  ive fourth param
38510 65 74 65 72 20 69 73 20 70 72 6f 76 69 64 65 64  eter is provided
38520 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
38530 5f 74 65 78 74 28 29 0a 2a 2a 20 6f 72 20 73 71  _text().** or sq
38540 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
38550 36 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 62  6() or sqlite3_b
38560 69 6e 64 5f 74 65 78 74 36 34 28 29 20 74 68 65  ind_text64() the
38570 6e 0a 2a 2a 20 74 68 61 74 20 70 61 72 61 6d 65  n.** that parame
38580 74 65 72 20 6d 75 73 74 20 62 65 20 74 68 65 20  ter must be the 
38590 62 79 74 65 20 6f 66 66 73 65 74 0a 2a 2a 20 77  byte offset.** w
385a0 68 65 72 65 20 74 68 65 20 4e 55 4c 20 74 65 72  here the NUL ter
385b0 6d 69 6e 61 74 6f 72 20 77 6f 75 6c 64 20 6f 63  minator would oc
385c0 63 75 72 20 61 73 73 75 6d 69 6e 67 20 74 68 65  cur assuming the
385d0 20 73 74 72 69 6e 67 20 77 65 72 65 20 4e 55 4c   string were NUL
385e0 0a 2a 2a 20 74 65 72 6d 69 6e 61 74 65 64 2e 20  .** terminated. 
385f0 20 49 66 20 61 6e 79 20 4e 55 4c 20 63 68 61 72   If any NUL char
38600 61 63 74 65 72 73 20 6f 63 63 75 72 20 61 74 20  acters occur at