System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 1effff63a7341ee44f5885e0db320d2ef1c0078d:


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 36 2e 30 2e 20 20  ersion 3.26.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 36 2e 30 22 0a 23 64       "3.26.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 36  SION_NUMBER 3026
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 38 2d 31 32 2d 30 31 20 31 32    "2018-12-01 12
81a0: 3a 33 34 3a 35 35 20 62 66 38 63 31 62 32 62 37  :34:55 bf8c1b2b7
81b0: 61 35 39 36 30 63 32 38 32 65 35 34 33 62 39 63  a5960c282e543b9c
81c0: 32 39 33 36 38 36 64 63 63 66 66 32 37 32 35 31  293686dccff27251
81d0: 32 64 30 38 38 36 35 66 34 36 30 30 66 62 35 38  2d08865f4600fb58
81e0: 32 33 38 62 34 66 39 22 0a 0a 2f 2a 0a 2a 2a 20  238b4f9"../*.** 
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 6e 64 69 66 0a 0a 2f  nt N);.#endif../
8dc0: 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54  *.** CAPI3REF: T
8dd0: 65 73 74 20 54 6f 20 53 65 65 20 49 66 20 54 68  est To See If Th
8de0: 65 20 4c 69 62 72 61 72 79 20 49 73 20 54 68 72  e Library Is Thr
8df0: 65 61 64 73 61 66 65 0a 2a 2a 0a 2a 2a 20 5e 54  eadsafe.**.** ^T
8e00: 68 65 20 73 71 6c 69 74 65 33 5f 74 68 72 65 61  he sqlite3_threa
8e10: 64 73 61 66 65 28 29 20 66 75 6e 63 74 69 6f 6e  dsafe() function
8e20: 20 72 65 74 75 72 6e 73 20 7a 65 72 6f 20 69 66   returns zero if
8e30: 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 2a 2a 20   and only if.** 
8e40: 53 51 4c 69 74 65 20 77 61 73 20 63 6f 6d 70 69  SQLite was compi
8e50: 6c 65 64 20 77 69 74 68 20 6d 75 74 65 78 69 6e  led with mutexin
8e60: 67 20 63 6f 64 65 20 6f 6d 69 74 74 65 64 20 64  g code omitted d
8e70: 75 65 20 74 6f 20 74 68 65 0a 2a 2a 20 5b 53 51  ue to the.** [SQ
8e80: 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d  LITE_THREADSAFE]
8e90: 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
8ea0: 74 69 6f 6e 20 62 65 69 6e 67 20 73 65 74 20 74  tion being set t
8eb0: 6f 20 30 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  o 0..**.** SQLit
8ec0: 65 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c 65  e can be compile
8ed0: 64 20 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75  d with or withou
8ee0: 74 20 6d 75 74 65 78 65 73 2e 20 20 57 68 65 6e  t mutexes.  When
8ef0: 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  .** the [SQLITE_
8f00: 54 48 52 45 41 44 53 41 46 45 5d 20 43 20 70 72  THREADSAFE] C pr
8f10: 65 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f  eprocessor macro
8f20: 20 69 73 20 31 20 6f 72 20 32 2c 20 6d 75 74 65   is 1 or 2, mute
8f30: 78 65 73 0a 2a 2a 20 61 72 65 20 65 6e 61 62 6c  xes.** are enabl
8f40: 65 64 20 61 6e 64 20 53 51 4c 69 74 65 20 69 73  ed and SQLite is
8f50: 20 74 68 72 65 61 64 73 61 66 65 2e 20 20 57 68   threadsafe.  Wh
8f60: 65 6e 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  en the.** [SQLIT
8f70: 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d 61  E_THREADSAFE] ma
8f80: 63 72 6f 20 69 73 20 30 2c 20 0a 2a 2a 20 74 68  cro is 0, .** th
8f90: 65 20 6d 75 74 65 78 65 73 20 61 72 65 20 6f 6d  e mutexes are om
8fa0: 69 74 74 65 64 2e 20 20 57 69 74 68 6f 75 74 20  itted.  Without 
8fb0: 74 68 65 20 6d 75 74 65 78 65 73 2c 20 69 74 20  the mutexes, it 
8fc0: 69 73 20 6e 6f 74 20 73 61 66 65 0a 2a 2a 20 74  is not safe.** t
8fd0: 6f 20 75 73 65 20 53 51 4c 69 74 65 20 63 6f 6e  o use SQLite con
8fe0: 63 75 72 72 65 6e 74 6c 79 20 66 72 6f 6d 20 6d  currently from m
8ff0: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74 68 72  ore than one thr
9000: 65 61 64 2e 0a 2a 2a 0a 2a 2a 20 45 6e 61 62 6c  ead..**.** Enabl
9010: 69 6e 67 20 6d 75 74 65 78 65 73 20 69 6e 63 75  ing mutexes incu
9020: 72 73 20 61 20 6d 65 61 73 75 72 61 62 6c 65 20  rs a measurable 
9030: 70 65 72 66 6f 72 6d 61 6e 63 65 20 70 65 6e 61  performance pena
9040: 6c 74 79 2e 0a 2a 2a 20 53 6f 20 69 66 20 73 70  lty..** So if sp
9050: 65 65 64 20 69 73 20 6f 66 20 75 74 6d 6f 73 74  eed is of utmost
9060: 20 69 6d 70 6f 72 74 61 6e 63 65 2c 20 69 74 20   importance, it 
9070: 6d 61 6b 65 73 20 73 65 6e 73 65 20 74 6f 20 64  makes sense to d
9080: 69 73 61 62 6c 65 0a 2a 2a 20 74 68 65 20 6d 75  isable.** the mu
9090: 74 65 78 65 73 2e 20 20 42 75 74 20 66 6f 72 20  texes.  But for 
90a0: 6d 61 78 69 6d 75 6d 20 73 61 66 65 74 79 2c 20  maximum safety, 
90b0: 6d 75 74 65 78 65 73 20 73 68 6f 75 6c 64 20 62  mutexes should b
90c0: 65 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 5e 54  e enabled..** ^T
90d0: 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61 76  he default behav
90e0: 69 6f 72 20 69 73 20 66 6f 72 20 6d 75 74 65 78  ior is for mutex
90f0: 65 73 20 74 6f 20 62 65 20 65 6e 61 62 6c 65 64  es to be enabled
9100: 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 69 6e 74  ..**.** This int
9110: 65 72 66 61 63 65 20 63 61 6e 20 62 65 20 75 73  erface can be us
9120: 65 64 20 62 79 20 61 6e 20 61 70 70 6c 69 63 61  ed by an applica
9130: 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75 72  tion to make sur
9140: 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 76 65  e that the.** ve
9150: 72 73 69 6f 6e 20 6f 66 20 53 51 4c 69 74 65 20  rsion of SQLite 
9160: 74 68 61 74 20 69 74 20 69 73 20 6c 69 6e 6b 69  that it is linki
9170: 6e 67 20 61 67 61 69 6e 73 74 20 77 61 73 20 63  ng against was c
9180: 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
9190: 74 68 65 20 64 65 73 69 72 65 64 20 73 65 74 74  the desired sett
91a0: 69 6e 67 20 6f 66 20 74 68 65 20 5b 53 51 4c 49  ing of the [SQLI
91b0: 54 45 5f 54 48 52 45 41 44 53 41 46 45 5d 20 6d  TE_THREADSAFE] m
91c0: 61 63 72 6f 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  acro..**.** This
91d0: 20 69 6e 74 65 72 66 61 63 65 20 6f 6e 6c 79 20   interface only 
91e0: 72 65 70 6f 72 74 73 20 6f 6e 20 74 68 65 20 63  reports on the c
91f0: 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6d 75 74 65  ompile-time mute
9200: 78 20 73 65 74 74 69 6e 67 0a 2a 2a 20 6f 66 20  x setting.** of 
9210: 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
9220: 41 44 53 41 46 45 5d 20 66 6c 61 67 2e 20 20 49  ADSAFE] flag.  I
9230: 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
9240: 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 53 51 4c  iled with.** SQL
9250: 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31  ITE_THREADSAFE=1
9260: 20 6f 72 20 3d 32 20 74 68 65 6e 20 6d 75 74 65   or =2 then mute
9270: 78 65 73 20 61 72 65 20 65 6e 61 62 6c 65 64 20  xes are enabled 
9280: 62 79 20 64 65 66 61 75 6c 74 20 62 75 74 0a 2a  by default but.*
9290: 2a 20 63 61 6e 20 62 65 20 66 75 6c 6c 79 20 6f  * can be fully o
92a0: 72 20 70 61 72 74 69 61 6c 6c 79 20 64 69 73 61  r partially disa
92b0: 62 6c 65 64 20 75 73 69 6e 67 20 61 20 63 61 6c  bled using a cal
92c0: 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f  l to [sqlite3_co
92d0: 6e 66 69 67 28 29 5d 0a 2a 2a 20 77 69 74 68 20  nfig()].** with 
92e0: 74 68 65 20 76 65 72 62 73 20 5b 53 51 4c 49 54  the verbs [SQLIT
92f0: 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54  E_CONFIG_SINGLET
9300: 48 52 45 41 44 5d 2c 20 5b 53 51 4c 49 54 45 5f  HREAD], [SQLITE_
9310: 43 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45  CONFIG_MULTITHRE
9320: 41 44 5d 2c 0a 2a 2a 20 6f 72 20 5b 53 51 4c 49  AD],.** or [SQLI
9330: 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41 4c  TE_CONFIG_SERIAL
9340: 49 5a 45 44 5d 2e 20 20 5e 28 54 68 65 20 72 65  IZED].  ^(The re
9350: 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20 74 68  turn value of th
9360: 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 74 68 72  e.** sqlite3_thr
9370: 65 61 64 73 61 66 65 28 29 20 66 75 6e 63 74 69  eadsafe() functi
9380: 6f 6e 20 73 68 6f 77 73 20 6f 6e 6c 79 20 74 68  on shows only th
9390: 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 73  e compile-time s
93a0: 65 74 74 69 6e 67 20 6f 66 0a 2a 2a 20 74 68 72  etting of.** thr
93b0: 65 61 64 20 73 61 66 65 74 79 2c 20 6e 6f 74 20  ead safety, not 
93c0: 61 6e 79 20 72 75 6e 2d 74 69 6d 65 20 63 68 61  any run-time cha
93d0: 6e 67 65 73 20 74 6f 20 74 68 61 74 20 73 65 74  nges to that set
93e0: 74 69 6e 67 20 6d 61 64 65 20 62 79 0a 2a 2a 20  ting made by.** 
93f0: 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
9400: 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  . In other words
9410: 2c 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c  , the return val
9420: 75 65 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f  ue from sqlite3_
9430: 74 68 72 65 61 64 73 61 66 65 28 29 0a 2a 2a 20  threadsafe().** 
9440: 69 73 20 75 6e 63 68 61 6e 67 65 64 20 62 79 20  is unchanged by 
9450: 63 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33  calls to sqlite3
9460: 5f 63 6f 6e 66 69 67 28 29 2e 29 5e 0a 2a 2a 0a  _config().)^.**.
9470: 2a 2a 20 53 65 65 20 74 68 65 20 5b 74 68 72 65  ** See the [thre
9480: 61 64 69 6e 67 20 6d 6f 64 65 5d 20 64 6f 63 75  ading mode] docu
9490: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64  mentation for ad
94a0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
94b0: 74 69 6f 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  tion..*/.SQLITE_
94c0: 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
94d0: 74 68 72 65 61 64 73 61 66 65 28 76 6f 69 64 29  threadsafe(void)
94e0: 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
94f0: 46 3a 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e  F: Database Conn
9500: 65 63 74 69 6f 6e 20 48 61 6e 64 6c 65 0a 2a 2a  ection Handle.**
9510: 20 4b 45 59 57 4f 52 44 53 3a 20 7b 64 61 74 61   KEYWORDS: {data
9520: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 7d  base connection}
9530: 20 7b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   {database conne
9540: 63 74 69 6f 6e 73 7d 0a 2a 2a 0a 2a 2a 20 45 61  ctions}.**.** Ea
9550: 63 68 20 6f 70 65 6e 20 53 51 4c 69 74 65 20 64  ch open SQLite d
9560: 61 74 61 62 61 73 65 20 69 73 20 72 65 70 72 65  atabase is repre
9570: 73 65 6e 74 65 64 20 62 79 20 61 20 70 6f 69 6e  sented by a poin
9580: 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e  ter to an instan
9590: 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6f 70 61  ce of.** the opa
95a0: 71 75 65 20 73 74 72 75 63 74 75 72 65 20 6e 61  que structure na
95b0: 6d 65 64 20 22 73 71 6c 69 74 65 33 22 2e 20 20  med "sqlite3".  
95c0: 49 74 20 69 73 20 75 73 65 66 75 6c 20 74 6f 20  It is useful to 
95d0: 74 68 69 6e 6b 20 6f 66 20 61 6e 20 73 71 6c 69  think of an sqli
95e0: 74 65 33 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 61  te3.** pointer a
95f0: 73 20 61 6e 20 6f 62 6a 65 63 74 2e 20 20 54 68  s an object.  Th
9600: 65 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28  e [sqlite3_open(
9610: 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65  )], [sqlite3_ope
9620: 6e 31 36 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b  n16()], and.** [
9630: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
9640: 29 5d 20 69 6e 74 65 72 66 61 63 65 73 20 61 72  )] interfaces ar
9650: 65 20 69 74 73 20 63 6f 6e 73 74 72 75 63 74 6f  e its constructo
9660: 72 73 2c 20 61 6e 64 20 5b 73 71 6c 69 74 65 33  rs, and [sqlite3
9670: 5f 63 6c 6f 73 65 28 29 5d 0a 2a 2a 20 61 6e 64  _close()].** and
9680: 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f   [sqlite3_close_
9690: 76 32 28 29 5d 20 61 72 65 20 69 74 73 20 64 65  v2()] are its de
96a0: 73 74 72 75 63 74 6f 72 73 2e 20 20 54 68 65 72  structors.  Ther
96b0: 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68 65 72  e are many other
96c0: 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20 28  .** interfaces (
96d0: 73 75 63 68 20 61 73 0a 2a 2a 20 5b 73 71 6c 69  such as.** [sqli
96e0: 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
96f0: 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 63 72 65 61  ], [sqlite3_crea
9700: 74 65 5f 66 75 6e 63 74 69 6f 6e 28 29 5d 2c 20  te_function()], 
9710: 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  and.** [sqlite3_
9720: 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20  busy_timeout()] 
9730: 74 6f 20 6e 61 6d 65 20 62 75 74 20 74 68 72 65  to name but thre
9740: 65 29 20 74 68 61 74 20 61 72 65 20 6d 65 74 68  e) that are meth
9750: 6f 64 73 20 6f 6e 20 61 6e 0a 2a 2a 20 73 71 6c  ods on an.** sql
9760: 69 74 65 33 20 6f 62 6a 65 63 74 2e 0a 2a 2f 0a  ite3 object..*/.
9770: 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73  typedef struct s
9780: 71 6c 69 74 65 33 20 73 71 6c 69 74 65 33 3b 0a  qlite3 sqlite3;.
9790: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
97a0: 20 36 34 2d 42 69 74 20 49 6e 74 65 67 65 72 20   64-Bit Integer 
97b0: 54 79 70 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44  Types.** KEYWORD
97c0: 53 3a 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  S: sqlite_int64 
97d0: 73 71 6c 69 74 65 5f 75 69 6e 74 36 34 0a 2a 2a  sqlite_uint64.**
97e0: 0a 2a 2a 20 42 65 63 61 75 73 65 20 74 68 65 72  .** Because ther
97f0: 65 20 69 73 20 6e 6f 20 63 72 6f 73 73 2d 70 6c  e is no cross-pl
9800: 61 74 66 6f 72 6d 20 77 61 79 20 74 6f 20 73 70  atform way to sp
9810: 65 63 69 66 79 20 36 34 2d 62 69 74 20 69 6e 74  ecify 64-bit int
9820: 65 67 65 72 20 74 79 70 65 73 0a 2a 2a 20 53 51  eger types.** SQ
9830: 4c 69 74 65 20 69 6e 63 6c 75 64 65 73 20 74 79  Lite includes ty
9840: 70 65 64 65 66 73 20 66 6f 72 20 36 34 2d 62 69  pedefs for 64-bi
9850: 74 20 73 69 67 6e 65 64 20 61 6e 64 20 75 6e 73  t signed and uns
9860: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2e 0a  igned integers..
9870: 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
9880: 33 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69  3_int64 and sqli
9890: 74 65 33 5f 75 69 6e 74 36 34 20 61 72 65 20 74  te3_uint64 are t
98a0: 68 65 20 70 72 65 66 65 72 72 65 64 20 74 79 70  he preferred typ
98b0: 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 2e 0a 2a  e definitions..*
98c0: 2a 20 54 68 65 20 73 71 6c 69 74 65 5f 69 6e 74  * The sqlite_int
98d0: 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75 69  64 and sqlite_ui
98e0: 6e 74 36 34 20 74 79 70 65 73 20 61 72 65 20 73  nt64 types are s
98f0: 75 70 70 6f 72 74 65 64 20 66 6f 72 20 62 61 63  upported for bac
9900: 6b 77 61 72 64 73 0a 2a 2a 20 63 6f 6d 70 61 74  kwards.** compat
9910: 69 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 0a 2a 2a  ibility only..**
9920: 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33  .** ^The sqlite3
9930: 5f 69 6e 74 36 34 20 61 6e 64 20 73 71 6c 69 74  _int64 and sqlit
9940: 65 5f 69 6e 74 36 34 20 74 79 70 65 73 20 63 61  e_int64 types ca
9950: 6e 20 73 74 6f 72 65 20 69 6e 74 65 67 65 72 20  n store integer 
9960: 76 61 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65 65  values.** betwee
9970: 6e 20 2d 39 32 32 33 33 37 32 30 33 36 38 35 34  n -9223372036854
9980: 37 37 35 38 30 38 20 61 6e 64 20 2b 39 32 32 33  775808 and +9223
9990: 33 37 32 30 33 36 38 35 34 37 37 35 38 30 37 20  372036854775807 
99a0: 69 6e 63 6c 75 73 69 76 65 2e 20 20 5e 54 68 65  inclusive.  ^The
99b0: 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 69 6e 74  .** sqlite3_uint
99c0: 36 34 20 61 6e 64 20 73 71 6c 69 74 65 5f 75 69  64 and sqlite_ui
99d0: 6e 74 36 34 20 74 79 70 65 73 20 63 61 6e 20 73  nt64 types can s
99e0: 74 6f 72 65 20 69 6e 74 65 67 65 72 20 76 61 6c  tore integer val
99f0: 75 65 73 20 0a 2a 2a 20 62 65 74 77 65 65 6e 20  ues .** between 
9a00: 30 20 61 6e 64 20 2b 31 38 34 34 36 37 34 34 30  0 and +184467440
9a10: 37 33 37 30 39 35 35 31 36 31 35 20 69 6e 63 6c  73709551615 incl
9a20: 75 73 69 76 65 2e 0a 2a 2f 0a 23 69 66 64 65 66  usive..*/.#ifdef
9a30: 20 53 51 4c 49 54 45 5f 49 4e 54 36 34 5f 54 59   SQLITE_INT64_TY
9a40: 50 45 0a 20 20 74 79 70 65 64 65 66 20 53 51 4c  PE.  typedef SQL
9a50: 49 54 45 5f 49 4e 54 36 34 5f 54 59 50 45 20 73  ITE_INT64_TYPE s
9a60: 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 23 20 69  qlite_int64;.# i
9a70: 66 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e 54  fdef SQLITE_UINT
9a80: 36 34 5f 54 59 50 45 0a 20 20 20 20 74 79 70 65  64_TYPE.    type
9a90: 64 65 66 20 53 51 4c 49 54 45 5f 55 49 4e 54 36  def SQLITE_UINT6
9aa0: 34 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69  4_TYPE sqlite_ui
9ab0: 6e 74 36 34 3b 0a 23 20 65 6c 73 65 20 20 0a 20  nt64;.# else  . 
9ac0: 20 20 20 74 79 70 65 64 65 66 20 75 6e 73 69 67     typedef unsig
9ad0: 6e 65 64 20 53 51 4c 49 54 45 5f 49 4e 54 36 34  ned SQLITE_INT64
9ae0: 5f 54 59 50 45 20 73 71 6c 69 74 65 5f 75 69 6e  _TYPE sqlite_uin
9af0: 74 36 34 3b 0a 23 20 65 6e 64 69 66 0a 23 65 6c  t64;.# endif.#el
9b00: 69 66 20 64 65 66 69 6e 65 64 28 5f 4d 53 43 5f  if defined(_MSC_
9b10: 56 45 52 29 20 7c 7c 20 64 65 66 69 6e 65 64 28  VER) || defined(
9b20: 5f 5f 42 4f 52 4c 41 4e 44 43 5f 5f 29 0a 20 20  __BORLANDC__).  
9b30: 74 79 70 65 64 65 66 20 5f 5f 69 6e 74 36 34 20  typedef __int64 
9b40: 73 71 6c 69 74 65 5f 69 6e 74 36 34 3b 0a 20 20  sqlite_int64;.  
9b50: 74 79 70 65 64 65 66 20 75 6e 73 69 67 6e 65 64  typedef unsigned
9b60: 20 5f 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 5f   __int64 sqlite_
9b70: 75 69 6e 74 36 34 3b 0a 23 65 6c 73 65 0a 20 20  uint64;.#else.  
9b80: 74 79 70 65 64 65 66 20 6c 6f 6e 67 20 6c 6f 6e  typedef long lon
9b90: 67 20 69 6e 74 20 73 71 6c 69 74 65 5f 69 6e 74  g int sqlite_int
9ba0: 36 34 3b 0a 20 20 74 79 70 65 64 65 66 20 75 6e  64;.  typedef un
9bb0: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67  signed long long
9bc0: 20 69 6e 74 20 73 71 6c 69 74 65 5f 75 69 6e 74   int sqlite_uint
9bd0: 36 34 3b 0a 23 65 6e 64 69 66 0a 74 79 70 65 64  64;.#endif.typed
9be0: 65 66 20 73 71 6c 69 74 65 5f 69 6e 74 36 34 20  ef sqlite_int64 
9bf0: 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 3b 0a 74  sqlite3_int64;.t
9c00: 79 70 65 64 65 66 20 73 71 6c 69 74 65 5f 75 69  ypedef sqlite_ui
9c10: 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 69 6e  nt64 sqlite3_uin
9c20: 74 36 34 3b 0a 0a 2f 2a 0a 2a 2a 20 49 66 20 63  t64;../*.** If c
9c30: 6f 6d 70 69 6c 69 6e 67 20 66 6f 72 20 61 20 70  ompiling for a p
9c40: 72 6f 63 65 73 73 6f 72 20 74 68 61 74 20 6c 61  rocessor that la
9c50: 63 6b 73 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69  cks floating poi
9c60: 6e 74 20 73 75 70 70 6f 72 74 2c 0a 2a 2a 20 73  nt support,.** s
9c70: 75 62 73 74 69 74 75 74 65 20 69 6e 74 65 67 65  ubstitute intege
9c80: 72 20 66 6f 72 20 66 6c 6f 61 74 69 6e 67 2d 70  r for floating-p
9c90: 6f 69 6e 74 2e 0a 2a 2f 0a 23 69 66 64 65 66 20  oint..*/.#ifdef 
9ca0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 4f 41  SQLITE_OMIT_FLOA
9cb0: 54 49 4e 47 5f 50 4f 49 4e 54 0a 23 20 64 65 66  TING_POINT.# def
9cc0: 69 6e 65 20 64 6f 75 62 6c 65 20 73 71 6c 69 74  ine double sqlit
9cd0: 65 33 5f 69 6e 74 36 34 0a 23 65 6e 64 69 66 0a  e3_int64.#endif.
9ce0: 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
9cf0: 20 43 6c 6f 73 69 6e 67 20 41 20 44 61 74 61 62   Closing A Datab
9d00: 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase Connection.*
9d10: 2a 20 44 45 53 54 52 55 43 54 4f 52 3a 20 73 71  * DESTRUCTOR: sq
9d20: 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
9d30: 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29   sqlite3_close()
9d40: 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 63 6c 6f   and sqlite3_clo
9d50: 73 65 5f 76 32 28 29 20 72 6f 75 74 69 6e 65 73  se_v2() routines
9d60: 20 61 72 65 20 64 65 73 74 72 75 63 74 6f 72 73   are destructors
9d70: 0a 2a 2a 20 66 6f 72 20 74 68 65 20 5b 73 71 6c  .** for the [sql
9d80: 69 74 65 33 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a  ite3] object..**
9d90: 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69 74   ^Calls to sqlit
9da0: 65 33 5f 63 6c 6f 73 65 28 29 20 61 6e 64 20 73  e3_close() and s
9db0: 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f 76 32 28  qlite3_close_v2(
9dc0: 29 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45  ) return [SQLITE
9dd0: 5f 4f 4b 5d 20 69 66 0a 2a 2a 20 74 68 65 20 5b  _OK] if.** the [
9de0: 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74 20  sqlite3] object 
9df0: 69 73 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20  is successfully 
9e00: 64 65 73 74 72 6f 79 65 64 20 61 6e 64 20 61 6c  destroyed and al
9e10: 6c 20 61 73 73 6f 63 69 61 74 65 64 0a 2a 2a 20  l associated.** 
9e20: 72 65 73 6f 75 72 63 65 73 20 61 72 65 20 64 65  resources are de
9e30: 61 6c 6c 6f 63 61 74 65 64 2e 0a 2a 2a 0a 2a 2a  allocated..**.**
9e40: 20 5e 49 66 20 74 68 65 20 64 61 74 61 62 61 73   ^If the databas
9e50: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
9e60: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
9e70: 75 6e 66 69 6e 61 6c 69 7a 65 64 20 70 72 65 70  unfinalized prep
9e80: 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e  ared.** statemen
9e90: 74 73 20 6f 72 20 75 6e 66 69 6e 69 73 68 65 64  ts or unfinished
9ea0: 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 20   sqlite3_backup 
9eb0: 6f 62 6a 65 63 74 73 20 74 68 65 6e 20 73 71 6c  objects then sql
9ec0: 69 74 65 33 5f 63 6c 6f 73 65 28 29 0a 2a 2a 20  ite3_close().** 
9ed0: 77 69 6c 6c 20 6c 65 61 76 65 20 74 68 65 20 64  will leave the d
9ee0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
9ef0: 6f 6e 20 6f 70 65 6e 20 61 6e 64 20 72 65 74 75  on open and retu
9f00: 72 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  rn [SQLITE_BUSY]
9f10: 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33  ..** ^If sqlite3
9f20: 5f 63 6c 6f 73 65 5f 76 32 28 29 20 69 73 20 63  _close_v2() is c
9f30: 61 6c 6c 65 64 20 77 69 74 68 20 75 6e 66 69 6e  alled with unfin
9f40: 61 6c 69 7a 65 64 20 70 72 65 70 61 72 65 64 20  alized prepared 
9f50: 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 61 6e  statements.** an
9f60: 64 2f 6f 72 20 75 6e 66 69 6e 69 73 68 65 64 20  d/or unfinished 
9f70: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 73 2c  sqlite3_backups,
9f80: 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   then the databa
9f90: 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65  se connection be
9fa0: 63 6f 6d 65 73 0a 2a 2a 20 61 6e 20 75 6e 75 73  comes.** an unus
9fb0: 61 62 6c 65 20 22 7a 6f 6d 62 69 65 22 20 77 68  able "zombie" wh
9fc0: 69 63 68 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74  ich will automat
9fd0: 69 63 61 6c 6c 79 20 62 65 20 64 65 61 6c 6c 6f  ically be deallo
9fe0: 63 61 74 65 64 20 77 68 65 6e 20 74 68 65 0a 2a  cated when the.*
9ff0: 2a 20 6c 61 73 74 20 70 72 65 70 61 72 65 64 20  * last prepared 
a000: 73 74 61 74 65 6d 65 6e 74 20 69 73 20 66 69 6e  statement is fin
a010: 61 6c 69 7a 65 64 20 6f 72 20 74 68 65 20 6c 61  alized or the la
a020: 73 74 20 73 71 6c 69 74 65 33 5f 62 61 63 6b 75  st sqlite3_backu
a030: 70 20 69 73 0a 2a 2a 20 66 69 6e 69 73 68 65 64  p is.** finished
a040: 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33 5f 63  .  The sqlite3_c
a050: 6c 6f 73 65 5f 76 32 28 29 20 69 6e 74 65 72 66  lose_v2() interf
a060: 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65 64 20  ace is intended 
a070: 66 6f 72 20 75 73 65 20 77 69 74 68 0a 2a 2a 20  for use with.** 
a080: 68 6f 73 74 20 6c 61 6e 67 75 61 67 65 73 20 74  host languages t
a090: 68 61 74 20 61 72 65 20 67 61 72 62 61 67 65 20  hat are garbage 
a0a0: 63 6f 6c 6c 65 63 74 65 64 2c 20 61 6e 64 20 77  collected, and w
a0b0: 68 65 72 65 20 74 68 65 20 6f 72 64 65 72 20 69  here the order i
a0c0: 6e 20 77 68 69 63 68 0a 2a 2a 20 64 65 73 74 72  n which.** destr
a0d0: 75 63 74 6f 72 73 20 61 72 65 20 63 61 6c 6c 65  uctors are calle
a0e0: 64 20 69 73 20 61 72 62 69 74 72 61 72 79 2e 0a  d is arbitrary..
a0f0: 2a 2a 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f  **.** Applicatio
a100: 6e 73 20 73 68 6f 75 6c 64 20 5b 73 71 6c 69 74  ns should [sqlit
a110: 65 33 5f 66 69 6e 61 6c 69 7a 65 20 7c 20 66 69  e3_finalize | fi
a120: 6e 61 6c 69 7a 65 5d 20 61 6c 6c 20 5b 70 72 65  nalize] all [pre
a130: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
a140: 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62  ],.** [sqlite3_b
a150: 6c 6f 62 5f 63 6c 6f 73 65 20 7c 20 63 6c 6f 73  lob_close | clos
a160: 65 5d 20 61 6c 6c 20 5b 42 4c 4f 42 20 68 61 6e  e] all [BLOB han
a170: 64 6c 65 73 5d 2c 20 61 6e 64 20 0a 2a 2a 20 5b  dles], and .** [
a180: 73 71 6c 69 74 65 33 5f 62 61 63 6b 75 70 5f 66  sqlite3_backup_f
a190: 69 6e 69 73 68 20 7c 20 66 69 6e 69 73 68 5d 20  inish | finish] 
a1a0: 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 62 61 63  all [sqlite3_bac
a1b0: 6b 75 70 5d 20 6f 62 6a 65 63 74 73 20 61 73 73  kup] objects ass
a1c0: 6f 63 69 61 74 65 64 0a 2a 2a 20 77 69 74 68 20  ociated.** with 
a1d0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62  the [sqlite3] ob
a1e0: 6a 65 63 74 20 70 72 69 6f 72 20 74 6f 20 61 74  ject prior to at
a1f0: 74 65 6d 70 74 69 6e 67 20 74 6f 20 63 6c 6f 73  tempting to clos
a200: 65 20 74 68 65 20 6f 62 6a 65 63 74 2e 20 20 5e  e the object.  ^
a210: 49 66 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 63 6c  If.** sqlite3_cl
a220: 6f 73 65 5f 76 32 28 29 20 69 73 20 63 61 6c 6c  ose_v2() is call
a230: 65 64 20 6f 6e 20 61 20 5b 64 61 74 61 62 61 73  ed on a [databas
a240: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 74 68  e connection] th
a250: 61 74 20 73 74 69 6c 6c 20 68 61 73 0a 2a 2a 20  at still has.** 
a260: 6f 75 74 73 74 61 6e 64 69 6e 67 20 5b 70 72 65  outstanding [pre
a270: 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73  pared statements
a280: 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65 73  ], [BLOB handles
a290: 5d 2c 20 61 6e 64 2f 6f 72 0a 2a 2a 20 5b 73 71  ], and/or.** [sq
a2a0: 6c 69 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62  lite3_backup] ob
a2b0: 6a 65 63 74 73 20 74 68 65 6e 20 69 74 20 72 65  jects then it re
a2c0: 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b  turns [SQLITE_OK
a2d0: 5d 20 61 6e 64 20 74 68 65 20 64 65 61 6c 6c 6f  ] and the deallo
a2e0: 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 72 65 73  cation.** of res
a2f0: 6f 75 72 63 65 73 20 69 73 20 64 65 66 65 72 72  ources is deferr
a300: 65 64 20 75 6e 74 69 6c 20 61 6c 6c 20 5b 70 72  ed until all [pr
a310: 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
a320: 73 5d 2c 20 5b 42 4c 4f 42 20 68 61 6e 64 6c 65  s], [BLOB handle
a330: 73 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69  s],.** and [sqli
a340: 74 65 33 5f 62 61 63 6b 75 70 5d 20 6f 62 6a 65  te3_backup] obje
a350: 63 74 73 20 61 72 65 20 61 6c 73 6f 20 64 65 73  cts are also des
a360: 74 72 6f 79 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49  troyed..**.** ^I
a370: 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5d 20 6f  f an [sqlite3] o
a380: 62 6a 65 63 74 20 69 73 20 64 65 73 74 72 6f 79  bject is destroy
a390: 65 64 20 77 68 69 6c 65 20 61 20 74 72 61 6e 73  ed while a trans
a3a0: 61 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 2c 0a  action is open,.
a3b0: 2a 2a 20 74 68 65 20 74 72 61 6e 73 61 63 74 69  ** the transacti
a3c0: 6f 6e 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61  on is automatica
a3d0: 6c 6c 79 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e  lly rolled back.
a3e0: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 43 20 70 61 72  .**.** The C par
a3f0: 61 6d 65 74 65 72 20 74 6f 20 5b 73 71 6c 69 74  ameter to [sqlit
a400: 65 33 5f 63 6c 6f 73 65 28 43 29 5d 20 61 6e 64  e3_close(C)] and
a410: 20 5b 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 5f   [sqlite3_close_
a420: 76 32 28 43 29 5d 0a 2a 2a 20 6d 75 73 74 20 62  v2(C)].** must b
a430: 65 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c 0a  e either a NULL.
a440: 2a 2a 20 70 6f 69 6e 74 65 72 20 6f 72 20 61 6e  ** pointer or an
a450: 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63   [sqlite3] objec
a460: 74 20 70 6f 69 6e 74 65 72 20 6f 62 74 61 69 6e  t pointer obtain
a470: 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71 6c 69  ed.** from [sqli
a480: 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71  te3_open()], [sq
a490: 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c  lite3_open16()],
a4a0: 20 6f 72 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   or.** [sqlite3_
a4b0: 6f 70 65 6e 5f 76 32 28 29 5d 2c 20 61 6e 64 20  open_v2()], and 
a4c0: 6e 6f 74 20 70 72 65 76 69 6f 75 73 6c 79 20 63  not previously c
a4d0: 6c 6f 73 65 64 2e 0a 2a 2a 20 5e 43 61 6c 6c 69  losed..** ^Calli
a4e0: 6e 67 20 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65  ng sqlite3_close
a4f0: 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 63 6c  () or sqlite3_cl
a500: 6f 73 65 5f 76 32 28 29 20 77 69 74 68 20 61 20  ose_v2() with a 
a510: 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  NULL pointer.** 
a520: 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 68 61  argument is a ha
a530: 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 2e 0a 2a 2f  rmless no-op..*/
a540: 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
a550: 73 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 73 71  sqlite3_close(sq
a560: 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45 5f  lite3*);.SQLITE_
a570: 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
a580: 63 6c 6f 73 65 5f 76 32 28 73 71 6c 69 74 65 33  close_v2(sqlite3
a590: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 54 68 65 20 74  *);../*.** The t
a5a0: 79 70 65 20 66 6f 72 20 61 20 63 61 6c 6c 62 61  ype for a callba
a5b0: 63 6b 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  ck function..** 
a5c0: 54 68 69 73 20 69 73 20 6c 65 67 61 63 79 20 61  This is legacy a
a5d0: 6e 64 20 64 65 70 72 65 63 61 74 65 64 2e 20 20  nd deprecated.  
a5e0: 49 74 20 69 73 20 69 6e 63 6c 75 64 65 64 20 66  It is included f
a5f0: 6f 72 20 68 69 73 74 6f 72 69 63 61 6c 0a 2a 2a  or historical.**
a600: 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 61   compatibility a
a610: 6e 64 20 69 73 20 6e 6f 74 20 64 6f 63 75 6d 65  nd is not docume
a620: 6e 74 65 64 2e 0a 2a 2f 0a 74 79 70 65 64 65 66  nted..*/.typedef
a630: 20 69 6e 74 20 28 2a 73 71 6c 69 74 65 33 5f 63   int (*sqlite3_c
a640: 61 6c 6c 62 61 63 6b 29 28 76 6f 69 64 2a 2c 69  allback)(void*,i
a650: 6e 74 2c 63 68 61 72 2a 2a 2c 20 63 68 61 72 2a  nt,char**, char*
a660: 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  *);../*.** CAPI3
a670: 52 45 46 3a 20 4f 6e 65 2d 53 74 65 70 20 51 75  REF: One-Step Qu
a680: 65 72 79 20 45 78 65 63 75 74 69 6f 6e 20 49 6e  ery Execution In
a690: 74 65 72 66 61 63 65 0a 2a 2a 20 4d 45 54 48 4f  terface.** METHO
a6a0: 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  D: sqlite3.**.**
a6b0: 20 54 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65   The sqlite3_exe
a6c0: 63 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73  c() interface is
a6d0: 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 20 77   a convenience w
a6e0: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a 2a 2a  rapper around.**
a6f0: 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
a700: 65 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65  e_v2()], [sqlite
a710: 33 5f 73 74 65 70 28 29 5d 2c 20 61 6e 64 20 5b  3_step()], and [
a720: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
a730: 28 29 5d 2c 0a 2a 2a 20 74 68 61 74 20 61 6c 6c  ()],.** that all
a740: 6f 77 73 20 61 6e 20 61 70 70 6c 69 63 61 74 69  ows an applicati
a750: 6f 6e 20 74 6f 20 72 75 6e 20 6d 75 6c 74 69 70  on to run multip
a760: 6c 65 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 66  le statements of
a770: 20 53 51 4c 0a 2a 2a 20 77 69 74 68 6f 75 74 20   SQL.** without 
a780: 68 61 76 69 6e 67 20 74 6f 20 75 73 65 20 61 20  having to use a 
a790: 6c 6f 74 20 6f 66 20 43 20 63 6f 64 65 2e 20 0a  lot of C code. .
a7a0: 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
a7b0: 65 33 5f 65 78 65 63 28 29 20 69 6e 74 65 72 66  e3_exec() interf
a7c0: 61 63 65 20 72 75 6e 73 20 7a 65 72 6f 20 6f 72  ace runs zero or
a7d0: 20 6d 6f 72 65 20 55 54 46 2d 38 20 65 6e 63 6f   more UTF-8 enco
a7e0: 64 65 64 2c 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f  ded,.** semicolo
a7f0: 6e 2d 73 65 70 61 72 61 74 65 20 53 51 4c 20 73  n-separate SQL s
a800: 74 61 74 65 6d 65 6e 74 73 20 70 61 73 73 65 64  tatements passed
a810: 20 69 6e 74 6f 20 69 74 73 20 32 6e 64 20 61 72   into its 2nd ar
a820: 67 75 6d 65 6e 74 2c 0a 2a 2a 20 69 6e 20 74 68  gument,.** in th
a830: 65 20 63 6f 6e 74 65 78 74 20 6f 66 20 74 68 65  e context of the
a840: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
a850: 63 74 69 6f 6e 5d 20 70 61 73 73 65 64 20 69 6e  ction] passed in
a860: 20 61 73 20 69 74 73 20 31 73 74 0a 2a 2a 20 61   as its 1st.** a
a870: 72 67 75 6d 65 6e 74 2e 20 20 5e 49 66 20 74 68  rgument.  ^If th
a880: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
a890: 69 6f 6e 20 6f 66 20 74 68 65 20 33 72 64 20 61  ion of the 3rd a
a8a0: 72 67 75 6d 65 6e 74 20 74 6f 0a 2a 2a 20 73 71  rgument to.** sq
a8b0: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20  lite3_exec() is 
a8c0: 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 69  not NULL, then i
a8d0: 74 20 69 73 20 69 6e 76 6f 6b 65 64 20 66 6f 72  t is invoked for
a8e0: 20 65 61 63 68 20 72 65 73 75 6c 74 20 72 6f 77   each result row
a8f0: 0a 2a 2a 20 63 6f 6d 69 6e 67 20 6f 75 74 20 6f  .** coming out o
a900: 66 20 74 68 65 20 65 76 61 6c 75 61 74 65 64 20  f the evaluated 
a910: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 20  SQL statements. 
a920: 20 5e 54 68 65 20 34 74 68 20 61 72 67 75 6d 65   ^The 4th argume
a930: 6e 74 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33  nt to.** sqlite3
a940: 5f 65 78 65 63 28 29 20 69 73 20 72 65 6c 61 79  _exec() is relay
a950: 65 64 20 74 68 72 6f 75 67 68 20 74 6f 20 74 68  ed through to th
a960: 65 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20 6f  e 1st argument o
a970: 66 20 65 61 63 68 0a 2a 2a 20 63 61 6c 6c 62 61  f each.** callba
a980: 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 2e 20 20  ck invocation.  
a990: 5e 49 66 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ^If the callback
a9a0: 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71 6c 69   pointer to sqli
a9b0: 74 65 33 5f 65 78 65 63 28 29 0a 2a 2a 20 69 73  te3_exec().** is
a9c0: 20 4e 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 63   NULL, then no c
a9d0: 61 6c 6c 62 61 63 6b 20 69 73 20 65 76 65 72 20  allback is ever 
a9e0: 69 6e 76 6f 6b 65 64 20 61 6e 64 20 72 65 73 75  invoked and resu
a9f0: 6c 74 20 72 6f 77 73 20 61 72 65 0a 2a 2a 20 69  lt rows are.** i
aa00: 67 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 49  gnored..**.** ^I
aa10: 66 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72  f an error occur
aa20: 73 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74 69  s while evaluati
aa30: 6e 67 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  ng the SQL state
aa40: 6d 65 6e 74 73 20 70 61 73 73 65 64 20 69 6e 74  ments passed int
aa50: 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 65 78 65  o.** sqlite3_exe
aa60: 63 28 29 2c 20 74 68 65 6e 20 65 78 65 63 75 74  c(), then execut
aa70: 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65  ion of the curre
aa80: 6e 74 20 73 74 61 74 65 6d 65 6e 74 20 73 74 6f  nt statement sto
aa90: 70 73 20 61 6e 64 0a 2a 2a 20 73 75 62 73 65 71  ps and.** subseq
aaa0: 75 65 6e 74 20 73 74 61 74 65 6d 65 6e 74 73 20  uent statements 
aab0: 61 72 65 20 73 6b 69 70 70 65 64 2e 20 20 5e 49  are skipped.  ^I
aac0: 66 20 74 68 65 20 35 74 68 20 70 61 72 61 6d 65  f the 5th parame
aad0: 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65  ter to sqlite3_e
aae0: 78 65 63 28 29 0a 2a 2a 20 69 73 20 6e 6f 74 20  xec().** is not 
aaf0: 4e 55 4c 4c 20 74 68 65 6e 20 61 6e 79 20 65 72  NULL then any er
ab00: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 77  ror message is w
ab10: 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f  ritten into memo
ab20: 72 79 20 6f 62 74 61 69 6e 65 64 0a 2a 2a 20 66  ry obtained.** f
ab30: 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  rom [sqlite3_mal
ab40: 6c 6f 63 28 29 5d 20 61 6e 64 20 70 61 73 73 65  loc()] and passe
ab50: 64 20 62 61 63 6b 20 74 68 72 6f 75 67 68 20 74  d back through t
ab60: 68 65 20 35 74 68 20 70 61 72 61 6d 65 74 65 72  he 5th parameter
ab70: 2e 0a 2a 2a 20 54 6f 20 61 76 6f 69 64 20 6d 65  ..** To avoid me
ab80: 6d 6f 72 79 20 6c 65 61 6b 73 2c 20 74 68 65 20  mory leaks, the 
ab90: 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75  application shou
aba0: 6c 64 20 69 6e 76 6f 6b 65 20 5b 73 71 6c 69 74  ld invoke [sqlit
abb0: 65 33 5f 66 72 65 65 28 29 5d 0a 2a 2a 20 6f 6e  e3_free()].** on
abc0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
abd0: 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20  trings returned 
abe0: 74 68 72 6f 75 67 68 20 74 68 65 20 35 74 68 20  through the 5th 
abf0: 70 61 72 61 6d 65 74 65 72 20 6f 66 0a 2a 2a 20  parameter of.** 
ac00: 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 61  sqlite3_exec() a
ac10: 66 74 65 72 20 74 68 65 20 65 72 72 6f 72 20 6d  fter the error m
ac20: 65 73 73 61 67 65 20 73 74 72 69 6e 67 20 69 73  essage string is
ac30: 20 6e 6f 20 6c 6f 6e 67 65 72 20 6e 65 65 64 65   no longer neede
ac40: 64 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 35 74  d..** ^If the 5t
ac50: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73  h parameter to s
ac60: 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73  qlite3_exec() is
ac70: 20 6e 6f 74 20 4e 55 4c 4c 20 61 6e 64 20 6e 6f   not NULL and no
ac80: 20 65 72 72 6f 72 73 0a 2a 2a 20 6f 63 63 75 72   errors.** occur
ac90: 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 65  , then sqlite3_e
aca0: 78 65 63 28 29 20 73 65 74 73 20 74 68 65 20 70  xec() sets the p
acb0: 6f 69 6e 74 65 72 20 69 6e 20 69 74 73 20 35 74  ointer in its 5t
acc0: 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  h parameter to.*
acd0: 2a 20 4e 55 4c 4c 20 62 65 66 6f 72 65 20 72 65  * NULL before re
ace0: 74 75 72 6e 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 5e  turning..**.** ^
acf0: 49 66 20 61 6e 20 73 71 6c 69 74 65 33 5f 65 78  If an sqlite3_ex
ad00: 65 63 28 29 20 63 61 6c 6c 62 61 63 6b 20 72 65  ec() callback re
ad10: 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20  turns non-zero, 
ad20: 74 68 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63  the sqlite3_exec
ad30: 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 72 65  ().** routine re
ad40: 74 75 72 6e 73 20 53 51 4c 49 54 45 5f 41 42 4f  turns SQLITE_ABO
ad50: 52 54 20 77 69 74 68 6f 75 74 20 69 6e 76 6f 6b  RT without invok
ad60: 69 6e 67 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ing the callback
ad70: 20 61 67 61 69 6e 20 61 6e 64 0a 2a 2a 20 77 69   again and.** wi
ad80: 74 68 6f 75 74 20 72 75 6e 6e 69 6e 67 20 61 6e  thout running an
ad90: 79 20 73 75 62 73 65 71 75 65 6e 74 20 53 51 4c  y subsequent SQL
ada0: 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a   statements..**.
adb0: 2a 2a 20 5e 54 68 65 20 32 6e 64 20 61 72 67 75  ** ^The 2nd argu
adc0: 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69  ment to the sqli
add0: 74 65 33 5f 65 78 65 63 28 29 20 63 61 6c 6c 62  te3_exec() callb
ade0: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ack function is 
adf0: 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66  the.** number of
ae00: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20   columns in the 
ae10: 72 65 73 75 6c 74 2e 20 20 5e 54 68 65 20 33 72  result.  ^The 3r
ae20: 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68  d argument to th
ae30: 65 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29  e sqlite3_exec()
ae40: 0a 2a 2a 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  .** callback is 
ae50: 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e  an array of poin
ae60: 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
ae70: 6f 62 74 61 69 6e 65 64 20 61 73 20 69 66 20 66  obtained as if f
ae80: 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  rom.** [sqlite3_
ae90: 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 29 5d 2c 20  column_text()], 
aea0: 6f 6e 65 20 66 6f 72 20 65 61 63 68 20 63 6f 6c  one for each col
aeb0: 75 6d 6e 2e 20 20 5e 49 66 20 61 6e 20 65 6c 65  umn.  ^If an ele
aec0: 6d 65 6e 74 20 6f 66 20 61 0a 2a 2a 20 72 65 73  ment of a.** res
aed0: 75 6c 74 20 72 6f 77 20 69 73 20 4e 55 4c 4c 20  ult row is NULL 
aee0: 74 68 65 6e 20 74 68 65 20 63 6f 72 72 65 73 70  then the corresp
aef0: 6f 6e 64 69 6e 67 20 73 74 72 69 6e 67 20 70 6f  onding string po
af00: 69 6e 74 65 72 20 66 6f 72 20 74 68 65 0a 2a 2a  inter for the.**
af10: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
af20: 63 61 6c 6c 62 61 63 6b 20 69 73 20 61 20 4e 55  callback is a NU
af30: 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 54 68  LL pointer.  ^Th
af40: 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20 74  e 4th argument t
af50: 6f 20 74 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33  o the.** sqlite3
af60: 5f 65 78 65 63 28 29 20 63 61 6c 6c 62 61 63 6b  _exec() callback
af70: 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20   is an array of 
af80: 70 6f 69 6e 74 65 72 73 20 74 6f 20 73 74 72 69  pointers to stri
af90: 6e 67 73 20 77 68 65 72 65 20 65 61 63 68 0a 2a  ngs where each.*
afa0: 2a 20 65 6e 74 72 79 20 72 65 70 72 65 73 65 6e  * entry represen
afb0: 74 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 63  ts the name of c
afc0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 72 65 73  orresponding res
afd0: 75 6c 74 20 63 6f 6c 75 6d 6e 20 61 73 20 6f 62  ult column as ob
afe0: 74 61 69 6e 65 64 0a 2a 2a 20 66 72 6f 6d 20 5b  tained.** from [
aff0: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 6e  sqlite3_column_n
b000: 61 6d 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49  ame()]..**.** ^I
b010: 66 20 74 68 65 20 32 6e 64 20 70 61 72 61 6d 65  f the 2nd parame
b020: 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 65  ter to sqlite3_e
b030: 78 65 63 28 29 20 69 73 20 61 20 4e 55 4c 4c 20  xec() is a NULL 
b040: 70 6f 69 6e 74 65 72 2c 20 61 20 70 6f 69 6e 74  pointer, a point
b050: 65 72 0a 2a 2a 20 74 6f 20 61 6e 20 65 6d 70 74  er.** to an empt
b060: 79 20 73 74 72 69 6e 67 2c 20 6f 72 20 61 20 70  y string, or a p
b070: 6f 69 6e 74 65 72 20 74 68 61 74 20 63 6f 6e 74  ointer that cont
b080: 61 69 6e 73 20 6f 6e 6c 79 20 77 68 69 74 65 73  ains only whites
b090: 70 61 63 65 20 61 6e 64 2f 6f 72 20 0a 2a 2a 20  pace and/or .** 
b0a0: 53 51 4c 20 63 6f 6d 6d 65 6e 74 73 2c 20 74 68  SQL comments, th
b0b0: 65 6e 20 6e 6f 20 53 51 4c 20 73 74 61 74 65 6d  en no SQL statem
b0c0: 65 6e 74 73 20 61 72 65 20 65 76 61 6c 75 61 74  ents are evaluat
b0d0: 65 64 20 61 6e 64 20 74 68 65 20 64 61 74 61 62  ed and the datab
b0e0: 61 73 65 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68  ase.** is not ch
b0f0: 61 6e 67 65 64 2e 0a 2a 2a 0a 2a 2a 20 52 65 73  anged..**.** Res
b100: 74 72 69 63 74 69 6f 6e 73 3a 0a 2a 2a 0a 2a 2a  trictions:.**.**
b110: 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68   <ul>.** <li> Th
b120: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75  e application mu
b130: 73 74 20 65 6e 73 75 72 65 20 74 68 61 74 20 74  st ensure that t
b140: 68 65 20 31 73 74 20 70 61 72 61 6d 65 74 65 72  he 1st parameter
b150: 20 74 6f 20 73 71 6c 69 74 65 33 5f 65 78 65 63   to sqlite3_exec
b160: 28 29 0a 2a 2a 20 20 20 20 20 20 69 73 20 61 20  ().**      is a 
b170: 76 61 6c 69 64 20 61 6e 64 20 6f 70 65 6e 20 5b  valid and open [
b180: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
b190: 69 6f 6e 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 54 68  ion]..** <li> Th
b1a0: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75  e application mu
b1b0: 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68 65  st not close the
b1c0: 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
b1d0: 63 74 69 6f 6e 5d 20 73 70 65 63 69 66 69 65 64  ction] specified
b1e0: 20 62 79 0a 2a 2a 20 20 20 20 20 20 74 68 65 20   by.**      the 
b1f0: 31 73 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f  1st parameter to
b200: 20 73 71 6c 69 74 65 33 5f 65 78 65 63 28 29 20   sqlite3_exec() 
b210: 77 68 69 6c 65 20 73 71 6c 69 74 65 33 5f 65 78  while sqlite3_ex
b220: 65 63 28 29 20 69 73 20 72 75 6e 6e 69 6e 67 2e  ec() is running.
b230: 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 61 70 70  .** <li> The app
b240: 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f  lication must no
b250: 74 20 6d 6f 64 69 66 79 20 74 68 65 20 53 51 4c  t modify the SQL
b260: 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20   statement text 
b270: 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 20  passed into.**  
b280: 20 20 20 20 74 68 65 20 32 6e 64 20 70 61 72 61      the 2nd para
b290: 6d 65 74 65 72 20 6f 66 20 73 71 6c 69 74 65 33  meter of sqlite3
b2a0: 5f 65 78 65 63 28 29 20 77 68 69 6c 65 20 73 71  _exec() while sq
b2b0: 6c 69 74 65 33 5f 65 78 65 63 28 29 20 69 73 20  lite3_exec() is 
b2c0: 72 75 6e 6e 69 6e 67 2e 0a 2a 2a 20 3c 2f 75 6c  running..** </ul
b2d0: 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  >.*/.SQLITE_API 
b2e0: 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 65 63  int sqlite3_exec
b2f0: 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 20 20 20  (.  sqlite3*,   
b300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b320: 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62 61  * An open databa
b330: 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  se */.  const ch
b340: 61 72 20 2a 73 71 6c 2c 20 20 20 20 20 20 20 20  ar *sql,        
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b360: 20 20 20 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20     /* SQL to be 
b370: 65 76 61 6c 75 61 74 65 64 20 2a 2f 0a 20 20 69  evaluated */.  i
b380: 6e 74 20 28 2a 63 61 6c 6c 62 61 63 6b 29 28 76  nt (*callback)(v
b390: 6f 69 64 2a 2c 69 6e 74 2c 63 68 61 72 2a 2a 2c  oid*,int,char**,
b3a0: 63 68 61 72 2a 2a 29 2c 20 20 2f 2a 20 43 61 6c  char**),  /* Cal
b3b0: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 2a  lback function *
b3c0: 2f 0a 20 20 76 6f 69 64 20 2a 2c 20 20 20 20 20  /.  void *,     
b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
b3f0: 2a 20 31 73 74 20 61 72 67 75 6d 65 6e 74 20 74  * 1st argument t
b400: 6f 20 63 61 6c 6c 62 61 63 6b 20 2a 2f 0a 20 20  o callback */.  
b410: 63 68 61 72 20 2a 2a 65 72 72 6d 73 67 20 20 20  char **errmsg   
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 45 72             /* Er
b440: 72 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e 20  ror msg written 
b450: 68 65 72 65 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a  here */.);../*.*
b460: 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 73 75  * CAPI3REF: Resu
b470: 6c 74 20 43 6f 64 65 73 0a 2a 2a 20 4b 45 59 57  lt Codes.** KEYW
b480: 4f 52 44 53 3a 20 7b 72 65 73 75 6c 74 20 63 6f  ORDS: {result co
b490: 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 7d 0a  de definitions}.
b4a0: 2a 2a 0a 2a 2a 20 4d 61 6e 79 20 53 51 4c 69 74  **.** Many SQLit
b4b0: 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 74 75  e functions retu
b4c0: 72 6e 20 61 6e 20 69 6e 74 65 67 65 72 20 72 65  rn an integer re
b4d0: 73 75 6c 74 20 63 6f 64 65 20 66 72 6f 6d 20 74  sult code from t
b4e0: 68 65 20 73 65 74 20 73 68 6f 77 6e 0a 2a 2a 20  he set shown.** 
b4f0: 68 65 72 65 20 69 6e 20 6f 72 64 65 72 20 74 6f  here in order to
b500: 20 69 6e 64 69 63 61 74 65 20 73 75 63 63 65 73   indicate succes
b510: 73 20 6f 72 20 66 61 69 6c 75 72 65 2e 0a 2a 2a  s or failure..**
b520: 0a 2a 2a 20 4e 65 77 20 65 72 72 6f 72 20 63 6f  .** New error co
b530: 64 65 73 20 6d 61 79 20 62 65 20 61 64 64 65 64  des may be added
b540: 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69   in future versi
b550: 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a  ons of SQLite..*
b560: 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b  *.** See also: [
b570: 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20  extended result 
b580: 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e 73  code definitions
b590: 5d 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  ].*/.#define SQL
b5a0: 49 54 45 5f 4f 4b 20 20 20 20 20 20 20 20 20 20  ITE_OK          
b5b0: 20 30 20 20 20 2f 2a 20 53 75 63 63 65 73 73 66   0   /* Successf
b5c0: 75 6c 20 72 65 73 75 6c 74 20 2a 2f 0a 2f 2a 20  ul result */./* 
b5d0: 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d 65 72 72  beginning-of-err
b5e0: 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 23 64 65 66  or-codes */.#def
b5f0: 69 6e 65 20 53 51 4c 49 54 45 5f 45 52 52 4f 52  ine SQLITE_ERROR
b600: 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20 47          1   /* G
b610: 65 6e 65 72 69 63 20 65 72 72 6f 72 20 2a 2f 0a  eneric error */.
b620: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
b630: 4e 54 45 52 4e 41 4c 20 20 20 20 20 32 20 20 20  NTERNAL     2   
b640: 2f 2a 20 49 6e 74 65 72 6e 61 6c 20 6c 6f 67 69  /* Internal logi
b650: 63 20 65 72 72 6f 72 20 69 6e 20 53 51 4c 69 74  c error in SQLit
b660: 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
b670: 49 54 45 5f 50 45 52 4d 20 20 20 20 20 20 20 20  ITE_PERM        
b680: 20 33 20 20 20 2f 2a 20 41 63 63 65 73 73 20 70   3   /* Access p
b690: 65 72 6d 69 73 73 69 6f 6e 20 64 65 6e 69 65 64  ermission denied
b6a0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
b6b0: 54 45 5f 41 42 4f 52 54 20 20 20 20 20 20 20 20  TE_ABORT        
b6c0: 34 20 20 20 2f 2a 20 43 61 6c 6c 62 61 63 6b 20  4   /* Callback 
b6d0: 72 6f 75 74 69 6e 65 20 72 65 71 75 65 73 74 65  routine requeste
b6e0: 64 20 61 6e 20 61 62 6f 72 74 20 2a 2f 0a 23 64  d an abort */.#d
b6f0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 42 55 53  efine SQLITE_BUS
b700: 59 20 20 20 20 20 20 20 20 20 35 20 20 20 2f 2a  Y         5   /*
b710: 20 54 68 65 20 64 61 74 61 62 61 73 65 20 66 69   The database fi
b720: 6c 65 20 69 73 20 6c 6f 63 6b 65 64 20 2a 2f 0a  le is locked */.
b730: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
b740: 4f 43 4b 45 44 20 20 20 20 20 20 20 36 20 20 20  OCKED       6   
b750: 2f 2a 20 41 20 74 61 62 6c 65 20 69 6e 20 74 68  /* A table in th
b760: 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6c 6f  e database is lo
b770: 63 6b 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20  cked */.#define 
b780: 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 20 20 20 20  SQLITE_NOMEM    
b790: 20 20 20 20 37 20 20 20 2f 2a 20 41 20 6d 61 6c      7   /* A mal
b7a0: 6c 6f 63 28 29 20 66 61 69 6c 65 64 20 2a 2f 0a  loc() failed */.
b7b0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
b7c0: 45 41 44 4f 4e 4c 59 20 20 20 20 20 38 20 20 20  EADONLY     8   
b7d0: 2f 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 77 72  /* Attempt to wr
b7e0: 69 74 65 20 61 20 72 65 61 64 6f 6e 6c 79 20 64  ite a readonly d
b7f0: 61 74 61 62 61 73 65 20 2a 2f 0a 23 64 65 66 69  atabase */.#defi
b800: 6e 65 20 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  ne SQLITE_INTERR
b810: 55 50 54 20 20 20 20 39 20 20 20 2f 2a 20 4f 70  UPT    9   /* Op
b820: 65 72 61 74 69 6f 6e 20 74 65 72 6d 69 6e 61 74  eration terminat
b830: 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 69 6e  ed by sqlite3_in
b840: 74 65 72 72 75 70 74 28 29 2a 2f 0a 23 64 65 66  terrupt()*/.#def
b850: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
b860: 20 20 20 20 20 20 20 31 30 20 20 20 2f 2a 20 53         10   /* S
b870: 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 64 69 73 6b  ome kind of disk
b880: 20 49 2f 4f 20 65 72 72 6f 72 20 6f 63 63 75 72   I/O error occur
b890: 72 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  red */.#define S
b8a0: 51 4c 49 54 45 5f 43 4f 52 52 55 50 54 20 20 20  QLITE_CORRUPT   
b8b0: 20 20 31 31 20 20 20 2f 2a 20 54 68 65 20 64 61    11   /* The da
b8c0: 74 61 62 61 73 65 20 64 69 73 6b 20 69 6d 61 67  tabase disk imag
b8d0: 65 20 69 73 20 6d 61 6c 66 6f 72 6d 65 64 20 2a  e is malformed *
b8e0: 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
b8f0: 5f 4e 4f 54 46 4f 55 4e 44 20 20 20 20 31 32 20  _NOTFOUND    12 
b900: 20 20 2f 2a 20 55 6e 6b 6e 6f 77 6e 20 6f 70 63    /* Unknown opc
b910: 6f 64 65 20 69 6e 20 73 71 6c 69 74 65 33 5f 66  ode in sqlite3_f
b920: 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 20 2a 2f  ile_control() */
b930: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b940: 46 55 4c 4c 20 20 20 20 20 20 20 20 31 33 20 20  FULL        13  
b950: 20 2f 2a 20 49 6e 73 65 72 74 69 6f 6e 20 66 61   /* Insertion fa
b960: 69 6c 65 64 20 62 65 63 61 75 73 65 20 64 61 74  iled because dat
b970: 61 62 61 73 65 20 69 73 20 66 75 6c 6c 20 2a 2f  abase is full */
b980: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
b990: 43 41 4e 54 4f 50 45 4e 20 20 20 20 31 34 20 20  CANTOPEN    14  
b9a0: 20 2f 2a 20 55 6e 61 62 6c 65 20 74 6f 20 6f 70   /* Unable to op
b9b0: 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20  en the database 
b9c0: 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20  file */.#define 
b9d0: 53 51 4c 49 54 45 5f 50 52 4f 54 4f 43 4f 4c 20  SQLITE_PROTOCOL 
b9e0: 20 20 20 31 35 20 20 20 2f 2a 20 44 61 74 61 62     15   /* Datab
b9f0: 61 73 65 20 6c 6f 63 6b 20 70 72 6f 74 6f 63 6f  ase lock protoco
ba00: 6c 20 65 72 72 6f 72 20 2a 2f 0a 23 64 65 66 69  l error */.#defi
ba10: 6e 65 20 53 51 4c 49 54 45 5f 45 4d 50 54 59 20  ne SQLITE_EMPTY 
ba20: 20 20 20 20 20 20 31 36 20 20 20 2f 2a 20 49 6e        16   /* In
ba30: 74 65 72 6e 61 6c 20 75 73 65 20 6f 6e 6c 79 20  ternal use only 
ba40: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
ba50: 45 5f 53 43 48 45 4d 41 20 20 20 20 20 20 31 37  E_SCHEMA      17
ba60: 20 20 20 2f 2a 20 54 68 65 20 64 61 74 61 62 61     /* The databa
ba70: 73 65 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65  se schema change
ba80: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
ba90: 49 54 45 5f 54 4f 4f 42 49 47 20 20 20 20 20 20  ITE_TOOBIG      
baa0: 31 38 20 20 20 2f 2a 20 53 74 72 69 6e 67 20 6f  18   /* String o
bab0: 72 20 42 4c 4f 42 20 65 78 63 65 65 64 73 20 73  r BLOB exceeds s
bac0: 69 7a 65 20 6c 69 6d 69 74 20 2a 2f 0a 23 64 65  ize limit */.#de
bad0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
bae0: 54 52 41 49 4e 54 20 20 31 39 20 20 20 2f 2a 20  TRAINT  19   /* 
baf0: 41 62 6f 72 74 20 64 75 65 20 74 6f 20 63 6f 6e  Abort due to con
bb00: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
bb10: 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  n */.#define SQL
bb20: 49 54 45 5f 4d 49 53 4d 41 54 43 48 20 20 20 20  ITE_MISMATCH    
bb30: 32 30 20 20 20 2f 2a 20 44 61 74 61 20 74 79 70  20   /* Data typ
bb40: 65 20 6d 69 73 6d 61 74 63 68 20 2a 2f 0a 23 64  e mismatch */.#d
bb50: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4d 49 53  efine SQLITE_MIS
bb60: 55 53 45 20 20 20 20 20 20 32 31 20 20 20 2f 2a  USE      21   /*
bb70: 20 4c 69 62 72 61 72 79 20 75 73 65 64 20 69 6e   Library used in
bb80: 63 6f 72 72 65 63 74 6c 79 20 2a 2f 0a 23 64 65  correctly */.#de
bb90: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4e 4f 4c 46  fine SQLITE_NOLF
bba0: 53 20 20 20 20 20 20 20 32 32 20 20 20 2f 2a 20  S       22   /* 
bbb0: 55 73 65 73 20 4f 53 20 66 65 61 74 75 72 65 73  Uses OS features
bbc0: 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 6f   not supported o
bbd0: 6e 20 68 6f 73 74 20 2a 2f 0a 23 64 65 66 69 6e  n host */.#defin
bbe0: 65 20 53 51 4c 49 54 45 5f 41 55 54 48 20 20 20  e SQLITE_AUTH   
bbf0: 20 20 20 20 20 32 33 20 20 20 2f 2a 20 41 75 74       23   /* Aut
bc00: 68 6f 72 69 7a 61 74 69 6f 6e 20 64 65 6e 69 65  horization denie
bc10: 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  d */.#define SQL
bc20: 49 54 45 5f 46 4f 52 4d 41 54 20 20 20 20 20 20  ITE_FORMAT      
bc30: 32 34 20 20 20 2f 2a 20 4e 6f 74 20 75 73 65 64  24   /* Not used
bc40: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
bc50: 54 45 5f 52 41 4e 47 45 20 20 20 20 20 20 20 32  TE_RANGE       2
bc60: 35 20 20 20 2f 2a 20 32 6e 64 20 70 61 72 61 6d  5   /* 2nd param
bc70: 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
bc80: 62 69 6e 64 20 6f 75 74 20 6f 66 20 72 61 6e 67  bind out of rang
bc90: 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  e */.#define SQL
bca0: 49 54 45 5f 4e 4f 54 41 44 42 20 20 20 20 20 20  ITE_NOTADB      
bcb0: 32 36 20 20 20 2f 2a 20 46 69 6c 65 20 6f 70 65  26   /* File ope
bcc0: 6e 65 64 20 74 68 61 74 20 69 73 20 6e 6f 74 20  ned that is not 
bcd0: 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
bce0: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
bcf0: 45 5f 4e 4f 54 49 43 45 20 20 20 20 20 20 32 37  E_NOTICE      27
bd00: 20 20 20 2f 2a 20 4e 6f 74 69 66 69 63 61 74 69     /* Notificati
bd10: 6f 6e 73 20 66 72 6f 6d 20 73 71 6c 69 74 65 33  ons from sqlite3
bd20: 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65 66 69 6e  _log() */.#defin
bd30: 65 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47  e SQLITE_WARNING
bd40: 20 20 20 20 20 32 38 20 20 20 2f 2a 20 57 61 72       28   /* War
bd50: 6e 69 6e 67 73 20 66 72 6f 6d 20 73 71 6c 69 74  nings from sqlit
bd60: 65 33 5f 6c 6f 67 28 29 20 2a 2f 0a 23 64 65 66  e3_log() */.#def
bd70: 69 6e 65 20 53 51 4c 49 54 45 5f 52 4f 57 20 20  ine SQLITE_ROW  
bd80: 20 20 20 20 20 20 20 31 30 30 20 20 2f 2a 20 73         100  /* s
bd90: 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 68 61  qlite3_step() ha
bda0: 73 20 61 6e 6f 74 68 65 72 20 72 6f 77 20 72 65  s another row re
bdb0: 61 64 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ady */.#define S
bdc0: 51 4c 49 54 45 5f 44 4f 4e 45 20 20 20 20 20 20  QLITE_DONE      
bdd0: 20 20 31 30 31 20 20 2f 2a 20 73 71 6c 69 74 65    101  /* sqlite
bde0: 33 5f 73 74 65 70 28 29 20 68 61 73 20 66 69 6e  3_step() has fin
bdf0: 69 73 68 65 64 20 65 78 65 63 75 74 69 6e 67 20  ished executing 
be00: 2a 2f 0a 2f 2a 20 65 6e 64 2d 6f 66 2d 65 72 72  */./* end-of-err
be10: 6f 72 2d 63 6f 64 65 73 20 2a 2f 0a 0a 2f 2a 0a  or-codes */../*.
be20: 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 45 78 74  ** CAPI3REF: Ext
be30: 65 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64  ended Result Cod
be40: 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  es.** KEYWORDS: 
be50: 7b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74  {extended result
be60: 20 63 6f 64 65 20 64 65 66 69 6e 69 74 69 6f 6e   code definition
be70: 73 7d 0a 2a 2a 0a 2a 2a 20 49 6e 20 69 74 73 20  s}.**.** In its 
be80: 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75 72  default configur
be90: 61 74 69 6f 6e 2c 20 53 51 4c 69 74 65 20 41 50  ation, SQLite AP
bea0: 49 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  I routines retur
beb0: 6e 20 6f 6e 65 20 6f 66 20 33 30 20 69 6e 74 65  n one of 30 inte
bec0: 67 65 72 0a 2a 2a 20 5b 72 65 73 75 6c 74 20 63  ger.** [result c
bed0: 6f 64 65 73 5d 2e 20 20 48 6f 77 65 76 65 72 2c  odes].  However,
bee0: 20 65 78 70 65 72 69 65 6e 63 65 20 68 61 73 20   experience has 
bef0: 73 68 6f 77 6e 20 74 68 61 74 20 6d 61 6e 79 20  shown that many 
bf00: 6f 66 0a 2a 2a 20 74 68 65 73 65 20 72 65 73 75  of.** these resu
bf10: 6c 74 20 63 6f 64 65 73 20 61 72 65 20 74 6f 6f  lt codes are too
bf20: 20 63 6f 61 72 73 65 2d 67 72 61 69 6e 65 64 2e   coarse-grained.
bf30: 20 20 54 68 65 79 20 64 6f 20 6e 6f 74 20 70 72    They do not pr
bf40: 6f 76 69 64 65 20 61 73 0a 2a 2a 20 6d 75 63 68  ovide as.** much
bf50: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f   information abo
bf60: 75 74 20 70 72 6f 62 6c 65 6d 73 20 61 73 20 70  ut problems as p
bf70: 72 6f 67 72 61 6d 6d 65 72 73 20 6d 69 67 68 74  rogrammers might
bf80: 20 6c 69 6b 65 2e 20 20 49 6e 20 61 6e 20 65 66   like.  In an ef
bf90: 66 6f 72 74 20 74 6f 0a 2a 2a 20 61 64 64 72 65  fort to.** addre
bfa0: 73 73 20 74 68 69 73 2c 20 6e 65 77 65 72 20 76  ss this, newer v
bfb0: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
bfc0: 65 20 28 76 65 72 73 69 6f 6e 20 33 2e 33 2e 38  e (version 3.3.8
bfd0: 20 5b 64 61 74 65 6f 66 3a 33 2e 33 2e 38 5d 0a   [dateof:3.3.8].
bfe0: 2a 2a 20 61 6e 64 20 6c 61 74 65 72 29 20 69 6e  ** and later) in
bff0: 63 6c 75 64 65 0a 2a 2a 20 73 75 70 70 6f 72 74  clude.** support
c000: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
c010: 72 65 73 75 6c 74 20 63 6f 64 65 73 20 74 68 61  result codes tha
c020: 74 20 70 72 6f 76 69 64 65 20 6d 6f 72 65 20 64  t provide more d
c030: 65 74 61 69 6c 65 64 20 69 6e 66 6f 72 6d 61 74  etailed informat
c040: 69 6f 6e 0a 2a 2a 20 61 62 6f 75 74 20 65 72 72  ion.** about err
c050: 6f 72 73 2e 20 54 68 65 73 65 20 5b 65 78 74 65  ors. These [exte
c060: 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f 64 65  nded result code
c070: 73 5d 20 61 72 65 20 65 6e 61 62 6c 65 64 20 6f  s] are enabled o
c080: 72 20 64 69 73 61 62 6c 65 64 0a 2a 2a 20 6f 6e  r disabled.** on
c090: 20 61 20 70 65 72 20 64 61 74 61 62 61 73 65 20   a per database 
c0a0: 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 61 73 69 73  connection basis
c0b0: 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73   using the.** [s
c0c0: 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
c0d0: 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 5d 20  result_codes()] 
c0e0: 41 50 49 2e 20 20 4f 72 2c 20 74 68 65 20 65 78  API.  Or, the ex
c0f0: 74 65 6e 64 65 64 20 63 6f 64 65 20 66 6f 72 0a  tended code for.
c100: 2a 2a 20 74 68 65 20 6d 6f 73 74 20 72 65 63 65  ** the most rece
c110: 6e 74 20 65 72 72 6f 72 20 63 61 6e 20 62 65 20  nt error can be 
c120: 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 0a 2a  obtained using.*
c130: 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  * [sqlite3_exten
c140: 64 65 64 5f 65 72 72 63 6f 64 65 28 29 5d 2e 0a  ded_errcode()]..
c150: 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
c160: 45 5f 45 52 52 4f 52 5f 4d 49 53 53 49 4e 47 5f  E_ERROR_MISSING_
c170: 43 4f 4c 4c 53 45 51 20 20 20 28 53 51 4c 49 54  COLLSEQ   (SQLIT
c180: 45 5f 45 52 52 4f 52 20 7c 20 28 31 3c 3c 38 29  E_ERROR | (1<<8)
c190: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
c1a0: 5f 45 52 52 4f 52 5f 52 45 54 52 59 20 20 20 20  _ERROR_RETRY    
c1b0: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
c1c0: 5f 45 52 52 4f 52 20 7c 20 28 32 3c 3c 38 29 29  _ERROR | (2<<8))
c1d0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
c1e0: 45 52 52 4f 52 5f 53 4e 41 50 53 48 4f 54 20 20  ERROR_SNAPSHOT  
c1f0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
c200: 45 52 52 4f 52 20 7c 20 28 33 3c 3c 38 29 29 0a  ERROR | (3<<8)).
c210: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
c220: 4f 45 52 52 5f 52 45 41 44 20 20 20 20 20 20 20  OERR_READ       
c230: 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49         (SQLITE_I
c240: 4f 45 52 52 20 7c 20 28 31 3c 3c 38 29 29 0a 23  OERR | (1<<8)).#
c250: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
c260: 45 52 52 5f 53 48 4f 52 54 5f 52 45 41 44 20 20  ERR_SHORT_READ  
c270: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f        (SQLITE_IO
c280: 45 52 52 20 7c 20 28 32 3c 3c 38 29 29 0a 23 64  ERR | (2<<8)).#d
c290: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45  efine SQLITE_IOE
c2a0: 52 52 5f 57 52 49 54 45 20 20 20 20 20 20 20 20  RR_WRITE        
c2b0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45       (SQLITE_IOE
c2c0: 52 52 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65  RR | (3<<8)).#de
c2d0: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52  fine SQLITE_IOER
c2e0: 52 5f 46 53 59 4e 43 20 20 20 20 20 20 20 20 20  R_FSYNC         
c2f0: 20 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52      (SQLITE_IOER
c300: 52 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64 65 66  R | (4<<8)).#def
c310: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52  ine SQLITE_IOERR
c320: 5f 44 49 52 5f 46 53 59 4e 43 20 20 20 20 20 20  _DIR_FSYNC      
c330: 20 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52     (SQLITE_IOERR
c340: 20 7c 20 28 35 3c 3c 38 29 29 0a 23 64 65 66 69   | (5<<8)).#defi
c350: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ne SQLITE_IOERR_
c360: 54 52 55 4e 43 41 54 45 20 20 20 20 20 20 20 20  TRUNCATE        
c370: 20 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20    (SQLITE_IOERR 
c380: 7c 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (6<<8)).#defin
c390: 65 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 46  e SQLITE_IOERR_F
c3a0: 53 54 41 54 20 20 20 20 20 20 20 20 20 20 20 20  STAT            
c3b0: 20 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c   (SQLITE_IOERR |
c3c0: 20 28 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (7<<8)).#define
c3d0: 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 55 4e   SQLITE_IOERR_UN
c3e0: 4c 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20  LOCK            
c3f0: 28 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20  (SQLITE_IOERR | 
c400: 28 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (8<<8)).#define 
c410: 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 44 4c  SQLITE_IOERR_RDL
c420: 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 28  OCK            (
c430: 53 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28  SQLITE_IOERR | (
c440: 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  9<<8)).#define S
c450: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c 45  QLITE_IOERR_DELE
c460: 54 45 20 20 20 20 20 20 20 20 20 20 20 20 28 53  TE            (S
c470: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c480: 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  0<<8)).#define S
c490: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 4c 4f 43  QLITE_IOERR_BLOC
c4a0: 4b 45 44 20 20 20 20 20 20 20 20 20 20 20 28 53  KED           (S
c4b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c4c0: 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  1<<8)).#define S
c4d0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4e 4f 4d 45  QLITE_IOERR_NOME
c4e0: 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53  M             (S
c4f0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c500: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
c510: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 43 43 45  QLITE_IOERR_ACCE
c520: 53 53 20 20 20 20 20 20 20 20 20 20 20 20 28 53  SS            (S
c530: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c540: 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  3<<8)).#define S
c550: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 48 45 43  QLITE_IOERR_CHEC
c560: 4b 52 45 53 45 52 56 45 44 4c 4f 43 4b 20 28 53  KRESERVEDLOCK (S
c570: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c580: 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  4<<8)).#define S
c590: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4c 4f 43 4b  QLITE_IOERR_LOCK
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53                (S
c5b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c5c0: 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  5<<8)).#define S
c5d0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4c 4f 53  QLITE_IOERR_CLOS
c5e0: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53  E             (S
c5f0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c600: 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  6<<8)).#define S
c610: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 49 52 5f  QLITE_IOERR_DIR_
c620: 43 4c 4f 53 45 20 20 20 20 20 20 20 20 20 28 53  CLOSE         (S
c630: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c640: 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  7<<8)).#define S
c650: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4f  QLITE_IOERR_SHMO
c660: 50 45 4e 20 20 20 20 20 20 20 20 20 20 20 28 53  PEN           (S
c670: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c680: 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  8<<8)).#define S
c690: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 53  QLITE_IOERR_SHMS
c6a0: 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 28 53  IZE           (S
c6b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 31  QLITE_IOERR | (1
c6c0: 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  9<<8)).#define S
c6d0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4c  QLITE_IOERR_SHML
c6e0: 4f 43 4b 20 20 20 20 20 20 20 20 20 20 20 28 53  OCK           (S
c6f0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c700: 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  0<<8)).#define S
c710: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 48 4d 4d  QLITE_IOERR_SHMM
c720: 41 50 20 20 20 20 20 20 20 20 20 20 20 20 28 53  AP            (S
c730: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c740: 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  1<<8)).#define S
c750: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 53 45 45 4b  QLITE_IOERR_SEEK
c760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53                (S
c770: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c780: 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  2<<8)).#define S
c790: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 44 45 4c 45  QLITE_IOERR_DELE
c7a0: 54 45 5f 4e 4f 45 4e 54 20 20 20 20 20 20 28 53  TE_NOENT      (S
c7b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c7c0: 33 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  3<<8)).#define S
c7d0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 4d 4d 41 50  QLITE_IOERR_MMAP
c7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53                (S
c7f0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c800: 34 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  4<<8)).#define S
c810: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 47 45 54 54  QLITE_IOERR_GETT
c820: 45 4d 50 50 41 54 48 20 20 20 20 20 20 20 28 53  EMPPATH       (S
c830: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c840: 35 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  5<<8)).#define S
c850: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4e 56  QLITE_IOERR_CONV
c860: 50 41 54 48 20 20 20 20 20 20 20 20 20 20 28 53  PATH          (S
c870: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c880: 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  6<<8)).#define S
c890: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 56 4e 4f 44  QLITE_IOERR_VNOD
c8a0: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53  E             (S
c8b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c8c0: 37 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  7<<8)).#define S
c8d0: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 41 55 54 48  QLITE_IOERR_AUTH
c8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 53                (S
c8f0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c900: 38 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  8<<8)).#define S
c910: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 42 45 47 49  QLITE_IOERR_BEGI
c920: 4e 5f 41 54 4f 4d 49 43 20 20 20 20 20 20 28 53  N_ATOMIC      (S
c930: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 32  QLITE_IOERR | (2
c940: 39 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  9<<8)).#define S
c950: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 43 4f 4d 4d  QLITE_IOERR_COMM
c960: 49 54 5f 41 54 4f 4d 49 43 20 20 20 20 20 28 53  IT_ATOMIC     (S
c970: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 33  QLITE_IOERR | (3
c980: 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  0<<8)).#define S
c990: 51 4c 49 54 45 5f 49 4f 45 52 52 5f 52 4f 4c 4c  QLITE_IOERR_ROLL
c9a0: 42 41 43 4b 5f 41 54 4f 4d 49 43 20 20 20 28 53  BACK_ATOMIC   (S
c9b0: 51 4c 49 54 45 5f 49 4f 45 52 52 20 7c 20 28 33  QLITE_IOERR | (3
c9c0: 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53  1<<8)).#define S
c9d0: 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 53 48 41  QLITE_LOCKED_SHA
c9e0: 52 45 44 43 41 43 48 45 20 20 20 20 20 20 28 53  REDCACHE      (S
c9f0: 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20 20  QLITE_LOCKED |  
ca00: 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (1<<8)).#define 
ca10: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 5f 56 54  SQLITE_LOCKED_VT
ca20: 41 42 20 20 20 20 20 20 20 20 20 20 20 20 20 28  AB             (
ca30: 53 51 4c 49 54 45 5f 4c 4f 43 4b 45 44 20 7c 20  SQLITE_LOCKED | 
ca40: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
ca50: 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 52 45 43   SQLITE_BUSY_REC
ca60: 4f 56 45 52 59 20 20 20 20 20 20 20 20 20 20 20  OVERY           
ca70: 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20 7c  (SQLITE_BUSY   |
ca80: 20 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e    (1<<8)).#defin
ca90: 65 20 53 51 4c 49 54 45 5f 42 55 53 59 5f 53 4e  e SQLITE_BUSY_SN
caa0: 41 50 53 48 4f 54 20 20 20 20 20 20 20 20 20 20  APSHOT          
cab0: 20 28 53 51 4c 49 54 45 5f 42 55 53 59 20 20 20   (SQLITE_BUSY   
cac0: 7c 20 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69  |  (2<<8)).#defi
cad0: 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50  ne SQLITE_CANTOP
cae0: 45 4e 5f 4e 4f 54 45 4d 50 44 49 52 20 20 20 20  EN_NOTEMPDIR    
caf0: 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54 4f 50    (SQLITE_CANTOP
cb00: 45 4e 20 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65  EN | (1<<8)).#de
cb10: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41 4e 54  fine SQLITE_CANT
cb20: 4f 50 45 4e 5f 49 53 44 49 52 20 20 20 20 20 20  OPEN_ISDIR      
cb30: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41 4e 54      (SQLITE_CANT
cb40: 4f 50 45 4e 20 7c 20 28 32 3c 3c 38 29 29 0a 23  OPEN | (2<<8)).#
cb50: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 41  define SQLITE_CA
cb60: 4e 54 4f 50 45 4e 5f 46 55 4c 4c 50 41 54 48 20  NTOPEN_FULLPATH 
cb70: 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 43 41        (SQLITE_CA
cb80: 4e 54 4f 50 45 4e 20 7c 20 28 33 3c 3c 38 29 29  NTOPEN | (3<<8))
cb90: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cba0: 43 41 4e 54 4f 50 45 4e 5f 43 4f 4e 56 50 41 54  CANTOPEN_CONVPAT
cbb0: 48 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  H       (SQLITE_
cbc0: 43 41 4e 54 4f 50 45 4e 20 7c 20 28 34 3c 3c 38  CANTOPEN | (4<<8
cbd0: 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  )).#define SQLIT
cbe0: 45 5f 43 41 4e 54 4f 50 45 4e 5f 44 49 52 54 59  E_CANTOPEN_DIRTY
cbf0: 57 41 4c 20 20 20 20 20 20 20 28 53 51 4c 49 54  WAL       (SQLIT
cc00: 45 5f 43 41 4e 54 4f 50 45 4e 20 7c 20 28 35 3c  E_CANTOPEN | (5<
cc10: 3c 38 29 29 20 2f 2a 20 4e 6f 74 20 55 73 65 64  <8)) /* Not Used
cc20: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
cc30: 54 45 5f 43 4f 52 52 55 50 54 5f 56 54 41 42 20  TE_CORRUPT_VTAB 
cc40: 20 20 20 20 20 20 20 20 20 20 20 28 53 51 4c 49             (SQLI
cc50: 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28 31 3c  TE_CORRUPT | (1<
cc60: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cc70: 49 54 45 5f 43 4f 52 52 55 50 54 5f 53 45 51 55  ITE_CORRUPT_SEQU
cc80: 45 4e 43 45 20 20 20 20 20 20 20 20 28 53 51 4c  ENCE        (SQL
cc90: 49 54 45 5f 43 4f 52 52 55 50 54 20 7c 20 28 32  ITE_CORRUPT | (2
cca0: 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51  <<8)).#define SQ
ccb0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f 52 45  LITE_READONLY_RE
ccc0: 43 4f 56 45 52 59 20 20 20 20 20 20 20 28 53 51  COVERY       (SQ
ccd0: 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20 7c 20  LITE_READONLY | 
cce0: 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (1<<8)).#define 
ccf0: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 5f  SQLITE_READONLY_
cd00: 43 41 4e 54 4c 4f 43 4b 20 20 20 20 20 20 20 28  CANTLOCK       (
cd10: 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c 59 20  SQLITE_READONLY 
cd20: 7c 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (2<<8)).#defin
cd30: 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c  e SQLITE_READONL
cd40: 59 5f 52 4f 4c 4c 42 41 43 4b 20 20 20 20 20 20  Y_ROLLBACK      
cd50: 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f 4e 4c   (SQLITE_READONL
cd60: 59 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65 66  Y | (3<<8)).#def
cd70: 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41 44 4f  ine SQLITE_READO
cd80: 4e 4c 59 5f 44 42 4d 4f 56 45 44 20 20 20 20 20  NLY_DBMOVED     
cd90: 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41 44 4f     (SQLITE_READO
cda0: 4e 4c 59 20 7c 20 28 34 3c 3c 38 29 29 0a 23 64  NLY | (4<<8)).#d
cdb0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 41  efine SQLITE_REA
cdc0: 44 4f 4e 4c 59 5f 43 41 4e 54 49 4e 49 54 20 20  DONLY_CANTINIT  
cdd0: 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52 45 41       (SQLITE_REA
cde0: 44 4f 4e 4c 59 20 7c 20 28 35 3c 3c 38 29 29 0a  DONLY | (5<<8)).
cdf0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52  #define SQLITE_R
ce00: 45 41 44 4f 4e 4c 59 5f 44 49 52 45 43 54 4f 52  EADONLY_DIRECTOR
ce10: 59 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f 52  Y      (SQLITE_R
ce20: 45 41 44 4f 4e 4c 59 20 7c 20 28 36 3c 3c 38 29  EADONLY | (6<<8)
ce30: 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  ).#define SQLITE
ce40: 5f 41 42 4f 52 54 5f 52 4f 4c 4c 42 41 43 4b 20  _ABORT_ROLLBACK 
ce50: 20 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45           (SQLITE
ce60: 5f 41 42 4f 52 54 20 7c 20 28 32 3c 3c 38 29 29  _ABORT | (2<<8))
ce70: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
ce80: 43 4f 4e 53 54 52 41 49 4e 54 5f 43 48 45 43 4b  CONSTRAINT_CHECK
ce90: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
cea0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 31 3c  CONSTRAINT | (1<
ceb0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cec0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 43  ITE_CONSTRAINT_C
ced0: 4f 4d 4d 49 54 48 4f 4f 4b 20 20 20 28 53 51 4c  OMMITHOOK   (SQL
cee0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
cef0: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
cf00: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
cf10: 4e 54 5f 46 4f 52 45 49 47 4e 4b 45 59 20 20 20  NT_FOREIGNKEY   
cf20: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
cf30: 4e 54 20 7c 20 28 33 3c 3c 38 29 29 0a 23 64 65  NT | (3<<8)).#de
cf40: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
cf50: 54 52 41 49 4e 54 5f 46 55 4e 43 54 49 4f 4e 20  TRAINT_FUNCTION 
cf60: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
cf70: 54 52 41 49 4e 54 20 7c 20 28 34 3c 3c 38 29 29  TRAINT | (4<<8))
cf80: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
cf90: 43 4f 4e 53 54 52 41 49 4e 54 5f 4e 4f 54 4e 55  CONSTRAINT_NOTNU
cfa0: 4c 4c 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f  LL      (SQLITE_
cfb0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 35 3c  CONSTRAINT | (5<
cfc0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
cfd0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 50  ITE_CONSTRAINT_P
cfe0: 52 49 4d 41 52 59 4b 45 59 20 20 20 28 53 51 4c  RIMARYKEY   (SQL
cff0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
d000: 20 28 36 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (6<<8)).#define
d010: 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49   SQLITE_CONSTRAI
d020: 4e 54 5f 54 52 49 47 47 45 52 20 20 20 20 20 20  NT_TRIGGER      
d030: 28 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49  (SQLITE_CONSTRAI
d040: 4e 54 20 7c 20 28 37 3c 3c 38 29 29 0a 23 64 65  NT | (7<<8)).#de
d050: 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 53  fine SQLITE_CONS
d060: 54 52 41 49 4e 54 5f 55 4e 49 51 55 45 20 20 20  TRAINT_UNIQUE   
d070: 20 20 20 20 28 53 51 4c 49 54 45 5f 43 4f 4e 53      (SQLITE_CONS
d080: 54 52 41 49 4e 54 20 7c 20 28 38 3c 3c 38 29 29  TRAINT | (8<<8))
d090: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
d0a0: 43 4f 4e 53 54 52 41 49 4e 54 5f 56 54 41 42 20  CONSTRAINT_VTAB 
d0b0: 20 20 20 20 20 20 20 20 28 53 51 4c 49 54 45 5f          (SQLITE_
d0c0: 43 4f 4e 53 54 52 41 49 4e 54 20 7c 20 28 39 3c  CONSTRAINT | (9<
d0d0: 3c 38 29 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <8)).#define SQL
d0e0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 5f 52  ITE_CONSTRAINT_R
d0f0: 4f 57 49 44 20 20 20 20 20 20 20 20 28 53 51 4c  OWID        (SQL
d100: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 7c  ITE_CONSTRAINT |
d110: 28 31 30 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65  (10<<8)).#define
d120: 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f 52   SQLITE_NOTICE_R
d130: 45 43 4f 56 45 52 5f 57 41 4c 20 20 20 20 20 20  ECOVER_WAL      
d140: 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 7c  (SQLITE_NOTICE |
d150: 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (1<<8)).#define
d160: 20 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 5f 52   SQLITE_NOTICE_R
d170: 45 43 4f 56 45 52 5f 52 4f 4c 4c 42 41 43 4b 20  ECOVER_ROLLBACK 
d180: 28 53 51 4c 49 54 45 5f 4e 4f 54 49 43 45 20 7c  (SQLITE_NOTICE |
d190: 20 28 32 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65   (2<<8)).#define
d1a0: 20 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 5f   SQLITE_WARNING_
d1b0: 41 55 54 4f 49 4e 44 45 58 20 20 20 20 20 20 20  AUTOINDEX       
d1c0: 28 53 51 4c 49 54 45 5f 57 41 52 4e 49 4e 47 20  (SQLITE_WARNING 
d1d0: 7c 20 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e  | (1<<8)).#defin
d1e0: 65 20 53 51 4c 49 54 45 5f 41 55 54 48 5f 55 53  e SQLITE_AUTH_US
d1f0: 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ER              
d200: 20 28 53 51 4c 49 54 45 5f 41 55 54 48 20 7c 20   (SQLITE_AUTH | 
d210: 28 31 3c 3c 38 29 29 0a 23 64 65 66 69 6e 65 20  (1<<8)).#define 
d220: 53 51 4c 49 54 45 5f 4f 4b 5f 4c 4f 41 44 5f 50  SQLITE_OK_LOAD_P
d230: 45 52 4d 41 4e 45 4e 54 4c 59 20 20 20 20 20 28  ERMANENTLY     (
d240: 53 51 4c 49 54 45 5f 4f 4b 20 7c 20 28 31 3c 3c  SQLITE_OK | (1<<
d250: 38 29 29 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  8))../*.** CAPI3
d260: 52 45 46 3a 20 46 6c 61 67 73 20 46 6f 72 20 46  REF: Flags For F
d270: 69 6c 65 20 4f 70 65 6e 20 4f 70 65 72 61 74 69  ile Open Operati
d280: 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20  ons.**.** These 
d290: 62 69 74 20 76 61 6c 75 65 73 20 61 72 65 20 69  bit values are i
d2a0: 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20  ntended for use 
d2b0: 69 6e 20 74 68 65 0a 2a 2a 20 33 72 64 20 70 61  in the.** 3rd pa
d2c0: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 5b  rameter to the [
d2d0: 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
d2e0: 29 5d 20 69 6e 74 65 72 66 61 63 65 20 61 6e 64  )] interface and
d2f0: 0a 2a 2a 20 69 6e 20 74 68 65 20 34 74 68 20 70  .** in the 4th p
d300: 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
d310: 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70  [sqlite3_vfs.xOp
d320: 65 6e 5d 20 6d 65 74 68 6f 64 2e 0a 2a 2f 0a 23  en] method..*/.#
d330: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d340: 45 4e 5f 52 45 41 44 4f 4e 4c 59 20 20 20 20 20  EN_READONLY     
d350: 20 20 20 20 30 78 30 30 30 30 30 30 30 31 20 20      0x00000001  
d360: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d370: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d380: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d390: 45 4e 5f 52 45 41 44 57 52 49 54 45 20 20 20 20  EN_READWRITE    
d3a0: 20 20 20 20 30 78 30 30 30 30 30 30 30 32 20 20      0x00000002  
d3b0: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d3c0: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d3d0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d3e0: 45 4e 5f 43 52 45 41 54 45 20 20 20 20 20 20 20  EN_CREATE       
d3f0: 20 20 20 20 30 78 30 30 30 30 30 30 30 34 20 20      0x00000004  
d400: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d410: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d420: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d430: 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45  EN_DELETEONCLOSE
d440: 20 20 20 20 30 78 30 30 30 30 30 30 30 38 20 20      0x00000008  
d450: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d460: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d470: 45 4e 5f 45 58 43 4c 55 53 49 56 45 20 20 20 20  EN_EXCLUSIVE    
d480: 20 20 20 20 30 78 30 30 30 30 30 30 31 30 20 20      0x00000010  
d490: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d4a0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d4b0: 45 4e 5f 41 55 54 4f 50 52 4f 58 59 20 20 20 20  EN_AUTOPROXY    
d4c0: 20 20 20 20 30 78 30 30 30 30 30 30 32 30 20 20      0x00000020  
d4d0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d4e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d4f0: 45 4e 5f 55 52 49 20 20 20 20 20 20 20 20 20 20  EN_URI          
d500: 20 20 20 20 30 78 30 30 30 30 30 30 34 30 20 20      0x00000040  
d510: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d520: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d530: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d540: 45 4e 5f 4d 45 4d 4f 52 59 20 20 20 20 20 20 20  EN_MEMORY       
d550: 20 20 20 20 30 78 30 30 30 30 30 30 38 30 20 20      0x00000080  
d560: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d570: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d580: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d590: 45 4e 5f 4d 41 49 4e 5f 44 42 20 20 20 20 20 20  EN_MAIN_DB      
d5a0: 20 20 20 20 30 78 30 30 30 30 30 31 30 30 20 20      0x00000100  
d5b0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d5c0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d5d0: 45 4e 5f 54 45 4d 50 5f 44 42 20 20 20 20 20 20  EN_TEMP_DB      
d5e0: 20 20 20 20 30 78 30 30 30 30 30 32 30 30 20 20      0x00000200  
d5f0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d600: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d610: 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f 44 42 20  EN_TRANSIENT_DB 
d620: 20 20 20 20 30 78 30 30 30 30 30 34 30 30 20 20      0x00000400  
d630: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d640: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d650: 45 4e 5f 4d 41 49 4e 5f 4a 4f 55 52 4e 41 4c 20  EN_MAIN_JOURNAL 
d660: 20 20 20 20 30 78 30 30 30 30 30 38 30 30 20 20      0x00000800  
d670: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d680: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d690: 45 4e 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c 20  EN_TEMP_JOURNAL 
d6a0: 20 20 20 20 30 78 30 30 30 30 31 30 30 30 20 20      0x00001000  
d6b0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d6c0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d6d0: 45 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c 20 20 20  EN_SUBJOURNAL   
d6e0: 20 20 20 20 30 78 30 30 30 30 32 30 30 30 20 20      0x00002000  
d6f0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d700: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d710: 45 4e 5f 4d 41 53 54 45 52 5f 4a 4f 55 52 4e 41  EN_MASTER_JOURNA
d720: 4c 20 20 20 30 78 30 30 30 30 34 30 30 30 20 20  L   0x00004000  
d730: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 23  /* VFS only */.#
d740: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d750: 45 4e 5f 4e 4f 4d 55 54 45 58 20 20 20 20 20 20  EN_NOMUTEX      
d760: 20 20 20 20 30 78 30 30 30 30 38 30 30 30 20 20      0x00008000  
d770: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d780: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d790: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d7a0: 45 4e 5f 46 55 4c 4c 4d 55 54 45 58 20 20 20 20  EN_FULLMUTEX    
d7b0: 20 20 20 20 30 78 30 30 30 31 30 30 30 30 20 20      0x00010000  
d7c0: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d7d0: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d7e0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d7f0: 45 4e 5f 53 48 41 52 45 44 43 41 43 48 45 20 20  EN_SHAREDCACHE  
d800: 20 20 20 20 30 78 30 30 30 32 30 30 30 30 20 20      0x00020000  
d810: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d820: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d830: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d840: 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45 20  EN_PRIVATECACHE 
d850: 20 20 20 20 30 78 30 30 30 34 30 30 30 30 20 20      0x00040000  
d860: 2f 2a 20 4f 6b 20 66 6f 72 20 73 71 6c 69 74 65  /* Ok for sqlite
d870: 33 5f 6f 70 65 6e 5f 76 32 28 29 20 2a 2f 0a 23  3_open_v2() */.#
d880: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4f 50  define SQLITE_OP
d890: 45 4e 5f 57 41 4c 20 20 20 20 20 20 20 20 20 20  EN_WAL          
d8a0: 20 20 20 20 30 78 30 30 30 38 30 30 30 30 20 20      0x00080000  
d8b0: 2f 2a 20 56 46 53 20 6f 6e 6c 79 20 2a 2f 0a 0a  /* VFS only */..
d8c0: 2f 2a 20 52 65 73 65 72 76 65 64 3a 20 20 20 20  /* Reserved:    
d8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8e0: 20 20 20 20 20 30 78 30 30 46 30 30 30 30 30 20       0x00F00000 
d8f0: 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
d900: 45 46 3a 20 44 65 76 69 63 65 20 43 68 61 72 61  EF: Device Chara
d910: 63 74 65 72 69 73 74 69 63 73 0a 2a 2a 0a 2a 2a  cteristics.**.**
d920: 20 54 68 65 20 78 44 65 76 69 63 65 43 68 61 72   The xDeviceChar
d930: 61 63 74 65 72 69 73 74 69 63 73 20 6d 65 74 68  acteristics meth
d940: 6f 64 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  od of the [sqlit
d950: 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 0a 2a  e3_io_methods].*
d960: 2a 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 73  * object returns
d970: 20 61 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63   an integer whic
d980: 68 20 69 73 20 61 20 76 65 63 74 6f 72 20 6f 66  h is a vector of
d990: 20 74 68 65 73 65 0a 2a 2a 20 62 69 74 20 76 61   these.** bit va
d9a0: 6c 75 65 73 20 65 78 70 72 65 73 73 69 6e 67 20  lues expressing 
d9b0: 49 2f 4f 20 63 68 61 72 61 63 74 65 72 69 73 74  I/O characterist
d9c0: 69 63 73 20 6f 66 20 74 68 65 20 6d 61 73 73 20  ics of the mass 
d9d0: 73 74 6f 72 61 67 65 0a 2a 2a 20 64 65 76 69 63  storage.** devic
d9e0: 65 20 74 68 61 74 20 68 6f 6c 64 73 20 74 68 65  e that holds the
d9f0: 20 66 69 6c 65 20 74 68 61 74 20 74 68 65 20 5b   file that the [
da00: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
da10: 64 73 5d 0a 2a 2a 20 72 65 66 65 72 73 20 74 6f  ds].** refers to
da20: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ..**.** The SQLI
da30: 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 20  TE_IOCAP_ATOMIC 
da40: 70 72 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74  property means t
da50: 68 61 74 20 61 6c 6c 20 77 72 69 74 65 73 20 6f  hat all writes o
da60: 66 0a 2a 2a 20 61 6e 79 20 73 69 7a 65 20 61 72  f.** any size ar
da70: 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53  e atomic.  The S
da80: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
da90: 49 43 6e 6e 6e 20 76 61 6c 75 65 73 0a 2a 2a 20  ICnnn values.** 
daa0: 6d 65 61 6e 20 74 68 61 74 20 77 72 69 74 65 73  mean that writes
dab0: 20 6f 66 20 62 6c 6f 63 6b 73 20 74 68 61 74 20   of blocks that 
dac0: 61 72 65 20 6e 6e 6e 20 62 79 74 65 73 20 69 6e  are nnn bytes in
dad0: 20 73 69 7a 65 20 61 6e 64 0a 2a 2a 20 61 72 65   size and.** are
dae0: 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 61   aligned to an a
daf0: 64 64 72 65 73 73 20 77 68 69 63 68 20 69 73 20  ddress which is 
db00: 61 6e 20 69 6e 74 65 67 65 72 20 6d 75 6c 74 69  an integer multi
db10: 70 6c 65 20 6f 66 0a 2a 2a 20 6e 6e 6e 20 61 72  ple of.** nnn ar
db20: 65 20 61 74 6f 6d 69 63 2e 20 20 54 68 65 20 53  e atomic.  The S
db30: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 41 46 45  QLITE_IOCAP_SAFE
db40: 5f 41 50 50 45 4e 44 20 76 61 6c 75 65 20 6d 65  _APPEND value me
db50: 61 6e 73 0a 2a 2a 20 74 68 61 74 20 77 68 65 6e  ans.** that when
db60: 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65   data is appende
db70: 64 20 74 6f 20 61 20 66 69 6c 65 2c 20 74 68 65  d to a file, the
db80: 20 64 61 74 61 20 69 73 20 61 70 70 65 6e 64 65   data is appende
db90: 64 0a 2a 2a 20 66 69 72 73 74 20 74 68 65 6e 20  d.** first then 
dba0: 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20  the size of the 
dbb0: 66 69 6c 65 20 69 73 20 65 78 74 65 6e 64 65 64  file is extended
dbc0: 2c 20 6e 65 76 65 72 20 74 68 65 20 6f 74 68 65  , never the othe
dbd0: 72 0a 2a 2a 20 77 61 79 20 61 72 6f 75 6e 64 2e  r.** way around.
dbe0: 20 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43    The SQLITE_IOC
dbf0: 41 50 5f 53 45 51 55 45 4e 54 49 41 4c 20 70 72  AP_SEQUENTIAL pr
dc00: 6f 70 65 72 74 79 20 6d 65 61 6e 73 20 74 68 61  operty means tha
dc10: 74 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  t.** information
dc20: 20 69 73 20 77 72 69 74 74 65 6e 20 74 6f 20 64   is written to d
dc30: 69 73 6b 20 69 6e 20 74 68 65 20 73 61 6d 65 20  isk in the same 
dc40: 6f 72 64 65 72 20 61 73 20 63 61 6c 6c 73 0a 2a  order as calls.*
dc50: 2a 20 74 6f 20 78 57 72 69 74 65 28 29 2e 20 20  * to xWrite().  
dc60: 54 68 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  The SQLITE_IOCAP
dc70: 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57  _POWERSAFE_OVERW
dc80: 52 49 54 45 20 70 72 6f 70 65 72 74 79 20 6d 65  RITE property me
dc90: 61 6e 73 20 74 68 61 74 0a 2a 2a 20 61 66 74 65  ans that.** afte
dca0: 72 20 72 65 62 6f 6f 74 20 66 6f 6c 6c 6f 77 69  r reboot followi
dcb0: 6e 67 20 61 20 63 72 61 73 68 20 6f 72 20 70 6f  ng a crash or po
dcc0: 77 65 72 20 6c 6f 73 73 2c 20 74 68 65 20 6f 6e  wer loss, the on
dcd0: 6c 79 20 62 79 74 65 73 20 69 6e 20 61 0a 2a 2a  ly bytes in a.**
dce0: 20 66 69 6c 65 20 74 68 61 74 20 77 65 72 65 20   file that were 
dcf0: 77 72 69 74 74 65 6e 20 61 74 20 74 68 65 20 61  written at the a
dd00: 70 70 6c 69 63 61 74 69 6f 6e 20 6c 65 76 65 6c  pplication level
dd10: 20 6d 69 67 68 74 20 68 61 76 65 20 63 68 61 6e   might have chan
dd20: 67 65 64 0a 2a 2a 20 61 6e 64 20 74 68 61 74 20  ged.** and that 
dd30: 61 64 6a 61 63 65 6e 74 20 62 79 74 65 73 2c 20  adjacent bytes, 
dd40: 65 76 65 6e 20 62 79 74 65 73 20 77 69 74 68 69  even bytes withi
dd50: 6e 20 74 68 65 20 73 61 6d 65 20 73 65 63 74 6f  n the same secto
dd60: 72 20 61 72 65 0a 2a 2a 20 67 75 61 72 61 6e 74  r are.** guarant
dd70: 65 65 64 20 74 6f 20 62 65 20 75 6e 63 68 61 6e  eed to be unchan
dd80: 67 65 64 2e 20 20 54 68 65 20 53 51 4c 49 54 45  ged.  The SQLITE
dd90: 5f 49 4f 43 41 50 5f 55 4e 44 45 4c 45 54 41 42  _IOCAP_UNDELETAB
dda0: 4c 45 5f 57 48 45 4e 5f 4f 50 45 4e 0a 2a 2a 20  LE_WHEN_OPEN.** 
ddb0: 66 6c 61 67 20 69 6e 64 69 63 61 74 65 73 20 74  flag indicates t
ddc0: 68 61 74 20 61 20 66 69 6c 65 20 63 61 6e 6e 6f  hat a file canno
ddd0: 74 20 62 65 20 64 65 6c 65 74 65 64 20 77 68 65  t be deleted whe
dde0: 6e 20 6f 70 65 6e 2e 20 20 54 68 65 0a 2a 2a 20  n open.  The.** 
ddf0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d  SQLITE_IOCAP_IMM
de00: 55 54 41 42 4c 45 20 66 6c 61 67 20 69 6e 64 69  UTABLE flag indi
de10: 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20 66  cates that the f
de20: 69 6c 65 20 69 73 20 6f 6e 0a 2a 2a 20 72 65 61  ile is on.** rea
de30: 64 2d 6f 6e 6c 79 20 6d 65 64 69 61 20 61 6e 64  d-only media and
de40: 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67   cannot be chang
de50: 65 64 20 65 76 65 6e 20 62 79 20 70 72 6f 63 65  ed even by proce
de60: 73 73 65 73 20 77 69 74 68 0a 2a 2a 20 65 6c 65  sses with.** ele
de70: 76 61 74 65 64 20 70 72 69 76 69 6c 65 67 65 73  vated privileges
de80: 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 49  ..**.** The SQLI
de90: 54 45 5f 49 4f 43 41 50 5f 42 41 54 43 48 5f 41  TE_IOCAP_BATCH_A
dea0: 54 4f 4d 49 43 20 70 72 6f 70 65 72 74 79 20 6d  TOMIC property m
deb0: 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 75 6e  eans that the un
dec0: 64 65 72 6c 79 69 6e 67 0a 2a 2a 20 66 69 6c 65  derlying.** file
ded0: 73 79 73 74 65 6d 20 73 75 70 70 6f 72 74 73 20  system supports 
dee0: 64 6f 69 6e 67 20 6d 75 6c 74 69 70 6c 65 20 77  doing multiple w
def0: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20  rite operations 
df00: 61 74 6f 6d 69 63 61 6c 6c 79 20 77 68 65 6e 20  atomically when 
df10: 74 68 6f 73 65 0a 2a 2a 20 77 72 69 74 65 20 6f  those.** write o
df20: 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 62 72  perations are br
df30: 61 63 6b 65 74 65 64 20 62 79 20 5b 53 51 4c 49  acketed by [SQLI
df40: 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
df50: 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 61 6e 64  TOMIC_WRITE] and
df60: 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  .** [SQLITE_FCNT
df70: 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f  L_COMMIT_ATOMIC_
df80: 57 52 49 54 45 5d 2e 0a 2a 2f 0a 23 64 65 66 69  WRITE]..*/.#defi
df90: 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f  ne SQLITE_IOCAP_
dfa0: 41 54 4f 4d 49 43 20 20 20 20 20 20 20 20 20 20  ATOMIC          
dfb0: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30         0x0000000
dfc0: 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
dfd0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 35 31 32  _IOCAP_ATOMIC512
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78                0x
dff0: 30 30 30 30 30 30 30 32 0a 23 64 65 66 69 6e 65  00000002.#define
e000: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54   SQLITE_IOCAP_AT
e010: 4f 4d 49 43 31 4b 20 20 20 20 20 20 20 20 20 20  OMIC1K          
e020: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34 0a       0x00000004.
e030: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49  #define SQLITE_I
e040: 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 20 20 20  OCAP_ATOMIC2K   
e050: 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30              0x00
e060: 30 30 30 30 30 38 0a 23 64 65 66 69 6e 65 20 53  000008.#define S
e070: 51 4c 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d  QLITE_IOCAP_ATOM
e080: 49 43 34 4b 20 20 20 20 20 20 20 20 20 20 20 20  IC4K            
e090: 20 20 20 30 78 30 30 30 30 30 30 31 30 0a 23 64     0x00000010.#d
e0a0: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43  efine SQLITE_IOC
e0b0: 41 50 5f 41 54 4f 4d 49 43 38 4b 20 20 20 20 20  AP_ATOMIC8K     
e0c0: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30            0x0000
e0d0: 30 30 32 30 0a 23 64 65 66 69 6e 65 20 53 51 4c  0020.#define SQL
e0e0: 49 54 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43  ITE_IOCAP_ATOMIC
e0f0: 31 36 4b 20 20 20 20 20 20 20 20 20 20 20 20 20  16K             
e100: 20 30 78 30 30 30 30 30 30 34 30 0a 23 64 65 66   0x00000040.#def
e110: 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50  ine SQLITE_IOCAP
e120: 5f 41 54 4f 4d 49 43 33 32 4b 20 20 20 20 20 20  _ATOMIC32K      
e130: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30          0x000000
e140: 38 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  80.#define SQLIT
e150: 45 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36 34  E_IOCAP_ATOMIC64
e160: 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30  K              0
e170: 78 30 30 30 30 30 31 30 30 0a 23 64 65 66 69 6e  x00000100.#defin
e180: 65 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53  e SQLITE_IOCAP_S
e190: 41 46 45 5f 41 50 50 45 4e 44 20 20 20 20 20 20  AFE_APPEND      
e1a0: 20 20 20 20 20 20 30 78 30 30 30 30 30 32 30 30        0x00000200
e1b0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e1c0: 49 4f 43 41 50 5f 53 45 51 55 45 4e 54 49 41 4c  IOCAP_SEQUENTIAL
e1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
e1e0: 30 30 30 30 34 30 30 0a 23 64 65 66 69 6e 65 20  0000400.#define 
e1f0: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44  SQLITE_IOCAP_UND
e200: 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50  ELETABLE_WHEN_OP
e210: 45 4e 20 20 30 78 30 30 30 30 30 38 30 30 0a 23  EN  0x00000800.#
e220: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f  define SQLITE_IO
e230: 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56  CAP_POWERSAFE_OV
e240: 45 52 57 52 49 54 45 20 20 20 20 30 78 30 30 30  ERWRITE    0x000
e250: 30 31 30 30 30 0a 23 64 65 66 69 6e 65 20 53 51  01000.#define SQ
e260: 4c 49 54 45 5f 49 4f 43 41 50 5f 49 4d 4d 55 54  LITE_IOCAP_IMMUT
e270: 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 20 20  ABLE            
e280: 20 20 30 78 30 30 30 30 32 30 30 30 0a 23 64 65    0x00002000.#de
e290: 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 4f 43 41  fine SQLITE_IOCA
e2a0: 50 5f 42 41 54 43 48 5f 41 54 4f 4d 49 43 20 20  P_BATCH_ATOMIC  
e2b0: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 34           0x00004
e2c0: 30 30 30 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  000../*.** CAPI3
e2d0: 52 45 46 3a 20 46 69 6c 65 20 4c 6f 63 6b 69 6e  REF: File Lockin
e2e0: 67 20 4c 65 76 65 6c 73 0a 2a 2a 0a 2a 2a 20 53  g Levels.**.** S
e2f0: 51 4c 69 74 65 20 75 73 65 73 20 6f 6e 65 20 6f  QLite uses one o
e300: 66 20 74 68 65 73 65 20 69 6e 74 65 67 65 72 20  f these integer 
e310: 76 61 6c 75 65 73 20 61 73 20 74 68 65 20 73 65  values as the se
e320: 63 6f 6e 64 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  cond.** argument
e330: 20 74 6f 20 63 61 6c 6c 73 20 69 74 20 6d 61 6b   to calls it mak
e340: 65 73 20 74 6f 20 74 68 65 20 78 4c 6f 63 6b 28  es to the xLock(
e350: 29 20 61 6e 64 20 78 55 6e 6c 6f 63 6b 28 29 20  ) and xUnlock() 
e360: 6d 65 74 68 6f 64 73 0a 2a 2a 20 6f 66 20 61 6e  methods.** of an
e370: 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
e380: 68 6f 64 73 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2f  hods] object..*/
e390: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e3a0: 4c 4f 43 4b 5f 4e 4f 4e 45 20 20 20 20 20 20 20  LOCK_NONE       
e3b0: 20 20 20 30 0a 23 64 65 66 69 6e 65 20 53 51 4c     0.#define SQL
e3c0: 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44 20  ITE_LOCK_SHARED 
e3d0: 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65         1.#define
e3e0: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 52 45 53   SQLITE_LOCK_RES
e3f0: 45 52 56 45 44 20 20 20 20 20 20 32 0a 23 64 65  ERVED      2.#de
e400: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
e410: 5f 50 45 4e 44 49 4e 47 20 20 20 20 20 20 20 33  _PENDING       3
e420: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
e430: 4c 4f 43 4b 5f 45 58 43 4c 55 53 49 56 45 20 20  LOCK_EXCLUSIVE  
e440: 20 20 20 34 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49     4../*.** CAPI
e450: 33 52 45 46 3a 20 53 79 6e 63 68 72 6f 6e 69 7a  3REF: Synchroniz
e460: 61 74 69 6f 6e 20 54 79 70 65 20 46 6c 61 67 73  ation Type Flags
e470: 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 53 51 4c 69  .**.** When SQLi
e480: 74 65 20 69 6e 76 6f 6b 65 73 20 74 68 65 20 78  te invokes the x
e490: 53 79 6e 63 28 29 20 6d 65 74 68 6f 64 20 6f 66  Sync() method of
e4a0: 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   an.** [sqlite3_
e4b0: 69 6f 5f 6d 65 74 68 6f 64 73 5d 20 6f 62 6a 65  io_methods] obje
e4c0: 63 74 20 69 74 20 75 73 65 73 20 61 20 63 6f 6d  ct it uses a com
e4d0: 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20 74  bination of.** t
e4e0: 68 65 73 65 20 69 6e 74 65 67 65 72 20 76 61 6c  hese integer val
e4f0: 75 65 73 20 61 73 20 74 68 65 20 73 65 63 6f 6e  ues as the secon
e500: 64 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a  d argument..**.*
e510: 2a 20 57 68 65 6e 20 74 68 65 20 53 51 4c 49 54  * When the SQLIT
e520: 45 5f 53 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 20  E_SYNC_DATAONLY 
e530: 66 6c 61 67 20 69 73 20 75 73 65 64 2c 20 69 74  flag is used, it
e540: 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 0a   means that the.
e550: 2a 2a 20 73 79 6e 63 20 6f 70 65 72 61 74 69 6f  ** sync operatio
e560: 6e 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f 20  n only needs to 
e570: 66 6c 75 73 68 20 64 61 74 61 20 74 6f 20 6d 61  flush data to ma
e580: 73 73 20 73 74 6f 72 61 67 65 2e 20 20 49 6e 6f  ss storage.  Ino
e590: 64 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f  de.** informatio
e5a0: 6e 20 6e 65 65 64 20 6e 6f 74 20 62 65 20 66 6c  n need not be fl
e5b0: 75 73 68 65 64 2e 20 49 66 20 74 68 65 20 6c 6f  ushed. If the lo
e5c0: 77 65 72 20 66 6f 75 72 20 62 69 74 73 20 6f 66  wer four bits of
e5d0: 20 74 68 65 20 66 6c 61 67 0a 2a 2a 20 65 71 75   the flag.** equ
e5e0: 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e  al SQLITE_SYNC_N
e5f0: 4f 52 4d 41 4c 2c 20 74 68 61 74 20 6d 65 61 6e  ORMAL, that mean
e600: 73 20 74 6f 20 75 73 65 20 6e 6f 72 6d 61 6c 20  s to use normal 
e610: 66 73 79 6e 63 28 29 20 73 65 6d 61 6e 74 69 63  fsync() semantic
e620: 73 2e 0a 2a 2a 20 49 66 20 74 68 65 20 6c 6f 77  s..** If the low
e630: 65 72 20 66 6f 75 72 20 62 69 74 73 20 65 71 75  er four bits equ
e640: 61 6c 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 46  al SQLITE_SYNC_F
e650: 55 4c 4c 2c 20 74 68 61 74 20 6d 65 61 6e 73 0a  ULL, that means.
e660: 2a 2a 20 74 6f 20 75 73 65 20 4d 61 63 20 4f 53  ** to use Mac OS
e670: 20 58 20 73 74 79 6c 65 20 66 75 6c 6c 73 79 6e   X style fullsyn
e680: 63 20 69 6e 73 74 65 61 64 20 6f 66 20 66 73 79  c instead of fsy
e690: 6e 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 44 6f 20 6e  nc()..**.** Do n
e6a0: 6f 74 20 63 6f 6e 66 75 73 65 20 74 68 65 20 53  ot confuse the S
e6b0: 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f 52 4d 41  QLITE_SYNC_NORMA
e6c0: 4c 20 61 6e 64 20 53 51 4c 49 54 45 5f 53 59 4e  L and SQLITE_SYN
e6d0: 43 5f 46 55 4c 4c 20 66 6c 61 67 73 0a 2a 2a 20  C_FULL flags.** 
e6e0: 77 69 74 68 20 74 68 65 20 5b 50 52 41 47 4d 41  with the [PRAGMA
e6f0: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 4e 4f   synchronous]=NO
e700: 52 4d 41 4c 20 61 6e 64 20 5b 50 52 41 47 4d 41  RMAL and [PRAGMA
e710: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 5d 3d 46 55   synchronous]=FU
e720: 4c 4c 0a 2a 2a 20 73 65 74 74 69 6e 67 73 2e 20  LL.** settings. 
e730: 20 54 68 65 20 5b 73 79 6e 63 68 72 6f 6e 6f 75   The [synchronou
e740: 73 20 70 72 61 67 6d 61 5d 20 64 65 74 65 72 6d  s pragma] determ
e750: 69 6e 65 73 20 77 68 65 6e 20 63 61 6c 6c 73 20  ines when calls 
e760: 74 6f 20 74 68 65 0a 2a 2a 20 78 53 79 6e 63 20  to the.** xSync 
e770: 56 46 53 20 6d 65 74 68 6f 64 20 6f 63 63 75 72  VFS method occur
e780: 20 61 6e 64 20 61 70 70 6c 69 65 73 20 75 6e 69   and applies uni
e790: 66 6f 72 6d 6c 79 20 61 63 72 6f 73 73 20 61 6c  formly across al
e7a0: 6c 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 2a 2a 20  l platforms..** 
e7b0: 54 68 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  The SQLITE_SYNC_
e7c0: 4e 4f 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54  NORMAL and SQLIT
e7d0: 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 66 6c 61 67  E_SYNC_FULL flag
e7e0: 73 20 64 65 74 65 72 6d 69 6e 65 20 68 6f 77 0a  s determine how.
e7f0: 2a 2a 20 65 6e 65 72 67 65 74 69 63 20 6f 72 20  ** energetic or 
e800: 72 69 67 6f 72 6f 75 73 20 6f 72 20 66 6f 72 63  rigorous or forc
e810: 65 66 75 6c 20 74 68 65 20 73 79 6e 63 20 6f 70  eful the sync op
e820: 65 72 61 74 69 6f 6e 73 20 61 72 65 20 61 6e 64  erations are and
e830: 0a 2a 2a 20 6f 6e 6c 79 20 6d 61 6b 65 20 61 20  .** only make a 
e840: 64 69 66 66 65 72 65 6e 63 65 20 6f 6e 20 4d 61  difference on Ma
e850: 63 20 4f 53 58 20 66 6f 72 20 74 68 65 20 64 65  c OSX for the de
e860: 66 61 75 6c 74 20 53 51 4c 69 74 65 20 63 6f 64  fault SQLite cod
e870: 65 2e 0a 2a 2a 20 28 54 68 69 72 64 2d 70 61 72  e..** (Third-par
e880: 74 79 20 56 46 53 20 69 6d 70 6c 65 6d 65 6e 74  ty VFS implement
e890: 61 74 69 6f 6e 73 20 6d 69 67 68 74 20 61 6c 73  ations might als
e8a0: 6f 20 6d 61 6b 65 20 74 68 65 20 64 69 73 74 69  o make the disti
e8b0: 6e 63 74 69 6f 6e 0a 2a 2a 20 62 65 74 77 65 65  nction.** betwee
e8c0: 6e 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f  n SQLITE_SYNC_NO
e8d0: 52 4d 41 4c 20 61 6e 64 20 53 51 4c 49 54 45 5f  RMAL and SQLITE_
e8e0: 53 59 4e 43 5f 46 55 4c 4c 2c 20 62 75 74 20 61  SYNC_FULL, but a
e8f0: 6d 6f 6e 67 20 74 68 65 0a 2a 2a 20 6f 70 65 72  mong the.** oper
e900: 61 74 69 6e 67 20 73 79 73 74 65 6d 73 20 6e 61  ating systems na
e910: 74 69 76 65 6c 79 20 73 75 70 70 6f 72 74 65 64  tively supported
e920: 20 62 79 20 53 51 4c 69 74 65 2c 20 6f 6e 6c 79   by SQLite, only
e930: 20 4d 61 63 20 4f 53 58 0a 2a 2a 20 63 61 72 65   Mac OSX.** care
e940: 73 20 61 62 6f 75 74 20 74 68 65 20 64 69 66 66  s about the diff
e950: 65 72 65 6e 63 65 2e 29 0a 2a 2f 0a 23 64 65 66  erence.).*/.#def
e960: 69 6e 65 20 53 51 4c 49 54 45 5f 53 59 4e 43 5f  ine SQLITE_SYNC_
e970: 4e 4f 52 4d 41 4c 20 20 20 20 20 20 20 20 30 78  NORMAL        0x
e980: 30 30 30 30 32 0a 23 64 65 66 69 6e 65 20 53 51  00002.#define SQ
e990: 4c 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 20 20  LITE_SYNC_FULL  
e9a0: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 33 0a          0x00003.
e9b0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
e9c0: 59 4e 43 5f 44 41 54 41 4f 4e 4c 59 20 20 20 20  YNC_DATAONLY    
e9d0: 20 20 30 78 30 30 30 31 30 0a 0a 2f 2a 0a 2a 2a    0x00010../*.**
e9e0: 20 43 41 50 49 33 52 45 46 3a 20 4f 53 20 49 6e   CAPI3REF: OS In
e9f0: 74 65 72 66 61 63 65 20 4f 70 65 6e 20 46 69 6c  terface Open Fil
ea00: 65 20 48 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 41  e Handle.**.** A
ea10: 6e 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d  n [sqlite3_file]
ea20: 20 6f 62 6a 65 63 74 20 72 65 70 72 65 73 65 6e   object represen
ea30: 74 73 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65 20  ts an open file 
ea40: 69 6e 20 74 68 65 20 0a 2a 2a 20 5b 73 71 6c 69  in the .** [sqli
ea50: 74 65 33 5f 76 66 73 20 7c 20 4f 53 20 69 6e 74  te3_vfs | OS int
ea60: 65 72 66 61 63 65 20 6c 61 79 65 72 5d 2e 20 20  erface layer].  
ea70: 49 6e 64 69 76 69 64 75 61 6c 20 4f 53 20 69 6e  Individual OS in
ea80: 74 65 72 66 61 63 65 0a 2a 2a 20 69 6d 70 6c 65  terface.** imple
ea90: 6d 65 6e 74 61 74 69 6f 6e 73 20 77 69 6c 6c 0a  mentations will.
eaa0: 2a 2a 20 77 61 6e 74 20 74 6f 20 73 75 62 63 6c  ** want to subcl
eab0: 61 73 73 20 74 68 69 73 20 6f 62 6a 65 63 74 20  ass this object 
eac0: 62 79 20 61 70 70 65 6e 64 69 6e 67 20 61 64 64  by appending add
ead0: 69 74 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a 2a  itional fields.*
eae0: 2a 20 66 6f 72 20 74 68 65 69 72 20 6f 77 6e 20  * for their own 
eaf0: 75 73 65 2e 20 20 54 68 65 20 70 4d 65 74 68 6f  use.  The pMetho
eb00: 64 73 20 65 6e 74 72 79 20 69 73 20 61 20 70 6f  ds entry is a po
eb10: 69 6e 74 65 72 20 74 6f 20 61 6e 0a 2a 2a 20 5b  inter to an.** [
eb20: 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f  sqlite3_io_metho
eb30: 64 73 5d 20 6f 62 6a 65 63 74 20 74 68 61 74 20  ds] object that 
eb40: 64 65 66 69 6e 65 73 20 6d 65 74 68 6f 64 73 20  defines methods 
eb50: 66 6f 72 20 70 65 72 66 6f 72 6d 69 6e 67 0a 2a  for performing.*
eb60: 2a 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73  * I/O operations
eb70: 20 6f 6e 20 74 68 65 20 6f 70 65 6e 20 66 69 6c   on the open fil
eb80: 65 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74  e..*/.typedef st
eb90: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 66 69 6c  ruct sqlite3_fil
eba0: 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 3b 0a  e sqlite3_file;.
ebb0: 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 66  struct sqlite3_f
ebc0: 69 6c 65 20 7b 0a 20 20 63 6f 6e 73 74 20 73 74  ile {.  const st
ebd0: 72 75 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f  ruct sqlite3_io_
ebe0: 6d 65 74 68 6f 64 73 20 2a 70 4d 65 74 68 6f 64  methods *pMethod
ebf0: 73 3b 20 20 2f 2a 20 4d 65 74 68 6f 64 73 20 66  s;  /* Methods f
ec00: 6f 72 20 61 6e 20 6f 70 65 6e 20 66 69 6c 65 20  or an open file 
ec10: 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  */.};../*.** CAP
ec20: 49 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66  I3REF: OS Interf
ec30: 61 63 65 20 46 69 6c 65 20 56 69 72 74 75 61 6c  ace File Virtual
ec40: 20 4d 65 74 68 6f 64 73 20 4f 62 6a 65 63 74 0a   Methods Object.
ec50: 2a 2a 0a 2a 2a 20 45 76 65 72 79 20 66 69 6c 65  **.** Every file
ec60: 20 6f 70 65 6e 65 64 20 62 79 20 74 68 65 20 5b   opened by the [
ec70: 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65  sqlite3_vfs.xOpe
ec80: 6e 5d 20 6d 65 74 68 6f 64 20 70 6f 70 75 6c 61  n] method popula
ec90: 74 65 73 20 61 6e 0a 2a 2a 20 5b 73 71 6c 69 74  tes an.** [sqlit
eca0: 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20  e3_file] object 
ecb0: 28 6f 72 2c 20 6d 6f 72 65 20 63 6f 6d 6d 6f 6e  (or, more common
ecc0: 6c 79 2c 20 61 20 73 75 62 63 6c 61 73 73 20 6f  ly, a subclass o
ecd0: 66 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65  f the.** [sqlite
ece0: 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 29 20  3_file] object) 
ecf0: 77 69 74 68 20 61 20 70 6f 69 6e 74 65 72 20 74  with a pointer t
ed00: 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  o an instance of
ed10: 20 74 68 69 73 20 6f 62 6a 65 63 74 2e 0a 2a 2a   this object..**
ed20: 20 54 68 69 73 20 6f 62 6a 65 63 74 20 64 65 66   This object def
ed30: 69 6e 65 73 20 74 68 65 20 6d 65 74 68 6f 64 73  ines the methods
ed40: 20 75 73 65 64 20 74 6f 20 70 65 72 66 6f 72 6d   used to perform
ed50: 20 76 61 72 69 6f 75 73 20 6f 70 65 72 61 74 69   various operati
ed60: 6f 6e 73 0a 2a 2a 20 61 67 61 69 6e 73 74 20 74  ons.** against t
ed70: 68 65 20 6f 70 65 6e 20 66 69 6c 65 20 72 65 70  he open file rep
ed80: 72 65 73 65 6e 74 65 64 20 62 79 20 74 68 65 20  resented by the 
ed90: 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f  [sqlite3_file] o
eda0: 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  bject..**.** If 
edb0: 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  the [sqlite3_vfs
edc0: 2e 78 4f 70 65 6e 5d 20 6d 65 74 68 6f 64 20 73  .xOpen] method s
edd0: 65 74 73 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ets the sqlite3_
ede0: 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65 6c  file.pMethods el
edf0: 65 6d 65 6e 74 20 0a 2a 2a 20 74 6f 20 61 20 6e  ement .** to a n
ee00: 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c  on-NULL pointer,
ee10: 20 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74 65   then the sqlite
ee20: 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 2e 78 43 6c  3_io_methods.xCl
ee30: 6f 73 65 20 6d 65 74 68 6f 64 0a 2a 2a 20 6d 61  ose method.** ma
ee40: 79 20 62 65 20 69 6e 76 6f 6b 65 64 20 65 76 65  y be invoked eve
ee50: 6e 20 69 66 20 74 68 65 20 5b 73 71 6c 69 74 65  n if the [sqlite
ee60: 33 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 72 65 70  3_vfs.xOpen] rep
ee70: 6f 72 74 65 64 20 74 68 61 74 20 69 74 20 66 61  orted that it fa
ee80: 69 6c 65 64 2e 20 20 54 68 65 0a 2a 2a 20 6f 6e  iled.  The.** on
ee90: 6c 79 20 77 61 79 20 74 6f 20 70 72 65 76 65 6e  ly way to preven
eea0: 74 20 61 20 63 61 6c 6c 20 74 6f 20 78 43 6c 6f  t a call to xClo
eeb0: 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 66  se following a f
eec0: 61 69 6c 65 64 20 5b 73 71 6c 69 74 65 33 5f 76  ailed [sqlite3_v
eed0: 66 73 2e 78 4f 70 65 6e 5d 0a 2a 2a 20 69 73 20  fs.xOpen].** is 
eee0: 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74 65 33  for the [sqlite3
eef0: 5f 76 66 73 2e 78 4f 70 65 6e 5d 20 74 6f 20 73  _vfs.xOpen] to s
ef00: 65 74 20 74 68 65 20 73 71 6c 69 74 65 33 5f 66  et the sqlite3_f
ef10: 69 6c 65 2e 70 4d 65 74 68 6f 64 73 20 65 6c 65  ile.pMethods ele
ef20: 6d 65 6e 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c 2e  ment.** to NULL.
ef30: 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6c 61 67 73  .**.** The flags
ef40: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 78 53 79   argument to xSy
ef50: 6e 63 20 6d 61 79 20 62 65 20 6f 6e 65 20 6f 66  nc may be one of
ef60: 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 4e 4f   [SQLITE_SYNC_NO
ef70: 52 4d 41 4c 5d 20 6f 72 0a 2a 2a 20 5b 53 51 4c  RMAL] or.** [SQL
ef80: 49 54 45 5f 53 59 4e 43 5f 46 55 4c 4c 5d 2e 20  ITE_SYNC_FULL]. 
ef90: 20 54 68 65 20 66 69 72 73 74 20 63 68 6f 69 63   The first choic
efa0: 65 20 69 73 20 74 68 65 20 6e 6f 72 6d 61 6c 20  e is the normal 
efb0: 66 73 79 6e 63 28 29 2e 0a 2a 2a 20 54 68 65 20  fsync()..** The 
efc0: 73 65 63 6f 6e 64 20 63 68 6f 69 63 65 20 69 73  second choice is
efd0: 20 61 20 4d 61 63 20 4f 53 20 58 20 73 74 79 6c   a Mac OS X styl
efe0: 65 20 66 75 6c 6c 73 79 6e 63 2e 20 20 54 68 65  e fullsync.  The
eff0: 20 5b 53 51 4c 49 54 45 5f 53 59 4e 43 5f 44 41   [SQLITE_SYNC_DA
f000: 54 41 4f 4e 4c 59 5d 0a 2a 2a 20 66 6c 61 67 20  TAONLY].** flag 
f010: 6d 61 79 20 62 65 20 4f 52 65 64 20 69 6e 20 74  may be ORed in t
f020: 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 20  o indicate that 
f030: 6f 6e 6c 79 20 74 68 65 20 64 61 74 61 20 6f 66  only the data of
f040: 20 74 68 65 20 66 69 6c 65 0a 2a 2a 20 61 6e 64   the file.** and
f050: 20 6e 6f 74 20 69 74 73 20 69 6e 6f 64 65 20 6e   not its inode n
f060: 65 65 64 73 20 74 6f 20 62 65 20 73 79 6e 63 65  eeds to be synce
f070: 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 74  d..**.** The int
f080: 65 67 65 72 20 76 61 6c 75 65 73 20 74 6f 20 78  eger values to x
f090: 4c 6f 63 6b 28 29 20 61 6e 64 20 78 55 6e 6c 6f  Lock() and xUnlo
f0a0: 63 6b 28 29 20 61 72 65 20 6f 6e 65 20 6f 66 0a  ck() are one of.
f0b0: 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ul>.** <li> 
f0c0: 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e  [SQLITE_LOCK_NON
f0d0: 45 5d 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  E],.** <li> [SQL
f0e0: 49 54 45 5f 4c 4f 43 4b 5f 53 48 41 52 45 44 5d  ITE_LOCK_SHARED]
f0f0: 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ,.** <li> [SQLIT
f100: 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44 5d  E_LOCK_RESERVED]
f110: 2c 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ,.** <li> [SQLIT
f120: 45 5f 4c 4f 43 4b 5f 50 45 4e 44 49 4e 47 5d 2c  E_LOCK_PENDING],
f130: 20 6f 72 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c   or.** <li> [SQL
f140: 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49  ITE_LOCK_EXCLUSI
f150: 56 45 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a  VE]..** </ul>.**
f160: 20 78 4c 6f 63 6b 28 29 20 69 6e 63 72 65 61 73   xLock() increas
f170: 65 73 20 74 68 65 20 6c 6f 63 6b 2e 20 78 55 6e  es the lock. xUn
f180: 6c 6f 63 6b 28 29 20 64 65 63 72 65 61 73 65 73  lock() decreases
f190: 20 74 68 65 20 6c 6f 63 6b 2e 0a 2a 2a 20 54 68   the lock..** Th
f1a0: 65 20 78 43 68 65 63 6b 52 65 73 65 72 76 65 64  e xCheckReserved
f1b0: 4c 6f 63 6b 28 29 20 6d 65 74 68 6f 64 20 63 68  Lock() method ch
f1c0: 65 63 6b 73 20 77 68 65 74 68 65 72 20 61 6e 79  ecks whether any
f1d0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
f1e0: 74 69 6f 6e 2c 0a 2a 2a 20 65 69 74 68 65 72 20  tion,.** either 
f1f0: 69 6e 20 74 68 69 73 20 70 72 6f 63 65 73 73 20  in this process 
f200: 6f 72 20 69 6e 20 73 6f 6d 65 20 6f 74 68 65 72  or in some other
f210: 20 70 72 6f 63 65 73 73 2c 20 69 73 20 68 6f 6c   process, is hol
f220: 64 69 6e 67 20 61 20 52 45 53 45 52 56 45 44 2c  ding a RESERVED,
f230: 0a 2a 2a 20 50 45 4e 44 49 4e 47 2c 20 6f 72 20  .** PENDING, or 
f240: 45 58 43 4c 55 53 49 56 45 20 6c 6f 63 6b 20 6f  EXCLUSIVE lock o
f250: 6e 20 74 68 65 20 66 69 6c 65 2e 20 20 49 74 20  n the file.  It 
f260: 72 65 74 75 72 6e 73 20 74 72 75 65 0a 2a 2a 20  returns true.** 
f270: 69 66 20 73 75 63 68 20 61 20 6c 6f 63 6b 20 65  if such a lock e
f280: 78 69 73 74 73 20 61 6e 64 20 66 61 6c 73 65 20  xists and false 
f290: 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 0a 2a 2a  otherwise..**.**
f2a0: 20 54 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f   The xFileContro
f2b0: 6c 28 29 20 6d 65 74 68 6f 64 20 69 73 20 61 20  l() method is a 
f2c0: 67 65 6e 65 72 69 63 20 69 6e 74 65 72 66 61 63  generic interfac
f2d0: 65 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 63 75  e that allows cu
f2e0: 73 74 6f 6d 0a 2a 2a 20 56 46 53 20 69 6d 70 6c  stom.** VFS impl
f2f0: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 74 6f 20 64  ementations to d
f300: 69 72 65 63 74 6c 79 20 63 6f 6e 74 72 6f 6c 20  irectly control 
f310: 61 6e 20 6f 70 65 6e 20 66 69 6c 65 20 75 73 69  an open file usi
f320: 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69 74  ng the.** [sqlit
f330: 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
f340: 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 54  )] interface.  T
f350: 68 65 20 73 65 63 6f 6e 64 20 22 6f 70 22 20 61  he second "op" a
f360: 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 0a 2a 2a  rgument is an.**
f370: 20 69 6e 74 65 67 65 72 20 6f 70 63 6f 64 65 2e   integer opcode.
f380: 20 20 54 68 65 20 74 68 69 72 64 20 61 72 67 75    The third argu
f390: 6d 65 6e 74 20 69 73 20 61 20 67 65 6e 65 72 69  ment is a generi
f3a0: 63 20 70 6f 69 6e 74 65 72 20 69 6e 74 65 6e 64  c pointer intend
f3b0: 65 64 20 74 6f 0a 2a 2a 20 70 6f 69 6e 74 20 74  ed to.** point t
f3c0: 6f 20 61 20 73 74 72 75 63 74 75 72 65 20 74 68  o a structure th
f3d0: 61 74 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 61  at may contain a
f3e0: 72 67 75 6d 65 6e 74 73 20 6f 72 20 73 70 61 63  rguments or spac
f3f0: 65 20 69 6e 20 77 68 69 63 68 20 74 6f 0a 2a 2a  e in which to.**
f400: 20 77 72 69 74 65 20 72 65 74 75 72 6e 20 76 61   write return va
f410: 6c 75 65 73 2e 20 20 50 6f 74 65 6e 74 69 61 6c  lues.  Potential
f420: 20 75 73 65 73 20 66 6f 72 20 78 46 69 6c 65 43   uses for xFileC
f430: 6f 6e 74 72 6f 6c 28 29 20 6d 69 67 68 74 20 62  ontrol() might b
f440: 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 73 20 74  e.** functions t
f450: 6f 20 65 6e 61 62 6c 65 20 62 6c 6f 63 6b 69 6e  o enable blockin
f460: 67 20 6c 6f 63 6b 73 20 77 69 74 68 20 74 69 6d  g locks with tim
f470: 65 6f 75 74 73 2c 20 74 6f 20 63 68 61 6e 67 65  eouts, to change
f480: 20 74 68 65 0a 2a 2a 20 6c 6f 63 6b 69 6e 67 20   the.** locking 
f490: 73 74 72 61 74 65 67 79 20 28 66 6f 72 20 65 78  strategy (for ex
f4a0: 61 6d 70 6c 65 20 74 6f 20 75 73 65 20 64 6f 74  ample to use dot
f4b0: 2d 66 69 6c 65 20 6c 6f 63 6b 73 29 2c 20 74 6f  -file locks), to
f4c0: 20 69 6e 71 75 69 72 65 0a 2a 2a 20 61 62 6f 75   inquire.** abou
f4d0: 74 20 74 68 65 20 73 74 61 74 75 73 20 6f 66 20  t the status of 
f4e0: 61 20 6c 6f 63 6b 2c 20 6f 72 20 74 6f 20 62 72  a lock, or to br
f4f0: 65 61 6b 20 73 74 61 6c 65 20 6c 6f 63 6b 73 2e  eak stale locks.
f500: 20 20 54 68 65 20 53 51 4c 69 74 65 0a 2a 2a 20    The SQLite.** 
f510: 63 6f 72 65 20 72 65 73 65 72 76 65 73 20 61 6c  core reserves al
f520: 6c 20 6f 70 63 6f 64 65 73 20 6c 65 73 73 20 74  l opcodes less t
f530: 68 61 6e 20 31 30 30 20 66 6f 72 20 69 74 73 20  han 100 for its 
f540: 6f 77 6e 20 75 73 65 2e 0a 2a 2a 20 41 20 5b 66  own use..** A [f
f550: 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f  ile control opco
f560: 64 65 73 20 7c 20 6c 69 73 74 20 6f 66 20 6f 70  des | list of op
f570: 63 6f 64 65 73 5d 20 6c 65 73 73 20 74 68 61 6e  codes] less than
f580: 20 31 30 30 20 69 73 20 61 76 61 69 6c 61 62 6c   100 is availabl
f590: 65 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f  e..** Applicatio
f5a0: 6e 73 20 74 68 61 74 20 64 65 66 69 6e 65 20 61  ns that define a
f5b0: 20 63 75 73 74 6f 6d 20 78 46 69 6c 65 43 6f 6e   custom xFileCon
f5c0: 74 72 6f 6c 20 6d 65 74 68 6f 64 20 73 68 6f 75  trol method shou
f5d0: 6c 64 20 75 73 65 20 6f 70 63 6f 64 65 73 0a 2a  ld use opcodes.*
f5e0: 2a 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 31  * greater than 1
f5f0: 30 30 20 74 6f 20 61 76 6f 69 64 20 63 6f 6e 66  00 to avoid conf
f600: 6c 69 63 74 73 2e 20 20 56 46 53 20 69 6d 70 6c  licts.  VFS impl
f610: 65 6d 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75  ementations shou
f620: 6c 64 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51  ld.** return [SQ
f630: 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d 20 66  LITE_NOTFOUND] f
f640: 6f 72 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  or file control 
f650: 6f 70 63 6f 64 65 73 20 74 68 61 74 20 74 68 65  opcodes that the
f660: 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20 72 65 63 6f  y do not.** reco
f670: 67 6e 69 7a 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  gnize..**.** The
f680: 20 78 53 65 63 74 6f 72 53 69 7a 65 28 29 20 6d   xSectorSize() m
f690: 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 74 68  ethod returns th
f6a0: 65 20 73 65 63 74 6f 72 20 73 69 7a 65 20 6f 66  e sector size of
f6b0: 20 74 68 65 0a 2a 2a 20 64 65 76 69 63 65 20 74   the.** device t
f6c0: 68 61 74 20 75 6e 64 65 72 6c 69 65 73 20 74 68  hat underlies th
f6d0: 65 20 66 69 6c 65 2e 20 20 54 68 65 20 73 65 63  e file.  The sec
f6e0: 74 6f 72 20 73 69 7a 65 20 69 73 20 74 68 65 0a  tor size is the.
f6f0: 2a 2a 20 6d 69 6e 69 6d 75 6d 20 77 72 69 74 65  ** minimum write
f700: 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 65 72   that can be per
f710: 66 6f 72 6d 65 64 20 77 69 74 68 6f 75 74 20 64  formed without d
f720: 69 73 74 75 72 62 69 6e 67 0a 2a 2a 20 6f 74 68  isturbing.** oth
f730: 65 72 20 62 79 74 65 73 20 69 6e 20 74 68 65 20  er bytes in the 
f740: 66 69 6c 65 2e 20 20 54 68 65 20 78 44 65 76 69  file.  The xDevi
f750: 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69 63  ceCharacteristic
f760: 73 28 29 0a 2a 2a 20 6d 65 74 68 6f 64 20 72 65  s().** method re
f770: 74 75 72 6e 73 20 61 20 62 69 74 20 76 65 63 74  turns a bit vect
f780: 6f 72 20 64 65 73 63 72 69 62 69 6e 67 20 62 65  or describing be
f790: 68 61 76 69 6f 72 73 20 6f 66 20 74 68 65 0a 2a  haviors of the.*
f7a0: 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 64 65 76  * underlying dev
f7b0: 69 63 65 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  ice:.**.** <ul>.
f7c0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f7d0: 49 4f 43 41 50 5f 41 54 4f 4d 49 43 5d 0a 2a 2a  IOCAP_ATOMIC].**
f7e0: 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49 4f   <li> [SQLITE_IO
f7f0: 43 41 50 5f 41 54 4f 4d 49 43 35 31 32 5d 0a 2a  CAP_ATOMIC512].*
f800: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f810: 4f 43 41 50 5f 41 54 4f 4d 49 43 31 4b 5d 0a 2a  OCAP_ATOMIC1K].*
f820: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f830: 4f 43 41 50 5f 41 54 4f 4d 49 43 32 4b 5d 0a 2a  OCAP_ATOMIC2K].*
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 34 4b 5d 0a 2a  OCAP_ATOMIC4K].*
f860: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f870: 4f 43 41 50 5f 41 54 4f 4d 49 43 38 4b 5d 0a 2a  OCAP_ATOMIC8K].*
f880: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f890: 4f 43 41 50 5f 41 54 4f 4d 49 43 31 36 4b 5d 0a  OCAP_ATOMIC16K].
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 33 32 4b 5d  IOCAP_ATOMIC32K]
f8c0: 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45  .** <li> [SQLITE
f8d0: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 36 34 4b  _IOCAP_ATOMIC64K
f8e0: 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54  ].** <li> [SQLIT
f8f0: 45 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50  E_IOCAP_SAFE_APP
f900: 45 4e 44 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51  END].** <li> [SQ
f910: 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45 51 55 45  LITE_IOCAP_SEQUE
f920: 4e 54 49 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b  NTIAL].** <li> [
f930: 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 55 4e 44  SQLITE_IOCAP_UND
f940: 45 4c 45 54 41 42 4c 45 5f 57 48 45 4e 5f 4f 50  ELETABLE_WHEN_OP
f950: 45 4e 5d 0a 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c  EN].** <li> [SQL
f960: 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53  ITE_IOCAP_POWERS
f970: 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 0a 2a  AFE_OVERWRITE].*
f980: 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 49  * <li> [SQLITE_I
f990: 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d 0a  OCAP_IMMUTABLE].
f9a0: 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
f9b0: 49 4f 43 41 50 5f 42 41 54 43 48 5f 41 54 4f 4d  IOCAP_BATCH_ATOM
f9c0: 49 43 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a  IC].** </ul>.**.
f9d0: 2a 2a 20 54 68 65 20 53 51 4c 49 54 45 5f 49 4f  ** The SQLITE_IO
f9e0: 43 41 50 5f 41 54 4f 4d 49 43 20 70 72 6f 70 65  CAP_ATOMIC prope
f9f0: 72 74 79 20 6d 65 61 6e 73 20 74 68 61 74 20 61  rty means that a
fa00: 6c 6c 20 77 72 69 74 65 73 20 6f 66 0a 2a 2a 20  ll writes of.** 
fa10: 61 6e 79 20 73 69 7a 65 20 61 72 65 20 61 74 6f  any size are ato
fa20: 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54 45  mic.  The SQLITE
fa30: 5f 49 4f 43 41 50 5f 41 54 4f 4d 49 43 6e 6e 6e  _IOCAP_ATOMICnnn
fa40: 20 76 61 6c 75 65 73 0a 2a 2a 20 6d 65 61 6e 20   values.** mean 
fa50: 74 68 61 74 20 77 72 69 74 65 73 20 6f 66 20 62  that writes of b
fa60: 6c 6f 63 6b 73 20 74 68 61 74 20 61 72 65 20 6e  locks that are n
fa70: 6e 6e 20 62 79 74 65 73 20 69 6e 20 73 69 7a 65  nn bytes in size
fa80: 20 61 6e 64 0a 2a 2a 20 61 72 65 20 61 6c 69 67   and.** are alig
fa90: 6e 65 64 20 74 6f 20 61 6e 20 61 64 64 72 65 73  ned to an addres
faa0: 73 20 77 68 69 63 68 20 69 73 20 61 6e 20 69 6e  s which is an in
fab0: 74 65 67 65 72 20 6d 75 6c 74 69 70 6c 65 20 6f  teger multiple o
fac0: 66 0a 2a 2a 20 6e 6e 6e 20 61 72 65 20 61 74 6f  f.** nnn are ato
fad0: 6d 69 63 2e 20 20 54 68 65 20 53 51 4c 49 54 45  mic.  The SQLITE
fae0: 5f 49 4f 43 41 50 5f 53 41 46 45 5f 41 50 50 45  _IOCAP_SAFE_APPE
faf0: 4e 44 20 76 61 6c 75 65 20 6d 65 61 6e 73 0a 2a  ND value means.*
fb00: 2a 20 74 68 61 74 20 77 68 65 6e 20 64 61 74 61  * that when data
fb10: 20 69 73 20 61 70 70 65 6e 64 65 64 20 74 6f 20   is appended to 
fb20: 61 20 66 69 6c 65 2c 20 74 68 65 20 64 61 74 61  a file, the data
fb30: 20 69 73 20 61 70 70 65 6e 64 65 64 0a 2a 2a 20   is appended.** 
fb40: 66 69 72 73 74 20 74 68 65 6e 20 74 68 65 20 73  first then the s
fb50: 69 7a 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20  ize of the file 
fb60: 69 73 20 65 78 74 65 6e 64 65 64 2c 20 6e 65 76  is extended, nev
fb70: 65 72 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a 20  er the other.** 
fb80: 77 61 79 20 61 72 6f 75 6e 64 2e 20 20 54 68 65  way around.  The
fb90: 20 53 51 4c 49 54 45 5f 49 4f 43 41 50 5f 53 45   SQLITE_IOCAP_SE
fba0: 51 55 45 4e 54 49 41 4c 20 70 72 6f 70 65 72 74  QUENTIAL propert
fbb0: 79 20 6d 65 61 6e 73 20 74 68 61 74 0a 2a 2a 20  y means that.** 
fbc0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 77  information is w
fbd0: 72 69 74 74 65 6e 20 74 6f 20 64 69 73 6b 20 69  ritten to disk i
fbe0: 6e 20 74 68 65 20 73 61 6d 65 20 6f 72 64 65 72  n the same order
fbf0: 20 61 73 20 63 61 6c 6c 73 0a 2a 2a 20 74 6f 20   as calls.** to 
fc00: 78 57 72 69 74 65 28 29 2e 0a 2a 2a 0a 2a 2a 20  xWrite()..**.** 
fc10: 49 66 20 78 52 65 61 64 28 29 20 72 65 74 75 72  If xRead() retur
fc20: 6e 73 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 5f  ns SQLITE_IOERR_
fc30: 53 48 4f 52 54 5f 52 45 41 44 20 69 74 20 6d 75  SHORT_READ it mu
fc40: 73 74 20 61 6c 73 6f 20 66 69 6c 6c 0a 2a 2a 20  st also fill.** 
fc50: 69 6e 20 74 68 65 20 75 6e 72 65 61 64 20 70 6f  in the unread po
fc60: 72 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 62 75  rtions of the bu
fc70: 66 66 65 72 20 77 69 74 68 20 7a 65 72 6f 73 2e  ffer with zeros.
fc80: 20 20 41 20 56 46 53 20 74 68 61 74 0a 2a 2a 20    A VFS that.** 
fc90: 66 61 69 6c 73 20 74 6f 20 7a 65 72 6f 2d 66 69  fails to zero-fi
fca0: 6c 6c 20 73 68 6f 72 74 20 72 65 61 64 73 20 6d  ll short reads m
fcb0: 69 67 68 74 20 73 65 65 6d 20 74 6f 20 77 6f 72  ight seem to wor
fcc0: 6b 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a 20  k.  However,.** 
fcd0: 66 61 69 6c 75 72 65 20 74 6f 20 7a 65 72 6f 2d  failure to zero-
fce0: 66 69 6c 6c 20 73 68 6f 72 74 20 72 65 61 64 73  fill short reads
fcf0: 20 77 69 6c 6c 20 65 76 65 6e 74 75 61 6c 6c 79   will eventually
fd00: 20 6c 65 61 64 20 74 6f 0a 2a 2a 20 64 61 74 61   lead to.** data
fd10: 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 2e  base corruption.
fd20: 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
fd30: 63 74 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  ct sqlite3_io_me
fd40: 74 68 6f 64 73 20 73 71 6c 69 74 65 33 5f 69 6f  thods sqlite3_io
fd50: 5f 6d 65 74 68 6f 64 73 3b 0a 73 74 72 75 63 74  _methods;.struct
fd60: 20 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68   sqlite3_io_meth
fd70: 6f 64 73 20 7b 0a 20 20 69 6e 74 20 69 56 65 72  ods {.  int iVer
fd80: 73 69 6f 6e 3b 0a 20 20 69 6e 74 20 28 2a 78 43  sion;.  int (*xC
fd90: 6c 6f 73 65 29 28 73 71 6c 69 74 65 33 5f 66 69  lose)(sqlite3_fi
fda0: 6c 65 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 52  le*);.  int (*xR
fdb0: 65 61 64 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  ead)(sqlite3_fil
fdc0: 65 2a 2c 20 76 6f 69 64 2a 2c 20 69 6e 74 20 69  e*, void*, int i
fdd0: 41 6d 74 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  Amt, sqlite3_int
fde0: 36 34 20 69 4f 66 73 74 29 3b 0a 20 20 69 6e 74  64 iOfst);.  int
fdf0: 20 28 2a 78 57 72 69 74 65 29 28 73 71 6c 69 74   (*xWrite)(sqlit
fe00: 65 33 5f 66 69 6c 65 2a 2c 20 63 6f 6e 73 74 20  e3_file*, const 
fe10: 76 6f 69 64 2a 2c 20 69 6e 74 20 69 41 6d 74 2c  void*, int iAmt,
fe20: 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 69   sqlite3_int64 i
fe30: 4f 66 73 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78  Ofst);.  int (*x
fe40: 54 72 75 6e 63 61 74 65 29 28 73 71 6c 69 74 65  Truncate)(sqlite
fe50: 33 5f 66 69 6c 65 2a 2c 20 73 71 6c 69 74 65 33  3_file*, sqlite3
fe60: 5f 69 6e 74 36 34 20 73 69 7a 65 29 3b 0a 20 20  _int64 size);.  
fe70: 69 6e 74 20 28 2a 78 53 79 6e 63 29 28 73 71 6c  int (*xSync)(sql
fe80: 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20  ite3_file*, int 
fe90: 66 6c 61 67 73 29 3b 0a 20 20 69 6e 74 20 28 2a  flags);.  int (*
fea0: 78 46 69 6c 65 53 69 7a 65 29 28 73 71 6c 69 74  xFileSize)(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 2a 70 53 69 7a 65 29 3b  3_int64 *pSize);
fed0: 0a 20 20 69 6e 74 20 28 2a 78 4c 6f 63 6b 29 28  .  int (*xLock)(
fee0: 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69  sqlite3_file*, i
fef0: 6e 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 55 6e  nt);.  int (*xUn
ff00: 6c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f 66 69  lock)(sqlite3_fi
ff10: 6c 65 2a 2c 20 69 6e 74 29 3b 0a 20 20 69 6e 74  le*, int);.  int
ff20: 20 28 2a 78 43 68 65 63 6b 52 65 73 65 72 76 65   (*xCheckReserve
ff30: 64 4c 6f 63 6b 29 28 73 71 6c 69 74 65 33 5f 66  dLock)(sqlite3_f
ff40: 69 6c 65 2a 2c 20 69 6e 74 20 2a 70 52 65 73 4f  ile*, int *pResO
ff50: 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 69  ut);.  int (*xFi
ff60: 6c 65 43 6f 6e 74 72 6f 6c 29 28 73 71 6c 69 74  leControl)(sqlit
ff70: 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74 20 6f 70  e3_file*, int op
ff80: 2c 20 76 6f 69 64 20 2a 70 41 72 67 29 3b 0a 20  , void *pArg);. 
ff90: 20 69 6e 74 20 28 2a 78 53 65 63 74 6f 72 53 69   int (*xSectorSi
ffa0: 7a 65 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  ze)(sqlite3_file
ffb0: 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 44 65 76  *);.  int (*xDev
ffc0: 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74 69  iceCharacteristi
ffd0: 63 73 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65  cs)(sqlite3_file
ffe0: 2a 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f 64 73  *);.  /* Methods
fff0: 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c 69 64   above are valid
10000 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 31 20 2a   for version 1 *
10010 2f 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 4d 61  /.  int (*xShmMa
10020 70 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  p)(sqlite3_file*
10030 2c 20 69 6e 74 20 69 50 67 2c 20 69 6e 74 20 70  , int iPg, int p
10040 67 73 7a 2c 20 69 6e 74 2c 20 76 6f 69 64 20 76  gsz, int, void v
10050 6f 6c 61 74 69 6c 65 2a 2a 29 3b 0a 20 20 69 6e  olatile**);.  in
10060 74 20 28 2a 78 53 68 6d 4c 6f 63 6b 29 28 73 71  t (*xShmLock)(sq
10070 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 69 6e 74  lite3_file*, int
10080 20 6f 66 66 73 65 74 2c 20 69 6e 74 20 6e 2c 20   offset, int n, 
10090 69 6e 74 20 66 6c 61 67 73 29 3b 0a 20 20 76 6f  int flags);.  vo
100a0 69 64 20 28 2a 78 53 68 6d 42 61 72 72 69 65 72  id (*xShmBarrier
100b0 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 29  )(sqlite3_file*)
100c0 3b 0a 20 20 69 6e 74 20 28 2a 78 53 68 6d 55 6e  ;.  int (*xShmUn
100d0 6d 61 70 29 28 73 71 6c 69 74 65 33 5f 66 69 6c  map)(sqlite3_fil
100e0 65 2a 2c 20 69 6e 74 20 64 65 6c 65 74 65 46 6c  e*, int deleteFl
100f0 61 67 29 3b 0a 20 20 2f 2a 20 4d 65 74 68 6f 64  ag);.  /* Method
10100 73 20 61 62 6f 76 65 20 61 72 65 20 76 61 6c 69  s above are vali
10110 64 20 66 6f 72 20 76 65 72 73 69 6f 6e 20 32 20  d for version 2 
10120 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 46 65 74 63  */.  int (*xFetc
10130 68 29 28 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a  h)(sqlite3_file*
10140 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  , sqlite3_int64 
10150 69 4f 66 73 74 2c 20 69 6e 74 20 69 41 6d 74 2c  iOfst, int iAmt,
10160 20 76 6f 69 64 20 2a 2a 70 70 29 3b 0a 20 20 69   void **pp);.  i
10170 6e 74 20 28 2a 78 55 6e 66 65 74 63 68 29 28 73  nt (*xUnfetch)(s
10180 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 20 73 71  qlite3_file*, sq
10190 6c 69 74 65 33 5f 69 6e 74 36 34 20 69 4f 66 73  lite3_int64 iOfs
101a0 74 2c 20 76 6f 69 64 20 2a 70 29 3b 0a 20 20 2f  t, void *p);.  /
101b0 2a 20 4d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  * Methods above 
101c0 61 72 65 20 76 61 6c 69 64 20 66 6f 72 20 76 65  are valid for ve
101d0 72 73 69 6f 6e 20 33 20 2a 2f 0a 20 20 2f 2a 20  rsion 3 */.  /* 
101e0 41 64 64 69 74 69 6f 6e 61 6c 20 6d 65 74 68 6f  Additional metho
101f0 64 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20  ds may be added 
10200 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73  in future releas
10210 65 73 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20  es */.};../*.** 
10220 43 41 50 49 33 52 45 46 3a 20 53 74 61 6e 64 61  CAPI3REF: Standa
10230 72 64 20 46 69 6c 65 20 43 6f 6e 74 72 6f 6c 20  rd File Control 
10240 4f 70 63 6f 64 65 73 0a 2a 2a 20 4b 45 59 57 4f  Opcodes.** KEYWO
10250 52 44 53 3a 20 7b 66 69 6c 65 20 63 6f 6e 74 72  RDS: {file contr
10260 6f 6c 20 6f 70 63 6f 64 65 73 7d 20 7b 66 69 6c  ol opcodes} {fil
10270 65 20 63 6f 6e 74 72 6f 6c 20 6f 70 63 6f 64 65  e control opcode
10280 7d 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e  }.**.** These in
10290 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 20  teger constants 
102a0 61 72 65 20 6f 70 63 6f 64 65 73 20 66 6f 72 20  are opcodes for 
102b0 74 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c  the xFileControl
102c0 20 6d 65 74 68 6f 64 0a 2a 2a 20 6f 66 20 74 68   method.** of th
102d0 65 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65  e [sqlite3_io_me
102e0 74 68 6f 64 73 5d 20 6f 62 6a 65 63 74 20 61 6e  thods] object an
102f0 64 20 66 6f 72 20 74 68 65 20 5b 73 71 6c 69 74  d for the [sqlit
10300 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
10310 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 2e  )].** interface.
10320 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  .**.** <ul>.** <
10330 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
10340 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 5d 0a 2a 2a  L_LOCKSTATE]].**
10350 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
10360 54 4c 5f 4c 4f 43 4b 53 54 41 54 45 5d 20 6f 70  TL_LOCKSTATE] op
10370 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f 72  code is used for
10380 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68 69   debugging.  Thi
10390 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75 73  s.** opcode caus
103a0 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e 74  es the xFileCont
103b0 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 77 72  rol method to wr
103c0 69 74 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  ite the current 
103d0 73 74 61 74 65 20 6f 66 0a 2a 2a 20 74 68 65 20  state of.** the 
103e0 6c 6f 63 6b 20 28 6f 6e 65 20 6f 66 20 5b 53 51  lock (one of [SQ
103f0 4c 49 54 45 5f 4c 4f 43 4b 5f 4e 4f 4e 45 5d 2c  LITE_LOCK_NONE],
10400 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 53 48   [SQLITE_LOCK_SH
10410 41 52 45 44 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54  ARED],.** [SQLIT
10420 45 5f 4c 4f 43 4b 5f 52 45 53 45 52 56 45 44 5d  E_LOCK_RESERVED]
10430 2c 20 5b 53 51 4c 49 54 45 5f 4c 4f 43 4b 5f 50  , [SQLITE_LOCK_P
10440 45 4e 44 49 4e 47 5d 2c 20 6f 72 20 5b 53 51 4c  ENDING], or [SQL
10450 49 54 45 5f 4c 4f 43 4b 5f 45 58 43 4c 55 53 49  ITE_LOCK_EXCLUSI
10460 56 45 5d 29 0a 2a 2a 20 69 6e 74 6f 20 61 6e 20  VE]).** into an 
10470 69 6e 74 65 67 65 72 20 74 68 61 74 20 74 68 65  integer that the
10480 20 70 41 72 67 20 61 72 67 75 6d 65 6e 74 20 70   pArg argument p
10490 6f 69 6e 74 73 20 74 6f 2e 20 54 68 69 73 20 63  oints to. This c
104a0 61 70 61 62 69 6c 69 74 79 0a 2a 2a 20 69 73 20  apability.** is 
104b0 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73 74  used during test
104c0 69 6e 67 20 61 6e 64 20 69 73 20 6f 6e 6c 79 20  ing and is only 
104d0 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20 74  available when t
104e0 68 65 20 53 51 4c 49 54 45 5f 54 45 53 54 0a 2a  he SQLITE_TEST.*
104f0 2a 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  * compile-time o
10500 70 74 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 2a  ption is used..*
10510 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
10520 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e  E_FCNTL_SIZE_HIN
10530 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  T]].** The [SQLI
10540 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49  TE_FCNTL_SIZE_HI
10550 4e 54 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73  NT] opcode is us
10560 65 64 20 62 79 20 53 51 4c 69 74 65 20 74 6f 20  ed by SQLite to 
10570 67 69 76 65 20 74 68 65 20 56 46 53 0a 2a 2a 20  give the VFS.** 
10580 6c 61 79 65 72 20 61 20 68 69 6e 74 20 6f 66 20  layer a hint of 
10590 68 6f 77 20 6c 61 72 67 65 20 74 68 65 20 64 61  how large the da
105a0 74 61 62 61 73 65 20 66 69 6c 65 20 77 69 6c 6c  tabase file will
105b0 20 67 72 6f 77 20 74 6f 20 62 65 20 64 75 72 69   grow to be duri
105c0 6e 67 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e  ng the.** curren
105d0 74 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  t transaction.  
105e0 54 68 69 73 20 68 69 6e 74 20 69 73 20 6e 6f 74  This hint is not
105f0 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62   guaranteed to b
10600 65 20 61 63 63 75 72 61 74 65 20 62 75 74 20 69  e accurate but i
10610 74 0a 2a 2a 20 69 73 20 6f 66 74 65 6e 20 63 6c  t.** is often cl
10620 6f 73 65 2e 20 20 54 68 65 20 75 6e 64 65 72 6c  ose.  The underl
10630 79 69 6e 67 20 56 46 53 20 6d 69 67 68 74 20 63  ying VFS might c
10640 68 6f 6f 73 65 20 74 6f 20 70 72 65 61 6c 6c 6f  hoose to preallo
10650 63 61 74 65 20 64 61 74 61 62 61 73 65 0a 2a 2a  cate database.**
10660 20 66 69 6c 65 20 73 70 61 63 65 20 62 61 73 65   file space base
10670 64 20 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 69  d on this hint i
10680 6e 20 6f 72 64 65 72 20 74 6f 20 68 65 6c 70 20  n order to help 
10690 77 72 69 74 65 73 20 74 6f 20 74 68 65 20 64 61  writes to the da
106a0 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20 72  tabase.** file r
106b0 75 6e 20 66 61 73 74 65 72 2e 0a 2a 2a 0a 2a 2a  un faster..**.**
106c0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
106d0 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45 5d 5d  NTL_CHUNK_SIZE]]
106e0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
106f0 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45  FCNTL_CHUNK_SIZE
10700 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
10710 20 74 6f 20 72 65 71 75 65 73 74 20 74 68 61 74   to request that
10720 20 74 68 65 20 56 46 53 0a 2a 2a 20 65 78 74 65   the VFS.** exte
10730 6e 64 73 20 61 6e 64 20 74 72 75 6e 63 61 74 65  nds and truncate
10740 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  s the database f
10750 69 6c 65 20 69 6e 20 63 68 75 6e 6b 73 20 6f 66  ile in chunks of
10760 20 61 20 73 69 7a 65 20 73 70 65 63 69 66 69 65   a size specifie
10770 64 0a 2a 2a 20 62 79 20 74 68 65 20 75 73 65 72  d.** by the user
10780 2e 20 54 68 65 20 66 6f 75 72 74 68 20 61 72 67  . The fourth arg
10790 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c 69 74 65  ument to [sqlite
107a0 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29  3_file_control()
107b0 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a 20 70 6f 69  ] should .** poi
107c0 6e 74 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  nt to an integer
107d0 20 28 74 79 70 65 20 69 6e 74 29 20 63 6f 6e 74   (type int) cont
107e0 61 69 6e 69 6e 67 20 74 68 65 20 6e 65 77 20 63  aining the new c
107f0 68 75 6e 6b 2d 73 69 7a 65 20 74 6f 20 75 73 65  hunk-size to use
10800 0a 2a 2a 20 66 6f 72 20 74 68 65 20 6e 6f 6d 69  .** for the nomi
10810 6e 61 74 65 64 20 64 61 74 61 62 61 73 65 2e 20  nated database. 
10820 41 6c 6c 6f 63 61 74 69 6e 67 20 64 61 74 61 62  Allocating datab
10830 61 73 65 20 66 69 6c 65 20 73 70 61 63 65 20 69  ase file space i
10840 6e 20 6c 61 72 67 65 0a 2a 2a 20 63 68 75 6e 6b  n large.** chunk
10850 73 20 28 73 61 79 20 31 4d 42 20 61 74 20 61 20  s (say 1MB at a 
10860 74 69 6d 65 29 2c 20 6d 61 79 20 72 65 64 75 63  time), may reduc
10870 65 20 66 69 6c 65 2d 73 79 73 74 65 6d 20 66 72  e file-system fr
10880 61 67 6d 65 6e 74 61 74 69 6f 6e 20 61 6e 64 0a  agmentation and.
10890 2a 2a 20 69 6d 70 72 6f 76 65 20 70 65 72 66 6f  ** improve perfo
108a0 72 6d 61 6e 63 65 20 6f 6e 20 73 6f 6d 65 20 73  rmance on some s
108b0 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  ystems..**.** <l
108c0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
108d0 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52 5d 5d 0a  _FILE_POINTER]].
108e0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
108f0 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
10900 52 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65  R] opcode is use
10910 64 20 74 6f 20 6f 62 74 61 69 6e 20 61 20 70 6f  d to obtain a po
10920 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74 68 65 20  inter.** to the 
10930 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f  [sqlite3_file] o
10940 62 6a 65 63 74 20 61 73 73 6f 63 69 61 74 65 64  bject associated
10950 20 77 69 74 68 20 61 20 70 61 72 74 69 63 75 6c   with a particul
10960 61 72 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63  ar database.** c
10970 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 53 65 65 20  onnection.  See 
10980 61 6c 73 6f 20 5b 53 51 4c 49 54 45 5f 46 43 4e  also [SQLITE_FCN
10990 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54  TL_JOURNAL_POINT
109a0 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ER]..**.** <li>[
109b0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4a 4f  [SQLITE_FCNTL_JO
109c0 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52 5d 5d 0a  URNAL_POINTER]].
109d0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
109e0 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49  CNTL_JOURNAL_POI
109f0 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73 20  NTER] opcode is 
10a00 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20 61  used to obtain a
10a10 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20 74   pointer.** to t
10a20 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  he [sqlite3_file
10a30 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69 61  ] object associa
10a40 74 65 64 20 77 69 74 68 20 74 68 65 20 6a 6f 75  ted with the jou
10a50 72 6e 61 6c 20 66 69 6c 65 20 28 65 69 74 68 65  rnal file (eithe
10a60 72 0a 2a 2a 20 74 68 65 20 5b 72 6f 6c 6c 62 61  r.** the [rollba
10a70 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20 6f 72 20 74  ck journal] or t
10a80 68 65 20 5b 77 72 69 74 65 2d 61 68 65 61 64 20  he [write-ahead 
10a90 6c 6f 67 5d 29 20 66 6f 72 20 61 20 70 61 72 74  log]) for a part
10aa0 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
10ab0 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
10ac0 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
10ad0 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e  _FCNTL_FILE_POIN
10ae0 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  TER]..**.** <li>
10af0 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53  [[SQLITE_FCNTL_S
10b00 59 4e 43 5f 4f 4d 49 54 54 45 44 5d 5d 0a 2a 2a  YNC_OMITTED]].**
10b10 20 4e 6f 20 6c 6f 6e 67 65 72 20 69 6e 20 75 73   No longer in us
10b20 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  e..**.** <li>[[S
10b30 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
10b40 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
10b50 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5d 20 6f 70  E_FCNTL_SYNC] op
10b60 63 6f 64 65 20 69 73 20 67 65 6e 65 72 61 74 65  code is generate
10b70 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20  d internally by 
10b80 53 51 4c 69 74 65 20 61 6e 64 0a 2a 2a 20 73 65  SQLite and.** se
10b90 6e 74 20 74 6f 20 74 68 65 20 56 46 53 20 69 6d  nt to the VFS im
10ba0 6d 65 64 69 61 74 65 6c 79 20 62 65 66 6f 72 65  mediately before
10bb0 20 74 68 65 20 78 53 79 6e 63 20 6d 65 74 68 6f   the xSync metho
10bc0 64 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 20  d is invoked on 
10bd0 61 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 66 69  a.** database fi
10be0 6c 65 20 64 65 73 63 72 69 70 74 6f 72 2e 20 4f  le descriptor. O
10bf0 72 2c 20 69 66 20 74 68 65 20 78 53 79 6e 63 20  r, if the xSync 
10c00 6d 65 74 68 6f 64 20 69 73 20 6e 6f 74 20 69 6e  method is not in
10c10 76 6f 6b 65 64 20 0a 2a 2a 20 62 65 63 61 75 73  voked .** becaus
10c20 65 20 74 68 65 20 75 73 65 72 20 68 61 73 20 63  e the user has c
10c30 6f 6e 66 69 67 75 72 65 64 20 53 51 4c 69 74 65  onfigured SQLite
10c40 20 77 69 74 68 20 0a 2a 2a 20 5b 50 52 41 47 4d   with .** [PRAGM
10c50 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 7c 20  A synchronous | 
10c60 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f  PRAGMA synchrono
10c70 75 73 3d 4f 46 46 5d 20 69 74 20 69 73 20 69 6e  us=OFF] it is in
10c80 76 6f 6b 65 64 20 69 6e 20 70 6c 61 63 65 20 0a  voked in place .
10c90 2a 2a 20 6f 66 20 74 68 65 20 78 53 79 6e 63 20  ** of the xSync 
10ca0 6d 65 74 68 6f 64 2e 20 49 6e 20 6d 6f 73 74 20  method. In most 
10cb0 63 61 73 65 73 2c 20 74 68 65 20 70 6f 69 6e 74  cases, the point
10cc0 65 72 20 61 72 67 75 6d 65 6e 74 20 70 61 73 73  er argument pass
10cd0 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 69 73 20  ed with.** this 
10ce0 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20  file-control is 
10cf0 4e 55 4c 4c 2e 20 48 6f 77 65 76 65 72 2c 20 69  NULL. However, i
10d00 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  f the database f
10d10 69 6c 65 20 69 73 20 62 65 69 6e 67 20 73 79 6e  ile is being syn
10d20 63 65 64 0a 2a 2a 20 61 73 20 70 61 72 74 20 6f  ced.** as part o
10d30 66 20 61 20 6d 75 6c 74 69 2d 64 61 74 61 62 61  f a multi-databa
10d40 73 65 20 63 6f 6d 6d 69 74 2c 20 74 68 65 20 61  se commit, the a
10d50 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73 20 74  rgument points t
10d60 6f 20 61 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74  o a nul-terminat
10d70 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e  ed.** string con
10d80 74 61 69 6e 69 6e 67 20 74 68 65 20 74 72 61 6e  taining the tran
10d90 73 61 63 74 69 6f 6e 73 20 6d 61 73 74 65 72 2d  sactions master-
10da0 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 6e 61 6d  journal file nam
10db0 65 2e 20 56 46 53 65 73 20 74 68 61 74 20 0a 2a  e. VFSes that .*
10dc0 2a 20 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 68  * do not need th
10dd0 69 73 20 73 69 67 6e 61 6c 20 73 68 6f 75 6c 64  is signal should
10de0 20 73 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65   silently ignore
10df0 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70   this opcode. Ap
10e00 70 6c 69 63 61 74 69 6f 6e 73 20 0a 2a 2a 20 73  plications .** s
10e10 68 6f 75 6c 64 20 6e 6f 74 20 63 61 6c 6c 20 5b  hould not call [
10e20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
10e30 74 72 6f 6c 28 29 5d 20 77 69 74 68 20 74 68 69  trol()] with thi
10e40 73 20 6f 70 63 6f 64 65 20 61 73 20 64 6f 69 6e  s opcode as doin
10e50 67 20 73 6f 20 6d 61 79 20 0a 2a 2a 20 64 69 73  g so may .** dis
10e60 72 75 70 74 20 74 68 65 20 6f 70 65 72 61 74 69  rupt the operati
10e70 6f 6e 20 6f 66 20 74 68 65 20 73 70 65 63 69 61  on of the specia
10e80 6c 69 7a 65 64 20 56 46 53 65 73 20 74 68 61 74  lized VFSes that
10e90 20 64 6f 20 72 65 71 75 69 72 65 20 69 74 2e 20   do require it. 
10ea0 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51   .**.** <li>[[SQ
10eb0 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
10ec0 54 5f 50 48 41 53 45 54 57 4f 5d 5d 0a 2a 2a 20  T_PHASETWO]].** 
10ed0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
10ee0 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57  L_COMMIT_PHASETW
10ef0 4f 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e  O] opcode is gen
10f00 65 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c  erated internall
10f10 79 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 61  y by SQLite.** a
10f20 6e 64 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56  nd sent to the V
10f30 46 53 20 61 66 74 65 72 20 61 20 74 72 61 6e 73  FS after a trans
10f40 61 63 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20  action has been 
10f50 63 6f 6d 6d 69 74 74 65 64 20 69 6d 6d 65 64 69  committed immedi
10f60 61 74 65 6c 79 0a 2a 2a 20 62 75 74 20 62 65 66  ately.** but bef
10f70 6f 72 65 20 74 68 65 20 64 61 74 61 62 61 73 65  ore the database
10f80 20 69 73 20 75 6e 6c 6f 63 6b 65 64 2e 20 56 46   is unlocked. VF
10f90 53 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  Ses that do not 
10fa0 6e 65 65 64 20 74 68 69 73 20 73 69 67 6e 61 6c  need this signal
10fb0 0a 2a 2a 20 73 68 6f 75 6c 64 20 73 69 6c 65 6e  .** should silen
10fc0 74 6c 79 20 69 67 6e 6f 72 65 20 74 68 69 73 20  tly ignore this 
10fd0 6f 70 63 6f 64 65 2e 20 41 70 70 6c 69 63 61 74  opcode. Applicat
10fe0 69 6f 6e 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20  ions should not 
10ff0 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  call.** [sqlite3
11000 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
11010 20 77 69 74 68 20 74 68 69 73 20 6f 70 63 6f 64   with this opcod
11020 65 20 61 73 20 64 6f 69 6e 67 20 73 6f 20 6d 61  e as doing so ma
11030 79 20 64 69 73 72 75 70 74 20 74 68 65 20 0a 2a  y disrupt the .*
11040 2a 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74  * operation of t
11050 68 65 20 73 70 65 63 69 61 6c 69 7a 65 64 20 56  he specialized V
11060 46 53 65 73 20 74 68 61 74 20 64 6f 20 72 65 71  FSes that do req
11070 75 69 72 65 20 69 74 2e 20 20 0a 2a 2a 0a 2a 2a  uire it.  .**.**
11080 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
11090 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54  NTL_WIN32_AV_RET
110a0 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51  RY]].** ^The [SQ
110b0 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32  LITE_FCNTL_WIN32
110c0 5f 41 56 5f 52 45 54 52 59 5d 20 6f 70 63 6f 64  _AV_RETRY] opcod
110d0 65 20 69 73 20 75 73 65 64 20 74 6f 20 63 6f 6e  e is used to con
110e0 66 69 67 75 72 65 20 61 75 74 6f 6d 61 74 69 63  figure automatic
110f0 0a 2a 2a 20 72 65 74 72 79 20 63 6f 75 6e 74 73  .** retry counts
11100 20 61 6e 64 20 69 6e 74 65 72 76 61 6c 73 20 66   and intervals f
11110 6f 72 20 63 65 72 74 61 69 6e 20 64 69 73 6b 20  or certain disk 
11120 49 2f 4f 20 6f 70 65 72 61 74 69 6f 6e 73 20 66  I/O operations f
11130 6f 72 20 74 68 65 0a 2a 2a 20 77 69 6e 64 6f 77  or the.** window
11140 73 20 5b 56 46 53 5d 20 69 6e 20 6f 72 64 65 72  s [VFS] in order
11150 20 74 6f 20 70 72 6f 76 69 64 65 20 72 6f 62 75   to provide robu
11160 73 74 6e 65 73 73 20 69 6e 20 74 68 65 20 70 72  stness in the pr
11170 65 73 65 6e 63 65 20 6f 66 0a 2a 2a 20 61 6e 74  esence of.** ant
11180 69 2d 76 69 72 75 73 20 70 72 6f 67 72 61 6d 73  i-virus programs
11190 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 74  .  By default, t
111a0 68 65 20 77 69 6e 64 6f 77 73 20 56 46 53 20 77  he windows VFS w
111b0 69 6c 6c 20 72 65 74 72 79 20 66 69 6c 65 20 72  ill retry file r
111c0 65 61 64 2c 0a 2a 2a 20 66 69 6c 65 20 77 72 69  ead,.** file wri
111d0 74 65 2c 20 61 6e 64 20 66 69 6c 65 20 64 65 6c  te, and file del
111e0 65 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 75  ete operations u
111f0 70 20 74 6f 20 31 30 20 74 69 6d 65 73 2c 20 77  p to 10 times, w
11200 69 74 68 20 61 20 64 65 6c 61 79 0a 2a 2a 20 6f  ith a delay.** o
11210 66 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  f 25 millisecond
11220 73 20 62 65 66 6f 72 65 20 74 68 65 20 66 69 72  s before the fir
11230 73 74 20 72 65 74 72 79 20 61 6e 64 20 77 69 74  st retry and wit
11240 68 20 74 68 65 20 64 65 6c 61 79 20 69 6e 63 72  h the delay incr
11250 65 61 73 69 6e 67 0a 2a 2a 20 62 79 20 61 6e 20  easing.** by an 
11260 61 64 64 69 74 69 6f 6e 61 6c 20 32 35 20 6d 69  additional 25 mi
11270 6c 6c 69 73 65 63 6f 6e 64 73 20 77 69 74 68 20  lliseconds with 
11280 65 61 63 68 20 73 75 62 73 65 71 75 65 6e 74 20  each subsequent 
11290 72 65 74 72 79 2e 20 20 54 68 69 73 0a 2a 2a 20  retry.  This.** 
112a0 6f 70 63 6f 64 65 20 61 6c 6c 6f 77 73 20 74 68  opcode allows th
112b0 65 73 65 20 74 77 6f 20 76 61 6c 75 65 73 20 28  ese two values (
112c0 31 30 20 72 65 74 72 69 65 73 20 61 6e 64 20 32  10 retries and 2
112d0 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 6f  5 milliseconds o
112e0 66 20 64 65 6c 61 79 29 0a 2a 2a 20 74 6f 20 62  f delay).** to b
112f0 65 20 61 64 6a 75 73 74 65 64 2e 20 20 54 68 65  e adjusted.  The
11300 20 76 61 6c 75 65 73 20 61 72 65 20 63 68 61 6e   values are chan
11310 67 65 64 20 66 6f 72 20 61 6c 6c 20 64 61 74 61  ged for all data
11320 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
11330 0a 2a 2a 20 77 69 74 68 69 6e 20 74 68 65 20 73  .** within the s
11340 61 6d 65 20 70 72 6f 63 65 73 73 2e 20 20 54 68  ame process.  Th
11350 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
11360 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 61 72  pointer to an ar
11370 72 61 79 20 6f 66 20 74 77 6f 0a 2a 2a 20 69 6e  ray of two.** in
11380 74 65 67 65 72 73 20 77 68 65 72 65 20 74 68 65  tegers where the
11390 20 66 69 72 73 74 20 69 6e 74 65 67 65 72 20 69   first integer i
113a0 73 20 74 68 65 20 6e 65 77 20 72 65 74 72 79 20  s the new retry 
113b0 63 6f 75 6e 74 20 61 6e 64 20 74 68 65 20 73 65  count and the se
113c0 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65 67 65 72 20  cond.** integer 
113d0 69 73 20 74 68 65 20 64 65 6c 61 79 2e 20 20 49  is the delay.  I
113e0 66 20 65 69 74 68 65 72 20 69 6e 74 65 67 65 72  f either integer
113f0 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68   is negative, th
11400 65 6e 20 74 68 65 20 73 65 74 74 69 6e 67 0a 2a  en the setting.*
11410 2a 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65 64  * is not changed
11420 20 62 75 74 20 69 6e 73 74 65 61 64 20 74 68 65   but instead the
11430 20 70 72 69 6f 72 20 76 61 6c 75 65 20 6f 66 20   prior value of 
11440 74 68 61 74 20 73 65 74 74 69 6e 67 20 69 73 20  that setting is 
11450 77 72 69 74 74 65 6e 0a 2a 2a 20 69 6e 74 6f 20  written.** into 
11460 74 68 65 20 61 72 72 61 79 20 65 6e 74 72 79 2c  the array entry,
11470 20 61 6c 6c 6f 77 69 6e 67 20 74 68 65 20 63 75   allowing the cu
11480 72 72 65 6e 74 20 72 65 74 72 79 20 73 65 74 74  rrent retry sett
11490 69 6e 67 73 20 74 6f 20 62 65 0a 2a 2a 20 69 6e  ings to be.** in
114a0 74 65 72 72 6f 67 61 74 65 64 2e 20 20 54 68 65  terrogated.  The
114b0 20 7a 44 62 4e 61 6d 65 20 70 61 72 61 6d 65 74   zDbName paramet
114c0 65 72 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 2a  er is ignored..*
114d0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
114e0 45 5f 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f  E_FCNTL_PERSIST_
114f0 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53  WAL]].** ^The [S
11500 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
11510 49 53 54 5f 57 41 4c 5d 20 6f 70 63 6f 64 65 20  IST_WAL] opcode 
11520 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20 6f  is used to set o
11530 72 20 71 75 65 72 79 20 74 68 65 0a 2a 2a 20 70  r query the.** p
11540 65 72 73 69 73 74 65 6e 74 20 5b 57 41 4c 20 7c  ersistent [WAL |
11550 20 57 72 69 74 65 20 41 68 65 61 64 20 4c 6f 67   Write Ahead Log
11560 5d 20 73 65 74 74 69 6e 67 2e 20 20 42 79 20 64  ] setting.  By d
11570 65 66 61 75 6c 74 2c 20 74 68 65 20 61 75 78 69  efault, the auxi
11580 6c 69 61 72 79 0a 2a 2a 20 77 72 69 74 65 20 61  liary.** write a
11590 68 65 61 64 20 6c 6f 67 20 28 5b 57 41 4c 20 66  head log ([WAL f
115a0 69 6c 65 5d 29 20 61 6e 64 20 73 68 61 72 65 64  ile]) and shared
115b0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66 69 6c 65 73   memory.** files
115c0 20 75 73 65 64 20 66 6f 72 20 74 72 61 6e 73 61   used for transa
115d0 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 2a 2a  ction control.**
115e0 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c   are automatical
115f0 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20  ly deleted when 
11600 74 68 65 20 6c 61 74 65 73 74 20 63 6f 6e 6e 65  the latest conne
11610 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 64 61 74  ction to the dat
11620 61 62 61 73 65 0a 2a 2a 20 63 6c 6f 73 65 73 2e  abase.** closes.
11630 20 20 53 65 74 74 69 6e 67 20 70 65 72 73 69 73    Setting persis
11640 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65 20 63 61  tent WAL mode ca
11650 75 73 65 73 20 74 68 6f 73 65 20 66 69 6c 65 73  uses those files
11660 20 74 6f 20 70 65 72 73 69 73 74 20 61 66 74 65   to persist afte
11670 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20 20 50 65 72  r.** close.  Per
11680 73 69 73 74 69 6e 67 20 74 68 65 20 66 69 6c 65  sisting the file
11690 73 20 69 73 20 75 73 65 66 75 6c 20 77 68 65 6e  s is useful when
116a0 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73   other processes
116b0 20 74 68 61 74 20 64 6f 20 6e 6f 74 0a 2a 2a 20   that do not.** 
116c0 68 61 76 65 20 77 72 69 74 65 20 70 65 72 6d 69  have write permi
116d0 73 73 69 6f 6e 20 6f 6e 20 74 68 65 20 64 69 72  ssion on the dir
116e0 65 63 74 6f 72 79 20 63 6f 6e 74 61 69 6e 69 6e  ectory containin
116f0 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  g the database f
11700 69 6c 65 20 77 61 6e 74 0a 2a 2a 20 74 6f 20 72  ile want.** to r
11710 65 61 64 20 74 68 65 20 64 61 74 61 62 61 73 65  ead the database
11720 20 66 69 6c 65 2c 20 61 73 20 74 68 65 20 57 41   file, as the WA
11730 4c 20 61 6e 64 20 73 68 61 72 65 64 20 6d 65 6d  L and shared mem
11740 6f 72 79 20 66 69 6c 65 73 20 6d 75 73 74 20 65  ory files must e
11750 78 69 73 74 0a 2a 2a 20 69 6e 20 6f 72 64 65 72  xist.** in order
11760 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73   for the databas
11770 65 20 74 6f 20 62 65 20 72 65 61 64 61 62 6c 65  e to be readable
11780 2e 20 20 54 68 65 20 66 6f 75 72 74 68 20 70 61  .  The fourth pa
11790 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 5b 73  rameter to.** [s
117a0 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
117b0 72 6f 6c 28 29 5d 20 66 6f 72 20 74 68 69 73 20  rol()] for this 
117c0 6f 70 63 6f 64 65 20 73 68 6f 75 6c 64 20 62 65  opcode should be
117d0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
117e0 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 54 68 61   integer..** Tha
117f0 74 20 69 6e 74 65 67 65 72 20 69 73 20 30 20 74  t integer is 0 t
11800 6f 20 64 69 73 61 62 6c 65 20 70 65 72 73 69 73  o disable persis
11810 74 65 6e 74 20 57 41 4c 20 6d 6f 64 65 20 6f 72  tent WAL mode or
11820 20 31 20 74 6f 20 65 6e 61 62 6c 65 20 70 65 72   1 to enable per
11830 73 69 73 74 65 6e 74 0a 2a 2a 20 57 41 4c 20 6d  sistent.** WAL m
11840 6f 64 65 2e 20 20 49 66 20 74 68 65 20 69 6e 74  ode.  If the int
11850 65 67 65 72 20 69 73 20 2d 31 2c 20 74 68 65 6e  eger is -1, then
11860 20 69 74 20 69 73 20 6f 76 65 72 77 72 69 74 74   it is overwritt
11870 65 6e 20 77 69 74 68 20 74 68 65 20 63 75 72 72  en with the curr
11880 65 6e 74 0a 2a 2a 20 57 41 4c 20 70 65 72 73 69  ent.** WAL persi
11890 73 74 65 6e 63 65 20 73 65 74 74 69 6e 67 2e 0a  stence setting..
118a0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
118b0 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
118c0 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 5d 0a 2a  FE_OVERWRITE]].*
118d0 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
118e0 43 4e 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f  CNTL_POWERSAFE_O
118f0 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  VERWRITE] opcode
11900 20 69 73 20 75 73 65 64 20 74 6f 20 73 65 74 20   is used to set 
11910 6f 72 20 71 75 65 72 79 20 74 68 65 0a 2a 2a 20  or query the.** 
11920 70 65 72 73 69 73 74 65 6e 74 20 22 70 6f 77 65  persistent "powe
11930 72 73 61 66 65 2d 6f 76 65 72 77 72 69 74 65 22  rsafe-overwrite"
11940 20 6f 72 20 22 50 53 4f 57 22 20 73 65 74 74 69   or "PSOW" setti
11950 6e 67 2e 20 20 54 68 65 20 50 53 4f 57 20 73 65  ng.  The PSOW se
11960 74 74 69 6e 67 0a 2a 2a 20 64 65 74 65 72 6d 69  tting.** determi
11970 6e 65 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  nes the [SQLITE_
11980 49 4f 43 41 50 5f 50 4f 57 45 52 53 41 46 45 5f  IOCAP_POWERSAFE_
11990 4f 56 45 52 57 52 49 54 45 5d 20 62 69 74 20 6f  OVERWRITE] bit o
119a0 66 20 74 68 65 0a 2a 2a 20 78 44 65 76 69 63 65  f the.** xDevice
119b0 43 68 61 72 61 63 74 65 72 69 73 74 69 63 73 20  Characteristics 
119c0 6d 65 74 68 6f 64 73 2e 20 54 68 65 20 66 6f 75  methods. The fou
119d0 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f  rth parameter to
119e0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  .** [sqlite3_fil
119f0 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72  e_control()] for
11a00 20 74 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f   this opcode sho
11a10 75 6c 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72  uld be a pointer
11a20 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a   to an integer..
11a30 2a 2a 20 54 68 61 74 20 69 6e 74 65 67 65 72 20  ** That integer 
11a40 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
11a50 7a 65 72 6f 2d 64 61 6d 61 67 65 20 6d 6f 64 65  zero-damage mode
11a60 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65 20   or 1 to enable 
11a70 7a 65 72 6f 2d 64 61 6d 61 67 65 0a 2a 2a 20 6d  zero-damage.** m
11a80 6f 64 65 2e 20 20 49 66 20 74 68 65 20 69 6e 74  ode.  If the int
11a90 65 67 65 72 20 69 73 20 2d 31 2c 20 74 68 65 6e  eger is -1, then
11aa0 20 69 74 20 69 73 20 6f 76 65 72 77 72 69 74 74   it is overwritt
11ab0 65 6e 20 77 69 74 68 20 74 68 65 20 63 75 72 72  en with the curr
11ac0 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d 64 61 6d 61  ent.** zero-dama
11ad0 67 65 20 6d 6f 64 65 20 73 65 74 74 69 6e 67 2e  ge mode setting.
11ae0 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c  .**.** <li>[[SQL
11af0 49 54 45 5f 46 43 4e 54 4c 5f 4f 56 45 52 57 52  ITE_FCNTL_OVERWR
11b00 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53  ITE]].** ^The [S
11b10 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56 45 52  QLITE_FCNTL_OVER
11b20 57 52 49 54 45 5d 20 6f 70 63 6f 64 65 20 69 73  WRITE] opcode is
11b30 20 69 6e 76 6f 6b 65 64 20 62 79 20 53 51 4c 69   invoked by SQLi
11b40 74 65 20 61 66 74 65 72 20 6f 70 65 6e 69 6e 67  te after opening
11b50 0a 2a 2a 20 61 20 77 72 69 74 65 20 74 72 61 6e  .** a write tran
11b60 73 61 63 74 69 6f 6e 20 74 6f 20 69 6e 64 69 63  saction to indic
11b70 61 74 65 20 74 68 61 74 2c 20 75 6e 6c 65 73 73  ate that, unless
11b80 20 69 74 20 69 73 20 72 6f 6c 6c 65 64 20 62 61   it is rolled ba
11b90 63 6b 20 66 6f 72 20 73 6f 6d 65 0a 2a 2a 20 72  ck for some.** r
11ba0 65 61 73 6f 6e 2c 20 74 68 65 20 65 6e 74 69 72  eason, the entir
11bb0 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
11bc0 77 69 6c 6c 20 62 65 20 6f 76 65 72 77 72 69 74  will be overwrit
11bd0 74 65 6e 20 62 79 20 74 68 65 20 63 75 72 72 65  ten by the curre
11be0 6e 74 20 0a 2a 2a 20 74 72 61 6e 73 61 63 74 69  nt .** transacti
11bf0 6f 6e 2e 20 54 68 69 73 20 69 73 20 75 73 65 64  on. This is used
11c00 20 62 79 20 56 41 43 55 55 4d 20 6f 70 65 72 61   by VACUUM opera
11c10 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  tions..**.** <li
11c20 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
11c30 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a 20 5e 54 68  VFSNAME]].** ^Th
11c40 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
11c50 56 46 53 4e 41 4d 45 5d 20 6f 70 63 6f 64 65 20  VFSNAME] opcode 
11c60 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f  can be used to o
11c70 62 74 61 69 6e 20 74 68 65 20 6e 61 6d 65 73 20  btain the names 
11c80 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56 46 53 65 73  of.** all [VFSes
11c90 5d 20 69 6e 20 74 68 65 20 56 46 53 20 73 74 61  ] in the VFS sta
11ca0 63 6b 2e 20 20 54 68 65 20 6e 61 6d 65 73 20 61  ck.  The names a
11cb0 72 65 20 6f 66 20 61 6c 6c 20 56 46 53 20 73 68  re of all VFS sh
11cc0 69 6d 73 20 61 6e 64 20 74 68 65 0a 2a 2a 20 66  ims and the.** f
11cd0 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d 6c 65 76 65  inal bottom-leve
11ce0 6c 20 56 46 53 20 61 72 65 20 77 72 69 74 74 65  l VFS are writte
11cf0 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62  n into memory ob
11d00 74 61 69 6e 65 64 20 66 72 6f 6d 20 0a 2a 2a 20  tained from .** 
11d10 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
11d20 29 5d 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c  )] and the resul
11d30 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74  t is stored in t
11d40 68 65 20 63 68 61 72 2a 20 76 61 72 69 61 62 6c  he char* variabl
11d50 65 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 66 6f  e.** that the fo
11d60 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 6f  urth parameter o
11d70 66 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  f [sqlite3_file_
11d80 63 6f 6e 74 72 6f 6c 28 29 5d 20 70 6f 69 6e 74  control()] point
11d90 73 20 74 6f 2e 0a 2a 2a 20 54 68 65 20 63 61 6c  s to..** The cal
11da0 6c 65 72 20 69 73 20 72 65 73 70 6f 6e 73 69 62  ler is responsib
11db0 6c 65 20 66 6f 72 20 66 72 65 65 69 6e 67 20 74  le for freeing t
11dc0 68 65 20 6d 65 6d 6f 72 79 20 77 68 65 6e 20 64  he memory when d
11dd0 6f 6e 65 2e 20 20 41 73 20 77 69 74 68 0a 2a 2a  one.  As with.**
11de0 20 61 6c 6c 20 66 69 6c 65 2d 63 6f 6e 74 72 6f   all file-contro
11df0 6c 20 61 63 74 69 6f 6e 73 2c 20 74 68 65 72 65  l actions, there
11e00 20 69 73 20 6e 6f 20 67 75 61 72 61 6e 74 65 65   is no guarantee
11e10 20 74 68 61 74 20 74 68 69 73 20 77 69 6c 6c 20   that this will 
11e20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20 64 6f 20 61  actually.** do a
11e30 6e 79 74 68 69 6e 67 2e 20 20 43 61 6c 6c 65 72  nything.  Caller
11e40 73 20 73 68 6f 75 6c 64 20 69 6e 69 74 69 61 6c  s should initial
11e50 69 7a 65 20 74 68 65 20 63 68 61 72 2a 20 76 61  ize the char* va
11e60 72 69 61 62 6c 65 20 74 6f 20 61 20 4e 55 4c 4c  riable to a NULL
11e70 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 69 6e 20 63  .** pointer in c
11e80 61 73 65 20 74 68 69 73 20 66 69 6c 65 2d 63 6f  ase this file-co
11e90 6e 74 72 6f 6c 20 69 73 20 6e 6f 74 20 69 6d 70  ntrol is not imp
11ea0 6c 65 6d 65 6e 74 65 64 2e 20 20 54 68 69 73 20  lemented.  This 
11eb0 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20  file-control.** 
11ec0 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20  is intended for 
11ed0 64 69 61 67 6e 6f 73 74 69 63 20 75 73 65 20 6f  diagnostic use o
11ee0 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  nly..**.** <li>[
11ef0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 56 46  [SQLITE_FCNTL_VF
11f00 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a 2a 2a 20 5e  S_POINTER]].** ^
11f10 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
11f20 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 20 6f  L_VFS_POINTER] o
11f30 70 63 6f 64 65 20 66 69 6e 64 73 20 61 20 70 6f  pcode finds a po
11f40 69 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70  inter to the top
11f50 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56 46 53 65 73  -level.** [VFSes
11f60 5d 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75  ] currently in u
11f70 73 65 2e 20 20 5e 28 54 68 65 20 61 72 67 75 6d  se.  ^(The argum
11f80 65 6e 74 20 58 20 69 6e 0a 2a 2a 20 73 71 6c 69  ent X in.** sqli
11f90 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c  te3_file_control
11fa0 28 64 62 2c 53 51 4c 49 54 45 5f 46 43 4e 54 4c  (db,SQLITE_FCNTL
11fb0 5f 56 46 53 5f 50 4f 49 4e 54 45 52 2c 58 29 20  _VFS_POINTER,X) 
11fc0 6d 75 73 74 20 62 65 0a 2a 2a 20 6f 66 20 74 79  must be.** of ty
11fd0 70 65 20 22 5b 73 71 6c 69 74 65 33 5f 76 66 73  pe "[sqlite3_vfs
11fe0 5d 20 2a 2a 22 2e 20 20 54 68 69 73 20 6f 70 63  ] **".  This opc
11ff0 6f 64 65 73 20 77 69 6c 6c 20 73 65 74 20 2a 58  odes will set *X
12000 0a 2a 2a 20 74 6f 20 61 20 70 6f 69 6e 74 65 72  .** to a pointer
12010 20 74 6f 20 74 68 65 20 74 6f 70 2d 6c 65 76 65   to the top-leve
12020 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20 5e 57 68 65  l VFS.)^.** ^Whe
12030 6e 20 74 68 65 72 65 20 61 72 65 20 6d 75 6c 74  n there are mult
12040 69 70 6c 65 20 56 46 53 20 73 68 69 6d 73 20 69  iple VFS shims i
12050 6e 20 74 68 65 20 73 74 61 63 6b 2c 20 74 68 69  n the stack, thi
12060 73 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20 74  s opcode finds t
12070 68 65 0a 2a 2a 20 75 70 70 65 72 2d 6d 6f 73 74  he.** upper-most
12080 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a   shim only..**.*
12090 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
120a0 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 5d 0a 2a 2a  CNTL_PRAGMA]].**
120b0 20 5e 57 68 65 6e 65 76 65 72 20 61 20 5b 50 52   ^Whenever a [PR
120c0 41 47 4d 41 5d 20 73 74 61 74 65 6d 65 6e 74 20  AGMA] statement 
120d0 69 73 20 70 61 72 73 65 64 2c 20 61 6e 20 5b 53  is parsed, an [S
120e0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
120f0 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65 20 63 6f 6e  MA] .** file con
12100 74 72 6f 6c 20 69 73 20 73 65 6e 74 20 74 6f 20  trol is sent to 
12110 74 68 65 20 6f 70 65 6e 20 5b 73 71 6c 69 74 65  the open [sqlite
12120 33 5f 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 63  3_file] object c
12130 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20  orresponding.** 
12140 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
12150 66 69 6c 65 20 74 6f 20 77 68 69 63 68 20 74 68  file to which th
12160 65 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65  e pragma stateme
12170 6e 74 20 72 65 66 65 72 73 2e 20 5e 54 68 65 20  nt refers. ^The 
12180 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20 74  argument.** to t
12190 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
121a0 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20 63 6f  _PRAGMA] file co
121b0 6e 74 72 6f 6c 20 69 73 20 61 6e 20 61 72 72 61  ntrol is an arra
121c0 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e 74 65 72 73  y of.** pointers
121d0 20 74 6f 20 73 74 72 69 6e 67 73 20 28 63 68 61   to strings (cha
121e0 72 2a 2a 29 20 69 6e 20 77 68 69 63 68 20 74 68  r**) in which th
121f0 65 20 73 65 63 6f 6e 64 20 65 6c 65 6d 65 6e 74  e second element
12200 20 6f 66 20 74 68 65 20 61 72 72 61 79 0a 2a 2a   of the array.**
12210 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
12220 74 68 65 20 70 72 61 67 6d 61 20 61 6e 64 20 74  the pragma and t
12230 68 65 20 74 68 69 72 64 20 65 6c 65 6d 65 6e 74  he third element
12240 20 69 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74   is the argument
12250 20 74 6f 20 74 68 65 0a 2a 2a 20 70 72 61 67 6d   to the.** pragm
12260 61 20 6f 72 20 4e 55 4c 4c 20 69 66 20 74 68 65  a or NULL if the
12270 20 70 72 61 67 6d 61 20 68 61 73 20 6e 6f 20 61   pragma has no a
12280 72 67 75 6d 65 6e 74 2e 20 20 5e 54 68 65 20 68  rgument.  ^The h
12290 61 6e 64 6c 65 72 20 66 6f 72 20 61 6e 0a 2a 2a  andler for an.**
122a0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50   [SQLITE_FCNTL_P
122b0 52 41 47 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74  RAGMA] file cont
122c0 72 6f 6c 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c  rol can optional
122d0 6c 79 20 6d 61 6b 65 20 74 68 65 20 66 69 72 73  ly make the firs
122e0 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 6f 66 20  t element.** of 
122f0 74 68 65 20 63 68 61 72 2a 2a 20 61 72 67 75 6d  the char** argum
12300 65 6e 74 20 70 6f 69 6e 74 20 74 6f 20 61 20 73  ent point to a s
12310 74 72 69 6e 67 20 6f 62 74 61 69 6e 65 64 20 66  tring obtained f
12320 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 70 72  rom [sqlite3_mpr
12330 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f 72 20 74 68  intf()].** or th
12340 65 20 65 71 75 69 76 61 6c 65 6e 74 20 61 6e 64  e equivalent and
12350 20 74 68 61 74 20 73 74 72 69 6e 67 20 77 69 6c   that string wil
12360 6c 20 62 65 63 6f 6d 65 20 74 68 65 20 72 65 73  l become the res
12370 75 6c 74 20 6f 66 20 74 68 65 20 70 72 61 67 6d  ult of the pragm
12380 61 20 6f 72 0a 2a 2a 20 74 68 65 20 65 72 72 6f  a or.** the erro
12390 72 20 6d 65 73 73 61 67 65 20 69 66 20 74 68 65  r message if the
123a0 20 70 72 61 67 6d 61 20 66 61 69 6c 73 2e 20 5e   pragma fails. ^
123b0 49 66 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  If the.** [SQLIT
123c0 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20  E_FCNTL_PRAGMA] 
123d0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74  file control ret
123e0 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4e 4f 54  urns [SQLITE_NOT
123f0 46 4f 55 4e 44 5d 2c 20 74 68 65 6e 20 6e 6f 72  FOUND], then nor
12400 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41 47 4d 41 5d  mal .** [PRAGMA]
12410 20 70 72 6f 63 65 73 73 69 6e 67 20 63 6f 6e 74   processing cont
12420 69 6e 75 65 73 2e 20 20 5e 49 66 20 74 68 65 20  inues.  ^If the 
12430 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52  [SQLITE_FCNTL_PR
12440 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20 63 6f  AGMA].** file co
12450 6e 74 72 6f 6c 20 72 65 74 75 72 6e 73 20 5b 53  ntrol returns [S
12460 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74 68 65 6e 20  QLITE_OK], then 
12470 74 68 65 20 70 61 72 73 65 72 20 61 73 73 75 6d  the parser assum
12480 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 56  es that the.** V
12490 46 53 20 68 61 73 20 68 61 6e 64 6c 65 64 20 74  FS has handled t
124a0 68 65 20 50 52 41 47 4d 41 20 69 74 73 65 6c 66  he PRAGMA itself
124b0 20 61 6e 64 20 74 68 65 20 70 61 72 73 65 72 20   and the parser 
124c0 67 65 6e 65 72 61 74 65 73 20 61 20 6e 6f 2d 6f  generates a no-o
124d0 70 0a 2a 2a 20 70 72 65 70 61 72 65 64 20 73 74  p.** prepared st
124e0 61 74 65 6d 65 6e 74 20 69 66 20 72 65 73 75 6c  atement if resul
124f0 74 20 73 74 72 69 6e 67 20 69 73 20 4e 55 4c 4c  t string is NULL
12500 2c 20 6f 72 20 74 68 61 74 20 72 65 74 75 72 6e  , or that return
12510 73 20 61 20 63 6f 70 79 0a 2a 2a 20 6f 66 20 74  s a copy.** of t
12520 68 65 20 72 65 73 75 6c 74 20 73 74 72 69 6e 67  he result string
12530 20 69 66 20 74 68 65 20 73 74 72 69 6e 67 20 69   if the string i
12540 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a 2a 2a 20 5e  s non-NULL..** ^
12550 49 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  If the [SQLITE_F
12560 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
12570 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
12580 73 0a 2a 2a 20 61 6e 79 20 72 65 73 75 6c 74 20  s.** any result 
12590 63 6f 64 65 20 6f 74 68 65 72 20 74 68 61 6e 20  code other than 
125a0 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 72 20 5b  [SQLITE_OK] or [
125b0 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 5d  SQLITE_NOTFOUND]
125c0 2c 20 74 68 61 74 20 6d 65 61 6e 73 0a 2a 2a 20  , that means.** 
125d0 74 68 61 74 20 74 68 65 20 56 46 53 20 65 6e 63  that the VFS enc
125e0 6f 75 6e 74 65 72 65 64 20 61 6e 20 65 72 72 6f  ountered an erro
125f0 72 20 77 68 69 6c 65 20 68 61 6e 64 6c 69 6e 67  r while handling
12600 20 74 68 65 20 5b 50 52 41 47 4d 41 5d 20 61 6e   the [PRAGMA] an
12610 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 69 6c 61  d the.** compila
12620 74 69 6f 6e 20 6f 66 20 74 68 65 20 50 52 41 47  tion of the PRAG
12630 4d 41 20 66 61 69 6c 73 20 77 69 74 68 20 61 6e  MA fails with an
12640 20 65 72 72 6f 72 2e 20 20 5e 54 68 65 20 5b 53   error.  ^The [S
12650 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
12660 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20 63 6f 6e 74  MA].** file cont
12670 72 6f 6c 20 6f 63 63 75 72 73 20 61 74 20 74 68  rol occurs at th
12680 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 70  e beginning of p
12690 72 61 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 20  ragma statement 
126a0 61 6e 61 6c 79 73 69 73 20 61 6e 64 20 73 6f 0a  analysis and so.
126b0 2a 2a 20 69 74 20 69 73 20 61 62 6c 65 20 74 6f  ** it is able to
126c0 20 6f 76 65 72 72 69 64 65 20 62 75 69 6c 74 2d   override built-
126d0 69 6e 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74  in [PRAGMA] stat
126e0 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  ements..**.** <l
126f0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
12700 5f 42 55 53 59 48 41 4e 44 4c 45 52 5d 5d 0a 2a  _BUSYHANDLER]].*
12710 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  * ^The [SQLITE_F
12720 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
12730 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e 74 72 6f  ].** file-contro
12740 6c 20 6d 61 79 20 62 65 20 69 6e 76 6f 6b 65 64  l may be invoked
12750 20 62 79 20 53 51 4c 69 74 65 20 6f 6e 20 74 68   by SQLite on th
12760 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
12770 68 61 6e 64 6c 65 0a 2a 2a 20 73 68 6f 72 74 6c  handle.** shortl
12780 79 20 61 66 74 65 72 20 69 74 20 69 73 20 6f 70  y after it is op
12790 65 6e 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f  ened in order to
127a0 20 70 72 6f 76 69 64 65 20 61 20 63 75 73 74 6f   provide a custo
127b0 6d 20 56 46 53 20 77 69 74 68 20 61 63 63 65 73  m VFS with acces
127c0 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63 6f 6e 6e  s.** to the conn
127d0 65 63 74 69 6f 6e 73 20 62 75 73 79 2d 68 61 6e  ections busy-han
127e0 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 2e 20 54  dler callback. T
127f0 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f  he argument is o
12800 66 20 74 79 70 65 20 28 76 6f 69 64 20 2a 2a 29  f type (void **)
12810 0a 2a 2a 20 2d 20 61 6e 20 61 72 72 61 79 20 6f  .** - an array o
12820 66 20 74 77 6f 20 28 76 6f 69 64 20 2a 29 20 76  f two (void *) v
12830 61 6c 75 65 73 2e 20 54 68 65 20 66 69 72 73 74  alues. The first
12840 20 28 76 6f 69 64 20 2a 29 20 61 63 74 75 61 6c   (void *) actual
12850 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a 20 74 6f 20  ly points.** to 
12860 61 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79  a function of ty
12870 70 65 20 28 69 6e 74 20 28 2a 29 28 76 6f 69 64  pe (int (*)(void
12880 20 2a 29 29 2e 20 49 6e 20 6f 72 64 65 72 20 74   *)). In order t
12890 6f 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 6f 6e  o invoke the con
128a0 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 62 75 73 79  nections.** busy
128b0 2d 68 61 6e 64 6c 65 72 2c 20 74 68 69 73 20 66  -handler, this f
128c0 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 62  unction should b
128d0 65 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 74  e invoked with t
128e0 68 65 20 73 65 63 6f 6e 64 20 28 76 6f 69 64 20  he second (void 
128f0 2a 29 20 69 6e 0a 2a 2a 20 74 68 65 20 61 72 72  *) in.** the arr
12900 61 79 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 61  ay as the only a
12910 72 67 75 6d 65 6e 74 2e 20 49 66 20 69 74 20 72  rgument. If it r
12920 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  eturns non-zero,
12930 20 74 68 65 6e 20 74 68 65 20 6f 70 65 72 61 74   then the operat
12940 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c 64 20 62 65  ion.** should be
12950 20 72 65 74 72 69 65 64 2e 20 49 66 20 69 74 20   retried. If it 
12960 72 65 74 75 72 6e 73 20 7a 65 72 6f 2c 20 74 68  returns zero, th
12970 65 20 63 75 73 74 6f 6d 20 56 46 53 20 73 68 6f  e custom VFS sho
12980 75 6c 64 20 61 62 61 6e 64 6f 6e 20 74 68 65 0a  uld abandon the.
12990 2a 2a 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61  ** current opera
129a0 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  tion..**.** <li>
129b0 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54  [[SQLITE_FCNTL_T
129c0 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 5d 0a 2a 2a  EMPFILENAME]].**
129d0 20 5e 41 70 70 6c 69 63 61 74 69 6f 6e 20 63 61   ^Application ca
129e0 6e 20 69 6e 76 6f 6b 65 20 74 68 65 20 5b 53 51  n invoke the [SQ
129f0 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45 4d 50 46  LITE_FCNTL_TEMPF
12a00 49 4c 45 4e 41 4d 45 5d 20 66 69 6c 65 2d 63 6f  ILENAME] file-co
12a10 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20 68 61 76 65  ntrol.** to have
12a20 20 53 51 4c 69 74 65 20 67 65 6e 65 72 61 74 65   SQLite generate
12a30 20 61 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20   a.** temporary 
12a40 66 69 6c 65 6e 61 6d 65 20 75 73 69 6e 67 20 74  filename using t
12a50 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69 74 68  he same algorith
12a60 6d 20 74 68 61 74 20 69 73 20 66 6f 6c 6c 6f 77  m that is follow
12a70 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 0a 2a  ed to generate.*
12a80 2a 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  * temporary file
12a90 6e 61 6d 65 73 20 66 6f 72 20 54 45 4d 50 20 74  names for TEMP t
12aa0 61 62 6c 65 73 20 61 6e 64 20 6f 74 68 65 72 20  ables and other 
12ab0 69 6e 74 65 72 6e 61 6c 20 75 73 65 73 2e 20 20  internal uses.  
12ac0 54 68 65 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20  The.** argument 
12ad0 73 68 6f 75 6c 64 20 62 65 20 61 20 63 68 61 72  should be a char
12ae0 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65  ** which will be
12af0 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65   filled with the
12b00 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a 20 77 72 69   filename.** wri
12b10 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72 79  tten into memory
12b20 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b   obtained from [
12b30 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
12b40 5d 2e 20 20 54 68 65 20 63 61 6c 6c 65 72 20 73  ].  The caller s
12b50 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76 6f 6b 65 20  hould.** invoke 
12b60 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d  [sqlite3_free()]
12b70 20 6f 6e 20 74 68 65 20 72 65 73 75 6c 74 20 74   on the result t
12b80 6f 20 61 76 6f 69 64 20 61 20 6d 65 6d 6f 72 79  o avoid a memory
12b90 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69   leak..**.** <li
12ba0 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
12bb0 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 54  MMAP_SIZE]].** T
12bc0 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  he [SQLITE_FCNTL
12bd0 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66 69 6c 65  _MMAP_SIZE] file
12be0 20 63 6f 6e 74 72 6f 6c 20 69 73 20 75 73 65 64   control is used
12bf0 20 74 6f 20 71 75 65 72 79 20 6f 72 20 73 65 74   to query or set
12c00 20 74 68 65 0a 2a 2a 20 6d 61 78 69 6d 75 6d 20   the.** maximum 
12c10 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
12c20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 75 73 65  that will be use
12c30 64 20 66 6f 72 20 6d 65 6d 6f 72 79 2d 6d 61 70  d for memory-map
12c40 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20 54 68 65 20  ped I/O..** The 
12c50 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
12c60 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c 75 65  inter to a value
12c70 20 6f 66 20 74 79 70 65 20 73 71 6c 69 74 65 33   of type sqlite3
12c80 5f 69 6e 74 36 34 20 74 68 61 74 0a 2a 2a 20 69  _int64 that.** i
12c90 73 20 61 6e 20 61 64 76 69 73 6f 72 79 20 6d 61  s an advisory ma
12ca0 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
12cb0 62 79 74 65 73 20 69 6e 20 74 68 65 20 66 69 6c  bytes in the fil
12cc0 65 20 74 6f 20 6d 65 6d 6f 72 79 20 6d 61 70 2e  e to memory map.
12cd0 20 20 54 68 65 0a 2a 2a 20 70 6f 69 6e 74 65 72    The.** pointer
12ce0 20 69 73 20 6f 76 65 72 77 72 69 74 74 65 6e 20   is overwritten 
12cf0 77 69 74 68 20 74 68 65 20 6f 6c 64 20 76 61 6c  with the old val
12d00 75 65 2e 20 20 54 68 65 20 6c 69 6d 69 74 20 69  ue.  The limit i
12d10 73 20 6e 6f 74 20 63 68 61 6e 67 65 64 20 69 66  s not changed if
12d20 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20 6f 72  .** the value or
12d30 69 67 69 6e 61 6c 6c 79 20 70 6f 69 6e 74 65 64  iginally pointed
12d40 20 74 6f 20 69 73 20 6e 65 67 61 74 69 76 65 2c   to is negative,
12d50 20 61 6e 64 20 73 6f 20 74 68 65 20 63 75 72 72   and so the curr
12d60 65 6e 74 20 6c 69 6d 69 74 20 0a 2a 2a 20 63 61  ent limit .** ca
12d70 6e 20 62 65 20 71 75 65 72 69 65 64 20 62 79 20  n be queried by 
12d80 70 61 73 73 69 6e 67 20 69 6e 20 61 20 70 6f 69  passing in a poi
12d90 6e 74 65 72 20 74 6f 20 61 20 6e 65 67 61 74 69  nter to a negati
12da0 76 65 20 6e 75 6d 62 65 72 2e 20 20 54 68 69 73  ve number.  This
12db0 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  .** file-control
12dc0 20 69 73 20 75 73 65 64 20 69 6e 74 65 72 6e 61   is used interna
12dd0 6c 6c 79 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  lly to implement
12de0 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69   [PRAGMA mmap_si
12df0 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ze]..**.** <li>[
12e00 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52  [SQLITE_FCNTL_TR
12e10 41 43 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51  ACE]].** The [SQ
12e20 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45  LITE_FCNTL_TRACE
12e30 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 70  ] file control p
12e40 72 6f 76 69 64 65 73 20 61 64 76 69 73 6f 72 79  rovides advisory
12e50 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 2a 2a 20   information.** 
12e60 74 6f 20 74 68 65 20 56 46 53 20 61 62 6f 75 74  to the VFS about
12e70 20 77 68 61 74 20 74 68 65 20 68 69 67 68 65 72   what the higher
12e80 20 6c 61 79 65 72 73 20 6f 66 20 74 68 65 20 53   layers of the S
12e90 51 4c 69 74 65 20 73 74 61 63 6b 20 61 72 65 20  QLite stack are 
12ea0 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68 69 73 20 66  doing..** This f
12eb0 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 75  ile control is u
12ec0 73 65 64 20 62 79 20 73 6f 6d 65 20 56 46 53 20  sed by some VFS 
12ed0 61 63 74 69 76 69 74 79 20 74 72 61 63 69 6e 67  activity tracing
12ee0 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a 20 54 68 65   [shims]..** The
12ef0 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 7a   argument is a z
12f00 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64 20 73  ero-terminated s
12f10 74 72 69 6e 67 2e 20 20 48 69 67 68 65 72 20 6c  tring.  Higher l
12f20 61 79 65 72 73 20 69 6e 20 74 68 65 0a 2a 2a 20  ayers in the.** 
12f30 53 51 4c 69 74 65 20 73 74 61 63 6b 20 6d 61 79  SQLite stack may
12f40 20 67 65 6e 65 72 61 74 65 20 69 6e 73 74 61 6e   generate instan
12f50 63 65 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65  ces of this file
12f60 20 63 6f 6e 74 72 6f 6c 20 69 66 0a 2a 2a 20 74   control if.** t
12f70 68 65 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 46  he [SQLITE_USE_F
12f80 43 4e 54 4c 5f 54 52 41 43 45 5d 20 63 6f 6d 70  CNTL_TRACE] comp
12f90 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
12fa0 69 73 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a  is enabled..**.*
12fb0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12fc0 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45 44 5d 5d  CNTL_HAS_MOVED]]
12fd0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
12fe0 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56 45 44 5d  FCNTL_HAS_MOVED]
12ff0 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 6e   file control in
13000 74 65 72 70 72 65 74 73 20 69 74 73 20 61 72 67  terprets its arg
13010 75 6d 65 6e 74 20 61 73 20 61 0a 2a 2a 20 70 6f  ument as a.** po
13020 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65  inter to an inte
13030 67 65 72 20 61 6e 64 20 69 74 20 77 72 69 74 65  ger and it write
13040 73 20 61 20 62 6f 6f 6c 65 61 6e 20 69 6e 74 6f  s a boolean into
13050 20 74 68 61 74 20 69 6e 74 65 67 65 72 20 64 65   that integer de
13060 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f 6e 20 77 68  pending.** on wh
13070 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65  ether or not the
13080 20 66 69 6c 65 20 68 61 73 20 62 65 65 6e 20 72   file has been r
13090 65 6e 61 6d 65 64 2c 20 6d 6f 76 65 64 2c 20 6f  enamed, moved, o
130a0 72 20 64 65 6c 65 74 65 64 20 73 69 6e 63 65 20  r deleted since 
130b0 69 74 0a 2a 2a 20 77 61 73 20 66 69 72 73 74 20  it.** was first 
130c0 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  opened..**.** <l
130d0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
130e0 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c  _WIN32_GET_HANDL
130f0 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
13100 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 47  TE_FCNTL_WIN32_G
13110 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70 63 6f 64  ET_HANDLE] opcod
13120 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f  e can be used to
13130 20 6f 62 74 61 69 6e 20 74 68 65 0a 2a 2a 20 75   obtain the.** u
13140 6e 64 65 72 6c 79 69 6e 67 20 6e 61 74 69 76 65  nderlying native
13150 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 61 73 73   file handle ass
13160 6f 63 69 61 74 65 64 20 77 69 74 68 20 61 20 66  ociated with a f
13170 69 6c 65 20 68 61 6e 64 6c 65 2e 20 20 54 68 69  ile handle.  Thi
13180 73 20 66 69 6c 65 0a 2a 2a 20 63 6f 6e 74 72 6f  s file.** contro
13190 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
131a0 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 20 70   argument as a p
131b0 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 61 74 69  ointer to a nati
131c0 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20 61  ve file handle a
131d0 6e 64 0a 2a 2a 20 77 72 69 74 65 73 20 74 68 65  nd.** writes the
131e0 20 72 65 73 75 6c 74 69 6e 67 20 76 61 6c 75 65   resulting value
131f0 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c   there..**.** <l
13200 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13210 5f 57 49 4e 33 32 5f 53 45 54 5f 48 41 4e 44 4c  _WIN32_SET_HANDL
13220 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  E]].** The [SQLI
13230 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53  TE_FCNTL_WIN32_S
13240 45 54 5f 48 41 4e 44 4c 45 5d 20 6f 70 63 6f 64  ET_HANDLE] opcod
13250 65 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65  e is used for de
13260 62 75 67 67 69 6e 67 2e 20 20 54 68 69 73 0a 2a  bugging.  This.*
13270 2a 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73 20  * opcode causes 
13280 74 68 65 20 78 46 69 6c 65 43 6f 6e 74 72 6f 6c  the xFileControl
13290 20 6d 65 74 68 6f 64 20 74 6f 20 73 77 61 70 20   method to swap 
132a0 74 68 65 20 66 69 6c 65 20 68 61 6e 64 6c 65 20  the file handle 
132b0 77 69 74 68 20 74 68 65 20 6f 6e 65 0a 2a 2a 20  with the one.** 
132c0 70 6f 69 6e 74 65 64 20 74 6f 20 62 79 20 74 68  pointed to by th
132d0 65 20 70 41 72 67 20 61 72 67 75 6d 65 6e 74 2e  e pArg argument.
132e0 20 20 54 68 69 73 20 63 61 70 61 62 69 6c 69 74    This capabilit
132f0 79 20 69 73 20 75 73 65 64 20 64 75 72 69 6e 67  y is used during
13300 20 74 65 73 74 69 6e 67 0a 2a 2a 20 61 6e 64 20   testing.** and 
13310 6f 6e 6c 79 20 6e 65 65 64 73 20 74 6f 20 62 65  only needs to be
13320 20 73 75 70 70 6f 72 74 65 64 20 77 68 65 6e 20   supported when 
13330 53 51 4c 49 54 45 5f 54 45 53 54 20 69 73 20 64  SQLITE_TEST is d
13340 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  efined..**.** <l
13350 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13360 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d 0a 2a 2a 20  _WAL_BLOCK]].** 
13370 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
13380 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 20 69 73 20  L_WAL_BLOCK] is 
13390 61 20 73 69 67 6e 61 6c 20 74 6f 20 74 68 65 20  a signal to the 
133a0 56 46 53 20 6c 61 79 65 72 20 74 68 61 74 20 69  VFS layer that i
133b0 74 20 6d 69 67 68 74 0a 2a 2a 20 62 65 20 61 64  t might.** be ad
133c0 76 61 6e 74 61 67 65 6f 75 73 20 74 6f 20 62 6c  vantageous to bl
133d0 6f 63 6b 20 6f 6e 20 74 68 65 20 6e 65 78 74 20  ock on the next 
133e0 57 41 4c 20 6c 6f 63 6b 20 69 66 20 74 68 65 20  WAL lock if the 
133f0 6c 6f 63 6b 20 69 73 20 6e 6f 74 20 69 6d 6d 65  lock is not imme
13400 64 69 61 74 65 6c 79 0a 2a 2a 20 61 76 61 69 6c  diately.** avail
13410 61 62 6c 65 2e 20 20 54 68 65 20 57 41 4c 20 73  able.  The WAL s
13420 75 62 73 79 73 74 65 6d 20 69 73 73 75 65 73 20  ubsystem issues 
13430 74 68 69 73 20 73 69 67 6e 61 6c 20 64 75 72 69  this signal duri
13440 6e 67 20 72 61 72 65 0a 2a 2a 20 63 69 72 63 75  ng rare.** circu
13450 6d 73 74 61 6e 63 65 73 20 69 6e 20 6f 72 64 65  mstances in orde
13460 72 20 74 6f 20 66 69 78 20 61 20 70 72 6f 62 6c  r to fix a probl
13470 65 6d 20 77 69 74 68 20 70 72 69 6f 72 69 74 79  em with priority
13480 20 69 6e 76 65 72 73 69 6f 6e 2e 0a 2a 2a 20 41   inversion..** A
13490 70 70 6c 69 63 61 74 69 6f 6e 73 20 73 68 6f 75  pplications shou
134a0 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20  ld <em>not</em> 
134b0 75 73 65 20 74 68 69 73 20 66 69 6c 65 2d 63 6f  use this file-co
134c0 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  ntrol..**.** <li
134d0 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
134e0 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20 54 68 65 20  ZIPVFS]].** The 
134f0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 5a 49  [SQLITE_FCNTL_ZI
13500 50 56 46 53 5d 20 6f 70 63 6f 64 65 20 69 73 20  PVFS] opcode is 
13510 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 7a  implemented by z
13520 69 70 76 66 73 20 6f 6e 6c 79 2e 20 41 6c 6c 20  ipvfs only. All 
13530 6f 74 68 65 72 0a 2a 2a 20 56 46 53 20 73 68 6f  other.** VFS sho
13540 75 6c 64 20 72 65 74 75 72 6e 20 53 51 4c 49 54  uld return SQLIT
13550 45 5f 4e 4f 54 46 4f 55 4e 44 20 66 6f 72 20 74  E_NOTFOUND for t
13560 68 69 73 20 6f 70 63 6f 64 65 2e 0a 2a 2a 0a 2a  his opcode..**.*
13570 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13580 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a 2a 20 54 68  CNTL_RBU]].** Th
13590 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
135a0 52 42 55 5d 20 6f 70 63 6f 64 65 20 69 73 20 69  RBU] opcode is i
135b0 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 74 68  mplemented by th
135c0 65 20 73 70 65 63 69 61 6c 20 56 46 53 20 75 73  e special VFS us
135d0 65 64 20 62 79 0a 2a 2a 20 74 68 65 20 52 42 55  ed by.** the RBU
135e0 20 65 78 74 65 6e 73 69 6f 6e 20 6f 6e 6c 79 2e   extension only.
135f0 20 20 41 6c 6c 20 6f 74 68 65 72 20 56 46 53 20    All other VFS 
13600 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53 51  should return SQ
13610 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66 6f  LITE_NOTFOUND fo
13620 72 0a 2a 2a 20 74 68 69 73 20 6f 70 63 6f 64 65  r.** this opcode
13630 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  .  .**.** <li>[[
13640 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47  SQLITE_FCNTL_BEG
13650 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d  IN_ATOMIC_WRITE]
13660 5d 0a 2a 2a 20 49 66 20 74 68 65 20 5b 53 51 4c  ].** If the [SQL
13670 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f  ITE_FCNTL_BEGIN_
13680 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70  ATOMIC_WRITE] op
13690 63 6f 64 65 20 72 65 74 75 72 6e 73 20 53 51 4c  code returns SQL
136a0 49 54 45 5f 4f 4b 2c 20 74 68 65 6e 0a 2a 2a 20  ITE_OK, then.** 
136b0 74 68 65 20 66 69 6c 65 20 64 65 73 63 72 69 70  the file descrip
136c0 74 6f 72 20 69 73 20 70 6c 61 63 65 64 20 69 6e  tor is placed in
136d0 20 22 62 61 74 63 68 20 77 72 69 74 65 20 6d 6f   "batch write mo
136e0 64 65 22 2c 20 77 68 69 63 68 0a 2a 2a 20 6d 65  de", which.** me
136f0 61 6e 73 20 61 6c 6c 20 73 75 62 73 65 71 75 65  ans all subseque
13700 6e 74 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  nt write operati
13710 6f 6e 73 20 77 69 6c 6c 20 62 65 20 64 65 66 65  ons will be defe
13720 72 72 65 64 20 61 6e 64 20 64 6f 6e 65 0a 2a 2a  rred and done.**
13730 20 61 74 6f 6d 69 63 61 6c 6c 79 20 61 74 20 74   atomically at t
13740 68 65 20 6e 65 78 74 20 5b 53 51 4c 49 54 45 5f  he next [SQLITE_
13750 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
13760 4d 49 43 5f 57 52 49 54 45 5d 2e 20 20 53 79 73  MIC_WRITE].  Sys
13770 74 65 6d 73 0a 2a 2a 20 74 68 61 74 20 64 6f 20  tems.** that do 
13780 6e 6f 74 20 73 75 70 70 6f 72 74 20 62 61 74 63  not support batc
13790 68 20 61 74 6f 6d 69 63 20 77 72 69 74 65 73 20  h atomic writes 
137a0 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49  will return SQLI
137b0 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e 0a 2a 2a 20  TE_NOTFOUND..** 
137c0 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61 20 73 75 63  ^Following a suc
137d0 63 65 73 73 66 75 6c 20 53 51 4c 49 54 45 5f 46  cessful SQLITE_F
137e0 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49  CNTL_BEGIN_ATOMI
137f0 43 5f 57 52 49 54 45 20 61 6e 64 20 70 72 69 6f  C_WRITE and prio
13800 72 20 74 6f 0a 2a 2a 20 74 68 65 20 63 6c 6f 73  r to.** the clos
13810 69 6e 67 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  ing [SQLITE_FCNT
13820 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f  L_COMMIT_ATOMIC_
13830 57 52 49 54 45 5d 20 6f 72 0a 2a 2a 20 5b 53 51  WRITE] or.** [SQ
13840 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42  LITE_FCNTL_ROLLB
13850 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  ACK_ATOMIC_WRITE
13860 5d 2c 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 6d  ], SQLite will m
13870 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46 53 20 69 6e  ake.** no VFS in
13880 74 65 72 66 61 63 65 20 63 61 6c 6c 73 20 6f 6e  terface calls on
13890 20 74 68 65 20 73 61 6d 65 20 5b 73 71 6c 69 74   the same [sqlit
138a0 65 33 5f 66 69 6c 65 5d 20 66 69 6c 65 20 64 65  e3_file] file de
138b0 73 63 72 69 70 74 6f 72 0a 2a 2a 20 65 78 63 65  scriptor.** exce
138c0 70 74 20 66 6f 72 20 63 61 6c 6c 73 20 74 6f 20  pt for calls to 
138d0 74 68 65 20 78 57 72 69 74 65 20 6d 65 74 68 6f  the xWrite metho
138e0 64 20 61 6e 64 20 74 68 65 20 78 46 69 6c 65 43  d and the xFileC
138f0 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f 64 0a 2a 2a  ontrol method.**
13900 20 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 46 43   with [SQLITE_FC
13910 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54 5d 2e 0a  NTL_SIZE_HINT]..
13920 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13930 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f  TE_FCNTL_COMMIT_
13940 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a  ATOMIC_WRITE]].*
13950 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
13960 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49  NTL_COMMIT_ATOMI
13970 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65 20  C_WRITE] opcode 
13980 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74 65  causes all write
13990 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20 73  .** operations s
139a0 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f 75  ince the previou
139b0 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c  s successful cal
139c0 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54 45  l to .** [SQLITE
139d0 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
139e0 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62 65  MIC_WRITE] to be
139f0 20 70 65 72 66 6f 72 6d 65 64 20 61 74 6f 6d 69   performed atomi
13a00 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68 69 73 20 66  cally..** This f
13a10 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75  ile control retu
13a20 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  rns [SQLITE_OK] 
13a30 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74  if and only if t
13a40 68 65 20 77 72 69 74 65 73 20 77 65 72 65 0a 2a  he writes were.*
13a50 2a 20 61 6c 6c 20 70 65 72 66 6f 72 6d 65 64 20  * all performed 
13a60 73 75 63 63 65 73 73 66 75 6c 6c 79 20 61 6e 64  successfully and
13a70 20 68 61 76 65 20 62 65 65 6e 20 63 6f 6d 6d 69   have been commi
13a80 74 74 65 64 20 74 6f 20 70 65 72 73 69 73 74 65  tted to persiste
13a90 6e 74 20 73 74 6f 72 61 67 65 2e 0a 2a 2a 20 5e  nt storage..** ^
13aa0 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68  Regardless of wh
13ab0 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 69 74 20  ether or not it 
13ac0 69 73 20 73 75 63 63 65 73 73 66 75 6c 2c 20 74  is successful, t
13ad0 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13ae0 20 74 61 6b 65 73 0a 2a 2a 20 74 68 65 20 66 69   takes.** the fi
13af0 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f 75  le descriptor ou
13b00 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74 65  t of batch write
13b10 20 6d 6f 64 65 20 73 6f 20 74 68 61 74 20 61 6c   mode so that al
13b20 6c 20 73 75 62 73 65 71 75 65 6e 74 0a 2a 2a 20  l subsequent.** 
13b30 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 73  write operations
13b40 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e 74   are independent
13b50 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c  ..** ^SQLite wil
13b60 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 53  l never invoke S
13b70 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d  QLITE_FCNTL_COMM
13b80 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 20  IT_ATOMIC_WRITE 
13b90 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20 70 72 69  without.** a pri
13ba0 6f 72 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  or successful ca
13bb0 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45 5f 46 43  ll to [SQLITE_FC
13bc0 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
13bd0 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  _WRITE]..**.** <
13be0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
13bf0 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49  L_ROLLBACK_ATOMI
13c00 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a 20 54 68 65  C_WRITE]].** The
13c10 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
13c20 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
13c30 52 49 54 45 5d 20 6f 70 63 6f 64 65 20 63 61 75  RITE] opcode cau
13c40 73 65 73 20 61 6c 6c 20 77 72 69 74 65 0a 2a 2a  ses all write.**
13c50 20 6f 70 65 72 61 74 69 6f 6e 73 20 73 69 6e 63   operations sinc
13c60 65 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73  e the previous s
13c70 75 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20 74  uccessful call t
13c80 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  o .** [SQLITE_FC
13c90 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43  NTL_BEGIN_ATOMIC
13ca0 5f 57 52 49 54 45 5d 20 74 6f 20 62 65 20 72 6f  _WRITE] to be ro
13cb0 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a 2a 20 5e 54  lled back..** ^T
13cc0 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  his file control
13cd0 20 74 61 6b 65 73 20 74 68 65 20 66 69 6c 65 20   takes the file 
13ce0 64 65 73 63 72 69 70 74 6f 72 20 6f 75 74 20 6f  descriptor out o
13cf0 66 20 62 61 74 63 68 20 77 72 69 74 65 20 6d 6f  f batch write mo
13d00 64 65 0a 2a 2a 20 73 6f 20 74 68 61 74 20 61 6c  de.** so that al
13d10 6c 20 73 75 62 73 65 71 75 65 6e 74 20 77 72 69  l subsequent wri
13d20 74 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 61 72  te operations ar
13d30 65 20 69 6e 64 65 70 65 6e 64 65 6e 74 2e 0a 2a  e independent..*
13d40 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 6e  * ^SQLite will n
13d50 65 76 65 72 20 69 6e 76 6f 6b 65 20 53 51 4c 49  ever invoke SQLI
13d60 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43  TE_FCNTL_ROLLBAC
13d70 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 20 77  K_ATOMIC_WRITE w
13d80 69 74 68 6f 75 74 0a 2a 2a 20 61 20 70 72 69 6f  ithout.** a prio
13d90 72 20 73 75 63 63 65 73 73 66 75 6c 20 63 61 6c  r successful cal
13da0 6c 20 74 6f 20 5b 53 51 4c 49 54 45 5f 46 43 4e  l to [SQLITE_FCN
13db0 54 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f  TL_BEGIN_ATOMIC_
13dc0 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c  WRITE]..**.** <l
13dd0 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13de0 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55 54 5d 5d 0a  _LOCK_TIMEOUT]].
13df0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
13e00 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55  CNTL_LOCK_TIMEOU
13e10 54 5d 20 6f 70 63 6f 64 65 20 63 61 75 73 65 73  T] opcode causes
13e20 20 61 74 74 65 6d 70 74 73 20 74 6f 20 6f 62 74   attempts to obt
13e30 61 69 6e 0a 2a 2a 20 61 20 66 69 6c 65 20 6c 6f  ain.** a file lo
13e40 63 6b 20 75 73 69 6e 67 20 74 68 65 20 78 4c 6f  ck using the xLo
13e50 63 6b 20 6f 72 20 78 53 68 6d 4c 6f 63 6b 20 6d  ck or xShmLock m
13e60 65 74 68 6f 64 73 20 6f 66 20 74 68 65 20 56 46  ethods of the VF
13e70 53 20 74 6f 20 77 61 69 74 0a 2a 2a 20 66 6f 72  S to wait.** for
13e80 20 75 70 20 74 6f 20 4d 20 6d 69 6c 6c 69 73 65   up to M millise
13e90 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 66 61 69  conds before fai
13ea0 6c 69 6e 67 2c 20 77 68 65 72 65 20 4d 20 69 73  ling, where M is
13eb0 20 74 68 65 20 73 69 6e 67 6c 65 20 0a 2a 2a 20   the single .** 
13ec0 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72  unsigned integer
13ed0 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a   parameter..**.*
13ee0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13ef0 43 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f  CNTL_DATA_VERSIO
13f00 4e 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  N]].** The [SQLI
13f10 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
13f20 52 53 49 4f 4e 5d 20 6f 70 63 6f 64 65 20 69 73  RSION] opcode is
13f30 20 75 73 65 64 20 74 6f 20 64 65 74 65 63 74 20   used to detect 
13f40 63 68 61 6e 67 65 73 20 74 6f 0a 2a 2a 20 61 20  changes to.** a 
13f50 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 20 20  database file.  
13f60 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
13f70 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 33  a pointer to a 3
13f80 32 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69  2-bit unsigned i
13f90 6e 74 65 67 65 72 2e 0a 2a 2a 20 54 68 65 20 22  nteger..** The "
13fa0 64 61 74 61 20 76 65 72 73 69 6f 6e 22 20 66 6f  data version" fo
13fb0 72 20 74 68 65 20 70 61 67 65 72 20 69 73 20 77  r the pager is w
13fc0 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65 20  ritten into the 
13fd0 70 6f 69 6e 74 65 72 2e 20 20 54 68 65 0a 2a 2a  pointer.  The.**
13fe0 20 22 64 61 74 61 20 76 65 72 73 69 6f 6e 22 20   "data version" 
13ff0 63 68 61 6e 67 65 73 20 77 68 65 6e 65 76 65 72  changes whenever
14000 20 61 6e 79 20 63 68 61 6e 67 65 20 6f 63 63 75   any change occu
14010 72 73 20 74 6f 20 74 68 65 20 63 6f 72 72 65 73  rs to the corres
14020 70 6f 6e 64 69 6e 67 0a 2a 2a 20 64 61 74 61 62  ponding.** datab
14030 61 73 65 20 66 69 6c 65 2c 20 65 69 74 68 65 72  ase file, either
14040 20 74 68 72 6f 75 67 68 20 53 51 4c 20 73 74 61   through SQL sta
14050 74 65 6d 65 6e 74 73 20 6f 6e 20 74 68 65 20 73  tements on the s
14060 61 6d 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  ame database.** 
14070 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 72 20 74 68  connection or th
14080 72 6f 75 67 68 20 74 72 61 6e 73 61 63 74 69 6f  rough transactio
14090 6e 73 20 63 6f 6d 6d 69 74 74 65 64 20 62 79 20  ns committed by 
140a0 73 65 70 61 72 61 74 65 20 64 61 74 61 62 61 73  separate databas
140b0 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  e.** connections
140c0 20 70 6f 73 73 69 62 6c 79 20 69 6e 20 6f 74 68   possibly in oth
140d0 65 72 20 70 72 6f 63 65 73 73 65 73 2e 20 54 68  er processes. Th
140e0 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c  e [sqlite3_total
140f0 5f 63 68 61 6e 67 65 73 28 29 5d 0a 2a 2a 20 69  _changes()].** i
14100 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
14110 75 73 65 64 20 74 6f 20 66 69 6e 64 20 69 66 20  used to find if 
14120 61 6e 79 20 64 61 74 61 62 61 73 65 20 6f 6e 20  any database on 
14130 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 68  the connection h
14140 61 73 20 63 68 61 6e 67 65 64 2c 0a 2a 2a 20 62  as changed,.** b
14150 75 74 20 74 68 61 74 20 69 6e 74 65 72 66 61 63  ut that interfac
14160 65 20 72 65 73 70 6f 6e 64 73 20 74 6f 20 63 68  e responds to ch
14170 61 6e 67 65 73 20 6f 6e 20 54 45 4d 50 20 61 73  anges on TEMP as
14180 20 77 65 6c 6c 20 61 73 20 4d 41 49 4e 20 61 6e   well as MAIN an
14190 64 20 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 70 72  d does.** not pr
141a0 6f 76 69 64 65 20 61 20 6d 65 63 68 61 6e 69 73  ovide a mechanis
141b0 6d 20 74 6f 20 64 65 74 65 63 74 20 63 68 61 6e  m to detect chan
141c0 67 65 73 20 74 6f 20 4d 41 49 4e 20 6f 6e 6c 79  ges to MAIN only
141d0 2e 20 20 41 6c 73 6f 2c 20 74 68 65 0a 2a 2a 20  .  Also, the.** 
141e0 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63  [sqlite3_total_c
141f0 68 61 6e 67 65 73 28 29 5d 20 69 6e 74 65 72 66  hanges()] interf
14200 61 63 65 20 72 65 73 70 6f 6e 64 73 20 74 6f 20  ace responds to 
14210 69 6e 74 65 72 6e 61 6c 20 63 68 61 6e 67 65 73  internal changes
14220 20 6f 6e 6c 79 20 61 6e 64 0a 2a 2a 20 6f 6d 69   only and.** omi
14230 74 73 20 63 68 61 6e 67 65 73 20 6d 61 64 65 20  ts changes made 
14240 62 79 20 6f 74 68 65 72 20 64 61 74 61 62 61 73  by other databas
14250 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2e 20 20  e connections.  
14260 54 68 65 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 64  The.** [PRAGMA d
14270 61 74 61 5f 76 65 72 73 69 6f 6e 5d 20 63 6f 6d  ata_version] com
14280 6d 61 6e 64 20 70 72 6f 76 69 64 65 20 61 20 6d  mand provide a m
14290 65 63 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65  echanism to dete
142a0 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a 2a  ct changes to.**
142b0 20 61 20 73 69 6e 67 6c 65 20 61 74 74 61 63 68   a single attach
142c0 65 64 20 64 61 74 61 62 61 73 65 20 74 68 61 74  ed database that
142d0 20 6f 63 63 75 72 20 64 75 65 20 74 6f 20 6f 74   occur due to ot
142e0 68 65 72 20 64 61 74 61 62 61 73 65 20 63 6f 6e  her database con
142f0 6e 65 63 74 69 6f 6e 73 2c 0a 2a 2a 20 62 75 74  nections,.** but
14300 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20 69   omits changes i
14310 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 74 68  mplemented by th
14320 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  e database conne
14330 63 74 69 6f 6e 20 6f 6e 20 77 68 69 63 68 20 69  ction on which i
14340 74 20 69 73 0a 2a 2a 20 63 61 6c 6c 65 64 2e 20  t is.** called. 
14350 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 72   This file contr
14360 6f 6c 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 6d  ol is the only m
14370 65 63 68 61 6e 69 73 6d 20 74 6f 20 64 65 74 65  echanism to dete
14380 63 74 20 63 68 61 6e 67 65 73 20 74 68 61 74 0a  ct changes that.
14390 2a 2a 20 68 61 70 70 65 6e 20 65 69 74 68 65 72  ** happen either
143a0 20 69 6e 74 65 72 6e 61 6c 6c 79 20 6f 72 20 65   internally or e
143b0 78 74 65 72 6e 61 6c 6c 79 20 61 6e 64 20 74 68  xternally and th
143c0 61 74 20 61 72 65 20 61 73 73 6f 63 69 61 74 65  at are associate
143d0 64 20 77 69 74 68 0a 2a 2a 20 61 20 70 61 72 74  d with.** a part
143e0 69 63 75 6c 61 72 20 61 74 74 61 63 68 65 64 20  icular attached 
143f0 64 61 74 61 62 61 73 65 2e 0a 2a 2a 20 3c 2f 75  database..** </u
14400 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  l>.*/.#define SQ
14410 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 53  LITE_FCNTL_LOCKS
14420 54 41 54 45 20 20 20 20 20 20 20 20 20 20 20 20  TATE            
14430 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c     1.#define SQL
14440 49 54 45 5f 46 43 4e 54 4c 5f 47 45 54 5f 4c 4f  ITE_FCNTL_GET_LO
14450 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20  CKPROXYFILE     
14460 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    2.#define SQLI
14470 54 45 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43  TE_FCNTL_SET_LOC
14480 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20 20 20  KPROXYFILE      
14490 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   3.#define SQLIT
144a0 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f 45 52 52  E_FCNTL_LAST_ERR
144b0 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  NO              
144c0 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  4.#define SQLITE
144d0 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e 54  _FCNTL_SIZE_HINT
144e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35                 5
144f0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14500 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49 5a 45  FCNTL_CHUNK_SIZE
14510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 36 0a                6.
14520 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14530 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
14540 52 20 20 20 20 20 20 20 20 20 20 20 20 37 0a 23  R            7.#
14550 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14560 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44  NTL_SYNC_OMITTED
14570 20 20 20 20 20 20 20 20 20 20 20 20 38 0a 23 64              8.#d
14580 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14590 54 4c 5f 57 49 4e 33 32 5f 41 56 5f 52 45 54 52  TL_WIN32_AV_RETR
145a0 59 20 20 20 20 20 20 20 20 20 20 39 0a 23 64 65  Y          9.#de
145b0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
145c0 4c 5f 50 45 52 53 49 53 54 5f 57 41 4c 20 20 20  L_PERSIST_WAL   
145d0 20 20 20 20 20 20 20 20 20 31 30 0a 23 64 65 66           10.#def
145e0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
145f0 5f 4f 56 45 52 57 52 49 54 45 20 20 20 20 20 20  _OVERWRITE      
14600 20 20 20 20 20 20 20 20 31 31 0a 23 64 65 66 69          11.#defi
14610 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14620 56 46 53 4e 41 4d 45 20 20 20 20 20 20 20 20 20  VFSNAME         
14630 20 20 20 20 20 20 20 31 32 0a 23 64 65 66 69 6e         12.#defin
14640 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50  e SQLITE_FCNTL_P
14650 4f 57 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49  OWERSAFE_OVERWRI
14660 54 45 20 20 20 20 31 33 0a 23 64 65 66 69 6e 65  TE    13.#define
14670 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52   SQLITE_FCNTL_PR
14680 41 47 4d 41 20 20 20 20 20 20 20 20 20 20 20 20  AGMA            
14690 20 20 20 20 20 31 34 0a 23 64 65 66 69 6e 65 20       14.#define 
146a0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 55 53  SQLITE_FCNTL_BUS
146b0 59 48 41 4e 44 4c 45 52 20 20 20 20 20 20 20 20  YHANDLER        
146c0 20 20 20 20 31 35 0a 23 64 65 66 69 6e 65 20 53      15.#define S
146d0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 45 4d 50  QLITE_FCNTL_TEMP
146e0 46 49 4c 45 4e 41 4d 45 20 20 20 20 20 20 20 20  FILENAME        
146f0 20 20 20 31 36 0a 23 64 65 66 69 6e 65 20 53 51     16.#define SQ
14700 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d 4d 41 50 5f  LITE_FCNTL_MMAP_
14710 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 20  SIZE            
14720 20 20 31 38 0a 23 64 65 66 69 6e 65 20 53 51 4c    18.#define SQL
14730 49 54 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 20  ITE_FCNTL_TRACE 
14740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14750 20 31 39 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   19.#define SQLI
14760 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
14770 45 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ED              
14780 32 30 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  20.#define SQLIT
14790 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 20 20 20 20  E_FCNTL_SYNC    
147a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
147b0 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
147c0 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48  _FCNTL_COMMIT_PH
147d0 41 53 45 54 57 4f 20 20 20 20 20 20 20 20 32 32  ASETWO        22
147e0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
147f0 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f  FCNTL_WIN32_SET_
14800 48 41 4e 44 4c 45 20 20 20 20 20 20 20 32 33 0a  HANDLE       23.
14810 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14820 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 20 20  CNTL_WAL_BLOCK  
14830 20 20 20 20 20 20 20 20 20 20 20 20 32 34 0a 23              24.#
14840 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14850 4e 54 4c 5f 5a 49 50 56 46 53 20 20 20 20 20 20  NTL_ZIPVFS      
14860 20 20 20 20 20 20 20 20 20 20 20 32 35 0a 23 64             25.#d
14870 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14880 54 4c 5f 52 42 55 20 20 20 20 20 20 20 20 20 20  TL_RBU          
14890 20 20 20 20 20 20 20 20 20 20 32 36 0a 23 64 65            26.#de
148a0 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
148b0 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 20 20 20  L_VFS_POINTER   
148c0 20 20 20 20 20 20 20 20 20 32 37 0a 23 64 65 66           27.#def
148d0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
148e0 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45 52  _JOURNAL_POINTER
148f0 20 20 20 20 20 20 20 20 32 38 0a 23 64 65 66 69          28.#defi
14900 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14910 57 49 4e 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45  WIN32_GET_HANDLE
14920 20 20 20 20 20 20 20 32 39 0a 23 64 65 66 69 6e         29.#defin
14930 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50  e SQLITE_FCNTL_P
14940 44 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20  DB              
14950 20 20 20 20 20 20 33 30 0a 23 64 65 66 69 6e 65        30.#define
14960 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45   SQLITE_FCNTL_BE
14970 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
14980 20 20 20 20 20 33 31 0a 23 64 65 66 69 6e 65 20       31.#define 
14990 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
149a0 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
149b0 20 20 20 20 33 32 0a 23 64 65 66 69 6e 65 20 53      32.#define S
149c0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c 4c  QLITE_FCNTL_ROLL
149d0 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49 54  BACK_ATOMIC_WRIT
149e0 45 20 20 33 33 0a 23 64 65 66 69 6e 65 20 53 51  E  33.#define SQ
149f0 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f  LITE_FCNTL_LOCK_
14a00 54 49 4d 45 4f 55 54 20 20 20 20 20 20 20 20 20  TIMEOUT         
14a10 20 20 33 34 0a 23 64 65 66 69 6e 65 20 53 51 4c    34.#define SQL
14a20 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56  ITE_FCNTL_DATA_V
14a30 45 52 53 49 4f 4e 20 20 20 20 20 20 20 20 20 20  ERSION          
14a40 20 33 35 0a 0a 2f 2a 20 64 65 70 72 65 63 61 74   35../* deprecat
14a50 65 64 20 6e 61 6d 65 73 20 2a 2f 0a 23 64 65 66  ed names */.#def
14a60 69 6e 65 20 53 51 4c 49 54 45 5f 47 45 54 5f 4c  ine SQLITE_GET_L
14a70 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20 20 20  OCKPROXYFILE    
14a80 20 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47    SQLITE_FCNTL_G
14a90 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45  ET_LOCKPROXYFILE
14aa0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14ab0 53 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c  SET_LOCKPROXYFIL
14ac0 45 20 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43  E      SQLITE_FC
14ad0 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58  NTL_SET_LOCKPROX
14ae0 59 46 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51  YFILE.#define SQ
14af0 4c 49 54 45 5f 4c 41 53 54 5f 45 52 52 4e 4f 20  LITE_LAST_ERRNO 
14b00 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 49              SQLI
14b10 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54 5f 45 52  TE_FCNTL_LAST_ER
14b20 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  RNO.../*.** CAPI
14b30 33 52 45 46 3a 20 4d 75 74 65 78 20 48 61 6e 64  3REF: Mutex Hand
14b40 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6d 75 74  le.**.** The mut
14b50 65 78 20 6d 6f 64 75 6c 65 20 77 69 74 68 69 6e  ex module within
14b60 20 53 51 4c 69 74 65 20 64 65 66 69 6e 65 73 20   SQLite defines 
14b70 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20  [sqlite3_mutex] 
14b80 74 6f 20 62 65 20 61 6e 0a 2a 2a 20 61 62 73 74  to be an.** abst
14b90 72 61 63 74 20 74 79 70 65 20 66 6f 72 20 61 20  ract type for a 
14ba0 6d 75 74 65 78 20 6f 62 6a 65 63 74 2e 20 20 54  mutex object.  T
14bb0 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65 20 6e  he SQLite core n
14bc0 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a 2a 20 61 74  ever looks.** at
14bd0 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 72 65   the internal re
14be0 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20  presentation of 
14bf0 61 6e 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  an [sqlite3_mute
14c00 78 5d 2e 20 20 49 74 20 6f 6e 6c 79 0a 2a 2a 20  x].  It only.** 
14c10 64 65 61 6c 73 20 77 69 74 68 20 70 6f 69 6e 74  deals with point
14c20 65 72 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  ers to the [sqli
14c30 74 65 33 5f 6d 75 74 65 78 5d 20 6f 62 6a 65 63  te3_mutex] objec
14c40 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74 65 78 65 73  t..**.** Mutexes
14c50 20 61 72 65 20 63 72 65 61 74 65 64 20 75 73 69   are created usi
14c60 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  ng [sqlite3_mute
14c70 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a 74  x_alloc()]..*/.t
14c80 79 70 65 64 65 66 20 73 74 72 75 63 74 20 73 71  ypedef struct sq
14c90 6c 69 74 65 33 5f 6d 75 74 65 78 20 73 71 6c 69  lite3_mutex sqli
14ca0 74 65 33 5f 6d 75 74 65 78 3b 0a 0a 2f 2a 0a 2a  te3_mutex;../*.*
14cb0 2a 20 43 41 50 49 33 52 45 46 3a 20 4c 6f 61 64  * CAPI3REF: Load
14cc0 61 62 6c 65 20 45 78 74 65 6e 73 69 6f 6e 20 54  able Extension T
14cd0 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41 20 70 6f 69  hunk.**.** A poi
14ce0 6e 74 65 72 20 74 6f 20 74 68 65 20 6f 70 61 71  nter to the opaq
14cf0 75 65 20 73 71 6c 69 74 65 33 5f 61 70 69 5f 72  ue sqlite3_api_r
14d00 6f 75 74 69 6e 65 73 20 73 74 72 75 63 74 75 72  outines structur
14d10 65 20 69 73 20 70 61 73 73 65 64 20 61 73 0a 2a  e is passed as.*
14d20 2a 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61  * the third para
14d30 6d 65 74 65 72 20 74 6f 20 65 6e 74 72 79 20 70  meter to entry p
14d40 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f 61 64 61 62  oints of [loadab
14d50 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73 5d 2e 20  le extensions]. 
14d60 20 54 68 69 73 0a 2a 2a 20 73 74 72 75 63 74 75   This.** structu
14d70 72 65 20 6d 75 73 74 20 62 65 20 74 79 70 65 64  re must be typed
14d80 65 66 65 64 20 69 6e 20 6f 72 64 65 72 20 74 6f  efed in order to
14d90 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20 63 6f 6d   work around com
14da0 70 69 6c 65 72 20 77 61 72 6e 69 6e 67 73 0a 2a  piler warnings.*
14db0 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c 61 74 66 6f  * on some platfo
14dc0 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65 64 65 66 20  rms..*/.typedef 
14dd0 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f 61  struct sqlite3_a
14de0 70 69 5f 72 6f 75 74 69 6e 65 73 20 73 71 6c 69  pi_routines sqli
14df0 74 65 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73  te3_api_routines
14e00 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
14e10 46 3a 20 4f 53 20 49 6e 74 65 72 66 61 63 65 20  F: OS Interface 
14e20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 41 6e 20  Object.**.** An 
14e30 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
14e40 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a 65  sqlite3_vfs obje
14e50 63 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 69  ct defines the i
14e60 6e 74 65 72 66 61 63 65 20 62 65 74 77 65 65 6e  nterface between
14e70 0a 2a 2a 20 74 68 65 20 53 51 4c 69 74 65 20 63  .** the SQLite c
14e80 6f 72 65 20 61 6e 64 20 74 68 65 20 75 6e 64 65  ore and the unde
14e90 72 6c 79 69 6e 67 20 6f 70 65 72 61 74 69 6e 67  rlying operating
14ea0 20 73 79 73 74 65 6d 2e 20 20 54 68 65 20 22 76   system.  The "v
14eb0 66 73 22 0a 2a 2a 20 69 6e 20 74 68 65 20 6e 61  fs".** in the na
14ec0 6d 65 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  me of the object
14ed0 20 73 74 61 6e 64 73 20 66 6f 72 20 22 76 69 72   stands for "vir
14ee0 74 75 61 6c 20 66 69 6c 65 20 73 79 73 74 65 6d  tual file system
14ef0 22 2e 20 20 53 65 65 0a 2a 2a 20 74 68 65 20 5b  ".  See.** the [
14f00 56 46 53 20 7c 20 56 46 53 20 64 6f 63 75 6d 65  VFS | VFS docume
14f10 6e 74 61 74 69 6f 6e 5d 20 66 6f 72 20 66 75 72  ntation] for fur
14f20 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  ther information
14f30 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 56 46 53 20  ..**.** The VFS 
14f40 69 6e 74 65 72 66 61 63 65 20 69 73 20 73 6f 6d  interface is som
14f50 65 74 69 6d 65 73 20 65 78 74 65 6e 64 65 64 20  etimes extended 
14f60 62 79 20 61 64 64 69 6e 67 20 6e 65 77 20 6d 65  by adding new me
14f70 74 68 6f 64 73 20 6f 6e 74 6f 0a 2a 2a 20 74 68  thods onto.** th
14f80 65 20 65 6e 64 2e 20 20 45 61 63 68 20 74 69 6d  e end.  Each tim
14f90 65 20 73 75 63 68 20 61 6e 20 65 78 74 65 6e 73  e such an extens
14fa0 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20  ion occurs, the 
14fb0 69 56 65 72 73 69 6f 6e 20 66 69 65 6c 64 0a 2a  iVersion field.*
14fc0 2a 20 69 73 20 69 6e 63 72 65 6d 65 6e 74 65 64  * is incremented
14fd0 2e 20 20 54 68 65 20 69 56 65 72 73 69 6f 6e 20  .  The iVersion 
14fe0 76 61 6c 75 65 20 73 74 61 72 74 65 64 20 6f 75  value started ou
14ff0 74 20 61 73 20 31 20 69 6e 0a 2a 2a 20 53 51 4c  t as 1 in.** SQL
15000 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 35  ite [version 3.5
15010 2e 30 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33  .0] on [dateof:3
15020 2e 35 2e 30 5d 2c 20 74 68 65 6e 20 69 6e 63 72  .5.0], then incr
15030 65 61 73 65 64 20 74 6f 20 32 0a 2a 2a 20 77 69  eased to 2.** wi
15040 74 68 20 53 51 4c 69 74 65 20 5b 76 65 72 73 69  th SQLite [versi
15050 6f 6e 20 33 2e 37 2e 30 5d 20 6f 6e 20 5b 64 61  on 3.7.0] on [da
15060 74 65 6f 66 3a 33 2e 37 2e 30 5d 2c 20 61 6e 64  teof:3.7.0], and
15070 20 74 68 65 6e 20 69 6e 63 72 65 61 73 65 64 0a   then increased.
15080 2a 2a 20 74 6f 20 33 20 77 69 74 68 20 53 51 4c  ** to 3 with SQL
15090 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 37  ite [version 3.7
150a0 2e 36 5d 20 6f 6e 20 5b 64 61 74 65 6f 66 3a 33  .6] on [dateof:3
150b0 2e 37 2e 36 5d 2e 20 20 41 64 64 69 74 69 6f 6e  .7.6].  Addition
150c0 61 6c 20 66 69 65 6c 64 73 0a 2a 2a 20 6d 61 79  al fields.** may
150d0 20 62 65 20 61 70 70 65 6e 64 65 64 20 74 6f 20   be appended to 
150e0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20  the sqlite3_vfs 
150f0 6f 62 6a 65 63 74 20 61 6e 64 20 74 68 65 20 69  object and the i
15100 56 65 72 73 69 6f 6e 20 76 61 6c 75 65 0a 2a 2a  Version value.**
15110 20 6d 61 79 20 69 6e 63 72 65 61 73 65 20 61 67   may increase ag
15120 61 69 6e 20 69 6e 20 66 75 74 75 72 65 20 76 65  ain in future ve
15130 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
15140 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 74  ..** Note that t
15150 68 65 20 73 74 72 75 63 74 75 72 65 0a 2a 2a 20  he structure.** 
15160 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  of the sqlite3_v
15170 66 73 20 6f 62 6a 65 63 74 20 63 68 61 6e 67 65  fs object change
15180 73 20 69 6e 20 74 68 65 20 74 72 61 6e 73 69 74  s in the transit
15190 69 6f 6e 20 66 72 6f 6d 0a 2a 2a 20 53 51 4c 69  ion from.** SQLi
151a0 74 65 20 5b 76 65 72 73 69 6f 6e 20 33 2e 35 2e  te [version 3.5.
151b0 39 5d 20 74 6f 20 5b 76 65 72 73 69 6f 6e 20 33  9] to [version 3
151c0 2e 36 2e 30 5d 20 6f 6e 20 5b 64 61 74 65 6f 66  .6.0] on [dateof
151d0 3a 33 2e 36 2e 30 5d 0a 2a 2a 20 61 6e 64 20 79  :3.6.0].** and y
151e0 65 74 20 74 68 65 20 69 56 65 72 73 69 6f 6e 20  et the iVersion 
151f0 66 69 65 6c 64 20 77 61 73 20 6e 6f 74 20 6d 6f  field was not mo
15200 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  dified..**.** Th
15210 65 20 73 7a 4f 73 46 69 6c 65 20 66 69 65 6c 64  e szOsFile field
15220 20 69 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20   is the size of 
15230 74 68 65 20 73 75 62 63 6c 61 73 73 65 64 20 5b  the subclassed [
15240 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 0a 2a 2a  sqlite3_file].**
15250 20 73 74 72 75 63 74 75 72 65 20 75 73 65 64 20   structure used 
15260 62 79 20 74 68 69 73 20 56 46 53 2e 20 20 6d 78  by this VFS.  mx
15270 50 61 74 68 6e 61 6d 65 20 69 73 20 74 68 65 20  Pathname is the 
15280 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  maximum length o
15290 66 0a 2a 2a 20 61 20 70 61 74 68 6e 61 6d 65 20  f.** a pathname 
152a0 69 6e 20 74 68 69 73 20 56 46 53 2e 0a 2a 2a 0a  in this VFS..**.
152b0 2a 2a 20 52 65 67 69 73 74 65 72 65 64 20 73 71  ** Registered sq
152c0 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a 65 63 74  lite3_vfs object
152d0 73 20 61 72 65 20 6b 65 70 74 20 6f 6e 20 61 20  s are kept on a 
152e0 6c 69 6e 6b 65 64 20 6c 69 73 74 20 66 6f 72 6d  linked list form
152f0 65 64 20 62 79 0a 2a 2a 20 74 68 65 20 70 4e 65  ed by.** the pNe
15300 78 74 20 70 6f 69 6e 74 65 72 2e 20 20 54 68 65  xt pointer.  The
15310 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 72 65   [sqlite3_vfs_re
15320 67 69 73 74 65 72 28 29 5d 0a 2a 2a 20 61 6e 64  gister()].** and
15330 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5f 75 6e   [sqlite3_vfs_un
15340 72 65 67 69 73 74 65 72 28 29 5d 20 69 6e 74 65  register()] inte
15350 72 66 61 63 65 73 20 6d 61 6e 61 67 65 20 74 68  rfaces manage th
15360 69 73 20 6c 69 73 74 0a 2a 2a 20 69 6e 20 61 20  is list.** in a 
15370 74 68 72 65 61 64 2d 73 61 66 65 20 77 61 79 2e  thread-safe way.
15380 20 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76    The [sqlite3_v
15390 66 73 5f 66 69 6e 64 28 29 5d 20 69 6e 74 65 72  fs_find()] inter
153a0 66 61 63 65 0a 2a 2a 20 73 65 61 72 63 68 65 73  face.** searches
153b0 20 74 68 65 20 6c 69 73 74 2e 20 20 4e 65 69 74   the list.  Neit
153c0 68 65 72 20 74 68 65 20 61 70 70 6c 69 63 61 74  her the applicat
153d0 69 6f 6e 20 63 6f 64 65 20 6e 6f 72 20 74 68 65  ion code nor the
153e0 20 56 46 53 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e   VFS.** implemen
153f0 74 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 75 73  tation should us
15400 65 20 74 68 65 20 70 4e 65 78 74 20 70 6f 69 6e  e the pNext poin
15410 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70  ter..**.** The p
15420 4e 65 78 74 20 66 69 65 6c 64 20 69 73 20 74 68  Next field is th
15430 65 20 6f 6e 6c 79 20 66 69 65 6c 64 20 69 6e 20  e only field in 
15440 74 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a  the sqlite3_vfs.
15450 2a 2a 20 73 74 72 75 63 74 75 72 65 20 74 68 61  ** structure tha
15460 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 65 76  t SQLite will ev
15470 65 72 20 6d 6f 64 69 66 79 2e 20 20 53 51 4c 69  er modify.  SQLi
15480 74 65 20 77 69 6c 6c 20 6f 6e 6c 79 20 61 63 63  te will only acc
15490 65 73 73 0a 2a 2a 20 6f 72 20 6d 6f 64 69 66 79  ess.** or modify
154a0 20 74 68 69 73 20 66 69 65 6c 64 20 77 68 69 6c   this field whil
154b0 65 20 68 6f 6c 64 69 6e 67 20 61 20 70 61 72 74  e holding a part
154c0 69 63 75 6c 61 72 20 73 74 61 74 69 63 20 6d 75  icular static mu
154d0 74 65 78 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c  tex..** The appl
154e0 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e  ication should n
154f0 65 76 65 72 20 6d 6f 64 69 66 79 20 61 6e 79 74  ever modify anyt
15500 68 69 6e 67 20 77 69 74 68 69 6e 20 74 68 65 20  hing within the 
15510 73 71 6c 69 74 65 33 5f 76 66 73 0a 2a 2a 20 6f  sqlite3_vfs.** o
15520 62 6a 65 63 74 20 6f 6e 63 65 20 74 68 65 20 6f  bject once the o
15530 62 6a 65 63 74 20 68 61 73 20 62 65 65 6e 20 72  bject has been r
15540 65 67 69 73 74 65 72 65 64 2e 0a 2a 2a 0a 2a 2a  egistered..**.**
15550 20 54 68 65 20 7a 4e 61 6d 65 20 66 69 65 6c 64   The zName field
15560 20 68 6f 6c 64 73 20 74 68 65 20 6e 61 6d 65 20   holds the name 
15570 6f 66 20 74 68 65 20 56 46 53 20 6d 6f 64 75 6c  of the VFS modul
15580 65 2e 20 20 54 68 65 20 6e 61 6d 65 20 6d 75 73  e.  The name mus
15590 74 0a 2a 2a 20 62 65 20 75 6e 69 71 75 65 20 61  t.** be unique a
155a0 63 72 6f 73 73 20 61 6c 6c 20 56 46 53 20 6d 6f  cross all VFS mo
155b0 64 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 73  dules..**.** [[s
155c0 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f 70 65 6e  qlite3_vfs.xOpen
155d0 5d 5d 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 67 75  ]].** ^SQLite gu
155e0 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 74 68  arantees that th
155f0 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70 61 72 61  e zFilename para
15600 6d 65 74 65 72 20 74 6f 20 78 4f 70 65 6e 0a 2a  meter to xOpen.*
15610 2a 20 69 73 20 65 69 74 68 65 72 20 61 20 4e 55  * is either a NU
15620 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72 20 73 74  LL pointer or st
15630 72 69 6e 67 20 6f 62 74 61 69 6e 65 64 0a 2a 2a  ring obtained.**
15640 20 66 72 6f 6d 20 78 46 75 6c 6c 50 61 74 68 6e   from xFullPathn
15650 61 6d 65 28 29 20 77 69 74 68 20 61 6e 20 6f 70  ame() with an op
15660 74 69 6f 6e 61 6c 20 73 75 66 66 69 78 20 61 64  tional suffix ad
15670 64 65 64 2e 0a 2a 2a 20 5e 49 66 20 61 20 73 75  ded..** ^If a su
15680 66 66 69 78 20 69 73 20 61 64 64 65 64 20 74 6f  ffix is added to
15690 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70   the zFilename p
156a0 61 72 61 6d 65 74 65 72 2c 20 69 74 20 77 69 6c  arameter, it wil
156b0 6c 0a 2a 2a 20 63 6f 6e 73 69 73 74 20 6f 66 20  l.** consist of 
156c0 61 20 73 69 6e 67 6c 65 20 22 2d 22 20 63 68 61  a single "-" cha
156d0 72 61 63 74 65 72 20 66 6f 6c 6c 6f 77 65 64 20  racter followed 
156e0 62 79 20 6e 6f 20 6d 6f 72 65 20 74 68 61 6e 0a  by no more than.
156f0 2a 2a 20 31 31 20 61 6c 70 68 61 6e 75 6d 65 72  ** 11 alphanumer
15700 69 63 20 61 6e 64 2f 6f 72 20 22 2d 22 20 63 68  ic and/or "-" ch
15710 61 72 61 63 74 65 72 73 2e 0a 2a 2a 20 5e 53 51  aracters..** ^SQ
15720 4c 69 74 65 20 66 75 72 74 68 65 72 20 67 75 61  Lite further gua
15730 72 61 6e 74 65 65 73 20 74 68 61 74 0a 2a 2a 20  rantees that.** 
15740 74 68 65 20 73 74 72 69 6e 67 20 77 69 6c 6c 20  the string will 
15750 62 65 20 76 61 6c 69 64 20 61 6e 64 20 75 6e 63  be valid and unc
15760 68 61 6e 67 65 64 20 75 6e 74 69 6c 20 78 43 6c  hanged until xCl
15770 6f 73 65 28 29 20 69 73 0a 2a 2a 20 63 61 6c 6c  ose() is.** call
15780 65 64 2e 20 42 65 63 61 75 73 65 20 6f 66 20 74  ed. Because of t
15790 68 65 20 70 72 65 76 69 6f 75 73 20 73 65 6e 74  he previous sent
157a0 65 6e 63 65 2c 0a 2a 2a 20 74 68 65 20 5b 73 71  ence,.** the [sq
157b0 6c 69 74 65 33 5f 66 69 6c 65 5d 20 63 61 6e 20  lite3_file] can 
157c0 73 61 66 65 6c 79 20 73 74 6f 72 65 20 61 20 70  safely store a p
157d0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0a 2a 2a  ointer to the.**
157e0 20 66 69 6c 65 6e 61 6d 65 20 69 66 20 69 74 20   filename if it 
157f0 6e 65 65 64 73 20 74 6f 20 72 65 6d 65 6d 62 65  needs to remembe
15800 72 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 66  r the filename f
15810 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e 2e 0a  or some reason..
15820 2a 2a 20 49 66 20 74 68 65 20 7a 46 69 6c 65 6e  ** If the zFilen
15830 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ame parameter to
15840 20 78 4f 70 65 6e 20 69 73 20 61 20 4e 55 4c 4c   xOpen is a NULL
15850 20 70 6f 69 6e 74 65 72 20 74 68 65 6e 20 78 4f   pointer then xO
15860 70 65 6e 0a 2a 2a 20 6d 75 73 74 20 69 6e 76 65  pen.** must inve
15870 6e 74 20 69 74 73 20 6f 77 6e 20 74 65 6d 70 6f  nt its own tempo
15880 72 61 72 79 20 6e 61 6d 65 20 66 6f 72 20 74 68  rary name for th
15890 65 20 66 69 6c 65 2e 20 20 5e 57 68 65 6e 65 76  e file.  ^Whenev
158a0 65 72 20 74 68 65 20 0a 2a 2a 20 78 46 69 6c 65  er the .** xFile
158b0 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69  name parameter i
158c0 73 20 4e 55 4c 4c 20 69 74 20 77 69 6c 6c 20 61  s NULL it will a
158d0 6c 73 6f 20 62 65 20 74 68 65 20 63 61 73 65 20  lso be the case 
158e0 74 68 61 74 20 74 68 65 0a 2a 2a 20 66 6c 61 67  that the.** flag
158f0 73 20 70 61 72 61 6d 65 74 65 72 20 77 69 6c 6c  s parameter will
15900 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49 54 45   include [SQLITE
15910 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f 4e 43 4c  _OPEN_DELETEONCL
15920 4f 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  OSE]..**.** The 
15930 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74  flags argument t
15940 6f 20 78 4f 70 65 6e 28 29 20 69 6e 63 6c 75 64  o xOpen() includ
15950 65 73 20 61 6c 6c 20 62 69 74 73 20 73 65 74 20  es all bits set 
15960 69 6e 0a 2a 2a 20 74 68 65 20 66 6c 61 67 73 20  in.** the flags 
15970 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71 6c  argument to [sql
15980 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 5d 2e  ite3_open_v2()].
15990 20 20 4f 72 20 69 66 20 5b 73 71 6c 69 74 65 33    Or if [sqlite3
159a0 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20 6f 72 20 5b  _open()].** or [
159b0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
159c0 5d 20 69 73 20 75 73 65 64 2c 20 74 68 65 6e 20  ] is used, then 
159d0 66 6c 61 67 73 20 69 6e 63 6c 75 64 65 73 20 61  flags includes a
159e0 74 20 6c 65 61 73 74 0a 2a 2a 20 5b 53 51 4c 49  t least.** [SQLI
159f0 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54  TE_OPEN_READWRIT
15a00 45 5d 20 7c 20 5b 53 51 4c 49 54 45 5f 4f 50 45  E] | [SQLITE_OPE
15a10 4e 5f 43 52 45 41 54 45 5d 2e 20 0a 2a 2a 20 49  N_CREATE]. .** I
15a20 66 20 78 4f 70 65 6e 28 29 20 6f 70 65 6e 73 20  f xOpen() opens 
15a30 61 20 66 69 6c 65 20 72 65 61 64 2d 6f 6e 6c 79  a file read-only
15a40 20 74 68 65 6e 20 69 74 20 73 65 74 73 20 2a 70   then it sets *p
15a50 4f 75 74 46 6c 61 67 73 20 74 6f 0a 2a 2a 20 69  OutFlags to.** i
15a60 6e 63 6c 75 64 65 20 5b 53 51 4c 49 54 45 5f 4f  nclude [SQLITE_O
15a70 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d 2e 20 20  PEN_READONLY].  
15a80 4f 74 68 65 72 20 62 69 74 73 20 69 6e 20 2a 70  Other bits in *p
15a90 4f 75 74 46 6c 61 67 73 20 6d 61 79 20 62 65 20  OutFlags may be 
15aa0 73 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e 28 53 51 4c  set..**.** ^(SQL
15ab0 69 74 65 20 77 69 6c 6c 20 61 6c 73 6f 20 61 64  ite will also ad
15ac0 64 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c  d one of the fol
15ad0 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20  lowing flags to 
15ae0 74 68 65 20 78 4f 70 65 6e 28 29 0a 2a 2a 20 63  the xOpen().** c
15af0 61 6c 6c 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f  all, depending o
15b00 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 62 65 69  n the object bei
15b10 6e 67 20 6f 70 65 6e 65 64 3a 0a 2a 2a 0a 2a 2a  ng opened:.**.**
15b20 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 5b   <ul>.** <li>  [
15b30 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e  SQLITE_OPEN_MAIN
15b40 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53  _DB].** <li>  [S
15b50 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 49 4e 5f  QLITE_OPEN_MAIN_
15b60 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e  JOURNAL].** <li>
15b70 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54    [SQLITE_OPEN_T
15b80 45 4d 50 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20  EMP_DB].** <li> 
15b90 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 54 45   [SQLITE_OPEN_TE
15ba0 4d 50 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  MP_JOURNAL].** <
15bb0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15bc0 4e 5f 54 52 41 4e 53 49 45 4e 54 5f 44 42 5d 0a  N_TRANSIENT_DB].
15bd0 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45  ** <li>  [SQLITE
15be0 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52 4e 41 4c  _OPEN_SUBJOURNAL
15bf0 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49  ].** <li>  [SQLI
15c00 54 45 5f 4f 50 45 4e 5f 4d 41 53 54 45 52 5f 4a  TE_OPEN_MASTER_J
15c10 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20  OURNAL].** <li> 
15c20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 57 41   [SQLITE_OPEN_WA
15c30 4c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29 5e 0a 2a 2a  L].** </ul>)^.**
15c40 0a 2a 2a 20 54 68 65 20 66 69 6c 65 20 49 2f 4f  .** The file I/O
15c50 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
15c60 63 61 6e 20 75 73 65 20 74 68 65 20 6f 62 6a 65  can use the obje
15c70 63 74 20 74 79 70 65 20 66 6c 61 67 73 20 74 6f  ct type flags to
15c80 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 77  .** change the w
15c90 61 79 20 69 74 20 64 65 61 6c 73 20 77 69 74 68  ay it deals with
15ca0 20 66 69 6c 65 73 2e 20 20 46 6f 72 20 65 78 61   files.  For exa
15cb0 6d 70 6c 65 2c 20 61 6e 20 61 70 70 6c 69 63 61  mple, an applica
15cc0 74 69 6f 6e 0a 2a 2a 20 74 68 61 74 20 64 6f 65  tion.** that doe
15cd0 73 20 6e 6f 74 20 63 61 72 65 20 61 62 6f 75 74  s not care about
15ce0 20 63 72 61 73 68 20 72 65 63 6f 76 65 72 79 20   crash recovery 
15cf0 6f 72 20 72 6f 6c 6c 62 61 63 6b 20 6d 69 67 68  or rollback migh
15d00 74 20 6d 61 6b 65 0a 2a 2a 20 74 68 65 20 6f 70  t make.** the op
15d10 65 6e 20 6f 66 20 61 20 6a 6f 75 72 6e 61 6c 20  en of a journal 
15d20 66 69 6c 65 20 61 20 6e 6f 2d 6f 70 2e 20 20 57  file a no-op.  W
15d30 72 69 74 65 73 20 74 6f 20 74 68 69 73 20 6a 6f  rites to this jo
15d40 75 72 6e 61 6c 20 77 6f 75 6c 64 0a 2a 2a 20 61  urnal would.** a
15d50 6c 73 6f 20 62 65 20 6e 6f 2d 6f 70 73 2c 20 61  lso be no-ops, a
15d60 6e 64 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74  nd any attempt t
15d70 6f 20 72 65 61 64 20 74 68 65 20 6a 6f 75 72 6e  o read the journ
15d80 61 6c 20 77 6f 75 6c 64 20 72 65 74 75 72 6e 0a  al would return.
15d90 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 45 52 52 2e  ** SQLITE_IOERR.
15da0 20 20 4f 72 20 74 68 65 20 69 6d 70 6c 65 6d 65    Or the impleme
15db0 6e 74 61 74 69 6f 6e 20 6d 69 67 68 74 20 72 65  ntation might re
15dc0 63 6f 67 6e 69 7a 65 20 74 68 61 74 20 61 20 64  cognize that a d
15dd0 61 74 61 62 61 73 65 0a 2a 2a 20 66 69 6c 65 20  atabase.** file 
15de0 77 69 6c 6c 20 62 65 20 64 6f 69 6e 67 20 70 61  will be doing pa
15df0 67 65 2d 61 6c 69 67 6e 65 64 20 73 65 63 74 6f  ge-aligned secto
15e00 72 20 72 65 61 64 73 20 61 6e 64 20 77 72 69 74  r reads and writ
15e10 65 73 20 69 6e 20 61 20 72 61 6e 64 6f 6d 0a 2a  es in a random.*
15e20 2a 20 6f 72 64 65 72 20 61 6e 64 20 73 65 74 20  * order and set 
15e30 75 70 20 69 74 73 20 49 2f 4f 20 73 75 62 73 79  up its I/O subsy
15e40 73 74 65 6d 20 61 63 63 6f 72 64 69 6e 67 6c 79  stem accordingly
15e50 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 6d  ..**.** SQLite m
15e60 69 67 68 74 20 61 6c 73 6f 20 61 64 64 20 6f 6e  ight also add on
15e70 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69  e of the followi
15e80 6e 67 20 66 6c 61 67 73 20 74 6f 20 74 68 65 20  ng flags to the 
15e90 78 4f 70 65 6e 20 6d 65 74 68 6f 64 3a 0a 2a 2a  xOpen method:.**
15ea0 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
15eb0 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45   [SQLITE_OPEN_DE
15ec0 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20  LETEONCLOSE].** 
15ed0 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45  <li> [SQLITE_OPE
15ee0 4e 5f 45 58 43 4c 55 53 49 56 45 5d 0a 2a 2a 20  N_EXCLUSIVE].** 
15ef0 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  </ul>.**.** The 
15f00 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c  [SQLITE_OPEN_DEL
15f10 45 54 45 4f 4e 43 4c 4f 53 45 5d 20 66 6c 61 67  ETEONCLOSE] flag
15f20 20 6d 65 61 6e 73 20 74 68 65 20 66 69 6c 65 20   means the file 
15f30 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20 64 65 6c  should be.** del
15f40 65 74 65 64 20 77 68 65 6e 20 69 74 20 69 73 20  eted when it is 
15f50 63 6c 6f 73 65 64 2e 20 20 5e 54 68 65 20 5b 53  closed.  ^The [S
15f60 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54  QLITE_OPEN_DELET
15f70 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20 77 69 6c  EONCLOSE].** wil
15f80 6c 20 62 65 20 73 65 74 20 66 6f 72 20 54 45 4d  l be set for TEM
15f90 50 20 64 61 74 61 62 61 73 65 73 20 61 6e 64 20  P databases and 
15fa0 74 68 65 69 72 20 6a 6f 75 72 6e 61 6c 73 2c 20  their journals, 
15fb0 74 72 61 6e 73 69 65 6e 74 0a 2a 2a 20 64 61 74  transient.** dat
15fc0 61 62 61 73 65 73 2c 20 61 6e 64 20 73 75 62 6a  abases, and subj
15fd0 6f 75 72 6e 61 6c 73 2e 0a 2a 2a 0a 2a 2a 20 5e  ournals..**.** ^
15fe0 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  The [SQLITE_OPEN
15ff0 5f 45 58 43 4c 55 53 49 56 45 5d 20 66 6c 61 67  _EXCLUSIVE] flag
16000 20 69 73 20 61 6c 77 61 79 73 20 75 73 65 64 20   is always used 
16010 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f 6e 0a 2a  in conjunction.*
16020 2a 20 77 69 74 68 20 74 68 65 20 5b 53 51 4c 49  * with the [SQLI
16030 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 20  TE_OPEN_CREATE] 
16040 66 6c 61 67 2c 20 77 68 69 63 68 20 61 72 65 20  flag, which are 
16050 62 6f 74 68 20 64 69 72 65 63 74 6c 79 0a 2a 2a  both directly.**
16060 20 61 6e 61 6c 6f 67 6f 75 73 20 74 6f 20 74 68   analogous to th
16070 65 20 4f 5f 45 58 43 4c 20 61 6e 64 20 4f 5f 43  e O_EXCL and O_C
16080 52 45 41 54 20 66 6c 61 67 73 20 6f 66 20 74 68  REAT flags of th
16090 65 20 50 4f 53 49 58 20 6f 70 65 6e 28 29 0a 2a  e POSIX open().*
160a0 2a 20 41 50 49 2e 20 20 54 68 65 20 53 51 4c 49  * API.  The SQLI
160b0 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56  TE_OPEN_EXCLUSIV
160c0 45 20 66 6c 61 67 2c 20 77 68 65 6e 20 70 61 69  E flag, when pai
160d0 72 65 64 20 77 69 74 68 20 74 68 65 20 0a 2a 2a  red with the .**
160e0 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45   SQLITE_OPEN_CRE
160f0 41 54 45 2c 20 69 73 20 75 73 65 64 20 74 6f 20  ATE, is used to 
16100 69 6e 64 69 63 61 74 65 20 74 68 61 74 20 66 69  indicate that fi
16110 6c 65 20 73 68 6f 75 6c 64 20 61 6c 77 61 79 73  le should always
16120 0a 2a 2a 20 62 65 20 63 72 65 61 74 65 64 2c 20  .** be created, 
16130 61 6e 64 20 74 68 61 74 20 69 74 20 69 73 20 61  and that it is a
16140 6e 20 65 72 72 6f 72 20 69 66 20 69 74 20 61 6c  n error if it al
16150 72 65 61 64 79 20 65 78 69 73 74 73 2e 0a 2a 2a  ready exists..**
16160 20 49 74 20 69 73 20 3c 69 3e 6e 6f 74 3c 2f 69   It is <i>not</i
16170 3e 20 75 73 65 64 20 74 6f 20 69 6e 64 69 63 61  > used to indica
16180 74 65 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75  te the file shou
16190 6c 64 20 62 65 20 6f 70 65 6e 65 64 20 0a 2a 2a  ld be opened .**
161a0 20 66 6f 72 20 65 78 63 6c 75 73 69 76 65 20 61   for exclusive a
161b0 63 63 65 73 73 2e 0a 2a 2a 0a 2a 2a 20 5e 41 74  ccess..**.** ^At
161c0 20 6c 65 61 73 74 20 73 7a 4f 73 46 69 6c 65 20   least szOsFile 
161d0 62 79 74 65 73 20 6f 66 20 6d 65 6d 6f 72 79 20  bytes of memory 
161e0 61 72 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 79  are allocated by
161f0 20 53 51 4c 69 74 65 0a 2a 2a 20 74 6f 20 68 6f   SQLite.** to ho
16200 6c 64 20 74 68 65 20 20 5b 73 71 6c 69 74 65 33  ld the  [sqlite3
16210 5f 66 69 6c 65 5d 20 73 74 72 75 63 74 75 72 65  _file] structure
16220 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20 74   passed as the t
16230 68 69 72 64 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  hird.** argument
16240 20 74 6f 20 78 4f 70 65 6e 2e 20 20 54 68 65 20   to xOpen.  The 
16250 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20 64 6f 65  xOpen method doe
16260 73 20 6e 6f 74 20 68 61 76 65 20 74 6f 0a 2a 2a  s not have to.**
16270 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 20 73 74   allocate the st
16280 72 75 63 74 75 72 65 3b 20 69 74 20 73 68 6f 75  ructure; it shou
16290 6c 64 20 6a 75 73 74 20 66 69 6c 6c 20 69 74 20  ld just fill it 
162a0 69 6e 2e 20 20 4e 6f 74 65 20 74 68 61 74 0a 2a  in.  Note that.*
162b0 2a 20 74 68 65 20 78 4f 70 65 6e 20 6d 65 74 68  * the xOpen meth
162c0 6f 64 20 6d 75 73 74 20 73 65 74 20 74 68 65 20  od must set the 
162d0 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65  sqlite3_file.pMe
162e0 74 68 6f 64 73 20 74 6f 20 65 69 74 68 65 72 0a  thods to either.
162f0 2a 2a 20 61 20 76 61 6c 69 64 20 5b 73 71 6c 69  ** a valid [sqli
16300 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 20  te3_io_methods] 
16310 6f 62 6a 65 63 74 20 6f 72 20 74 6f 20 4e 55 4c  object or to NUL
16320 4c 2e 20 20 78 4f 70 65 6e 20 6d 75 73 74 20 64  L.  xOpen must d
16330 6f 0a 2a 2a 20 74 68 69 73 20 65 76 65 6e 20 69  o.** this even i
16340 66 20 74 68 65 20 6f 70 65 6e 20 66 61 69 6c 73  f the open fails
16350 2e 20 20 53 51 4c 69 74 65 20 65 78 70 65 63 74  .  SQLite expect
16360 73 20 74 68 61 74 20 74 68 65 20 73 71 6c 69 74  s that the sqlit
16370 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68 6f 64 73  e3_file.pMethods
16380 0a 2a 2a 20 65 6c 65 6d 65 6e 74 20 77 69 6c 6c  .** element will
16390 20 62 65 20 76 61 6c 69 64 20 61 66 74 65 72 20   be valid after 
163a0 78 4f 70 65 6e 20 72 65 74 75 72 6e 73 20 72 65  xOpen returns re
163b0 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20  gardless of the 
163c0 73 75 63 63 65 73 73 0a 2a 2a 20 6f 72 20 66 61  success.** or fa
163d0 69 6c 75 72 65 20 6f 66 20 74 68 65 20 78 4f 70  ilure of the xOp
163e0 65 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5b  en call..**.** [
163f0 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 41 63  [sqlite3_vfs.xAc
16400 63 65 73 73 5d 5d 0a 2a 2a 20 5e 54 68 65 20 66  cess]].** ^The f
16410 6c 61 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f  lags argument to
16420 20 78 41 63 63 65 73 73 28 29 20 6d 61 79 20 62   xAccess() may b
16430 65 20 5b 53 51 4c 49 54 45 5f 41 43 43 45 53 53  e [SQLITE_ACCESS
16440 5f 45 58 49 53 54 53 5d 0a 2a 2a 20 74 6f 20 74  _EXISTS].** to t
16450 65 73 74 20 66 6f 72 20 74 68 65 20 65 78 69 73  est for the exis
16460 74 65 6e 63 65 20 6f 66 20 61 20 66 69 6c 65 2c  tence of a file,
16470 20 6f 72 20 5b 53 51 4c 49 54 45 5f 41 43 43 45   or [SQLITE_ACCE
16480 53 53 5f 52 45 41 44 57 52 49 54 45 5d 20 74 6f  SS_READWRITE] to
16490 0a 2a 2a 20 74 65 73 74 20 77 68 65 74 68 65 72  .** test whether
164a0 20 61 20 66 69 6c 65 20 69 73 20 72 65 61 64 61   a file is reada
164b0 62 6c 65 20 61 6e 64 20 77 72 69 74 61 62 6c 65  ble and writable
164c0 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 41 43 43  , or [SQLITE_ACC
164d0 45 53 53 5f 52 45 41 44 5d 0a 2a 2a 20 74 6f 20  ESS_READ].** to 
164e0 74 65 73 74 20 77 68 65 74 68 65 72 20 61 20 66  test whether a f
164f0 69 6c 65 20 69 73 20 61 74 20 6c 65 61 73 74 20  ile is at least 
16500 72 65 61 64 61 62 6c 65 2e 20 20 20 54 68 65 20  readable.   The 
16510 66 69 6c 65 20 63 61 6e 20 62 65 20 61 0a 2a 2a  file can be a.**
16520 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a 2a 0a 2a   directory..**.*
16530 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c 6c 20 61  * ^SQLite will a
16540 6c 77 61 79 73 20 61 6c 6c 6f 63 61 74 65 20 61  lways allocate a
16550 74 20 6c 65 61 73 74 20 6d 78 50 61 74 68 6e 61  t least mxPathna
16560 6d 65 2b 31 20 62 79 74 65 73 20 66 6f 72 20 74  me+1 bytes for t
16570 68 65 0a 2a 2a 20 6f 75 74 70 75 74 20 62 75 66  he.** output buf
16580 66 65 72 20 78 46 75 6c 6c 50 61 74 68 6e 61 6d  fer xFullPathnam
16590 65 2e 20 20 54 68 65 20 65 78 61 63 74 20 73 69  e.  The exact si
165a0 7a 65 20 6f 66 20 74 68 65 20 6f 75 74 70 75 74  ze of the output
165b0 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 61 6c   buffer.** is al
165c0 73 6f 20 70 61 73 73 65 64 20 61 73 20 61 20 70  so passed as a p
165d0 61 72 61 6d 65 74 65 72 20 74 6f 20 62 6f 74 68  arameter to both
165e0 20 20 6d 65 74 68 6f 64 73 2e 20 49 66 20 74 68    methods. If th
165f0 65 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 0a  e output buffer.
16600 2a 2a 20 69 73 20 6e 6f 74 20 6c 61 72 67 65 20  ** is not large 
16610 65 6e 6f 75 67 68 2c 20 5b 53 51 4c 49 54 45 5f  enough, [SQLITE_
16620 43 41 4e 54 4f 50 45 4e 5d 20 73 68 6f 75 6c 64  CANTOPEN] should
16630 20 62 65 20 72 65 74 75 72 6e 65 64 2e 20 53 69   be returned. Si
16640 6e 63 65 20 74 68 69 73 20 69 73 0a 2a 2a 20 68  nce this is.** h
16650 61 6e 64 6c 65 64 20 61 73 20 61 20 66 61 74 61  andled as a fata
16660 6c 20 65 72 72 6f 72 20 62 79 20 53 51 4c 69 74  l error by SQLit
16670 65 2c 20 76 66 73 20 69 6d 70 6c 65 6d 65 6e 74  e, vfs implement
16680 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20 65 6e  ations should en
16690 64 65 61 76 6f 72 0a 2a 2a 20 74 6f 20 70 72 65  deavor.** to pre
166a0 76 65 6e 74 20 74 68 69 73 20 62 79 20 73 65 74  vent this by set
166b0 74 69 6e 67 20 6d 78 50 61 74 68 6e 61 6d 65 20  ting mxPathname 
166c0 74 6f 20 61 20 73 75 66 66 69 63 69 65 6e 74 6c  to a sufficientl
166d0 79 20 6c 61 72 67 65 20 76 61 6c 75 65 2e 0a 2a  y large value..*
166e0 2a 0a 2a 2a 20 54 68 65 20 78 52 61 6e 64 6f 6d  *.** The xRandom
166f0 6e 65 73 73 28 29 2c 20 78 53 6c 65 65 70 28 29  ness(), xSleep()
16700 2c 20 78 43 75 72 72 65 6e 74 54 69 6d 65 28 29  , xCurrentTime()
16710 2c 20 61 6e 64 20 78 43 75 72 72 65 6e 74 54 69  , and xCurrentTi
16720 6d 65 49 6e 74 36 34 28 29 0a 2a 2a 20 69 6e 74  meInt64().** int
16730 65 72 66 61 63 65 73 20 61 72 65 20 6e 6f 74 20  erfaces are not 
16740 73 74 72 69 63 74 6c 79 20 61 20 70 61 72 74 20  strictly a part 
16750 6f 66 20 74 68 65 20 66 69 6c 65 73 79 73 74 65  of the filesyste
16760 6d 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 0a  m, but they are.
16770 2a 2a 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74  ** included in t
16780 68 65 20 56 46 53 20 73 74 72 75 63 74 75 72 65  he VFS structure
16790 20 66 6f 72 20 63 6f 6d 70 6c 65 74 65 6e 65 73   for completenes
167a0 73 2e 0a 2a 2a 20 54 68 65 20 78 52 61 6e 64 6f  s..** The xRando
167b0 6d 6e 65 73 73 28 29 20 66 75 6e 63 74 69 6f 6e  mness() function
167c0 20 61 74 74 65 6d 70 74 73 20 74 6f 20 72 65 74   attempts to ret
167d0 75 72 6e 20 6e 42 79 74 65 73 20 62 79 74 65 73  urn nBytes bytes
167e0 0a 2a 2a 20 6f 66 20 67 6f 6f 64 2d 71 75 61 6c  .** of good-qual
167f0 69 74 79 20 72 61 6e 64 6f 6d 6e 65 73 73 20 69  ity randomness i
16800 6e 74 6f 20 7a 4f 75 74 2e 20 20 54 68 65 20 72  nto zOut.  The r
16810 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 0a 2a  eturn value is.*
16820 2a 20 74 68 65 20 61 63 74 75 61 6c 20 6e 75 6d  * the actual num
16830 62 65 72 20 6f 66 20 62 79 74 65 73 20 6f 66 20  ber of bytes of 
16840 72 61 6e 64 6f 6d 6e 65 73 73 20 6f 62 74 61 69  randomness obtai
16850 6e 65 64 2e 0a 2a 2a 20 54 68 65 20 78 53 6c 65  ned..** The xSle
16860 65 70 28 29 20 6d 65 74 68 6f 64 20 63 61 75 73  ep() method caus
16870 65 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 74  es the calling t
16880 68 72 65 61 64 20 74 6f 20 73 6c 65 65 70 20 66  hread to sleep f
16890 6f 72 20 61 74 0a 2a 2a 20 6c 65 61 73 74 20 74  or at.** least t
168a0 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 63  he number of mic
168b0 72 6f 73 65 63 6f 6e 64 73 20 67 69 76 65 6e 2e  roseconds given.
168c0 20 20 5e 54 68 65 20 78 43 75 72 72 65 6e 74 54    ^The xCurrentT
168d0 69 6d 65 28 29 0a 2a 2a 20 6d 65 74 68 6f 64 20  ime().** method 
168e0 72 65 74 75 72 6e 73 20 61 20 4a 75 6c 69 61 6e  returns a Julian
168f0 20 44 61 79 20 4e 75 6d 62 65 72 20 66 6f 72 20   Day Number for 
16900 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65  the current date
16910 20 61 6e 64 20 74 69 6d 65 20 61 73 0a 2a 2a 20   and time as.** 
16920 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74  a floating point
16930 20 76 61 6c 75 65 2e 0a 2a 2a 20 5e 54 68 65 20   value..** ^The 
16940 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
16950 34 28 29 20 6d 65 74 68 6f 64 20 72 65 74 75 72  4() method retur
16960 6e 73 2c 20 61 73 20 61 6e 20 69 6e 74 65 67 65  ns, as an intege
16970 72 2c 20 74 68 65 20 4a 75 6c 69 61 6e 0a 2a 2a  r, the Julian.**
16980 20 44 61 79 20 4e 75 6d 62 65 72 20 6d 75 6c 74   Day Number mult
16990 69 70 6c 69 65 64 20 62 79 20 38 36 34 30 30 30  iplied by 864000
169a0 30 30 20 28 74 68 65 20 6e 75 6d 62 65 72 20 6f  00 (the number o
169b0 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 69  f milliseconds i
169c0 6e 20 0a 2a 2a 20 61 20 32 34 2d 68 6f 75 72 20  n .** a 24-hour 
169d0 64 61 79 29 2e 20 20 0a 2a 2a 20 5e 53 51 4c 69  day).  .** ^SQLi
169e0 74 65 20 77 69 6c 6c 20 75 73 65 20 74 68 65 20  te will use the 
169f0 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
16a00 34 28 29 20 6d 65 74 68 6f 64 20 74 6f 20 67 65  4() method to ge
16a10 74 20 74 68 65 20 63 75 72 72 65 6e 74 0a 2a 2a  t the current.**
16a20 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65 20 69   date and time i
16a30 66 20 74 68 61 74 20 6d 65 74 68 6f 64 20 69 73  f that method is
16a40 20 61 76 61 69 6c 61 62 6c 65 20 28 69 66 20 69   available (if i
16a50 56 65 72 73 69 6f 6e 20 69 73 20 32 20 6f 72 20  Version is 2 or 
16a60 0a 2a 2a 20 67 72 65 61 74 65 72 20 61 6e 64 20  .** greater and 
16a70 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69  the function poi
16a80 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  nter is not NULL
16a90 29 20 61 6e 64 20 77 69 6c 6c 20 66 61 6c 6c 20  ) and will fall 
16aa0 62 61 63 6b 0a 2a 2a 20 74 6f 20 78 43 75 72 72  back.** to xCurr
16ab0 65 6e 74 54 69 6d 65 28 29 20 69 66 20 78 43 75  entTime() if xCu
16ac0 72 72 65 6e 74 54 69 6d 65 49 6e 74 36 34 28 29  rrentTimeInt64()
16ad0 20 69 73 20 75 6e 61 76 61 69 6c 61 62 6c 65 2e   is unavailable.
16ae0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 78 53 65 74  .**.** ^The xSet
16af0 53 79 73 74 65 6d 43 61 6c 6c 28 29 2c 20 78 47  SystemCall(), xG
16b00 65 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 2c 20  etSystemCall(), 
16b10 61 6e 64 20 78 4e 65 73 74 53 79 73 74 65 6d 43  and xNestSystemC
16b20 61 6c 6c 28 29 20 69 6e 74 65 72 66 61 63 65 73  all() interfaces
16b30 0a 2a 2a 20 61 72 65 20 6e 6f 74 20 75 73 65 64  .** are not used
16b40 20 62 79 20 74 68 65 20 53 51 4c 69 74 65 20 63   by the SQLite c
16b50 6f 72 65 2e 20 20 54 68 65 73 65 20 6f 70 74 69  ore.  These opti
16b60 6f 6e 61 6c 20 69 6e 74 65 72 66 61 63 65 73 20  onal interfaces 
16b70 61 72 65 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20  are provided.** 
16b80 62 79 20 73 6f 6d 65 20 56 46 53 65 73 20 74 6f  by some VFSes to
16b90 20 66 61 63 69 6c 69 74 61 74 65 20 74 65 73 74   facilitate test
16ba0 69 6e 67 20 6f 66 20 74 68 65 20 56 46 53 20 63  ing of the VFS c
16bb0 6f 64 65 2e 20 42 79 20 6f 76 65 72 72 69 64 69  ode. By overridi
16bc0 6e 67 20 0a 2a 2a 20 73 79 73 74 65 6d 20 63 61  ng .** system ca
16bd0 6c 6c 73 20 77 69 74 68 20 66 75 6e 63 74 69 6f  lls with functio
16be0 6e 73 20 75 6e 64 65 72 20 69 74 73 20 63 6f 6e  ns under its con
16bf0 74 72 6f 6c 2c 20 61 20 74 65 73 74 20 70 72 6f  trol, a test pro
16c00 67 72 61 6d 20 63 61 6e 0a 2a 2a 20 73 69 6d 75  gram can.** simu
16c10 6c 61 74 65 20 66 61 75 6c 74 73 20 61 6e 64 20  late faults and 
16c20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 73  error conditions
16c30 20 74 68 61 74 20 77 6f 75 6c 64 20 6f 74 68 65   that would othe
16c40 72 77 69 73 65 20 62 65 20 64 69 66 66 69 63 75  rwise be difficu
16c50 6c 74 0a 2a 2a 20 6f 72 20 69 6d 70 6f 73 73 69  lt.** or impossi
16c60 62 6c 65 20 74 6f 20 69 6e 64 75 63 65 2e 20 20  ble to induce.  
16c70 54 68 65 20 73 65 74 20 6f 66 20 73 79 73 74 65  The set of syste
16c80 6d 20 63 61 6c 6c 73 20 74 68 61 74 20 63 61 6e  m calls that can
16c90 20 62 65 20 6f 76 65 72 72 69 64 64 65 6e 0a 2a   be overridden.*
16ca0 2a 20 76 61 72 69 65 73 20 66 72 6f 6d 20 6f 6e  * varies from on
16cb0 65 20 56 46 53 20 74 6f 20 61 6e 6f 74 68 65 72  e VFS to another
16cc0 2c 20 61 6e 64 20 66 72 6f 6d 20 6f 6e 65 20 76  , and from one v
16cd0 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 73 61  ersion of the sa
16ce0 6d 65 20 56 46 53 20 74 6f 20 74 68 65 0a 2a 2a  me VFS to the.**
16cf0 20 6e 65 78 74 2e 20 20 41 70 70 6c 69 63 61 74   next.  Applicat
16d00 69 6f 6e 73 20 74 68 61 74 20 75 73 65 20 74 68  ions that use th
16d10 65 73 65 20 69 6e 74 65 72 66 61 63 65 73 20 6d  ese interfaces m
16d20 75 73 74 20 62 65 20 70 72 65 70 61 72 65 64 20  ust be prepared 
16d30 66 6f 72 20 61 6e 79 0a 2a 2a 20 6f 72 20 61 6c  for any.** or al
16d40 6c 20 6f 66 20 74 68 65 73 65 20 69 6e 74 65 72  l of these inter
16d50 66 61 63 65 73 20 74 6f 20 62 65 20 4e 55 4c 4c  faces to be NULL
16d60 20 6f 72 20 66 6f 72 20 74 68 65 69 72 20 62 65   or for their be
16d70 68 61 76 69 6f 72 20 74 6f 20 63 68 61 6e 67 65  havior to change
16d80 0a 2a 2a 20 66 72 6f 6d 20 6f 6e 65 20 72 65 6c  .** from one rel
16d90 65 61 73 65 20 74 6f 20 74 68 65 20 6e 65 78 74  ease to the next
16da0 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  .  Applications 
16db0 6d 75 73 74 20 6e 6f 74 20 61 74 74 65 6d 70 74  must not attempt
16dc0 20 74 6f 20 61 63 63 65 73 73 0a 2a 2a 20 61 6e   to access.** an
16dd0 79 20 6f 66 20 74 68 65 73 65 20 6d 65 74 68 6f  y of these metho
16de0 64 73 20 69 66 20 74 68 65 20 69 56 65 72 73 69  ds if the iVersi
16df0 6f 6e 20 6f 66 20 74 68 65 20 56 46 53 20 69 73  on of the VFS is
16e00 20 6c 65 73 73 20 74 68 61 6e 20 33 2e 0a 2a 2f   less than 3..*/
16e10 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
16e20 73 71 6c 69 74 65 33 5f 76 66 73 20 73 71 6c 69  sqlite3_vfs sqli
16e30 74 65 33 5f 76 66 73 3b 0a 74 79 70 65 64 65 66  te3_vfs;.typedef
16e40 20 76 6f 69 64 20 28 2a 73 71 6c 69 74 65 33 5f   void (*sqlite3_
16e50 73 79 73 63 61 6c 6c 5f 70 74 72 29 28 76 6f 69  syscall_ptr)(voi
16e60 64 29 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74  d);.struct sqlit
16e70 65 33 5f 76 66 73 20 7b 0a 20 20 69 6e 74 20 69  e3_vfs {.  int i
16e80 56 65 72 73 69 6f 6e 3b 20 20 20 20 20 20 20 20  Version;        
16e90 20 20 20 20 2f 2a 20 53 74 72 75 63 74 75 72 65      /* Structure
16ea0 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20   version number 
16eb0 28 63 75 72 72 65 6e 74 6c 79 20 33 29 20 2a 2f  (currently 3) */
16ec0 0a 20 20 69 6e 74 20 73 7a 4f 73 46 69 6c 65 3b  .  int szOsFile;
16ed0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53              /* S
16ee0 69 7a 65 20 6f 66 20 73 75 62 63 6c 61 73 73 65  ize of subclasse
16ef0 64 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 20 2a  d sqlite3_file *
16f00 2f 0a 20 20 69 6e 74 20 6d 78 50 61 74 68 6e 61  /.  int mxPathna
16f10 6d 65 3b 20 20 20 20 20 20 20 20 20 20 2f 2a 20  me;          /* 
16f20 4d 61 78 69 6d 75 6d 20 66 69 6c 65 20 70 61 74  Maximum file pat
16f30 68 6e 61 6d 65 20 6c 65 6e 67 74 68 20 2a 2f 0a  hname length */.
16f40 20 20 73 71 6c 69 74 65 33 5f 76 66 73 20 2a 70    sqlite3_vfs *p
16f50 4e 65 78 74 3b 20 20 20 20 20 20 2f 2a 20 4e 65  Next;      /* Ne
16f60 78 74 20 72 65 67 69 73 74 65 72 65 64 20 56 46  xt registered VF
16f70 53 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  S */.  const cha
16f80 72 20 2a 7a 4e 61 6d 65 3b 20 20 20 20 20 20 20  r *zName;       
16f90 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68 69 73 20  /* Name of this 
16fa0 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79 73  virtual file sys
16fb0 74 65 6d 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 70  tem */.  void *p
16fc0 41 70 70 44 61 74 61 3b 20 20 20 20 20 20 20 20  AppData;        
16fd0 20 20 2f 2a 20 50 6f 69 6e 74 65 72 20 74 6f 20    /* Pointer to 
16fe0 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73 70 65 63  application-spec
16ff0 69 66 69 63 20 64 61 74 61 20 2a 2f 0a 20 20 69  ific data */.  i
17000 6e 74 20 28 2a 78 4f 70 65 6e 29 28 73 71 6c 69  nt (*xOpen)(sqli
17010 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20  te3_vfs*, const 
17020 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c  char *zName, sql
17030 69 74 65 33 5f 66 69 6c 65 2a 2c 0a 20 20 20 20  ite3_file*,.    
17040 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 66             int f
17050 6c 61 67 73 2c 20 69 6e 74 20 2a 70 4f 75 74 46  lags, int *pOutF
17060 6c 61 67 73 29 3b 0a 20 20 69 6e 74 20 28 2a 78  lags);.  int (*x
17070 44 65 6c 65 74 65 29 28 73 71 6c 69 74 65 33 5f  Delete)(sqlite3_
17080 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
17090 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 73 79 6e   *zName, int syn
170a0 63 44 69 72 29 3b 0a 20 20 69 6e 74 20 28 2a 78  cDir);.  int (*x
170b0 41 63 63 65 73 73 29 28 73 71 6c 69 74 65 33 5f  Access)(sqlite3_
170c0 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
170d0 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 66 6c 61   *zName, int fla
170e0 67 73 2c 20 69 6e 74 20 2a 70 52 65 73 4f 75 74  gs, int *pResOut
170f0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46 75 6c 6c  );.  int (*xFull
17100 50 61 74 68 6e 61 6d 65 29 28 73 71 6c 69 74 65  Pathname)(sqlite
17110 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68  3_vfs*, const ch
17120 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20 6e  ar *zName, int n
17130 4f 75 74 2c 20 63 68 61 72 20 2a 7a 4f 75 74 29  Out, char *zOut)
17140 3b 0a 20 20 76 6f 69 64 20 2a 28 2a 78 44 6c 4f  ;.  void *(*xDlO
17150 70 65 6e 29 28 73 71 6c 69 74 65 33 5f 76 66 73  pen)(sqlite3_vfs
17160 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  *, const char *z
17170 46 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 76 6f 69  Filename);.  voi
17180 64 20 28 2a 78 44 6c 45 72 72 6f 72 29 28 73 71  d (*xDlError)(sq
17190 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20  lite3_vfs*, int 
171a0 6e 42 79 74 65 2c 20 63 68 61 72 20 2a 7a 45 72  nByte, char *zEr
171b0 72 4d 73 67 29 3b 0a 20 20 76 6f 69 64 20 28 2a  rMsg);.  void (*
171c0 28 2a 78 44 6c 53 79 6d 29 28 73 71 6c 69 74 65  (*xDlSym)(sqlite
171d0 33 5f 76 66 73 2a 2c 76 6f 69 64 2a 2c 20 63 6f  3_vfs*,void*, co
171e0 6e 73 74 20 63 68 61 72 20 2a 7a 53 79 6d 62 6f  nst char *zSymbo
171f0 6c 29 29 28 76 6f 69 64 29 3b 0a 20 20 76 6f 69  l))(void);.  voi
17200 64 20 28 2a 78 44 6c 43 6c 6f 73 65 29 28 73 71  d (*xDlClose)(sq
17210 6c 69 74 65 33 5f 76 66 73 2a 2c 20 76 6f 69 64  lite3_vfs*, void
17220 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78 52 61 6e  *);.  int (*xRan
17230 64 6f 6d 6e 65 73 73 29 28 73 71 6c 69 74 65 33  domness)(sqlite3
17240 5f 76 66 73 2a 2c 20 69 6e 74 20 6e 42 79 74 65  _vfs*, int nByte
17250 2c 20 63 68 61 72 20 2a 7a 4f 75 74 29 3b 0a 20  , char *zOut);. 
17260 20 69 6e 74 20 28 2a 78 53 6c 65 65 70 29 28 73   int (*xSleep)(s
17270 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74  qlite3_vfs*, int
17280 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 29 3b 0a   microseconds);.
17290 20 20 69 6e 74 20 28 2a 78 43 75 72 72 65 6e 74    int (*xCurrent
172a0 54 69 6d 65 29 28 73 71 6c 69 74 65 33 5f 76 66  Time)(sqlite3_vf
172b0 73 2a 2c 20 64 6f 75 62 6c 65 2a 29 3b 0a 20 20  s*, double*);.  
172c0 69 6e 74 20 28 2a 78 47 65 74 4c 61 73 74 45 72  int (*xGetLastEr
172d0 72 6f 72 29 28 73 71 6c 69 74 65 33 5f 76 66 73  ror)(sqlite3_vfs
172e0 2a 2c 20 69 6e 74 2c 20 63 68 61 72 20 2a 29 3b  *, int, char *);
172f0 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68 65 20 6d  .  /*.  ** The m
17300 65 74 68 6f 64 73 20 61 62 6f 76 65 20 61 72 65  ethods above are
17310 20 69 6e 20 76 65 72 73 69 6f 6e 20 31 20 6f 66   in version 1 of
17320 20 74 68 65 20 73 71 6c 69 74 65 5f 76 66 73 20   the sqlite_vfs 
17330 6f 62 6a 65 63 74 0a 20 20 2a 2a 20 64 65 66 69  object.  ** defi
17340 6e 69 74 69 6f 6e 2e 20 20 54 68 6f 73 65 20 74  nition.  Those t
17350 68 61 74 20 66 6f 6c 6c 6f 77 20 61 72 65 20 61  hat follow are a
17360 64 64 65 64 20 69 6e 20 76 65 72 73 69 6f 6e 20  dded in version 
17370 32 20 6f 72 20 6c 61 74 65 72 0a 20 20 2a 2f 0a  2 or later.  */.
17380 20 20 69 6e 74 20 28 2a 78 43 75 72 72 65 6e 74    int (*xCurrent
17390 54 69 6d 65 49 6e 74 36 34 29 28 73 71 6c 69 74  TimeInt64)(sqlit
173a0 65 33 5f 76 66 73 2a 2c 20 73 71 6c 69 74 65 33  e3_vfs*, sqlite3
173b0 5f 69 6e 74 36 34 2a 29 3b 0a 20 20 2f 2a 0a 20  _int64*);.  /*. 
173c0 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20   ** The methods 
173d0 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72  above are in ver
173e0 73 69 6f 6e 73 20 31 20 61 6e 64 20 32 20 6f 66  sions 1 and 2 of
173f0 20 74 68 65 20 73 71 6c 69 74 65 5f 76 66 73 20   the sqlite_vfs 
17400 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a 20 54 68 6f  object..  ** Tho
17410 73 65 20 62 65 6c 6f 77 20 61 72 65 20 66 6f 72  se below are for
17420 20 76 65 72 73 69 6f 6e 20 33 20 61 6e 64 20 67   version 3 and g
17430 72 65 61 74 65 72 2e 0a 20 20 2a 2f 0a 20 20 69  reater..  */.  i
17440 6e 74 20 28 2a 78 53 65 74 53 79 73 74 65 6d 43  nt (*xSetSystemC
17450 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76 66 73  all)(sqlite3_vfs
17460 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  *, const char *z
17470 4e 61 6d 65 2c 20 73 71 6c 69 74 65 33 5f 73 79  Name, sqlite3_sy
17480 73 63 61 6c 6c 5f 70 74 72 29 3b 0a 20 20 73 71  scall_ptr);.  sq
17490 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74  lite3_syscall_pt
174a0 72 20 28 2a 78 47 65 74 53 79 73 74 65 6d 43 61  r (*xGetSystemCa
174b0 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a  ll)(sqlite3_vfs*
174c0 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e  , const char *zN
174d0 61 6d 65 29 3b 0a 20 20 63 6f 6e 73 74 20 63 68  ame);.  const ch
174e0 61 72 20 2a 28 2a 78 4e 65 78 74 53 79 73 74 65  ar *(*xNextSyste
174f0 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76  mCall)(sqlite3_v
17500 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  fs*, const char 
17510 2a 7a 4e 61 6d 65 29 3b 0a 20 20 2f 2a 0a 20 20  *zName);.  /*.  
17520 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64 73 20 61  ** The methods a
17530 62 6f 76 65 20 61 72 65 20 69 6e 20 76 65 72 73  bove are in vers
17540 69 6f 6e 73 20 31 20 74 68 72 6f 75 67 68 20 33  ions 1 through 3
17550 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f 76   of the sqlite_v
17560 66 73 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a 20  fs object..  ** 
17570 4e 65 77 20 66 69 65 6c 64 73 20 6d 61 79 20 62  New fields may b
17580 65 20 61 70 70 65 6e 64 65 64 20 69 6e 20 66 75  e appended in fu
17590 74 75 72 65 20 76 65 72 73 69 6f 6e 73 2e 20 20  ture versions.  
175a0 54 68 65 20 69 56 65 72 73 69 6f 6e 0a 20 20 2a  The iVersion.  *
175b0 2a 20 76 61 6c 75 65 20 77 69 6c 6c 20 69 6e 63  * value will inc
175c0 72 65 6d 65 6e 74 20 77 68 65 6e 65 76 65 72 20  rement whenever 
175d0 74 68 69 73 20 68 61 70 70 65 6e 73 2e 20 0a 20  this happens. . 
175e0 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41   */.};../*.** CA
175f0 50 49 33 52 45 46 3a 20 46 6c 61 67 73 20 66 6f  PI3REF: Flags fo
17600 72 20 74 68 65 20 78 41 63 63 65 73 73 20 56 46  r the xAccess VF
17610 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a 2a 20 54  S method.**.** T
17620 68 65 73 65 20 69 6e 74 65 67 65 72 20 63 6f 6e  hese integer con
17630 73 74 61 6e 74 73 20 63 61 6e 20 62 65 20 75 73  stants can be us
17640 65 64 20 61 73 20 74 68 65 20 74 68 69 72 64 20  ed as the third 
17650 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
17660 74 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68  the xAccess meth
17670 6f 64 20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65  od of an [sqlite
17680 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74 2e 20 20  3_vfs] object.  
17690 54 68 65 79 20 64 65 74 65 72 6d 69 6e 65 0a 2a  They determine.*
176a0 2a 20 77 68 61 74 20 6b 69 6e 64 20 6f 66 20 70  * what kind of p
176b0 65 72 6d 69 73 73 69 6f 6e 73 20 74 68 65 20 78  ermissions the x
176c0 41 63 63 65 73 73 20 6d 65 74 68 6f 64 20 69 73  Access method is
176d0 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 2e 0a 2a 2a   looking for..**
176e0 20 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43   With SQLITE_ACC
176f0 45 53 53 5f 45 58 49 53 54 53 2c 20 74 68 65 20  ESS_EXISTS, the 
17700 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a  xAccess method.*
17710 2a 20 73 69 6d 70 6c 79 20 63 68 65 63 6b 73 20  * simply checks 
17720 77 68 65 74 68 65 72 20 74 68 65 20 66 69 6c 65  whether the file
17730 20 65 78 69 73 74 73 2e 0a 2a 2a 20 57 69 74 68   exists..** With
17740 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f 52   SQLITE_ACCESS_R
17750 45 41 44 57 52 49 54 45 2c 20 74 68 65 20 78 41  EADWRITE, the xA
17760 63 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a 20  ccess method.** 
17770 63 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 74  checks whether t
17780 68 65 20 6e 61 6d 65 64 20 64 69 72 65 63 74 6f  he named directo
17790 72 79 20 69 73 20 62 6f 74 68 20 72 65 61 64 61  ry is both reada
177a0 62 6c 65 20 61 6e 64 20 77 72 69 74 61 62 6c 65  ble and writable
177b0 0a 2a 2a 20 28 69 6e 20 6f 74 68 65 72 20 77 6f  .** (in other wo
177c0 72 64 73 2c 20 69 66 20 66 69 6c 65 73 20 63 61  rds, if files ca
177d0 6e 20 62 65 20 61 64 64 65 64 2c 20 72 65 6d 6f  n be added, remo
177e0 76 65 64 2c 20 61 6e 64 20 72 65 6e 61 6d 65 64  ved, and renamed
177f0 20 77 69 74 68 69 6e 0a 2a 2a 20 74 68 65 20 64   within.** the d
17800 69 72 65 63 74 6f 72 79 29 2e 0a 2a 2a 20 54 68  irectory)..** Th
17810 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53 5f  e SQLITE_ACCESS_
17820 52 45 41 44 57 52 49 54 45 20 63 6f 6e 73 74 61  READWRITE consta
17830 6e 74 20 69 73 20 63 75 72 72 65 6e 74 6c 79 20  nt is currently 
17840 75 73 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 65  used only by the
17850 0a 2a 2a 20 5b 74 65 6d 70 5f 73 74 6f 72 65 5f  .** [temp_store_
17860 64 69 72 65 63 74 6f 72 79 20 70 72 61 67 6d 61  directory pragma
17870 5d 2c 20 74 68 6f 75 67 68 20 74 68 69 73 20 63  ], though this c
17880 6f 75 6c 64 20 63 68 61 6e 67 65 20 69 6e 20 61  ould change in a
17890 20 66 75 74 75 72 65 0a 2a 2a 20 72 65 6c 65 61   future.** relea
178a0 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a  se of SQLite..**
178b0 20 57 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43   With SQLITE_ACC
178c0 45 53 53 5f 52 45 41 44 2c 20 74 68 65 20 78 41  ESS_READ, the xA
178d0 63 63 65 73 73 20 6d 65 74 68 6f 64 0a 2a 2a 20  ccess method.** 
178e0 63 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 74  checks whether t
178f0 68 65 20 66 69 6c 65 20 69 73 20 72 65 61 64 61  he file is reada
17900 62 6c 65 2e 20 20 54 68 65 20 53 51 4c 49 54 45  ble.  The SQLITE
17910 5f 41 43 43 45 53 53 5f 52 45 41 44 20 63 6f 6e  _ACCESS_READ con
17920 73 74 61 6e 74 20 69 73 0a 2a 2a 20 63 75 72 72  stant is.** curr
17930 65 6e 74 6c 79 20 75 6e 75 73 65 64 2c 20 74 68  ently unused, th
17940 6f 75 67 68 20 69 74 20 6d 69 67 68 74 20 62 65  ough it might be
17950 20 75 73 65 64 20 69 6e 20 61 20 66 75 74 75 72   used in a futur
17960 65 20 72 65 6c 65 61 73 65 20 6f 66 0a 2a 2a 20  e release of.** 
17970 53 51 4c 69 74 65 2e 0a 2a 2f 0a 23 64 65 66 69  SQLite..*/.#defi
17980 6e 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53  ne SQLITE_ACCESS
17990 5f 45 58 49 53 54 53 20 20 20 20 30 0a 23 64 65  _EXISTS    0.#de
179a0 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43 43 45  fine SQLITE_ACCE
179b0 53 53 5f 52 45 41 44 57 52 49 54 45 20 31 20 20  SS_READWRITE 1  
179c0 20 2f 2a 20 55 73 65 64 20 62 79 20 50 52 41 47   /* Used by PRAG
179d0 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65 5f 64 69  MA temp_store_di
179e0 72 65 63 74 6f 72 79 20 2a 2f 0a 23 64 65 66 69  rectory */.#defi
179f0 6e 65 20 53 51 4c 49 54 45 5f 41 43 43 45 53 53  ne SQLITE_ACCESS
17a00 5f 52 45 41 44 20 20 20 20 20 20 32 20 20 20 2f  _READ      2   /
17a10 2a 20 55 6e 75 73 65 64 20 2a 2f 0a 0a 2f 2a 0a  * Unused */../*.
17a20 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61  ** CAPI3REF: Fla
17a30 67 73 20 66 6f 72 20 74 68 65 20 78 53 68 6d 4c  gs for the xShmL
17a40 6f 63 6b 20 56 46 53 20 6d 65 74 68 6f 64 0a 2a  ock VFS method.*
17a50 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e 74 65 67  *.** These integ
17a60 65 72 20 63 6f 6e 73 74 61 6e 74 73 20 64 65 66  er constants def
17a70 69 6e 65 20 74 68 65 20 76 61 72 69 6f 75 73 20  ine the various 
17a80 6c 6f 63 6b 69 6e 67 20 6f 70 65 72 61 74 69 6f  locking operatio
17a90 6e 73 0a 2a 2a 20 61 6c 6c 6f 77 65 64 20 62 79  ns.** allowed by
17aa0 20 74 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d 65   the xShmLock me
17ab0 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69 74 65 33  thod of [sqlite3
17ac0 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 2e 20 20 54  _io_methods].  T
17ad0 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  he.** following 
17ae0 61 72 65 20 74 68 65 20 6f 6e 6c 79 20 6c 65 67  are the only leg
17af0 61 6c 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20  al combinations 
17b00 6f 66 20 66 6c 61 67 73 20 74 6f 20 74 68 65 0a  of flags to the.
17b10 2a 2a 20 78 53 68 6d 4c 6f 63 6b 20 6d 65 74 68  ** xShmLock meth
17b20 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a  od:.**.** <ul>.*
17b30 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53  * <li>  SQLITE_S
17b40 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45  HM_LOCK | SQLITE
17b50 5f 53 48 4d 5f 53 48 41 52 45 44 0a 2a 2a 20 3c  _SHM_SHARED.** <
17b60 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f  li>  SQLITE_SHM_
17b70 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53 48  LOCK | SQLITE_SH
17b80 4d 5f 45 58 43 4c 55 53 49 56 45 0a 2a 2a 20 3c  M_EXCLUSIVE.** <
17b90 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f  li>  SQLITE_SHM_
17ba0 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f  UNLOCK | SQLITE_
17bb0 53 48 4d 5f 53 48 41 52 45 44 0a 2a 2a 20 3c 6c  SHM_SHARED.** <l
17bc0 69 3e 20 20 53 51 4c 49 54 45 5f 53 48 4d 5f 55  i>  SQLITE_SHM_U
17bd0 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45 5f 53  NLOCK | SQLITE_S
17be0 48 4d 5f 45 58 43 4c 55 53 49 56 45 0a 2a 2a 20  HM_EXCLUSIVE.** 
17bf0 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e  </ul>.**.** When
17c00 20 75 6e 6c 6f 63 6b 69 6e 67 2c 20 74 68 65 20   unlocking, the 
17c10 73 61 6d 65 20 53 48 41 52 45 44 20 6f 72 20 45  same SHARED or E
17c20 58 43 4c 55 53 49 56 45 20 66 6c 61 67 20 6d 75  XCLUSIVE flag mu
17c30 73 74 20 62 65 20 73 75 70 70 6c 69 65 64 20 61  st be supplied a
17c40 73 0a 2a 2a 20 77 61 73 20 67 69 76 65 6e 20 6f  s.** was given o
17c50 6e 20 74 68 65 20 63 6f 72 72 65 73 70 6f 6e 64  n the correspond
17c60 69 6e 67 20 6c 6f 63 6b 2e 20 20 0a 2a 2a 0a 2a  ing lock.  .**.*
17c70 2a 20 54 68 65 20 78 53 68 6d 4c 6f 63 6b 20 6d  * The xShmLock m
17c80 65 74 68 6f 64 20 63 61 6e 20 74 72 61 6e 73 69  ethod can transi
17c90 74 69 6f 6e 20 62 65 74 77 65 65 6e 20 75 6e 6c  tion between unl
17ca0 6f 63 6b 65 64 20 61 6e 64 20 53 48 41 52 45 44  ocked and SHARED
17cb0 20 6f 72 0a 2a 2a 20 62 65 74 77 65 65 6e 20 75   or.** between u
17cc0 6e 6c 6f 63 6b 65 64 20 61 6e 64 20 45 58 43 4c  nlocked and EXCL
17cd0 55 53 49 56 45 2e 20 20 49 74 20 63 61 6e 6e 6f  USIVE.  It canno
17ce0 74 20 74 72 61 6e 73 69 74 69 6f 6e 20 62 65 74  t transition bet
17cf0 77 65 65 6e 20 53 48 41 52 45 44 0a 2a 2a 20 61  ween SHARED.** a
17d00 6e 64 20 45 58 43 4c 55 53 49 56 45 2e 0a 2a 2f  nd EXCLUSIVE..*/
17d10 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
17d20 53 48 4d 5f 55 4e 4c 4f 43 4b 20 20 20 20 20 20  SHM_UNLOCK      
17d30 20 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   1.#define SQLIT
17d40 45 5f 53 48 4d 5f 4c 4f 43 4b 20 20 20 20 20 20  E_SHM_LOCK      
17d50 20 20 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c     2.#define SQL
17d60 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 20 20  ITE_SHM_SHARED  
17d70 20 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53       4.#define S
17d80 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43 4c 55 53  QLITE_SHM_EXCLUS
17d90 49 56 45 20 20 20 20 38 0a 0a 2f 2a 0a 2a 2a 20  IVE    8../*.** 
17da0 43 41 50 49 33 52 45 46 3a 20 4d 61 78 69 6d 75  CAPI3REF: Maximu
17db0 6d 20 78 53 68 6d 4c 6f 63 6b 20 69 6e 64 65 78  m xShmLock index
17dc0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 53 68 6d 4c  .**.** The xShmL
17dd0 6f 63 6b 20 6d 65 74 68 6f 64 20 6f 6e 20 5b 73  ock method on [s
17de0 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
17df0 73 5d 20 6d 61 79 20 75 73 65 20 76 61 6c 75 65  s] may use value
17e00 73 0a 2a 2a 20 62 65 74 77 65 65 6e 20 30 20 61  s.** between 0 a
17e10 6e 64 20 74 68 69 73 20 75 70 70 65 72 20 62 6f  nd this upper bo
17e20 75 6e 64 20 61 73 20 69 74 73 20 22 6f 66 66 73  und as its "offs
17e30 65 74 22 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a  et" argument..**
17e40 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72 65   The SQLite core
17e50 20 77 69 6c 6c 20 6e 65 76 65 72 20 61 74 74 65   will never atte
17e60 6d 70 74 20 74 6f 20 61 63 71 75 69 72 65 20 6f  mpt to acquire o
17e70 72 20 72 65 6c 65 61 73 65 20 61 0a 2a 2a 20 6c  r release a.** l
17e80 6f 63 6b 20 6f 75 74 73 69 64 65 20 6f 66 20 74  ock outside of t
17e90 68 69 73 20 72 61 6e 67 65 0a 2a 2f 0a 23 64 65  his range.*/.#de
17ea0 66 69 6e 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f  fine SQLITE_SHM_
17eb0 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20 38 0a 0a  NLOCK        8..
17ec0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
17ed0 20 49 6e 69 74 69 61 6c 69 7a 65 20 54 68 65 20   Initialize The 
17ee0 53 51 4c 69 74 65 20 4c 69 62 72 61 72 79 0a 2a  SQLite Library.*
17ef0 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
17f00 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 72  3_initialize() r
17f10 6f 75 74 69 6e 65 20 69 6e 69 74 69 61 6c 69 7a  outine initializ
17f20 65 73 20 74 68 65 0a 2a 2a 20 53 51 4c 69 74 65  es the.** SQLite
17f30 20 6c 69 62 72 61 72 79 2e 20 20 5e 54 68 65 20   library.  ^The 
17f40 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
17f50 28 29 20 72 6f 75 74 69 6e 65 0a 2a 2a 20 64 65  () routine.** de
17f60 61 6c 6c 6f 63 61 74 65 73 20 61 6e 79 20 72 65  allocates any re
17f70 73 6f 75 72 63 65 73 20 74 68 61 74 20 77 65 72  sources that wer
17f80 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 73  e allocated by s
17f90 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
17fa0 65 28 29 2e 0a 2a 2a 20 54 68 65 73 65 20 72 6f  e()..** These ro
17fb0 75 74 69 6e 65 73 20 61 72 65 20 64 65 73 69 67  utines are desig
17fc0 6e 65 64 20 74 6f 20 61 69 64 20 69 6e 20 70 72  ned to aid in pr
17fd0 6f 63 65 73 73 20 69 6e 69 74 69 61 6c 69 7a 61  ocess initializa
17fe0 74 69 6f 6e 20 61 6e 64 0a 2a 2a 20 73 68 75 74  tion and.** shut
17ff0 64 6f 77 6e 20 6f 6e 20 65 6d 62 65 64 64 65 64  down on embedded
18000 20 73 79 73 74 65 6d 73 2e 20 20 57 6f 72 6b 73   systems.  Works
18010 74 61 74 69 6f 6e 20 61 70 70 6c 69 63 61 74 69  tation applicati
18020 6f 6e 73 20 75 73 69 6e 67 0a 2a 2a 20 53 51 4c  ons using.** SQL
18030 69 74 65 20 6e 6f 72 6d 61 6c 6c 79 20 64 6f 20  ite normally do 
18040 6e 6f 74 20 6e 65 65 64 20 74 6f 20 69 6e 76 6f  not need to invo
18050 6b 65 20 65 69 74 68 65 72 20 6f 66 20 74 68 65  ke either of the
18060 73 65 20 72 6f 75 74 69 6e 65 73 2e 0a 2a 2a 0a  se routines..**.
18070 2a 2a 20 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c  ** A call to sql
18080 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
18090 29 20 69 73 20 61 6e 20 22 65 66 66 65 63 74 69  ) is an "effecti
180a0 76 65 22 20 63 61 6c 6c 20 69 66 20 69 74 20 69  ve" call if it i
180b0 73 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20 74  s.** the first t
180c0 69 6d 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  ime sqlite3_init
180d0 69 61 6c 69 7a 65 28 29 20 69 73 20 69 6e 76 6f  ialize() is invo
180e0 6b 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 6c  ked during the l
180f0 69 66 65 74 69 6d 65 20 6f 66 0a 2a 2a 20 74 68  ifetime of.** th
18100 65 20 70 72 6f 63 65 73 73 2c 20 6f 72 20 69 66  e process, or if
18110 20 69 74 20 69 73 20 74 68 65 20 66 69 72 73 74   it is the first
18120 20 74 69 6d 65 20 73 71 6c 69 74 65 33 5f 69 6e   time sqlite3_in
18130 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69 6e  itialize() is in
18140 76 6f 6b 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69  voked.** followi
18150 6e 67 20 61 20 63 61 6c 6c 20 74 6f 20 73 71 6c  ng a call to sql
18160 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 2e  ite3_shutdown().
18170 20 20 5e 28 4f 6e 6c 79 20 61 6e 20 65 66 66 65    ^(Only an effe
18180 63 74 69 76 65 20 63 61 6c 6c 0a 2a 2a 20 6f 66  ctive call.** of
18190 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
181a0 69 7a 65 28 29 20 64 6f 65 73 20 61 6e 79 20 69  ize() does any i
181b0 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2e 20 20  nitialization.  
181c0 41 6c 6c 20 6f 74 68 65 72 20 63 61 6c 6c 73 0a  All other calls.
181d0 2a 2a 20 61 72 65 20 68 61 72 6d 6c 65 73 73 20  ** are harmless 
181e0 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20  no-ops.)^.**.** 
181f0 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  A call to sqlite
18200 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 69 73 20  3_shutdown() is 
18210 61 6e 20 22 65 66 66 65 63 74 69 76 65 22 20 63  an "effective" c
18220 61 6c 6c 20 69 66 20 69 74 20 69 73 20 74 68 65  all if it is the
18230 20 66 69 72 73 74 0a 2a 2a 20 63 61 6c 6c 20 74   first.** call t
18240 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  o sqlite3_shutdo
18250 77 6e 28 29 20 73 69 6e 63 65 20 74 68 65 20 6c  wn() since the l
18260 61 73 74 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  ast sqlite3_init
18270 69 61 6c 69 7a 65 28 29 2e 20 20 5e 28 4f 6e 6c  ialize().  ^(Onl
18280 79 0a 2a 2a 20 61 6e 20 65 66 66 65 63 74 69 76  y.** an effectiv
18290 65 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69 74 65  e call to sqlite
182a0 33 5f 73 68 75 74 64 6f 77 6e 28 29 20 64 6f 65  3_shutdown() doe
182b0 73 20 61 6e 79 20 64 65 69 6e 69 74 69 61 6c 69  s any deinitiali
182c0 7a 61 74 69 6f 6e 2e 0a 2a 2a 20 41 6c 6c 20 6f  zation..** All o
182d0 74 68 65 72 20 76 61 6c 69 64 20 63 61 6c 6c 73  ther valid calls
182e0 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75 74   to sqlite3_shut
182f0 64 6f 77 6e 28 29 20 61 72 65 20 68 61 72 6d 6c  down() are harml
18300 65 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a  ess no-ops.)^.**
18310 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
18320 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 6e 74  initialize() int
18330 65 72 66 61 63 65 20 69 73 20 74 68 72 65 61 64  erface is thread
18340 73 61 66 65 2c 20 62 75 74 20 73 71 6c 69 74 65  safe, but sqlite
18350 33 5f 73 68 75 74 64 6f 77 6e 28 29 0a 2a 2a 20  3_shutdown().** 
18360 69 73 20 6e 6f 74 2e 20 20 54 68 65 20 73 71 6c  is not.  The sql
18370 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20  ite3_shutdown() 
18380 69 6e 74 65 72 66 61 63 65 20 6d 75 73 74 20 6f  interface must o
18390 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 20 66 72  nly be called fr
183a0 6f 6d 20 61 0a 2a 2a 20 73 69 6e 67 6c 65 20 74  om a.** single t
183b0 68 72 65 61 64 2e 20 20 41 6c 6c 20 6f 70 65 6e  hread.  All open
183c0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
183d0 63 74 69 6f 6e 73 5d 20 6d 75 73 74 20 62 65 20  ctions] must be 
183e0 63 6c 6f 73 65 64 20 61 6e 64 20 61 6c 6c 0a 2a  closed and all.*
183f0 2a 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 72  * other SQLite r
18400 65 73 6f 75 72 63 65 73 20 6d 75 73 74 20 62 65  esources must be
18410 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 70 72 69   deallocated pri
18420 6f 72 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 0a 2a  or to invoking.*
18430 2a 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  * sqlite3_shutdo
18440 77 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20 41 6d 6f 6e  wn()..**.** Amon
18450 67 20 6f 74 68 65 72 20 74 68 69 6e 67 73 2c 20  g other things, 
18460 5e 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c  ^sqlite3_initial
18470 69 7a 65 28 29 20 77 69 6c 6c 20 69 6e 76 6f 6b  ize() will invok
18480 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f  e.** sqlite3_os_
18490 69 6e 69 74 28 29 2e 20 20 53 69 6d 69 6c 61 72  init().  Similar
184a0 6c 79 2c 20 5e 73 71 6c 69 74 65 33 5f 73 68 75  ly, ^sqlite3_shu
184b0 74 64 6f 77 6e 28 29 0a 2a 2a 20 77 69 6c 6c 20  tdown().** will 
184c0 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65 33 5f 6f  invoke sqlite3_o
184d0 73 5f 65 6e 64 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e  s_end()..**.** ^
184e0 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  The sqlite3_init
184f0 69 61 6c 69 7a 65 28 29 20 72 6f 75 74 69 6e 65  ialize() routine
18500 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
18510 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65 73 73 2e  _OK] on success.
18520 0a 2a 2a 20 5e 49 66 20 66 6f 72 20 73 6f 6d 65  .** ^If for some
18530 20 72 65 61 73 6f 6e 2c 20 73 71 6c 69 74 65 33   reason, sqlite3
18540 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73  _initialize() is
18550 20 75 6e 61 62 6c 65 20 74 6f 20 69 6e 69 74 69   unable to initi
18560 61 6c 69 7a 65 0a 2a 2a 20 74 68 65 20 6c 69 62  alize.** the lib
18570 72 61 72 79 20 28 70 65 72 68 61 70 73 20 69 74  rary (perhaps it
18580 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 61 6c   is unable to al
18590 6c 6f 63 61 74 65 20 61 20 6e 65 65 64 65 64 20  locate a needed 
185a0 72 65 73 6f 75 72 63 65 20 73 75 63 68 0a 2a 2a  resource such.**
185b0 20 61 73 20 61 20 6d 75 74 65 78 29 20 69 74 20   as a mutex) it 
185c0 72 65 74 75 72 6e 73 20 61 6e 20 5b 65 72 72 6f  returns an [erro
185d0 72 20 63 6f 64 65 5d 20 6f 74 68 65 72 20 74 68  r code] other th
185e0 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2e 0a  an [SQLITE_OK]..
185f0 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74  **.** ^The sqlit
18600 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18610 72 6f 75 74 69 6e 65 20 69 73 20 63 61 6c 6c 65  routine is calle
18620 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20 62 79 20  d internally by 
18630 6d 61 6e 79 20 6f 74 68 65 72 0a 2a 2a 20 53 51  many other.** SQ
18640 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 73 20  Lite interfaces 
18650 73 6f 20 74 68 61 74 20 61 6e 20 61 70 70 6c 69  so that an appli
18660 63 61 74 69 6f 6e 20 75 73 75 61 6c 6c 79 20 64  cation usually d
18670 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 0a  oes not need to.
18680 2a 2a 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65  ** invoke sqlite
18690 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 64  3_initialize() d
186a0 69 72 65 63 74 6c 79 2e 20 20 46 6f 72 20 65 78  irectly.  For ex
186b0 61 6d 70 6c 65 2c 20 5b 73 71 6c 69 74 65 33 5f  ample, [sqlite3_
186c0 6f 70 65 6e 28 29 5d 0a 2a 2a 20 63 61 6c 6c 73  open()].** calls
186d0 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
186e0 69 7a 65 28 29 20 73 6f 20 74 68 65 20 53 51 4c  ize() so the SQL
186f0 69 74 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c  ite library will
18700 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c   be automaticall
18710 79 0a 2a 2a 20 69 6e 69 74 69 61 6c 69 7a 65 64  y.** initialized
18720 20 77 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f 6f   when [sqlite3_o
18730 70 65 6e 28 29 5d 20 69 73 20 63 61 6c 6c 65 64  pen()] is called
18740 20 69 66 20 69 74 20 68 61 73 20 6e 6f 74 20 62   if it has not b
18750 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 0a 2a 2a  e initialized.**
18760 20 61 6c 72 65 61 64 79 2e 20 20 5e 48 6f 77 65   already.  ^Howe
18770 76 65 72 2c 20 69 66 20 53 51 4c 69 74 65 20 69  ver, if SQLite i
18780 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
18790 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  the [SQLITE_OMIT
187a0 5f 41 55 54 4f 49 4e 49 54 5d 0a 2a 2a 20 63 6f  _AUTOINIT].** co
187b0 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
187c0 6e 2c 20 74 68 65 6e 20 74 68 65 20 61 75 74 6f  n, then the auto
187d0 6d 61 74 69 63 20 63 61 6c 6c 73 20 74 6f 20 73  matic calls to s
187e0 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
187f0 65 28 29 0a 2a 2a 20 61 72 65 20 6f 6d 69 74 74  e().** are omitt
18800 65 64 20 61 6e 64 20 74 68 65 20 61 70 70 6c 69  ed and the appli
18810 63 61 74 69 6f 6e 20 6d 75 73 74 20 63 61 6c 6c  cation must call
18820 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c   sqlite3_initial
18830 69 7a 65 28 29 20 64 69 72 65 63 74 6c 79 0a 2a  ize() directly.*
18840 2a 20 70 72 69 6f 72 20 74 6f 20 75 73 69 6e 67  * prior to using
18850 20 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74   any other SQLit
18860 65 20 69 6e 74 65 72 66 61 63 65 2e 20 20 46 6f  e interface.  Fo
18870 72 20 6d 61 78 69 6d 75 6d 20 70 6f 72 74 61 62  r maximum portab
18880 69 6c 69 74 79 2c 0a 2a 2a 20 69 74 20 69 73 20  ility,.** it is 
18890 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74  recommended that
188a0 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 6c   applications al
188b0 77 61 79 73 20 69 6e 76 6f 6b 65 20 73 71 6c 69  ways invoke sqli
188c0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
188d0 0a 2a 2a 20 64 69 72 65 63 74 6c 79 20 70 72 69  .** directly pri
188e0 6f 72 20 74 6f 20 75 73 69 6e 67 20 61 6e 79 20  or to using any 
188f0 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74  other SQLite int
18900 65 72 66 61 63 65 2e 20 20 46 75 74 75 72 65 20  erface.  Future 
18910 72 65 6c 65 61 73 65 73 0a 2a 2a 20 6f 66 20 53  releases.** of S
18920 51 4c 69 74 65 20 6d 61 79 20 72 65 71 75 69 72  QLite may requir
18930 65 20 74 68 69 73 2e 20 20 49 6e 20 6f 74 68 65  e this.  In othe
18940 72 20 77 6f 72 64 73 2c 20 74 68 65 20 62 65 68  r words, the beh
18950 61 76 69 6f 72 20 65 78 68 69 62 69 74 65 64 0a  avior exhibited.
18960 2a 2a 20 77 68 65 6e 20 53 51 4c 69 74 65 20 69  ** when SQLite i
18970 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20  s compiled with 
18980 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 41 55 54  [SQLITE_OMIT_AUT
18990 4f 49 4e 49 54 5d 20 6d 69 67 68 74 20 62 65 63  OINIT] might bec
189a0 6f 6d 65 20 74 68 65 0a 2a 2a 20 64 65 66 61 75  ome the.** defau
189b0 6c 74 20 62 65 68 61 76 69 6f 72 20 69 6e 20 73  lt behavior in s
189c0 6f 6d 65 20 66 75 74 75 72 65 20 72 65 6c 65 61  ome future relea
189d0 73 65 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a  se of SQLite..**
189e0 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
189f0 6f 73 5f 69 6e 69 74 28 29 20 72 6f 75 74 69 6e  os_init() routin
18a00 65 20 64 6f 65 73 20 6f 70 65 72 61 74 69 6e 67  e does operating
18a10 2d 73 79 73 74 65 6d 20 73 70 65 63 69 66 69 63  -system specific
18a20 0a 2a 2a 20 69 6e 69 74 69 61 6c 69 7a 61 74 69  .** initializati
18a30 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c 69 74 65  on of the SQLite
18a40 20 6c 69 62 72 61 72 79 2e 20 20 54 68 65 20 73   library.  The s
18a50 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 0a  qlite3_os_end().
18a60 2a 2a 20 72 6f 75 74 69 6e 65 20 75 6e 64 6f 65  ** routine undoe
18a70 73 20 74 68 65 20 65 66 66 65 63 74 20 6f 66 20  s the effect of 
18a80 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28  sqlite3_os_init(
18a90 29 2e 20 20 54 79 70 69 63 61 6c 20 74 61 73 6b  ).  Typical task
18aa0 73 0a 2a 2a 20 70 65 72 66 6f 72 6d 65 64 20 62  s.** performed b
18ab0 79 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  y these routines
18ac0 20 69 6e 63 6c 75 64 65 20 61 6c 6c 6f 63 61 74   include allocat
18ad0 69 6f 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61 74  ion or deallocat
18ae0 69 6f 6e 0a 2a 2a 20 6f 66 20 73 74 61 74 69 63  ion.** of static
18af0 20 72 65 73 6f 75 72 63 65 73 2c 20 69 6e 69 74   resources, init
18b00 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 67 6c  ialization of gl
18b10 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 2c 0a  obal variables,.
18b20 2a 2a 20 73 65 74 74 69 6e 67 20 75 70 20 61 20  ** setting up a 
18b30 64 65 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33  default [sqlite3
18b40 5f 76 66 73 5d 20 6d 6f 64 75 6c 65 2c 20 6f 72  _vfs] module, or
18b50 20 73 65 74 74 69 6e 67 20 75 70 0a 2a 2a 20 61   setting up.** a
18b60 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 69 67 75   default configu
18b70 72 61 74 69 6f 6e 20 75 73 69 6e 67 20 5b 73 71  ration using [sq
18b80 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 2e  lite3_config()].
18b90 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69  .**.** The appli
18ba0 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6e 65  cation should ne
18bb0 76 65 72 20 69 6e 76 6f 6b 65 20 65 69 74 68 65  ver invoke eithe
18bc0 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69  r sqlite3_os_ini
18bd0 74 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65  t().** or sqlite
18be0 33 5f 6f 73 5f 65 6e 64 28 29 20 64 69 72 65 63  3_os_end() direc
18bf0 74 6c 79 2e 20 20 54 68 65 20 61 70 70 6c 69 63  tly.  The applic
18c00 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20 6f 6e 6c  ation should onl
18c10 79 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69  y invoke.** sqli
18c20 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
18c30 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 73 68 75   and sqlite3_shu
18c40 74 64 6f 77 6e 28 29 2e 20 20 54 68 65 20 73 71  tdown().  The sq
18c50 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 0a  lite3_os_init().
18c60 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  ** interface is 
18c70 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63  called automatic
18c80 61 6c 6c 79 20 62 79 20 73 71 6c 69 74 65 33 5f  ally by sqlite3_
18c90 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 61 6e 64  initialize() and
18ca0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65  .** sqlite3_os_e
18cb0 6e 64 28 29 20 69 73 20 63 61 6c 6c 65 64 20 62  nd() is called b
18cc0 79 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  y sqlite3_shutdo
18cd0 77 6e 28 29 2e 20 20 41 70 70 72 6f 70 72 69 61  wn().  Appropria
18ce0 74 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61  te.** implementa
18cf0 74 69 6f 6e 73 20 66 6f 72 20 73 71 6c 69 74 65  tions for sqlite
18d00 33 5f 6f 73 5f 69 6e 69 74 28 29 20 61 6e 64 20  3_os_init() and 
18d10 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29  sqlite3_os_end()
18d20 0a 2a 2a 20 61 72 65 20 62 75 69 6c 74 20 69 6e  .** are built in
18d30 74 6f 20 53 51 4c 69 74 65 20 77 68 65 6e 20 69  to SQLite when i
18d40 74 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f  t is compiled fo
18d50 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f 77 73 2c  r Unix, Windows,
18d60 20 6f 72 20 4f 53 2f 32 2e 0a 2a 2a 20 57 68 65   or OS/2..** Whe
18d70 6e 20 5b 63 75 73 74 6f 6d 20 62 75 69 6c 64 73  n [custom builds
18d80 20 7c 20 62 75 69 6c 74 20 66 6f 72 20 6f 74 68   | built for oth
18d90 65 72 20 70 6c 61 74 66 6f 72 6d 73 5d 0a 2a 2a  er platforms].**
18da0 20 28 75 73 69 6e 67 20 74 68 65 20 5b 53 51 4c   (using the [SQL
18db0 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d 31 5d 20  ITE_OS_OTHER=1] 
18dc0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2a 2a 20  compile-time.** 
18dd0 6f 70 74 69 6f 6e 29 20 74 68 65 20 61 70 70 6c  option) the appl
18de0 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 73 75 70  ication must sup
18df0 70 6c 79 20 61 20 73 75 69 74 61 62 6c 65 20 69  ply a suitable i
18e00 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 66 6f  mplementation fo
18e10 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f 73 5f  r.** sqlite3_os_
18e20 69 6e 69 74 28 29 20 61 6e 64 20 73 71 6c 69 74  init() and sqlit
18e30 65 33 5f 6f 73 5f 65 6e 64 28 29 2e 20 20 41 6e  e3_os_end().  An
18e40 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73 75 70   application-sup
18e50 70 6c 69 65 64 0a 2a 2a 20 69 6d 70 6c 65 6d 65  plied.** impleme
18e60 6e 74 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74  ntation of sqlit
18e70 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 6f 72 20  e3_os_init() or 
18e80 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29  sqlite3_os_end()
18e90 0a 2a 2a 20 6d 75 73 74 20 72 65 74 75 72 6e 20  .** must return 
18ea0 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73  [SQLITE_OK] on s
18eb0 75 63 63 65 73 73 20 61 6e 64 20 73 6f 6d 65 20  uccess and some 
18ec0 6f 74 68 65 72 20 5b 65 72 72 6f 72 20 63 6f 64  other [error cod
18ed0 65 5d 20 75 70 6f 6e 0a 2a 2a 20 66 61 69 6c 75  e] upon.** failu
18ee0 72 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  re..*/.SQLITE_AP
18ef0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 69 6e  I int sqlite3_in
18f00 69 74 69 61 6c 69 7a 65 28 76 6f 69 64 29 3b 0a  itialize(void);.
18f10 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
18f20 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28  qlite3_shutdown(
18f30 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50  void);.SQLITE_AP
18f40 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f 73  I int sqlite3_os
18f50 5f 69 6e 69 74 28 76 6f 69 64 29 3b 0a 53 51 4c  _init(void);.SQL
18f60 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
18f70 74 65 33 5f 6f 73 5f 65 6e 64 28 76 6f 69 64 29  te3_os_end(void)
18f80 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
18f90 46 3a 20 43 6f 6e 66 69 67 75 72 69 6e 67 20 54  F: Configuring T
18fa0 68 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72  he SQLite Librar
18fb0 79 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  y.**.** The sqli
18fc0 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74  te3_config() int
18fd0 65 72 66 61 63 65 20 69 73 20 75 73 65 64 20 74  erface is used t
18fe0 6f 20 6d 61 6b 65 20 67 6c 6f 62 61 6c 20 63 6f  o make global co
18ff0 6e 66 69 67 75 72 61 74 69 6f 6e 0a 2a 2a 20 63  nfiguration.** c
19000 68 61 6e 67 65 73 20 74 6f 20 53 51 4c 69 74 65  hanges to SQLite
19010 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 74 75 6e   in order to tun
19020 65 20 53 51 4c 69 74 65 20 74 6f 20 74 68 65 20  e SQLite to the 
19030 73 70 65 63 69 66 69 63 20 6e 65 65 64 73 20 6f  specific needs o
19040 66 0a 2a 2a 20 74 68 65 20 61 70 70 6c 69 63 61  f.** the applica
19050 74 69 6f 6e 2e 20 20 54 68 65 20 64 65 66 61 75  tion.  The defau
19060 6c 74 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  lt configuration
19070 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
19080 66 6f 72 20 6d 6f 73 74 0a 2a 2a 20 61 70 70 6c  for most.** appl
19090 69 63 61 74 69 6f 6e 73 20 61 6e 64 20 73 6f 20  ications and so 
190a0 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20  this routine is 
190b0 75 73 75 61 6c 6c 79 20 6e 6f 74 20 6e 65 63 65  usually not nece
190c0 73 73 61 72 79 2e 20 20 49 74 20 69 73 0a 2a 2a  ssary.  It is.**
190d0 20 70 72 6f 76 69 64 65 64 20 74 6f 20 73 75 70   provided to sup
190e0 70 6f 72 74 20 72 61 72 65 20 61 70 70 6c 69 63  port rare applic
190f0 61 74 69 6f 6e 73 20 77 69 74 68 20 75 6e 75 73  ations with unus
19100 75 61 6c 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a  ual needs..**.**
19110 20 3c 62 3e 54 68 65 20 73 71 6c 69 74 65 33 5f   <b>The sqlite3_
19120 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61  config() interfa
19130 63 65 20 69 73 20 6e 6f 74 20 74 68 72 65 61 64  ce is not thread
19140 73 61 66 65 2e 20 54 68 65 20 61 70 70 6c 69 63  safe. The applic
19150 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65 6e  ation.** must en
19160 73 75 72 65 20 74 68 61 74 20 6e 6f 20 6f 74 68  sure that no oth
19170 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66  er SQLite interf
19180 61 63 65 73 20 61 72 65 20 69 6e 76 6f 6b 65 64  aces are invoked
19190 20 62 79 20 6f 74 68 65 72 0a 2a 2a 20 74 68 72   by other.** thr
191a0 65 61 64 73 20 77 68 69 6c 65 20 73 71 6c 69 74  eads while sqlit
191b0 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 72  e3_config() is r
191c0 75 6e 6e 69 6e 67 2e 3c 2f 62 3e 0a 2a 2a 0a 2a  unning.</b>.**.*
191d0 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 63 6f  * The sqlite3_co
191e0 6e 66 69 67 28 29 20 69 6e 74 65 72 66 61 63 65  nfig() interface
191f0 0a 2a 2a 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20  .** may only be 
19200 69 6e 76 6f 6b 65 64 20 70 72 69 6f 72 20 74 6f  invoked prior to
19210 20 6c 69 62 72 61 72 79 20 69 6e 69 74 69 61 6c   library initial
19220 69 7a 61 74 69 6f 6e 20 75 73 69 6e 67 0a 2a 2a  ization using.**
19230 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61   [sqlite3_initia
19240 6c 69 7a 65 28 29 5d 20 6f 72 20 61 66 74 65 72  lize()] or after
19250 20 73 68 75 74 64 6f 77 6e 20 62 79 20 5b 73 71   shutdown by [sq
19260 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29  lite3_shutdown()
19270 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  ]..** ^If sqlite
19280 33 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 63 61  3_config() is ca
19290 6c 6c 65 64 20 61 66 74 65 72 20 5b 73 71 6c 69  lled after [sqli
192a0 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
192b0 5d 20 61 6e 64 20 62 65 66 6f 72 65 0a 2a 2a 20  ] and before.** 
192c0 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77  [sqlite3_shutdow
192d0 6e 28 29 5d 20 74 68 65 6e 20 69 74 20 77 69 6c  n()] then it wil
192e0 6c 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f  l return SQLITE_
192f0 4d 49 53 55 53 45 2e 0a 2a 2a 20 4e 6f 74 65 2c  MISUSE..** Note,
19300 20 68 6f 77 65 76 65 72 2c 20 74 68 61 74 20 5e   however, that ^
19310 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29  sqlite3_config()
19320 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 61   can be called a
19330 73 20 70 61 72 74 20 6f 66 20 74 68 65 0a 2a 2a  s part of the.**
19340 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
19350 6f 66 20 61 6e 20 61 70 70 6c 69 63 61 74 69 6f  of an applicatio
19360 6e 2d 64 65 66 69 6e 65 64 20 5b 73 71 6c 69 74  n-defined [sqlit
19370 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d 2e 0a 2a  e3_os_init()]..*
19380 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  *.** The first a
19390 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
193a0 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 73 20 61  e3_config() is a
193b0 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 5b 63 6f  n integer.** [co
193c0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
193d0 6f 6e 5d 20 74 68 61 74 20 64 65 74 65 72 6d 69  on] that determi
193e0 6e 65 73 0a 2a 2a 20 77 68 61 74 20 70 72 6f 70  nes.** what prop
193f0 65 72 74 79 20 6f 66 20 53 51 4c 69 74 65 20 69  erty of SQLite i
19400 73 20 74 6f 20 62 65 20 63 6f 6e 66 69 67 75 72  s to be configur
19410 65 64 2e 20 20 53 75 62 73 65 71 75 65 6e 74 20  ed.  Subsequent 
19420 61 72 67 75 6d 65 6e 74 73 0a 2a 2a 20 76 61 72  arguments.** var
19430 79 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74  y depending on t
19440 68 65 20 5b 63 6f 6e 66 69 67 75 72 61 74 69 6f  he [configuratio
19450 6e 20 6f 70 74 69 6f 6e 5d 0a 2a 2a 20 69 6e 20  n option].** in 
19460 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  the first argume
19470 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65 6e 20  nt..**.** ^When 
19480 61 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  a configuration 
19490 6f 70 74 69 6f 6e 20 69 73 20 73 65 74 2c 20 73  option is set, s
194a0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
194b0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
194c0 4f 4b 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20  OK]..** ^If the 
194d0 6f 70 74 69 6f 6e 20 69 73 20 75 6e 6b 6e 6f 77  option is unknow
194e0 6e 20 6f 72 20 53 51 4c 69 74 65 20 69 73 20 75  n or SQLite is u
194f0 6e 61 62 6c 65 20 74 6f 20 73 65 74 20 74 68 65  nable to set the
19500 20 6f 70 74 69 6f 6e 0a 2a 2a 20 74 68 65 6e 20   option.** then 
19510 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 74  this routine ret
19520 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20  urns a non-zero 
19530 5b 65 72 72 6f 72 20 63 6f 64 65 5d 2e 0a 2a 2f  [error code]..*/
19540 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
19550 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 69  sqlite3_config(i
19560 6e 74 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a  nt, ...);../*.**
19570 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6e 66 69   CAPI3REF: Confi
19580 67 75 72 65 20 64 61 74 61 62 61 73 65 20 63 6f  gure database co
19590 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20 4d 45 54  nnections.** MET
195a0 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
195b0 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 64  ** The sqlite3_d
195c0 62 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72  b_config() inter
195d0 66 61 63 65 20 69 73 20 75 73 65 64 20 74 6f 20  face is used to 
195e0 6d 61 6b 65 20 63 6f 6e 66 69 67 75 72 61 74 69  make configurati
195f0 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f  on.** changes to
19600 20 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e   a [database con
19610 6e 65 63 74 69 6f 6e 5d 2e 20 20 54 68 65 20 69  nection].  The i
19620 6e 74 65 72 66 61 63 65 20 69 73 20 73 69 6d 69  nterface is simi
19630 6c 61 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  lar to.** [sqlit
19640 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 65 78 63  e3_config()] exc
19650 65 70 74 20 74 68 61 74 20 74 68 65 20 63 68 61  ept that the cha
19660 6e 67 65 73 20 61 70 70 6c 79 20 74 6f 20 61 20  nges apply to a 
19670 73 69 6e 67 6c 65 0a 2a 2a 20 5b 64 61 74 61 62  single.** [datab
19680 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
19690 28 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68  (specified in th
196a0 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
196b0 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 65 63  )..**.** The sec
196c0 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  ond argument to 
196d0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
196e0 67 28 44 2c 56 2c 2e 2e 2e 29 20 20 69 73 20 74  g(D,V,...)  is t
196f0 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 42  he.** [SQLITE_DB
19700 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
19710 20 7c 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   | configuration
19720 20 76 65 72 62 5d 20 2d 20 61 6e 20 69 6e 74 65   verb] - an inte
19730 67 65 72 20 63 6f 64 65 20 0a 2a 2a 20 74 68 61  ger code .** tha
19740 74 20 69 6e 64 69 63 61 74 65 73 20 77 68 61 74  t indicates what
19750 20 61 73 70 65 63 74 20 6f 66 20 74 68 65 20 5b   aspect of the [
19760 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
19770 69 6f 6e 5d 20 69 73 20 62 65 69 6e 67 20 63 6f  ion] is being co
19780 6e 66 69 67 75 72 65 64 2e 0a 2a 2a 20 53 75 62  nfigured..** Sub
19790 73 65 71 75 65 6e 74 20 61 72 67 75 6d 65 6e 74  sequent argument
197a0 73 20 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67  s vary depending
197b0 20 6f 6e 20 74 68 65 20 63 6f 6e 66 69 67 75 72   on the configur
197c0 61 74 69 6f 6e 20 76 65 72 62 2e 0a 2a 2a 0a 2a  ation verb..**.*
197d0 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73 71 6c 69  * ^Calls to sqli
197e0 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20  te3_db_config() 
197f0 72 65 74 75 72 6e 20 53 51 4c 49 54 45 5f 4f 4b  return SQLITE_OK
19800 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a   if and only if.
19810 2a 2a 20 74 68 65 20 63 61 6c 6c 20 69 73 20 63  ** the call is c
19820 6f 6e 73 69 64 65 72 65 64 20 73 75 63 63 65 73  onsidered succes
19830 73 66 75 6c 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  sful..*/.SQLITE_
19840 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
19850 64 62 5f 63 6f 6e 66 69 67 28 73 71 6c 69 74 65  db_config(sqlite
19860 33 2a 2c 20 69 6e 74 20 6f 70 2c 20 2e 2e 2e 29  3*, int op, ...)
19870 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
19880 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f 63 61  F: Memory Alloca
19890 74 69 6f 6e 20 52 6f 75 74 69 6e 65 73 0a 2a 2a  tion Routines.**
198a0 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20  .** An instance 
198b0 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 64  of this object d
198c0 65 66 69 6e 65 73 20 74 68 65 20 69 6e 74 65 72  efines the inter
198d0 66 61 63 65 20 62 65 74 77 65 65 6e 20 53 51 4c  face between SQL
198e0 69 74 65 0a 2a 2a 20 61 6e 64 20 6c 6f 77 2d 6c  ite.** and low-l
198f0 65 76 65 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  evel memory allo
19900 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 2e  cation routines.
19910 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 6f 62 6a 65  .**.** This obje
19920 63 74 20 69 73 20 75 73 65 64 20 69 6e 20 6f 6e  ct is used in on
19930 6c 79 20 6f 6e 65 20 70 6c 61 63 65 20 69 6e 20  ly one place in 
19940 74 68 65 20 53 51 4c 69 74 65 20 69 6e 74 65 72  the SQLite inter
19950 66 61 63 65 2e 0a 2a 2a 20 41 20 70 6f 69 6e 74  face..** A point
19960 65 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63  er to an instanc
19970 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
19980 20 69 73 20 74 68 65 20 61 72 67 75 6d 65 6e 74   is the argument
19990 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
199a0 63 6f 6e 66 69 67 28 29 5d 20 77 68 65 6e 20 74  config()] when t
199b0 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  he configuration
199c0 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a 20 5b 53   option is.** [S
199d0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
199e0 4c 4f 43 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f  LOC] or [SQLITE_
199f0 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c 4f 43  CONFIG_GETMALLOC
19a00 5d 2e 20 20 0a 2a 2a 20 42 79 20 63 72 65 61 74  ].  .** By creat
19a10 69 6e 67 20 61 6e 20 69 6e 73 74 61 6e 63 65 20  ing an instance 
19a20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0a 2a  of this object.*
19a30 2a 20 61 6e 64 20 70 61 73 73 69 6e 67 20 69 74  * and passing it
19a40 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e   to [sqlite3_con
19a50 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f 4e  fig]([SQLITE_CON
19a60 46 49 47 5f 4d 41 4c 4c 4f 43 5d 29 0a 2a 2a 20  FIG_MALLOC]).** 
19a70 64 75 72 69 6e 67 20 63 6f 6e 66 69 67 75 72 61  during configura
19a80 74 69 6f 6e 2c 20 61 6e 20 61 70 70 6c 69 63 61  tion, an applica
19a90 74 69 6f 6e 20 63 61 6e 20 73 70 65 63 69 66 79  tion can specify
19aa0 20 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a   an alternative.
19ab0 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ** memory alloca
19ac0 74 69 6f 6e 20 73 75 62 73 79 73 74 65 6d 20 66  tion subsystem f
19ad0 6f 72 20 53 51 4c 69 74 65 20 74 6f 20 75 73 65  or SQLite to use
19ae0 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 0a   for all of its.
19af0 2a 2a 20 64 79 6e 61 6d 69 63 20 6d 65 6d 6f 72  ** dynamic memor
19b00 79 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a 2a 20 4e  y needs..**.** N
19b10 6f 74 65 20 74 68 61 74 20 53 51 4c 69 74 65 20  ote that SQLite 
19b20 63 6f 6d 65 73 20 77 69 74 68 20 73 65 76 65 72  comes with sever
19b30 61 6c 20 5b 62 75 69 6c 74 2d 69 6e 20 6d 65 6d  al [built-in mem
19b40 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73 5d 0a  ory allocators].
19b50 2a 2a 20 74 68 61 74 20 61 72 65 20 70 65 72 66  ** that are perf
19b60 65 63 74 6c 79 20 61 64 65 71 75 61 74 65 20 66  ectly adequate f
19b70 6f 72 20 74 68 65 20 6f 76 65 72 77 68 65 6c 6d  or the overwhelm
19b80 69 6e 67 20 6d 61 6a 6f 72 69 74 79 20 6f 66 20  ing majority of 
19b90 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20  applications.** 
19ba0 61 6e 64 20 74 68 61 74 20 74 68 69 73 20 6f 62  and that this ob
19bb0 6a 65 63 74 20 69 73 20 6f 6e 6c 79 20 75 73 65  ject is only use
19bc0 66 75 6c 20 74 6f 20 61 20 74 69 6e 79 20 6d 69  ful to a tiny mi
19bd0 6e 6f 72 69 74 79 20 6f 66 20 61 70 70 6c 69 63  nority of applic
19be0 61 74 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 20 73  ations.** with s
19bf0 70 65 63 69 61 6c 69 7a 65 64 20 6d 65 6d 6f 72  pecialized memor
19c00 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 65 71  y allocation req
19c10 75 69 72 65 6d 65 6e 74 73 2e 20 20 54 68 69 73  uirements.  This
19c20 20 6f 62 6a 65 63 74 20 69 73 0a 2a 2a 20 61 6c   object is.** al
19c30 73 6f 20 75 73 65 64 20 64 75 72 69 6e 67 20 74  so used during t
19c40 65 73 74 69 6e 67 20 6f 66 20 53 51 4c 69 74 65  esting of SQLite
19c50 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 73 70 65   in order to spe
19c60 63 69 66 79 20 61 6e 20 61 6c 74 65 72 6e 61 74  cify an alternat
19c70 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c  ive.** memory al
19c80 6c 6f 63 61 74 6f 72 20 74 68 61 74 20 73 69 6d  locator that sim
19c90 75 6c 61 74 65 73 20 6d 65 6d 6f 72 79 20 6f 75  ulates memory ou
19ca0 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 63 6f 6e 64  t-of-memory cond
19cb0 69 74 69 6f 6e 73 20 69 6e 0a 2a 2a 20 6f 72 64  itions in.** ord
19cc0 65 72 20 74 6f 20 76 65 72 69 66 79 20 74 68 61  er to verify tha
19cd0 74 20 53 51 4c 69 74 65 20 72 65 63 6f 76 65 72  t SQLite recover
19ce0 73 20 67 72 61 63 65 66 75 6c 6c 79 20 66 72 6f  s gracefully fro
19cf0 6d 20 73 75 63 68 0a 2a 2a 20 63 6f 6e 64 69 74  m such.** condit
19d00 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ions..**.** The 
19d10 78 4d 61 6c 6c 6f 63 2c 20 78 52 65 61 6c 6c 6f  xMalloc, xReallo
19d20 63 2c 20 61 6e 64 20 78 46 72 65 65 20 6d 65 74  c, and xFree met
19d30 68 6f 64 73 20 6d 75 73 74 20 77 6f 72 6b 20 6c  hods must work l
19d40 69 6b 65 20 74 68 65 0a 2a 2a 20 6d 61 6c 6c 6f  ike the.** mallo
19d50 63 28 29 2c 20 72 65 61 6c 6c 6f 63 28 29 20 61  c(), realloc() a
19d60 6e 64 20 66 72 65 65 28 29 20 66 75 6e 63 74 69  nd free() functi
19d70 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61  ons from the sta
19d80 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 2e  ndard C library.
19d90 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 67 75 61 72  .** ^SQLite guar
19da0 61 6e 74 65 65 73 20 74 68 61 74 20 74 68 65 20  antees that the 
19db0 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
19dc0 74 6f 0a 2a 2a 20 78 52 65 61 6c 6c 6f 63 20 69  to.** xRealloc i
19dd0 73 20 61 6c 77 61 79 73 20 61 20 76 61 6c 75 65  s always a value
19de0 20 72 65 74 75 72 6e 65 64 20 62 79 20 61 20 70   returned by a p
19df0 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20 78 52 6f  rior call to xRo
19e00 75 6e 64 75 70 2e 0a 2a 2a 0a 2a 2a 20 78 53 69  undup..**.** xSi
19e10 7a 65 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e  ze should return
19e20 20 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73   the allocated s
19e30 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f 72 79 20  ize of a memory 
19e40 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 70 72  allocation.** pr
19e50 65 76 69 6f 75 73 6c 79 20 6f 62 74 61 69 6e 65  eviously obtaine
19e60 64 20 66 72 6f 6d 20 78 4d 61 6c 6c 6f 63 20 6f  d from xMalloc o
19e70 72 20 78 52 65 61 6c 6c 6f 63 2e 20 20 54 68 65  r xRealloc.  The
19e80 20 61 6c 6c 6f 63 61 74 65 64 20 73 69 7a 65 0a   allocated size.
19e90 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 61 74 20  ** is always at 
19ea0 6c 65 61 73 74 20 61 73 20 62 69 67 20 61 73 20  least as big as 
19eb0 74 68 65 20 72 65 71 75 65 73 74 65 64 20 73 69  the requested si
19ec0 7a 65 20 62 75 74 20 6d 61 79 20 62 65 20 6c 61  ze but may be la
19ed0 72 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  rger..**.** The 
19ee0 78 52 6f 75 6e 64 75 70 20 6d 65 74 68 6f 64 20  xRoundup method 
19ef0 72 65 74 75 72 6e 73 20 77 68 61 74 20 77 6f 75  returns what wou
19f00 6c 64 20 62 65 20 74 68 65 20 61 6c 6c 6f 63 61  ld be the alloca
19f10 74 65 64 20 73 69 7a 65 20 6f 66 0a 2a 2a 20 61  ted size of.** a
19f20 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
19f30 6f 6e 20 67 69 76 65 6e 20 61 20 70 61 72 74 69  on given a parti
19f40 63 75 6c 61 72 20 72 65 71 75 65 73 74 65 64 20  cular requested 
19f50 73 69 7a 65 2e 20 20 4d 6f 73 74 20 6d 65 6d 6f  size.  Most memo
19f60 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f 72 73  ry.** allocators
19f70 20 72 6f 75 6e 64 20 75 70 20 6d 65 6d 6f 72 79   round up memory
19f80 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20 61 74 20   allocations at 
19f90 6c 65 61 73 74 20 74 6f 20 74 68 65 20 6e 65 78  least to the nex
19fa0 74 20 6d 75 6c 74 69 70 6c 65 0a 2a 2a 20 6f 66  t multiple.** of
19fb0 20 38 2e 20 20 53 6f 6d 65 20 61 6c 6c 6f 63 61   8.  Some alloca
19fc0 74 6f 72 73 20 72 6f 75 6e 64 20 75 70 20 74 6f  tors round up to
19fd0 20 61 20 6c 61 72 67 65 72 20 6d 75 6c 74 69 70   a larger multip
19fe0 6c 65 20 6f 72 20 74 6f 20 61 20 70 6f 77 65 72  le or to a power
19ff0 20 6f 66 20 32 2e 0a 2a 2a 20 45 76 65 72 79 20   of 2..** Every 
1a000 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1a010 6e 20 72 65 71 75 65 73 74 20 63 6f 6d 69 6e 67  n request coming
1a020 20 69 6e 20 74 68 72 6f 75 67 68 20 5b 73 71 6c   in through [sql
1a030 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 0a 2a  ite3_malloc()].*
1a040 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33 5f 72 65  * or [sqlite3_re
1a050 61 6c 6c 6f 63 28 29 5d 20 66 69 72 73 74 20 63  alloc()] first c
1a060 61 6c 6c 73 20 78 52 6f 75 6e 64 75 70 2e 20 20  alls xRoundup.  
1a070 49 66 20 78 52 6f 75 6e 64 75 70 20 72 65 74 75  If xRoundup retu
1a080 72 6e 73 20 30 2c 20 0a 2a 2a 20 74 68 61 74 20  rns 0, .** that 
1a090 63 61 75 73 65 73 20 74 68 65 20 63 6f 72 72 65  causes the corre
1a0a0 73 70 6f 6e 64 69 6e 67 20 6d 65 6d 6f 72 79 20  sponding memory 
1a0b0 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f 20 66 61  allocation to fa
1a0c0 69 6c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 49  il..**.** The xI
1a0d0 6e 69 74 20 6d 65 74 68 6f 64 20 69 6e 69 74 69  nit method initi
1a0e0 61 6c 69 7a 65 73 20 74 68 65 20 6d 65 6d 6f 72  alizes the memor
1a0f0 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20 20 46 6f  y allocator.  Fo
1a100 72 20 65 78 61 6d 70 6c 65 2c 0a 2a 2a 20 69 74  r example,.** it
1a110 20 6d 69 67 68 74 20 61 6c 6c 6f 63 61 74 65 20   might allocate 
1a120 61 6e 79 20 72 65 71 75 69 72 65 20 6d 75 74 65  any require mute
1a130 78 65 73 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a  xes or initializ
1a140 65 20 69 6e 74 65 72 6e 61 6c 20 64 61 74 61 0a  e internal data.
1a150 2a 2a 20 73 74 72 75 63 74 75 72 65 73 2e 20 20  ** structures.  
1a160 54 68 65 20 78 53 68 75 74 64 6f 77 6e 20 6d 65  The xShutdown me
1a170 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64 20  thod is invoked 
1a180 28 69 6e 64 69 72 65 63 74 6c 79 29 20 62 79 0a  (indirectly) by.
1a190 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74  ** [sqlite3_shut
1a1a0 64 6f 77 6e 28 29 5d 20 61 6e 64 20 73 68 6f 75  down()] and shou
1a1b0 6c 64 20 64 65 61 6c 6c 6f 63 61 74 65 20 61 6e  ld deallocate an
1a1c0 79 20 72 65 73 6f 75 72 63 65 73 20 61 63 71 75  y resources acqu
1a1d0 69 72 65 64 0a 2a 2a 20 62 79 20 78 49 6e 69 74  ired.** by xInit
1a1e0 2e 20 20 54 68 65 20 70 41 70 70 44 61 74 61 20  .  The pAppData 
1a1f0 70 6f 69 6e 74 65 72 20 69 73 20 75 73 65 64 20  pointer is used 
1a200 61 73 20 74 68 65 20 6f 6e 6c 79 20 70 61 72 61  as the only para
1a210 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 78 49 6e 69  meter to.** xIni
1a220 74 20 61 6e 64 20 78 53 68 75 74 64 6f 77 6e 2e  t and xShutdown.
1a230 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 68 6f  .**.** SQLite ho
1a240 6c 64 73 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  lds the [SQLITE_
1a250 4d 55 54 45 58 5f 53 54 41 54 49 43 5f 4d 41 53  MUTEX_STATIC_MAS
1a260 54 45 52 5d 20 6d 75 74 65 78 20 77 68 65 6e 20  TER] mutex when 
1a270 69 74 20 69 6e 76 6f 6b 65 73 0a 2a 2a 20 74 68  it invokes.** th
1a280 65 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 2c 20  e xInit method, 
1a290 73 6f 20 74 68 65 20 78 49 6e 69 74 20 6d 65 74  so the xInit met
1a2a0 68 6f 64 20 6e 65 65 64 20 6e 6f 74 20 62 65 20  hod need not be 
1a2b0 74 68 72 65 61 64 73 61 66 65 2e 20 20 54 68 65  threadsafe.  The
1a2c0 0a 2a 2a 20 78 53 68 75 74 64 6f 77 6e 20 6d 65  .** xShutdown me
1a2d0 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20 63 61 6c  thod is only cal
1a2e0 6c 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  led from [sqlite
1a2f0 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d 20 73 6f  3_shutdown()] so
1a300 20 69 74 20 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20   it does.** not 
1a310 6e 65 65 64 20 74 6f 20 62 65 20 74 68 72 65 61  need to be threa
1a320 64 73 61 66 65 20 65 69 74 68 65 72 2e 20 20 46  dsafe either.  F
1a330 6f 72 20 61 6c 6c 20 6f 74 68 65 72 20 6d 65 74  or all other met
1a340 68 6f 64 73 2c 20 53 51 4c 69 74 65 0a 2a 2a 20  hods, SQLite.** 
1a350 68 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c 49 54  holds the [SQLIT
1a360 45 5f 4d 55 54 45 58 5f 53 54 41 54 49 43 5f 4d  E_MUTEX_STATIC_M
1a370 45 4d 5d 20 6d 75 74 65 78 20 61 73 20 6c 6f 6e  EM] mutex as lon
1a380 67 20 61 73 20 74 68 65 0a 2a 2a 20 5b 53 51 4c  g as the.** [SQL
1a390 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
1a3a0 41 54 55 53 5d 20 63 6f 6e 66 69 67 75 72 61 74  ATUS] configurat
1a3b0 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 74 75  ion option is tu
1a3c0 72 6e 65 64 20 6f 6e 20 28 77 68 69 63 68 0a 2a  rned on (which.*
1a3d0 2a 20 69 74 20 69 73 20 62 79 20 64 65 66 61 75  * it is by defau
1a3e0 6c 74 29 20 61 6e 64 20 73 6f 20 74 68 65 20 6d  lt) and so the m
1a3f0 65 74 68 6f 64 73 20 61 72 65 20 61 75 74 6f 6d  ethods are autom
1a400 61 74 69 63 61 6c 6c 79 20 73 65 72 69 61 6c 69  atically seriali
1a410 7a 65 64 2e 0a 2a 2a 20 48 6f 77 65 76 65 72 2c  zed..** However,
1a420 20 69 66 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   if [SQLITE_CONF
1a430 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d 20 69 73  IG_MEMSTATUS] is
1a440 20 64 69 73 61 62 6c 65 64 2c 20 74 68 65 6e 20   disabled, then 
1a450 74 68 65 20 6f 74 68 65 72 0a 2a 2a 20 6d 65 74  the other.** met
1a460 68 6f 64 73 20 6d 75 73 74 20 62 65 20 74 68 72  hods must be thr
1a470 65 61 64 73 61 66 65 20 6f 72 20 65 6c 73 65 20  eadsafe or else 
1a480 6d 61 6b 65 20 74 68 65 69 72 20 6f 77 6e 20 61  make their own a
1a490 72 72 61 6e 67 65 6d 65 6e 74 73 20 66 6f 72 0a  rrangements for.
1a4a0 2a 2a 20 73 65 72 69 61 6c 69 7a 61 74 69 6f 6e  ** serialization
1a4b0 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65 20 77  ..**.** SQLite w
1a4c0 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65  ill never invoke
1a4d0 20 78 49 6e 69 74 28 29 20 6d 6f 72 65 20 74 68   xInit() more th
1a4e0 61 6e 20 6f 6e 63 65 20 77 69 74 68 6f 75 74 20  an once without 
1a4f0 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e 67 0a 2a  an intervening.*
1a500 2a 20 63 61 6c 6c 20 74 6f 20 78 53 68 75 74 64  * call to xShutd
1a510 6f 77 6e 28 29 2e 0a 2a 2f 0a 74 79 70 65 64 65  own()..*/.typede
1a520 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  f struct sqlite3
1a530 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 73 71 6c  _mem_methods sql
1a540 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73  ite3_mem_methods
1a550 3b 0a 73 74 72 75 63 74 20 73 71 6c 69 74 65 33  ;.struct sqlite3
1a560 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20 7b 0a 20  _mem_methods {. 
1a570 20 76 6f 69 64 20 2a 28 2a 78 4d 61 6c 6c 6f 63   void *(*xMalloc
1a580 29 28 69 6e 74 29 3b 20 20 20 20 20 20 20 20 20  )(int);         
1a590 2f 2a 20 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  /* Memory alloca
1a5a0 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 2a 2f  tion function */
1a5b0 0a 20 20 76 6f 69 64 20 28 2a 78 46 72 65 65 29  .  void (*xFree)
1a5c0 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 20 20  (void*);        
1a5d0 20 20 2f 2a 20 46 72 65 65 20 61 20 70 72 69 6f    /* Free a prio
1a5e0 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a  r allocation */.
1a5f0 20 20 76 6f 69 64 20 2a 28 2a 78 52 65 61 6c 6c    void *(*xReall
1a600 6f 63 29 28 76 6f 69 64 2a 2c 69 6e 74 29 3b 20  oc)(void*,int); 
1a610 20 2f 2a 20 52 65 73 69 7a 65 20 61 6e 20 61 6c   /* Resize an al
1a620 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20 20 69 6e  location */.  in
1a630 74 20 28 2a 78 53 69 7a 65 29 28 76 6f 69 64 2a  t (*xSize)(void*
1a640 29 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  );           /* 
1a650 52 65 74 75 72 6e 20 74 68 65 20 73 69 7a 65 20  Return the size 
1a660 6f 66 20 61 6e 20 61 6c 6c 6f 63 61 74 69 6f 6e  of an allocation
1a670 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 52 6f 75   */.  int (*xRou
1a680 6e 64 75 70 29 28 69 6e 74 29 3b 20 20 20 20 20  ndup)(int);     
1a690 20 20 20 20 20 2f 2a 20 52 6f 75 6e 64 20 75 70       /* Round up
1a6a0 20 72 65 71 75 65 73 74 20 73 69 7a 65 20 74 6f   request size to
1a6b0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65   allocation size
1a6c0 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 49 6e 69   */.  int (*xIni
1a6d0 74 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20  t)(void*);      
1a6e0 20 20 20 20 20 2f 2a 20 49 6e 69 74 69 61 6c 69       /* Initiali
1a6f0 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 6c  ze the memory al
1a700 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20 76 6f 69  locator */.  voi
1a710 64 20 28 2a 78 53 68 75 74 64 6f 77 6e 29 28 76  d (*xShutdown)(v
1a720 6f 69 64 2a 29 3b 20 20 20 20 20 20 2f 2a 20 44  oid*);      /* D
1a730 65 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20  einitialize the 
1a740 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
1a750 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 70 41 70 70   */.  void *pApp
1a760 44 61 74 61 3b 20 20 20 20 20 20 20 20 20 20 20  Data;           
1a770 20 20 20 20 20 2f 2a 20 41 72 67 75 6d 65 6e 74       /* Argument
1a780 20 74 6f 20 78 49 6e 69 74 28 29 20 61 6e 64 20   to xInit() and 
1a790 78 53 68 75 74 64 6f 77 6e 28 29 20 2a 2f 0a 7d  xShutdown() */.}
1a7a0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
1a7b0 46 3a 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e  F: Configuration
1a7c0 20 4f 70 74 69 6f 6e 73 0a 2a 2a 20 4b 45 59 57   Options.** KEYW
1a7d0 4f 52 44 53 3a 20 7b 63 6f 6e 66 69 67 75 72 61  ORDS: {configura
1a7e0 74 69 6f 6e 20 6f 70 74 69 6f 6e 7d 0a 2a 2a 0a  tion option}.**.
1a7f0 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e  ** These constan
1a800 74 73 20 61 72 65 20 74 68 65 20 61 76 61 69 6c  ts are the avail
1a810 61 62 6c 65 20 69 6e 74 65 67 65 72 20 63 6f 6e  able integer con
1a820 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1a830 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61 6e 20 62  ns that.** can b
1a840 65 20 70 61 73 73 65 64 20 61 73 20 74 68 65 20  e passed as the 
1a850 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74  first argument t
1a860 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63  o the [sqlite3_c
1a870 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61  onfig()] interfa
1a880 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f  ce..**.** New co
1a890 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1a8a0 6f 6e 73 20 6d 61 79 20 62 65 20 61 64 64 65 64  ons may be added
1a8b0 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
1a8c0 73 65 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a  ses of SQLite..*
1a8d0 2a 20 45 78 69 73 74 69 6e 67 20 63 6f 6e 66 69  * Existing confi
1a8e0 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73  guration options
1a8f0 20 6d 69 67 68 74 20 62 65 20 64 69 73 63 6f 6e   might be discon
1a900 74 69 6e 75 65 64 2e 20 20 41 70 70 6c 69 63 61  tinued.  Applica
1a910 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20  tions.** should 
1a920 63 68 65 63 6b 20 74 68 65 20 72 65 74 75 72 6e  check the return
1a930 20 63 6f 64 65 20 66 72 6f 6d 20 5b 73 71 6c 69   code from [sqli
1a940 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 74 6f  te3_config()] to
1a950 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 0a   make sure that.
1a960 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f 72 6b  ** the call work
1a970 65 64 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  ed.  The [sqlite
1a980 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65  3_config()] inte
1a990 72 66 61 63 65 20 77 69 6c 6c 20 72 65 74 75 72  rface will retur
1a9a0 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65 72 6f 20  n a.** non-zero 
1a9b0 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 66 20  [error code] if 
1a9c0 61 20 64 69 73 63 6f 6e 74 69 6e 75 65 64 20 6f  a discontinued o
1a9d0 72 20 75 6e 73 75 70 70 6f 72 74 65 64 20 63 6f  r unsupported co
1a9e0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1a9f0 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64  on.** is invoked
1aa00 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20  ..**.** <dl>.** 
1aa10 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1aa20 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 5d 20 3c  SINGLETHREAD]] <
1aa30 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1aa40 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 3c 2f 64  _SINGLETHREAD</d
1aa50 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 72 65 20  t>.** <dd>There 
1aa60 61 72 65 20 6e 6f 20 61 72 67 75 6d 65 6e 74 73  are no arguments
1aa70 20 74 6f 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e   to this option.
1aa80 20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 73    ^This option s
1aa90 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74 68 72 65  ets the.** [thre
1aaa0 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74 6f 20 53  ading mode] to S
1aab0 69 6e 67 6c 65 2d 74 68 72 65 61 64 2e 20 20 49  ingle-thread.  I
1aac0 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 69  n other words, i
1aad0 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a 20 61 6c  t disables.** al
1aae0 6c 20 6d 75 74 65 78 69 6e 67 20 61 6e 64 20 70  l mutexing and p
1aaf0 75 74 73 20 53 51 4c 69 74 65 20 69 6e 74 6f 20  uts SQLite into 
1ab00 61 20 6d 6f 64 65 20 77 68 65 72 65 20 69 74 20  a mode where it 
1ab10 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64  can only be used
1ab20 0a 2a 2a 20 62 79 20 61 20 73 69 6e 67 6c 65 20  .** by a single 
1ab30 74 68 72 65 61 64 2e 20 20 20 5e 49 66 20 53 51  thread.   ^If SQ
1ab40 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  Lite is compiled
1ab50 20 77 69 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51   with.** the [SQ
1ab60 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 20  LITE_THREADSAFE 
1ab70 7c 20 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53  | SQLITE_THREADS
1ab80 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74  AFE=0] compile-t
1ab90 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a  ime option then.
1aba0 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 70 6f 73  ** it is not pos
1abb0 73 69 62 6c 65 20 74 6f 20 63 68 61 6e 67 65 20  sible to change 
1abc0 74 68 65 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  the [threading m
1abd0 6f 64 65 5d 20 66 72 6f 6d 20 69 74 73 20 64 65  ode] from its de
1abe0 66 61 75 6c 74 0a 2a 2a 20 76 61 6c 75 65 20 6f  fault.** value o
1abf0 66 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 20  f Single-thread 
1ac00 61 6e 64 20 73 6f 20 5b 73 71 6c 69 74 65 33 5f  and so [sqlite3_
1ac10 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c 20 72  config()] will r
1ac20 65 74 75 72 6e 20 0a 2a 2a 20 5b 53 51 4c 49 54  eturn .** [SQLIT
1ac30 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c  E_ERROR] if call
1ac40 65 64 20 77 69 74 68 20 74 68 65 20 53 51 4c 49  ed with the SQLI
1ac50 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
1ac60 54 48 52 45 41 44 0a 2a 2a 20 63 6f 6e 66 69 67  THREAD.** config
1ac70 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c  uration option.<
1ac80 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1ac90 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
1aca0 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e 53 51 4c  THREAD]] <dt>SQL
1acb0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
1acc0 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a 2a 20 3c  THREAD</dt>.** <
1acd0 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20  dd>There are no 
1ace0 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69  arguments to thi
1acf0 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73  s option.  ^This
1ad00 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65   option sets the
1ad10 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  .** [threading m
1ad20 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69 2d 74 68  ode] to Multi-th
1ad30 72 65 61 64 2e 20 20 49 6e 20 6f 74 68 65 72 20  read.  In other 
1ad40 77 6f 72 64 73 2c 20 69 74 20 64 69 73 61 62 6c  words, it disabl
1ad50 65 73 0a 2a 2a 20 6d 75 74 65 78 69 6e 67 20 6f  es.** mutexing o
1ad60 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  n [database conn
1ad70 65 63 74 69 6f 6e 5d 20 61 6e 64 20 5b 70 72 65  ection] and [pre
1ad80 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
1ad90 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20 54 68 65   objects..** The
1ada0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 73 20   application is 
1adb0 72 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20  responsible for 
1adc0 73 65 72 69 61 6c 69 7a 69 6e 67 20 61 63 63 65  serializing acce
1add0 73 73 20 74 6f 0a 2a 2a 20 5b 64 61 74 61 62 61  ss to.** [databa
1ade0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20  se connections] 
1adf0 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73 74  and [prepared st
1ae00 61 74 65 6d 65 6e 74 73 5d 2e 20 20 42 75 74 20  atements].  But 
1ae10 6f 74 68 65 72 20 6d 75 74 65 78 65 73 0a 2a 2a  other mutexes.**
1ae20 20 61 72 65 20 65 6e 61 62 6c 65 64 20 73 6f 20   are enabled so 
1ae30 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c 6c  that SQLite will
1ae40 20 62 65 20 73 61 66 65 20 74 6f 20 75 73 65 20   be safe to use 
1ae50 69 6e 20 61 20 6d 75 6c 74 69 2d 74 68 72 65 61  in a multi-threa
1ae60 64 65 64 0a 2a 2a 20 65 6e 76 69 72 6f 6e 6d 65  ded.** environme
1ae70 6e 74 20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 6f  nt as long as no
1ae80 20 74 77 6f 20 74 68 72 65 61 64 73 20 61 74 74   two threads att
1ae90 65 6d 70 74 20 74 6f 20 75 73 65 20 74 68 65 20  empt to use the 
1aea0 73 61 6d 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73  same.** [databas
1aeb0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 74  e connection] at
1aec0 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 20   the same time. 
1aed0 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63   ^If SQLite is c
1aee0 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20  ompiled with.** 
1aef0 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45  the [SQLITE_THRE
1af00 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f  ADSAFE | SQLITE_
1af10 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f  THREADSAFE=0] co
1af20 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1af30 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20  n then.** it is 
1af40 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20  not possible to 
1af50 73 65 74 20 74 68 65 20 4d 75 6c 74 69 2d 74 68  set the Multi-th
1af60 72 65 61 64 20 5b 74 68 72 65 61 64 69 6e 67 20  read [threading 
1af70 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71  mode] and.** [sq
1af80 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
1af90 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c  will return [SQL
1afa0 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61  ITE_ERROR] if ca
1afb0 6c 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a  lled with the.**
1afc0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1afd0 55 4c 54 49 54 48 52 45 41 44 20 63 6f 6e 66 69  ULTITHREAD confi
1afe0 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e  guration option.
1aff0 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1b000 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
1b010 41 4c 49 5a 45 44 5d 5d 20 3c 64 74 3e 53 51 4c  ALIZED]] <dt>SQL
1b020 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
1b030 4c 49 5a 45 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  LIZED</dt>.** <d
1b040 64 3e 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61  d>There are no a
1b050 72 67 75 6d 65 6e 74 73 20 74 6f 20 74 68 69 73  rguments to this
1b060 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68 69 73 20   option.  ^This 
1b070 6f 70 74 69 6f 6e 20 73 65 74 73 20 74 68 65 0a  option sets the.
1b080 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f  ** [threading mo
1b090 64 65 5d 20 74 6f 20 53 65 72 69 61 6c 69 7a 65  de] to Serialize
1b0a0 64 2e 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  d. In other word
1b0b0 73 2c 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 65  s, this option e
1b0c0 6e 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c 20 6d 75  nables.** all mu
1b0d0 74 65 78 65 73 20 69 6e 63 6c 75 64 69 6e 67 20  texes including 
1b0e0 74 68 65 20 72 65 63 75 72 73 69 76 65 0a 2a 2a  the recursive.**
1b0f0 20 6d 75 74 65 78 65 73 20 6f 6e 20 5b 64 61 74   mutexes on [dat
1b100 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1b110 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20  ] and [prepared 
1b120 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62 6a 65 63  statement] objec
1b130 74 73 2e 0a 2a 2a 20 49 6e 20 74 68 69 73 20 6d  ts..** In this m
1b140 6f 64 65 20 28 77 68 69 63 68 20 69 73 20 74 68  ode (which is th
1b150 65 20 64 65 66 61 75 6c 74 20 77 68 65 6e 20 53  e default when S
1b160 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65  QLite is compile
1b170 64 20 77 69 74 68 0a 2a 2a 20 5b 53 51 4c 49 54  d with.** [SQLIT
1b180 45 5f 54 48 52 45 41 44 53 41 46 45 3d 31 5d 29  E_THREADSAFE=1])
1b190 20 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72   the SQLite libr
1b1a0 61 72 79 20 77 69 6c 6c 20 69 74 73 65 6c 66 20  ary will itself 
1b1b0 73 65 72 69 61 6c 69 7a 65 20 61 63 63 65 73 73  serialize access
1b1c0 0a 2a 2a 20 74 6f 20 5b 64 61 74 61 62 61 73 65  .** to [database
1b1d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d 20 61 6e   connections] an
1b1e0 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  d [prepared stat
1b1f0 65 6d 65 6e 74 73 5d 20 73 6f 20 74 68 61 74 20  ements] so that 
1b200 74 68 65 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69  the.** applicati
1b210 6f 6e 20 69 73 20 66 72 65 65 20 74 6f 20 75 73  on is free to us
1b220 65 20 74 68 65 20 73 61 6d 65 20 5b 64 61 74 61  e the same [data
1b230 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
1b240 20 6f 72 20 74 68 65 0a 2a 2a 20 73 61 6d 65 20   or the.** same 
1b250 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d  [prepared statem
1b260 65 6e 74 5d 20 69 6e 20 64 69 66 66 65 72 65 6e  ent] in differen
1b270 74 20 74 68 72 65 61 64 73 20 61 74 20 74 68 65  t threads at the
1b280 20 73 61 6d 65 20 74 69 6d 65 2e 0a 2a 2a 20 5e   same time..** ^
1b290 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  If SQLite is com
1b2a0 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68  piled with.** th
1b2b0 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44  e [SQLITE_THREAD
1b2c0 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48  SAFE | SQLITE_TH
1b2d0 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70  READSAFE=0] comp
1b2e0 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20  ile-time option 
1b2f0 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f  then.** it is no
1b300 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 65  t possible to se
1b310 74 20 74 68 65 20 53 65 72 69 61 6c 69 7a 65 64  t the Serialized
1b320 20 5b 74 68 72 65 61 64 69 6e 67 20 6d 6f 64 65   [threading mode
1b330 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65  ] and.** [sqlite
1b340 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c 6c  3_config()] will
1b350 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
1b360 45 52 52 4f 52 5d 20 69 66 20 63 61 6c 6c 65 64  ERROR] if called
1b370 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 53 51 4c   with the.** SQL
1b380 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49 41  ITE_CONFIG_SERIA
1b390 4c 49 5a 45 44 20 63 6f 6e 66 69 67 75 72 61 74  LIZED configurat
1b3a0 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f 64 64 3e  ion option.</dd>
1b3b0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1b3c0 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 5d 20  CONFIG_MALLOC]] 
1b3d0 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1b3e0 47 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a  G_MALLOC</dt>.**
1b3f0 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49   <dd> ^(The SQLI
1b400 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1b410 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20   option takes a 
1b420 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74 20  single argument 
1b430 77 68 69 63 68 20 69 73 20 0a 2a 2a 20 61 20 70  which is .** a p
1b440 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73  ointer to an ins
1b450 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73 71  tance of the [sq
1b460 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64  lite3_mem_method
1b470 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a 2a  s] structure..**
1b480 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 73 70   The argument sp
1b490 65 63 69 66 69 65 73 0a 2a 2a 20 61 6c 74 65 72  ecifies.** alter
1b4a0 6e 61 74 69 76 65 20 6c 6f 77 2d 6c 65 76 65 6c  native low-level
1b4b0 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1b4c0 6f 6e 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 62  on routines to b
1b4d0 65 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20  e used in place 
1b4e0 6f 66 0a 2a 2a 20 74 68 65 20 6d 65 6d 6f 72 79  of.** the memory
1b4f0 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74   allocation rout
1b500 69 6e 65 73 20 62 75 69 6c 74 20 69 6e 74 6f 20  ines built into 
1b510 53 51 4c 69 74 65 2e 29 5e 20 5e 53 51 4c 69 74  SQLite.)^ ^SQLit
1b520 65 20 6d 61 6b 65 73 0a 2a 2a 20 69 74 73 20 6f  e makes.** its o
1b530 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
1b540 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f  of the content o
1b550 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d  f the [sqlite3_m
1b560 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75  em_methods] stru
1b570 63 74 75 72 65 0a 2a 2a 20 62 65 66 6f 72 65 20  cture.** before 
1b580 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  the [sqlite3_con
1b590 66 69 67 28 29 5d 20 63 61 6c 6c 20 72 65 74 75  fig()] call retu
1b5a0 72 6e 73 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  rns.</dd>.**.** 
1b5b0 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  [[SQLITE_CONFIG_
1b5c0 47 45 54 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e  GETMALLOC]] <dt>
1b5d0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1b5e0 54 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a 20  TMALLOC</dt>.** 
1b5f0 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1b600 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c 4c  E_CONFIG_GETMALL
1b610 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  OC option takes 
1b620 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
1b630 74 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20  t which.** is a 
1b640 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
1b650 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 5b 73  stance of the [s
1b660 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f  qlite3_mem_metho
1b670 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e 0a 2a  ds] structure..*
1b680 2a 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d  * The [sqlite3_m
1b690 65 6d 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 73  em_methods].** s
1b6a0 74 72 75 63 74 75 72 65 20 69 73 20 66 69 6c 6c  tructure is fill
1b6b0 65 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72  ed with the curr
1b6c0 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 6d 65  ently defined me
1b6d0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
1b6e0 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54  routines.)^.** T
1b6f0 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  his option can b
1b700 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 6c 6f  e used to overlo
1b710 61 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d  ad the default m
1b720 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e  emory allocation
1b730 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77 69 74  .** routines wit
1b740 68 20 61 20 77 72 61 70 70 65 72 20 74 68 61 74  h a wrapper that
1b750 20 73 69 6d 75 6c 61 74 69 6f 6e 73 20 6d 65 6d   simulations mem
1b760 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66  ory allocation f
1b770 61 69 6c 75 72 65 20 6f 72 0a 2a 2a 20 74 72 61  ailure or.** tra
1b780 63 6b 73 20 6d 65 6d 6f 72 79 20 75 73 61 67 65  cks memory usage
1b790 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 3c  , for example. <
1b7a0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1b7b0 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c  ITE_CONFIG_SMALL
1b7c0 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74 3e 53 51  _MALLOC]] <dt>SQ
1b7d0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c  LITE_CONFIG_SMAL
1b7e0 4c 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a 2a 2a  L_MALLOC</dt>.**
1b7f0 20 3c 64 64 3e 20 5e 54 68 65 20 53 51 4c 49 54   <dd> ^The SQLIT
1b800 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d  E_CONFIG_SMALL_M
1b810 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b  ALLOC option tak
1b820 65 73 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65  es single argume
1b830 6e 74 20 6f 66 0a 2a 2a 20 74 79 70 65 20 69 6e  nt of.** type in
1b840 74 2c 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  t, interpreted a
1b850 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20 77 68 69  s a boolean, whi
1b860 63 68 20 69 66 20 74 72 75 65 20 70 72 6f 76 69  ch if true provi
1b870 64 65 73 20 61 20 68 69 6e 74 20 74 6f 0a 2a 2a  des a hint to.**
1b880 20 53 51 4c 69 74 65 20 74 68 61 74 20 69 74 20   SQLite that it 
1b890 73 68 6f 75 6c 64 20 61 76 6f 69 64 20 6c 61 72  should avoid lar
1b8a0 67 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ge memory alloca
1b8b0 74 69 6f 6e 73 20 69 66 20 70 6f 73 73 69 62 6c  tions if possibl
1b8c0 65 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 77 69 6c  e..** SQLite wil
1b8d0 6c 20 72 75 6e 20 66 61 73 74 65 72 20 69 66 20  l run faster if 
1b8e0 69 74 20 69 73 20 66 72 65 65 20 74 6f 20 6d 61  it is free to ma
1b8f0 6b 65 20 6c 61 72 67 65 20 6d 65 6d 6f 72 79 20  ke large memory 
1b900 61 6c 6c 6f 63 61 74 69 6f 6e 73 2c 0a 2a 2a 20  allocations,.** 
1b910 62 75 74 20 73 6f 6d 65 20 61 70 70 6c 69 63 61  but some applica
1b920 74 69 6f 6e 20 6d 69 67 68 74 20 70 72 65 66 65  tion might prefe
1b930 72 20 74 6f 20 72 75 6e 20 73 6c 6f 77 65 72 20  r to run slower 
1b940 69 6e 20 65 78 63 68 61 6e 67 65 20 66 6f 72 0a  in exchange for.
1b950 2a 2a 20 67 75 61 72 61 6e 74 65 65 73 20 61 62  ** guarantees ab
1b960 6f 75 74 20 6d 65 6d 6f 72 79 20 66 72 61 67 6d  out memory fragm
1b970 65 6e 74 61 74 69 6f 6e 20 74 68 61 74 20 61 72  entation that ar
1b980 65 20 70 6f 73 73 69 62 6c 65 20 69 66 20 6c 61  e possible if la
1b990 72 67 65 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f  rge.** allocatio
1b9a0 6e 73 20 61 72 65 20 61 76 6f 69 64 65 64 2e 20  ns are avoided. 
1b9b0 20 54 68 69 73 20 68 69 6e 74 20 69 73 20 6e 6f   This hint is no
1b9c0 72 6d 61 6c 6c 79 20 6f 66 66 2e 0a 2a 2a 20 3c  rmally off..** <
1b9d0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1b9e0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54  ITE_CONFIG_MEMST
1b9f0 41 54 55 53 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  ATUS]] <dt>SQLIT
1ba00 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54  E_CONFIG_MEMSTAT
1ba10 55 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  US</dt>.** <dd> 
1ba20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1ba30 49 47 5f 4d 45 4d 53 54 41 54 55 53 20 6f 70 74  IG_MEMSTATUS opt
1ba40 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e 67 6c 65  ion takes single
1ba50 20 61 72 67 75 6d 65 6e 74 20 6f 66 20 74 79 70   argument of typ
1ba60 65 20 69 6e 74 2c 0a 2a 2a 20 69 6e 74 65 72 70  e int,.** interp
1ba70 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c 65  reted as a boole
1ba80 61 6e 2c 20 77 68 69 63 68 20 65 6e 61 62 6c 65  an, which enable
1ba90 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 74 68  s or disables th
1baa0 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0a  e collection of.
1bab0 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ** memory alloca
1bac0 74 69 6f 6e 20 73 74 61 74 69 73 74 69 63 73 2e  tion statistics.
1bad0 20 5e 28 57 68 65 6e 20 6d 65 6d 6f 72 79 20 61   ^(When memory a
1bae0 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73  llocation statis
1baf0 74 69 63 73 20 61 72 65 0a 2a 2a 20 64 69 73 61  tics are.** disa
1bb00 62 6c 65 64 2c 20 74 68 65 20 66 6f 6c 6c 6f 77  bled, the follow
1bb10 69 6e 67 20 53 51 4c 69 74 65 20 69 6e 74 65 72  ing SQLite inter
1bb20 66 61 63 65 73 20 62 65 63 6f 6d 65 20 6e 6f 6e  faces become non
1bb30 2d 6f 70 65 72 61 74 69 6f 6e 61 6c 3a 0a 2a 2a  -operational:.**
1bb40 20 20 20 3c 75 6c 3e 0a 2a 2a 20 20 20 3c 6c 69     <ul>.**   <li
1bb50 3e 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  > [sqlite3_memor
1bb60 79 5f 75 73 65 64 28 29 5d 0a 2a 2a 20 20 20 3c  y_used()].**   <
1bb70 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d  li> [sqlite3_mem
1bb80 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d  ory_highwater()]
1bb90 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73 71 6c 69  .**   <li> [sqli
1bba0 74 65 33 5f 73 6f 66 74 5f 68 65 61 70 5f 6c 69  te3_soft_heap_li
1bbb0 6d 69 74 36 34 28 29 5d 0a 2a 2a 20 20 20 3c 6c  mit64()].**   <l
1bbc0 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73 74 61 74  i> [sqlite3_stat
1bbd0 75 73 36 34 28 29 5d 0a 2a 2a 20 20 20 3c 2f 75  us64()].**   </u
1bbe0 6c 3e 29 5e 0a 2a 2a 20 5e 4d 65 6d 6f 72 79 20  l>)^.** ^Memory 
1bbf0 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61 74 69  allocation stati
1bc00 73 74 69 63 73 20 61 72 65 20 65 6e 61 62 6c 65  stics are enable
1bc10 64 20 62 79 20 64 65 66 61 75 6c 74 20 75 6e 6c  d by default unl
1bc20 65 73 73 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a  ess SQLite is.**
1bc30 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 5b   compiled with [
1bc40 53 51 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 4d  SQLITE_DEFAULT_M
1bc50 45 4d 53 54 41 54 55 53 5d 3d 30 20 69 6e 20 77  EMSTATUS]=0 in w
1bc60 68 69 63 68 20 63 61 73 65 20 6d 65 6d 6f 72 79  hich case memory
1bc70 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73  .** allocation s
1bc80 74 61 74 69 73 74 69 63 73 20 61 72 65 20 64 69  tatistics are di
1bc90 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c  sabled by defaul
1bca0 74 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  t..** </dd>.**.*
1bcb0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1bcc0 47 5f 53 43 52 41 54 43 48 5d 5d 20 3c 64 74 3e  G_SCRATCH]] <dt>
1bcd0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 43  SQLITE_CONFIG_SC
1bce0 52 41 54 43 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  RATCH</dt>.** <d
1bcf0 64 3e 20 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  d> The SQLITE_CO
1bd00 4e 46 49 47 5f 53 43 52 41 54 43 48 20 6f 70 74  NFIG_SCRATCH opt
1bd10 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72  ion is no longer
1bd20 20 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a   used..** </dd>.
1bd30 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1bd40 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 5d  ONFIG_PAGECACHE]
1bd50 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1bd60 46 49 47 5f 50 41 47 45 43 41 43 48 45 3c 2f 64  FIG_PAGECACHE</d
1bd70 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20  t>.** <dd> ^The 
1bd80 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41  SQLITE_CONFIG_PA
1bd90 47 45 43 41 43 48 45 20 6f 70 74 69 6f 6e 20 73  GECACHE option s
1bda0 70 65 63 69 66 69 65 73 20 61 20 6d 65 6d 6f 72  pecifies a memor
1bdb0 79 20 70 6f 6f 6c 0a 2a 2a 20 74 68 61 74 20 53  y pool.** that S
1bdc0 51 4c 69 74 65 20 63 61 6e 20 75 73 65 20 66 6f  QLite can use fo
1bdd0 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 70  r the database p
1bde0 61 67 65 20 63 61 63 68 65 20 77 69 74 68 20 74  age cache with t
1bdf0 68 65 20 64 65 66 61 75 6c 74 20 70 61 67 65 0a  he default page.
1be00 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c 65 6d 65  ** cache impleme
1be10 6e 74 61 74 69 6f 6e 2e 20 20 0a 2a 2a 20 54 68  ntation.  .** Th
1be20 69 73 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  is configuration
1be30 20 6f 70 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d   option is a no-
1be40 6f 70 20 69 66 20 61 6e 20 61 70 70 6c 69 63 61  op if an applica
1be50 74 69 6f 6e 2d 64 65 66 69 6e 65 20 70 61 67 65  tion-define page
1be60 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c 65 6d  .** cache implem
1be70 65 6e 74 61 74 69 6f 6e 20 69 73 20 6c 6f 61 64  entation is load
1be80 65 64 20 75 73 69 6e 67 20 74 68 65 20 5b 53 51  ed using the [SQ
1be90 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1bea0 48 45 32 5d 2e 0a 2a 2a 20 5e 54 68 65 72 65 20  HE2]..** ^There 
1beb0 61 72 65 20 74 68 72 65 65 20 61 72 67 75 6d 65  are three argume
1bec0 6e 74 73 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f  nts to SQLITE_CO
1bed0 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45 3a 20  NFIG_PAGECACHE: 
1bee0 41 20 70 6f 69 6e 74 65 72 20 74 6f 0a 2a 2a 20  A pointer to.** 
1bef0 38 2d 62 79 74 65 20 61 6c 69 67 6e 65 64 20 6d  8-byte aligned m
1bf00 65 6d 6f 72 79 20 28 70 4d 65 6d 29 2c 20 74 68  emory (pMem), th
1bf10 65 20 73 69 7a 65 20 6f 66 20 65 61 63 68 20 70  e size of each p
1bf20 61 67 65 20 63 61 63 68 65 20 6c 69 6e 65 20 28  age cache line (
1bf30 73 7a 29 2c 0a 2a 2a 20 61 6e 64 20 74 68 65 20  sz),.** and the 
1bf40 6e 75 6d 62 65 72 20 6f 66 20 63 61 63 68 65 20  number of cache 
1bf50 6c 69 6e 65 73 20 28 4e 29 2e 0a 2a 2a 20 54 68  lines (N)..** Th
1bf60 65 20 73 7a 20 61 72 67 75 6d 65 6e 74 20 73 68  e sz argument sh
1bf70 6f 75 6c 64 20 62 65 20 74 68 65 20 73 69 7a 65  ould be the size
1bf80 20 6f 66 20 74 68 65 20 6c 61 72 67 65 73 74 20   of the largest 
1bf90 64 61 74 61 62 61 73 65 20 70 61 67 65 0a 2a 2a  database page.**
1bfa0 20 28 61 20 70 6f 77 65 72 20 6f 66 20 74 77 6f   (a power of two
1bfb0 20 62 65 74 77 65 65 6e 20 35 31 32 20 61 6e 64   between 512 and
1bfc0 20 36 35 35 33 36 29 20 70 6c 75 73 20 73 6f 6d   65536) plus som
1bfd0 65 20 65 78 74 72 61 20 62 79 74 65 73 20 66 6f  e extra bytes fo
1bfe0 72 20 65 61 63 68 0a 2a 2a 20 70 61 67 65 20 68  r each.** page h
1bff0 65 61 64 65 72 2e 20 20 5e 54 68 65 20 6e 75 6d  eader.  ^The num
1c000 62 65 72 20 6f 66 20 65 78 74 72 61 20 62 79 74  ber of extra byt
1c010 65 73 20 6e 65 65 64 65 64 20 62 79 20 74 68 65  es needed by the
1c020 20 70 61 67 65 20 68 65 61 64 65 72 0a 2a 2a 20   page header.** 
1c030 63 61 6e 20 62 65 20 64 65 74 65 72 6d 69 6e 65  can be determine
1c040 64 20 75 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f  d using [SQLITE_
1c050 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
1c060 52 53 5a 5d 2e 0a 2a 2a 20 5e 49 74 20 69 73 20  RSZ]..** ^It is 
1c070 68 61 72 6d 6c 65 73 73 2c 20 61 70 61 72 74 20  harmless, apart 
1c080 66 72 6f 6d 20 74 68 65 20 77 61 73 74 65 64 20  from the wasted 
1c090 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 66 6f 72 20 74  memory,.** for t
1c0a0 68 65 20 73 7a 20 70 61 72 61 6d 65 74 65 72 20  he sz parameter 
1c0b0 74 6f 20 62 65 20 6c 61 72 67 65 72 20 74 68 61  to be larger tha
1c0c0 6e 20 6e 65 63 65 73 73 61 72 79 2e 20 20 54 68  n necessary.  Th
1c0d0 65 20 70 4d 65 6d 0a 2a 2a 20 61 72 67 75 6d 65  e pMem.** argume
1c0e0 6e 74 20 6d 75 73 74 20 62 65 20 65 69 74 68 65  nt must be eithe
1c0f0 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  r a NULL pointer
1c100 20 6f 72 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   or a pointer to
1c110 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a 20 61 6c   an 8-byte.** al
1c120 69 67 6e 65 64 20 62 6c 6f 63 6b 20 6f 66 20 6d  igned block of m
1c130 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c 65 61 73  emory of at leas
1c140 74 20 73 7a 2a 4e 20 62 79 74 65 73 2c 20 6f 74  t sz*N bytes, ot
1c150 68 65 72 77 69 73 65 0a 2a 2a 20 73 75 62 73 65  herwise.** subse
1c160 71 75 65 6e 74 20 62 65 68 61 76 69 6f 72 20 69  quent behavior i
1c170 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20  s undefined..** 
1c180 5e 57 68 65 6e 20 70 4d 65 6d 20 69 73 20 6e 6f  ^When pMem is no
1c190 74 20 4e 55 4c 4c 2c 20 53 51 4c 69 74 65 20 77  t NULL, SQLite w
1c1a0 69 6c 6c 20 73 74 72 69 76 65 20 74 6f 20 75 73  ill strive to us
1c1b0 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 70 72 6f  e the memory pro
1c1c0 76 69 64 65 64 0a 2a 2a 20 74 6f 20 73 61 74 69  vided.** to sati
1c1d0 73 66 79 20 70 61 67 65 20 63 61 63 68 65 20 6e  sfy page cache n
1c1e0 65 65 64 73 2c 20 66 61 6c 6c 69 6e 67 20 62 61  eeds, falling ba
1c1f0 63 6b 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d  ck to [sqlite3_m
1c200 61 6c 6c 6f 63 28 29 5d 20 69 66 0a 2a 2a 20 61  alloc()] if.** a
1c210 20 70 61 67 65 20 63 61 63 68 65 20 6c 69 6e 65   page cache line
1c220 20 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20   is larger than 
1c230 73 7a 20 62 79 74 65 73 20 6f 72 20 69 66 20 61  sz bytes or if a
1c240 6c 6c 20 6f 66 20 74 68 65 20 70 4d 65 6d 20 62  ll of the pMem b
1c250 75 66 66 65 72 0a 2a 2a 20 69 73 20 65 78 68 61  uffer.** is exha
1c260 75 73 74 65 64 2e 0a 2a 2a 20 5e 49 66 20 70 4d  usted..** ^If pM
1c270 65 6d 20 69 73 20 4e 55 4c 4c 20 61 6e 64 20 4e  em is NULL and N
1c280 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68   is non-zero, th
1c290 65 6e 20 65 61 63 68 20 64 61 74 61 62 61 73 65  en each database
1c2a0 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 64   connection.** d
1c2b0 6f 65 73 20 61 6e 20 69 6e 69 74 69 61 6c 20 62  oes an initial b
1c2c0 75 6c 6b 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66  ulk allocation f
1c2d0 6f 72 20 70 61 67 65 20 63 61 63 68 65 20 6d 65  or page cache me
1c2e0 6d 6f 72 79 0a 2a 2a 20 66 72 6f 6d 20 5b 73 71  mory.** from [sq
1c2f0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
1c300 73 75 66 66 69 63 69 65 6e 74 20 66 6f 72 20 4e  sufficient for N
1c310 20 63 61 63 68 65 20 6c 69 6e 65 73 20 69 66 20   cache lines if 
1c320 4e 20 69 73 20 70 6f 73 69 74 69 76 65 20 6f 72  N is positive or
1c330 0a 2a 2a 20 6f 66 20 2d 31 30 32 34 2a 4e 20 62  .** of -1024*N b
1c340 79 74 65 73 20 69 66 20 4e 20 69 73 20 6e 65 67  ytes if N is neg
1c350 61 74 69 76 65 2c 20 2e 20 5e 49 66 20 61 64 64  ative, . ^If add
1c360 69 74 69 6f 6e 61 6c 0a 2a 2a 20 70 61 67 65 20  itional.** page 
1c370 63 61 63 68 65 20 6d 65 6d 6f 72 79 20 69 73 20  cache memory is 
1c380 6e 65 65 64 65 64 20 62 65 79 6f 6e 64 20 77 68  needed beyond wh
1c390 61 74 20 69 73 20 70 72 6f 76 69 64 65 64 20 62  at is provided b
1c3a0 79 20 74 68 65 20 69 6e 69 74 69 61 6c 0a 2a 2a  y the initial.**
1c3b0 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20 74 68 65   allocation, the
1c3c0 6e 20 53 51 4c 69 74 65 20 67 6f 65 73 20 74 6f  n SQLite goes to
1c3d0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
1c3e0 28 29 5d 20 73 65 70 61 72 61 74 65 6c 79 20 66  ()] separately f
1c3f0 6f 72 20 65 61 63 68 0a 2a 2a 20 61 64 64 69 74  or each.** addit
1c400 69 6f 6e 61 6c 20 63 61 63 68 65 20 6c 69 6e 65  ional cache line
1c410 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  . </dd>.**.** [[
1c420 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
1c430 41 50 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  AP]] <dt>SQLITE_
1c440 43 4f 4e 46 49 47 5f 48 45 41 50 3c 2f 64 74 3e  CONFIG_HEAP</dt>
1c450 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51  .** <dd> ^The SQ
1c460 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50  LITE_CONFIG_HEAP
1c470 20 6f 70 74 69 6f 6e 20 73 70 65 63 69 66 69 65   option specifie
1c480 73 20 61 20 73 74 61 74 69 63 20 6d 65 6d 6f 72  s a static memor
1c490 79 20 62 75 66 66 65 72 20 0a 2a 2a 20 74 68 61  y buffer .** tha
1c4a0 74 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 75 73  t SQLite will us
1c4b0 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73  e for all of its
1c4c0 20 64 79 6e 61 6d 69 63 20 6d 65 6d 6f 72 79 20   dynamic memory 
1c4d0 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73  allocation needs
1c4e0 0a 2a 2a 20 62 65 79 6f 6e 64 20 74 68 6f 73 65  .** beyond those
1c4f0 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20 62 79   provided for by
1c500 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
1c510 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a 20 5e  PAGECACHE]..** ^
1c520 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1c530 47 5f 48 45 41 50 20 6f 70 74 69 6f 6e 20 69 73  G_HEAP option is
1c540 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20   only available 
1c550 69 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d  if SQLite is com
1c560 70 69 6c 65 64 0a 2a 2a 20 77 69 74 68 20 65 69  piled.** with ei
1c570 74 68 65 72 20 5b 53 51 4c 49 54 45 5f 45 4e 41  ther [SQLITE_ENA
1c580 42 4c 45 5f 4d 45 4d 53 59 53 33 5d 20 6f 72 20  BLE_MEMSYS3] or 
1c590 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 4d  [SQLITE_ENABLE_M
1c5a0 45 4d 53 59 53 35 5d 20 61 6e 64 20 72 65 74 75  EMSYS5] and retu
1c5b0 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45  rns.** [SQLITE_E
1c5c0 52 52 4f 52 5d 20 69 66 20 69 6e 76 6f 6b 65 64  RROR] if invoked
1c5d0 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a 20 5e   otherwise..** ^
1c5e0 54 68 65 72 65 20 61 72 65 20 74 68 72 65 65 20  There are three 
1c5f0 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 53 51 4c  arguments to SQL
1c600 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 3a  ITE_CONFIG_HEAP:
1c610 0a 2a 2a 20 41 6e 20 38 2d 62 79 74 65 20 61 6c  .** An 8-byte al
1c620 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 74 6f  igned pointer to
1c630 20 74 68 65 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20   the memory,.** 
1c640 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
1c650 74 65 73 20 69 6e 20 74 68 65 20 6d 65 6d 6f 72  tes in the memor
1c660 79 20 62 75 66 66 65 72 2c 20 61 6e 64 20 74 68  y buffer, and th
1c670 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61  e minimum alloca
1c680 74 69 6f 6e 20 73 69 7a 65 2e 0a 2a 2a 20 5e 49  tion size..** ^I
1c690 66 20 74 68 65 20 66 69 72 73 74 20 70 6f 69 6e  f the first poin
1c6a0 74 65 72 20 28 74 68 65 20 6d 65 6d 6f 72 79 20  ter (the memory 
1c6b0 70 6f 69 6e 74 65 72 29 20 69 73 20 4e 55 4c 4c  pointer) is NULL
1c6c0 2c 20 74 68 65 6e 20 53 51 4c 69 74 65 20 72 65  , then SQLite re
1c6d0 76 65 72 74 73 0a 2a 2a 20 74 6f 20 75 73 69 6e  verts.** to usin
1c6e0 67 20 69 74 73 20 64 65 66 61 75 6c 74 20 6d 65  g its default me
1c6f0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 20 28  mory allocator (
1c700 74 68 65 20 73 79 73 74 65 6d 20 6d 61 6c 6c 6f  the system mallo
1c710 63 28 29 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  c() implementati
1c720 6f 6e 29 2c 0a 2a 2a 20 75 6e 64 6f 69 6e 67 20  on),.** undoing 
1c730 61 6e 79 20 70 72 69 6f 72 20 69 6e 76 6f 63 61  any prior invoca
1c740 74 69 6f 6e 20 6f 66 20 5b 53 51 4c 49 54 45 5f  tion of [SQLITE_
1c750 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 2e 20  CONFIG_MALLOC]. 
1c760 20 5e 49 66 20 74 68 65 0a 2a 2a 20 6d 65 6d 6f   ^If the.** memo
1c770 72 79 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f  ry pointer is no
1c780 74 20 4e 55 4c 4c 20 74 68 65 6e 20 74 68 65 20  t NULL then the 
1c790 61 6c 74 65 72 6e 61 74 69 76 65 20 6d 65 6d 6f  alternative memo
1c7a0 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 6f 72 20  ry.** allocator 
1c7b0 69 73 20 65 6e 67 61 67 65 64 20 74 6f 20 68 61  is engaged to ha
1c7c0 6e 64 6c 65 20 61 6c 6c 20 6f 66 20 53 51 4c 69  ndle all of SQLi
1c7d0 74 65 73 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  tes memory alloc
1c7e0 61 74 69 6f 6e 20 6e 65 65 64 73 2e 0a 2a 2a 20  ation needs..** 
1c7f0 54 68 65 20 66 69 72 73 74 20 70 6f 69 6e 74 65  The first pointe
1c800 72 20 28 74 68 65 20 6d 65 6d 6f 72 79 20 70 6f  r (the memory po
1c810 69 6e 74 65 72 29 20 6d 75 73 74 20 62 65 20 61  inter) must be a
1c820 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20 38 2d 62  ligned to an 8-b
1c830 79 74 65 0a 2a 2a 20 62 6f 75 6e 64 61 72 79 20  yte.** boundary 
1c840 6f 72 20 73 75 62 73 65 71 75 65 6e 74 20 62 65  or subsequent be
1c850 68 61 76 69 6f 72 20 6f 66 20 53 51 4c 69 74 65  havior of SQLite
1c860 20 77 69 6c 6c 20 62 65 20 75 6e 64 65 66 69 6e   will be undefin
1c870 65 64 2e 0a 2a 2a 20 54 68 65 20 6d 69 6e 69 6d  ed..** The minim
1c880 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 69  um allocation si
1c890 7a 65 20 69 73 20 63 61 70 70 65 64 20 61 74 20  ze is capped at 
1c8a0 32 2a 2a 31 32 2e 20 52 65 61 73 6f 6e 61 62 6c  2**12. Reasonabl
1c8b0 65 20 76 61 6c 75 65 73 0a 2a 2a 20 66 6f 72 20  e values.** for 
1c8c0 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c 6f  the minimum allo
1c8d0 63 61 74 69 6f 6e 20 73 69 7a 65 20 61 72 65 20  cation size are 
1c8e0 32 2a 2a 35 20 74 68 72 6f 75 67 68 20 32 2a 2a  2**5 through 2**
1c8f0 38 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  8.</dd>.**.** [[
1c900 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1c910 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  TEX]] <dt>SQLITE
1c920 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 3c 2f 64  _CONFIG_MUTEX</d
1c930 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65  t>.** <dd> ^(The
1c940 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d   SQLITE_CONFIG_M
1c950 55 54 45 58 20 6f 70 74 69 6f 6e 20 74 61 6b 65  UTEX option take
1c960 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  s a single argum
1c970 65 6e 74 20 77 68 69 63 68 20 69 73 20 61 0a 2a  ent which is a.*
1c980 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  * pointer to an 
1c990 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
1c9a0 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d  [sqlite3_mutex_m
1c9b0 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72  ethods] structur
1c9c0 65 2e 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65  e..** The argume
1c9d0 6e 74 20 73 70 65 63 69 66 69 65 73 20 61 6c 74  nt specifies alt
1c9e0 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c 65 76  ernative low-lev
1c9f0 65 6c 20 6d 75 74 65 78 20 72 6f 75 74 69 6e 65  el mutex routine
1ca00 73 20 74 6f 20 62 65 20 75 73 65 64 0a 2a 2a 20  s to be used.** 
1ca10 69 6e 20 70 6c 61 63 65 20 74 68 65 20 6d 75 74  in place the mut
1ca20 65 78 20 72 6f 75 74 69 6e 65 73 20 62 75 69 6c  ex routines buil
1ca30 74 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 29 5e  t into SQLite.)^
1ca40 20 20 5e 53 51 4c 69 74 65 20 6d 61 6b 65 73 20    ^SQLite makes 
1ca50 61 20 63 6f 70 79 20 6f 66 0a 2a 2a 20 74 68 65  a copy of.** the
1ca60 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
1ca70 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d  [sqlite3_mutex_m
1ca80 65 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72  ethods] structur
1ca90 65 20 62 65 66 6f 72 65 20 74 68 65 20 63 61 6c  e before the cal
1caa0 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  l to.** [sqlite3
1cab0 5f 63 6f 6e 66 69 67 28 29 5d 20 72 65 74 75 72  _config()] retur
1cac0 6e 73 2e 20 5e 49 66 20 53 51 4c 69 74 65 20 69  ns. ^If SQLite i
1cad0 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  s compiled with.
1cae0 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  ** the [SQLITE_T
1caf0 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49  HREADSAFE | SQLI
1cb00 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
1cb10 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1cb20 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 74 68 65  tion then.** the
1cb30 20 65 6e 74 69 72 65 20 6d 75 74 65 78 69 6e 67   entire mutexing
1cb40 20 73 75 62 73 79 73 74 65 6d 20 69 73 20 6f 6d   subsystem is om
1cb50 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 62  itted from the b
1cb60 75 69 6c 64 20 61 6e 64 20 68 65 6e 63 65 20 63  uild and hence c
1cb70 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  alls to.** [sqli
1cb80 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69  te3_config()] wi
1cb90 74 68 20 74 68 65 20 53 51 4c 49 54 45 5f 43 4f  th the SQLITE_CO
1cba0 4e 46 49 47 5f 4d 55 54 45 58 20 63 6f 6e 66 69  NFIG_MUTEX confi
1cbb0 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20  guration option 
1cbc0 77 69 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e 20 5b  will.** return [
1cbd0 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f  SQLITE_ERROR].</
1cbe0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1cbf0 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54  TE_CONFIG_GETMUT
1cc00 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  EX]] <dt>SQLITE_
1cc10 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54 45 58 3c  CONFIG_GETMUTEX<
1cc20 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54  /dt>.** <dd> ^(T
1cc30 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1cc40 5f 47 45 54 4d 55 54 45 58 20 6f 70 74 69 6f 6e  _GETMUTEX option
1cc50 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
1cc60 61 72 67 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a  argument which.*
1cc70 2a 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74  * is a pointer t
1cc80 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  o an instance of
1cc90 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75   the [sqlite3_mu
1cca0 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72  tex_methods] str
1ccb0 75 63 74 75 72 65 2e 20 20 54 68 65 0a 2a 2a 20  ucture.  The.** 
1ccc0 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d  [sqlite3_mutex_m
1ccd0 65 74 68 6f 64 73 5d 0a 2a 2a 20 73 74 72 75 63  ethods].** struc
1cce0 74 75 72 65 20 69 73 20 66 69 6c 6c 65 64 20 77  ture is filled w
1ccf0 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 6c  ith the currentl
1cd00 79 20 64 65 66 69 6e 65 64 20 6d 75 74 65 78 20  y defined mutex 
1cd10 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a 2a 20 54  routines.)^.** T
1cd20 68 69 73 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  his option can b
1cd30 65 20 75 73 65 64 20 74 6f 20 6f 76 65 72 6c 6f  e used to overlo
1cd40 61 64 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d  ad the default m
1cd50 75 74 65 78 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a  utex allocation.
1cd60 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77 69 74 68  ** routines with
1cd70 20 61 20 77 72 61 70 70 65 72 20 75 73 65 64 20   a wrapper used 
1cd80 74 6f 20 74 72 61 63 6b 20 6d 75 74 65 78 20 75  to track mutex u
1cd90 73 61 67 65 20 66 6f 72 20 70 65 72 66 6f 72 6d  sage for perform
1cda0 61 6e 63 65 0a 2a 2a 20 70 72 6f 66 69 6c 69 6e  ance.** profilin
1cdb0 67 20 6f 72 20 74 65 73 74 69 6e 67 2c 20 66 6f  g or testing, fo
1cdc0 72 20 65 78 61 6d 70 6c 65 2e 20 20 20 5e 49 66  r example.   ^If
1cdd0 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
1cde0 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20  led with.** the 
1cdf0 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
1ce00 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45  FE | SQLITE_THRE
1ce10 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c  ADSAFE=0] compil
1ce20 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
1ce30 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74 69 72 65  en.** the entire
1ce40 20 6d 75 74 65 78 69 6e 67 20 73 75 62 73 79 73   mutexing subsys
1ce50 74 65 6d 20 69 73 20 6f 6d 69 74 74 65 64 20 66  tem is omitted f
1ce60 72 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 61 6e  rom the build an
1ce70 64 20 68 65 6e 63 65 20 63 61 6c 6c 73 20 74 6f  d hence calls to
1ce80 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e  .** [sqlite3_con
1ce90 66 69 67 28 29 5d 20 77 69 74 68 20 74 68 65 20  fig()] with the 
1cea0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1ceb0 54 4d 55 54 45 58 20 63 6f 6e 66 69 67 75 72 61  TMUTEX configura
1cec0 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77 69 6c 6c  tion option will
1ced0 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  .** return [SQLI
1cee0 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64 64 3e 0a  TE_ERROR].</dd>.
1cef0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1cf00 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d  ONFIG_LOOKASIDE]
1cf10 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1cf20 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 3c 2f 64  FIG_LOOKASIDE</d
1cf30 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65  t>.** <dd> ^(The
1cf40 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
1cf50 4f 4f 4b 41 53 49 44 45 20 6f 70 74 69 6f 6e 20  OOKASIDE option 
1cf60 74 61 6b 65 73 20 74 77 6f 20 61 72 67 75 6d 65  takes two argume
1cf70 6e 74 73 20 74 68 61 74 20 64 65 74 65 72 6d 69  nts that determi
1cf80 6e 65 0a 2a 2a 20 74 68 65 20 64 65 66 61 75 6c  ne.** the defaul
1cf90 74 20 73 69 7a 65 20 6f 66 20 6c 6f 6f 6b 61 73  t size of lookas
1cfa0 69 64 65 20 6d 65 6d 6f 72 79 20 6f 6e 20 65 61  ide memory on ea
1cfb0 63 68 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ch [database con
1cfc0 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20 54 68 65  nection]..** The
1cfd0 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
1cfe0 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a 65 20 6f  is the.** size o
1cff0 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73 69 64 65  f each lookaside
1d000 20 62 75 66 66 65 72 20 73 6c 6f 74 20 61 6e 64   buffer slot and
1d010 20 74 68 65 20 73 65 63 6f 6e 64 20 69 73 20 74   the second is t
1d020 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a 2a 2a 20  he number of.** 
1d030 73 6c 6f 74 73 20 61 6c 6c 6f 63 61 74 65 64 20  slots allocated 
1d040 74 6f 20 65 61 63 68 20 64 61 74 61 62 61 73 65  to each database
1d050 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29 5e 20 20   connection.)^  
1d060 5e 28 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  ^(SQLITE_CONFIG_
1d070 4c 4f 4f 4b 41 53 49 44 45 0a 2a 2a 20 73 65 74  LOOKASIDE.** set
1d080 73 20 74 68 65 20 3c 69 3e 64 65 66 61 75 6c 74  s the <i>default
1d090 3c 2f 69 3e 20 6c 6f 6f 6b 61 73 69 64 65 20 73  </i> lookaside s
1d0a0 69 7a 65 2e 20 54 68 65 20 5b 53 51 4c 49 54 45  ize. The [SQLITE
1d0b0 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
1d0c0 49 44 45 5d 0a 2a 2a 20 6f 70 74 69 6f 6e 20 74  IDE].** option t
1d0d0 6f 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  o [sqlite3_db_co
1d0e0 6e 66 69 67 28 29 5d 20 63 61 6e 20 62 65 20 75  nfig()] can be u
1d0f0 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68  sed to change th
1d100 65 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20 63  e lookaside.** c
1d110 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 6e 20  onfiguration on 
1d120 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 6e 6e 65  individual conne
1d130 63 74 69 6f 6e 73 2e 29 5e 20 3c 2f 64 64 3e 0a  ctions.)^ </dd>.
1d140 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1d150 4f 4e 46 49 47 5f 50 43 41 43 48 45 32 5d 5d 20  ONFIG_PCACHE2]] 
1d160 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1d170 47 5f 50 43 41 43 48 45 32 3c 2f 64 74 3e 0a 2a  G_PCACHE2</dt>.*
1d180 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c  * <dd> ^(The SQL
1d190 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1d1a0 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  E2 option takes 
1d1b0 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
1d1c0 74 20 77 68 69 63 68 20 69 73 20 0a 2a 2a 20 61  t which is .** a
1d1d0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 5b   pointer to an [
1d1e0 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d  sqlite3_pcache_m
1d1f0 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e  ethods2] object.
1d200 20 20 54 68 69 73 20 6f 62 6a 65 63 74 20 73 70    This object sp
1d210 65 63 69 66 69 65 73 0a 2a 2a 20 74 68 65 20 69  ecifies.** the i
1d220 6e 74 65 72 66 61 63 65 20 74 6f 20 61 20 63 75  nterface to a cu
1d230 73 74 6f 6d 20 70 61 67 65 20 63 61 63 68 65 20  stom page cache 
1d240 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 29  implementation.)
1d250 5e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 6d 61 6b  ^.** ^SQLite mak
1d260 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  es a copy of the
1d270 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65   [sqlite3_pcache
1d280 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63  _methods2] objec
1d290 74 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  t.</dd>.**.** [[
1d2a0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1d2b0 54 50 43 41 43 48 45 32 5d 5d 20 3c 64 74 3e 53  TPCACHE2]] <dt>S
1d2c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1d2d0 50 43 41 43 48 45 32 3c 2f 64 74 3e 0a 2a 2a 20  PCACHE2</dt>.** 
1d2e0 3c 64 64 3e 20 5e 28 54 68 65 20 53 51 4c 49 54  <dd> ^(The SQLIT
1d2f0 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1d300 48 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  HE2 option takes
1d310 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
1d320 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61  nt which.** is a
1d330 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 5b   pointer to an [
1d340 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d  sqlite3_pcache_m
1d350 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65 63 74 2e  ethods2] object.
1d360 20 20 53 51 4c 69 74 65 20 63 6f 70 69 65 73 20    SQLite copies 
1d370 6f 66 0a 2a 2a 20 74 68 65 20 63 75 72 72 65 6e  of.** the curren
1d380 74 20 70 61 67 65 20 63 61 63 68 65 20 69 6d 70  t page cache imp
1d390 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 6e 74 6f  lementation into
1d3a0 20 74 68 61 74 20 6f 62 6a 65 63 74 2e 29 5e 20   that object.)^ 
1d3b0 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
1d3c0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 5d  LITE_CONFIG_LOG]
1d3d0 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1d3e0 46 49 47 5f 4c 4f 47 3c 2f 64 74 3e 0a 2a 2a 20  FIG_LOG</dt>.** 
1d3f0 3c 64 64 3e 20 54 68 65 20 53 51 4c 49 54 45 5f  <dd> The SQLITE_
1d400 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70 74 69 6f  CONFIG_LOG optio
1d410 6e 20 69 73 20 75 73 65 64 20 74 6f 20 63 6f 6e  n is used to con
1d420 66 69 67 75 72 65 20 74 68 65 20 53 51 4c 69 74  figure the SQLit
1d430 65 0a 2a 2a 20 67 6c 6f 62 61 6c 20 5b 65 72 72  e.** global [err
1d440 6f 72 20 6c 6f 67 5d 2e 0a 2a 2a 20 28 5e 54 68  or log]..** (^Th
1d450 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1d460 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  LOG option takes
1d470 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 3a 20   two arguments: 
1d480 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 0a 2a  a pointer to a.*
1d490 2a 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20  * function with 
1d4a0 61 20 63 61 6c 6c 20 73 69 67 6e 61 74 75 72 65  a call signature
1d4b0 20 6f 66 20 76 6f 69 64 28 2a 29 28 76 6f 69 64   of void(*)(void
1d4c0 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68 61 72  *,int,const char
1d4d0 2a 29 2c 20 0a 2a 2a 20 61 6e 64 20 61 20 70 6f  *), .** and a po
1d4e0 69 6e 74 65 72 20 74 6f 20 76 6f 69 64 2e 20 5e  inter to void. ^
1d4f0 49 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  If the function 
1d500 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e  pointer is not N
1d510 55 4c 4c 2c 20 69 74 20 69 73 0a 2a 2a 20 69 6e  ULL, it is.** in
1d520 76 6f 6b 65 64 20 62 79 20 5b 73 71 6c 69 74 65  voked by [sqlite
1d530 33 5f 6c 6f 67 28 29 5d 20 74 6f 20 70 72 6f 63  3_log()] to proc
1d540 65 73 73 20 65 61 63 68 20 6c 6f 67 67 69 6e 67  ess each logging
1d550 20 65 76 65 6e 74 2e 20 20 5e 49 66 20 74 68 65   event.  ^If the
1d560 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 70 6f 69  .** function poi
1d570 6e 74 65 72 20 69 73 20 4e 55 4c 4c 2c 20 74 68  nter is NULL, th
1d580 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f 67 28 29  e [sqlite3_log()
1d590 5d 20 69 6e 74 65 72 66 61 63 65 20 62 65 63 6f  ] interface beco
1d5a0 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 0a 2a 2a 20  mes a no-op..** 
1d5b0 5e 54 68 65 20 76 6f 69 64 20 70 6f 69 6e 74 65  ^The void pointe
1d5c0 72 20 74 68 61 74 20 69 73 20 74 68 65 20 73 65  r that is the se
1d5d0 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20 74 6f  cond argument to
1d5e0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c   SQLITE_CONFIG_L
1d5f0 4f 47 20 69 73 0a 2a 2a 20 70 61 73 73 65 64 20  OG is.** passed 
1d600 74 68 72 6f 75 67 68 20 61 73 20 74 68 65 20 66  through as the f
1d610 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74  irst parameter t
1d620 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  o the applicatio
1d630 6e 2d 64 65 66 69 6e 65 64 20 6c 6f 67 67 65 72  n-defined logger
1d640 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 68 65  .** function whe
1d650 6e 65 76 65 72 20 74 68 61 74 20 66 75 6e 63 74  never that funct
1d660 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 2e 20  ion is invoked. 
1d670 20 5e 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72   ^The second par
1d680 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 74 68 65  ameter to.** the
1d690 20 6c 6f 67 67 65 72 20 66 75 6e 63 74 69 6f 6e   logger function
1d6a0 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68   is a copy of th
1d6b0 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
1d6c0 72 20 74 6f 20 74 68 65 20 63 6f 72 72 65 73 70  r to the corresp
1d6d0 6f 6e 64 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74  onding.** [sqlit
1d6e0 65 33 5f 6c 6f 67 28 29 5d 20 63 61 6c 6c 20 61  e3_log()] call a
1d6f0 6e 64 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74  nd is intended t
1d700 6f 20 62 65 20 61 20 5b 72 65 73 75 6c 74 20 63  o be a [result c
1d710 6f 64 65 5d 20 6f 72 20 61 6e 0a 2a 2a 20 5b 65  ode] or an.** [e
1d720 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
1d730 6f 64 65 5d 2e 20 20 5e 54 68 65 20 74 68 69 72  ode].  ^The thir
1d740 64 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  d parameter pass
1d750 65 64 20 74 6f 20 74 68 65 20 6c 6f 67 67 65 72  ed to the logger
1d760 20 69 73 0a 2a 2a 20 6c 6f 67 20 6d 65 73 73 61   is.** log messa
1d770 67 65 20 61 66 74 65 72 20 66 6f 72 6d 61 74 74  ge after formatt
1d780 69 6e 67 20 76 69 61 20 5b 73 71 6c 69 74 65 33  ing via [sqlite3
1d790 5f 73 6e 70 72 69 6e 74 66 28 29 5d 2e 0a 2a 2a  _snprintf()]..**
1d7a0 20 54 68 65 20 53 51 4c 69 74 65 20 6c 6f 67 67   The SQLite logg
1d7b0 69 6e 67 20 69 6e 74 65 72 66 61 63 65 20 69 73  ing interface is
1d7c0 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e 74 3b 20   not reentrant; 
1d7d0 74 68 65 20 6c 6f 67 67 65 72 20 66 75 6e 63 74  the logger funct
1d7e0 69 6f 6e 0a 2a 2a 20 73 75 70 70 6c 69 65 64 20  ion.** supplied 
1d7f0 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  by the applicati
1d800 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 69 6e 76 6f  on must not invo
1d810 6b 65 20 61 6e 79 20 53 51 4c 69 74 65 20 69 6e  ke any SQLite in
1d820 74 65 72 66 61 63 65 2e 0a 2a 2a 20 49 6e 20 61  terface..** In a
1d830 20 6d 75 6c 74 69 2d 74 68 72 65 61 64 65 64 20   multi-threaded 
1d840 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 74 68 65  application, the
1d850 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66   application-def
1d860 69 6e 65 64 20 6c 6f 67 67 65 72 0a 2a 2a 20 66  ined logger.** f
1d870 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20  unction must be 
1d880 74 68 72 65 61 64 73 61 66 65 2e 20 3c 2f 64 64  threadsafe. </dd
1d890 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
1d8a0 5f 43 4f 4e 46 49 47 5f 55 52 49 5d 5d 20 3c 64  _CONFIG_URI]] <d
1d8b0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1d8c0 55 52 49 0a 2a 2a 20 3c 64 64 3e 5e 28 54 68 65  URI.** <dd>^(The
1d8d0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 55   SQLITE_CONFIG_U
1d8e0 52 49 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20  RI option takes 
1d8f0 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e  a single argumen
1d900 74 20 6f 66 20 74 79 70 65 20 69 6e 74 2e 0a 2a  t of type int..*
1d910 2a 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f 2c 20 74  * If non-zero, t
1d920 68 65 6e 20 55 52 49 20 68 61 6e 64 6c 69 6e 67  hen URI handling
1d930 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20 65 6e 61   is globally ena
1d940 62 6c 65 64 2e 20 49 66 20 74 68 65 20 70 61 72  bled. If the par
1d950 61 6d 65 74 65 72 20 69 73 20 7a 65 72 6f 2c 0a  ameter is zero,.
1d960 2a 2a 20 74 68 65 6e 20 55 52 49 20 68 61 6e 64  ** then URI hand
1d970 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79  ling is globally
1d980 20 64 69 73 61 62 6c 65 64 2e 29 5e 20 5e 49 66   disabled.)^ ^If
1d990 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73   URI handling is
1d9a0 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 65 6e 61   globally.** ena
1d9b0 62 6c 65 64 2c 20 61 6c 6c 20 66 69 6c 65 6e 61  bled, all filena
1d9c0 6d 65 73 20 70 61 73 73 65 64 20 74 6f 20 5b 73  mes passed to [s
1d9d0 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 2c 20  qlite3_open()], 
1d9e0 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32  [sqlite3_open_v2
1d9f0 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ()],.** [sqlite3
1da00 5f 6f 70 65 6e 31 36 28 29 5d 20 6f 72 0a 2a 2a  _open16()] or.**
1da10 20 73 70 65 63 69 66 69 65 64 20 61 73 20 70 61   specified as pa
1da20 72 74 20 6f 66 20 5b 41 54 54 41 43 48 5d 20 63  rt of [ATTACH] c
1da30 6f 6d 6d 61 6e 64 73 20 61 72 65 20 69 6e 74 65  ommands are inte
1da40 72 70 72 65 74 65 64 20 61 73 20 55 52 49 73 2c  rpreted as URIs,
1da50 20 72 65 67 61 72 64 6c 65 73 73 0a 2a 2a 20 6f   regardless.** o
1da60 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
1da70 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45   the [SQLITE_OPE
1da80 4e 5f 55 52 49 5d 20 66 6c 61 67 20 69 73 20 73  N_URI] flag is s
1da90 65 74 20 77 68 65 6e 20 74 68 65 20 64 61 74 61  et when the data
1daa0 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69  base.** connecti
1dab0 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e 20 5e 49  on is opened. ^I
1dac0 66 20 69 74 20 69 73 20 67 6c 6f 62 61 6c 6c 79  f it is globally
1dad0 20 64 69 73 61 62 6c 65 64 2c 20 66 69 6c 65 6e   disabled, filen
1dae0 61 6d 65 73 20 61 72 65 0a 2a 2a 20 6f 6e 6c 79  ames are.** only
1daf0 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
1db00 55 52 49 73 20 69 66 20 74 68 65 20 53 51 4c 49  URIs if the SQLI
1db10 54 45 5f 4f 50 45 4e 5f 55 52 49 20 66 6c 61 67  TE_OPEN_URI flag
1db20 20 69 73 20 73 65 74 20 77 68 65 6e 20 74 68 65   is set when the
1db30 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e  .** database con
1db40 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65  nection is opene
1db50 64 2e 20 5e 28 42 79 20 64 65 66 61 75 6c 74 2c  d. ^(By default,
1db60 20 55 52 49 20 68 61 6e 64 6c 69 6e 67 20 69 73   URI handling is
1db70 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20 64 69 73   globally.** dis
1db80 61 62 6c 65 64 2e 20 54 68 65 20 64 65 66 61 75  abled. The defau
1db90 6c 74 20 76 61 6c 75 65 20 6d 61 79 20 62 65 20  lt value may be 
1dba0 63 68 61 6e 67 65 64 20 62 79 20 63 6f 6d 70 69  changed by compi
1dbb0 6c 69 6e 67 20 77 69 74 68 20 74 68 65 0a 2a 2a  ling with the.**
1dbc0 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49   [SQLITE_USE_URI
1dbd0 5d 20 73 79 6d 62 6f 6c 20 64 65 66 69 6e 65 64  ] symbol defined
1dbe0 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  .)^.**.** [[SQLI
1dbf0 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49  TE_CONFIG_COVERI
1dc00 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 5d 20  NG_INDEX_SCAN]] 
1dc10 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1dc20 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58  G_COVERING_INDEX
1dc30 5f 53 43 41 4e 0a 2a 2a 20 3c 64 64 3e 5e 54 68  _SCAN.** <dd>^Th
1dc40 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1dc50 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53  COVERING_INDEX_S
1dc60 43 41 4e 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  CAN option takes
1dc70 20 61 20 73 69 6e 67 6c 65 20 69 6e 74 65 67 65   a single intege
1dc80 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74 20 77 68  r.** argument wh
1dc90 69 63 68 20 69 73 20 69 6e 74 65 72 70 72 65 74  ich is interpret
1dca0 65 64 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 20  ed as a boolean 
1dcb0 69 6e 20 6f 72 64 65 72 20 74 6f 20 65 6e 61 62  in order to enab
1dcc0 6c 65 20 6f 72 20 64 69 73 61 62 6c 65 0a 2a 2a  le or disable.**
1dcd0 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f 76 65   the use of cove
1dce0 72 69 6e 67 20 69 6e 64 69 63 65 73 20 66 6f 72  ring indices for
1dcf0 20 66 75 6c 6c 20 74 61 62 6c 65 20 73 63 61 6e   full table scan
1dd00 73 20 69 6e 20 74 68 65 20 71 75 65 72 79 20 6f  s in the query o
1dd10 70 74 69 6d 69 7a 65 72 2e 0a 2a 2a 20 5e 54 68  ptimizer..** ^Th
1dd20 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
1dd30 67 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a  g is determined.
1dd40 2a 2a 20 62 79 20 74 68 65 20 5b 53 51 4c 49 54  ** by the [SQLIT
1dd50 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52 49 4e 47  E_ALLOW_COVERING
1dd60 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20 63 6f 6d  _INDEX_SCAN] com
1dd70 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1dd80 2c 20 6f 72 20 69 73 20 22 6f 6e 22 0a 2a 2a 20  , or is "on".** 
1dd90 69 66 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d  if that compile-
1dda0 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20 6f  time option is o
1ddb0 6d 69 74 74 65 64 2e 0a 2a 2a 20 54 68 65 20 61  mitted..** The a
1ddc0 62 69 6c 69 74 79 20 74 6f 20 64 69 73 61 62 6c  bility to disabl
1ddd0 65 20 74 68 65 20 75 73 65 20 6f 66 20 63 6f 76  e the use of cov
1dde0 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20 66 6f  ering indices fo
1ddf0 72 20 66 75 6c 6c 20 74 61 62 6c 65 20 73 63 61  r full table sca
1de00 6e 73 0a 2a 2a 20 69 73 20 62 65 63 61 75 73 65  ns.** is because
1de10 20 73 6f 6d 65 20 69 6e 63 6f 72 72 65 63 74 6c   some incorrectl
1de20 79 20 63 6f 64 65 64 20 6c 65 67 61 63 79 20 61  y coded legacy a
1de30 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d 69 67 68  pplications migh
1de40 74 20 6d 61 6c 66 75 6e 63 74 69 6f 6e 0a 2a 2a  t malfunction.**
1de50 20 77 68 65 6e 20 74 68 65 20 6f 70 74 69 6d 69   when the optimi
1de60 7a 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65  zation is enable
1de70 64 2e 20 20 50 72 6f 76 69 64 69 6e 67 20 74 68  d.  Providing th
1de80 65 20 61 62 69 6c 69 74 79 20 74 6f 0a 2a 2a 20  e ability to.** 
1de90 64 69 73 61 62 6c 65 20 74 68 65 20 6f 70 74 69  disable the opti
1dea0 6d 69 7a 61 74 69 6f 6e 20 61 6c 6c 6f 77 73 20  mization allows 
1deb0 74 68 65 20 6f 6c 64 65 72 2c 20 62 75 67 67 79  the older, buggy
1dec0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 63 6f 64   application cod
1ded0 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20 77 69 74  e to work.** wit
1dee0 68 6f 75 74 20 63 68 61 6e 67 65 20 65 76 65 6e  hout change even
1def0 20 77 69 74 68 20 6e 65 77 65 72 20 76 65 72 73   with newer vers
1df00 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
1df10 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43  **.** [[SQLITE_C
1df20 4f 4e 46 49 47 5f 50 43 41 43 48 45 5d 5d 20 5b  ONFIG_PCACHE]] [
1df30 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47  [SQLITE_CONFIG_G
1df40 45 54 50 43 41 43 48 45 5d 5d 0a 2a 2a 20 3c 64  ETPCACHE]].** <d
1df50 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1df60 50 43 41 43 48 45 20 61 6e 64 20 53 51 4c 49 54  PCACHE and SQLIT
1df70 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50 43 41 43  E_CONFIG_GETPCAC
1df80 48 45 0a 2a 2a 20 3c 64 64 3e 20 54 68 65 73 65  HE.** <dd> These
1df90 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 6f 62 73   options are obs
1dfa0 6f 6c 65 74 65 20 61 6e 64 20 73 68 6f 75 6c 64  olete and should
1dfb0 20 6e 6f 74 20 62 65 20 75 73 65 64 20 62 79 20   not be used by 
1dfc0 6e 65 77 20 63 6f 64 65 2e 0a 2a 2a 20 54 68 65  new code..** The
1dfd0 79 20 61 72 65 20 72 65 74 61 69 6e 65 64 20 66  y are retained f
1dfe0 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  or backwards com
1dff0 70 61 74 69 62 69 6c 69 74 79 20 62 75 74 20 61  patibility but a
1e000 72 65 20 6e 6f 77 20 6e 6f 2d 6f 70 73 2e 0a 2a  re now no-ops..*
1e010 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
1e020 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51  SQLITE_CONFIG_SQ
1e030 4c 4c 4f 47 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  LLOG]].** <dt>SQ
1e040 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 51 4c 4c  LITE_CONFIG_SQLL
1e050 4f 47 0a 2a 2a 20 3c 64 64 3e 54 68 69 73 20 6f  OG.** <dd>This o
1e060 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 61 76  ption is only av
1e070 61 69 6c 61 62 6c 65 20 69 66 20 73 71 6c 69 74  ailable if sqlit
1e080 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1e090 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54  th the.** [SQLIT
1e0a0 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c 4f 47 5d  E_ENABLE_SQLLOG]
1e0b0 20 70 72 65 2d 70 72 6f 63 65 73 73 6f 72 20 6d   pre-processor m
1e0c0 61 63 72 6f 20 64 65 66 69 6e 65 64 2e 20 54 68  acro defined. Th
1e0d0 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
1e0e0 20 73 68 6f 75 6c 64 0a 2a 2a 20 62 65 20 61 20   should.** be a 
1e0f0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 66 75 6e  pointer to a fun
1e100 63 74 69 6f 6e 20 6f 66 20 74 79 70 65 20 76 6f  ction of type vo
1e110 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73 71 6c 69  id(*)(void*,sqli
1e120 74 65 33 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  te3*,const char*
1e130 2c 20 69 6e 74 29 2e 0a 2a 2a 20 54 68 65 20 73  , int)..** The s
1e140 65 63 6f 6e 64 20 73 68 6f 75 6c 64 20 62 65 20  econd should be 
1e150 6f 66 20 74 79 70 65 20 28 76 6f 69 64 2a 29 2e  of type (void*).
1e160 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73   The callback is
1e170 20 69 6e 76 6f 6b 65 64 20 62 79 20 74 68 65 20   invoked by the 
1e180 6c 69 62 72 61 72 79 0a 2a 2a 20 69 6e 20 74 68  library.** in th
1e190 72 65 65 20 73 65 70 61 72 61 74 65 20 63 69 72  ree separate cir
1e1a0 63 75 6d 73 74 61 6e 63 65 73 2c 20 69 64 65 6e  cumstances, iden
1e1b0 74 69 66 69 65 64 20 62 79 20 74 68 65 20 76 61  tified by the va
1e1c0 6c 75 65 20 70 61 73 73 65 64 20 61 73 20 74 68  lue passed as th
1e1d0 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70 61 72 61  e.** fourth para
1e1e0 6d 65 74 65 72 2e 20 49 66 20 74 68 65 20 66 6f  meter. If the fo
1e1f0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
1e200 73 20 30 2c 20 74 68 65 6e 20 74 68 65 20 64 61  s 0, then the da
1e210 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
1e220 6e 0a 2a 2a 20 70 61 73 73 65 64 20 61 73 20 74  n.** passed as t
1e230 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
1e240 6e 74 20 68 61 73 20 6a 75 73 74 20 62 65 65 6e  nt has just been
1e250 20 6f 70 65 6e 65 64 2e 20 54 68 65 20 74 68 69   opened. The thi
1e260 72 64 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 70  rd argument.** p
1e270 6f 69 6e 74 73 20 74 6f 20 61 20 62 75 66 66 65  oints to a buffe
1e280 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65  r containing the
1e290 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 61 69   name of the mai
1e2a0 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  n database file.
1e2b0 20 49 66 20 74 68 65 0a 2a 2a 20 66 6f 75 72 74   If the.** fourt
1e2c0 68 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 31  h parameter is 1
1e2d0 2c 20 74 68 65 6e 20 74 68 65 20 53 51 4c 20 73  , then the SQL s
1e2e0 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20 74 68  tatement that th
1e2f0 65 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65  e third paramete
1e300 72 0a 2a 2a 20 70 6f 69 6e 74 73 20 74 6f 20 68  r.** points to h
1e310 61 73 20 6a 75 73 74 20 62 65 65 6e 20 65 78 65  as just been exe
1e320 63 75 74 65 64 2e 20 4f 72 2c 20 69 66 20 74 68  cuted. Or, if th
1e330 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
1e340 65 72 20 69 73 20 32 2c 20 74 68 65 6e 0a 2a 2a  er is 2, then.**
1e350 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   the connection 
1e360 62 65 69 6e 67 20 70 61 73 73 65 64 20 61 73 20  being passed as 
1e370 74 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  the second param
1e380 65 74 65 72 20 69 73 20 62 65 69 6e 67 20 63 6c  eter is being cl
1e390 6f 73 65 64 2e 20 54 68 65 0a 2a 2a 20 74 68 69  osed. The.** thi
1e3a0 72 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  rd parameter is 
1e3b0 70 61 73 73 65 64 20 4e 55 4c 4c 20 49 6e 20 74  passed NULL In t
1e3c0 68 69 73 20 63 61 73 65 2e 20 20 41 6e 20 65 78  his case.  An ex
1e3d0 61 6d 70 6c 65 20 6f 66 20 75 73 69 6e 67 20 74  ample of using t
1e3e0 68 69 73 0a 2a 2a 20 63 6f 6e 66 69 67 75 72 61  his.** configura
1e3f0 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 63 61 6e 20  tion option can 
1e400 62 65 20 73 65 65 6e 20 69 6e 20 74 68 65 20 22  be seen in the "
1e410 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63 22 20 73  test_sqllog.c" s
1e420 6f 75 72 63 65 20 66 69 6c 65 20 69 6e 0a 2a 2a  ource file in.**
1e430 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c 20 53   the canonical S
1e440 51 4c 69 74 65 20 73 6f 75 72 63 65 20 74 72 65  QLite source tre
1e450 65 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  e.</dd>.**.** [[
1e460 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d  SQLITE_CONFIG_MM
1e470 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64 74  AP_SIZE]].** <dt
1e480 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  >SQLITE_CONFIG_M
1e490 4d 41 50 5f 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e  MAP_SIZE.** <dd>
1e4a0 5e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d  ^SQLITE_CONFIG_M
1e4b0 4d 41 50 5f 53 49 5a 45 20 74 61 6b 65 73 20 74  MAP_SIZE takes t
1e4c0 77 6f 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65  wo 64-bit intege
1e4d0 72 20 28 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  r (sqlite3_int64
1e4e0 29 20 76 61 6c 75 65 73 0a 2a 2a 20 74 68 61 74  ) values.** that
1e4f0 20 61 72 65 20 74 68 65 20 64 65 66 61 75 6c 74   are the default
1e500 20 6d 6d 61 70 20 73 69 7a 65 20 6c 69 6d 69 74   mmap size limit
1e510 20 28 74 68 65 20 64 65 66 61 75 6c 74 20 73 65   (the default se
1e520 74 74 69 6e 67 20 66 6f 72 0a 2a 2a 20 5b 50 52  tting for.** [PR
1e530 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a 65 5d 29  AGMA mmap_size])
1e540 20 61 6e 64 20 74 68 65 20 6d 61 78 69 6d 75 6d   and the maximum
1e550 20 61 6c 6c 6f 77 65 64 20 6d 6d 61 70 20 73 69   allowed mmap si
1e560 7a 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20 5e 54 68  ze limit..** ^Th
1e570 65 20 64 65 66 61 75 6c 74 20 73 65 74 74 69 6e  e default settin
1e580 67 20 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64  g can be overrid
1e590 64 65 6e 20 62 79 20 65 61 63 68 20 64 61 74 61  den by each data
1e5a0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
1e5b0 75 73 69 6e 67 0a 2a 2a 20 65 69 74 68 65 72 20  using.** either 
1e5c0 74 68 65 20 5b 50 52 41 47 4d 41 20 6d 6d 61 70  the [PRAGMA mmap
1e5d0 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e 64 2c 20  _size] command, 
1e5e0 6f 72 20 62 79 20 75 73 69 6e 67 20 74 68 65 0a  or by using the.
1e5f0 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ** [SQLITE_FCNTL
1e600 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66 69 6c 65  _MMAP_SIZE] file
1e610 20 63 6f 6e 74 72 6f 6c 2e 20 20 5e 28 54 68 65   control.  ^(The
1e620 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f 77 65 64   maximum allowed
1e630 20 6d 6d 61 70 20 73 69 7a 65 0a 2a 2a 20 77 69   mmap size.** wi
1e640 6c 6c 20 62 65 20 73 69 6c 65 6e 74 6c 79 20 74  ll be silently t
1e650 72 75 6e 63 61 74 65 64 20 69 66 20 6e 65 63 65  runcated if nece
1e660 73 73 61 72 79 20 73 6f 20 74 68 61 74 20 69 74  ssary so that it
1e670 20 64 6f 65 73 20 6e 6f 74 20 65 78 63 65 65 64   does not exceed
1e680 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 69 6c 65 2d   the.** compile-
1e690 74 69 6d 65 20 6d 61 78 69 6d 75 6d 20 6d 6d 61  time maximum mma
1e6a0 70 20 73 69 7a 65 20 73 65 74 20 62 79 20 74 68  p size set by th
1e6b0 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4d 41 58  e.** [SQLITE_MAX
1e6c0 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63 6f 6d 70  _MMAP_SIZE] comp
1e6d0 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 2e  ile-time option.
1e6e0 29 5e 0a 2a 2a 20 5e 49 66 20 65 69 74 68 65 72  )^.** ^If either
1e6f0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69   argument to thi
1e700 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e 65 67 61  s option is nega
1e710 74 69 76 65 2c 20 74 68 65 6e 20 74 68 61 74 20  tive, then that 
1e720 61 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a 20 63  argument is.** c
1e730 68 61 6e 67 65 64 20 74 6f 20 69 74 73 20 63 6f  hanged to its co
1e740 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65 66 61 75  mpile-time defau
1e750 6c 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  lt..**.** [[SQLI
1e760 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f  TE_CONFIG_WIN32_
1e770 48 45 41 50 53 49 5a 45 5d 5d 0a 2a 2a 20 3c 64  HEAPSIZE]].** <d
1e780 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1e790 57 49 4e 33 32 5f 48 45 41 50 53 49 5a 45 0a 2a  WIN32_HEAPSIZE.*
1e7a0 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54  * <dd>^The SQLIT
1e7b0 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48  E_CONFIG_WIN32_H
1e7c0 45 41 50 53 49 5a 45 20 6f 70 74 69 6f 6e 20 69  EAPSIZE option i
1e7d0 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65  s only available
1e7e0 20 69 66 20 53 51 4c 69 74 65 20 69 73 0a 2a 2a   if SQLite is.**
1e7f0 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 57 69   compiled for Wi
1e800 6e 64 6f 77 73 20 77 69 74 68 20 74 68 65 20 5b  ndows with the [
1e810 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f 4d 41 4c  SQLITE_WIN32_MAL
1e820 4c 4f 43 5d 20 70 72 65 2d 70 72 6f 63 65 73 73  LOC] pre-process
1e830 6f 72 20 6d 61 63 72 6f 0a 2a 2a 20 64 65 66 69  or macro.** defi
1e840 6e 65 64 2e 20 5e 53 51 4c 49 54 45 5f 43 4f 4e  ned. ^SQLITE_CON
1e850 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49  FIG_WIN32_HEAPSI
1e860 5a 45 20 74 61 6b 65 73 20 61 20 33 32 2d 62 69  ZE takes a 32-bi
1e870 74 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67  t unsigned integ
1e880 65 72 20 76 61 6c 75 65 0a 2a 2a 20 74 68 61 74  er value.** that
1e890 20 73 70 65 63 69 66 69 65 73 20 74 68 65 20 6d   specifies the m
1e8a0 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 74  aximum size of t
1e8b0 68 65 20 63 72 65 61 74 65 64 20 68 65 61 70 2e  he created heap.
1e8c0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
1e8d0 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44  CONFIG_PCACHE_HD
1e8e0 52 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c  RSZ]].** <dt>SQL
1e8f0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1e900 45 5f 48 44 52 53 5a 0a 2a 2a 20 3c 64 64 3e 5e  E_HDRSZ.** <dd>^
1e910 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1e920 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a 20 6f  G_PCACHE_HDRSZ o
1e930 70 74 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69  ption takes a si
1e940 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77  ngle parameter w
1e950 68 69 63 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69  hich.** is a poi
1e960 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
1e970 65 72 20 61 6e 64 20 77 72 69 74 65 73 20 69 6e  er and writes in
1e980 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65 72 20  to that integer 
1e990 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 78  the number of ex
1e9a0 74 72 61 0a 2a 2a 20 62 79 74 65 73 20 70 65 72  tra.** bytes per
1e9b0 20 70 61 67 65 20 72 65 71 75 69 72 65 64 20 66   page required f
1e9c0 6f 72 20 65 61 63 68 20 70 61 67 65 20 69 6e 20  or each page in 
1e9d0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1e9e0 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a 20 54 68  AGECACHE]..** Th
1e9f0 65 20 61 6d 6f 75 6e 74 20 6f 66 20 65 78 74 72  e amount of extr
1ea00 61 20 73 70 61 63 65 20 72 65 71 75 69 72 65 64  a space required
1ea10 20 63 61 6e 20 63 68 61 6e 67 65 20 64 65 70 65   can change depe
1ea20 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6d  nding on the com
1ea30 70 69 6c 65 72 2c 0a 2a 2a 20 74 61 72 67 65 74  piler,.** target
1ea40 20 70 6c 61 74 66 6f 72 6d 2c 20 61 6e 64 20 53   platform, and S
1ea50 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 2e 0a 2a  QLite version..*
1ea60 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1ea70 4e 46 49 47 5f 50 4d 41 53 5a 5d 5d 0a 2a 2a 20  NFIG_PMASZ]].** 
1ea80 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1ea90 47 5f 50 4d 41 53 5a 0a 2a 2a 20 3c 64 64 3e 5e  G_PMASZ.** <dd>^
1eaa0 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1eab0 47 5f 50 4d 41 53 5a 20 6f 70 74 69 6f 6e 20 74  G_PMASZ option t
1eac0 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61  akes a single pa
1ead0 72 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a  rameter which.**
1eae0 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20   is an unsigned 
1eaf0 69 6e 74 65 67 65 72 20 61 6e 64 20 73 65 74 73  integer and sets
1eb00 20 74 68 65 20 22 4d 69 6e 69 6d 75 6d 20 50 4d   the "Minimum PM
1eb10 41 20 53 69 7a 65 22 20 66 6f 72 20 74 68 65 20  A Size" for the 
1eb20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 0a 2a 2a  multithreaded.**
1eb30 20 73 6f 72 74 65 72 20 74 6f 20 74 68 61 74 20   sorter to that 
1eb40 69 6e 74 65 67 65 72 2e 20 20 54 68 65 20 64 65  integer.  The de
1eb50 66 61 75 6c 74 20 6d 69 6e 69 6d 75 6d 20 50 4d  fault minimum PM
1eb60 41 20 53 69 7a 65 20 69 73 20 73 65 74 20 62 79  A Size is set by
1eb70 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1eb80 53 4f 52 54 45 52 5f 50 4d 41 53 5a 5d 20 63 6f  SORTER_PMASZ] co
1eb90 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
1eba0 6e 2e 20 20 4e 65 77 20 74 68 72 65 61 64 73 20  n.  New threads 
1ebb0 61 72 65 20 6c 61 75 6e 63 68 65 64 0a 2a 2a 20  are launched.** 
1ebc0 74 6f 20 68 65 6c 70 20 77 69 74 68 20 73 6f 72  to help with sor
1ebd0 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 68 65  t operations whe
1ebe0 6e 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64 20  n multithreaded 
1ebf0 73 6f 72 74 69 6e 67 0a 2a 2a 20 69 73 20 65 6e  sorting.** is en
1ec00 61 62 6c 65 64 20 28 75 73 69 6e 67 20 74 68 65  abled (using the
1ec10 20 5b 50 52 41 47 4d 41 20 74 68 72 65 61 64 73   [PRAGMA threads
1ec20 5d 20 63 6f 6d 6d 61 6e 64 29 20 61 6e 64 20 74  ] command) and t
1ec30 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 63 6f 6e  he amount of con
1ec40 74 65 6e 74 0a 2a 2a 20 74 6f 20 62 65 20 73 6f  tent.** to be so
1ec50 72 74 65 64 20 65 78 63 65 65 64 73 20 74 68 65  rted exceeds the
1ec60 20 70 61 67 65 20 73 69 7a 65 20 74 69 6d 65 73   page size times
1ec70 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6f 66 20   the minimum of 
1ec80 74 68 65 0a 2a 2a 20 5b 50 52 41 47 4d 41 20 63  the.** [PRAGMA c
1ec90 61 63 68 65 5f 73 69 7a 65 5d 20 73 65 74 74 69  ache_size] setti
1eca0 6e 67 20 61 6e 64 20 74 68 69 73 20 76 61 6c 75  ng and this valu
1ecb0 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  e..**.** [[SQLIT
1ecc0 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e  E_CONFIG_STMTJRN
1ecd0 4c 5f 53 50 49 4c 4c 5d 5d 0a 2a 2a 20 3c 64 74  L_SPILL]].** <dt
1ece0 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  >SQLITE_CONFIG_S
1ecf0 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c 0a 2a 2a  TMTJRNL_SPILL.**
1ed00 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c 49 54 45   <dd>^The SQLITE
1ed10 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c  _CONFIG_STMTJRNL
1ed20 5f 53 50 49 4c 4c 20 6f 70 74 69 6f 6e 20 74 61  _SPILL option ta
1ed30 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 70 61 72  kes a single par
1ed40 61 6d 65 74 65 72 20 77 68 69 63 68 0a 2a 2a 20  ameter which.** 
1ed50 62 65 63 6f 6d 65 73 20 74 68 65 20 5b 73 74 61  becomes the [sta
1ed60 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c 5d 20  tement journal] 
1ed70 73 70 69 6c 6c 2d 74 6f 2d 64 69 73 6b 20 74 68  spill-to-disk th
1ed80 72 65 73 68 6f 6c 64 2e 20 20 0a 2a 2a 20 5b 53  reshold.  .** [S
1ed90 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c  tatement journal
1eda0 73 5d 20 61 72 65 20 68 65 6c 64 20 69 6e 20 6d  s] are held in m
1edb0 65 6d 6f 72 79 20 75 6e 74 69 6c 20 74 68 65 69  emory until thei
1edc0 72 20 73 69 7a 65 20 28 69 6e 20 62 79 74 65 73  r size (in bytes
1edd0 29 0a 2a 2a 20 65 78 63 65 65 64 73 20 74 68 69  ).** exceeds thi
1ede0 73 20 74 68 72 65 73 68 6f 6c 64 2c 20 61 74 20  s threshold, at 
1edf0 77 68 69 63 68 20 70 6f 69 6e 74 20 74 68 65 79  which point they
1ee00 20 61 72 65 20 77 72 69 74 74 65 6e 20 74 6f 20   are written to 
1ee10 64 69 73 6b 2e 0a 2a 2a 20 4f 72 20 69 66 20 74  disk..** Or if t
1ee20 68 65 20 74 68 72 65 73 68 6f 6c 64 20 69 73 20  he threshold is 
1ee30 2d 31 2c 20 73 74 61 74 65 6d 65 6e 74 20 6a 6f  -1, statement jo
1ee40 75 72 6e 61 6c 73 20 61 72 65 20 61 6c 77 61 79  urnals are alway
1ee50 73 20 68 65 6c 64 0a 2a 2a 20 65 78 63 6c 75 73  s held.** exclus
1ee60 69 76 65 6c 79 20 69 6e 20 6d 65 6d 6f 72 79 2e  ively in memory.
1ee70 0a 2a 2a 20 53 69 6e 63 65 20 6d 61 6e 79 20 73  .** Since many s
1ee80 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61 6c  tatement journal
1ee90 73 20 6e 65 76 65 72 20 62 65 63 6f 6d 65 20 6c  s never become l
1eea0 61 72 67 65 2c 20 73 65 74 74 69 6e 67 20 74 68  arge, setting th
1eeb0 65 20 73 70 69 6c 6c 0a 2a 2a 20 74 68 72 65 73  e spill.** thres
1eec0 68 6f 6c 64 20 74 6f 20 61 20 76 61 6c 75 65 20  hold to a value 
1eed0 73 75 63 68 20 61 73 20 36 34 4b 69 42 20 63 61  such as 64KiB ca
1eee0 6e 20 67 72 65 61 74 6c 79 20 72 65 64 75 63 65  n greatly reduce
1eef0 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 0a 2a   the amount of.*
1ef00 2a 20 49 2f 4f 20 72 65 71 75 69 72 65 64 20 74  * I/O required t
1ef10 6f 20 73 75 70 70 6f 72 74 20 73 74 61 74 65 6d  o support statem
1ef20 65 6e 74 20 72 6f 6c 6c 62 61 63 6b 2e 0a 2a 2a  ent rollback..**
1ef30 20 54 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c   The default val
1ef40 75 65 20 66 6f 72 20 74 68 69 73 20 73 65 74 74  ue for this sett
1ef50 69 6e 67 20 69 73 20 63 6f 6e 74 72 6f 6c 6c 65  ing is controlle
1ef60 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c  d by the.** [SQL
1ef70 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49  ITE_STMTJRNL_SPI
1ef80 4c 4c 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  LL] compile-time
1ef90 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 5b   option..**.** [
1efa0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
1efb0 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 5d 5d 0a  ORTERREF_SIZE]].
1efc0 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ** <dt>SQLITE_CO
1efd0 4e 46 49 47 5f 53 4f 52 54 45 52 52 45 46 5f 53  NFIG_SORTERREF_S
1efe0 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53  IZE.** <dd>The S
1eff0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4f 52  QLITE_CONFIG_SOR
1f000 54 45 52 52 45 46 5f 53 49 5a 45 20 6f 70 74 69  TERREF_SIZE opti
1f010 6f 6e 20 61 63 63 65 70 74 73 20 61 20 73 69 6e  on accepts a sin
1f020 67 6c 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a  gle parameter.**
1f030 20 6f 66 20 74 79 70 65 20 28 69 6e 74 29 20 2d   of type (int) -
1f040 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 20 6f   the new value o
1f050 66 20 74 68 65 20 73 6f 72 74 65 72 2d 72 65 66  f the sorter-ref
1f060 65 72 65 6e 63 65 20 73 69 7a 65 20 74 68 72 65  erence size thre
1f070 73 68 6f 6c 64 2e 0a 2a 2a 20 55 73 75 61 6c 6c  shold..** Usuall
1f080 79 2c 20 77 68 65 6e 20 53 51 4c 69 74 65 20 75  y, when SQLite u
1f090 73 65 73 20 61 6e 20 65 78 74 65 72 6e 61 6c 20  ses an external 
1f0a0 73 6f 72 74 20 74 6f 20 6f 72 64 65 72 20 72 65  sort to order re
1f0b0 63 6f 72 64 73 20 61 63 63 6f 72 64 69 6e 67 0a  cords according.
1f0c0 2a 2a 20 74 6f 20 61 6e 20 4f 52 44 45 52 20 42  ** to an ORDER B
1f0d0 59 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 66 69  Y clause, all fi
1f0e0 65 6c 64 73 20 72 65 71 75 69 72 65 64 20 62 79  elds required by
1f0f0 20 74 68 65 20 63 61 6c 6c 65 72 20 61 72 65 20   the caller are 
1f100 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 0a 2a  present in the.*
1f110 2a 20 73 6f 72 74 65 64 20 72 65 63 6f 72 64 73  * sorted records
1f120 2e 20 48 6f 77 65 76 65 72 2c 20 69 66 20 53 51  . However, if SQ
1f130 4c 69 74 65 20 64 65 74 65 72 6d 69 6e 65 73 20  Lite determines 
1f140 62 61 73 65 64 20 6f 6e 20 74 68 65 20 64 65 63  based on the dec
1f150 6c 61 72 65 64 20 74 79 70 65 0a 2a 2a 20 6f 66  lared type.** of
1f160 20 61 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20   a table column 
1f170 74 68 61 74 20 69 74 73 20 76 61 6c 75 65 73 20  that its values 
1f180 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65  are likely to be
1f190 20 76 65 72 79 20 6c 61 72 67 65 20 2d 20 6c 61   very large - la
1f1a0 72 67 65 72 0a 2a 2a 20 74 68 61 6e 20 74 68 65  rger.** than the
1f1b0 20 63 6f 6e 66 69 67 75 72 65 64 20 73 6f 72 74   configured sort
1f1c0 65 72 2d 72 65 66 65 72 65 6e 63 65 20 73 69 7a  er-reference siz
1f1d0 65 20 74 68 72 65 73 68 6f 6c 64 20 2d 20 74 68  e threshold - th
1f1e0 65 6e 20 61 20 72 65 66 65 72 65 6e 63 65 0a 2a  en a reference.*
1f1f0 2a 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 65  * is stored in e
1f200 61 63 68 20 73 6f 72 74 65 64 20 72 65 63 6f 72  ach sorted recor
1f210 64 20 61 6e 64 20 74 68 65 20 72 65 71 75 69 72  d and the requir
1f220 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c 75 65 73  ed column values
1f230 20 6c 6f 61 64 65 64 0a 2a 2a 20 66 72 6f 6d 20   loaded.** from 
1f240 74 68 65 20 64 61 74 61 62 61 73 65 20 61 73 20  the database as 
1f250 72 65 63 6f 72 64 73 20 61 72 65 20 72 65 74 75  records are retu
1f260 72 6e 65 64 20 69 6e 20 73 6f 72 74 65 64 20 6f  rned in sorted o
1f270 72 64 65 72 2e 20 54 68 65 20 64 65 66 61 75 6c  rder. The defaul
1f280 74 0a 2a 2a 20 76 61 6c 75 65 20 66 6f 72 20 74  t.** value for t
1f290 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 74 6f  his option is to
1f2a0 20 6e 65 76 65 72 20 75 73 65 20 74 68 69 73 20   never use this 
1f2b0 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e 20 53 70  optimization. Sp
1f2c0 65 63 69 66 79 69 6e 67 20 61 20 0a 2a 2a 20 6e  ecifying a .** n
1f2d0 65 67 61 74 69 76 65 20 76 61 6c 75 65 20 66 6f  egative value fo
1f2e0 72 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 72 65  r this option re
1f2f0 73 74 6f 72 65 73 20 74 68 65 20 64 65 66 61 75  stores the defau
1f300 6c 74 20 62 65 68 61 76 69 6f 75 72 2e 0a 2a 2a  lt behaviour..**
1f310 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20   This option is 
1f320 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69  only available i
1f330 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  f SQLite is comp
1f340 69 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a  iled with the.**
1f350 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f   [SQLITE_ENABLE_
1f360 53 4f 52 54 45 52 5f 52 45 46 45 52 45 4e 43 45  SORTER_REFERENCE
1f370 53 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  S] compile-time 
1f380 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 3c 2f 64 6c 3e  option..** </dl>
1f390 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
1f3a0 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
1f3b0 54 48 52 45 41 44 20 20 31 20 20 2f 2a 20 6e 69  THREAD  1  /* ni
1f3c0 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  l */.#define SQL
1f3d0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
1f3e0 54 48 52 45 41 44 20 20 20 32 20 20 2f 2a 20 6e  THREAD   2  /* n
1f3f0 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  il */.#define SQ
1f400 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
1f410 41 4c 49 5a 45 44 20 20 20 20 33 20 20 2f 2a 20  ALIZED    3  /* 
1f420 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nil */.#define S
1f430 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
1f440 4c 4f 43 20 20 20 20 20 20 20 20 34 20 20 2f 2a  LOC        4  /*
1f450 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
1f460 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  hods* */.#define
1f470 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1f480 45 54 4d 41 4c 4c 4f 43 20 20 20 20 20 35 20 20  ETMALLOC     5  
1f490 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  /* sqlite3_mem_m
1f4a0 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69  ethods* */.#defi
1f4b0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1f4c0 5f 53 43 52 41 54 43 48 20 20 20 20 20 20 20 36  _SCRATCH       6
1f4d0 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75    /* No longer u
1f4e0 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  sed */.#define S
1f4f0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
1f500 45 43 41 43 48 45 20 20 20 20 20 37 20 20 2f 2a  ECACHE     7  /*
1f510 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20   void*, int sz, 
1f520 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66 69 6e 65  int N */.#define
1f530 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48   SQLITE_CONFIG_H
1f540 45 41 50 20 20 20 20 20 20 20 20 20 20 38 20 20  EAP          8  
1f550 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42  /* void*, int nB
1f560 79 74 65 2c 20 69 6e 74 20 6d 69 6e 20 2a 2f 0a  yte, int min */.
1f570 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1f580 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20  ONFIG_MEMSTATUS 
1f590 20 20 20 20 39 20 20 2f 2a 20 62 6f 6f 6c 65 61      9  /* boolea
1f5a0 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  n */.#define SQL
1f5b0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
1f5c0 20 20 20 20 20 20 20 20 31 30 20 20 2f 2a 20 73          10  /* s
1f5d0 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74  qlite3_mutex_met
1f5e0 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  hods* */.#define
1f5f0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1f600 45 54 4d 55 54 45 58 20 20 20 20 20 31 31 20 20  ETMUTEX     11  
1f610 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  /* sqlite3_mutex
1f620 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 2f 2a 20  _methods* */./* 
1f630 70 72 65 76 69 6f 75 73 6c 79 20 53 51 4c 49 54  previously SQLIT
1f640 45 5f 43 4f 4e 46 49 47 5f 43 48 55 4e 4b 41 4c  E_CONFIG_CHUNKAL
1f650 4c 4f 43 20 31 32 20 77 68 69 63 68 20 69 73 20  LOC 12 which is 
1f660 6e 6f 77 20 75 6e 75 73 65 64 2e 20 2a 2f 20 0a  now unused. */ .
1f670 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1f680 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
1f690 20 20 20 31 33 20 20 2f 2a 20 69 6e 74 20 69 6e     13  /* int in
1f6a0 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  t */.#define SQL
1f6b0 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1f6c0 45 20 20 20 20 20 20 20 31 34 20 20 2f 2a 20 6e  E       14  /* n
1f6d0 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e 65 20  o-op */.#define 
1f6e0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1f6f0 54 50 43 41 43 48 45 20 20 20 20 31 35 20 20 2f  TPCACHE    15  /
1f700 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69  * no-op */.#defi
1f710 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1f720 5f 4c 4f 47 20 20 20 20 20 20 20 20 20 20 31 36  _LOG          16
1f730 20 20 2f 2a 20 78 46 75 6e 63 2c 20 76 6f 69 64    /* xFunc, void
1f740 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1f750 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 20  ITE_CONFIG_URI  
1f760 20 20 20 20 20 20 20 20 31 37 20 20 2f 2a 20 69          17  /* i
1f770 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
1f780 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1f790 48 45 32 20 20 20 20 20 20 31 38 20 20 2f 2a 20  HE2      18  /* 
1f7a0 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d  sqlite3_pcache_m
1f7b0 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66  ethods2* */.#def
1f7c0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1f7d0 47 5f 47 45 54 50 43 41 43 48 45 32 20 20 20 31  G_GETPCACHE2   1
1f7e0 39 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 70 63  9  /* sqlite3_pc
1f7f0 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 20 2a  ache_methods2* *
1f800 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1f810 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
1f820 5f 49 4e 44 45 58 5f 53 43 41 4e 20 32 30 20 20  _INDEX_SCAN 20  
1f830 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e  /* int */.#defin
1f840 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1f850 53 51 4c 4c 4f 47 20 20 20 20 20 20 20 32 31 20  SQLLOG       21 
1f860 20 2f 2a 20 78 53 71 6c 6c 6f 67 2c 20 76 6f 69   /* xSqllog, voi
1f870 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  d* */.#define SQ
1f880 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50  LITE_CONFIG_MMAP
1f890 5f 53 49 5a 45 20 20 20 20 32 32 20 20 2f 2a 20  _SIZE    22  /* 
1f8a0 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c 20 73  sqlite3_int64, s
1f8b0 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 2f 0a  qlite3_int64 */.
1f8c0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1f8d0 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
1f8e0 53 49 5a 45 20 20 20 20 20 20 32 33 20 20 2f 2a  SIZE      23  /*
1f8f0 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64   int nByte */.#d
1f900 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1f910 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a  FIG_PCACHE_HDRSZ
1f920 20 20 20 20 20 20 20 20 32 34 20 20 2f 2a 20 69          24  /* i
1f930 6e 74 20 2a 70 73 7a 20 2a 2f 0a 23 64 65 66 69  nt *psz */.#defi
1f940 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1f950 5f 50 4d 41 53 5a 20 20 20 20 20 20 20 20 20 20  _PMASZ          
1f960 20 20 20 20 20 32 35 20 20 2f 2a 20 75 6e 73 69       25  /* unsi
1f970 67 6e 65 64 20 69 6e 74 20 73 7a 50 6d 61 20 2a  gned int szPma *
1f980 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1f990 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c  _CONFIG_STMTJRNL
1f9a0 5f 53 50 49 4c 4c 20 20 20 20 20 20 32 36 20 20  _SPILL      26  
1f9b0 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a  /* int nByte */.
1f9c0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1f9d0 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c  ONFIG_SMALL_MALL
1f9e0 4f 43 20 20 20 20 20 20 20 20 32 37 20 20 2f 2a  OC        27  /*
1f9f0 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64 65 66   boolean */.#def
1fa00 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fa10 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45  G_SORTERREF_SIZE
1fa20 20 20 20 20 20 20 32 38 20 20 2f 2a 20 69 6e 74        28  /* int
1fa30 20 6e 42 79 74 65 20 2a 2f 0a 0a 2f 2a 0a 2a 2a   nByte */../*.**
1fa40 20 43 41 50 49 33 52 45 46 3a 20 44 61 74 61 62   CAPI3REF: Datab
1fa50 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e 20 43  ase Connection C
1fa60 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 4f 70 74  onfiguration Opt
1fa70 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ions.**.** These
1fa80 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65 20 74   constants are t
1fa90 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 74  he available int
1faa0 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69  eger configurati
1fab0 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61 74 0a  on options that.
1fac0 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73 65 64  ** can be passed
1fad0 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61   as the second a
1fae0 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b  rgument to the [
1faf0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
1fb00 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 0a  g()] interface..
1fb10 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66 69 67  **.** New config
1fb20 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20  uration options 
1fb30 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20  may be added in 
1fb40 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 20  future releases 
1fb50 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20 45 78  of SQLite..** Ex
1fb60 69 73 74 69 6e 67 20 63 6f 6e 66 69 67 75 72 61  isting configura
1fb70 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d 69 67  tion options mig
1fb80 68 74 20 62 65 20 64 69 73 63 6f 6e 74 69 6e 75  ht be discontinu
1fb90 65 64 2e 20 20 41 70 70 6c 69 63 61 74 69 6f 6e  ed.  Application
1fba0 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63 68 65 63  s.** should chec
1fbb0 6b 20 74 68 65 20 72 65 74 75 72 6e 20 63 6f 64  k the return cod
1fbc0 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f  e from [sqlite3_
1fbd0 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 74 6f 20  db_config()] to 
1fbe0 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 0a 2a  make sure that.*
1fbf0 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f 72 6b 65  * the call worke
1fc00 64 2e 20 20 5e 54 68 65 20 5b 73 71 6c 69 74 65  d.  ^The [sqlite
1fc10 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 69  3_db_config()] i
1fc20 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20 72 65  nterface will re
1fc30 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65  turn a.** non-ze
1fc40 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20  ro [error code] 
1fc50 69 66 20 61 20 64 69 73 63 6f 6e 74 69 6e 75 65  if a discontinue
1fc60 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64  d or unsupported
1fc70 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1fc80 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f  ption.** is invo
1fc90 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a  ked..**.** <dl>.
1fca0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f  ** [[SQLITE_DBCO
1fcb0 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 5d 5d  NFIG_LOOKASIDE]]
1fcc0 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44  .** <dt>SQLITE_D
1fcd0 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44  BCONFIG_LOOKASID
1fce0 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  E</dt>.** <dd> ^
1fcf0 54 68 69 73 20 6f 70 74 69 6f 6e 20 74 61 6b 65  This option take
1fd00 73 20 74 68 72 65 65 20 61 64 64 69 74 69 6f 6e  s three addition
1fd10 61 6c 20 61 72 67 75 6d 65 6e 74 73 20 74 68 61  al arguments tha
1fd20 74 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20  t determine the 
1fd30 0a 2a 2a 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d  .** [lookaside m
1fd40 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 5d  emory allocator]
1fd50 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
1fd60 6f 72 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  or the [database
1fd70 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a   connection]..**
1fd80 20 5e 54 68 65 20 66 69 72 73 74 20 61 72 67 75   ^The first argu
1fd90 6d 65 6e 74 20 28 74 68 65 20 74 68 69 72 64 20  ment (the third 
1fda0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b 73 71  parameter to [sq
1fdb0 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28  lite3_db_config(
1fdc0 29 5d 20 69 73 20 61 0a 2a 2a 20 70 6f 69 6e 74  )] is a.** point
1fdd0 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20 62  er to a memory b
1fde0 75 66 66 65 72 20 74 6f 20 75 73 65 20 66 6f 72  uffer to use for
1fdf0 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72   lookaside memor
1fe00 79 2e 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74  y..** ^The first
1fe10 20 61 72 67 75 6d 65 6e 74 20 61 66 74 65 72 20   argument after 
1fe20 74 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  the SQLITE_DBCON
1fe30 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 76 65  FIG_LOOKASIDE ve
1fe40 72 62 0a 2a 2a 20 6d 61 79 20 62 65 20 4e 55 4c  rb.** may be NUL
1fe50 4c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  L in which case 
1fe60 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 6c 6f  SQLite will allo
1fe70 63 61 74 65 20 74 68 65 0a 2a 2a 20 6c 6f 6f 6b  cate the.** look
1fe80 61 73 69 64 65 20 62 75 66 66 65 72 20 69 74 73  aside buffer its
1fe90 65 6c 66 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  elf using [sqlit
1fea0 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2e 20 5e 54  e3_malloc()]. ^T
1feb0 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
1fec0 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a  nt is the.** siz
1fed0 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73  e of each lookas
1fee0 69 64 65 20 62 75 66 66 65 72 20 73 6c 6f 74 2e  ide buffer slot.
1fef0 20 20 5e 54 68 65 20 74 68 69 72 64 20 61 72 67    ^The third arg
1ff00 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d  ument is the num
1ff10 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74 73 2e  ber of.** slots.
1ff20 20 20 54 68 65 20 73 69 7a 65 20 6f 66 20 74 68    The size of th
1ff30 65 20 62 75 66 66 65 72 20 69 6e 20 74 68 65 20  e buffer in the 
1ff40 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 6d  first argument m
1ff50 75 73 74 20 62 65 20 67 72 65 61 74 65 72 20 74  ust be greater t
1ff60 68 61 6e 0a 2a 2a 20 6f 72 20 65 71 75 61 6c 20  han.** or equal 
1ff70 74 6f 20 74 68 65 20 70 72 6f 64 75 63 74 20 6f  to the product o
1ff80 66 20 74 68 65 20 73 65 63 6f 6e 64 20 61 6e 64  f the second and
1ff90 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 73   third arguments
1ffa0 2e 20 20 54 68 65 20 62 75 66 66 65 72 0a 2a 2a  .  The buffer.**
1ffb0 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e 65 64   must be aligned
1ffc0 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20 62 6f   to an 8-byte bo
1ffd0 75 6e 64 61 72 79 2e 20 20 5e 49 66 20 74 68 65  undary.  ^If the
1ffe0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
1fff0 20 74 6f 0a 2a 2a 20 53 51 4c 49 54 45 5f 44 42   to.** SQLITE_DB
20000 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
20010 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c 74 69 70   is not a multip
20020 6c 65 20 6f 66 20 38 2c 20 69 74 20 69 73 20 69  le of 8, it is i
20030 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 72 6f 75  nternally.** rou
20040 6e 64 65 64 20 64 6f 77 6e 20 74 6f 20 74 68 65  nded down to the
20050 20 6e 65 78 74 20 73 6d 61 6c 6c 65 72 20 6d 75   next smaller mu
20060 6c 74 69 70 6c 65 20 6f 66 20 38 2e 20 20 5e 28  ltiple of 8.  ^(
20070 54 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65  The lookaside me
20080 6d 6f 72 79 0a 2a 2a 20 63 6f 6e 66 69 67 75 72  mory.** configur
20090 61 74 69 6f 6e 20 66 6f 72 20 61 20 64 61 74 61  ation for a data
200a0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
200b0 63 61 6e 20 6f 6e 6c 79 20 62 65 20 63 68 61 6e  can only be chan
200c0 67 65 64 20 77 68 65 6e 20 74 68 61 74 0a 2a 2a  ged when that.**
200d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6e   connection is n
200e0 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75 73 69  ot currently usi
200f0 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  ng lookaside mem
20100 6f 72 79 2c 20 6f 72 20 69 6e 20 6f 74 68 65 72  ory, or in other
20110 20 77 6f 72 64 73 0a 2a 2a 20 77 68 65 6e 20 74   words.** when t
20120 68 65 20 22 63 75 72 72 65 6e 74 20 76 61 6c 75  he "current valu
20130 65 22 20 72 65 74 75 72 6e 65 64 20 62 79 0a 2a  e" returned by.*
20140 2a 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 73 74  * [sqlite3_db_st
20150 61 74 75 73 5d 28 44 2c 5b 53 51 4c 49 54 45 5f  atus](D,[SQLITE_
20160 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
20170 5d 2c 2e 2e 2e 29 20 69 73 20 7a 65 72 6f 2e 0a  ],...) is zero..
20180 2a 2a 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74  ** Any attempt t
20190 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6c 6f 6f  o change the loo
201a0 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 63 6f  kaside memory co
201b0 6e 66 69 67 75 72 61 74 69 6f 6e 20 77 68 65 6e  nfiguration when
201c0 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20 6d 65   lookaside.** me
201d0 6d 6f 72 79 20 69 73 20 69 6e 20 75 73 65 20 6c  mory is in use l
201e0 65 61 76 65 73 20 74 68 65 20 63 6f 6e 66 69 67  eaves the config
201f0 75 72 61 74 69 6f 6e 20 75 6e 63 68 61 6e 67 65  uration unchange
20200 64 20 61 6e 64 20 72 65 74 75 72 6e 73 20 0a 2a  d and returns .*
20210 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 2e  * [SQLITE_BUSY].
20220 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  )^</dd>.**.** [[
20230 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
20240 45 4e 41 42 4c 45 5f 46 4b 45 59 5d 5d 0a 2a 2a  ENABLE_FKEY]].**
20250 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
20260 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59  NFIG_ENABLE_FKEY
20270 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54  </dt>.** <dd> ^T
20280 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73  his option is us
20290 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20  ed to enable or 
202a0 64 69 73 61 62 6c 65 20 74 68 65 20 65 6e 66 6f  disable the enfo
202b0 72 63 65 6d 65 6e 74 20 6f 66 0a 2a 2a 20 5b 66  rcement of.** [f
202c0 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e 73 74  oreign key const
202d0 72 61 69 6e 74 73 5d 2e 20 20 54 68 65 72 65 20  raints].  There 
202e0 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
202f0 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
20300 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
20310 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
20320 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
20330 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 46 4b   0 to disable FK
20340 20 65 6e 66 6f 72 63 65 6d 65 6e 74 2c 0a 2a 2a   enforcement,.**
20350 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65 6e 61   positive to ena
20360 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65  ble FK enforceme
20370 6e 74 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74  nt or negative t
20380 6f 20 6c 65 61 76 65 20 46 4b 20 65 6e 66 6f 72  o leave FK enfor
20390 63 65 6d 65 6e 74 0a 2a 2a 20 75 6e 63 68 61 6e  cement.** unchan
203a0 67 65 64 2e 20 20 54 68 65 20 73 65 63 6f 6e 64  ged.  The second
203b0 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20   parameter is a 
203c0 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
203d0 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68  teger into which
203e0 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30  .** is written 0
203f0 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74   or 1 to indicat
20400 65 20 77 68 65 74 68 65 72 20 46 4b 20 65 6e 66  e whether FK enf
20410 6f 72 63 65 6d 65 6e 74 20 69 73 20 6f 66 66 20  orcement is off 
20420 6f 72 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c 6f 77 69  or on.** followi
20430 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54  ng this call.  T
20440 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
20450 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c  ter may be a NUL
20460 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a  L pointer, in.**
20470 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20   which case the 
20480 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 20 73  FK enforcement s
20490 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65  etting is not re
204a0 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64  ported back. </d
204b0 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
204c0 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c  E_DBCONFIG_ENABL
204d0 45 5f 54 52 49 47 47 45 52 5d 5d 0a 2a 2a 20 3c  E_TRIGGER]].** <
204e0 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
204f0 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47 47 45  IG_ENABLE_TRIGGE
20500 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  R</dt>.** <dd> ^
20510 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
20520 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
20530 20 64 69 73 61 62 6c 65 20 5b 43 52 45 41 54 45   disable [CREATE
20540 20 54 52 49 47 47 45 52 20 7c 20 74 72 69 67 67   TRIGGER | trigg
20550 65 72 73 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73  ers]..** There s
20560 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64  hould be two add
20570 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74  itional argument
20580 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20  s..** The first 
20590 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69  argument is an i
205a0 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20  nteger which is 
205b0 30 20 74 6f 20 64 69 73 61 62 6c 65 20 74 72 69  0 to disable tri
205c0 67 67 65 72 73 2c 0a 2a 2a 20 70 6f 73 69 74 69  ggers,.** positi
205d0 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 74 72 69  ve to enable tri
205e0 67 67 65 72 73 20 6f 72 20 6e 65 67 61 74 69 76  ggers or negativ
205f0 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20 73  e to leave the s
20600 65 74 74 69 6e 67 20 75 6e 63 68 61 6e 67 65 64  etting unchanged
20610 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20  ..** The second 
20620 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 70  parameter is a p
20630 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74  ointer to an int
20640 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68 0a  eger into which.
20650 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30 20  ** is written 0 
20660 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65  or 1 to indicate
20670 20 77 68 65 74 68 65 72 20 74 72 69 67 67 65 72   whether trigger
20680 73 20 61 72 65 20 64 69 73 61 62 6c 65 64 20 6f  s are disabled o
20690 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66 6f 6c  r enabled.** fol
206a0 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c  lowing this call
206b0 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61  .  The second pa
206c0 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61  rameter may be a
206d0 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
206e0 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20  n.** which case 
206f0 74 68 65 20 74 72 69 67 67 65 72 20 73 65 74 74  the trigger sett
20700 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70 6f 72  ing is not repor
20710 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64 3e 0a  ted back. </dd>.
20720 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
20730 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
20740 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d 5d 0a  TS3_TOKENIZER]].
20750 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
20760 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 54  CONFIG_ENABLE_FT
20770 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f 64 74  S3_TOKENIZER</dt
20780 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73 20  >.** <dd> ^This 
20790 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74  option is used t
207a0 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69 73 61  o enable or disa
207b0 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72 67 75  ble the two-argu
207c0 6d 65 6e 74 0a 2a 2a 20 76 65 72 73 69 6f 6e 20  ment.** version 
207d0 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74 6f 6b  of the [fts3_tok
207e0 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63 74 69  enizer()] functi
207f0 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61 72 74  on which is part
20800 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54 53 33   of the.** [FTS3
20810 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65 61 72  ] full-text sear
20820 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65 6e 73  ch engine extens
20830 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68  ion..** There sh
20840 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69  ould be two addi
20850 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73  tional arguments
20860 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  ..** The first a
20870 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20 69 6e  rgument is an in
20880 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30  teger which is 0
20890 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74 73 33   to disable fts3
208a0 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f 72 0a  _tokenizer() or.
208b0 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65  ** positive to e
208c0 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b 65 6e  nable fts3_token
208d0 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61 74 69  izer() or negati
208e0 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65 20  ve to leave the 
208f0 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63 68 61  setting.** uncha
20900 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63  nged..** The sec
20910 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
20920 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
20930 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68   integer into wh
20940 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65  ich.** is writte
20950 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
20960 63 61 74 65 20 77 68 65 74 68 65 72 20 66 74 73  cate whether fts
20970 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73 20 64  3_tokenizer is d
20980 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61 62 6c  isabled or enabl
20990 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  ed.** following 
209a0 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68 65 20  this call.  The 
209b0 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72  second parameter
209c0 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c 20 70   may be a NULL p
209d0 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20 77 68  ointer, in.** wh
209e0 69 63 68 20 63 61 73 65 20 74 68 65 20 6e 65 77  ich case the new
209f0 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20   setting is not 
20a00 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c  reported back. <
20a10 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
20a20 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
20a30 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49  BLE_LOAD_EXTENSI
20a40 4f 4e 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49  ON]].** <dt>SQLI
20a50 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
20a60 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  LE_LOAD_EXTENSIO
20a70 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e  N</dt>.** <dd> ^
20a80 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75  This option is u
20a90 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72  sed to enable or
20aa0 20 64 69 73 61 62 6c 65 20 74 68 65 20 5b 73 71   disable the [sq
20ab0 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e  lite3_load_exten
20ac0 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e 74 65 72  sion()].** inter
20ad0 66 61 63 65 20 69 6e 64 65 70 65 6e 64 65 6e 74  face independent
20ae0 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f 61 64 5f  ly of the [load_
20af0 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 53 51 4c  extension()] SQL
20b00 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20 54 68   function..** Th
20b10 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61 62 6c  e [sqlite3_enabl
20b20 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
20b30 28 29 5d 20 41 50 49 20 65 6e 61 62 6c 65 73 20  ()] API enables 
20b40 6f 72 20 64 69 73 61 62 6c 65 73 20 62 6f 74 68  or disables both
20b50 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 5b 73   the.** C-API [s
20b60 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65  qlite3_load_exte
20b70 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20 74 68 65  nsion()] and the
20b80 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 5b 6c   SQL function [l
20b90 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d  oad_extension()]
20ba0 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f 75 6c  ..** There shoul
20bb0 64 20 62 65 20 74 77 6f 20 61 64 64 69 74 69 6f  d be two additio
20bc0 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e 0a 2a  nal arguments..*
20bd0 2a 20 57 68 65 6e 20 74 68 65 20 66 69 72 73 74  * When the first
20be0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 69   argument to thi
20bf0 73 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 31  s interface is 1
20c00 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 65 20  , then only the 
20c10 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65 6e 61 62  C-API is.** enab
20c20 6c 65 64 20 61 6e 64 20 74 68 65 20 53 51 4c 20  led and the SQL 
20c30 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61 69 6e 73  function remains
20c40 20 64 69 73 61 62 6c 65 64 2e 20 20 49 66 20 74   disabled.  If t
20c50 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
20c60 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20 69 6e 74  t to.** this int
20c70 65 72 66 61 63 65 20 69 73 20 30 2c 20 74 68 65  erface is 0, the
20c80 6e 20 62 6f 74 68 20 74 68 65 20 43 2d 41 50 49  n both the C-API
20c90 20 61 6e 64 20 74 68 65 20 53 51 4c 20 66 75 6e   and the SQL fun
20ca0 63 74 69 6f 6e 20 61 72 65 20 64 69 73 61 62 6c  ction are disabl
20cb0 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20 66 69  ed..** If the fi
20cc0 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20  rst argument is 
20cd0 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63 68 61 6e  -1, then no chan
20ce0 67 65 73 20 61 72 65 20 6d 61 64 65 20 74 6f 20  ges are made to 
20cf0 73 74 61 74 65 20 6f 66 20 65 69 74 68 65 72 20  state of either 
20d00 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 6f 72 20  the.** C-API or 
20d10 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  the SQL function
20d20 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e 64 20  ..** The second 
20d30 70 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 70  parameter is a p
20d40 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74  ointer to an int
20d50 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63 68 0a  eger into which.
20d60 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20 30 20  ** is written 0 
20d70 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61 74 65  or 1 to indicate
20d80 20 77 68 65 74 68 65 72 20 5b 73 71 6c 69 74 65   whether [sqlite
20d90 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  3_load_extension
20da0 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a  ()] interface.**
20db0 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f 72 20   is disabled or 
20dc0 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f 77 69 6e  enabled followin
20dd0 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
20de0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
20df0 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20 61 20 4e  er may.** be a N
20e00 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 20  ULL pointer, in 
20e10 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
20e20 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
20e30 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
20e40 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  .** </dd>.**.** 
20e50 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
20e60 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 5d 5d 20 3c  G_MAINDBNAME]] <
20e70 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  dt>SQLITE_DBCONF
20e80 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 3c 2f 64  IG_MAINDBNAME</d
20e90 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69 73  t>.** <dd> ^This
20ea0 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64 20   option is used 
20eb0 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6e 61  to change the na
20ec0 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69 6e 22  me of the "main"
20ed0 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 73 63 68   database.** sch
20ee0 65 6d 61 2e 20 20 5e 54 68 65 20 73 6f 6c 65 20  ema.  ^The sole 
20ef0 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
20f00 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 6e 73 74  inter to a const
20f10 61 6e 74 20 55 54 46 38 20 73 74 72 69 6e 67 0a  ant UTF8 string.
20f20 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20 62 65  ** which will be
20f30 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 73 63 68  come the new sch
20f40 65 6d 61 20 6e 61 6d 65 20 69 6e 20 70 6c 61 63  ema name in plac
20f50 65 20 6f 66 20 22 6d 61 69 6e 22 2e 20 20 5e 53  e of "main".  ^S
20f60 51 4c 69 74 65 0a 2a 2a 20 64 6f 65 73 20 6e 6f  QLite.** does no
20f70 74 20 6d 61 6b 65 20 61 20 63 6f 70 79 20 6f 66  t make a copy of
20f80 20 74 68 65 20 6e 65 77 20 6d 61 69 6e 20 73 63   the new main sc
20f90 68 65 6d 61 20 6e 61 6d 65 20 73 74 72 69 6e 67  hema name string
20fa0 2c 20 73 6f 20 74 68 65 20 61 70 70 6c 69 63 61  , so the applica
20fb0 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65 6e 73  tion.** must ens
20fc0 75 72 65 20 74 68 61 74 20 74 68 65 20 61 72 67  ure that the arg
20fd0 75 6d 65 6e 74 20 70 61 73 73 65 64 20 69 6e 74  ument passed int
20fe0 6f 20 74 68 69 73 20 44 42 43 4f 4e 46 49 47 20  o this DBCONFIG 
20ff0 6f 70 74 69 6f 6e 20 69 73 20 75 6e 63 68 61 6e  option is unchan
21000 67 65 64 0a 2a 2a 20 75 6e 74 69 6c 20 61 66 74  ged.** until aft
21010 65 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20  er the database 
21020 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f 73 65  connection close
21030 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  s..** </dd>.**.*
21040 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
21050 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43  FIG_NO_CKPT_ON_C
21060 4c 4f 53 45 5d 5d 20 0a 2a 2a 20 3c 64 74 3e 53  LOSE]] .** <dt>S
21070 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e  QLITE_DBCONFIG_N
21080 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 3c  O_CKPT_ON_CLOSE<
21090 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55 73 75  /dt>.** <dd> Usu
210a0 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64 61 74  ally, when a dat
210b0 61 62 61 73 65 20 69 6e 20 77 61 6c 20 6d 6f 64  abase in wal mod
210c0 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72 20 64  e is closed or d
210d0 65 74 61 63 68 65 64 20 66 72 6f 6d 20 61 20 0a  etached from a .
210e0 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61 6e 64  ** database hand
210f0 6c 65 2c 20 53 51 4c 69 74 65 20 63 68 65 63 6b  le, SQLite check
21100 73 20 69 66 20 74 68 69 73 20 77 69 6c 6c 20 6d  s if this will m
21110 65 61 6e 20 74 68 61 74 20 74 68 65 72 65 20 61  ean that there a
21120 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20 63 6f  re now no .** co
21130 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20 61 6c 6c  nnections at all
21140 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
21150 2e 20 49 66 20 73 6f 2c 20 69 74 20 70 65 72 66  . If so, it perf
21160 6f 72 6d 73 20 61 20 63 68 65 63 6b 70 6f 69 6e  orms a checkpoin
21170 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20  t .** operation 
21180 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67 20 74  before closing t
21190 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 54  he connection. T
211a0 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79 20 62  his option may b
211b0 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f 76 65  e used to.** ove
211c0 72 72 69 64 65 20 74 68 69 73 20 62 65 68 61 76  rride this behav
211d0 69 6f 75 72 2e 20 54 68 65 20 66 69 72 73 74 20  iour. The first 
211e0 70 61 72 61 6d 65 74 65 72 20 70 61 73 73 65 64  parameter passed
211f0 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61 74 69   to this operati
21200 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e 74 65  on.** is an inte
21210 67 65 72 20 2d 20 70 6f 73 69 74 69 76 65 20 74  ger - positive t
21220 6f 20 64 69 73 61 62 6c 65 20 63 68 65 63 6b 70  o disable checkp
21230 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65 2c 20  oints-on-close, 
21240 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a 2a 20  or zero (the.** 
21250 64 65 66 61 75 6c 74 29 20 74 6f 20 65 6e 61 62  default) to enab
21260 6c 65 20 74 68 65 6d 2c 20 61 6e 64 20 6e 65 67  le them, and neg
21270 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74  ative to leave t
21280 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63 68 61  he setting uncha
21290 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63  nged..** The sec
212a0 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73  ond parameter is
212b0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
212c0 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e 74 6f   integer.** into
212d0 20 77 68 69 63 68 20 69 73 20 77 72 69 74 74 65   which is writte
212e0 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69  n 0 or 1 to indi
212f0 63 61 74 65 20 77 68 65 74 68 65 72 20 63 68 65  cate whether che
21300 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73  ckpoints-on-clos
21310 65 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e 20 64  e.** have been d
21320 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66 20 74  isabled - 0 if t
21330 68 65 79 20 61 72 65 20 6e 6f 74 20 64 69 73 61  hey are not disa
21340 62 6c 65 64 2c 20 31 20 69 66 20 74 68 65 79 20  bled, 1 if they 
21350 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  are..** </dd>.**
21360 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
21370 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53  ONFIG_ENABLE_QPS
21380 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44  G]] <dt>SQLITE_D
21390 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
213a0 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  PSG</dt>.** <dd>
213b0 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43  ^(The SQLITE_DBC
213c0 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51 50 53  ONFIG_ENABLE_QPS
213d0 47 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74  G option activat
213e0 65 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65  es or deactivate
213f0 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65 72 79 20  s.** the [query 
21400 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c 69 74  planner stabilit
21410 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28 51 50  y guarantee] (QP
21420 53 47 29 2e 20 20 57 68 65 6e 20 74 68 65 20 51  SG).  When the Q
21430 50 53 47 20 69 73 20 61 63 74 69 76 65 2c 0a 2a  PSG is active,.*
21440 2a 20 61 20 73 69 6e 67 6c 65 20 53 51 4c 20 71  * a single SQL q
21450 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74 20 77  uery statement w
21460 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65 20 74  ill always use t
21470 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69 74 68  he same algorith
21480 6d 20 72 65 67 61 72 64 6c 65 73 73 0a 2a 2a 20  m regardless.** 
21490 6f 66 20 76 61 6c 75 65 73 20 6f 66 20 5b 62 6f  of values of [bo
214a0 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 5d 2e  und parameters].
214b0 29 5e 20 54 68 65 20 51 50 53 47 20 64 69 73 61  )^ The QPSG disa
214c0 62 6c 65 73 20 73 6f 6d 65 20 71 75 65 72 79 20  bles some query 
214d0 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 0a 2a 2a  optimizations.**
214e0 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74 20 74 68   that look at th
214f0 65 20 76 61 6c 75 65 73 20 6f 66 20 62 6f 75 6e  e values of boun
21500 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20 77 68  d parameters, wh
21510 69 63 68 20 63 61 6e 20 6d 61 6b 65 20 73 6f 6d  ich can make som
21520 65 20 71 75 65 72 69 65 73 0a 2a 2a 20 73 6c 6f  e queries.** slo
21530 77 65 72 2e 20 20 42 75 74 20 74 68 65 20 51 50  wer.  But the QP
21540 53 47 20 68 61 73 20 74 68 65 20 61 64 76 61 6e  SG has the advan
21550 74 61 67 65 20 6f 66 20 6d 6f 72 65 20 70 72 65  tage of more pre
21560 64 69 63 74 61 62 6c 65 20 62 65 68 61 76 69 6f  dictable behavio
21570 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74 68 65 20  r.  With.** the 
21580 51 50 53 47 20 61 63 74 69 76 65 2c 20 53 51 4c  QPSG active, SQL
21590 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79 73 20  ite will always 
215a0 75 73 65 20 74 68 65 20 73 61 6d 65 20 71 75 65  use the same que
215b0 72 79 20 70 6c 61 6e 20 69 6e 20 74 68 65 20 66  ry plan in the f
215c0 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61 73 20 75  ield as.** was u
215d0 73 65 64 20 64 75 72 69 6e 67 20 74 65 73 74 69  sed during testi
215e0 6e 67 20 69 6e 20 74 68 65 20 6c 61 62 2e 0a 2a  ng in the lab..*
215f0 2a 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75  * The first argu
21600 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 73 65 74  ment to this set
21610 74 69 6e 67 20 69 73 20 61 6e 20 69 6e 74 65 67  ting is an integ
21620 65 72 20 77 68 69 63 68 20 69 73 20 30 20 74 6f  er which is 0 to
21630 20 64 69 73 61 62 6c 65 20 0a 2a 2a 20 74 68 65   disable .** the
21640 20 51 50 53 47 2c 20 70 6f 73 69 74 69 76 65 20   QPSG, positive 
21650 74 6f 20 65 6e 61 62 6c 65 20 51 50 53 47 2c 20  to enable QPSG, 
21660 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c  or negative to l
21670 65 61 76 65 20 74 68 65 20 73 65 74 74 69 6e 67  eave the setting
21680 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e 20 54  .** unchanged. T
21690 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
216a0 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ter is a pointer
216b0 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69   to an integer i
216c0 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69 73 20  nto which.** is 
216d0 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31 20 74  written 0 or 1 t
216e0 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68  o indicate wheth
216f0 65 72 20 74 68 65 20 51 50 53 47 20 69 73 20 64  er the QPSG is d
21700 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61 62 6c  isabled or enabl
21710 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20  ed.** following 
21720 74 68 69 73 20 63 61 6c 6c 2e 0a 2a 2a 20 3c 2f  this call..** </
21730 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
21740 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52 49 47  TE_DBCONFIG_TRIG
21750 47 45 52 5f 45 51 50 5d 5d 20 3c 64 74 3e 53 51  GER_EQP]] <dt>SQ
21760 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52  LITE_DBCONFIG_TR
21770 49 47 47 45 52 5f 45 51 50 3c 2f 64 74 3e 0a 2a  IGGER_EQP</dt>.*
21780 2a 20 3c 64 64 3e 20 42 79 20 64 65 66 61 75 6c  * <dd> By defaul
21790 74 2c 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66  t, the output of
217a0 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59 20 50   EXPLAIN QUERY P
217b0 4c 41 4e 20 63 6f 6d 6d 61 6e 64 73 20 64 6f 65  LAN commands doe
217c0 73 20 6e 6f 74 20 0a 2a 2a 20 69 6e 63 6c 75 64  s not .** includ
217d0 65 20 6f 75 74 70 75 74 20 66 6f 72 20 61 6e 79  e output for any
217e0 20 6f 70 65 72 61 74 69 6f 6e 73 20 70 65 72 66   operations perf
217f0 6f 72 6d 65 64 20 62 79 20 74 72 69 67 67 65 72  ormed by trigger
21800 20 70 72 6f 67 72 61 6d 73 2e 20 54 68 69 73 0a   programs. This.
21810 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  ** option is use
21820 64 20 74 6f 20 73 65 74 20 6f 72 20 63 6c 65 61  d to set or clea
21830 72 20 28 74 68 65 20 64 65 66 61 75 6c 74 29 20  r (the default) 
21840 61 20 66 6c 61 67 20 74 68 61 74 20 67 6f 76 65  a flag that gove
21850 72 6e 73 20 74 68 69 73 0a 2a 2a 20 62 65 68 61  rns this.** beha
21860 76 69 6f 72 2e 20 54 68 65 20 66 69 72 73 74 20  vior. The first 
21870 70 61 72 61 6d 65 74 65 72 20 70 61 73 73 65 64  parameter passed
21880 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61 74 69   to this operati
21890 6f 6e 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72  on is an integer
218a0 20 2d 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74   -.** positive t
218b0 6f 20 65 6e 61 62 6c 65 20 6f 75 74 70 75 74 20  o enable output 
218c0 66 6f 72 20 74 72 69 67 67 65 72 20 70 72 6f 67  for trigger prog
218d0 72 61 6d 73 2c 20 6f 72 20 7a 65 72 6f 20 74 6f  rams, or zero to
218e0 20 64 69 73 61 62 6c 65 20 69 74 2c 0a 2a 2a 20   disable it,.** 
218f0 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f 20 6c  or negative to l
21900 65 61 76 65 20 74 68 65 20 73 65 74 74 69 6e 67  eave the setting
21910 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20 54   unchanged..** T
21920 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
21930 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74 65 72  ter is a pointer
21940 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 69   to an integer i
21950 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69  nto which is wri
21960 74 74 65 6e 20 0a 2a 2a 20 30 20 6f 72 20 31 20  tten .** 0 or 1 
21970 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74  to indicate whet
21980 68 65 72 20 6f 75 74 70 75 74 2d 66 6f 72 2d 74  her output-for-t
21990 72 69 67 67 65 72 73 20 68 61 73 20 62 65 65 6e  riggers has been
219a0 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66   disabled - 0 if
219b0 20 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20 64   .** it is not d
219c0 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20 69 74  isabled, 1 if it
219d0 20 69 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64 3e 0a   is.  .** </dd>.
219e0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
219f0 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41  BCONFIG_RESET_DA
21a00 54 41 42 41 53 45 5d 5d 20 3c 64 74 3e 53 51 4c  TABASE]] <dt>SQL
21a10 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53  ITE_DBCONFIG_RES
21a20 45 54 5f 44 41 54 41 42 41 53 45 3c 2f 64 74 3e  ET_DATABASE</dt>
21a30 0a 2a 2a 20 3c 64 64 3e 20 53 65 74 20 74 68 65  .** <dd> Set the
21a40 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47   SQLITE_DBCONFIG
21a50 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 20  _RESET_DATABASE 
21a60 66 6c 61 67 20 61 6e 64 20 74 68 65 6e 20 72 75  flag and then ru
21a70 6e 0a 2a 2a 20 5b 56 41 43 55 55 4d 5d 20 69 6e  n.** [VACUUM] in
21a80 20 6f 72 64 65 72 20 74 6f 20 72 65 73 65 74 20   order to reset 
21a90 61 20 64 61 74 61 62 61 73 65 20 62 61 63 6b 20  a database back 
21aa0 74 6f 20 61 6e 20 65 6d 70 74 79 20 64 61 74 61  to an empty data
21ab0 62 61 73 65 0a 2a 2a 20 77 69 74 68 20 6e 6f 20  base.** with no 
21ac0 73 63 68 65 6d 61 20 61 6e 64 20 6e 6f 20 63 6f  schema and no co
21ad0 6e 74 65 6e 74 2e 20 54 68 65 20 66 6f 6c 6c 6f  ntent. The follo
21ae0 77 69 6e 67 20 70 72 6f 63 65 73 73 20 77 6f 72  wing process wor
21af0 6b 73 20 65 76 65 6e 20 66 6f 72 0a 2a 2a 20 61  ks even for.** a
21b00 20 62 61 64 6c 79 20 63 6f 72 72 75 70 74 65 64   badly corrupted
21b10 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 3a 0a   database file:.
21b20 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20  ** <ol>.** <li> 
21b30 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
21b40 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6e 65  connection is ne
21b50 77 6c 79 20 6f 70 65 6e 65 64 2c 20 6d 61 6b 65  wly opened, make
21b60 20 73 75 72 65 20 69 74 20 68 61 73 20 72 65 61   sure it has rea
21b70 64 20 74 68 65 0a 2a 2a 20 20 20 20 20 20 64 61  d the.**      da
21b80 74 61 62 61 73 65 20 73 63 68 65 6d 61 20 62 79  tabase schema by
21b90 20 70 72 65 70 61 72 69 6e 67 20 74 68 65 6e 20   preparing then 
21ba0 64 69 73 63 61 72 64 69 6e 67 20 73 6f 6d 65 20  discarding some 
21bb0 71 75 65 72 79 20 61 67 61 69 6e 73 74 20 74 68  query against th
21bc0 65 0a 2a 2a 20 20 20 20 20 20 64 61 74 61 62 61  e.**      databa
21bd0 73 65 2c 20 6f 72 20 63 61 6c 6c 69 6e 67 20 73  se, or calling s
21be0 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63 6f 6c  qlite3_table_col
21bf0 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29 2c 20  umn_metadata(), 
21c00 69 67 6e 6f 72 69 6e 67 20 61 6e 79 0a 2a 2a 20  ignoring any.** 
21c10 20 20 20 20 20 65 72 72 6f 72 73 2e 20 20 54 68       errors.  Th
21c20 69 73 20 73 74 65 70 20 69 73 20 6f 6e 6c 79 20  is step is only 
21c30 6e 65 63 65 73 73 61 72 79 20 69 66 20 74 68 65  necessary if the
21c40 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 73   application des
21c50 69 72 65 73 20 74 6f 20 6b 65 65 70 0a 2a 2a 20  ires to keep.** 
21c60 20 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73       the databas
21c70 65 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20 61 66  e in WAL mode af
21c80 74 65 72 20 74 68 65 20 72 65 73 65 74 20 69 66  ter the reset if
21c90 20 69 74 20 77 61 73 20 69 6e 20 57 41 4c 20 6d   it was in WAL m
21ca0 6f 64 65 20 62 65 66 6f 72 65 0a 2a 2a 20 20 20  ode before.**   
21cb0 20 20 20 74 68 65 20 72 65 73 65 74 2e 20 20 0a     the reset.  .
21cc0 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f  ** <li> sqlite3_
21cd0 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20 53 51  db_config(db, SQ
21ce0 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52 45  LITE_DBCONFIG_RE
21cf0 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20 31 2c  SET_DATABASE, 1,
21d00 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b 73 71   0);.** <li> [sq
21d10 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62 2c 20  lite3_exec](db, 
21d20 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c 20 30  "[VACUUM]", 0, 0
21d30 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 73 71  , 0);.** <li> sq
21d40 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28  lite3_db_config(
21d50 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  db, SQLITE_DBCON
21d60 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
21d70 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 2f  SE, 0, 0);.** </
21d80 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65 20 72  ol>.** Because r
21d90 65 73 65 74 74 69 6e 67 20 61 20 64 61 74 61 62  esetting a datab
21da0 61 73 65 20 69 73 20 64 65 73 74 72 75 63 74 69  ase is destructi
21db0 76 65 20 61 6e 64 20 69 72 72 65 76 65 72 73 69  ve and irreversi
21dc0 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72 6f 63  ble, the.** proc
21dd0 65 73 73 20 72 65 71 75 69 72 65 73 20 74 68 65  ess requires the
21de0 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f 62 73   use of this obs
21df0 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d 75 6c  cure API and mul
21e00 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f 20 68  tiple steps to h
21e10 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20 74 68  elp.** ensure th
21e20 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 68  at it does not h
21e30 61 70 70 65 6e 20 62 79 20 61 63 63 69 64 65 6e  appen by acciden
21e40 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  t..**.** [[SQLIT
21e50 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46 45 4e  E_DBCONFIG_DEFEN
21e60 53 49 56 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54  SIVE]] <dt>SQLIT
21e70 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46 45 4e  E_DBCONFIG_DEFEN
21e80 53 49 56 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  SIVE</dt>.** <dd
21e90 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f  >The SQLITE_DBCO
21ea0 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45 20 6f  NFIG_DEFENSIVE o
21eb0 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65 73 20  ption activates 
21ec0 6f 72 20 64 65 61 63 74 69 76 61 74 65 73 20 74  or deactivates t
21ed0 68 65 0a 2a 2a 20 22 64 65 66 65 6e 73 69 76 65  he.** "defensive
21ee0 22 20 66 6c 61 67 20 66 6f 72 20 61 20 64 61 74  " flag for a dat
21ef0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
21f00 2e 20 20 57 68 65 6e 20 74 68 65 20 64 65 66 65  .  When the defe
21f10 6e 73 69 76 65 0a 2a 2a 20 66 6c 61 67 20 69 73  nsive.** flag is
21f20 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67 75 61   enabled, langua
21f30 67 65 20 66 65 61 74 75 72 65 73 20 74 68 61 74  ge features that
21f40 20 61 6c 6c 6f 77 20 6f 72 64 69 6e 61 72 79 20   allow ordinary 
21f50 53 51 4c 20 74 6f 20 0a 2a 2a 20 64 65 6c 69 62  SQL to .** delib
21f60 65 72 61 74 65 6c 79 20 63 6f 72 72 75 70 74 20  erately corrupt 
21f70 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
21f80 65 20 61 72 65 20 64 69 73 61 62 6c 65 64 2e 20  e are disabled. 
21f90 20 54 68 65 20 64 69 73 61 62 6c 65 64 0a 2a 2a   The disabled.**
21fa0 20 66 65 61 74 75 72 65 73 20 69 6e 63 6c 75 64   features includ
21fb0 65 20 62 75 74 20 61 72 65 20 6e 6f 74 20 6c 69  e but are not li
21fc0 6d 69 74 65 64 20 74 6f 20 74 68 65 20 66 6f 6c  mited to the fol
21fd0 6c 6f 77 69 6e 67 3a 0a 2a 2a 20 3c 75 6c 3e 0a  lowing:.** <ul>.
21fe0 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 5b 50 52 41  ** <li> The [PRA
21ff0 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73 63 68  GMA writable_sch
22000 65 6d 61 3d 4f 4e 5d 20 73 74 61 74 65 6d 65 6e  ema=ON] statemen
22010 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 57 72 69 74 65  t..** <li> Write
22020 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65  s to the [sqlite
22030 5f 64 62 70 61 67 65 5d 20 76 69 72 74 75 61 6c  _dbpage] virtual
22040 20 74 61 62 6c 65 2e 0a 2a 2a 20 3c 6c 69 3e 20   table..** <li> 
22050 44 69 72 65 63 74 20 77 72 69 74 65 73 20 74 6f  Direct writes to
22060 20 5b 73 68 61 64 6f 77 20 74 61 62 6c 65 73 5d   [shadow tables]
22070 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20 3c 2f  ..** </ul>.** </
22080 64 64 3e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a  dd>.** </dl>.*/.
22090 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
220a0 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41  BCONFIG_MAINDBNA
220b0 4d 45 20 20 20 20 20 20 20 20 20 20 20 20 31 30  ME            10
220c0 30 30 20 2f 2a 20 63 6f 6e 73 74 20 63 68 61 72  00 /* const char
220d0 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
220e0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
220f0 4b 41 53 49 44 45 20 20 20 20 20 20 20 20 20 20  KASIDE          
22100 20 20 20 31 30 30 31 20 2f 2a 20 76 6f 69 64 2a     1001 /* void*
22110 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64 65 66   int int */.#def
22120 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
22130 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 20  FIG_ENABLE_FKEY 
22140 20 20 20 20 20 20 20 20 20 20 31 30 30 32 20 2f            1002 /
22150 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
22160 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
22170 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49  ONFIG_ENABLE_TRI
22180 47 47 45 52 20 20 20 20 20 20 20 20 31 30 30 33  GGER        1003
22190 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
221a0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
221b0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46  BCONFIG_ENABLE_F
221c0 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 20 31 30  TS3_TOKENIZER 10
221d0 30 34 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  04 /* int int* *
221e0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
221f0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
22200 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f 4e 20  _LOAD_EXTENSION 
22210 31 30 30 35 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1005 /* int int*
22220 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
22230 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f 5f 43  TE_DBCONFIG_NO_C
22240 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 20 20 20 20  KPT_ON_CLOSE    
22250 20 20 31 30 30 36 20 2f 2a 20 69 6e 74 20 69 6e    1006 /* int in
22260 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
22270 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
22280 41 42 4c 45 5f 51 50 53 47 20 20 20 20 20 20 20  ABLE_QPSG       
22290 20 20 20 20 31 30 30 37 20 2f 2a 20 69 6e 74 20      1007 /* int 
222a0 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
222b0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
222c0 54 52 49 47 47 45 52 5f 45 51 50 20 20 20 20 20  TRIGGER_EQP     
222d0 20 20 20 20 20 20 31 30 30 38 20 2f 2a 20 69 6e        1008 /* in
222e0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
222f0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
22300 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53 45  G_RESET_DATABASE
22310 20 20 20 20 20 20 20 20 31 30 30 39 20 2f 2a 20          1009 /* 
22320 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
22330 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
22340 46 49 47 5f 44 45 46 45 4e 53 49 56 45 20 20 20  FIG_DEFENSIVE   
22350 20 20 20 20 20 20 20 20 20 20 31 30 31 30 20 2f            1010 /
22360 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
22370 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
22380 4f 4e 46 49 47 5f 4d 41 58 20 20 20 20 20 20 20  ONFIG_MAX       
22390 20 20 20 20 20 20 20 20 20 20 20 20 31 30 31 30              1010
223a0 20 2f 2a 20 4c 61 72 67 65 73 74 20 44 42 43 4f   /* Largest DBCO
223b0 4e 46 49 47 20 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43  NFIG */../*.** C
223c0 41 50 49 33 52 45 46 3a 20 45 6e 61 62 6c 65 20  API3REF: Enable 
223d0 4f 72 20 44 69 73 61 62 6c 65 20 45 78 74 65 6e  Or Disable Exten
223e0 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64 65 73  ded Result Codes
223f0 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
22400 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  te3.**.** ^The s
22410 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f  qlite3_extended_
22420 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29 20 72  result_codes() r
22430 6f 75 74 69 6e 65 20 65 6e 61 62 6c 65 73 20 6f  outine enables o
22440 72 20 64 69 73 61 62 6c 65 73 20 74 68 65 0a 2a  r disables the.*
22450 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75  * [extended resu
22460 6c 74 20 63 6f 64 65 73 5d 20 66 65 61 74 75 72  lt codes] featur
22470 65 20 6f 66 20 53 51 4c 69 74 65 2e 20 5e 54 68  e of SQLite. ^Th
22480 65 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  e extended resul
22490 74 0a 2a 2a 20 63 6f 64 65 73 20 61 72 65 20 64  t.** codes are d
224a0 69 73 61 62 6c 65 64 20 62 79 20 64 65 66 61 75  isabled by defau
224b0 6c 74 20 66 6f 72 20 68 69 73 74 6f 72 69 63 61  lt for historica
224c0 6c 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e  l compatibility.
224d0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
224e0 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  nt sqlite3_exten
224f0 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73  ded_result_codes
22500 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6f  (sqlite3*, int o
22510 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  noff);../*.** CA
22520 50 49 33 52 45 46 3a 20 4c 61 73 74 20 49 6e 73  PI3REF: Last Ins
22530 65 72 74 20 52 6f 77 69 64 0a 2a 2a 20 4d 45 54  ert Rowid.** MET
22540 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  HOD: sqlite3.**.
22550 2a 2a 20 5e 45 61 63 68 20 65 6e 74 72 79 20 69  ** ^Each entry i
22560 6e 20 6d 6f 73 74 20 53 51 4c 69 74 65 20 74 61  n most SQLite ta
22570 62 6c 65 73 20 28 65 78 63 65 70 74 20 66 6f 72  bles (except for
22580 20 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d   [WITHOUT ROWID]
22590 20 74 61 62 6c 65 73 29 0a 2a 2a 20 68 61 73 20   tables).** has 
225a0 61 20 75 6e 69 71 75 65 20 36 34 2d 62 69 74 20  a unique 64-bit 
225b0 73 69 67 6e 65 64 0a 2a 2a 20 69 6e 74 65 67 65  signed.** intege
225c0 72 20 6b 65 79 20 63 61 6c 6c 65 64 20 74 68 65  r key called the
225d0 20 5b 52 4f 57 49 44 20 7c 20 22 72 6f 77 69 64   [ROWID | "rowid
225e0 22 5d 2e 20 5e 54 68 65 20 72 6f 77 69 64 20 69  "]. ^The rowid i
225f0 73 20 61 6c 77 61 79 73 20 61 76 61 69 6c 61 62  s always availab
22600 6c 65 0a 2a 2a 20 61 73 20 61 6e 20 75 6e 64 65  le.** as an unde
22610 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e 20 6e 61  clared column na
22620 6d 65 64 20 52 4f 57 49 44 2c 20 4f 49 44 2c 20  med ROWID, OID, 
22630 6f 72 20 5f 52 4f 57 49 44 5f 20 61 73 20 6c 6f  or _ROWID_ as lo
22640 6e 67 20 61 73 20 74 68 6f 73 65 0a 2a 2a 20 6e  ng as those.** n
22650 61 6d 65 73 20 61 72 65 20 6e 6f 74 20 61 6c 73  ames are not als
22660 6f 20 75 73 65 64 20 62 79 20 65 78 70 6c 69 63  o used by explic
22670 69 74 6c 79 20 64 65 63 6c 61 72 65 64 20 63 6f  itly declared co
22680 6c 75 6d 6e 73 2e 20 5e 49 66 0a 2a 2a 20 74 68  lumns. ^If.** th
22690 65 20 74 61 62 6c 65 20 68 61 73 20 61 20 63 6f  e table has a co
226a0 6c 75 6d 6e 20 6f 66 20 74 79 70 65 20 5b 49 4e  lumn of type [IN
226b0 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45  TEGER PRIMARY KE
226c0 59 5d 20 74 68 65 6e 20 74 68 61 74 20 63 6f 6c  Y] then that col
226d0 75 6d 6e 0a 2a 2a 20 69 73 20 61 6e 6f 74 68 65  umn.** is anothe
226e0 72 20 61 6c 69 61 73 20 66 6f 72 20 74 68 65 20  r alias for the 
226f0 72 6f 77 69 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  rowid..**.** ^Th
22700 65 20 73 71 6c 69 74 65 33 5f 6c 61 73 74 5f 69  e sqlite3_last_i
22710 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29 20 69  nsert_rowid(D) i
22720 6e 74 65 72 66 61 63 65 20 75 73 75 61 6c 6c 79  nterface usually
22730 20 72 65 74 75 72 6e 73 20 74 68 65 20 5b 72 6f   returns the [ro
22740 77 69 64 5d 20 6f 66 0a 2a 2a 20 74 68 65 20 6d  wid] of.** the m
22750 6f 73 74 20 72 65 63 65 6e 74 20 73 75 63 63 65  ost recent succe
22760 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d 20 69  ssful [INSERT] i
22770 6e 74 6f 20 61 20 72 6f 77 69 64 20 74 61 62 6c  nto a rowid tabl
22780 65 20 6f 72 20 5b 76 69 72 74 75 61 6c 20 74 61  e or [virtual ta
22790 62 6c 65 5d 0a 2a 2a 20 6f 6e 20 64 61 74 61 62  ble].** on datab
227a0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44  ase connection D
227b0 2e 20 5e 49 6e 73 65 72 74 73 20 69 6e 74 6f 20  . ^Inserts into 
227c0 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44 5d 20  [WITHOUT ROWID] 
227d0 74 61 62 6c 65 73 20 61 72 65 20 6e 6f 74 0a 2a  tables are not.*
227e0 2a 20 72 65 63 6f 72 64 65 64 2e 20 5e 49 66 20  * recorded. ^If 
227f0 6e 6f 20 73 75 63 63 65 73 73 66 75 6c 20 5b 49  no successful [I
22800 4e 53 45 52 54 5d 73 20 69 6e 74 6f 20 72 6f 77  NSERT]s into row
22810 69 64 20 74 61 62 6c 65 73 20 68 61 76 65 20 65  id tables have e
22820 76 65 72 20 6f 63 63 75 72 72 65 64 20 0a 2a 2a  ver occurred .**
22830 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   on the database
22840 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2c 20 74   connection D, t
22850 68 65 6e 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  hen sqlite3_last
22860 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29  _insert_rowid(D)
22870 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20 7a 65 72   returns .** zer
22880 6f 2e 0a 2a 2a 0a 2a 2a 20 41 73 20 77 65 6c 6c  o..**.** As well
22890 20 61 73 20 62 65 69 6e 67 20 73 65 74 20 61 75   as being set au
228a0 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73 20 72  tomatically as r
228b0 6f 77 73 20 61 72 65 20 69 6e 73 65 72 74 65 64  ows are inserted
228c0 20 69 6e 74 6f 20 64 61 74 61 62 61 73 65 0a 2a   into database.*
228d0 2a 20 74 61 62 6c 65 73 2c 20 74 68 65 20 76 61  * tables, the va
228e0 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
228f0 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61  this function ma
22900 79 20 62 65 20 73 65 74 20 65 78 70 6c 69 63 69  y be set explici
22910 74 6c 79 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74  tly by.** [sqlit
22920 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73 65  e3_set_last_inse
22930 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a 0a 2a  rt_rowid()].**.*
22940 2a 20 53 6f 6d 65 20 76 69 72 74 75 61 6c 20 74  * Some virtual t
22950 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74  able implementat
22960 69 6f 6e 73 20 6d 61 79 20 49 4e 53 45 52 54 20  ions may INSERT 
22970 72 6f 77 73 20 69 6e 74 6f 20 72 6f 77 69 64 20  rows into rowid 
22980 74 61 62 6c 65 73 20 61 73 0a 2a 2a 20 70 61 72  tables as.** par
22990 74 20 6f 66 20 63 6f 6d 6d 69 74 74 69 6e 67 20  t of committing 
229a0 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 28 65  a transaction (e
229b0 2e 67 2e 20 74 6f 20 66 6c 75 73 68 20 64 61 74  .g. to flush dat
229c0 61 20 61 63 63 75 6d 75 6c 61 74 65 64 20 69 6e  a accumulated in
229d0 20 6d 65 6d 6f 72 79 0a 2a 2a 20 74 6f 20 64 69   memory.** to di
229e0 73 6b 29 2e 20 49 6e 20 74 68 69 73 20 63 61 73  sk). In this cas
229f0 65 20 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c  e subsequent cal
22a00 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e 63 74  ls to this funct
22a10 69 6f 6e 20 72 65 74 75 72 6e 20 74 68 65 20 72  ion return the r
22a20 6f 77 69 64 0a 2a 2a 20 61 73 73 6f 63 69 61 74  owid.** associat
22a30 65 64 20 77 69 74 68 20 74 68 65 73 65 20 69 6e  ed with these in
22a40 74 65 72 6e 61 6c 20 49 4e 53 45 52 54 20 6f 70  ternal INSERT op
22a50 65 72 61 74 69 6f 6e 73 2c 20 77 68 69 63 68 20  erations, which 
22a60 6c 65 61 64 73 20 74 6f 20 0a 2a 2a 20 75 6e 69  leads to .** uni
22a70 6e 74 75 69 74 69 76 65 20 72 65 73 75 6c 74 73  ntuitive results
22a80 2e 20 56 69 72 74 75 61 6c 20 74 61 62 6c 65 20  . Virtual table 
22a90 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20  implementations 
22aa0 74 68 61 74 20 64 6f 20 77 72 69 74 65 20 74 6f  that do write to
22ab0 20 72 6f 77 69 64 0a 2a 2a 20 74 61 62 6c 65 73   rowid.** tables
22ac0 20 69 6e 20 74 68 69 73 20 77 61 79 20 63 61 6e   in this way can
22ad0 20 61 76 6f 69 64 20 74 68 69 73 20 70 72 6f 62   avoid this prob
22ae0 6c 65 6d 20 62 79 20 72 65 73 74 6f 72 69 6e 67  lem by restoring
22af0 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 0a 2a   the original .*
22b00 2a 20 72 6f 77 69 64 20 76 61 6c 75 65 20 75 73  * rowid value us
22b10 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  ing [sqlite3_set
22b20 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
22b30 69 64 28 29 5d 20 62 65 66 6f 72 65 20 72 65 74  id()] before ret
22b40 75 72 6e 69 6e 67 20 0a 2a 2a 20 63 6f 6e 74 72  urning .** contr
22b50 6f 6c 20 74 6f 20 74 68 65 20 75 73 65 72 2e 0a  ol to the user..
22b60 2a 2a 0a 2a 2a 20 5e 28 49 66 20 61 6e 20 5b 49  **.** ^(If an [I
22b70 4e 53 45 52 54 5d 20 6f 63 63 75 72 73 20 77 69  NSERT] occurs wi
22b80 74 68 69 6e 20 61 20 74 72 69 67 67 65 72 20 74  thin a trigger t
22b90 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65  hen this routine
22ba0 20 77 69 6c 6c 20 0a 2a 2a 20 72 65 74 75 72 6e   will .** return
22bb0 20 74 68 65 20 5b 72 6f 77 69 64 5d 20 6f 66 20   the [rowid] of 
22bc0 74 68 65 20 69 6e 73 65 72 74 65 64 20 72 6f 77  the inserted row
22bd0 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 20   as long as the 
22be0 74 72 69 67 67 65 72 20 69 73 20 0a 2a 2a 20 72  trigger is .** r
22bf0 75 6e 6e 69 6e 67 2e 20 4f 6e 63 65 20 74 68 65  unning. Once the
22c00 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
22c10 20 65 6e 64 73 2c 20 74 68 65 20 76 61 6c 75 65   ends, the value
22c20 20 72 65 74 75 72 6e 65 64 20 0a 2a 2a 20 62 79   returned .** by
22c30 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65   this routine re
22c40 76 65 72 74 73 20 74 6f 20 77 68 61 74 20 69 74  verts to what it
22c50 20 77 61 73 20 62 65 66 6f 72 65 20 74 68 65 20   was before the 
22c60 74 72 69 67 67 65 72 20 77 61 73 20 66 69 72 65  trigger was fire
22c70 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 41 6e 20 5b  d.)^.**.** ^An [
22c80 49 4e 53 45 52 54 5d 20 74 68 61 74 20 66 61 69  INSERT] that fai
22c90 6c 73 20 64 75 65 20 74 6f 20 61 20 63 6f 6e 73  ls due to a cons
22ca0 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
22cb0 20 69 73 20 6e 6f 74 20 61 0a 2a 2a 20 73 75 63   is not a.** suc
22cc0 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d  cessful [INSERT]
22cd0 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 63 68   and does not ch
22ce0 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 72  ange the value r
22cf0 65 74 75 72 6e 65 64 20 62 79 20 74 68 69 73 0a  eturned by this.
22d00 2a 2a 20 72 6f 75 74 69 6e 65 2e 20 20 5e 54 68  ** routine.  ^Th
22d10 75 73 20 49 4e 53 45 52 54 20 4f 52 20 46 41 49  us INSERT OR FAI
22d20 4c 2c 20 49 4e 53 45 52 54 20 4f 52 20 49 47 4e  L, INSERT OR IGN
22d30 4f 52 45 2c 20 49 4e 53 45 52 54 20 4f 52 20 52  ORE, INSERT OR R
22d40 4f 4c 4c 42 41 43 4b 2c 0a 2a 2a 20 61 6e 64 20  OLLBACK,.** and 
22d50 49 4e 53 45 52 54 20 4f 52 20 41 42 4f 52 54 20  INSERT OR ABORT 
22d60 6d 61 6b 65 20 6e 6f 20 63 68 61 6e 67 65 73 20  make no changes 
22d70 74 6f 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  to the return va
22d80 6c 75 65 20 6f 66 20 74 68 69 73 0a 2a 2a 20 72  lue of this.** r
22d90 6f 75 74 69 6e 65 20 77 68 65 6e 20 74 68 65 69  outine when thei
22da0 72 20 69 6e 73 65 72 74 69 6f 6e 20 66 61 69 6c  r insertion fail
22db0 73 2e 20 20 5e 28 57 68 65 6e 20 49 4e 53 45 52  s.  ^(When INSER
22dc0 54 20 4f 52 20 52 45 50 4c 41 43 45 0a 2a 2a 20  T OR REPLACE.** 
22dd0 65 6e 63 6f 75 6e 74 65 72 73 20 61 20 63 6f 6e  encounters a con
22de0 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
22df0 6e 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 66  n, it does not f
22e00 61 69 6c 2e 20 20 54 68 65 0a 2a 2a 20 49 4e 53  ail.  The.** INS
22e10 45 52 54 20 63 6f 6e 74 69 6e 75 65 73 20 74 6f  ERT continues to
22e20 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 66 74 65   completion afte
22e30 72 20 64 65 6c 65 74 69 6e 67 20 72 6f 77 73 20  r deleting rows 
22e40 74 68 61 74 20 63 61 75 73 65 64 0a 2a 2a 20 74  that caused.** t
22e50 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 70 72  he constraint pr
22e60 6f 62 6c 65 6d 20 73 6f 20 49 4e 53 45 52 54 20  oblem so INSERT 
22e70 4f 52 20 52 45 50 4c 41 43 45 20 77 69 6c 6c 20  OR REPLACE will 
22e80 61 6c 77 61 79 73 20 63 68 61 6e 67 65 0a 2a 2a  always change.**
22e90 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
22ea0 65 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72 66  e of this interf
22eb0 61 63 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 46 6f  ace.)^.**.** ^Fo
22ec0 72 20 74 68 65 20 70 75 72 70 6f 73 65 73 20 6f  r the purposes o
22ed0 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65 2c 20  f this routine, 
22ee0 61 6e 20 5b 49 4e 53 45 52 54 5d 20 69 73 20 63  an [INSERT] is c
22ef0 6f 6e 73 69 64 65 72 65 64 20 74 6f 0a 2a 2a 20  onsidered to.** 
22f00 62 65 20 73 75 63 63 65 73 73 66 75 6c 20 65 76  be successful ev
22f10 65 6e 20 69 66 20 69 74 20 69 73 20 73 75 62 73  en if it is subs
22f20 65 71 75 65 6e 74 6c 79 20 72 6f 6c 6c 65 64 20  equently rolled 
22f30 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73  back..**.** This
22f40 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 63 63   function is acc
22f50 65 73 73 69 62 6c 65 20 74 6f 20 53 51 4c 20 73  essible to SQL s
22f60 74 61 74 65 6d 65 6e 74 73 20 76 69 61 20 74 68  tatements via th
22f70 65 0a 2a 2a 20 5b 6c 61 73 74 5f 69 6e 73 65 72  e.** [last_inser
22f80 74 5f 72 6f 77 69 64 28 29 20 53 51 4c 20 66 75  t_rowid() SQL fu
22f90 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a 20 49  nction]..**.** I
22fa0 66 20 61 20 73 65 70 61 72 61 74 65 20 74 68 72  f a separate thr
22fb0 65 61 64 20 70 65 72 66 6f 72 6d 73 20 61 20 6e  ead performs a n
22fc0 65 77 20 5b 49 4e 53 45 52 54 5d 20 6f 6e 20 74  ew [INSERT] on t
22fd0 68 65 20 73 61 6d 65 0a 2a 2a 20 64 61 74 61 62  he same.** datab
22fe0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
22ff0 68 69 6c 65 20 74 68 65 20 5b 73 71 6c 69 74 65  hile the [sqlite
23000 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
23010 77 69 64 28 29 5d 0a 2a 2a 20 66 75 6e 63 74 69  wid()].** functi
23020 6f 6e 20 69 73 20 72 75 6e 6e 69 6e 67 20 61 6e  on is running an
23030 64 20 74 68 75 73 20 63 68 61 6e 67 65 73 20 74  d thus changes t
23040 68 65 20 6c 61 73 74 20 69 6e 73 65 72 74 20 5b  he last insert [
23050 72 6f 77 69 64 5d 2c 0a 2a 2a 20 74 68 65 6e 20  rowid],.** then 
23060 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e  the value return
23070 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6c  ed by [sqlite3_l
23080 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64  ast_insert_rowid
23090 28 29 5d 20 69 73 0a 2a 2a 20 75 6e 70 72 65 64  ()] is.** unpred
230a0 69 63 74 61 62 6c 65 20 61 6e 64 20 6d 69 67 68  ictable and migh
230b0 74 20 6e 6f 74 20 65 71 75 61 6c 20 65 69 74 68  t not equal eith
230c0 65 72 20 74 68 65 20 6f 6c 64 20 6f 72 20 74 68  er the old or th
230d0 65 20 6e 65 77 0a 2a 2a 20 6c 61 73 74 20 69 6e  e new.** last in
230e0 73 65 72 74 20 5b 72 6f 77 69 64 5d 2e 0a 2a 2f  sert [rowid]..*/
230f0 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69  .SQLITE_API sqli
23100 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65  te3_int64 sqlite
23110 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
23120 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a  wid(sqlite3*);..
23130 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
23140 53 65 74 20 74 68 65 20 4c 61 73 74 20 49 6e 73  Set the Last Ins
23150 65 72 74 20 52 6f 77 69 64 20 76 61 6c 75 65 2e  ert Rowid value.
23160 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
23170 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71  te3.**.** The sq
23180 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69  lite3_set_last_i
23190 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 2c 20 52  nsert_rowid(D, R
231a0 29 20 6d 65 74 68 6f 64 20 61 6c 6c 6f 77 73 20  ) method allows 
231b0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
231c0 74 6f 0a 2a 2a 20 73 65 74 20 74 68 65 20 76 61  to.** set the va
231d0 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
231e0 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
231f0 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69  last_insert_rowi
23200 64 28 44 29 20 74 6f 20 52 20 0a 2a 2a 20 77 69  d(D) to R .** wi
23210 74 68 6f 75 74 20 69 6e 73 65 72 74 69 6e 67 20  thout inserting 
23220 61 20 72 6f 77 20 69 6e 74 6f 20 74 68 65 20 64  a row into the d
23230 61 74 61 62 61 73 65 2e 0a 2a 2f 0a 53 51 4c 49  atabase..*/.SQLI
23240 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69  TE_API void sqli
23250 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e 73  te3_set_last_ins
23260 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69 74 65  ert_rowid(sqlite
23270 33 2a 2c 73 71 6c 69 74 65 33 5f 69 6e 74 36 34  3*,sqlite3_int64
23280 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
23290 45 46 3a 20 43 6f 75 6e 74 20 54 68 65 20 4e 75  EF: Count The Nu
232a0 6d 62 65 72 20 4f 66 20 52 6f 77 73 20 4d 6f 64  mber Of Rows Mod
232b0 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f 44 3a  ified.** METHOD:
232c0 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e   sqlite3.**.** ^
232d0 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65  This function re
232e0 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72  turns the number
232f0 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65   of rows modifie
23300 64 2c 20 69 6e 73 65 72 74 65 64 20 6f 72 0a 2a  d, inserted or.*
23310 2a 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65  * deleted by the
23320 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79 20 63   most recently c
23330 6f 6d 70 6c 65 74 65 64 20 49 4e 53 45 52 54 2c  ompleted INSERT,
23340 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54   UPDATE or DELET
23350 45 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 6f  E.** statement o
23360 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  n the database c
23370 6f 6e 6e 65 63 74 69 6f 6e 20 73 70 65 63 69 66  onnection specif
23380 69 65 64 20 62 79 20 74 68 65 20 6f 6e 6c 79 20  ied by the only 
23390 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 45  parameter..** ^E
233a0 78 65 63 75 74 69 6e 67 20 61 6e 79 20 6f 74 68  xecuting any oth
233b0 65 72 20 74 79 70 65 20 6f 66 20 53 51 4c 20 73  er type of SQL s
233c0 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f  tatement does no
233d0 74 20 6d 6f 64 69 66 79 20 74 68 65 20 76 61 6c  t modify the val
233e0 75 65 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 62  ue.** returned b
233f0 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e  y this function.
23400 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 63 68 61  .**.** ^Only cha
23410 6e 67 65 73 20 6d 61 64 65 20 64 69 72 65 63 74  nges made direct
23420 6c 79 20 62 79 20 74 68 65 20 49 4e 53 45 52 54  ly by the INSERT
23430 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45  , UPDATE or DELE
23440 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61 72 65  TE statement are
23450 0a 2a 2a 20 63 6f 6e 73 69 64 65 72 65 64 20 2d  .** considered -
23460 20 61 75 78 69 6c 69 61 72 79 20 63 68 61 6e 67   auxiliary chang
23470 65 73 20 63 61 75 73 65 64 20 62 79 20 5b 43 52  es caused by [CR
23480 45 41 54 45 20 54 52 49 47 47 45 52 20 7c 20 74  EATE TRIGGER | t
23490 72 69 67 67 65 72 73 5d 2c 20 0a 2a 2a 20 5b 66  riggers], .** [f
234a0 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74 69 6f  oreign key actio
234b0 6e 73 5d 20 6f 72 20 5b 52 45 50 4c 41 43 45 5d  ns] or [REPLACE]
234c0 20 63 6f 6e 73 74 72 61 69 6e 74 20 72 65 73 6f   constraint reso
234d0 6c 75 74 69 6f 6e 20 61 72 65 20 6e 6f 74 20 63  lution are not c
234e0 6f 75 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 43  ounted..** .** C
234f0 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69 65 77  hanges to a view
23500 20 74 68 61 74 20 61 72 65 20 69 6e 74 65 72 63   that are interc
23510 65 70 74 65 64 20 62 79 20 0a 2a 2a 20 5b 49 4e  epted by .** [IN
23520 53 54 45 41 44 20 4f 46 20 74 72 69 67 67 65 72  STEAD OF trigger
23530 20 7c 20 49 4e 53 54 45 41 44 20 4f 46 20 74 72   | INSTEAD OF tr
23540 69 67 67 65 72 73 5d 20 61 72 65 20 6e 6f 74 20  iggers] are not 
23550 63 6f 75 6e 74 65 64 2e 20 5e 54 68 65 20 76 61  counted. ^The va
23560 6c 75 65 20 0a 2a 2a 20 72 65 74 75 72 6e 65 64  lue .** returned
23570 20 62 79 20 73 71 6c 69 74 65 33 5f 63 68 61 6e   by sqlite3_chan
23580 67 65 73 28 29 20 69 6d 6d 65 64 69 61 74 65 6c  ges() immediatel
23590 79 20 61 66 74 65 72 20 61 6e 20 49 4e 53 45 52  y after an INSER
235a0 54 2c 20 55 50 44 41 54 45 20 6f 72 20 0a 2a 2a  T, UPDATE or .**
235b0 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
235c0 74 20 72 75 6e 20 6f 6e 20 61 20 76 69 65 77 20  t run on a view 
235d0 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f 2e 20  is always zero. 
235e0 4f 6e 6c 79 20 63 68 61 6e 67 65 73 20 6d 61 64  Only changes mad
235f0 65 20 74 6f 20 72 65 61 6c 20 0a 2a 2a 20 74 61  e to real .** ta
23600 62 6c 65 73 20 61 72 65 20 63 6f 75 6e 74 65 64  bles are counted
23610 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 67 73 20 61  ..**.** Things a
23620 72 65 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61  re more complica
23630 74 65 64 20 69 66 20 74 68 65 20 73 71 6c 69 74  ted if the sqlit
23640 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66 75 6e  e3_changes() fun
23650 63 74 69 6f 6e 20 69 73 0a 2a 2a 20 65 78 65 63  ction is.** exec
23660 75 74 65 64 20 77 68 69 6c 65 20 61 20 74 72 69  uted while a tri
23670 67 67 65 72 20 70 72 6f 67 72 61 6d 20 69 73 20  gger program is 
23680 72 75 6e 6e 69 6e 67 2e 20 54 68 69 73 20 6d 61  running. This ma
23690 79 20 68 61 70 70 65 6e 20 69 66 20 74 68 65 0a  y happen if the.
236a0 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 65 73 20  ** program uses 
236b0 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29 20 53  the [changes() S
236c0 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2c 20 6f 72  QL function], or
236d0 20 69 66 20 73 6f 6d 65 20 6f 74 68 65 72 20 63   if some other c
236e0 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e 63 74  allback.** funct
236f0 69 6f 6e 20 69 6e 76 6f 6b 65 73 20 73 71 6c 69  ion invokes sqli
23700 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 64 69  te3_changes() di
23710 72 65 63 74 6c 79 2e 20 45 73 73 65 6e 74 69 61  rectly. Essentia
23720 6c 6c 79 3a 0a 2a 2a 20 0a 2a 2a 20 3c 75 6c 3e  lly:.** .** <ul>
23730 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 42 65 66  .**   <li> ^(Bef
23740 6f 72 65 20 65 6e 74 65 72 69 6e 67 20 61 20 74  ore entering a t
23750 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 74  rigger program t
23760 68 65 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65  he value returne
23770 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20 20 73  d by.**        s
23780 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
23790 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 73 61 76   function is sav
237a0 65 64 2e 20 41 66 74 65 72 20 74 68 65 20 74 72  ed. After the tr
237b0 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 0a 2a  igger program .*
237c0 2a 20 20 20 20 20 20 20 20 68 61 73 20 66 69 6e  *        has fin
237d0 69 73 68 65 64 2c 20 74 68 65 20 6f 72 69 67 69  ished, the origi
237e0 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 72 65 73  nal value is res
237f0 74 6f 72 65 64 2e 29 5e 0a 2a 2a 20 0a 2a 2a 20  tored.)^.** .** 
23800 20 20 3c 6c 69 3e 20 5e 28 57 69 74 68 69 6e 20    <li> ^(Within 
23810 61 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  a trigger progra
23820 6d 20 65 61 63 68 20 49 4e 53 45 52 54 2c 20 55  m each INSERT, U
23830 50 44 41 54 45 20 61 6e 64 20 44 45 4c 45 54 45  PDATE and DELETE
23840 20 0a 2a 2a 20 20 20 20 20 20 20 20 73 74 61 74   .**        stat
23850 65 6d 65 6e 74 20 73 65 74 73 20 74 68 65 20 76  ement sets the v
23860 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79  alue returned by
23870 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
23880 28 29 20 0a 2a 2a 20 20 20 20 20 20 20 20 75 70  () .**        up
23890 6f 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 73  on completion as
238a0 20 6e 6f 72 6d 61 6c 2e 20 4f 66 20 63 6f 75 72   normal. Of cour
238b0 73 65 2c 20 74 68 69 73 20 76 61 6c 75 65 20 77  se, this value w
238c0 69 6c 6c 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20  ill not include 
238d0 0a 2a 2a 20 20 20 20 20 20 20 20 61 6e 79 20 63  .**        any c
238e0 68 61 6e 67 65 73 20 70 65 72 66 6f 72 6d 65 64  hanges performed
238f0 20 62 79 20 73 75 62 2d 74 72 69 67 67 65 72 73   by sub-triggers
23900 2c 20 61 73 20 74 68 65 20 73 71 6c 69 74 65 33  , as the sqlite3
23910 5f 63 68 61 6e 67 65 73 28 29 20 0a 2a 2a 20 20  _changes() .**  
23920 20 20 20 20 20 20 76 61 6c 75 65 20 77 69 6c 6c        value will
23930 20 62 65 20 73 61 76 65 64 20 61 6e 64 20 72 65   be saved and re
23940 73 74 6f 72 65 64 20 61 66 74 65 72 20 65 61 63  stored after eac
23950 68 20 73 75 62 2d 74 72 69 67 67 65 72 20 68 61  h sub-trigger ha
23960 73 20 72 75 6e 2e 29 5e 0a 2a 2a 20 3c 2f 75 6c  s run.)^.** </ul
23970 3e 0a 2a 2a 20 0a 2a 2a 20 5e 54 68 69 73 20 6d  >.** .** ^This m
23980 65 61 6e 73 20 74 68 61 74 20 69 66 20 74 68 65  eans that if the
23990 20 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66   changes() SQL f
239a0 75 6e 63 74 69 6f 6e 20 28 6f 72 20 73 69 6d 69  unction (or simi
239b0 6c 61 72 29 20 69 73 20 75 73 65 64 0a 2a 2a 20  lar) is used.** 
239c0 62 79 20 74 68 65 20 66 69 72 73 74 20 49 4e 53  by the first INS
239d0 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44  ERT, UPDATE or D
239e0 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20  ELETE statement 
239f0 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
23a00 2c 20 69 74 20 0a 2a 2a 20 72 65 74 75 72 6e 73  , it .** returns
23a10 20 74 68 65 20 76 61 6c 75 65 20 61 73 20 73 65   the value as se
23a20 74 20 77 68 65 6e 20 74 68 65 20 63 61 6c 6c 69  t when the calli
23a30 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 62 65 67  ng statement beg
23a40 61 6e 20 65 78 65 63 75 74 69 6e 67 2e 0a 2a 2a  an executing..**
23a50 20 5e 49 66 20 69 74 20 69 73 20 75 73 65 64 20   ^If it is used 
23a60 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20 6f 72  by the second or
23a70 20 73 75 62 73 65 71 75 65 6e 74 20 73 75 63 68   subsequent such
23a80 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69   statement withi
23a90 6e 20 61 20 74 72 69 67 67 65 72 20 0a 2a 2a 20  n a trigger .** 
23aa0 70 72 6f 67 72 61 6d 2c 20 74 68 65 20 76 61 6c  program, the val
23ab0 75 65 20 72 65 74 75 72 6e 65 64 20 72 65 66 6c  ue returned refl
23ac0 65 63 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20  ects the number 
23ad0 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69 65 64  of rows modified
23ae0 20 62 79 20 74 68 65 20 0a 2a 2a 20 70 72 65 76   by the .** prev
23af0 69 6f 75 73 20 49 4e 53 45 52 54 2c 20 55 50 44  ious INSERT, UPD
23b00 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20 73 74  ATE or DELETE st
23b10 61 74 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 74  atement within t
23b20 68 65 20 73 61 6d 65 20 74 72 69 67 67 65 72 2e  he same trigger.
23b30 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65 70 61  .**.** If a sepa
23b40 72 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65  rate thread make
23b50 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65  s changes on the
23b60 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63   same database c
23b70 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69  onnection.** whi
23b80 6c 65 20 5b 73 71 6c 69 74 65 33 5f 63 68 61 6e  le [sqlite3_chan
23b90 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e 69 6e  ges()] is runnin
23ba0 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c 75 65  g then the value
23bb0 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69 73 20   returned.** is 
23bc0 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20 61 6e  unpredictable an
23bd0 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66 75 6c  d not meaningful
23be0 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f  ..**.** See also
23bf0 3a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ul>.** <li
23c00 3e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  > the [sqlite3_t
23c10 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20  otal_changes()] 
23c20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c 6c 69  interface.** <li
23c30 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61  > the [count_cha
23c40 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a 2a 20  nges pragma].** 
23c50 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e 67 65  <li> the [change
23c60 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  s() SQL function
23c70 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 64  ].** <li> the [d
23c80 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72 61 67  ata_version prag
23c90 6d 61 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2f 0a  ma].** </ul>.*/.
23ca0 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
23cb0 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 73  qlite3_changes(s
23cc0 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
23cd0 20 43 41 50 49 33 52 45 46 3a 20 54 6f 74 61 6c   CAPI3REF: Total
23ce0 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f 77 73 20   Number Of Rows 
23cf0 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48  Modified.** METH
23d00 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
23d10 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  * ^This function
23d20 20 72 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74   returns the tot
23d30 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  al number of row
23d40 73 20 69 6e 73 65 72 74 65 64 2c 20 6d 6f 64 69  s inserted, modi
23d50 66 69 65 64 20 6f 72 0a 2a 2a 20 64 65 6c 65 74  fied or.** delet
23d60 65 64 20 62 79 20 61 6c 6c 20 5b 49 4e 53 45 52  ed by all [INSER
23d70 54 5d 2c 20 5b 55 50 44 41 54 45 5d 20 6f 72 20  T], [UPDATE] or 
23d80 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65 6d 65  [DELETE] stateme
23d90 6e 74 73 20 63 6f 6d 70 6c 65 74 65 64 0a 2a 2a  nts completed.**
23da0 20 73 69 6e 63 65 20 74 68 65 20 64 61 74 61 62   since the datab
23db0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77  ase connection w
23dc0 61 73 20 6f 70 65 6e 65 64 2c 20 69 6e 63 6c 75  as opened, inclu
23dd0 64 69 6e 67 20 74 68 6f 73 65 20 65 78 65 63 75  ding those execu
23de0 74 65 64 20 61 73 0a 2a 2a 20 70 61 72 74 20 6f  ted as.** part o
23df0 66 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  f trigger progra
23e00 6d 73 2e 20 5e 45 78 65 63 75 74 69 6e 67 20 61  ms. ^Executing a
23e10 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20 6f 66  ny other type of
23e20 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 0a 2a   SQL statement.*
23e30 2a 20 64 6f 65 73 20 6e 6f 74 20 61 66 66 65 63  * does not affec
23e40 74 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  t the value retu
23e50 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
23e60 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 2e  total_changes().
23e70 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61 6e 67 65 73  .** .** ^Changes
23e80 20 6d 61 64 65 20 61 73 20 70 61 72 74 20 6f 66   made as part of
23e90 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63   [foreign key ac
23ea0 74 69 6f 6e 73 5d 20 61 72 65 20 69 6e 63 6c 75  tions] are inclu
23eb0 64 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20 63 6f  ded in the.** co
23ec0 75 6e 74 2c 20 62 75 74 20 74 68 6f 73 65 20 6d  unt, but those m
23ed0 61 64 65 20 61 73 20 70 61 72 74 20 6f 66 20 52  ade as part of R
23ee0 45 50 4c 41 43 45 20 63 6f 6e 73 74 72 61 69 6e  EPLACE constrain
23ef0 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 72 65  t resolution are
23f00 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68 61 6e 67 65  .** not. ^Change
23f10 73 20 74 6f 20 61 20 76 69 65 77 20 74 68 61 74  s to a view that
23f20 20 61 72 65 20 69 6e 74 65 72 63 65 70 74 65 64   are intercepted
23f30 20 62 79 20 49 4e 53 54 45 41 44 20 4f 46 20 74   by INSTEAD OF t
23f40 72 69 67 67 65 72 73 20 0a 2a 2a 20 61 72 65 20  riggers .** are 
23f50 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 0a  not counted..**.
23f60 2a 2a 20 54 68 69 73 20 74 68 65 20 5b 73 71 6c  ** This the [sql
23f70 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67  ite3_total_chang
23f80 65 73 28 44 29 5d 20 69 6e 74 65 72 66 61 63 65  es(D)] interface
23f90 20 6f 6e 6c 79 20 72 65 70 6f 72 74 73 20 74 68   only reports th
23fa0 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f 66 20 72  e number.** of r
23fb0 6f 77 73 20 74 68 61 74 20 63 68 61 6e 67 65 64  ows that changed
23fc0 20 64 75 65 20 74 6f 20 53 51 4c 20 73 74 61 74   due to SQL stat
23fd0 65 6d 65 6e 74 20 72 75 6e 20 61 67 61 69 6e 73  ement run agains
23fe0 74 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f  t database.** co
23ff0 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 20 41 6e 79  nnection D.  Any
24000 20 63 68 61 6e 67 65 73 20 62 79 20 6f 74 68 65   changes by othe
24010 72 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  r database conne
24020 63 74 69 6f 6e 73 20 61 72 65 20 69 67 6e 6f 72  ctions are ignor
24030 65 64 2e 0a 2a 2a 20 54 6f 20 64 65 74 65 63 74  ed..** To detect
24040 20 63 68 61 6e 67 65 73 20 61 67 61 69 6e 73 74   changes against
24050 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
24060 20 66 72 6f 6d 20 6f 74 68 65 72 20 64 61 74 61   from other data
24070 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69  base.** connecti
24080 6f 6e 73 20 75 73 65 20 74 68 65 20 5b 50 52 41  ons use the [PRA
24090 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e  GMA data_version
240a0 5d 20 63 6f 6d 6d 61 6e 64 20 6f 72 20 74 68 65  ] command or the
240b0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  .** [SQLITE_FCNT
240c0 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f 4e 5d 20  L_DATA_VERSION] 
240d0 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 5d 2e 0a  [file control]..
240e0 2a 2a 20 0a 2a 2a 20 49 66 20 61 20 73 65 70 61  ** .** If a sepa
240f0 72 61 74 65 20 74 68 72 65 61 64 20 6d 61 6b 65  rate thread make
24100 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74 68 65  s changes on the
24110 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 63   same database c
24120 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77 68 69  onnection.** whi
24130 6c 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74 61  le [sqlite3_tota
24140 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 73 20  l_changes()] is 
24150 72 75 6e 6e 69 6e 67 20 74 68 65 6e 20 74 68 65  running then the
24160 20 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75 72 6e   value.** return
24170 65 64 20 69 73 20 75 6e 70 72 65 64 69 63 74 61  ed is unpredicta
24180 62 6c 65 20 61 6e 64 20 6e 6f 74 20 6d 65 61 6e  ble and not mean
24190 69 6e 67 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65  ingful..**.** Se
241a0 65 20 61 6c 73 6f 3a 0a 2a 2a 20 3c 75 6c 3e 0a  e also:.** <ul>.
241b0 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 73 71 6c  ** <li> the [sql
241c0 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 5d 20  ite3_changes()] 
241d0 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c 6c 69  interface.** <li
241e0 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63 68 61  > the [count_cha
241f0 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a 2a 20  nges pragma].** 
24200 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e 67 65  <li> the [change
24210 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  s() SQL function
24220 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 64  ].** <li> the [d
24230 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72 61 67  ata_version prag
24240 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20  ma].** <li> the 
24250 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41  [SQLITE_FCNTL_DA
24260 54 41 5f 56 45 52 53 49 4f 4e 5d 20 5b 66 69 6c  TA_VERSION] [fil
24270 65 20 63 6f 6e 74 72 6f 6c 5d 0a 2a 2a 20 3c 2f  e control].** </
24280 75 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  ul>.*/.SQLITE_AP
24290 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 6f  I int sqlite3_to
242a0 74 61 6c 5f 63 68 61 6e 67 65 73 28 73 71 6c 69  tal_changes(sqli
242b0 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  te3*);../*.** CA
242c0 50 49 33 52 45 46 3a 20 49 6e 74 65 72 72 75 70  PI3REF: Interrup
242d0 74 20 41 20 4c 6f 6e 67 2d 52 75 6e 6e 69 6e 67  t A Long-Running
242e0 20 51 75 65 72 79 0a 2a 2a 20 4d 45 54 48 4f 44   Query.** METHOD
242f0 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
24300 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63  ^This function c
24310 61 75 73 65 73 20 61 6e 79 20 70 65 6e 64 69 6e  auses any pendin
24320 67 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61  g database opera
24330 74 69 6f 6e 20 74 6f 20 61 62 6f 72 74 20 61 6e  tion to abort an
24340 64 0a 2a 2a 20 72 65 74 75 72 6e 20 61 74 20 69  d.** return at i
24350 74 73 20 65 61 72 6c 69 65 73 74 20 6f 70 70 6f  ts earliest oppo
24360 72 74 75 6e 69 74 79 2e 20 54 68 69 73 20 72 6f  rtunity. This ro
24370 75 74 69 6e 65 20 69 73 20 74 79 70 69 63 61 6c  utine is typical
24380 6c 79 0a 2a 2a 20 63 61 6c 6c 65 64 20 69 6e 20  ly.** called in 
24390 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20 75 73  response to a us
243a0 65 72 20 61 63 74 69 6f 6e 20 73 75 63 68 20 61  er action such a
243b0 73 20 70 72 65 73 73 69 6e 67 20 22 43 61 6e 63  s pressing "Canc
243c0 65 6c 22 0a 2a 2a 20 6f 72 20 43 74 72 6c 2d 43  el".** or Ctrl-C
243d0 20 77 68 65 72 65 20 74 68 65 20 75 73 65 72 20   where the user 
243e0 77 61 6e 74 73 20 61 20 6c 6f 6e 67 20 71 75 65  wants a long que
243f0 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 74 6f 20  ry operation to 
24400 68 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69 61 74  halt.** immediat
24410 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 74 20 69  ely..**.** ^It i
24420 73 20 73 61 66 65 20 74 6f 20 63 61 6c 6c 20 74  s safe to call t
24430 68 69 73 20 72 6f 75 74 69 6e 65 20 66 72 6f 6d  his routine from
24440 20 61 20 74 68 72 65 61 64 20 64 69 66 66 65 72   a thread differ
24450 65 6e 74 20 66 72 6f 6d 20 74 68 65 0a 2a 2a 20  ent from the.** 
24460 74 68 72 65 61 64 20 74 68 61 74 20 69 73 20 63  thread that is c
24470 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67  urrently running
24480 20 74 68 65 20 64 61 74 61 62 61 73 65 20 6f 70   the database op
24490 65 72 61 74 69 6f 6e 2e 20 20 42 75 74 20 69 74  eration.  But it
244a0 0a 2a 2a 20 69 73 20 6e 6f 74 20 73 61 66 65 20  .** is not safe 
244b0 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72 6f 75  to call this rou
244c0 74 69 6e 65 20 77 69 74 68 20 61 20 5b 64 61 74  tine with a [dat
244d0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
244e0 5d 20 74 68 61 74 0a 2a 2a 20 69 73 20 63 6c 6f  ] that.** is clo
244f0 73 65 64 20 6f 72 20 6d 69 67 68 74 20 63 6c 6f  sed or might clo
24500 73 65 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65  se before sqlite
24510 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20 72 65  3_interrupt() re
24520 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  turns..**.** ^If
24530 20 61 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f   an SQL operatio
24540 6e 20 69 73 20 76 65 72 79 20 6e 65 61 72 6c 79  n is very nearly
24550 20 66 69 6e 69 73 68 65 64 20 61 74 20 74 68 65   finished at the
24560 20 74 69 6d 65 20 77 68 65 6e 0a 2a 2a 20 73 71   time when.** sq
24570 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
24580 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74 68 65  ) is called, the
24590 6e 20 69 74 20 6d 69 67 68 74 20 6e 6f 74 20 68  n it might not h
245a0 61 76 65 20 61 6e 20 6f 70 70 6f 72 74 75 6e 69  ave an opportuni
245b0 74 79 0a 2a 2a 20 74 6f 20 62 65 20 69 6e 74 65  ty.** to be inte
245c0 72 72 75 70 74 65 64 20 61 6e 64 20 6d 69 67 68  rrupted and migh
245d0 74 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 63 6f  t continue to co
245e0 6d 70 6c 65 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  mpletion..**.** 
245f0 5e 41 6e 20 53 51 4c 20 6f 70 65 72 61 74 69 6f  ^An SQL operatio
24600 6e 20 74 68 61 74 20 69 73 20 69 6e 74 65 72 72  n that is interr
24610 75 70 74 65 64 20 77 69 6c 6c 20 72 65 74 75 72  upted will retur
24620 6e 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45 52 52  n [SQLITE_INTERR
24630 55 50 54 5d 2e 0a 2a 2a 20 5e 49 66 20 74 68 65  UPT]..** ^If the
24640 20 69 6e 74 65 72 72 75 70 74 65 64 20 53 51 4c   interrupted SQL
24650 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 6e   operation is an
24660 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54 45 2c   INSERT, UPDATE,
24670 20 6f 72 20 44 45 4c 45 54 45 0a 2a 2a 20 74 68   or DELETE.** th
24680 61 74 20 69 73 20 69 6e 73 69 64 65 20 61 6e 20  at is inside an 
24690 65 78 70 6c 69 63 69 74 20 74 72 61 6e 73 61 63  explicit transac
246a0 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 65  tion, then the e
246b0 6e 74 69 72 65 20 74 72 61 6e 73 61 63 74 69 6f  ntire transactio
246c0 6e 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 72 6f 6c  n.** will be rol
246d0 6c 65 64 20 62 61 63 6b 20 61 75 74 6f 6d 61 74  led back automat
246e0 69 63 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54  ically..**.** ^T
246f0 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65 72  he sqlite3_inter
24700 72 75 70 74 28 44 29 20 63 61 6c 6c 20 69 73 20  rupt(D) call is 
24710 69 6e 20 65 66 66 65 63 74 20 75 6e 74 69 6c 20  in effect until 
24720 61 6c 6c 20 63 75 72 72 65 6e 74 6c 79 20 72 75  all currently ru
24730 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74 61  nning.** SQL sta
24740 74 65 6d 65 6e 74 73 20 6f 6e 20 5b 64 61 74 61  tements on [data
24750 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
24760 20 44 20 63 6f 6d 70 6c 65 74 65 2e 20 20 5e 41   D complete.  ^A
24770 6e 79 20 6e 65 77 20 53 51 4c 20 73 74 61 74 65  ny new SQL state
24780 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20 61 72  ments.** that ar
24790 65 20 73 74 61 72 74 65 64 20 61 66 74 65 72 20  e started after 
247a0 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74 65  the sqlite3_inte
247b0 72 72 75 70 74 28 29 20 63 61 6c 6c 20 61 6e 64  rrupt() call and
247c0 20 62 65 66 6f 72 65 20 74 68 65 20 0a 2a 2a 20   before the .** 
247d0 72 75 6e 6e 69 6e 67 20 73 74 61 74 65 6d 65 6e  running statemen
247e0 74 73 20 72 65 61 63 68 65 73 20 7a 65 72 6f 20  ts reaches zero 
247f0 61 72 65 20 69 6e 74 65 72 72 75 70 74 65 64 20  are interrupted 
24800 61 73 20 69 66 20 74 68 65 79 20 68 61 64 20 62  as if they had b
24810 65 65 6e 0a 2a 2a 20 72 75 6e 6e 69 6e 67 20 70  een.** running p
24820 72 69 6f 72 20 74 6f 20 74 68 65 20 73 71 6c 69  rior to the sqli
24830 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20  te3_interrupt() 
24840 63 61 6c 6c 2e 20 20 5e 4e 65 77 20 53 51 4c 20  call.  ^New SQL 
24850 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68  statements.** th
24860 61 74 20 61 72 65 20 73 74 61 72 74 65 64 20 61  at are started a
24870 66 74 65 72 20 74 68 65 20 72 75 6e 6e 69 6e 67  fter the running
24880 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 75 6e 74   statement count
24890 20 72 65 61 63 68 65 73 20 7a 65 72 6f 20 61 72   reaches zero ar
248a0 65 0a 2a 2a 20 6e 6f 74 20 65 66 66 65 63 74 65  e.** not effecte
248b0 64 20 62 79 20 74 68 65 20 73 71 6c 69 74 65 33  d by the sqlite3
248c0 5f 69 6e 74 65 72 72 75 70 74 28 29 2e 0a 2a 2a  _interrupt()..**
248d0 20 5e 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c 69   ^A call to sqli
248e0 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 44 29  te3_interrupt(D)
248f0 20 74 68 61 74 20 6f 63 63 75 72 73 20 77 68 65   that occurs whe
24900 6e 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 72  n there are no r
24910 75 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20 73 74  unning.** SQL st
24920 61 74 65 6d 65 6e 74 73 20 69 73 20 61 20 6e 6f  atements is a no
24930 2d 6f 70 20 61 6e 64 20 68 61 73 20 6e 6f 20 65  -op and has no e
24940 66 66 65 63 74 20 6f 6e 20 53 51 4c 20 73 74 61  ffect on SQL sta
24950 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20  tements.** that 
24960 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74 65  are started afte
24970 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  r the sqlite3_in
24980 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c 20 72  terrupt() call r
24990 65 74 75 72 6e 73 2e 0a 2a 2f 0a 53 51 4c 49 54  eturns..*/.SQLIT
249a0 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74  E_API void sqlit
249b0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 73 71 6c  e3_interrupt(sql
249c0 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  ite3*);../*.** C
249d0 41 50 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69  API3REF: Determi
249e0 6e 65 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61  ne If An SQL Sta
249f0 74 65 6d 65 6e 74 20 49 73 20 43 6f 6d 70 6c 65  tement Is Comple
24a00 74 65 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72  te.**.** These r
24a10 6f 75 74 69 6e 65 73 20 61 72 65 20 75 73 65 66  outines are usef
24a20 75 6c 20 64 75 72 69 6e 67 20 63 6f 6d 6d 61 6e  ul during comman
24a30 64 2d 6c 69 6e 65 20 69 6e 70 75 74 20 74 6f 20  d-line input to 
24a40 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74 68 65  determine if the
24a50 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20 65 6e  .** currently en
24a60 74 65 72 65 64 20 74 65 78 74 20 73 65 65 6d 73  tered text seems
24a70 20 74 6f 20 66 6f 72 6d 20 61 20 63 6f 6d 70 6c   to form a compl
24a80 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
24a90 74 20 6f 72 0a 2a 2a 20 69 66 20 61 64 64 69 74  t or.** if addit
24aa0 69 6f 6e 61 6c 20 69 6e 70 75 74 20 69 73 20 6e  ional input is n
24ab0 65 65 64 65 64 20 62 65 66 6f 72 65 20 73 65 6e  eeded before sen
24ac0 64 69 6e 67 20 74 68 65 20 74 65 78 74 20 69 6e  ding the text in
24ad0 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20 66 6f 72  to.** SQLite for
24ae0 20 70 61 72 73 69 6e 67 2e 20 20 5e 54 68 65 73   parsing.  ^Thes
24af0 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  e routines retur
24b00 6e 20 31 20 69 66 20 74 68 65 20 69 6e 70 75 74  n 1 if the input
24b10 20 73 74 72 69 6e 67 0a 2a 2a 20 61 70 70 65 61   string.** appea
24b20 72 73 20 74 6f 20 62 65 20 61 20 63 6f 6d 70 6c  rs to be a compl
24b30 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ete SQL statemen
24b40 74 2e 20 20 5e 41 20 73 74 61 74 65 6d 65 6e 74  t.  ^A statement
24b50 20 69 73 20 6a 75 64 67 65 64 20 74 6f 20 62 65   is judged to be
24b60 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20 69 66 20  .** complete if 
24b70 69 74 20 65 6e 64 73 20 77 69 74 68 20 61 20 73  it ends with a s
24b80 65 6d 69 63 6f 6c 6f 6e 20 74 6f 6b 65 6e 20 61  emicolon token a
24b90 6e 64 20 69 73 20 6e 6f 74 20 61 20 70 72 65 66  nd is not a pref
24ba0 69 78 20 6f 66 20 61 0a 2a 2a 20 77 65 6c 6c 2d  ix of a.** well-
24bb0 66 6f 72 6d 65 64 20 43 52 45 41 54 45 20 54 52  formed CREATE TR
24bc0 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e  IGGER statement.
24bd0 20 20 5e 53 65 6d 69 63 6f 6c 6f 6e 73 20 74 68    ^Semicolons th
24be0 61 74 20 61 72 65 20 65 6d 62 65 64 64 65 64 20  at are embedded 
24bf0 77 69 74 68 69 6e 0a 2a 2a 20 73 74 72 69 6e 67  within.** string
24c00 20 6c 69 74 65 72 61 6c 73 20 6f 72 20 71 75 6f   literals or quo
24c10 74 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 6e  ted identifier n
24c20 61 6d 65 73 20 6f 72 20 63 6f 6d 6d 65 6e 74 73  ames or comments
24c30 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 69 6e 64 65   are not.** inde
24c40 70 65 6e 64 65 6e 74 20 74 6f 6b 65 6e 73 20 28  pendent tokens (
24c50 74 68 65 79 20 61 72 65 20 70 61 72 74 20 6f 66  they are part of
24c60 20 74 68 65 20 74 6f 6b 65 6e 20 69 6e 20 77 68   the token in wh
24c70 69 63 68 20 74 68 65 79 20 61 72 65 0a 2a 2a 20  ich they are.** 
24c80 65 6d 62 65 64 64 65 64 29 20 61 6e 64 20 74 68  embedded) and th
24c90 75 73 20 64 6f 20 6e 6f 74 20 63 6f 75 6e 74 20  us do not count 
24ca0 61 73 20 61 20 73 74 61 74 65 6d 65 6e 74 20 74  as a statement t
24cb0 65 72 6d 69 6e 61 74 6f 72 2e 20 20 5e 57 68 69  erminator.  ^Whi
24cc0 74 65 73 70 61 63 65 0a 2a 2a 20 61 6e 64 20 63  tespace.** and c
24cd0 6f 6d 6d 65 6e 74 73 20 74 68 61 74 20 66 6f 6c  omments that fol
24ce0 6c 6f 77 20 74 68 65 20 66 69 6e 61 6c 20 73 65  low the final se
24cf0 6d 69 63 6f 6c 6f 6e 20 61 72 65 20 69 67 6e 6f  micolon are igno
24d00 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 73  red..**.** ^Thes
24d10 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72  e routines retur
24d20 6e 20 30 20 69 66 20 74 68 65 20 73 74 61 74 65  n 0 if the state
24d30 6d 65 6e 74 20 69 73 20 69 6e 63 6f 6d 70 6c 65  ment is incomple
24d40 74 65 2e 20 20 5e 49 66 20 61 0a 2a 2a 20 6d 65  te.  ^If a.** me
24d50 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
24d60 66 61 69 6c 73 2c 20 74 68 65 6e 20 53 51 4c 49  fails, then SQLI
24d70 54 45 5f 4e 4f 4d 45 4d 20 69 73 20 72 65 74 75  TE_NOMEM is retu
24d80 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  rned..**.** ^The
24d90 73 65 20 72 6f 75 74 69 6e 65 73 20 64 6f 20 6e  se routines do n
24da0 6f 74 20 70 61 72 73 65 20 74 68 65 20 53 51 4c  ot parse the SQL
24db0 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 75 73   statements thus
24dc0 0a 2a 2a 20 77 69 6c 6c 20 6e 6f 74 20 64 65 74  .** will not det
24dd0 65 63 74 20 73 79 6e 74 61 63 74 69 63 61 6c 6c  ect syntacticall
24de0 79 20 69 6e 63 6f 72 72 65 63 74 20 53 51 4c 2e  y incorrect SQL.
24df0 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20 53 51 4c 69  .**.** ^(If SQLi
24e00 74 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  te has not been 
24e10 69 6e 69 74 69 61 6c 69 7a 65 64 20 75 73 69 6e  initialized usin
24e20 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69 74 69  g [sqlite3_initi
24e30 61 6c 69 7a 65 28 29 5d 20 70 72 69 6f 72 20 0a  alize()] prior .
24e40 2a 2a 20 74 6f 20 69 6e 76 6f 6b 69 6e 67 20 73  ** to invoking s
24e50 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
24e60 36 28 29 20 74 68 65 6e 20 73 71 6c 69 74 65 33  6() then sqlite3
24e70 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73  _initialize() is
24e80 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61 75 74 6f   invoked.** auto
24e90 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c  matically by sql
24ea0 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28  ite3_complete16(
24eb0 29 2e 20 20 49 66 20 74 68 61 74 20 69 6e 69 74  ).  If that init
24ec0 69 61 6c 69 7a 61 74 69 6f 6e 20 66 61 69 6c 73  ialization fails
24ed0 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 72 65  ,.** then the re
24ee0 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d 20  turn value from 
24ef0 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65  sqlite3_complete
24f00 31 36 28 29 20 77 69 6c 6c 20 62 65 20 6e 6f 6e  16() will be non
24f10 2d 7a 65 72 6f 0a 2a 2a 20 72 65 67 61 72 64 6c  -zero.** regardl
24f20 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f  ess of whether o
24f30 72 20 6e 6f 74 20 74 68 65 20 69 6e 70 75 74 20  r not the input 
24f40 53 51 4c 20 69 73 20 63 6f 6d 70 6c 65 74 65 2e  SQL is complete.
24f50 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69 6e 70  )^.**.** The inp
24f60 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 63  ut to [sqlite3_c
24f70 6f 6d 70 6c 65 74 65 28 29 5d 20 6d 75 73 74 20  omplete()] must 
24f80 62 65 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  be a zero-termin
24f90 61 74 65 64 0a 2a 2a 20 55 54 46 2d 38 20 73 74  ated.** UTF-8 st
24fa0 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ring..**.** The 
24fb0 69 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65  input to [sqlite
24fc0 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29 5d 20  3_complete16()] 
24fd0 6d 75 73 74 20 62 65 20 61 20 7a 65 72 6f 2d 74  must be a zero-t
24fe0 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46  erminated.** UTF
24ff0 2d 31 36 20 73 74 72 69 6e 67 20 69 6e 20 6e 61  -16 string in na
25000 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e  tive byte order.
25010 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
25020 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c  nt sqlite3_compl
25030 65 74 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a  ete(const char *
25040 73 71 6c 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  sql);.SQLITE_API
25050 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d   int sqlite3_com
25060 70 6c 65 74 65 31 36 28 63 6f 6e 73 74 20 76 6f  plete16(const vo
25070 69 64 20 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a 2a 2a  id *sql);../*.**
25080 20 43 41 50 49 33 52 45 46 3a 20 52 65 67 69 73   CAPI3REF: Regis
25090 74 65 72 20 41 20 43 61 6c 6c 62 61 63 6b 20 54  ter A Callback T
250a0 6f 20 48 61 6e 64 6c 65 20 53 51 4c 49 54 45 5f  o Handle SQLITE_
250b0 42 55 53 59 20 45 72 72 6f 72 73 0a 2a 2a 20 4b  BUSY Errors.** K
250c0 45 59 57 4f 52 44 53 3a 20 7b 62 75 73 79 2d 68  EYWORDS: {busy-h
250d0 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b 7d  andler callback}
250e0 20 7b 62 75 73 79 20 68 61 6e 64 6c 65 72 7d 0a   {busy handler}.
250f0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
25100 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  e3.**.** ^The sq
25110 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c  lite3_busy_handl
25120 65 72 28 44 2c 58 2c 50 29 20 72 6f 75 74 69 6e  er(D,X,P) routin
25130 65 20 73 65 74 73 20 61 20 63 61 6c 6c 62 61 63  e sets a callbac
25140 6b 20 66 75 6e 63 74 69 6f 6e 20 58 0a 2a 2a 20  k function X.** 
25150 74 68 61 74 20 6d 69 67 68 74 20 62 65 20 69 6e  that might be in
25160 76 6f 6b 65 64 20 77 69 74 68 20 61 72 67 75 6d  voked with argum
25170 65 6e 74 20 50 20 77 68 65 6e 65 76 65 72 0a 2a  ent P whenever.*
25180 2a 20 61 6e 20 61 74 74 65 6d 70 74 20 69 73 20  * an attempt is 
25190 6d 61 64 65 20 74 6f 20 61 63 63 65 73 73 20 61  made to access a
251a0 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20   database table 
251b0 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 0a  associated with.
251c0 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
251d0 6e 65 63 74 69 6f 6e 5d 20 44 20 77 68 65 6e 20  nection] D when 
251e0 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64 0a 2a  another thread.*
251f0 2a 20 6f 72 20 70 72 6f 63 65 73 73 20 68 61 73  * or process has
25200 20 74 68 65 20 74 61 62 6c 65 20 6c 6f 63 6b 65   the table locke
25210 64 2e 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  d..** The sqlite
25220 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 28 29  3_busy_handler()
25230 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 75 73   interface is us
25240 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 0a  ed to implement.
25250 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79  ** [sqlite3_busy
25260 5f 74 69 6d 65 6f 75 74 28 29 5d 20 61 6e 64 20  _timeout()] and 
25270 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d  [PRAGMA busy_tim
25280 65 6f 75 74 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  eout]..**.** ^If
25290 20 74 68 65 20 62 75 73 79 20 63 61 6c 6c 62 61   the busy callba
252a0 63 6b 20 69 73 20 4e 55 4c 4c 2c 20 74 68 65 6e  ck is NULL, then
252b0 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 0a 2a   [SQLITE_BUSY].*
252c0 2a 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 6d  * is returned im
252d0 6d 65 64 69 61 74 65 6c 79 20 75 70 6f 6e 20 65  mediately upon e
252e0 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20  ncountering the 
252f0 6c 6f 63 6b 2e 20 20 5e 49 66 20 74 68 65 20 62  lock.  ^If the b
25300 75 73 79 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  usy callback.** 
25310 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74 68 65  is not NULL, the
25320 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 6d  n the callback m
25330 69 67 68 74 20 62 65 20 69 6e 76 6f 6b 65 64 20  ight be invoked 
25340 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d 65 6e  with two argumen
25350 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66  ts..**.** ^The f
25360 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f  irst argument to
25370 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65   the busy handle
25380 72 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74  r is a copy of t
25390 68 65 20 76 6f 69 64 2a 20 70 6f 69 6e 74 65 72  he void* pointer
253a0 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 74 68 65   which.** is the
253b0 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20   third argument 
253c0 74 6f 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f  to sqlite3_busy_
253d0 68 61 6e 64 6c 65 72 28 29 2e 20 20 5e 54 68 65  handler().  ^The
253e0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
253f0 20 74 6f 0a 2a 2a 20 74 68 65 20 62 75 73 79 20   to.** the busy 
25400 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63 6b  handler callback
25410 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   is the number o
25420 66 20 74 69 6d 65 73 20 74 68 61 74 20 74 68 65  f times that the
25430 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 68 61   busy handler ha
25440 73 0a 2a 2a 20 62 65 65 6e 20 69 6e 76 6f 6b 65  s.** been invoke
25450 64 20 70 72 65 76 69 6f 75 73 6c 79 20 66 6f 72  d previously for
25460 20 74 68 65 20 73 61 6d 65 20 6c 6f 63 6b 69 6e   the same lockin
25470 67 20 65 76 65 6e 74 2e 20 20 5e 49 66 20 74 68  g event.  ^If th
25480 65 0a 2a 2a 20 62 75 73 79 20 63 61 6c 6c 62 61  e.** busy callba
25490 63 6b 20 72 65 74 75 72 6e 73 20 30 2c 20 74 68  ck returns 0, th
254a0 65 6e 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c  en no additional
254b0 20 61 74 74 65 6d 70 74 73 20 61 72 65 20 6d 61   attempts are ma
254c0 64 65 20 74 6f 0a 2a 2a 20 61 63 63 65 73 73 20  de to.** access 
254d0 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e 64  the database and
254e0 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d 20 69   [SQLITE_BUSY] i
254f0 73 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 74 6f  s returned.** to
25500 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e   the application
25510 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 63 61 6c  ..** ^If the cal
25520 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f  lback returns no
25530 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 61 6e 6f  n-zero, then ano
25540 74 68 65 72 20 61 74 74 65 6d 70 74 0a 2a 2a 20  ther attempt.** 
25550 69 73 20 6d 61 64 65 20 74 6f 20 61 63 63 65 73  is made to acces
25560 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  s the database a
25570 6e 64 20 74 68 65 20 63 79 63 6c 65 20 72 65 70  nd the cycle rep
25580 65 61 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  eats..**.** The 
25590 70 72 65 73 65 6e 63 65 20 6f 66 20 61 20 62 75  presence of a bu
255a0 73 79 20 68 61 6e 64 6c 65 72 20 64 6f 65 73 20  sy handler does 
255b0 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 20 74 68  not guarantee th
255c0 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 69 6e  at it will be in
255d0 76 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e 20 74 68  voked.** when th
255e0 65 72 65 20 69 73 20 6c 6f 63 6b 20 63 6f 6e 74  ere is lock cont
255f0 65 6e 74 69 6f 6e 2e 20 5e 49 66 20 53 51 4c 69  ention. ^If SQLi
25600 74 65 20 64 65 74 65 72 6d 69 6e 65 73 20 74 68  te determines th
25610 61 74 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  at invoking the 
25620 62 75 73 79 0a 2a 2a 20 68 61 6e 64 6c 65 72 20  busy.** handler 
25630 63 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 20  could result in 
25640 61 20 64 65 61 64 6c 6f 63 6b 2c 20 69 74 20 77  a deadlock, it w
25650 69 6c 6c 20 67 6f 20 61 68 65 61 64 20 61 6e 64  ill go ahead and
25660 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54 45 5f   return [SQLITE_
25670 42 55 53 59 5d 0a 2a 2a 20 74 6f 20 74 68 65 20  BUSY].** to the 
25680 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 6e 73 74  application inst
25690 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e 67 20  ead of invoking 
256a0 74 68 65 20 0a 2a 2a 20 62 75 73 79 20 68 61 6e  the .** busy han
256b0 64 6c 65 72 2e 0a 2a 2a 20 43 6f 6e 73 69 64 65  dler..** Conside
256c0 72 20 61 20 73 63 65 6e 61 72 69 6f 20 77 68 65  r a scenario whe
256d0 72 65 20 6f 6e 65 20 70 72 6f 63 65 73 73 20 69  re one process i
256e0 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65 61 64  s holding a read
256f0 20 6c 6f 63 6b 20 74 68 61 74 0a 2a 2a 20 69 74   lock that.** it
25700 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20 70 72   is trying to pr
25710 6f 6d 6f 74 65 20 74 6f 20 61 20 72 65 73 65 72  omote to a reser
25720 76 65 64 20 6c 6f 63 6b 20 61 6e 64 0a 2a 2a 20  ved lock and.** 
25730 61 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73 73  a second process
25740 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65   is holding a re
25750 73 65 72 76 65 64 20 6c 6f 63 6b 20 74 68 61 74  served lock that
25760 20 69 74 20 69 73 20 74 72 79 69 6e 67 0a 2a 2a   it is trying.**
25770 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74 6f 20 61   to promote to a
25780 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f 63 6b  n exclusive lock
25790 2e 20 20 54 68 65 20 66 69 72 73 74 20 70 72 6f  .  The first pro
257a0 63 65 73 73 20 63 61 6e 6e 6f 74 20 70 72 6f 63  cess cannot proc
257b0 65 65 64 0a 2a 2a 20 62 65 63 61 75 73 65 20 69  eed.** because i
257c0 74 20 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20  t is blocked by 
257d0 74 68 65 20 73 65 63 6f 6e 64 20 61 6e 64 20 74  the second and t
257e0 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63 65 73  he second proces
257f0 73 20 63 61 6e 6e 6f 74 0a 2a 2a 20 70 72 6f 63  s cannot.** proc
25800 65 65 64 20 62 65 63 61 75 73 65 20 69 74 20 69  eed because it i
25810 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74 68 65  s blocked by the
25820 20 66 69 72 73 74 2e 20 20 49 66 20 62 6f 74 68   first.  If both
25830 20 70 72 6f 63 65 73 73 65 73 0a 2a 2a 20 69 6e   processes.** in
25840 76 6f 6b 65 20 74 68 65 20 62 75 73 79 20 68 61  voke the busy ha
25850 6e 64 6c 65 72 73 2c 20 6e 65 69 74 68 65 72 20  ndlers, neither 
25860 77 69 6c 6c 20 6d 61 6b 65 20 61 6e 79 20 70 72  will make any pr
25870 6f 67 72 65 73 73 2e 20 20 54 68 65 72 65 66 6f  ogress.  Therefo
25880 72 65 2c 0a 2a 2a 20 53 51 4c 69 74 65 20 72 65  re,.** SQLite re
25890 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f 42 55  turns [SQLITE_BU
258a0 53 59 5d 20 66 6f 72 20 74 68 65 20 66 69 72 73  SY] for the firs
258b0 74 20 70 72 6f 63 65 73 73 2c 20 68 6f 70 69 6e  t process, hopin
258c0 67 20 74 68 61 74 20 74 68 69 73 0a 2a 2a 20 77  g that this.** w
258d0 69 6c 6c 20 69 6e 64 75 63 65 20 74 68 65 20 66  ill induce the f
258e0 69 72 73 74 20 70 72 6f 63 65 73 73 20 74 6f 20  irst process to 
258f0 72 65 6c 65 61 73 65 20 69 74 73 20 72 65 61 64  release its read
25900 20 6c 6f 63 6b 20 61 6e 64 20 61 6c 6c 6f 77 0a   lock and allow.
25910 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72  ** the second pr
25920 6f 63 65 73 73 20 74 6f 20 70 72 6f 63 65 65 64  ocess to proceed
25930 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66  ..**.** ^The def
25940 61 75 6c 74 20 62 75 73 79 20 63 61 6c 6c 62 61  ault busy callba
25950 63 6b 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a  ck is NULL..**.*
25960 2a 20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f 6e  * ^(There can on
25970 6c 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20 62  ly be a single b
25980 75 73 79 20 68 61 6e 64 6c 65 72 20 64 65 66 69  usy handler defi
25990 6e 65 64 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20  ned for each.** 
259a0 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
259b0 74 69 6f 6e 5d 2e 20 20 53 65 74 74 69 6e 67 20  tion].  Setting 
259c0 61 20 6e 65 77 20 62 75 73 79 20 68 61 6e 64 6c  a new busy handl
259d0 65 72 20 63 6c 65 61 72 73 20 61 6e 79 0a 2a 2a  er clears any.**
259e0 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65 74 20   previously set 
259f0 68 61 6e 64 6c 65 72 2e 29 5e 20 20 5e 4e 6f 74  handler.)^  ^Not
25a00 65 20 74 68 61 74 20 63 61 6c 6c 69 6e 67 20 5b  e that calling [
25a10 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74 69 6d  sqlite3_busy_tim
25a20 65 6f 75 74 28 29 5d 0a 2a 2a 20 6f 72 20 65 76  eout()].** or ev
25a30 61 6c 75 61 74 69 6e 67 20 5b 50 52 41 47 4d 41  aluating [PRAGMA
25a40 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 3d 4e 5d   busy_timeout=N]
25a50 20 77 69 6c 6c 20 63 68 61 6e 67 65 20 74 68 65   will change the
25a60 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c 65 72  .** busy handler
25a70 20 61 6e 64 20 74 68 75 73 20 63 6c 65 61 72 20   and thus clear 
25a80 61 6e 79 20 70 72 65 76 69 6f 75 73 6c 79 20 73  any previously s
25a90 65 74 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e  et busy handler.
25aa0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62 75 73 79 20  .**.** The busy 
25ab0 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64 20  callback should 
25ac0 6e 6f 74 20 74 61 6b 65 20 61 6e 79 20 61 63 74  not take any act
25ad0 69 6f 6e 73 20 77 68 69 63 68 20 6d 6f 64 69 66  ions which modif
25ae0 79 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  y the.** databas
25af0 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61  e connection tha
25b00 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 62 75  t invoked the bu
25b10 73 79 20 68 61 6e 64 6c 65 72 2e 20 20 49 6e 20  sy handler.  In 
25b20 6f 74 68 65 72 20 77 6f 72 64 73 2c 0a 2a 2a 20  other words,.** 
25b30 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72  the busy handler
25b40 20 69 73 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e   is not reentran
25b50 74 2e 20 20 41 6e 79 20 73 75 63 68 20 61 63 74  t.  Any such act
25b60 69 6f 6e 73 0a 2a 2a 20 72 65 73 75 6c 74 20 69  ions.** result i
25b70 6e 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61  n undefined beha
25b80 76 69 6f 72 2e 0a 2a 2a 20 0a 2a 2a 20 41 20 62  vior..** .** A b
25b90 75 73 79 20 68 61 6e 64 6c 65 72 20 6d 75 73 74  usy handler must
25ba0 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68 65 20 64   not close the d
25bb0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
25bc0 6f 6e 0a 2a 2a 20 6f 72 20 5b 70 72 65 70 61 72  on.** or [prepar
25bd0 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68  ed statement] th
25be0 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 62  at invoked the b
25bf0 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a 2f 0a  usy handler..*/.
25c00 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
25c10 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64  qlite3_busy_hand
25c20 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c 69 6e 74  ler(sqlite3*,int
25c30 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 29 2c 76  (*)(void*,int),v
25c40 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  oid*);../*.** CA
25c50 50 49 33 52 45 46 3a 20 53 65 74 20 41 20 42 75  PI3REF: Set A Bu
25c60 73 79 20 54 69 6d 65 6f 75 74 0a 2a 2a 20 4d 45  sy Timeout.** ME
25c70 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
25c80 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74 69 6e  .** ^This routin
25c90 65 20 73 65 74 73 20 61 20 5b 73 71 6c 69 74 65  e sets a [sqlite
25ca0 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72 20 7c  3_busy_handler |
25cb0 20 62 75 73 79 20 68 61 6e 64 6c 65 72 5d 20 74   busy handler] t
25cc0 68 61 74 20 73 6c 65 65 70 73 0a 2a 2a 20 66 6f  hat sleeps.** fo
25cd0 72 20 61 20 73 70 65 63 69 66 69 65 64 20 61 6d  r a specified am
25ce0 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 77 68 65  ount of time whe
25cf0 6e 20 61 20 74 61 62 6c 65 20 69 73 20 6c 6f 63  n a table is loc
25d00 6b 65 64 2e 20 20 5e 54 68 65 20 68 61 6e 64 6c  ked.  ^The handl
25d10 65 72 0a 2a 2a 20 77 69 6c 6c 20 73 6c 65 65 70  er.** will sleep
25d20 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65 73 20   multiple times 
25d30 75 6e 74 69 6c 20 61 74 20 6c 65 61 73 74 20 22  until at least "
25d40 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73  ms" milliseconds
25d50 20 6f 66 20 73 6c 65 65 70 69 6e 67 0a 2a 2a 20   of sleeping.** 
25d60 68 61 76 65 20 61 63 63 75 6d 75 6c 61 74 65 64  have accumulated
25d70 2e 20 20 5e 41 66 74 65 72 20 61 74 20 6c 65 61  .  ^After at lea
25d80 73 74 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63  st "ms" millisec
25d90 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67  onds of sleeping
25da0 2c 0a 2a 2a 20 74 68 65 20 68 61 6e 64 6c 65 72  ,.** the handler
25db0 20 72 65 74 75 72 6e 73 20 30 20 77 68 69 63 68   returns 0 which
25dc0 20 63 61 75 73 65 73 20 5b 73 71 6c 69 74 65 33   causes [sqlite3
25dd0 5f 73 74 65 70 28 29 5d 20 74 6f 20 72 65 74 75  _step()] to retu
25de0 72 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55  rn.** [SQLITE_BU
25df0 53 59 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61 6c 6c  SY]..**.** ^Call
25e00 69 6e 67 20 74 68 69 73 20 72 6f 75 74 69 6e 65  ing this routine
25e10 20 77 69 74 68 20 61 6e 20 61 72 67 75 6d 65 6e   with an argumen
25e20 74 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65  t less than or e
25e30 71 75 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a 2a 20  qual to zero.** 
25e40 74 75 72 6e 73 20 6f 66 66 20 61 6c 6c 20 62 75  turns off all bu
25e50 73 79 20 68 61 6e 64 6c 65 72 73 2e 0a 2a 2a 0a  sy handlers..**.
25e60 2a 2a 20 5e 28 54 68 65 72 65 20 63 61 6e 20 6f  ** ^(There can o
25e70 6e 6c 79 20 62 65 20 61 20 73 69 6e 67 6c 65 20  nly be a single 
25e80 62 75 73 79 20 68 61 6e 64 6c 65 72 20 66 6f 72  busy handler for
25e90 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 2a 2a   a particular.**
25ea0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
25eb0 63 74 69 6f 6e 5d 20 61 74 20 61 6e 79 20 67 69  ction] at any gi
25ec0 76 65 6e 20 6d 6f 6d 65 6e 74 2e 20 20 49 66 20  ven moment.  If 
25ed0 61 6e 6f 74 68 65 72 20 62 75 73 79 20 68 61 6e  another busy han
25ee0 64 6c 65 72 0a 2a 2a 20 77 61 73 20 64 65 66 69  dler.** was defi
25ef0 6e 65 64 20 20 28 75 73 69 6e 67 20 5b 73 71 6c  ned  (using [sql
25f00 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65  ite3_busy_handle
25f10 72 28 29 5d 29 20 70 72 69 6f 72 20 74 6f 20 63  r()]) prior to c
25f20 61 6c 6c 69 6e 67 0a 2a 2a 20 74 68 69 73 20 72  alling.** this r
25f30 6f 75 74 69 6e 65 2c 20 74 68 61 74 20 6f 74 68  outine, that oth
25f40 65 72 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  er busy handler 
25f50 69 73 20 63 6c 65 61 72 65 64 2e 29 5e 0a 2a 2a  is cleared.)^.**
25f60 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 20 5b  .** See also:  [
25f70 50 52 41 47 4d 41 20 62 75 73 79 5f 74 69 6d 65  PRAGMA busy_time
25f80 6f 75 74 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  out].*/.SQLITE_A
25f90 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 62  PI int sqlite3_b
25fa0 75 73 79 5f 74 69 6d 65 6f 75 74 28 73 71 6c 69  usy_timeout(sqli
25fb0 74 65 33 2a 2c 20 69 6e 74 20 6d 73 29 3b 0a 0a  te3*, int ms);..
25fc0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
25fd0 43 6f 6e 76 65 6e 69 65 6e 63 65 20 52 6f 75 74  Convenience Rout
25fe0 69 6e 65 73 20 46 6f 72 20 52 75 6e 6e 69 6e 67  ines For Running
25ff0 20 51 75 65 72 69 65 73 0a 2a 2a 20 4d 45 54 48   Queries.** METH
26000 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
26010 2a 20 54 68 69 73 20 69 73 20 61 20 6c 65 67 61  * This is a lega
26020 63 79 20 69 6e 74 65 72 66 61 63 65 20 74 68 61  cy interface tha
26030 74 20 69 73 20 70 72 65 73 65 72 76 65 64 20 66  t is preserved f
26040 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63 6f 6d  or backwards com
26050 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a 20 55  patibility..** U
26060 73 65 20 6f 66 20 74 68 69 73 20 69 6e 74 65 72  se of this inter
26070 66 61 63 65 20 69 73 20 6e 6f 74 20 72 65 63 6f  face is not reco
26080 6d 6d 65 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a 20 44  mmended..**.** D
26090 65 66 69 6e 69 74 69 6f 6e 3a 20 41 20 3c 62 3e  efinition: A <b>
260a0 72 65 73 75 6c 74 20 74 61 62 6c 65 3c 2f 62 3e  result table</b>
260b0 20 69 73 20 6d 65 6d 6f 72 79 20 64 61 74 61 20   is memory data 
260c0 73 74 72 75 63 74 75 72 65 20 63 72 65 61 74 65  structure create
260d0 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b 73 71 6c  d by the.** [sql
260e0 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
260f0 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20 41 20  ] interface.  A 
26100 72 65 73 75 6c 74 20 74 61 62 6c 65 20 72 65 63  result table rec
26110 6f 72 64 73 20 74 68 65 0a 2a 2a 20 63 6f 6d 70  ords the.** comp
26120 6c 65 74 65 20 71 75 65 72 79 20 72 65 73 75 6c  lete query resul
26130 74 73 20 66 72 6f 6d 20 6f 6e 65 20 6f 72 20 6d  ts from one or m
26140 6f 72 65 20 71 75 65 72 69 65 73 2e 0a 2a 2a 0a  ore queries..**.
26150 2a 2a 20 54 68 65 20 74 61 62 6c 65 20 63 6f 6e  ** The table con
26160 63 65 70 74 75 61 6c 6c 79 20 68 61 73 20 61 20  ceptually has a 
26170 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 61  number of rows a
26180 6e 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 42 75 74  nd columns.  But
26190 0a 2a 2a 20 74 68 65 73 65 20 6e 75 6d 62 65 72  .** these number
261a0 73 20 61 72 65 20 6e 6f 74 20 70 61 72 74 20 6f  s are not part o
261b0 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62  f the result tab
261c0 6c 65 20 69 74 73 65 6c 66 2e 20 20 54 68 65 73  le itself.  Thes
261d0 65 0a 2a 2a 20 6e 75 6d 62 65 72 73 20 61 72 65  e.** numbers are
261e0 20 6f 62 74 61 69 6e 65 64 20 73 65 70 61 72 61   obtained separa
261f0 74 65 6c 79 2e 20 20 4c 65 74 20 4e 20 62 65 20  tely.  Let N be 
26200 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f  the number of ro
26210 77 73 0a 2a 2a 20 61 6e 64 20 4d 20 62 65 20 74  ws.** and M be t
26220 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c  he number of col
26230 75 6d 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41 20 72 65  umns..**.** A re
26240 73 75 6c 74 20 74 61 62 6c 65 20 69 73 20 61 6e  sult table is an
26250 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65   array of pointe
26260 72 73 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69  rs to zero-termi
26270 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74 72 69  nated UTF-8 stri
26280 6e 67 73 2e 0a 2a 2a 20 54 68 65 72 65 20 61 72  ngs..** There ar
26290 65 20 28 4e 2b 31 29 2a 4d 20 65 6c 65 6d 65 6e  e (N+1)*M elemen
262a0 74 73 20 69 6e 20 74 68 65 20 61 72 72 61 79 2e  ts in the array.
262b0 20 20 54 68 65 20 66 69 72 73 74 20 4d 20 70 6f    The first M po
262c0 69 6e 74 65 72 73 20 70 6f 69 6e 74 0a 2a 2a 20  inters point.** 
262d0 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  to zero-terminat
262e0 65 64 20 73 74 72 69 6e 67 73 20 74 68 61 74 20  ed strings that 
262f0 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e 61 6d   contain the nam
26300 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e  es of the column
26310 73 2e 0a 2a 2a 20 54 68 65 20 72 65 6d 61 69 6e  s..** The remain
26320 69 6e 67 20 65 6e 74 72 69 65 73 20 61 6c 6c 20  ing entries all 
26330 70 6f 69 6e 74 20 74 6f 20 71 75 65 72 79 20 72  point to query r
26340 65 73 75 6c 74 73 2e 20 20 4e 55 4c 4c 20 76 61  esults.  NULL va
26350 6c 75 65 73 20 72 65 73 75 6c 74 0a 2a 2a 20 69  lues result.** i
26360 6e 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73 2e  n NULL pointers.
26370 20 20 41 6c 6c 20 6f 74 68 65 72 20 76 61 6c 75    All other valu
26380 65 73 20 61 72 65 20 69 6e 20 74 68 65 69 72 20  es are in their 
26390 55 54 46 2d 38 20 7a 65 72 6f 2d 74 65 72 6d 69  UTF-8 zero-termi
263a0 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67 20  nated.** string 
263b0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 61  representation a
263c0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 5b 73  s returned by [s
263d0 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 65  qlite3_column_te
263e0 78 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 41 20 72  xt()]..**.** A r
263f0 65 73 75 6c 74 20 74 61 62 6c 65 20 6d 69 67 68  esult table migh
26400 74 20 63 6f 6e 73 69 73 74 20 6f 66 20 6f 6e 65  t consist of one
26410 20 6f 72 20 6d 6f 72 65 20 6d 65 6d 6f 72 79 20   or more memory 
26420 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 2a 2a 20  allocations..** 
26430 49 74 20 69 73 20 6e 6f 74 20 73 61 66 65 20 74  It is not safe t
26440 6f 20 70 61 73 73 20 61 20 72 65 73 75 6c 74 20  o pass a result 
26450 74 61 62 6c 65 20 64 69 72 65 63 74 6c 79 20 74  table directly t
26460 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 28  o [sqlite3_free(
26470 29 5d 2e 0a 2a 2a 20 41 20 72 65 73 75 6c 74 20  )]..** A result 
26480 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62 65 20  table should be 
26490 64 65 61 6c 6c 6f 63 61 74 65 64 20 75 73 69 6e  deallocated usin
264a0 67 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65 5f  g [sqlite3_free_
264b0 74 61 62 6c 65 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20  table()]..**.** 
264c0 5e 28 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 20  ^(As an example 
264d0 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74 61  of the result ta
264e0 62 6c 65 20 66 6f 72 6d 61 74 2c 20 73 75 70 70  ble format, supp
264f0 6f 73 65 20 61 20 71 75 65 72 79 20 72 65 73 75  ose a query resu
26500 6c 74 0a 2a 2a 20 69 73 20 61 73 20 66 6f 6c 6c  lt.** is as foll
26510 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63  ows:.**.** <bloc
26520 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20  kquote><pre>.** 
26530 20 20 20 20 20 20 20 4e 61 6d 65 20 20 20 20 20         Name     
26540 20 20 20 7c 20 41 67 65 0a 2a 2a 20 20 20 20 20     | Age.**     
26550 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d     -------------
26560 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20 20 20  ----------.**   
26570 20 20 20 20 20 41 6c 69 63 65 20 20 20 20 20 20       Alice      
26580 20 7c 20 34 33 0a 2a 2a 20 20 20 20 20 20 20 20   | 43.**        
26590 42 6f 62 20 20 20 20 20 20 20 20 20 7c 20 32 38  Bob         | 28
265a0 0a 2a 2a 20 20 20 20 20 20 20 20 43 69 6e 64 79  .**        Cindy
265b0 20 20 20 20 20 20 20 7c 20 32 31 0a 2a 2a 20 3c         | 21.** <
265c0 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
265d0 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 61  e>.**.** There a
265e0 72 65 20 74 77 6f 20 63 6f 6c 75 6d 6e 20 28 4d  re two column (M
265f0 3d 3d 32 29 20 61 6e 64 20 74 68 72 65 65 20 72  ==2) and three r
26600 6f 77 73 20 28 4e 3d 3d 33 29 2e 20 20 54 68 75  ows (N==3).  Thu
26610 73 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20  s the.** result 
26620 74 61 62 6c 65 20 68 61 73 20 38 20 65 6e 74 72  table has 8 entr
26630 69 65 73 2e 20 20 53 75 70 70 6f 73 65 20 74 68  ies.  Suppose th
26640 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69  e result table i
26650 73 20 73 74 6f 72 65 64 0a 2a 2a 20 69 6e 20 61  s stored.** in a
26660 6e 20 61 72 72 61 79 20 6e 61 6d 65 73 20 61 7a  n array names az
26670 52 65 73 75 6c 74 2e 20 20 54 68 65 6e 20 61 7a  Result.  Then az
26680 52 65 73 75 6c 74 20 68 6f 6c 64 73 20 74 68 69  Result holds thi
26690 73 20 63 6f 6e 74 65 6e 74 3a 0a 2a 2a 0a 2a 2a  s content:.**.**
266a0 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72   <blockquote><pr
266b0 65 3e 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  e>.**        azR
266c0 65 73 75 6c 74 26 23 39 31 3b 30 5d 20 3d 20 22  esult&#91;0] = "
266d0 4e 61 6d 65 22 3b 0a 2a 2a 20 20 20 20 20 20 20  Name";.**       
266e0 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 31 5d   azResult&#91;1]
266f0 20 3d 20 22 41 67 65 22 3b 0a 2a 2a 20 20 20 20   = "Age";.**    
26700 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31      azResult&#91
26710 3b 32 5d 20 3d 20 22 41 6c 69 63 65 22 3b 0a 2a  ;2] = "Alice";.*
26720 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c  *        azResul
26730 74 26 23 39 31 3b 33 5d 20 3d 20 22 34 33 22 3b  t&#91;3] = "43";
26740 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
26750 75 6c 74 26 23 39 31 3b 34 5d 20 3d 20 22 42 6f  ult&#91;4] = "Bo
26760 62 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a  b";.**        az
26770 52 65 73 75 6c 74 26 23 39 31 3b 35 5d 20 3d 20  Result&#91;5] = 
26780 22 32 38 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  "28";.**        
26790 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 36 5d 20  azResult&#91;6] 
267a0 3d 20 22 43 69 6e 64 79 22 3b 0a 2a 2a 20 20 20  = "Cindy";.**   
267b0 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39       azResult&#9
267c0 31 3b 37 5d 20 3d 20 22 32 31 22 3b 0a 2a 2a 20  1;7] = "21";.** 
267d0 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
267e0 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  te>)^.**.** ^The
267f0 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
26800 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 65 76  le() function ev
26810 61 6c 75 61 74 65 73 20 6f 6e 65 20 6f 72 20 6d  aluates one or m
26820 6f 72 65 0a 2a 2a 20 73 65 6d 69 63 6f 6c 6f 6e  ore.** semicolon
26830 2d 73 65 70 61 72 61 74 65 64 20 53 51 4c 20 73  -separated SQL s
26840 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74 68 65  tatements in the
26850 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74 65 64   zero-terminated
26860 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67   UTF-8.** string
26870 20 6f 66 20 69 74 73 20 32 6e 64 20 70 61 72 61   of its 2nd para
26880 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e  meter and return
26890 73 20 61 20 72 65 73 75 6c 74 20 74 61 62 6c 65  s a result table
268a0 20 74 6f 20 74 68 65 0a 2a 2a 20 70 6f 69 6e 74   to the.** point
268b0 65 72 20 67 69 76 65 6e 20 69 6e 20 69 74 73 20  er given in its 
268c0 33 72 64 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a  3rd parameter..*
268d0 2a 0a 2a 2a 20 41 66 74 65 72 20 74 68 65 20 61  *.** After the a
268e0 70 70 6c 69 63 61 74 69 6f 6e 20 68 61 73 20 66  pplication has f
268f0 69 6e 69 73 68 65 64 20 77 69 74 68 20 74 68 65  inished with the
26900 20 72 65 73 75 6c 74 20 66 72 6f 6d 20 73 71 6c   result from sql
26910 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29  ite3_get_table()
26920 2c 0a 2a 2a 20 69 74 20 6d 75 73 74 20 70 61 73  ,.** it must pas
26930 73 20 74 68 65 20 72 65 73 75 6c 74 20 74 61 62  s the result tab
26940 6c 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 73 71  le pointer to sq
26950 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65  lite3_free_table
26960 28 29 20 69 6e 20 6f 72 64 65 72 20 74 6f 0a 2a  () in order to.*
26970 2a 20 72 65 6c 65 61 73 65 20 74 68 65 20 6d 65  * release the me
26980 6d 6f 72 79 20 74 68 61 74 20 77 61 73 20 6d 61  mory that was ma
26990 6c 6c 6f 63 65 64 2e 20 20 42 65 63 61 75 73 65  lloced.  Because
269a0 20 6f 66 20 74 68 65 20 77 61 79 20 74 68 65 0a   of the way the.
269b0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  ** [sqlite3_mall
269c0 6f 63 28 29 5d 20 68 61 70 70 65 6e 73 20 77 69  oc()] happens wi
269d0 74 68 69 6e 20 73 71 6c 69 74 65 33 5f 67 65 74  thin sqlite3_get
269e0 5f 74 61 62 6c 65 28 29 2c 20 74 68 65 20 63 61  _table(), the ca
269f0 6c 6c 69 6e 67 0a 2a 2a 20 66 75 6e 63 74 69 6f  lling.** functio
26a00 6e 20 6d 75 73 74 20 6e 6f 74 20 74 72 79 20 74  n must not try t
26a10 6f 20 63 61 6c 6c 20 5b 73 71 6c 69 74 65 33 5f  o call [sqlite3_
26a20 66 72 65 65 28 29 5d 20 64 69 72 65 63 74 6c 79  free()] directly
26a30 2e 20 20 4f 6e 6c 79 0a 2a 2a 20 5b 73 71 6c 69  .  Only.** [sqli
26a40 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 29  te3_free_table()
26a50 5d 20 69 73 20 61 62 6c 65 20 74 6f 20 72 65 6c  ] is able to rel
26a60 65 61 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20  ease the memory 
26a70 70 72 6f 70 65 72 6c 79 20 61 6e 64 20 73 61 66  properly and saf
26a80 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ely..**.** The s
26a90 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
26aa0 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
26ab0 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 73 20 61  implemented as a
26ac0 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 0a   wrapper around.
26ad0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63  ** [sqlite3_exec
26ae0 28 29 5d 2e 20 20 54 68 65 20 73 71 6c 69 74 65  ()].  The sqlite
26af0 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20 72 6f  3_get_table() ro
26b00 75 74 69 6e 65 20 64 6f 65 73 20 6e 6f 74 20 68  utine does not h
26b10 61 76 65 20 61 63 63 65 73 73 0a 2a 2a 20 74 6f  ave access.** to
26b20 20 61 6e 79 20 69 6e 74 65 72 6e 61 6c 20 64 61   any internal da
26b30 74 61 20 73 74 72 75 63 74 75 72 65 73 20 6f 66  ta structures of
26b40 20 53 51 4c 69 74 65 2e 20 20 49 74 20 75 73 65   SQLite.  It use
26b50 73 20 6f 6e 6c 79 20 74 68 65 20 70 75 62 6c 69  s only the publi
26b60 63 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 64  c.** interface d
26b70 65 66 69 6e 65 64 20 68 65 72 65 2e 20 20 41 73  efined here.  As
26b80 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 2c 20   a consequence, 
26b90 65 72 72 6f 72 73 20 74 68 61 74 20 6f 63 63 75  errors that occu
26ba0 72 20 69 6e 20 74 68 65 0a 2a 2a 20 77 72 61 70  r in the.** wrap
26bb0 70 65 72 20 6c 61 79 65 72 20 6f 75 74 73 69 64  per layer outsid
26bc0 65 20 6f 66 20 74 68 65 20 69 6e 74 65 72 6e 61  e of the interna
26bd0 6c 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28  l [sqlite3_exec(
26be0 29 5d 20 63 61 6c 6c 20 61 72 65 20 6e 6f 74 0a  )] call are not.
26bf0 2a 2a 20 72 65 66 6c 65 63 74 65 64 20 69 6e 20  ** reflected in 
26c00 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73  subsequent calls
26c10 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 65 72 72   to [sqlite3_err
26c20 63 6f 64 65 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73  code()] or.** [s
26c30 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 29 5d  qlite3_errmsg()]
26c40 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
26c50 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65 74 5f  int sqlite3_get_
26c60 74 61 62 6c 65 28 0a 20 20 73 71 6c 69 74 65 33  table(.  sqlite3
26c70 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 2f   *db,          /
26c80 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61 62 61  * An open databa
26c90 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  se */.  const ch
26ca0 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 2f 2a  ar *zSql,     /*
26cb0 20 53 51 4c 20 74 6f 20 62 65 20 65 76 61 6c 75   SQL to be evalu
26cc0 61 74 65 64 20 2a 2f 0a 20 20 63 68 61 72 20 2a  ated */.  char *
26cd0 2a 2a 70 61 7a 52 65 73 75 6c 74 2c 20 20 20 20  **pazResult,    
26ce0 2f 2a 20 52 65 73 75 6c 74 73 20 6f 66 20 74 68  /* Results of th
26cf0 65 20 71 75 65 72 79 20 2a 2f 0a 20 20 69 6e 74  e query */.  int
26d00 20 2a 70 6e 52 6f 77 2c 20 20 20 20 20 20 20 20   *pnRow,        
26d10 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66 20     /* Number of 
26d20 72 65 73 75 6c 74 20 72 6f 77 73 20 77 72 69 74  result rows writ
26d30 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20 69 6e  ten here */.  in
26d40 74 20 2a 70 6e 43 6f 6c 75 6d 6e 2c 20 20 20 20  t *pnColumn,    
26d50 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f 66      /* Number of
26d60 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 20   result columns 
26d70 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a  written here */.
26d80 20 20 63 68 61 72 20 2a 2a 70 7a 45 72 72 6d 73    char **pzErrms
26d90 67 20 20 20 20 20 20 20 2f 2a 20 45 72 72 6f 72  g       /* Error
26da0 20 6d 73 67 20 77 72 69 74 74 65 6e 20 68 65 72   msg written her
26db0 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  e */.);.SQLITE_A
26dc0 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33 5f  PI void sqlite3_
26dd0 66 72 65 65 5f 74 61 62 6c 65 28 63 68 61 72 20  free_table(char 
26de0 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a 0a 2a  **result);../*.*
26df0 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6f 72 6d  * CAPI3REF: Form
26e00 61 74 74 65 64 20 53 74 72 69 6e 67 20 50 72 69  atted String Pri
26e10 6e 74 69 6e 67 20 46 75 6e 63 74 69 6f 6e 73 0a  nting Functions.
26e20 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74  **.** These rout
26e30 69 6e 65 73 20 61 72 65 20 77 6f 72 6b 2d 61 6c  ines are work-al
26e40 69 6b 65 73 20 6f 66 20 74 68 65 20 22 70 72 69  ikes of the "pri
26e50 6e 74 66 28 29 22 20 66 61 6d 69 6c 79 20 6f 66  ntf()" family of
26e60 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20 66 72   functions.** fr
26e70 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72 64 20  om the standard 
26e80 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a 20 54 68  C library..** Th
26e90 65 73 65 20 72 6f 75 74 69 6e 65 73 20 75 6e 64  ese routines und
26ea0 65 72 73 74 61 6e 64 20 6d 6f 73 74 20 6f 66 20  erstand most of 
26eb0 74 68 65 20 63 6f 6d 6d 6f 6e 20 66 6f 72 6d 61  the common forma
26ec0 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20 66 72  tting options fr
26ed0 6f 6d 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64 61  om.** the standa
26ee0 72 64 20 6c 69 62 72 61 72 79 20 70 72 69 6e 74  rd library print
26ef0 66 28 29 20 0a 2a 2a 20 70 6c 75 73 20 73 6f 6d  f() .** plus som
26f00 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6e 6f 6e  e additional non
26f10 2d 73 74 61 6e 64 61 72 64 20 66 6f 72 6d 61 74  -standard format
26f20 73 20 28 5b 25 71 5d 2c 20 5b 25 51 5d 2c 20 5b  s ([%q], [%Q], [
26f30 25 77 5d 2c 20 61 6e 64 20 5b 25 7a 5d 29 2e 0a  %w], and [%z])..
26f40 2a 2a 20 53 65 65 20 74 68 65 20 5b 62 75 69 6c  ** See the [buil
26f50 74 2d 69 6e 20 70 72 69 6e 74 66 28 29 5d 20 64  t-in printf()] d
26f60 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72  ocumentation for
26f70 20 64 65 74 61 69 6c 73 2e 0a 2a 2a 0a 2a 2a 20   details..**.** 
26f80 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d 70 72  ^The sqlite3_mpr
26f90 69 6e 74 66 28 29 20 61 6e 64 20 73 71 6c 69 74  intf() and sqlit
26fa0 65 33 5f 76 6d 70 72 69 6e 74 66 28 29 20 72 6f  e3_vmprintf() ro
26fb0 75 74 69 6e 65 73 20 77 72 69 74 65 20 74 68 65  utines write the
26fc0 69 72 0a 2a 2a 20 72 65 73 75 6c 74 73 20 69 6e  ir.** results in
26fd0 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61 69 6e  to memory obtain
26fe0 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
26ff0 5f 6d 61 6c 6c 6f 63 36 34 28 29 5d 2e 0a 2a 2a  _malloc64()]..**
27000 20 54 68 65 20 73 74 72 69 6e 67 73 20 72 65 74   The strings ret
27010 75 72 6e 65 64 20 62 79 20 74 68 65 73 65 20 74  urned by these t
27020 77 6f 20 72 6f 75 74 69 6e 65 73 20 73 68 6f 75  wo routines shou
27030 6c 64 20 62 65 0a 2a 2a 20 72 65 6c 65 61 73 65  ld be.** release
27040 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 66 72  d by [sqlite3_fr
27050 65 65 28 29 5d 2e 20 20 5e 42 6f 74 68 20 72 6f  ee()].  ^Both ro
27060 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 61 0a  utines return a.
27070 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20  ** NULL pointer 
27080 69 66 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  if [sqlite3_mall
27090 6f 63 36 34 28 29 5d 20 69 73 20 75 6e 61 62 6c  oc64()] is unabl
270a0 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 65 6e  e to allocate en
270b0 6f 75 67 68 0a 2a 2a 20 6d 65 6d 6f 72 79 20 74  ough.** memory t
270c0 6f 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c  o hold the resul
270d0 74 69 6e 67 20 73 74 72 69 6e 67 2e 0a 2a 2a 0a  ting string..**.
270e0 2a 2a 20 5e 28 54 68 65 20 73 71 6c 69 74 65 33  ** ^(The sqlite3
270f0 5f 73 6e 70 72 69 6e 74 66 28 29 20 72 6f 75 74  _snprintf() rout
27100 69 6e 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74  ine is similar t
27110 6f 20 22 73 6e 70 72 69 6e 74 66 28 29 22 20 66  o "snprintf()" f
27120 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 74 61 6e 64  rom.** the stand
27130 61 72 64 20 43 20 6c 69 62 72 61 72 79 2e 20 20  ard C library.  
27140 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 77 72  The result is wr
27150 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65 0a 2a  itten into the.*
27160 2a 20 62 75 66 66 65 72 20 73 75 70 70 6c 69 65  * buffer supplie
27170 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20  d as the second 
27180 70 61 72 61 6d 65 74 65 72 20 77 68 6f 73 65 20  parameter whose 
27190 73 69 7a 65 20 69 73 20 67 69 76 65 6e 20 62 79  size is given by
271a0 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20 70 61  .** the first pa
271b0 72 61 6d 65 74 65 72 2e 20 4e 6f 74 65 20 74 68  rameter. Note th
271c0 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20  at the order of 
271d0 74 68 65 0a 2a 2a 20 66 69 72 73 74 20 74 77 6f  the.** first two
271e0 20 70 61 72 61 6d 65 74 65 72 73 20 69 73 20 72   parameters is r
271f0 65 76 65 72 73 65 64 20 66 72 6f 6d 20 73 6e 70  eversed from snp
27200 72 69 6e 74 66 28 29 2e 29 5e 20 20 54 68 69 73  rintf().)^  This
27210 20 69 73 20 61 6e 0a 2a 2a 20 68 69 73 74 6f 72   is an.** histor
27220 69 63 61 6c 20 61 63 63 69 64 65 6e 74 20 74 68  ical accident th
27230 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 66 69 78  at cannot be fix
27240 65 64 20 77 69 74 68 6f 75 74 20 62 72 65 61 6b  ed without break
27250 69 6e 67 0a 2a 2a 20 62 61 63 6b 77 61 72 64 73  ing.** backwards
27260 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 20   compatibility. 
27270 20 5e 28 4e 6f 74 65 20 61 6c 73 6f 20 74 68 61   ^(Note also tha
27280 74 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e  t sqlite3_snprin
27290 74 66 28 29 0a 2a 2a 20 72 65 74 75 72 6e 73 20  tf().** returns 
272a0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 69 74 73  a pointer to its
272b0 20 62 75 66 66 65 72 20 69 6e 73 74 65 61 64 20   buffer instead 
272c0 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  of the number of
272d0 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 73 20 61  .** characters a
272e0 63 74 75 61 6c 6c 79 20 77 72 69 74 74 65 6e 20  ctually written 
272f0 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65 72 2e  into the buffer.
27300 29 5e 20 20 57 65 20 61 64 6d 69 74 20 74 68 61  )^  We admit tha
27310 74 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20  t.** the number 
27320 6f 66 20 63 68 61 72 61 63 74 65 72 73 20 77 72  of characters wr
27330 69 74 74 65 6e 20 77 6f 75 6c 64 20 62 65 20 61  itten would be a
27340 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 72 65 74   more useful ret
27350 75 72 6e 0a 2a 2a 20 76 61 6c 75 65 20 62 75 74  urn.** value but
27360 20 77 65 20 63 61 6e 6e 6f 74 20 63 68 61 6e 67   we cannot chang
27370 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61  e the implementa
27380 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65 33 5f  tion of sqlite3_
27390 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20 6e 6f  snprintf().** no
273a0 77 20 77 69 74 68 6f 75 74 20 62 72 65 61 6b 69  w without breaki
273b0 6e 67 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ng compatibility
273c0 2e 0a 2a 2a 0a 2a 2a 20 5e 41 73 20 6c 6f 6e 67  ..**.** ^As long
273d0 20 61 73 20 74 68 65 20 62 75 66 66 65 72 20 73   as the buffer s
273e0 69 7a 65 20 69 73 20 67 72 65 61 74 65 72 20 74  ize is greater t
273f0 68 61 6e 20 7a 65 72 6f 2c 20 73 71 6c 69 74 65  han zero, sqlite
27400 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20  3_snprintf().** 
27410 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20  guarantees that 
27420 74 68 65 20 62 75 66 66 65 72 20 69 73 20 61 6c  the buffer is al
27430 77 61 79 73 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  ways zero-termin
27440 61 74 65 64 2e 20 20 5e 54 68 65 20 66 69 72 73  ated.  ^The firs
27450 74 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 20 22  t.** parameter "
27460 6e 22 20 69 73 20 74 68 65 20 74 6f 74 61 6c 20  n" is the total 
27470 73 69 7a 65 20 6f 66 20 74 68 65 20 62 75 66 66  size of the buff
27480 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 70  er, including sp
27490 61 63 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 7a  ace for.** the z
274a0 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20  ero terminator. 
274b0 20 53 6f 20 74 68 65 20 6c 6f 6e 67 65 73 74 20   So the longest 
274c0 73 74 72 69 6e 67 20 74 68 61 74 20 63 61 6e 20  string that can 
274d0 62 65 20 63 6f 6d 70 6c 65 74 65 6c 79 0a 2a 2a  be completely.**
274e0 20 77 72 69 74 74 65 6e 20 77 69 6c 6c 20 62 65   written will be
274f0 20 6e 2d 31 20 63 68 61 72 61 63 74 65 72 73 2e   n-1 characters.
27500 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
27510 74 65 33 5f 76 73 6e 70 72 69 6e 74 66 28 29 20  te3_vsnprintf() 
27520 72 6f 75 74 69 6e 65 20 69 73 20 61 20 76 61 72  routine is a var
27530 61 72 67 73 20 76 65 72 73 69 6f 6e 20 6f 66 20  args version of 
27540 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e 74 66  sqlite3_snprintf
27550 28 29 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  ()..**.** See al
27560 73 6f 3a 20 20 5b 62 75 69 6c 74 2d 69 6e 20 70  so:  [built-in p
27570 72 69 6e 74 66 28 29 5d 2c 20 5b 70 72 69 6e 74  rintf()], [print
27580 66 28 29 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  f() SQL function
27590 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ].*/.SQLITE_API 
275a0 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 6d 70  char *sqlite3_mp
275b0 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68 61 72  rintf(const char
275c0 2a 2c 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45 5f 41  *,...);.SQLITE_A
275d0 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  PI char *sqlite3
275e0 5f 76 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20  _vmprintf(const 
275f0 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73 74 29 3b  char*, va_list);
27600 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72  .SQLITE_API char
27610 20 2a 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e   *sqlite3_snprin
27620 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e  tf(int,char*,con
27630 73 74 20 63 68 61 72 2a 2c 20 2e 2e 2e 29 3b 0a  st char*, ...);.
27640 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72 20  SQLITE_API char 
27650 2a 73 71 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e  *sqlite3_vsnprin
27660 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63 6f 6e  tf(int,char*,con
27670 73 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73  st char*, va_lis
27680 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33  t);../*.** CAPI3
27690 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c 6f  REF: Memory Allo
276a0 63 61 74 69 6f 6e 20 53 75 62 73 79 73 74 65 6d  cation Subsystem
276b0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74  .**.** The SQLit
276c0 65 20 63 6f 72 65 20 75 73 65 73 20 74 68 65 73  e core uses thes
276d0 65 20 74 68 72 65 65 20 72 6f 75 74 69 6e 65 73  e three routines
276e0 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74 73 20   for all of its 
276f0 6f 77 6e 0a 2a 2a 20 69 6e 74 65 72 6e 61 6c 20  own.** internal 
27700 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
27710 6e 20 6e 65 65 64 73 2e 20 22 43 6f 72 65 22 20  n needs. "Core" 
27720 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  in the previous 
27730 73 65 6e 74 65 6e 63 65 0a 2a 2a 20 64 6f 65 73  sentence.** does
27740 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 6f 70 65   not include ope
27750 72 61 74 69 6e 67 2d 73 79 73 74 65 6d 20 73 70  rating-system sp
27760 65 63 69 66 69 63 20 56 46 53 20 69 6d 70 6c 65  ecific VFS imple
27770 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 54 68 65 0a  mentation.  The.
27780 2a 2a 20 57 69 6e 64 6f 77 73 20 56 46 53 20 75  ** Windows VFS u
27790 73 65 73 20 6e 61 74 69 76 65 20 6d 61 6c 6c 6f  ses native mallo
277a0 63 28 29 20 61 6e 64 20 66 72 65 65 28 29 20 66  c() and free() f
277b0 6f 72 20 73 6f 6d 65 20 6f 70 65 72 61 74 69 6f  or some operatio
277c0 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ns..**.** ^The s
277d0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
277e0 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
277f0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 62  a pointer to a b
27800 6c 6f 63 6b 0a 2a 2a 20 6f 66 20 6d 65 6d 6f 72  lock.** of memor
27810 79 20 61 74 20 6c 65 61 73 74 20 4e 20 62 79 74  y at least N byt
27820 65 73 20 69 6e 20 6c 65 6e 67 74 68 2c 20 77 68  es in length, wh
27830 65 72 65 20 4e 20 69 73 20 74 68 65 20 70 61 72  ere N is the par
27840 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66 20 73  ameter..** ^If s
27850 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
27860 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 6f 62 74  is unable to obt
27870 61 69 6e 20 73 75 66 66 69 63 69 65 6e 74 20 66  ain sufficient f
27880 72 65 65 0a 2a 2a 20 6d 65 6d 6f 72 79 2c 20 69  ree.** memory, i
27890 74 20 72 65 74 75 72 6e 73 20 61 20 4e 55 4c 4c  t returns a NULL
278a0 20 70 6f 69 6e 74 65 72 2e 20 20 5e 49 66 20 74   pointer.  ^If t
278b0 68 65 20 70 61 72 61 6d 65 74 65 72 20 4e 20 74  he parameter N t
278c0 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c  o.** sqlite3_mal
278d0 6c 6f 63 28 29 20 69 73 20 7a 65 72 6f 20 6f 72  loc() is zero or
278e0 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e 20 73   negative then s
278f0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
27900 72 65 74 75 72 6e 73 0a 2a 2a 20 61 20 4e 55 4c  returns.** a NUL
27910 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a  L pointer..**.**
27920 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d 61   ^The sqlite3_ma
27930 6c 6c 6f 63 36 34 28 4e 29 20 72 6f 75 74 69 6e  lloc64(N) routin
27940 65 20 77 6f 72 6b 73 20 6a 75 73 74 20 6c 69 6b  e works just lik
27950 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c  e.** sqlite3_mal
27960 6c 6f 63 28 4e 29 20 65 78 63 65 70 74 20 74 68  loc(N) except th
27970 61 74 20 4e 20 69 73 20 61 6e 20 75 6e 73 69 67  at N is an unsig
27980 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74 65 67  ned 64-bit integ
27990 65 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20 6f 66  er instead.** of
279a0 20 61 20 73 69 67 6e 65 64 20 33 32 2d 62 69 74   a signed 32-bit
279b0 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a 2a 20   integer..**.** 
279c0 5e 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33  ^Calling sqlite3
279d0 5f 66 72 65 65 28 29 20 77 69 74 68 20 61 20 70  _free() with a p
279e0 6f 69 6e 74 65 72 20 70 72 65 76 69 6f 75 73 6c  ointer previousl
279f0 79 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 62 79  y returned.** by
27a00 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
27a10 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61  ) or sqlite3_rea
27a20 6c 6c 6f 63 28 29 20 72 65 6c 65 61 73 65 73 20  lloc() releases 
27a30 74 68 61 74 20 6d 65 6d 6f 72 79 20 73 6f 0a 2a  that memory so.*
27a40 2a 20 74 68 61 74 20 69 74 20 6d 69 67 68 74 20  * that it might 
27a50 62 65 20 72 65 75 73 65 64 2e 20 20 5e 54 68 65  be reused.  ^The
27a60 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20   sqlite3_free() 
27a70 72 6f 75 74 69 6e 65 20 69 73 0a 2a 2a 20 61 20  routine is.** a 
27a80 6e 6f 2d 6f 70 20 69 66 20 69 73 20 63 61 6c 6c  no-op if is call
27a90 65 64 20 77 69 74 68 20 61 20 4e 55 4c 4c 20 70  ed with a NULL p
27aa0 6f 69 6e 74 65 72 2e 20 20 50 61 73 73 69 6e 67  ointer.  Passing
27ab0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a   a NULL pointer.
27ac0 2a 2a 20 74 6f 20 73 71 6c 69 74 65 33 5f 66 72  ** to sqlite3_fr
27ad0 65 65 28 29 20 69 73 20 68 61 72 6d 6c 65 73 73  ee() is harmless
27ae0 2e 20 20 41 66 74 65 72 20 62 65 69 6e 67 20 66  .  After being f
27af0 72 65 65 64 2c 20 6d 65 6d 6f 72 79 0a 2a 2a 20  reed, memory.** 
27b00 73 68 6f 75 6c 64 20 6e 65 69 74 68 65 72 20 62  should neither b
27b10 65 20 72 65 61 64 20 6e 6f 72 20 77 72 69 74 74  e read nor writt
27b20 65 6e 2e 20 20 45 76 65 6e 20 72 65 61 64 69 6e  en.  Even readin
27b30 67 20 70 72 65 76 69 6f 75 73 6c 79 20 66 72 65  g previously fre
27b40 65 64 0a 2a 2a 20 6d 65 6d 6f 72 79 20 6d 69 67  ed.** memory mig
27b50 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61 20 73  ht result in a s
27b60 65 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61 75 6c  egmentation faul
27b70 74 20 6f 72 20 6f 74 68 65 72 20 73 65 76 65 72  t or other sever
27b80 65 20 65 72 72 6f 72 2e 0a 2a 2a 20 4d 65 6d 6f  e error..** Memo
27b90 72 79 20 63 6f 72 72 75 70 74 69 6f 6e 2c 20 61  ry corruption, a
27ba0 20 73 65 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61   segmentation fa
27bb0 75 6c 74 2c 20 6f 72 20 6f 74 68 65 72 20 73 65  ult, or other se
27bc0 76 65 72 65 20 65 72 72 6f 72 0a 2a 2a 20 6d 69  vere error.** mi
27bd0 67 68 74 20 72 65 73 75 6c 74 20 69 66 20 73 71  ght result if sq
27be0 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69 73 20  lite3_free() is 
27bf0 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20 6e 6f  called with a no
27c00 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74  n-NULL pointer t
27c10 68 61 74 0a 2a 2a 20 77 61 73 20 6e 6f 74 20 6f  hat.** was not o
27c20 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c  btained from sql
27c30 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20 6f 72  ite3_malloc() or
27c40 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
27c50 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  ()..**.** ^The s
27c60 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58  qlite3_realloc(X
27c70 2c 4e 29 20 69 6e 74 65 72 66 61 63 65 20 61 74  ,N) interface at
27c80 74 65 6d 70 74 73 20 74 6f 20 72 65 73 69 7a 65  tempts to resize
27c90 20 61 0a 2a 2a 20 70 72 69 6f 72 20 6d 65 6d 6f   a.** prior memo
27ca0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 58 20  ry allocation X 
27cb0 74 6f 20 62 65 20 61 74 20 6c 65 61 73 74 20 4e  to be at least N
27cc0 20 62 79 74 65 73 2e 0a 2a 2a 20 5e 49 66 20 74   bytes..** ^If t
27cd0 68 65 20 58 20 70 61 72 61 6d 65 74 65 72 20 74  he X parameter t
27ce0 6f 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f  o sqlite3_reallo
27cf0 63 28 58 2c 4e 29 0a 2a 2a 20 69 73 20 61 20 4e  c(X,N).** is a N
27d00 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e  ULL pointer then
27d10 20 69 74 73 20 62 65 68 61 76 69 6f 72 20 69 73   its behavior is
27d20 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20 63 61   identical to ca
27d30 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33  lling.** sqlite3
27d40 5f 6d 61 6c 6c 6f 63 28 4e 29 2e 0a 2a 2a 20 5e  _malloc(N)..** ^
27d50 49 66 20 74 68 65 20 4e 20 70 61 72 61 6d 65 74  If the N paramet
27d60 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65  er to sqlite3_re
27d70 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 73 20 7a 65  alloc(X,N) is ze
27d80 72 6f 20 6f 72 0a 2a 2a 20 6e 65 67 61 74 69 76  ro or.** negativ
27d90 65 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  e then the behav
27da0 69 6f 72 20 69 73 20 65 78 61 63 74 6c 79 20 74  ior is exactly t
27db0 68 65 20 73 61 6d 65 20 61 73 20 63 61 6c 6c 69  he same as calli
27dc0 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 66 72  ng.** sqlite3_fr
27dd0 65 65 28 58 29 2e 0a 2a 2a 20 5e 73 71 6c 69 74  ee(X)..** ^sqlit
27de0 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20  e3_realloc(X,N) 
27df0 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65  returns a pointe
27e00 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20 61 6c  r to a memory al
27e10 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 61  location.** of a
27e20 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65 73 20  t least N bytes 
27e30 69 6e 20 73 69 7a 65 20 6f 72 20 4e 55 4c 4c 20  in size or NULL 
27e40 69 66 20 69 6e 73 75 66 66 69 63 69 65 6e 74 20  if insufficient 
27e50 6d 65 6d 6f 72 79 20 69 73 20 61 76 61 69 6c 61  memory is availa
27e60 62 6c 65 2e 0a 2a 2a 20 5e 49 66 20 4d 20 69 73  ble..** ^If M is
27e70 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65   the size of the
27e80 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f   prior allocatio
27e90 6e 2c 20 74 68 65 6e 20 6d 69 6e 28 4e 2c 4d 29  n, then min(N,M)
27ea0 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 74 68 65   bytes.** of the
27eb0 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f   prior allocatio
27ec0 6e 20 61 72 65 20 63 6f 70 69 65 64 20 69 6e 74  n are copied int
27ed0 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  o the beginning 
27ee0 6f 66 20 62 75 66 66 65 72 20 72 65 74 75 72 6e  of buffer return
27ef0 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74 65 33  ed.** by sqlite3
27f00 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 61 6e  _realloc(X,N) an
27f10 64 20 74 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f  d the prior allo
27f20 63 61 74 69 6f 6e 20 69 73 20 66 72 65 65 64 2e  cation is freed.
27f30 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65 33 5f  .** ^If sqlite3_
27f40 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 72 65 74  realloc(X,N) ret
27f50 75 72 6e 73 20 4e 55 4c 4c 20 61 6e 64 20 4e 20  urns NULL and N 
27f60 69 73 20 70 6f 73 69 74 69 76 65 2c 20 74 68 65  is positive, the
27f70 6e 20 74 68 65 0a 2a 2a 20 70 72 69 6f 72 20 61  n the.** prior a
27f80 6c 6c 6f 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74  llocation is not
27f90 20 66 72 65 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54   freed..**.** ^T
27fa0 68 65 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  he sqlite3_reall
27fb0 6f 63 36 34 28 58 2c 4e 29 20 69 6e 74 65 72 66  oc64(X,N) interf
27fc0 61 63 65 73 20 77 6f 72 6b 73 20 74 68 65 20 73  aces works the s
27fd0 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69 74 65  ame as.** sqlite
27fe0 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 65  3_realloc(X,N) e
27ff0 78 63 65 70 74 20 74 68 61 74 20 4e 20 69 73 20  xcept that N is 
28000 61 20 36 34 2d 62 69 74 20 75 6e 73 69 67 6e 65  a 64-bit unsigne
28010 64 20 69 6e 74 65 67 65 72 20 69 6e 73 74 65 61  d integer instea
28020 64 0a 2a 2a 20 6f 66 20 61 20 33 32 2d 62 69 74  d.** of a 32-bit
28030 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2e   signed integer.
28040 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 58 20 69 73 20  .**.** ^If X is 
28050 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  a memory allocat
28060 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 6f  ion previously o
28070 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73 71 6c  btained from sql
28080 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c 0a 2a  ite3_malloc(),.*
28090 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63  * sqlite3_malloc
280a0 36 34 28 29 2c 20 73 71 6c 69 74 65 33 5f 72 65  64(), sqlite3_re
280b0 61 6c 6c 6f 63 28 29 2c 20 6f 72 20 73 71 6c 69  alloc(), or sqli
280c0 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28 29 2c  te3_realloc64(),
280d0 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   then.** sqlite3
280e0 5f 6d 73 69 7a 65 28 58 29 20 72 65 74 75 72 6e  _msize(X) return
280f0 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68  s the size of th
28100 61 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  at memory alloca
28110 74 69 6f 6e 20 69 6e 20 62 79 74 65 73 2e 0a 2a  tion in bytes..*
28120 2a 20 5e 54 68 65 20 76 61 6c 75 65 20 72 65 74  * ^The value ret
28130 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33  urned by sqlite3
28140 5f 6d 73 69 7a 65 28 58 29 20 6d 69 67 68 74 20  _msize(X) might 
28150 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e 20 74  be larger than t
28160 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f 66 20  he number.** of 
28170 62 79 74 65 73 20 72 65 71 75 65 73 74 65 64 20  bytes requested 
28180 77 68 65 6e 20 58 20 77 61 73 20 61 6c 6c 6f 63  when X was alloc
28190 61 74 65 64 2e 20 20 5e 49 66 20 58 20 69 73 20  ated.  ^If X is 
281a0 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74  a NULL pointer t
281b0 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  hen.** sqlite3_m
281c0 73 69 7a 65 28 58 29 20 72 65 74 75 72 6e 73 20  size(X) returns 
281d0 7a 65 72 6f 2e 20 20 49 66 20 58 20 70 6f 69 6e  zero.  If X poin
281e0 74 73 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20  ts to something 
281f0 74 68 61 74 20 69 73 20 6e 6f 74 0a 2a 2a 20 74  that is not.** t
28200 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20  he beginning of 
28210 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
28220 6e 2c 20 6f 72 20 69 66 20 69 74 20 70 6f 69 6e  n, or if it poin
28230 74 73 20 74 6f 20 61 20 66 6f 72 6d 65 72 6c 79  ts to a formerly
28240 0a 2a 2a 20 76 61 6c 69 64 20 6d 65 6d 6f 72 79  .** valid memory
28250 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 68 61 74   allocation that
28260 20 68 61 73 20 6e 6f 77 20 62 65 65 6e 20 66 72   has now been fr
28270 65 65 64 2c 20 74 68 65 6e 20 74 68 65 20 62 65  eed, then the be
28280 68 61 76 69 6f 72 0a 2a 2a 20 6f 66 20 73 71 6c  havior.** of sql
28290 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20 69 73  ite3_msize(X) is
282a0 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20 70   undefined and p
282b0 6f 73 73 69 62 6c 79 20 68 61 72 6d 66 75 6c 2e  ossibly harmful.
282c0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d 6f  .**.** ^The memo
282d0 72 79 20 72 65 74 75 72 6e 65 64 20 62 79 20 73  ry returned by s
282e0 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c  qlite3_malloc(),
282f0 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
28300 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  (),.** sqlite3_m
28310 61 6c 6c 6f 63 36 34 28 29 2c 20 61 6e 64 20 73  alloc64(), and s
28320 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34  qlite3_realloc64
28330 28 29 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20  ().** is always 
28340 61 6c 69 67 6e 65 64 20 74 6f 20 61 74 20 6c 65  aligned to at le
28350 61 73 74 20 61 6e 20 38 20 62 79 74 65 20 62 6f  ast an 8 byte bo
28360 75 6e 64 61 72 79 2c 20 6f 72 20 74 6f 20 61 0a  undary, or to a.
28370 2a 2a 20 34 20 62 79 74 65 20 62 6f 75 6e 64 61  ** 4 byte bounda
28380 72 79 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54  ry if the [SQLIT
28390 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e 45 44  E_4_BYTE_ALIGNED
283a0 5f 4d 41 4c 4c 4f 43 5d 20 63 6f 6d 70 69 6c 65  _MALLOC] compile
283b0 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 20  -time.** option 
283c0 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 49  is used..**.** I
283d0 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  n SQLite version
283e0 20 33 2e 35 2e 30 20 61 6e 64 20 33 2e 35 2e 31   3.5.0 and 3.5.1
283f0 2c 20 69 74 20 77 61 73 20 70 6f 73 73 69 62 6c  , it was possibl
28400 65 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a 20 74  e to define.** t
28410 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 4d  he SQLITE_OMIT_M
28420 45 4d 4f 52 59 5f 41 4c 4c 4f 43 41 54 49 4f 4e  EMORY_ALLOCATION
28430 20 77 68 69 63 68 20 77 6f 75 6c 64 20 63 61 75   which would cau
28440 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 0a  se the built-in.
28450 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  ** implementatio
28460 6e 20 6f 66 20 74 68 65 73 65 20 72 6f 75 74 69  n of these routi
28470 6e 65 73 20 74 6f 20 62 65 20 6f 6d 69 74 74 65  nes to be omitte
28480 64 2e 20 20 54 68 61 74 20 63 61 70 61 62 69 6c  d.  That capabil
28490 69 74 79 0a 2a 2a 20 69 73 20 6e 6f 20 6c 6f 6e  ity.** is no lon
284a0 67 65 72 20 70 72 6f 76 69 64 65 64 2e 20 20 4f  ger provided.  O
284b0 6e 6c 79 20 62 75 69 6c 74 2d 69 6e 20 6d 65 6d  nly built-in mem
284c0 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73 20 63  ory allocators c
284d0 61 6e 20 62 65 20 75 73 65 64 2e 0a 2a 2a 0a 2a  an be used..**.*
284e0 2a 20 50 72 69 6f 72 20 74 6f 20 53 51 4c 69 74  * Prior to SQLit
284f0 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e 31 30  e version 3.7.10
28500 2c 20 74 68 65 20 57 69 6e 64 6f 77 73 20 4f 53  , the Windows OS
28510 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79 65 72   interface layer
28520 20 63 61 6c 6c 65 64 0a 2a 2a 20 74 68 65 20 73   called.** the s
28530 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29 20 61  ystem malloc() a
28540 6e 64 20 66 72 65 65 28 29 20 64 69 72 65 63 74  nd free() direct
28550 6c 79 20 77 68 65 6e 20 63 6f 6e 76 65 72 74 69  ly when converti
28560 6e 67 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 73 20  ng.** filenames 
28570 62 65 74 77 65 65 6e 20 74 68 65 20 55 54 46 2d  between the UTF-
28580 38 20 65 6e 63 6f 64 69 6e 67 20 75 73 65 64 20  8 encoding used 
28590 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 61 6e 64  by SQLite.** and
285a0 20 77 68 61 74 65 76 65 72 20 66 69 6c 65 6e 61   whatever filena
285b0 6d 65 20 65 6e 63 6f 64 69 6e 67 20 69 73 20 75  me encoding is u
285c0 73 65 64 20 62 79 20 74 68 65 20 70 61 72 74 69  sed by the parti
285d0 63 75 6c 61 72 20 57 69 6e 64 6f 77 73 0a 2a 2a  cular Windows.**
285e0 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 20 20   installation.  
285f0 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  Memory allocatio
28600 6e 20 65 72 72 6f 72 73 20 77 65 72 65 20 64 65  n errors were de
28610 74 65 63 74 65 64 2c 20 62 75 74 0a 2a 2a 20 74  tected, but.** t
28620 68 65 79 20 77 65 72 65 20 72 65 70 6f 72 74 65  hey were reporte
28630 64 20 62 61 63 6b 20 61 73 20 5b 53 51 4c 49 54  d back as [SQLIT
28640 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 6f 72 0a 2a  E_CANTOPEN] or.*
28650 2a 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52 52 5d  * [SQLITE_IOERR]
28660 20 72 61 74 68 65 72 20 74 68 61 6e 20 5b 53 51   rather than [SQ
28670 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 2e 0a 2a 2a 0a  LITE_NOMEM]..**.
28680 2a 2a 20 54 68 65 20 70 6f 69 6e 74 65 72 20 61  ** The pointer a
28690 72 67 75 6d 65 6e 74 73 20 74 6f 20 5b 73 71 6c  rguments to [sql
286a0 69 74 65 33 5f 66 72 65 65 28 29 5d 20 61 6e 64  ite3_free()] and
286b0 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
286c0 63 28 29 5d 0a 2a 2a 20 6d 75 73 74 20 62 65 20  c()].** must be 
286d0 65 69 74 68 65 72 20 4e 55 4c 4c 20 6f 72 20 65  either NULL or e
286e0 6c 73 65 20 70 6f 69 6e 74 65 72 73 20 6f 62 74  lse pointers obt
286f0 61 69 6e 65 64 20 66 72 6f 6d 20 61 20 70 72 69  ained from a pri
28700 6f 72 0a 2a 2a 20 69 6e 76 6f 63 61 74 69 6f 6e  or.** invocation
28710 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c   of [sqlite3_mal
28720 6c 6f 63 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74  loc()] or [sqlit
28730 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 20 74 68  e3_realloc()] th
28740 61 74 20 68 61 76 65 0a 2a 2a 20 6e 6f 74 20 79  at have.** not y
28750 65 74 20 62 65 65 6e 20 72 65 6c 65 61 73 65 64  et been released
28760 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 70 70 6c  ..**.** The appl
28770 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74  ication must not
28780 20 72 65 61 64 20 6f 72 20 77 72 69 74 65 20 61   read or write a
28790 6e 79 20 70 61 72 74 20 6f 66 0a 2a 2a 20 61 20  ny part of.** a 
287a0 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72 79 20  block of memory 
287b0 61 66 74 65 72 20 69 74 20 68 61 73 20 62 65 65  after it has bee
287c0 6e 20 72 65 6c 65 61 73 65 64 20 75 73 69 6e 67  n released using
287d0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  .** [sqlite3_fre
287e0 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74 65 33  e()] or [sqlite3
287f0 5f 72 65 61 6c 6c 6f 63 28 29 5d 2e 0a 2a 2f 0a  _realloc()]..*/.
28800 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
28810 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  *sqlite3_malloc(
28820 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  int);.SQLITE_API
28830 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 6d   void *sqlite3_m
28840 61 6c 6c 6f 63 36 34 28 73 71 6c 69 74 65 33 5f  alloc64(sqlite3_
28850 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54 45 5f  uint64);.SQLITE_
28860 41 50 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  API void *sqlite
28870 33 5f 72 65 61 6c 6c 6f 63 28 76 6f 69 64 2a 2c  3_realloc(void*,
28880 20 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50   int);.SQLITE_AP
28890 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f  I void *sqlite3_
288a0 72 65 61 6c 6c 6f 63 36 34 28 76 6f 69 64 2a 2c  realloc64(void*,
288b0 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29   sqlite3_uint64)
288c0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  ;.SQLITE_API voi
288d0 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28 76  d sqlite3_free(v
288e0 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45 5f 41 50  oid*);.SQLITE_AP
288f0 49 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34  I sqlite3_uint64
28900 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 76   sqlite3_msize(v
28910 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  oid*);../*.** CA
28920 50 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41  PI3REF: Memory A
28930 6c 6c 6f 63 61 74 6f 72 20 53 74 61 74 69 73 74  llocator Statist
28940 69 63 73 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65  ics.**.** SQLite
28950 20 70 72 6f 76 69 64 65 73 20 74 68 65 73 65 20   provides these 
28960 74 77 6f 20 69 6e 74 65 72 66 61 63 65 73 20 66  two interfaces f
28970 6f 72 20 72 65 70 6f 72 74 69 6e 67 20 6f 6e 20  or reporting on 
28980 74 68 65 20 73 74 61 74 75 73 0a 2a 2a 20 6f 66  the status.** of
28990 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 61   the [sqlite3_ma
289a0 6c 6c 6f 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65  lloc()], [sqlite
289b0 33 5f 66 72 65 65 28 29 5d 2c 20 61 6e 64 20 5b  3_free()], and [
289c0 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28  sqlite3_realloc(
289d0 29 5d 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 2c 20  )].** routines, 
289e0 77 68 69 63 68 20 66 6f 72 6d 20 74 68 65 20 62  which form the b
289f0 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79 20 61  uilt-in memory a
28a00 6c 6c 6f 63 61 74 69 6f 6e 20 73 75 62 73 79 73  llocation subsys
28a10 74 65 6d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  tem..**.** ^The 
28a20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f  [sqlite3_memory_
28a30 75 73 65 64 28 29 5d 20 72 6f 75 74 69 6e 65 20  used()] routine 
28a40 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
28a50 65 72 20 6f 66 20 62 79 74 65 73 0a 2a 2a 20 6f  er of bytes.** o
28a60 66 20 6d 65 6d 6f 72 79 20 63 75 72 72 65 6e 74  f memory current
28a70 6c 79 20 6f 75 74 73 74 61 6e 64 69 6e 67 20 28  ly outstanding (
28a80 6d 61 6c 6c 6f 63 65 64 20 62 75 74 20 6e 6f 74  malloced but not
28a90 20 66 72 65 65 64 29 2e 0a 2a 2a 20 5e 54 68 65   freed)..** ^The
28aa0 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79   [sqlite3_memory
28ab0 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20 72 6f  _highwater()] ro
28ac0 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 68  utine returns th
28ad0 65 20 6d 61 78 69 6d 75 6d 0a 2a 2a 20 76 61 6c  e maximum.** val
28ae0 75 65 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d  ue of [sqlite3_m
28af0 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 73 69  emory_used()] si
28b00 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77 61 74  nce the high-wat
28b10 65 72 20 6d 61 72 6b 0a 2a 2a 20 77 61 73 20 6c  er mark.** was l
28b20 61 73 74 20 72 65 73 65 74 2e 20 20 5e 54 68 65  ast reset.  ^The
28b30 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64   values returned
28b40 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d   by [sqlite3_mem
28b50 6f 72 79 5f 75 73 65 64 28 29 5d 20 61 6e 64 0a  ory_used()] and.
28b60 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ** [sqlite3_memo
28b70 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20  ry_highwater()] 
28b80 69 6e 63 6c 75 64 65 20 61 6e 79 20 6f 76 65 72  include any over
28b90 68 65 61 64 0a 2a 2a 20 61 64 64 65 64 20 62 79  head.** added by
28ba0 20 53 51 4c 69 74 65 20 69 6e 20 69 74 73 20 69   SQLite in its i
28bb0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
28bc0 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63   [sqlite3_malloc
28bd0 28 29 5d 2c 0a 2a 2a 20 62 75 74 20 6e 6f 74 20  ()],.** but not 
28be0 6f 76 65 72 68 65 61 64 20 61 64 64 65 64 20 62  overhead added b
28bf0 79 20 74 68 65 20 61 6e 79 20 75 6e 64 65 72 6c  y the any underl
28c00 79 69 6e 67 20 73 79 73 74 65 6d 20 6c 69 62 72  ying system libr
28c10 61 72 79 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20  ary.** routines 
28c20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 6d 61  that [sqlite3_ma
28c30 6c 6c 6f 63 28 29 5d 20 6d 61 79 20 63 61 6c 6c  lloc()] may call
28c40 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65 6d  ..**.** ^The mem
28c50 6f 72 79 20 68 69 67 68 2d 77 61 74 65 72 20 6d  ory high-water m
28c60 61 72 6b 20 69 73 20 72 65 73 65 74 20 74 6f 20  ark is reset to 
28c70 74 68 65 20 63 75 72 72 65 6e 74 20 76 61 6c 75  the current valu
28c80 65 20 6f 66 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  e of.** [sqlite3
28c90 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20  _memory_used()] 
28ca0 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 20 74  if and only if t
28cb0 68 65 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  he parameter to.
28cc0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  ** [sqlite3_memo
28cd0 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20  ry_highwater()] 
28ce0 69 73 20 74 72 75 65 2e 20 20 5e 54 68 65 20 76  is true.  ^The v
28cf0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a  alue returned.**
28d00 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d   by [sqlite3_mem
28d10 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 31 29  ory_highwater(1)
28d20 5d 20 69 73 20 74 68 65 20 68 69 67 68 2d 77 61  ] is the high-wa
28d30 74 65 72 20 6d 61 72 6b 0a 2a 2a 20 70 72 69 6f  ter mark.** prio
28d40 72 20 74 6f 20 74 68 65 20 72 65 73 65 74 2e 0a  r to the reset..
28d50 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71  */.SQLITE_API sq
28d60 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69  lite3_int64 sqli
28d70 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28  te3_memory_used(
28d80 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f 41 50  void);.SQLITE_AP
28d90 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20  I sqlite3_int64 
28da0 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 68  sqlite3_memory_h
28db0 69 67 68 77 61 74 65 72 28 69 6e 74 20 72 65 73  ighwater(int res
28dc0 65 74 46 6c 61 67 29 3b 0a 0a 2f 2a 0a 2a 2a 20  etFlag);../*.** 
28dd0 43 41 50 49 33 52 45 46 3a 20 50 73 65 75 64 6f  CAPI3REF: Pseudo
28de0 2d 52 61 6e 64 6f 6d 20 4e 75 6d 62 65 72 20 47  -Random Number G
28df0 65 6e 65 72 61 74 6f 72 0a 2a 2a 0a 2a 2a 20 53  enerator.**.** S
28e00 51 4c 69 74 65 20 63 6f 6e 74 61 69 6e 73 20 61  QLite contains a
28e10 20 68 69 67 68 2d 71 75 61 6c 69 74 79 20 70 73   high-quality ps
28e20 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 6e 75 6d 62  eudo-random numb
28e30 65 72 20 67 65 6e 65 72 61 74 6f 72 20 28 50 52  er generator (PR
28e40 4e 47 29 20 75 73 65 64 20 74 6f 0a 2a 2a 20 73  NG) used to.** s
28e50 65 6c 65 63 74 20 72 61 6e 64 6f 6d 20 5b 52 4f  elect random [RO
28e60 57 49 44 20 7c 20 52 4f 57 49 44 73 5d 20 77 68  WID | ROWIDs] wh
28e70 65 6e 20 69 6e 73 65 72 74 69 6e 67 20 6e 65 77  en inserting new
28e80 20 72 65 63 6f 72 64 73 20 69 6e 74 6f 20 61 20   records into a 
28e90 74 61 62 6c 65 20 74 68 61 74 0a 2a 2a 20 61 6c  table that.** al
28ea0 72 65 61 64 79 20 75 73 65 73 20 74 68 65 20 6c  ready uses the l
28eb0 61 72 67 65 73 74 20 70 6f 73 73 69 62 6c 65 20  argest possible 
28ec0 5b 52 4f 57 49 44 5d 2e 20 20 54 68 65 20 50 52  [ROWID].  The PR
28ed0 4e 47 20 69 73 20 61 6c 73 6f 20 75 73 65 64 20  NG is also used 
28ee0 66 6f 72 0a 2a 2a 20 74 68 65 20 62 75 69 6c 64  for.** the build
28ef0 2d 69 6e 20 72 61 6e 64 6f 6d 28 29 20 61 6e 64  -in random() and
28f00 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 29 20 53 51   randomblob() SQ
28f10 4c 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 54 68  L functions.  Th
28f20 69 73 20 69 6e 74 65 72 66 61 63 65 20 61 6c 6c  is interface all
28f30 6f 77 73 0a 2a 2a 20 61 70 70 6c 69 63 61 74 69  ows.** applicati
28f40 6f 6e 73 20 74 6f 20 61 63 63 65 73 73 20 74 68  ons to access th
28f50 65 20 73 61 6d 65 20 50 52 4e 47 20 66 6f 72 20  e same PRNG for 
28f60 6f 74 68 65 72 20 70 75 72 70 6f 73 65 73 2e 0a  other purposes..
28f70 2a 2a 0a 2a 2a 20 5e 41 20 63 61 6c 6c 20 74 6f  **.** ^A call to
28f80 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 73 74   this routine st
28f90 6f 72 65 73 20 4e 20 62 79 74 65 73 20 6f 66 20  ores N bytes of 
28fa0 72 61 6e 64 6f 6d 6e 65 73 73 20 69 6e 74 6f 20  randomness into 
28fb0 62 75 66 66 65 72 20 50 2e 0a 2a 2a 20 5e 54 68  buffer P..** ^Th
28fc0 65 20 50 20 70 61 72 61 6d 65 74 65 72 20 63 61  e P parameter ca
28fd0 6e 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  n be a NULL poin
28fe0 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74  ter..**.** ^If t
28ff0 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61 73 20  his routine has 
29000 6e 6f 74 20 62 65 65 6e 20 70 72 65 76 69 6f 75  not been previou
29010 73 6c 79 20 63 61 6c 6c 65 64 20 6f 72 20 69 66  sly called or if
29020 20 74 68 65 20 70 72 65 76 69 6f 75 73 0a 2a 2a   the previous.**
29030 20 63 61 6c 6c 20 68 61 64 20 4e 20 6c 65 73 73   call had N less
29040 20 74 68 61 6e 20 6f 6e 65 20 6f 72 20 61 20 4e   than one or a N
29050 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f 72 20  ULL pointer for 
29060 50 2c 20 74 68 65 6e 20 74 68 65 20 50 52 4e 47  P, then the PRNG
29070 20 69 73 0a 2a 2a 20 73 65 65 64 65 64 20 75 73   is.** seeded us
29080 69 6e 67 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f  ing randomness o
29090 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74 68 65  btained from the
290a0 20 78 52 61 6e 64 6f 6d 6e 65 73 73 20 6d 65 74   xRandomness met
290b0 68 6f 64 20 6f 66 0a 2a 2a 20 74 68 65 20 64 65  hod of.** the de
290c0 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33 5f 76  fault [sqlite3_v
290d0 66 73 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 20 5e  fs] object..** ^
290e0 49 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20  If the previous 
290f0 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72 6f 75  call to this rou
29100 74 69 6e 65 20 68 61 64 20 61 6e 20 4e 20 6f 66  tine had an N of
29110 20 31 20 6f 72 20 6d 6f 72 65 20 61 6e 64 20 61   1 or more and a
29120 0a 2a 2a 20 6e 6f 6e 2d 4e 55 4c 4c 20 50 20 74  .** non-NULL P t
29130 68 65 6e 20 74 68 65 20 70 73 65 75 64 6f 2d 72  hen the pseudo-r
29140 61 6e 64 6f 6d 6e 65 73 73 20 69 73 20 67 65 6e  andomness is gen
29150 65 72 61 74 65 64 0a 2a 2a 20 69 6e 74 65 72 6e  erated.** intern
29160 61 6c 6c 79 20 61 6e 64 20 77 69 74 68 6f 75 74  ally and without
29170 20 72 65 63 6f 75 72 73 65 20 74 6f 20 74 68 65   recourse to the
29180 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 78   [sqlite3_vfs] x
29190 52 61 6e 64 6f 6d 6e 65 73 73 0a 2a 2a 20 6d 65  Randomness.** me
291a0 74 68 6f 64 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  thod..*/.SQLITE_
291b0 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65 33  API void sqlite3
291c0 5f 72 61 6e 64 6f 6d 6e 65 73 73 28 69 6e 74 20  _randomness(int 
291d0 4e 2c 20 76 6f 69 64 20 2a 50 29 3b 0a 0a 2f 2a  N, void *P);../*
291e0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f  .** CAPI3REF: Co
291f0 6d 70 69 6c 65 2d 54 69 6d 65 20 41 75 74 68 6f  mpile-Time Autho
29200 72 69 7a 61 74 69 6f 6e 20 43 61 6c 6c 62 61 63  rization Callbac
29210 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  ks.** METHOD: sq
29220 6c 69 74 65 33 0a 2a 2a 20 4b 45 59 57 4f 52 44  lite3.** KEYWORD
29230 53 3a 20 7b 61 75 74 68 6f 72 69 7a 65 72 20 63  S: {authorizer c
29240 61 6c 6c 62 61 63 6b 7d 0a 2a 2a 0a 2a 2a 20 5e  allback}.**.** ^
29250 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72 65 67  This routine reg
29260 69 73 74 65 72 73 20 61 6e 20 61 75 74 68 6f 72  isters an author
29270 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 77 69  izer callback wi
29280 74 68 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a  th a particular.
29290 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
292a0 6e 65 63 74 69 6f 6e 5d 2c 20 73 75 70 70 6c 69  nection], suppli
292b0 65 64 20 69 6e 20 74 68 65 20 66 69 72 73 74 20  ed in the first 
292c0 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20 5e 54 68  argument..** ^Th
292d0 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  e authorizer cal
292e0 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b 65 64  lback is invoked
292f0 20 61 73 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   as SQL statemen
29300 74 73 20 61 72 65 20 62 65 69 6e 67 20 63 6f 6d  ts are being com
29310 70 69 6c 65 64 0a 2a 2a 20 62 79 20 5b 73 71 6c  piled.** by [sql
29320 69 74 65 33 5f 70 72 65 70 61 72 65 28 29 5d 20  ite3_prepare()] 
29330 6f 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 20  or its variants 
29340 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
29350 5f 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  _v2()],.** [sqli
29360 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29  te3_prepare_v3()
29370 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
29380 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c 69 74  are16()], [sqlit
29390 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
293a0 29 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69  )],.** and [sqli
293b0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
293c0 28 29 5d 2e 20 20 5e 41 74 20 76 61 72 69 6f 75  ()].  ^At variou
293d0 73 0a 2a 2a 20 70 6f 69 6e 74 73 20 64 75 72 69  s.** points duri
293e0 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69  ng the compilati
293f0 6f 6e 20 70 72 6f 63 65 73 73 2c 20 61 73 20 6c  on process, as l
29400 6f 67 69 63 20 69 73 20 62 65 69 6e 67 20 63 72  ogic is being cr
29410 65 61 74 65 64 0a 2a 2a 20 74 6f 20 70 65 72 66  eated.** to perf
29420 6f 72 6d 20 76 61 72 69 6f 75 73 20 61 63 74 69  orm various acti
29430 6f 6e 73 2c 20 74 68 65 20 61 75 74 68 6f 72 69  ons, the authori
29440 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  zer callback is 
29450 69 6e 76 6f 6b 65 64 20 74 6f 0a 2a 2a 20 73 65  invoked to.** se
29460 65 20 69 66 20 74 68 6f 73 65 20 61 63 74 69 6f  e if those actio
29470 6e 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 2e 20  ns are allowed. 
29480 20 5e 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72   ^The authorizer
29490 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c 64   callback should
294a0 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  .** return [SQLI
294b0 54 45 5f 4f 4b 5d 20 74 6f 20 61 6c 6c 6f 77 20  TE_OK] to allow 
294c0 74 68 65 20 61 63 74 69 6f 6e 2c 20 5b 53 51 4c  the action, [SQL
294d0 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 6f 20 64  ITE_IGNORE] to d
294e0 69 73 61 6c 6c 6f 77 20 74 68 65 0a 2a 2a 20 73  isallow the.** s
294f0 70 65 63 69 66 69 63 20 61 63 74 69 6f 6e 20 62  pecific action b
29500 75 74 20 61 6c 6c 6f 77 20 74 68 65 20 53 51 4c  ut allow the SQL
29510 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 63 6f   statement to co
29520 6e 74 69 6e 75 65 20 74 6f 20 62 65 0a 2a 2a 20  ntinue to be.** 
29530 63 6f 6d 70 69 6c 65 64 2c 20 6f 72 20 5b 53 51  compiled, or [SQ
29540 4c 49 54 45 5f 44 45 4e 59 5d 20 74 6f 20 63 61  LITE_DENY] to ca
29550 75 73 65 20 74 68 65 20 65 6e 74 69 72 65 20 53  use the entire S
29560 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20  QL statement to 
29570 62 65 0a 2a 2a 20 72 65 6a 65 63 74 65 64 20 77  be.** rejected w
29580 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e  ith an error.  ^
29590 49 66 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65  If the authorize
295a0 72 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72  r callback retur
295b0 6e 73 0a 2a 2a 20 61 6e 79 20 76 61 6c 75 65 20  ns.** any value 
295c0 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51 4c 49  other than [SQLI
295d0 54 45 5f 49 47 4e 4f 52 45 5d 2c 20 5b 53 51 4c  TE_IGNORE], [SQL
295e0 49 54 45 5f 4f 4b 5d 2c 20 6f 72 20 5b 53 51 4c  ITE_OK], or [SQL
295f0 49 54 45 5f 44 45 4e 59 5d 0a 2a 2a 20 74 68 65  ITE_DENY].** the
29600 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70  n the [sqlite3_p
29610 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f 72 20  repare_v2()] or 
29620 65 71 75 69 76 61 6c 65 6e 74 20 63 61 6c 6c 20  equivalent call 
29630 74 68 61 74 20 74 72 69 67 67 65 72 65 64 0a 2a  that triggered.*
29640 2a 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  * the authorizer
29650 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74 68 20   will fail with 
29660 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
29670 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65  ..**.** When the
29680 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
29690 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74  s [SQLITE_OK], t
296a0 68 61 74 20 6d 65 61 6e 73 20 74 68 65 20 6f 70  hat means the op
296b0 65 72 61 74 69 6f 6e 0a 2a 2a 20 72 65 71 75 65  eration.** reque
296c0 73 74 65 64 20 69 73 20 6f 6b 2e 20 20 5e 57 68  sted is ok.  ^Wh
296d0 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20  en the callback 
296e0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
296f0 44 45 4e 59 5d 2c 20 74 68 65 0a 2a 2a 20 5b 73  DENY], the.** [s
29700 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
29710 32 28 29 5d 20 6f 72 20 65 71 75 69 76 61 6c 65  2()] or equivale
29720 6e 74 20 63 61 6c 6c 20 74 68 61 74 20 74 72 69  nt call that tri
29730 67 67 65 72 65 64 20 74 68 65 0a 2a 2a 20 61 75  ggered the.** au
29740 74 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20 66 61  thorizer will fa
29750 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72  il with an error
29760 20 6d 65 73 73 61 67 65 20 65 78 70 6c 61 69 6e   message explain
29770 69 6e 67 20 74 68 61 74 0a 2a 2a 20 61 63 63 65  ing that.** acce
29780 73 73 20 69 73 20 64 65 6e 69 65 64 2e 20 0a 2a  ss is denied. .*
29790 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20  *.** ^The first 
297a0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
297b0 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
297c0 62 61 63 6b 20 69 73 20 61 20 63 6f 70 79 20 6f  back is a copy o
297d0 66 20 74 68 65 20 74 68 69 72 64 0a 2a 2a 20 70  f the third.** p
297e0 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20  arameter to the 
297f0 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68  sqlite3_set_auth
29800 6f 72 69 7a 65 72 28 29 20 69 6e 74 65 72 66 61  orizer() interfa
29810 63 65 2e 20 5e 54 68 65 20 73 65 63 6f 6e 64 20  ce. ^The second 
29820 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 74 6f 20  parameter.** to 
29830 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  the callback is 
29840 61 6e 20 69 6e 74 65 67 65 72 20 5b 53 51 4c 49  an integer [SQLI
29850 54 45 5f 43 4f 50 59 20 7c 20 61 63 74 69 6f 6e  TE_COPY | action
29860 20 63 6f 64 65 5d 20 74 68 61 74 20 73 70 65 63   code] that spec
29870 69 66 69 65 73 0a 2a 2a 20 74 68 65 20 70 61 72  ifies.** the par
29880 74 69 63 75 6c 61 72 20 61 63 74 69 6f 6e 20 74  ticular action t
29890 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64 2e  o be authorized.
298a0 20 5e 54 68 65 20 74 68 69 72 64 20 74 68 72 6f   ^The third thro
298b0 75 67 68 20 73 69 78 74 68 20 70 61 72 61 6d 65  ugh sixth parame
298c0 74 65 72 73 0a 2a 2a 20 74 6f 20 74 68 65 20 63  ters.** to the c
298d0 61 6c 6c 62 61 63 6b 20 61 72 65 20 65 69 74 68  allback are eith
298e0 65 72 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 73  er NULL pointers
298f0 20 6f 72 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61   or zero-termina
29900 74 65 64 20 73 74 72 69 6e 67 73 0a 2a 2a 20 74  ted strings.** t
29910 68 61 74 20 63 6f 6e 74 61 69 6e 20 61 64 64 69  hat contain addi
29920 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 73 20 61  tional details a
29930 62 6f 75 74 20 74 68 65 20 61 63 74 69 6f 6e 20  bout the action 
29940 74 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65 64  to be authorized
29950 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e  ..** Application
29960 73 20 6d 75 73 74 20 61 6c 77 61 79 73 20 62 65  s must always be
29970 20 70 72 65 70 61 72 65 64 20 74 6f 20 65 6e 63   prepared to enc
29980 6f 75 6e 74 65 72 20 61 20 4e 55 4c 4c 20 70 6f  ounter a NULL po
29990 69 6e 74 65 72 20 69 6e 20 61 6e 79 0a 2a 2a 20  inter in any.** 
299a0 6f 66 20 74 68 65 20 74 68 69 72 64 20 74 68 72  of the third thr
299b0 6f 75 67 68 20 74 68 65 20 73 69 78 74 68 20 70  ough the sixth p
299c0 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74 68 65  arameters of the
299d0 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 63   authorization c
299e0 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 5e  allback..**.** ^
299f0 49 66 20 74 68 65 20 61 63 74 69 6f 6e 20 63 6f  If the action co
29a00 64 65 20 69 73 20 5b 53 51 4c 49 54 45 5f 52 45  de is [SQLITE_RE
29a10 41 44 5d 0a 2a 2a 20 61 6e 64 20 74 68 65 20 63  AD].** and the c
29a20 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
29a30 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20  [SQLITE_IGNORE] 
29a40 74 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 70 72 65  then the.** [pre
29a50 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d  pared statement]
29a60 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 63 6f   statement is co
29a70 6e 73 74 72 75 63 74 65 64 20 74 6f 20 73 75 62  nstructed to sub
29a80 73 74 69 74 75 74 65 0a 2a 2a 20 61 20 4e 55 4c  stitute.** a NUL
29a90 4c 20 76 61 6c 75 65 20 69 6e 20 70 6c 61 63 65  L value in place
29aa0 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20 63 6f   of the table co
29ab0 6c 75 6d 6e 20 74 68 61 74 20 77 6f 75 6c 64 20  lumn that would 
29ac0 68 61 76 65 0a 2a 2a 20 62 65 65 6e 20 72 65 61  have.** been rea
29ad0 64 20 69 66 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d  d if [SQLITE_OK]
29ae0 20 68 61 64 20 62 65 65 6e 20 72 65 74 75 72 6e   had been return
29af0 65 64 2e 20 20 54 68 65 20 5b 53 51 4c 49 54 45  ed.  The [SQLITE
29b00 5f 49 47 4e 4f 52 45 5d 0a 2a 2a 20 72 65 74 75  _IGNORE].** retu
29b10 72 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74  rn can be used t
29b20 6f 20 64 65 6e 79 20 61 6e 20 75 6e 74 72 75 73  o deny an untrus
29b30 74 65 64 20 75 73 65 72 20 61 63 63 65 73 73 20  ted user access 
29b40 74 6f 20 69 6e 64 69 76 69 64 75 61 6c 0a 2a 2a  to individual.**
29b50 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61   columns of a ta
29b60 62 6c 65 2e 0a 2a 2a 20 5e 57 68 65 6e 20 61 20  ble..** ^When a 
29b70 74 61 62 6c 65 20 69 73 20 72 65 66 65 72 65 6e  table is referen
29b80 63 65 64 20 62 79 20 61 20 5b 53 45 4c 45 43 54  ced by a [SELECT
29b90 5d 20 62 75 74 20 6e 6f 20 63 6f 6c 75 6d 6e 20  ] but no column 
29ba0 76 61 6c 75 65 73 20 61 72 65 0a 2a 2a 20 65 78  values are.** ex
29bb0 74 72 61 63 74 65 64 20 66 72 6f 6d 20 74 68 61  tracted from tha
29bc0 74 20 74 61 62 6c 65 20 28 66 6f 72 20 65 78 61  t table (for exa
29bd0 6d 70 6c 65 20 69 6e 20 61 20 71 75 65 72 79 20  mple in a query 
29be0 6c 69 6b 65 0a 2a 2a 20 22 53 45 4c 45 43 54 20  like.** "SELECT 
29bf0 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 61  count(*) FROM ta
29c00 62 22 29 20 74 68 65 6e 20 74 68 65 20 5b 53 51  b") then the [SQ
29c10 4c 49 54 45 5f 52 45 41 44 5d 20 61 75 74 68 6f  LITE_READ] autho
29c20 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a  rizer callback.*
29c30 2a 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f 6e 63  * is invoked onc
29c40 65 20 66 6f 72 20 74 68 61 74 20 74 61 62 6c 65  e for that table
29c50 20 77 69 74 68 20 61 20 63 6f 6c 75 6d 6e 20 6e   with a column n
29c60 61 6d 65 20 74 68 61 74 20 69 73 20 61 6e 20 65  ame that is an e
29c70 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 2a 2a 20  mpty string..** 
29c80 5e 49 66 20 74 68 65 20 61 63 74 69 6f 6e 20 63  ^If the action c
29c90 6f 64 65 20 69 73 20 5b 53 51 4c 49 54 45 5f 44  ode is [SQLITE_D
29ca0 45 4c 45 54 45 5d 20 61 6e 64 20 74 68 65 20 63  ELETE] and the c
29cb0 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 0a  allback returns.
29cc0 2a 2a 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52  ** [SQLITE_IGNOR
29cd0 45 5d 20 74 68 65 6e 20 74 68 65 20 5b 44 45 4c  E] then the [DEL
29ce0 45 54 45 5d 20 6f 70 65 72 61 74 69 6f 6e 20 70  ETE] operation p
29cf0 72 6f 63 65 65 64 73 20 62 75 74 20 74 68 65 0a  roceeds but the.
29d00 2a 2a 20 5b 74 72 75 6e 63 61 74 65 20 6f 70 74  ** [truncate opt
29d10 69 6d 69 7a 61 74 69 6f 6e 5d 20 69 73 20 64 69  imization] is di
29d20 73 61 62 6c 65 64 20 61 6e 64 20 61 6c 6c 20 72  sabled and all r
29d30 6f 77 73 20 61 72 65 20 64 65 6c 65 74 65 64 20  ows are deleted 
29d40 69 6e 64 69 76 69 64 75 61 6c 6c 79 2e 0a 2a 2a  individually..**
29d50 0a 2a 2a 20 41 6e 20 61 75 74 68 6f 72 69 7a 65  .** An authorize
29d60 72 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 5b  r is used when [
29d70 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20  sqlite3_prepare 
29d80 7c 20 70 72 65 70 61 72 69 6e 67 5d 0a 2a 2a 20  | preparing].** 
29d90 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 66  SQL statements f
29da0 72 6f 6d 20 61 6e 20 75 6e 74 72 75 73 74 65 64  rom an untrusted
29db0 20 73 6f 75 72 63 65 2c 20 74 6f 20 65 6e 73 75   source, to ensu
29dc0 72 65 20 74 68 61 74 20 74 68 65 20 53 51 4c 20  re that the SQL 
29dd0 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 64 6f  statements.** do
29de0 20 6e 6f 74 20 74 72 79 20 74 6f 20 61 63 63 65   not try to acce
29df0 73 73 20 64 61 74 61 20 74 68 65 79 20 61 72 65  ss data they are
29e00 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 74 6f 20   not allowed to 
29e10 73 65 65 2c 20 6f 72 20 74 68 61 74 20 74 68 65  see, or that the
29e20 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20 74 72 79 20  y do not.** try 
29e30 74 6f 20 65 78 65 63 75 74 65 20 6d 61 6c 69 63  to execute malic
29e40 69 6f 75 73 20 73 74 61 74 65 6d 65 6e 74 73 20  ious statements 
29e50 74 68 61 74 20 64 61 6d 61 67 65 20 74 68 65 20  that damage the 
29e60 64 61 74 61 62 61 73 65 2e 20 20 46 6f 72 0a 2a  database.  For.*
29e70 2a 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70  * example, an ap
29e80 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20 61 6c  plication may al
29e90 6c 6f 77 20 61 20 75 73 65 72 20 74 6f 20 65 6e  low a user to en
29ea0 74 65 72 20 61 72 62 69 74 72 61 72 79 0a 2a 2a  ter arbitrary.**
29eb0 20 53 51 4c 20 71 75 65 72 69 65 73 20 66 6f 72   SQL queries for
29ec0 20 65 76 61 6c 75 61 74 69 6f 6e 20 62 79 20 61   evaluation by a
29ed0 20 64 61 74 61 62 61 73 65 2e 20 20 42 75 74 20   database.  But 
29ee0 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  the application 
29ef0 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 77 61 6e 74  does.** not want
29f00 20 74 68 65 20 75 73 65 72 20 74 6f 20 62 65 20   the user to be 
29f10 61 62 6c 65 20 74 6f 20 6d 61 6b 65 20 61 72 62  able to make arb
29f20 69 74 72 61 72 79 20 63 68 61 6e 67 65 73 20 74  itrary changes t
29f30 6f 20 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73  o the.** databas
29f40 65 2e 20 20 41 6e 20 61 75 74 68 6f 72 69 7a 65  e.  An authorize
29f50 72 20 63 6f 75 6c 64 20 74 68 65 6e 20 62 65 20  r could then be 
29f60 70 75 74 20 69 6e 20 70 6c 61 63 65 20 77 68 69  put in place whi
29f70 6c 65 20 74 68 65 0a 2a 2a 20 75 73 65 72 2d 65  le the.** user-e
29f80 6e 74 65 72 65 64 20 53 51 4c 20 69 73 20 62 65  ntered SQL is be
29f90 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  ing [sqlite3_pre
29fa0 70 61 72 65 20 7c 20 70 72 65 70 61 72 65 64 5d  pare | prepared]
29fb0 20 74 68 61 74 0a 2a 2a 20 64 69 73 61 6c 6c 6f   that.** disallo
29fc0 77 73 20 65 76 65 72 79 74 68 69 6e 67 20 65 78  ws everything ex
29fd0 63 65 70 74 20 5b 53 45 4c 45 43 54 5d 20 73 74  cept [SELECT] st
29fe0 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20  atements..**.** 
29ff0 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61  Applications tha
2a000 74 20 6e 65 65 64 20 74 6f 20 70 72 6f 63 65 73  t need to proces
2a010 73 20 53 51 4c 20 66 72 6f 6d 20 75 6e 74 72 75  s SQL from untru
2a020 73 74 65 64 20 73 6f 75 72 63 65 73 0a 2a 2a 20  sted sources.** 
2a030 6d 69 67 68 74 20 61 6c 73 6f 20 63 6f 6e 73 69  might also consi
2a040 64 65 72 20 6c 6f 77 65 72 69 6e 67 20 72 65 73  der lowering res
2a050 6f 75 72 63 65 20 6c 69 6d 69 74 73 20 75 73 69  ource limits usi
2a060 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69  ng [sqlite3_limi
2a070 74 28 29 5d 0a 2a 2a 20 61 6e 64 20 6c 69 6d 69  t()].** and limi
2a080 74 69 6e 67 20 64 61 74 61 62 61 73 65 20 73 69  ting database si
2a090 7a 65 20 75 73 69 6e 67 20 74 68 65 20 5b 6d 61  ze using the [ma
2a0a0 78 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50  x_page_count] [P
2a0b0 52 41 47 4d 41 5d 0a 2a 2a 20 69 6e 20 61 64 64  RAGMA].** in add
2a0c0 69 74 69 6f 6e 20 74 6f 20 75 73 69 6e 67 20 61  ition to using a
2a0d0 6e 20 61 75 74 68 6f 72 69 7a 65 72 2e 0a 2a 2a  n authorizer..**
2a0e0 0a 2a 2a 20 5e 28 4f 6e 6c 79 20 61 20 73 69 6e  .** ^(Only a sin
2a0f0 67 6c 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  gle authorizer c
2a100 61 6e 20 62 65 20 69 6e 20 70 6c 61 63 65 20 6f  an be in place o
2a110 6e 20 61 20 64 61 74 61 62 61 73 65 20 63 6f 6e  n a database con
2a120 6e 65 63 74 69 6f 6e 0a 2a 2a 20 61 74 20 61 20  nection.** at a 
2a130 74 69 6d 65 2e 20 20 45 61 63 68 20 63 61 6c 6c  time.  Each call
2a140 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 65 74 5f   to sqlite3_set_
2a150 61 75 74 68 6f 72 69 7a 65 72 20 6f 76 65 72 72  authorizer overr
2a160 69 64 65 73 20 74 68 65 0a 2a 2a 20 70 72 65 76  ides the.** prev
2a170 69 6f 75 73 20 63 61 6c 6c 2e 29 5e 20 20 5e 44  ious call.)^  ^D
2a180 69 73 61 62 6c 65 20 74 68 65 20 61 75 74 68 6f  isable the autho
2a190 72 69 7a 65 72 20 62 79 20 69 6e 73 74 61 6c 6c  rizer by install
2a1a0 69 6e 67 20 61 20 4e 55 4c 4c 20 63 61 6c 6c 62  ing a NULL callb
2a1b0 61 63 6b 2e 0a 2a 2a 20 54 68 65 20 61 75 74 68  ack..** The auth
2a1c0 6f 72 69 7a 65 72 20 69 73 20 64 69 73 61 62 6c  orizer is disabl
2a1d0 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 2a  ed by default..*
2a1e0 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f 72 69  *.** The authori
2a1f0 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d 75 73  zer callback mus
2a200 74 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e  t not do anythin
2a210 67 20 74 68 61 74 20 77 69 6c 6c 20 6d 6f 64 69  g that will modi
2a220 66 79 0a 2a 2a 20 74 68 65 20 64 61 74 61 62 61  fy.** the databa
2a230 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68  se connection th
2a240 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20 61  at invoked the a
2a250 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2a260 63 6b 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74  ck..** Note that
2a270 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
2a280 65 5f 76 32 28 29 5d 20 61 6e 64 20 5b 73 71 6c  e_v2()] and [sql
2a290 69 74 65 33 5f 73 74 65 70 28 29 5d 20 62 6f 74  ite3_step()] bot
2a2a0 68 20 6d 6f 64 69 66 79 20 74 68 65 69 72 0a 2a  h modify their.*
2a2b0 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  * database conne
2a2c0 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6d  ctions for the m
2a2d0 65 61 6e 69 6e 67 20 6f 66 20 22 6d 6f 64 69 66  eaning of "modif
2a2e0 79 22 20 69 6e 20 74 68 69 73 20 70 61 72 61 67  y" in this parag
2a2f0 72 61 70 68 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68 65  raph..**.** ^Whe
2a300 6e 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  n [sqlite3_prepa
2a310 72 65 5f 76 32 28 29 5d 20 69 73 20 75 73 65 64  re_v2()] is used
2a320 20 74 6f 20 70 72 65 70 61 72 65 20 61 20 73 74   to prepare a st
2a330 61 74 65 6d 65 6e 74 2c 20 74 68 65 0a 2a 2a 20  atement, the.** 
2a340 73 74 61 74 65 6d 65 6e 74 20 6d 69 67 68 74 20  statement might 
2a350 62 65 20 72 65 2d 70 72 65 70 61 72 65 64 20 64  be re-prepared d
2a360 75 72 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73  uring [sqlite3_s
2a370 74 65 70 28 29 5d 20 64 75 65 20 74 6f 20 61 20  tep()] due to a 
2a380 0a 2a 2a 20 73 63 68 65 6d 61 20 63 68 61 6e 67  .** schema chang
2a390 65 2e 20 20 48 65 6e 63 65 2c 20 74 68 65 20 61  e.  Hence, the a
2a3a0 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c  pplication shoul
2a3b0 64 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68  d ensure that th
2a3c0 65 0a 2a 2a 20 63 6f 72 72 65 63 74 20 61 75 74  e.** correct aut
2a3d0 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2a3e0 20 72 65 6d 61 69 6e 73 20 69 6e 20 70 6c 61 63   remains in plac
2a3f0 65 20 64 75 72 69 6e 67 20 74 68 65 20 5b 73 71  e during the [sq
2a400 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a  lite3_step()]..*
2a410 2a 0a 2a 2a 20 5e 4e 6f 74 65 20 74 68 61 74 20  *.** ^Note that 
2a420 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  the authorizer c
2a430 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
2a440 65 64 20 6f 6e 6c 79 20 64 75 72 69 6e 67 0a 2a  ed only during.*
2a450 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
2a460 72 65 28 29 5d 20 6f 72 20 69 74 73 20 76 61 72  re()] or its var
2a470 69 61 6e 74 73 2e 20 20 41 75 74 68 6f 72 69 7a  iants.  Authoriz
2a480 61 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 2a 2a 20  ation is not.** 
2a490 70 65 72 66 6f 72 6d 65 64 20 64 75 72 69 6e 67  performed during
2a4a0 20 73 74 61 74 65 6d 65 6e 74 20 65 76 61 6c 75   statement evalu
2a4b0 61 74 69 6f 6e 20 69 6e 20 5b 73 71 6c 69 74 65  ation in [sqlite
2a4c0 33 5f 73 74 65 70 28 29 5d 2c 20 75 6e 6c 65 73  3_step()], unles
2a4d0 73 0a 2a 2a 20 61 73 20 73 74 61 74 65 64 20 69  s.** as stated i
2a4e0 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70  n the previous p
2a4f0 61 72 61 67 72 61 70 68 2c 20 73 71 6c 69 74 65  aragraph, sqlite
2a500 33 5f 73 74 65 70 28 29 20 69 6e 76 6f 6b 65 73  3_step() invokes
2a510 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70  .** sqlite3_prep
2a520 61 72 65 5f 76 32 28 29 20 74 6f 20 72 65 70 72  are_v2() to repr
2a530 65 70 61 72 65 20 61 20 73 74 61 74 65 6d 65 6e  epare a statemen
2a540 74 20 61 66 74 65 72 20 61 20 73 63 68 65 6d 61  t after a schema
2a550 20 63 68 61 6e 67 65 2e 0a 2a 2f 0a 53 51 4c 49   change..*/.SQLI
2a560 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
2a570 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65  e3_set_authorize
2a580 72 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c 0a 20  r(.  sqlite3*,. 
2a590 20 69 6e 74 20 28 2a 78 41 75 74 68 29 28 76 6f   int (*xAuth)(vo
2a5a0 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63 68  id*,int,const ch
2a5b0 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c  ar*,const char*,
2a5c0 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f 6e 73  const char*,cons
2a5d0 74 20 63 68 61 72 2a 29 2c 0a 20 20 76 6f 69 64  t char*),.  void
2a5e0 20 2a 70 55 73 65 72 44 61 74 61 0a 29 3b 0a 0a   *pUserData.);..
2a5f0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2a600 41 75 74 68 6f 72 69 7a 65 72 20 52 65 74 75 72  Authorizer Retur
2a610 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68  n Codes.**.** Th
2a620 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  e [sqlite3_set_a
2a630 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75 74 68  uthorizer | auth
2a640 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
2a650 66 75 6e 63 74 69 6f 6e 5d 20 6d 75 73 74 0a 2a  function] must.*
2a660 2a 20 72 65 74 75 72 6e 20 65 69 74 68 65 72 20  * return either 
2a670 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 72 20 6f  [SQLITE_OK] or o
2a680 6e 65 20 6f 66 20 74 68 65 73 65 20 74 77 6f 20  ne of these two 
2a690 63 6f 6e 73 74 61 6e 74 73 20 69 6e 20 6f 72 64  constants in ord
2a6a0 65 72 0a 2a 2a 20 74 6f 20 73 69 67 6e 61 6c 20  er.** to signal 
2a6b0 53 51 4c 69 74 65 20 77 68 65 74 68 65 72 20 6f  SQLite whether o
2a6c0 72 20 6e 6f 74 20 74 68 65 20 61 63 74 69 6f 6e  r not the action
2a6d0 20 69 73 20 70 65 72 6d 69 74 74 65 64 2e 20 20   is permitted.  
2a6e0 53 65 65 20 74 68 65 0a 2a 2a 20 5b 73 71 6c 69  See the.** [sqli
2a6f0 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a  te3_set_authoriz
2a700 65 72 20 7c 20 61 75 74 68 6f 72 69 7a 65 72 20  er | authorizer 
2a710 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66  documentation] f
2a720 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a  or additional.**
2a730 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2a   information..**
2a740 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 53 51  .** Note that SQ
2a750 4c 49 54 45 5f 49 47 4e 4f 52 45 20 69 73 20 61  LITE_IGNORE is a
2a760 6c 73 6f 20 75 73 65 64 20 61 73 20 61 20 5b 63  lso used as a [c
2a770 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
2a780 6f 6e 20 6d 6f 64 65 5d 0a 2a 2a 20 72 65 74 75  on mode].** retu
2a790 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20 5b 73  rned from the [s
2a7a0 71 6c 69 74 65 33 5f 76 74 61 62 5f 6f 6e 5f 63  qlite3_vtab_on_c
2a7b0 6f 6e 66 6c 69 63 74 28 29 5d 20 69 6e 74 65 72  onflict()] inter
2a7c0 66 61 63 65 2e 0a 2a 2f 0a 23 64 65 66 69 6e 65  face..*/.#define
2a7d0 20 53 51 4c 49 54 45 5f 44 45 4e 59 20 20 20 31   SQLITE_DENY   1
2a7e0 20 20 20 2f 2a 20 41 62 6f 72 74 20 74 68 65 20     /* Abort the 
2a7f0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 77 69  SQL statement wi
2a800 74 68 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 23  th an error */.#
2a810 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 49 47  define SQLITE_IG
2a820 4e 4f 52 45 20 32 20 20 20 2f 2a 20 44 6f 6e 27  NORE 2   /* Don'
2a830 74 20 61 6c 6c 6f 77 20 61 63 63 65 73 73 2c 20  t allow access, 
2a840 62 75 74 20 64 6f 6e 27 74 20 67 65 6e 65 72 61  but don't genera
2a850 74 65 20 61 6e 20 65 72 72 6f 72 20 2a 2f 0a 0a  te an error */..
2a860 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2a870 41 75 74 68 6f 72 69 7a 65 72 20 41 63 74 69 6f  Authorizer Actio
2a880 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20 54 68  n Codes.**.** Th
2a890 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61  e [sqlite3_set_a
2a8a0 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 69 6e 74  uthorizer()] int
2a8b0 65 72 66 61 63 65 20 72 65 67 69 73 74 65 72 73  erface registers
2a8c0 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63   a callback func
2a8d0 74 69 6f 6e 0a 2a 2a 20 74 68 61 74 20 69 73 20  tion.** that is 
2a8e0 69 6e 76 6f 6b 65 64 20 74 6f 20 61 75 74 68 6f  invoked to autho
2a8f0 72 69 7a 65 20 63 65 72 74 61 69 6e 20 53 51 4c  rize certain SQL
2a900 20 73 74 61 74 65 6d 65 6e 74 20 61 63 74 69 6f   statement actio
2a910 6e 73 2e 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f  ns.  The.** seco
2a920 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  nd parameter to 
2a930 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  the callback is 
2a940 61 6e 20 69 6e 74 65 67 65 72 20 63 6f 64 65 20  an integer code 
2a950 74 68 61 74 20 73 70 65 63 69 66 69 65 73 0a 2a  that specifies.*
2a960 2a 20 77 68 61 74 20 61 63 74 69 6f 6e 20 69 73  * what action is
2a970 20 62 65 69 6e 67 20 61 75 74 68 6f 72 69 7a 65   being authorize
2a980 64 2e 20 20 54 68 65 73 65 20 61 72 65 20 74 68  d.  These are th
2a990 65 20 69 6e 74 65 67 65 72 20 61 63 74 69 6f 6e  e integer action
2a9a0 20 63 6f 64 65 73 20 74 68 61 74 0a 2a 2a 20 74   codes that.** t
2a9b0 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  he authorizer ca
2a9c0 6c 6c 62 61 63 6b 20 6d 61 79 20 62 65 20 70 61  llback may be pa
2a9d0 73 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 73  ssed..**.** Thes
2a9e0 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20 76 61  e action code va
2a9f0 6c 75 65 73 20 73 69 67 6e 69 66 79 20 77 68 61  lues signify wha
2aa00 74 20 6b 69 6e 64 20 6f 66 20 6f 70 65 72 61 74  t kind of operat
2aa10 69 6f 6e 20 69 73 20 74 6f 20 62 65 0a 2a 2a 20  ion is to be.** 
2aa20 61 75 74 68 6f 72 69 7a 65 64 2e 20 20 54 68 65  authorized.  The
2aa30 20 33 72 64 20 61 6e 64 20 34 74 68 20 70 61 72   3rd and 4th par
2aa40 61 6d 65 74 65 72 73 20 74 6f 20 74 68 65 20 61  ameters to the a
2aa50 75 74 68 6f 72 69 7a 61 74 69 6f 6e 0a 2a 2a 20  uthorization.** 
2aa60 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
2aa70 6e 20 77 69 6c 6c 20 62 65 20 70 61 72 61 6d 65  n will be parame
2aa80 74 65 72 73 20 6f 72 20 4e 55 4c 4c 20 64 65 70  ters or NULL dep
2aa90 65 6e 64 69 6e 67 20 6f 6e 20 77 68 69 63 68 20  ending on which 
2aaa0 6f 66 20 74 68 65 73 65 0a 2a 2a 20 63 6f 64 65  of these.** code
2aab0 73 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65  s is used as the
2aac0 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65   second paramete
2aad0 72 2e 20 20 5e 28 54 68 65 20 35 74 68 20 70 61  r.  ^(The 5th pa
2aae0 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 0a 2a  rameter to the.*
2aaf0 2a 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c  * authorizer cal
2ab00 6c 62 61 63 6b 20 69 73 20 74 68 65 20 6e 61 6d  lback is the nam
2ab10 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
2ab20 65 20 28 22 6d 61 69 6e 22 2c 20 22 74 65 6d 70  e ("main", "temp
2ab30 22 2c 0a 2a 2a 20 65 74 63 2e 29 20 69 66 20 61  ",.** etc.) if a
2ab40 70 70 6c 69 63 61 62 6c 65 2e 29 5e 20 20 5e 54  pplicable.)^  ^T
2ab50 68 65 20 36 74 68 20 70 61 72 61 6d 65 74 65 72  he 6th parameter
2ab60 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72 69 7a   to the authoriz
2ab70 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69  er callback.** i
2ab80 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  s the name of th
2ab90 65 20 69 6e 6e 65 72 2d 6d 6f 73 74 20 74 72 69  e inner-most tri
2aba0 67 67 65 72 20 6f 72 20 76 69 65 77 20 74 68 61  gger or view tha
2abb0 74 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65  t is responsible
2abc0 20 66 6f 72 0a 2a 2a 20 74 68 65 20 61 63 63 65   for.** the acce
2abd0 73 73 20 61 74 74 65 6d 70 74 20 6f 72 20 4e 55  ss attempt or NU
2abe0 4c 4c 20 69 66 20 74 68 69 73 20 61 63 63 65 73  LL if this acces
2abf0 73 20 61 74 74 65 6d 70 74 20 69 73 20 64 69 72  s attempt is dir
2ac00 65 63 74 6c 79 20 66 72 6f 6d 0a 2a 2a 20 74 6f  ectly from.** to
2ac10 70 2d 6c 65 76 65 6c 20 53 51 4c 20 63 6f 64 65  p-level SQL code
2ac20 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ..*/./**********
2ac30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2ac40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2ac50 2a 20 33 72 64 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  * 3rd **********
2ac60 2a 2a 20 34 74 68 20 2a 2a 2a 2a 2a 2a 2a 2a 2a  ** 4th *********
2ac70 2a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  **/.#define SQLI
2ac80 54 45 5f 43 52 45 41 54 45 5f 49 4e 44 45 58 20  TE_CREATE_INDEX 
2ac90 20 20 20 20 20 20 20 20 20 31 20 20 20 2f 2a 20           1   /* 
2aca0 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20  Index Name      
2acb0 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2acc0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2acd0 45 5f 43 52 45 41 54 45 5f 54 41 42 4c 45 20 20  E_CREATE_TABLE  
2ace0 20 20 20 20 20 20 20 20 32 20 20 20 2f 2a 20 54          2   /* T
2acf0 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2ad00 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2ad10 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2ad20 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 49 4e 44  _CREATE_TEMP_IND
2ad30 45 58 20 20 20 20 20 33 20 20 20 2f 2a 20 49 6e  EX     3   /* In
2ad40 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20 54 61  dex Name      Ta
2ad50 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2ad60 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2ad70 43 52 45 41 54 45 5f 54 45 4d 50 5f 54 41 42 4c  CREATE_TEMP_TABL
2ad80 45 20 20 20 20 20 34 20 20 20 2f 2a 20 54 61 62  E     4   /* Tab
2ad90 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c  le Name      NUL
2ada0 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2adb0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
2adc0 52 45 41 54 45 5f 54 45 4d 50 5f 54 52 49 47 47  REATE_TEMP_TRIGG
2add0 45 52 20 20 20 35 20 20 20 2f 2a 20 54 72 69 67  ER   5   /* Trig
2ade0 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c  ger Name    Tabl
2adf0 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
2ae00 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
2ae10 45 41 54 45 5f 54 45 4d 50 5f 56 49 45 57 20 20  EATE_TEMP_VIEW  
2ae20 20 20 20 20 36 20 20 20 2f 2a 20 56 69 65 77 20      6   /* View 
2ae30 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20  Name       NULL 
2ae40 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2ae50 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45  efine SQLITE_CRE
2ae60 41 54 45 5f 54 52 49 47 47 45 52 20 20 20 20 20  ATE_TRIGGER     
2ae70 20 20 20 37 20 20 20 2f 2a 20 54 72 69 67 67 65     7   /* Trigge
2ae80 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c 65 20  r Name    Table 
2ae90 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65  Name      */.#de
2aea0 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52 45 41  fine SQLITE_CREA
2aeb0 54 45 5f 56 49 45 57 20 20 20 20 20 20 20 20 20  TE_VIEW         
2aec0 20 20 38 20 20 20 2f 2a 20 56 69 65 77 20 4e 61    8   /* View Na
2aed0 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  me       NULL   
2aee0 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
2aef0 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 4c 45 54  ine SQLITE_DELET
2af00 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
2af10 20 39 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61   9   /* Table Na
2af20 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2af30 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2af40 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 49  ne SQLITE_DROP_I
2af50 4e 44 45 58 20 20 20 20 20 20 20 20 20 20 20 31  NDEX           1
2af60 30 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d  0   /* Index Nam
2af70 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  e      Table Nam
2af80 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2af90 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 41  e SQLITE_DROP_TA
2afa0 42 4c 45 20 20 20 20 20 20 20 20 20 20 20 31 31  BLE           11
2afb0 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2afc0 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2afd0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2afe0 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d   SQLITE_DROP_TEM
2aff0 50 5f 49 4e 44 45 58 20 20 20 20 20 20 31 32 20  P_INDEX      12 
2b000 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20    /* Index Name 
2b010 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20       Table Name 
2b020 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2b030 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50  SQLITE_DROP_TEMP
2b040 5f 54 41 42 4c 45 20 20 20 20 20 20 31 33 20 20  _TABLE      13  
2b050 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
2b060 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2b070 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2b080 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f  QLITE_DROP_TEMP_
2b090 54 52 49 47 47 45 52 20 20 20 20 31 34 20 20 20  TRIGGER    14   
2b0a0 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20  /* Trigger Name 
2b0b0 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
2b0c0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2b0d0 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50 5f 56  LITE_DROP_TEMP_V
2b0e0 49 45 57 20 20 20 20 20 20 20 31 35 20 20 20 2f  IEW       15   /
2b0f0 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20  * View Name     
2b100 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2b110 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2b120 49 54 45 5f 44 52 4f 50 5f 54 52 49 47 47 45 52  ITE_DROP_TRIGGER
2b130 20 20 20 20 20 20 20 20 20 31 36 20 20 20 2f 2a           16   /*
2b140 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20 20 20   Trigger Name   
2b150 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2b160 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2b170 54 45 5f 44 52 4f 50 5f 56 49 45 57 20 20 20 20  TE_DROP_VIEW    
2b180 20 20 20 20 20 20 20 20 31 37 20 20 20 2f 2a 20          17   /* 
2b190 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20 20 20  View Name       
2b1a0 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2b1b0 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2b1c0 45 5f 49 4e 53 45 52 54 20 20 20 20 20 20 20 20  E_INSERT        
2b1d0 20 20 20 20 20 20 20 31 38 20 20 20 2f 2a 20 54         18   /* T
2b1e0 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2b1f0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2b200 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b210 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20 20 20  _PRAGMA         
2b220 20 20 20 20 20 20 31 39 20 20 20 2f 2a 20 50 72        19   /* Pr
2b230 61 67 6d 61 20 4e 61 6d 65 20 20 20 20 20 31 73  agma Name     1s
2b240 74 20 61 72 67 20 6f 72 20 4e 55 4c 4c 20 2a 2f  t arg or NULL */
2b250 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b260 52 45 41 44 20 20 20 20 20 20 20 20 20 20 20 20  READ            
2b270 20 20 20 20 20 32 30 20 20 20 2f 2a 20 54 61 62       20   /* Tab
2b280 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c  le Name      Col
2b290 75 6d 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a  umn Name     */.
2b2a0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
2b2b0 45 4c 45 43 54 20 20 20 20 20 20 20 20 20 20 20  ELECT           
2b2c0 20 20 20 20 32 31 20 20 20 2f 2a 20 4e 55 4c 4c      21   /* NULL
2b2d0 20 20 20 20 20 20 20 20 20 20 20 20 4e 55 4c 4c              NULL
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23              */.#
2b2f0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52  define SQLITE_TR
2b300 41 4e 53 41 43 54 49 4f 4e 20 20 20 20 20 20 20  ANSACTION       
2b310 20 20 20 32 32 20 20 20 2f 2a 20 4f 70 65 72 61     22   /* Opera
2b320 74 69 6f 6e 20 20 20 20 20 20 20 4e 55 4c 4c 20  tion       NULL 
2b330 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2b340 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 55 50 44  efine SQLITE_UPD
2b350 41 54 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ATE             
2b360 20 20 32 33 20 20 20 2f 2a 20 54 61 62 6c 65 20    23   /* Table 
2b370 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c 75 6d 6e  Name      Column
2b380 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23 64 65   Name     */.#de
2b390 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 54 54 41  fine SQLITE_ATTA
2b3a0 43 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20  CH              
2b3b0 20 32 34 20 20 20 2f 2a 20 46 69 6c 65 6e 61 6d   24   /* Filenam
2b3c0 65 20 20 20 20 20 20 20 20 4e 55 4c 4c 20 20 20  e        NULL   
2b3d0 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66           */.#def
2b3e0 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 54 41 43  ine SQLITE_DETAC
2b3f0 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  H               
2b400 32 35 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  25   /* Database
2b410 20 4e 61 6d 65 20 20 20 4e 55 4c 4c 20 20 20 20   Name   NULL    
2b420 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2b430 6e 65 20 53 51 4c 49 54 45 5f 41 4c 54 45 52 5f  ne SQLITE_ALTER_
2b440 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 32  TABLE          2
2b450 36 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20  6   /* Database 
2b460 4e 61 6d 65 20 20 20 54 61 62 6c 65 20 4e 61 6d  Name   Table Nam
2b470 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2b480 65 20 53 51 4c 49 54 45 5f 52 45 49 4e 44 45 58  e SQLITE_REINDEX
2b490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 37                27
2b4a0 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d 65     /* Index Name
2b4b0 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2b4c0 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2b4d0 20 53 51 4c 49 54 45 5f 41 4e 41 4c 59 5a 45 20   SQLITE_ANALYZE 
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 32 38 20               28 
2b4f0 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
2b500 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20       NULL       
2b510 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2b520 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f 56 54  SQLITE_CREATE_VT
2b530 41 42 4c 45 20 20 20 20 20 20 20 20 32 39 20 20  ABLE        29  
2b540 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20   /* Table Name  
2b550 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20      Module Name 
2b560 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2b570 51 4c 49 54 45 5f 44 52 4f 50 5f 56 54 41 42 4c  QLITE_DROP_VTABL
2b580 45 20 20 20 20 20 20 20 20 20 20 33 30 20 20 20  E          30   
2b590 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20  /* Table Name   
2b5a0 20 20 20 4d 6f 64 75 6c 65 20 4e 61 6d 65 20 20     Module Name  
2b5b0 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2b5c0 4c 49 54 45 5f 46 55 4e 43 54 49 4f 4e 20 20 20  LITE_FUNCTION   
2b5d0 20 20 20 20 20 20 20 20 20 20 33 31 20 20 20 2f            31   /
2b5e0 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20  * NULL          
2b5f0 20 20 46 75 6e 63 74 69 6f 6e 20 4e 61 6d 65 20    Function Name 
2b600 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2b610 49 54 45 5f 53 41 56 45 50 4f 49 4e 54 20 20 20  ITE_SAVEPOINT   
2b620 20 20 20 20 20 20 20 20 20 33 32 20 20 20 2f 2a           32   /*
2b630 20 4f 70 65 72 61 74 69 6f 6e 20 20 20 20 20 20   Operation      
2b640 20 53 61 76 65 70 6f 69 6e 74 20 4e 61 6d 65 20   Savepoint Name 
2b650 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2b660 54 45 5f 43 4f 50 59 20 20 20 20 20 20 20 20 20  TE_COPY         
2b670 20 20 20 20 20 20 20 20 20 30 20 20 20 2f 2a 20           0   /* 
2b680 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64 20 2a  No longer used *
2b690 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b6a0 5f 52 45 43 55 52 53 49 56 45 20 20 20 20 20 20  _RECURSIVE      
2b6b0 20 20 20 20 20 20 33 33 20 20 20 2f 2a 20 4e 55        33   /* NU
2b6c0 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 4e 55  LL            NU
2b6d0 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2b6e0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2b6f0 3a 20 54 72 61 63 69 6e 67 20 41 6e 64 20 50 72  : Tracing And Pr
2b700 6f 66 69 6c 69 6e 67 20 46 75 6e 63 74 69 6f 6e  ofiling Function
2b710 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  s.** METHOD: sql
2b720 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  ite3.**.** These
2b730 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64 65   routines are de
2b740 70 72 65 63 61 74 65 64 2e 20 55 73 65 20 74 68  precated. Use th
2b750 65 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  e [sqlite3_trace
2b760 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61 63 65  _v2()] interface
2b770 0a 2a 2a 20 69 6e 73 74 65 61 64 20 6f 66 20 74  .** instead of t
2b780 68 65 20 72 6f 75 74 69 6e 65 73 20 64 65 73 63  he routines desc
2b790 72 69 62 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a  ribed here..**.*
2b7a0 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73  * These routines
2b7b0 20 72 65 67 69 73 74 65 72 20 63 61 6c 6c 62 61   register callba
2b7c0 63 6b 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61  ck functions tha
2b7d0 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 66 6f  t can be used fo
2b7e0 72 0a 2a 2a 20 74 72 61 63 69 6e 67 20 61 6e 64  r.** tracing and
2b7f0 20 70 72 6f 66 69 6c 69 6e 67 20 74 68 65 20 65   profiling the e
2b800 78 65 63 75 74 69 6f 6e 20 6f 66 20 53 51 4c 20  xecution of SQL 
2b810 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
2b820 2a 20 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b 20  * ^The callback 
2b830 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 73 74 65  function registe
2b840 72 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 74  red by sqlite3_t
2b850 72 61 63 65 28 29 20 69 73 20 69 6e 76 6f 6b 65  race() is invoke
2b860 64 20 61 74 0a 2a 2a 20 76 61 72 69 6f 75 73 20  d at.** various 
2b870 74 69 6d 65 73 20 77 68 65 6e 20 61 6e 20 53 51  times when an SQ
2b880 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 62  L statement is b
2b890 65 69 6e 67 20 72 75 6e 20 62 79 20 5b 73 71 6c  eing run by [sql
2b8a0 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a 2a 2a  ite3_step()]..**
2b8b0 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 74 72   ^The sqlite3_tr
2b8c0 61 63 65 28 29 20 63 61 6c 6c 62 61 63 6b 20 69  ace() callback i
2b8d0 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 61  s invoked with a
2b8e0 20 55 54 46 2d 38 20 72 65 6e 64 65 72 69 6e 67   UTF-8 rendering
2b8f0 20 6f 66 20 74 68 65 0a 2a 2a 20 53 51 4c 20 73   of the.** SQL s
2b900 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20 61 73  tatement text as
2b910 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 66   the statement f
2b920 69 72 73 74 20 62 65 67 69 6e 73 20 65 78 65 63  irst begins exec
2b930 75 74 69 6e 67 2e 0a 2a 2a 20 5e 28 41 64 64 69  uting..** ^(Addi
2b940 74 69 6f 6e 61 6c 20 73 71 6c 69 74 65 33 5f 74  tional sqlite3_t
2b950 72 61 63 65 28 29 20 63 61 6c 6c 62 61 63 6b 73  race() callbacks
2b960 20 6d 69 67 68 74 20 6f 63 63 75 72 0a 2a 2a 20   might occur.** 
2b970 61 73 20 65 61 63 68 20 74 72 69 67 67 65 72 65  as each triggere
2b980 64 20 73 75 62 70 72 6f 67 72 61 6d 20 69 73 20  d subprogram is 
2b990 65 6e 74 65 72 65 64 2e 20 20 54 68 65 20 63 61  entered.  The ca
2b9a0 6c 6c 62 61 63 6b 73 20 66 6f 72 20 74 72 69 67  llbacks for trig
2b9b0 67 65 72 73 0a 2a 2a 20 63 6f 6e 74 61 69 6e 20  gers.** contain 
2b9c0 61 20 55 54 46 2d 38 20 53 51 4c 20 63 6f 6d 6d  a UTF-8 SQL comm
2b9d0 65 6e 74 20 74 68 61 74 20 69 64 65 6e 74 69 66  ent that identif
2b9e0 69 65 73 20 74 68 65 20 74 72 69 67 67 65 72 2e  ies the trigger.
2b9f0 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b 53 51  )^.**.** The [SQ
2ba00 4c 49 54 45 5f 54 52 41 43 45 5f 53 49 5a 45 5f  LITE_TRACE_SIZE_
2ba10 4c 49 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d 74  LIMIT] compile-t
2ba20 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 6e 20 62  ime option can b
2ba30 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 0a  e used to limit.
2ba40 2a 2a 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66  ** the length of
2ba50 20 5b 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65   [bound paramete
2ba60 72 5d 20 65 78 70 61 6e 73 69 6f 6e 20 69 6e 20  r] expansion in 
2ba70 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 73 71  the output of sq
2ba80 6c 69 74 65 33 5f 74 72 61 63 65 28 29 2e 0a 2a  lite3_trace()..*
2ba90 2a 0a 2a 2a 20 5e 54 68 65 20 63 61 6c 6c 62 61  *.** ^The callba
2baa0 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 67 69  ck function regi
2bab0 73 74 65 72 65 64 20 62 79 20 73 71 6c 69 74 65  stered by sqlite
2bac0 33 5f 70 72 6f 66 69 6c 65 28 29 20 69 73 20 69  3_profile() is i
2bad0 6e 76 6f 6b 65 64 0a 2a 2a 20 61 73 20 65 61 63  nvoked.** as eac
2bae0 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  h SQL statement 
2baf0 66 69 6e 69 73 68 65 73 2e 20 20 5e 54 68 65 20  finishes.  ^The 
2bb00 70 72 6f 66 69 6c 65 20 63 61 6c 6c 62 61 63 6b  profile callback
2bb10 20 63 6f 6e 74 61 69 6e 73 0a 2a 2a 20 74 68 65   contains.** the
2bb20 20 6f 72 69 67 69 6e 61 6c 20 73 74 61 74 65 6d   original statem
2bb30 65 6e 74 20 74 65 78 74 20 61 6e 64 20 61 6e 20  ent text and an 
2bb40 65 73 74 69 6d 61 74 65 20 6f 66 20 77 61 6c 6c  estimate of wall
2bb50 2d 63 6c 6f 63 6b 20 74 69 6d 65 0a 2a 2a 20 6f  -clock time.** o
2bb60 66 20 68 6f 77 20 6c 6f 6e 67 20 74 68 61 74 20  f how long that 
2bb70 73 74 61 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74  statement took t
2bb80 6f 20 72 75 6e 2e 20 20 5e 54 68 65 20 70 72 6f  o run.  ^The pro
2bb90 66 69 6c 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  file callback.**
2bba0 20 74 69 6d 65 20 69 73 20 69 6e 20 75 6e 69 74   time is in unit
2bbb0 73 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e 64 73  s of nanoseconds
2bbc0 2c 20 68 6f 77 65 76 65 72 20 74 68 65 20 63 75  , however the cu
2bbd0 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61  rrent implementa
2bbe0 74 69 6f 6e 0a 2a 2a 20 69 73 20 6f 6e 6c 79 20  tion.** is only 
2bbf0 63 61 70 61 62 6c 65 20 6f 66 20 6d 69 6c 6c 69  capable of milli
2bc00 73 65 63 6f 6e 64 20 72 65 73 6f 6c 75 74 69 6f  second resolutio
2bc10 6e 20 73 6f 20 74 68 65 20 73 69 78 20 6c 65 61  n so the six lea
2bc20 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 0a 2a  st significant.*
2bc30 2a 20 64 69 67 69 74 73 20 69 6e 20 74 68 65 20  * digits in the 
2bc40 74 69 6d 65 20 61 72 65 20 6d 65 61 6e 69 6e 67  time are meaning
2bc50 6c 65 73 73 2e 20 20 46 75 74 75 72 65 20 76 65  less.  Future ve
2bc60 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65  rsions of SQLite
2bc70 0a 2a 2a 20 6d 69 67 68 74 20 70 72 6f 76 69 64  .** might provid
2bc80 65 20 67 72 65 61 74 65 72 20 72 65 73 6f 6c 75  e greater resolu
2bc90 74 69 6f 6e 20 6f 6e 20 74 68 65 20 70 72 6f 66  tion on the prof
2bca0 69 6c 65 72 20 63 61 6c 6c 62 61 63 6b 2e 20 20  iler callback.  
2bcb0 54 68 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70  The.** sqlite3_p
2bcc0 72 6f 66 69 6c 65 28 29 20 66 75 6e 63 74 69 6f  rofile() functio
2bcd0 6e 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20  n is considered 
2bce0 65 78 70 65 72 69 6d 65 6e 74 61 6c 20 61 6e 64  experimental and
2bcf0 20 69 73 0a 2a 2a 20 73 75 62 6a 65 63 74 20 74   is.** subject t
2bd00 6f 20 63 68 61 6e 67 65 20 69 6e 20 66 75 74 75  o change in futu
2bd10 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53  re versions of S
2bd20 51 4c 69 74 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45  QLite..*/.SQLITE
2bd30 5f 41 50 49 20 53 51 4c 49 54 45 5f 44 45 50 52  _API SQLITE_DEPR
2bd40 45 43 41 54 45 44 20 76 6f 69 64 20 2a 73 71 6c  ECATED void *sql
2bd50 69 74 65 33 5f 74 72 61 63 65 28 73 71 6c 69 74  ite3_trace(sqlit
2bd60 65 33 2a 2c 0a 20 20 20 76 6f 69 64 28 2a 78 54  e3*,.   void(*xT
2bd70 72 61 63 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73  race)(void*,cons
2bd80 74 20 63 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29  t char*), void*)
2bd90 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 53 51 4c  ;.SQLITE_API SQL
2bda0 49 54 45 5f 44 45 50 52 45 43 41 54 45 44 20 76  ITE_DEPRECATED v
2bdb0 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f  oid *sqlite3_pro
2bdc0 66 69 6c 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20  file(sqlite3*,. 
2bdd0 20 20 76 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65    void(*xProfile
2bde0 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68  )(void*,const ch
2bdf0 61 72 2a 2c 73 71 6c 69 74 65 33 5f 75 69 6e 74  ar*,sqlite3_uint
2be00 36 34 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a  64), void*);../*
2be10 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51  .** CAPI3REF: SQ
2be20 4c 20 54 72 61 63 65 20 45 76 65 6e 74 20 43 6f  L Trace Event Co
2be30 64 65 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  des.** KEYWORDS:
2be40 20 53 51 4c 49 54 45 5f 54 52 41 43 45 0a 2a 2a   SQLITE_TRACE.**
2be50 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61  .** These consta
2be60 6e 74 73 20 69 64 65 6e 74 69 66 79 20 63 6c 61  nts identify cla
2be70 73 73 65 73 20 6f 66 20 65 76 65 6e 74 73 20 74  sses of events t
2be80 68 61 74 20 63 61 6e 20 62 65 20 6d 6f 6e 69 74  hat can be monit
2be90 6f 72 65 64 0a 2a 2a 20 75 73 69 6e 67 20 74 68  ored.** using th
2bea0 65 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  e [sqlite3_trace
2beb0 5f 76 32 28 29 5d 20 74 72 61 63 69 6e 67 20 6c  _v2()] tracing l
2bec0 6f 67 69 63 2e 20 20 54 68 65 20 4d 20 61 72 67  ogic.  The M arg
2bed0 75 6d 65 6e 74 0a 2a 2a 20 74 6f 20 5b 73 71 6c  ument.** to [sql
2bee0 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c  ite3_trace_v2(D,
2bef0 4d 2c 58 2c 50 29 5d 20 69 73 20 61 6e 20 4f 52  M,X,P)] is an OR
2bf00 2d 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20  -ed combination 
2bf10 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  of one or more o
2bf20 66 0a 2a 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69  f.** the followi
2bf30 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2e 20 20 5e  ng constants.  ^
2bf40 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
2bf50 6e 74 20 74 6f 20 74 68 65 20 74 72 61 63 65 20  nt to the trace 
2bf60 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6f  callback.** is o
2bf70 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77  ne of the follow
2bf80 69 6e 67 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a  ing constants..*
2bf90 2a 0a 2a 2a 20 4e 65 77 20 74 72 61 63 69 6e 67  *.** New tracing
2bfa0 20 63 6f 6e 73 74 61 6e 74 73 20 6d 61 79 20 62   constants may b
2bfb0 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72  e added in futur
2bfc0 65 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2a 0a 2a  e releases..**.*
2bfd0 2a 20 5e 41 20 74 72 61 63 65 20 63 61 6c 6c 62  * ^A trace callb
2bfe0 61 63 6b 20 68 61 73 20 66 6f 75 72 20 61 72 67  ack has four arg
2bff0 75 6d 65 6e 74 73 3a 20 78 43 61 6c 6c 62 61 63  uments: xCallbac
2c000 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e  k(T,C,P,X)..** ^
2c010 54 68 65 20 54 20 61 72 67 75 6d 65 6e 74 20 69  The T argument i
2c020 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 69 6e 74  s one of the int
2c030 65 67 65 72 20 74 79 70 65 20 63 6f 64 65 73 20  eger type codes 
2c040 61 62 6f 76 65 2e 0a 2a 2a 20 5e 54 68 65 20 43  above..** ^The C
2c050 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 63   argument is a c
2c060 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65  opy of the conte
2c070 78 74 20 70 6f 69 6e 74 65 72 20 70 61 73 73 65  xt pointer passe
2c080 64 20 69 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66  d in as the.** f
2c090 6f 75 72 74 68 20 61 72 67 75 6d 65 6e 74 20 74  ourth argument t
2c0a0 6f 20 5b 73 71 6c 69 74 65 33 5f 74 72 61 63 65  o [sqlite3_trace
2c0b0 5f 76 32 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 50  _v2()]..** The P
2c0c0 20 61 6e 64 20 58 20 61 72 67 75 6d 65 6e 74 73   and X arguments
2c0d0 20 61 72 65 20 70 6f 69 6e 74 65 72 73 20 77 68   are pointers wh
2c0e0 6f 73 65 20 6d 65 61 6e 69 6e 67 73 20 64 65 70  ose meanings dep
2c0f0 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20  end on T..**.** 
2c100 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  <dl>.** [[SQLITE
2c110 5f 54 52 41 43 45 5f 53 54 4d 54 5d 5d 20 3c 64  _TRACE_STMT]] <d
2c120 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53  t>SQLITE_TRACE_S
2c130 54 4d 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  TMT</dt>.** <dd>
2c140 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ^An SQLITE_TRACE
2c150 5f 53 54 4d 54 20 63 61 6c 6c 62 61 63 6b 20 69  _STMT callback i
2c160 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61  s invoked when a
2c170 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
2c180 65 6e 74 0a 2a 2a 20 66 69 72 73 74 20 62 65 67  ent.** first beg
2c190 69 6e 73 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20  ins running and 
2c1a0 70 6f 73 73 69 62 6c 79 20 61 74 20 6f 74 68 65  possibly at othe
2c1b0 72 20 74 69 6d 65 73 20 64 75 72 69 6e 67 20 74  r times during t
2c1c0 68 65 0a 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20  he.** execution 
2c1d0 6f 66 20 74 68 65 20 70 72 65 70 61 72 65 64 20  of the prepared 
2c1e0 73 74 61 74 65 6d 65 6e 74 2c 20 73 75 63 68 20  statement, such 
2c1f0 61 73 20 61 74 20 74 68 65 20 73 74 61 72 74 20  as at the start 
2c200 6f 66 20 65 61 63 68 0a 2a 2a 20 74 72 69 67 67  of each.** trigg
2c210 65 72 20 73 75 62 70 72 6f 67 72 61 6d 2e 20 5e  er subprogram. ^
2c220 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69  The P argument i
2c230 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
2c240 68 65 0a 2a 2a 20 5b 70 72 65 70 61 72 65 64 20  he.** [prepared 
2c250 73 74 61 74 65 6d 65 6e 74 5d 2e 20 5e 54 68 65  statement]. ^The
2c260 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61   X argument is a
2c270 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 73 74   pointer to a st
2c280 72 69 6e 67 20 77 68 69 63 68 0a 2a 2a 20 69 73  ring which.** is
2c290 20 74 68 65 20 75 6e 65 78 70 61 6e 64 65 64 20   the unexpanded 
2c2a0 53 51 4c 20 74 65 78 74 20 6f 66 20 74 68 65 20  SQL text of the 
2c2b0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
2c2c0 6e 74 20 6f 72 20 61 6e 20 53 51 4c 20 63 6f 6d  nt or an SQL com
2c2d0 6d 65 6e 74 20 0a 2a 2a 20 74 68 61 74 20 69 6e  ment .** that in
2c2e0 64 69 63 61 74 65 73 20 74 68 65 20 69 6e 76 6f  dicates the invo
2c2f0 63 61 74 69 6f 6e 20 6f 66 20 61 20 74 72 69 67  cation of a trig
2c300 67 65 72 2e 20 20 5e 54 68 65 20 63 61 6c 6c 62  ger.  ^The callb
2c310 61 63 6b 20 63 61 6e 20 63 6f 6d 70 75 74 65 0a  ack can compute.
2c320 2a 2a 20 74 68 65 20 73 61 6d 65 20 74 65 78 74  ** the same text
2c330 20 74 68 61 74 20 77 6f 75 6c 64 20 68 61 76 65   that would have
2c340 20 62 65 65 6e 20 72 65 74 75 72 6e 65 64 20 62   been returned b
2c350 79 20 74 68 65 20 6c 65 67 61 63 79 20 5b 73 71  y the legacy [sq
2c360 6c 69 74 65 33 5f 74 72 61 63 65 28 29 5d 0a 2a  lite3_trace()].*
2c370 2a 20 69 6e 74 65 72 66 61 63 65 20 62 79 20 75  * interface by u
2c380 73 69 6e 67 20 74 68 65 20 58 20 61 72 67 75 6d  sing the X argum
2c390 65 6e 74 20 77 68 65 6e 20 58 20 62 65 67 69 6e  ent when X begin
2c3a0 73 20 77 69 74 68 20 22 2d 2d 22 20 61 6e 64 20  s with "--" and 
2c3b0 69 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 5b 73 71 6c  invoking.** [sql
2c3c0 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
2c3d0 6c 28 50 29 5d 20 6f 74 68 65 72 77 69 73 65 2e  l(P)] otherwise.
2c3e0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
2c3f0 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 5d 5d 20  TRACE_PROFILE]] 
2c400 3c 64 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45  <dt>SQLITE_TRACE
2c410 5f 50 52 4f 46 49 4c 45 3c 2f 64 74 3e 0a 2a 2a  _PROFILE</dt>.**
2c420 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f   <dd>^An SQLITE_
2c430 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 20 63 61  TRACE_PROFILE ca
2c440 6c 6c 62 61 63 6b 20 70 72 6f 76 69 64 65 73 20  llback provides 
2c450 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 20 74 68  approximately th
2c460 65 20 73 61 6d 65 0a 2a 2a 20 69 6e 66 6f 72 6d  e same.** inform
2c470 61 74 69 6f 6e 20 61 73 20 69 73 20 70 72 6f 76  ation as is prov
2c480 69 64 65 64 20 62 79 20 74 68 65 20 5b 73 71 6c  ided by the [sql
2c490 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20  ite3_profile()] 
2c4a0 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 20 5e 54 68  callback..** ^Th
2c4b0 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e P argument is 
2c4c0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
2c4d0 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   [prepared state
2c4e0 6d 65 6e 74 5d 20 61 6e 64 20 74 68 65 0a 2a 2a  ment] and the.**
2c4f0 20 58 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e   X argument poin
2c500 74 73 20 74 6f 20 61 20 36 34 2d 62 69 74 20 69  ts to a 64-bit i
2c510 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73 20  nteger which is 
2c520 74 68 65 20 65 73 74 69 6d 61 74 65 64 20 6f 66  the estimated of
2c530 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  .** the number o
2c540 66 20 6e 61 6e 6f 73 65 63 6f 6e 64 20 74 68 61  f nanosecond tha
2c550 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  t the prepared s
2c560 74 61 74 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f  tatement took to
2c570 20 72 75 6e 2e 0a 2a 2a 20 5e 54 68 65 20 53 51   run..** ^The SQ
2c580 4c 49 54 45 5f 54 52 41 43 45 5f 50 52 4f 46 49  LITE_TRACE_PROFI
2c590 4c 45 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  LE callback is i
2c5a0 6e 76 6f 6b 65 64 20 77 68 65 6e 20 74 68 65 20  nvoked when the 
2c5b0 73 74 61 74 65 6d 65 6e 74 20 66 69 6e 69 73 68  statement finish
2c5c0 65 73 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  es..**.** [[SQLI
2c5d0 54 45 5f 54 52 41 43 45 5f 52 4f 57 5d 5d 20 3c  TE_TRACE_ROW]] <
2c5e0 64 74 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f  dt>SQLITE_TRACE_
2c5f0 52 4f 57 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ROW</dt>.** <dd>
2c600 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ^An SQLITE_TRACE
2c610 5f 52 4f 57 20 63 61 6c 6c 62 61 63 6b 20 69 73  _ROW callback is
2c620 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65   invoked wheneve
2c630 72 20 61 20 70 72 65 70 61 72 65 64 0a 2a 2a 20  r a prepared.** 
2c640 73 74 61 74 65 6d 65 6e 74 20 67 65 6e 65 72 61  statement genera
2c650 74 65 73 20 61 20 73 69 6e 67 6c 65 20 72 6f 77  tes a single row
2c660 20 6f 66 20 72 65 73 75 6c 74 2e 20 20 0a 2a 2a   of result.  .**
2c670 20 5e 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74   ^The P argument
2c680 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
2c690 20 74 68 65 20 5b 70 72 65 70 61 72 65 64 20 73   the [prepared s
2c6a0 74 61 74 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68  tatement] and th
2c6b0 65 0a 2a 2a 20 58 20 61 72 67 75 6d 65 6e 74 20  e.** X argument 
2c6c0 69 73 20 75 6e 75 73 65 64 2e 0a 2a 2a 0a 2a 2a  is unused..**.**
2c6d0 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5f   [[SQLITE_TRACE_
2c6e0 43 4c 4f 53 45 5d 5d 20 3c 64 74 3e 53 51 4c 49  CLOSE]] <dt>SQLI
2c6f0 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 3c 2f  TE_TRACE_CLOSE</
2c700 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53  dt>.** <dd>^An S
2c710 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53  QLITE_TRACE_CLOS
2c720 45 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  E callback is in
2c730 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 64 61 74  voked when a dat
2c740 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74  abase.** connect
2c750 69 6f 6e 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 5e  ion closes..** ^
2c760 54 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69  The P argument i
2c770 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  s a pointer to t
2c780 68 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  he [database con
2c790 6e 65 63 74 69 6f 6e 5d 20 6f 62 6a 65 63 74 0a  nection] object.
2c7a0 2a 2a 20 61 6e 64 20 74 68 65 20 58 20 61 72 67  ** and the X arg
2c7b0 75 6d 65 6e 74 20 69 73 20 75 6e 75 73 65 64 2e  ument is unused.
2c7c0 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65  .** </dl>.*/.#de
2c7d0 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43  fine SQLITE_TRAC
2c7e0 45 5f 53 54 4d 54 20 20 20 20 20 20 20 30 78 30  E_STMT       0x0
2c7f0 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
2c800 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 20 20  _TRACE_PROFILE  
2c810 20 20 30 78 30 32 0a 23 64 65 66 69 6e 65 20 53    0x02.#define S
2c820 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57 20  QLITE_TRACE_ROW 
2c830 20 20 20 20 20 20 20 30 78 30 34 0a 23 64 65 66         0x04.#def
2c840 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45  ine SQLITE_TRACE
2c850 5f 43 4c 4f 53 45 20 20 20 20 20 20 30 78 30 38  _CLOSE      0x08
2c860 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2c870 3a 20 53 51 4c 20 54 72 61 63 65 20 48 6f 6f 6b  : SQL Trace Hook
2c880 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69  .** METHOD: sqli
2c890 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  te3.**.** ^The s
2c8a0 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32 28  qlite3_trace_v2(
2c8b0 44 2c 4d 2c 58 2c 50 29 20 69 6e 74 65 72 66 61  D,M,X,P) interfa
2c8c0 63 65 20 72 65 67 69 73 74 65 72 73 20 61 20 74  ce registers a t
2c8d0 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  race callback.**
2c8e0 20 66 75 6e 63 74 69 6f 6e 20 58 20 61 67 61 69   function X agai
2c8f0 6e 73 74 20 5b 64 61 74 61 62 61 73 65 20 63 6f  nst [database co
2c900 6e 6e 65 63 74 69 6f 6e 5d 20 44 2c 20 75 73 69  nnection] D, usi
2c910 6e 67 20 70 72 6f 70 65 72 74 79 20 6d 61 73 6b  ng property mask
2c920 20 4d 0a 2a 2a 20 61 6e 64 20 63 6f 6e 74 65 78   M.** and contex
2c930 74 20 70 6f 69 6e 74 65 72 20 50 2e 20 20 5e 49  t pointer P.  ^I
2c940 66 20 74 68 65 20 58 20 63 61 6c 6c 62 61 63 6b  f the X callback
2c950 20 69 73 0a 2a 2a 20 4e 55 4c 4c 20 6f 72 20 69   is.** NULL or i
2c960 66 20 74 68 65 20 4d 20 6d 61 73 6b 20 69 73 20  f the M mask is 
2c970 7a 65 72 6f 2c 20 74 68 65 6e 20 74 72 61 63 69  zero, then traci
2c980 6e 67 20 69 73 20 64 69 73 61 62 6c 65 64 2e 20  ng is disabled. 
2c990 20 54 68 65 0a 2a 2a 20 4d 20 61 72 67 75 6d 65   The.** M argume
2c9a0 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65  nt should be the
2c9b0 20 62 69 74 77 69 73 65 20 4f 52 2d 65 64 20 63   bitwise OR-ed c
2c9c0 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a  ombination of.**
2c9d0 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 5b 53   zero or more [S
2c9e0 51 4c 49 54 45 5f 54 52 41 43 45 5d 20 63 6f 6e  QLITE_TRACE] con
2c9f0 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 45  stants..**.** ^E
2ca00 61 63 68 20 63 61 6c 6c 20 74 6f 20 65 69 74 68  ach call to eith
2ca10 65 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  er sqlite3_trace
2ca20 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72  () or sqlite3_tr
2ca30 61 63 65 5f 76 32 28 29 20 6f 76 65 72 72 69 64  ace_v2() overrid
2ca40 65 73 20 0a 2a 2a 20 28 63 61 6e 63 65 6c 73 29  es .** (cancels)
2ca50 20 61 6e 79 20 70 72 69 6f 72 20 63 61 6c 6c 73   any prior calls
2ca60 20 74 6f 20 73 71 6c 69 74 65 33 5f 74 72 61 63   to sqlite3_trac
2ca70 65 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 74  e() or sqlite3_t
2ca80 72 61 63 65 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a  race_v2()..**.**
2ca90 20 5e 54 68 65 20 58 20 63 61 6c 6c 62 61 63 6b   ^The X callback
2caa0 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e   is invoked when
2cab0 65 76 65 72 20 61 6e 79 20 6f 66 20 74 68 65 20  ever any of the 
2cac0 65 76 65 6e 74 73 20 69 64 65 6e 74 69 66 69 65  events identifie
2cad0 64 20 62 79 20 0a 2a 2a 20 6d 61 73 6b 20 4d 20  d by .** mask M 
2cae0 6f 63 63 75 72 2e 20 20 5e 54 68 65 20 69 6e 74  occur.  ^The int
2caf0 65 67 65 72 20 72 65 74 75 72 6e 20 76 61 6c 75  eger return valu
2cb00 65 20 66 72 6f 6d 20 74 68 65 20 63 61 6c 6c 62  e from the callb
2cb10 61 63 6b 20 69 73 20 63 75 72 72 65 6e 74 6c 79  ack is currently
2cb20 0a 2a 2a 20 69 67 6e 6f 72 65 64 2c 20 74 68 6f  .** ignored, tho
2cb30 75 67 68 20 74 68 69 73 20 6d 61 79 20 63 68 61  ugh this may cha
2cb40 6e 67 65 20 69 6e 20 66 75 74 75 72 65 20 72 65  nge in future re
2cb50 6c 65 61 73 65 73 2e 20 20 43 61 6c 6c 62 61 63  leases.  Callbac
2cb60 6b 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  k.** implementat
2cb70 69 6f 6e 73 20 73 68 6f 75 6c 64 20 72 65 74 75  ions should retu
2cb80 72 6e 20 7a 65 72 6f 20 74 6f 20 65 6e 73 75 72  rn zero to ensur
2cb90 65 20 66 75 74 75 72 65 20 63 6f 6d 70 61 74 69  e future compati
2cba0 62 69 6c 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41  bility..**.** ^A
2cbb0 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b 20   trace callback 
2cbc0 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68 20  is invoked with 
2cbd0 66 6f 75 72 20 61 72 67 75 6d 65 6e 74 73 3a 20  four arguments: 
2cbe0 63 61 6c 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58  callback(T,C,P,X
2cbf0 29 2e 0a 2a 2a 20 5e 54 68 65 20 54 20 61 72 67  )..** ^The T arg
2cc00 75 6d 65 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20  ument is one of 
2cc10 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 43  the [SQLITE_TRAC
2cc20 45 5d 0a 2a 2a 20 63 6f 6e 73 74 61 6e 74 73 20  E].** constants 
2cc30 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 79 20  to indicate why 
2cc40 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 77 61 73  the callback was
2cc50 20 69 6e 76 6f 6b 65 64 2e 0a 2a 2a 20 5e 54 68   invoked..** ^Th
2cc60 65 20 43 20 61 72 67 75 6d 65 6e 74 20 69 73 20  e C argument is 
2cc70 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f  a copy of the co
2cc80 6e 74 65 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a  ntext pointer..*
2cc90 2a 20 54 68 65 20 50 20 61 6e 64 20 58 20 61 72  * The P and X ar
2cca0 67 75 6d 65 6e 74 73 20 61 72 65 20 70 6f 69 6e  guments are poin
2ccb0 74 65 72 73 20 77 68 6f 73 65 20 6d 65 61 6e 69  ters whose meani
2ccc0 6e 67 73 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e  ngs depend on T.
2ccd0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
2cce0 65 33 5f 74 72 61 63 65 5f 76 32 28 29 20 69 6e  e3_trace_v2() in
2ccf0 74 65 72 66 61 63 65 20 69 73 20 69 6e 74 65 6e  terface is inten
2cd00 64 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 74  ded to replace t
2cd10 68 65 20 6c 65 67 61 63 79 0a 2a 2a 20 69 6e 74  he legacy.** int
2cd20 65 72 66 61 63 65 73 20 5b 73 71 6c 69 74 65 33  erfaces [sqlite3
2cd30 5f 74 72 61 63 65 28 29 5d 20 61 6e 64 20 5b 73  _trace()] and [s
2cd40 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c 65 28 29  qlite3_profile()
2cd50 5d 2c 20 62 6f 74 68 20 6f 66 20 77 68 69 63 68  ], both of which
2cd60 0a 2a 2a 20 61 72 65 20 64 65 70 72 65 63 61 74  .** are deprecat
2cd70 65 64 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  ed..*/.SQLITE_AP
2cd80 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 74 72  I int sqlite3_tr
2cd90 61 63 65 5f 76 32 28 0a 20 20 73 71 6c 69 74 65  ace_v2(.  sqlite
2cda0 33 2a 2c 0a 20 20 75 6e 73 69 67 6e 65 64 20 75  3*,.  unsigned u
2cdb0 4d 61 73 6b 2c 0a 20 20 69 6e 74 28 2a 78 43 61  Mask,.  int(*xCa
2cdc0 6c 6c 62 61 63 6b 29 28 75 6e 73 69 67 6e 65 64  llback)(unsigned
2cdd0 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a 2c 76 6f 69  ,void*,void*,voi
2cde0 64 2a 29 2c 0a 20 20 76 6f 69 64 20 2a 70 43 74  d*),.  void *pCt
2cdf0 78 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  x.);../*.** CAPI
2ce00 33 52 45 46 3a 20 51 75 65 72 79 20 50 72 6f 67  3REF: Query Prog
2ce10 72 65 73 73 20 43 61 6c 6c 62 61 63 6b 73 0a 2a  ress Callbacks.*
2ce20 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65  * METHOD: sqlite
2ce30 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  3.**.** ^The sql
2ce40 69 74 65 33 5f 70 72 6f 67 72 65 73 73 5f 68 61  ite3_progress_ha
2ce50 6e 64 6c 65 72 28 44 2c 4e 2c 58 2c 50 29 20 69  ndler(D,N,X,P) i
2ce60 6e 74 65 72 66 61 63 65 20 63 61 75 73 65 73 20  nterface causes 
2ce70 74 68 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20  the callback.** 
2ce80 66 75 6e 63 74 69 6f 6e 20 58 20 74 6f 20 62 65  function X to be
2ce90 20 69 6e 76 6f 6b 65 64 20 70 65 72 69 6f 64 69   invoked periodi
2cea0 63 61 6c 6c 79 20 64 75 72 69 6e 67 20 6c 6f 6e  cally during lon
2ceb0 67 20 72 75 6e 6e 69 6e 67 20 63 61 6c 6c 73 20  g running calls 
2cec0 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65  to.** [sqlite3_e
2ced0 78 65 63 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  xec()], [sqlite3
2cee0 5f 73 74 65 70 28 29 5d 20 61 6e 64 20 5b 73 71  _step()] and [sq
2cef0 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28  lite3_get_table(
2cf00 29 5d 20 66 6f 72 0a 2a 2a 20 64 61 74 61 62 61  )] for.** databa
2cf10 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e  se connection D.
2cf20 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 75 73 65    An example use
2cf30 20 66 6f 72 20 74 68 69 73 0a 2a 2a 20 69 6e 74   for this.** int
2cf40 65 72 66 61 63 65 20 69 73 20 74 6f 20 6b 65 65  erface is to kee
2cf50 70 20 61 20 47 55 49 20 75 70 64 61 74 65 64 20  p a GUI updated 
2cf60 64 75 72 69 6e 67 20 61 20 6c 61 72 67 65 20 71  during a large q
2cf70 75 65 72 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  uery..**.** ^The
2cf80 20 70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20   parameter P is 
2cf90 70 61 73 73 65 64 20 74 68 72 6f 75 67 68 20 61  passed through a
2cfa0 73 20 74 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d  s the only param
2cfb0 65 74 65 72 20 74 6f 20 74 68 65 20 0a 2a 2a 20  eter to the .** 
2cfc0 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
2cfd0 6e 20 58 2e 20 20 5e 54 68 65 20 70 61 72 61 6d  n X.  ^The param
2cfe0 65 74 65 72 20 4e 20 69 73 20 74 68 65 20 61 70  eter N is the ap
2cff0 70 72 6f 78 69 6d 61 74 65 20 6e 75 6d 62 65 72  proximate number
2d000 20 6f 66 20 0a 2a 2a 20 5b 76 69 72 74 75 61 6c   of .** [virtual
2d010 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
2d020 74 69 6f 6e 73 5d 20 74 68 61 74 20 61 72 65 20  tions] that are 
2d030 65 76 61 6c 75 61 74 65 64 20 62 65 74 77 65 65  evaluated betwee
2d040 6e 20 73 75 63 63 65 73 73 69 76 65 0a 2a 2a 20  n successive.** 
2d050 69 6e 76 6f 63 61 74 69 6f 6e 73 20 6f 66 20 74  invocations of t
2d060 68 65 20 63 61 6c 6c 62 61 63 6b 20 58 2e 20 20  he callback X.  
2d070 5e 49 66 20 4e 20 69 73 20 6c 65 73 73 20 74 68  ^If N is less th
2d080 61 6e 20 6f 6e 65 20 74 68 65 6e 20 74 68 65 20  an one then the 
2d090 70 72 6f 67 72 65 73 73 0a 2a 2a 20 68 61 6e 64  progress.** hand
2d0a0 6c 65 72 20 69 73 20 64 69 73 61 62 6c 65 64 2e  ler is disabled.
2d0b0 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 61 20 73  .**.** ^Only a s
2d0c0 69 6e 67 6c 65 20 70 72 6f 67 72 65 73 73 20 68  ingle progress h
2d0d0 61 6e 64 6c 65 72 20 6d 61 79 20 62 65 20 64 65  andler may be de
2d0e0 66 69 6e 65 64 20 61 74 20 6f 6e 65 20 74 69 6d  fined at one tim
2d0f0 65 20 70 65 72 0a 2a 2a 20 5b 64 61 74 61 62 61  e per.** [databa
2d100 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 3b 20  se connection]; 
2d110 73 65 74 74 69 6e 67 20 61 20 6e 65 77 20 70 72  setting a new pr
2d120 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20 63  ogress handler c
2d130 61 6e 63 65 6c 73 20 74 68 65 0a 2a 2a 20 6f 6c  ancels the.** ol
2d140 64 20 6f 6e 65 2e 20 20 5e 53 65 74 74 69 6e 67  d one.  ^Setting
2d150 20 70 61 72 61 6d 65 74 65 72 20 58 20 74 6f 20   parameter X to 
2d160 4e 55 4c 4c 20 64 69 73 61 62 6c 65 73 20 74 68  NULL disables th
2d170 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64 6c  e progress handl
2d180 65 72 2e 0a 2a 2a 20 5e 54 68 65 20 70 72 6f 67  er..** ^The prog
2d190 72 65 73 73 20 68 61 6e 64 6c 65 72 20 69 73 20  ress handler is 
2d1a0 61 6c 73 6f 20 64 69 73 61 62 6c 65 64 20 62 79  also disabled by
2d1b0 20 73 65 74 74 69 6e 67 20 4e 20 74 6f 20 61 20   setting N to a 
2d1c0 76 61 6c 75 65 20 6c 65 73 73 0a 2a 2a 20 74 68  value less.** th
2d1d0 61 6e 20 31 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  an 1..**.** ^If 
2d1e0 74 68 65 20 70 72 6f 67 72 65 73 73 20 63 61 6c  the progress cal
2d1f0 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f  lback returns no
2d200 6e 2d 7a 65 72 6f 2c 20 74 68 65 20 6f 70 65 72  n-zero, the oper
2d210 61 74 69 6f 6e 20 69 73 0a 2a 2a 20 69 6e 74 65  ation is.** inte
2d220 72 72 75 70 74 65 64 2e 20 20 54 68 69 73 20 66  rrupted.  This f
2d230 65 61 74 75 72 65 20 63 61 6e 20 62 65 20 75 73  eature can be us
2d240 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20  ed to implement 
2d250 61 0a 2a 2a 20 22 43 61 6e 63 65 6c 22 20 62 75  a.** "Cancel" bu
2d260 74 74 6f 6e 20 6f 6e 20 61 20 47 55 49 20 70 72  tton on a GUI pr
2d270 6f 67 72 65 73 73 20 64 69 61 6c 6f 67 20 62 6f  ogress dialog bo
2d280 78 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 6f  x..**.** The pro
2d290 67 72 65 73 73 20 68 61 6e 64 6c 65 72 20 63 61  gress handler ca
2d2a0 6c 6c 62 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20  llback must not 
2d2b0 64 6f 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74  do anything that
2d2c0 20 77 69 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20   will modify.** 
2d2d0 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e  the database con
2d2e0 6e 65 63 74 69 6f 6e 20 74 68 61 74 20 69 6e 76  nection that inv
2d2f0 6f 6b 65 64 20 74 68 65 20 70 72 6f 67 72 65 73  oked the progres
2d300 73 20 68 61 6e 64 6c 65 72 2e 0a 2a 2a 20 4e 6f  s handler..** No
2d310 74 65 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33  te that [sqlite3
2d320 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 61  _prepare_v2()] a
2d330 6e 64 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70  nd [sqlite3_step
2d340 28 29 5d 20 62 6f 74 68 20 6d 6f 64 69 66 79 20  ()] both modify 
2d350 74 68 65 69 72 0a 2a 2a 20 64 61 74 61 62 61 73  their.** databas
2d360 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f  e connections fo
2d370 72 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66  r the meaning of
2d380 20 22 6d 6f 64 69 66 79 22 20 69 6e 20 74 68 69   "modify" in thi
2d390 73 20 70 61 72 61 67 72 61 70 68 2e 0a 2a 2a 0a  s paragraph..**.
2d3a0 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f  */.SQLITE_API vo
2d3b0 69 64 20 73 71 6c 69 74 65 33 5f 70 72 6f 67 72  id sqlite3_progr
2d3c0 65 73 73 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69  ess_handler(sqli
2d3d0 74 65 33 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a  te3*, int, int(*
2d3e0 29 28 76 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29  )(void*), void*)
2d3f0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
2d400 46 3a 20 4f 70 65 6e 69 6e 67 20 41 20 4e 65 77  F: Opening A New
2d410 20 44 61 74 61 62 61 73 65 20 43 6f 6e 6e 65 63   Database Connec
2d420 74 69 6f 6e 0a 2a 2a 20 43 4f 4e 53 54 52 55 43  tion.** CONSTRUC
2d430 54 4f 52 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a  TOR: sqlite3.**.
2d440 2a 2a 20 5e 54 68 65 73 65 20 72 6f 75 74 69 6e  ** ^These routin
2d450 65 73 20 6f 70 65 6e 20 61 6e 20 53 51 4c 69 74  es open an SQLit
2d460 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  e database file 
2d470 61 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20  as specified by 
2d480 74 68 65 20 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65  the .** filename
2d490 20 61 72 67 75 6d 65 6e 74 2e 20 5e 54 68 65 20   argument. ^The 
2d4a0 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e  filename argumen
2d4b0 74 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64  t is interpreted
2d4c0 20 61 73 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a   as UTF-8 for.**
2d4d0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20   sqlite3_open() 
2d4e0 61 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  and sqlite3_open
2d4f0 5f 76 32 28 29 20 61 6e 64 20 61 73 20 55 54 46  _v2() and as UTF
2d500 2d 31 36 20 69 6e 20 74 68 65 20 6e 61 74 69 76  -16 in the nativ
2d510 65 20 62 79 74 65 0a 2a 2a 20 6f 72 64 65 72 20  e byte.** order 
2d520 66 6f 72 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  for sqlite3_open
2d530 31 36 28 29 2e 20 5e 28 41 20 5b 64 61 74 61 62  16(). ^(A [datab
2d540 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
2d550 68 61 6e 64 6c 65 20 69 73 20 75 73 75 61 6c 6c  handle is usuall
2d560 79 0a 2a 2a 20 72 65 74 75 72 6e 65 64 20 69 6e  y.** returned in
2d570 20 2a 70 70 44 62 2c 20 65 76 65 6e 20 69 66 20   *ppDb, even if 
2d580 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2e  an error occurs.
2d590 20 20 54 68 65 20 6f 6e 6c 79 20 65 78 63 65 70    The only excep
2d5a0 74 69 6f 6e 20 69 73 20 74 68 61 74 0a 2a 2a 20  tion is that.** 
2d5b0 69 66 20 53 51 4c 69 74 65 20 69 73 20 75 6e 61  if SQLite is una
2d5c0 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  ble to allocate 
2d5d0 6d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74  memory to hold t
2d5e0 68 65 20 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a  he [sqlite3] obj
2d5f0 65 63 74 2c 0a 2a 2a 20 61 20 4e 55 4c 4c 20 77  ect,.** a NULL w
2d600 69 6c 6c 20 62 65 20 77 72 69 74 74 65 6e 20 69  ill be written i
2d610 6e 74 6f 20 2a 70 70 44 62 20 69 6e 73 74 65 61  nto *ppDb instea
2d620 64 20 6f 66 20 61 20 70 6f 69 6e 74 65 72 20 74  d of a pointer t
2d630 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5d 0a  o the [sqlite3].
2d640 2a 2a 20 6f 62 6a 65 63 74 2e 29 5e 20 5e 28 49  ** object.)^ ^(I
2d650 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  f the database i
2d660 73 20 6f 70 65 6e 65 64 20 28 61 6e 64 2f 6f 72  s opened (and/or
2d670 20 63 72 65 61 74 65 64 29 20 73 75 63 63 65 73   created) succes
2d680 73 66 75 6c 6c 79 2c 20 74 68 65 6e 0a 2a 2a 20  sfully, then.** 
2d690 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 69 73 20 72  [SQLITE_OK] is r
2d6a0 65 74 75 72 6e 65 64 2e 20 20 4f 74 68 65 72 77  eturned.  Otherw
2d6b0 69 73 65 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f  ise an [error co
2d6c0 64 65 5d 20 69 73 20 72 65 74 75 72 6e 65 64 2e  de] is returned.
2d6d0 29 5e 20 5e 54 68 65 0a 2a 2a 20 5b 73 71 6c 69  )^ ^The.** [sqli
2d6e0 74 65 33 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72  te3_errmsg()] or
2d6f0 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67   [sqlite3_errmsg
2d700 31 36 28 29 5d 20 72 6f 75 74 69 6e 65 73 20 63  16()] routines c
2d710 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 62  an be used to ob
2d720 74 61 69 6e 0a 2a 2a 20 61 6e 20 45 6e 67 6c 69  tain.** an Engli
2d730 73 68 20 6c 61 6e 67 75 61 67 65 20 64 65 73 63  sh language desc
2d740 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 65  ription of the e
2d750 72 72 6f 72 20 66 6f 6c 6c 6f 77 69 6e 67 20 61  rror following a
2d760 20 66 61 69 6c 75 72 65 20 6f 66 20 61 6e 79 0a   failure of any.
2d770 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65  ** of the sqlite
2d780 33 5f 6f 70 65 6e 28 29 20 72 6f 75 74 69 6e 65  3_open() routine
2d790 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65  s..**.** ^The de
2d7a0 66 61 75 6c 74 20 65 6e 63 6f 64 69 6e 67 20 77  fault encoding w
2d7b0 69 6c 6c 20 62 65 20 55 54 46 2d 38 20 66 6f 72  ill be UTF-8 for
2d7c0 20 64 61 74 61 62 61 73 65 73 20 63 72 65 61 74   databases creat
2d7d0 65 64 20 75 73 69 6e 67 0a 2a 2a 20 73 71 6c 69  ed using.** sqli
2d7e0 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71  te3_open() or sq
2d7f0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
2d800 20 20 5e 54 68 65 20 64 65 66 61 75 6c 74 20 65    ^The default e
2d810 6e 63 6f 64 69 6e 67 20 66 6f 72 20 64 61 74 61  ncoding for data
2d820 62 61 73 65 73 0a 2a 2a 20 63 72 65 61 74 65 64  bases.** created
2d830 20 75 73 69 6e 67 20 73 71 6c 69 74 65 33 5f 6f   using sqlite3_o
2d840 70 65 6e 31 36 28 29 20 77 69 6c 6c 20 62 65 20  pen16() will be 
2d850 55 54 46 2d 31 36 20 69 6e 20 74 68 65 20 6e 61  UTF-16 in the na
2d860 74 69 76 65 20 62 79 74 65 20 6f 72 64 65 72 2e  tive byte order.
2d870 0a 2a 2a 0a 2a 2a 20 57 68 65 74 68 65 72 20 6f  .**.** Whether o
2d880 72 20 6e 6f 74 20 61 6e 20 65 72 72 6f 72 20 6f  r not an error o
2d890 63 63 75 72 73 20 77 68 65 6e 20 69 74 20 69 73  ccurs when it is
2d8a0 20 6f 70 65 6e 65 64 2c 20 72 65 73 6f 75 72 63   opened, resourc
2d8b0 65 73 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64  es.** associated
2d8c0 20 77 69 74 68 20 74 68 65 20 5b 64 61 74 61 62   with the [datab
2d8d0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20  ase connection] 
2d8e0 68 61 6e 64 6c 65 20 73 68 6f 75 6c 64 20 62 65  handle should be
2d8f0 20 72 65 6c 65 61 73 65 64 20 62 79 0a 2a 2a 20   released by.** 
2d900 70 61 73 73 69 6e 67 20 69 74 20 74 6f 20 5b 73  passing it to [s
2d910 71 6c 69 74 65 33 5f 63 6c 6f 73 65 28 29 5d 20  qlite3_close()] 
2d920 77 68 65 6e 20 69 74 20 69 73 20 6e 6f 20 6c 6f  when it is no lo
2d930 6e 67 65 72 20 72 65 71 75 69 72 65 64 2e 0a 2a  nger required..*
2d940 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
2d950 5f 6f 70 65 6e 5f 76 32 28 29 20 69 6e 74 65 72  _open_v2() inter
2d960 66 61 63 65 20 77 6f 72 6b 73 20 6c 69 6b 65 20  face works like 
2d970 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 0a 2a  sqlite3_open().*
2d980 2a 20 65 78 63 65 70 74 20 74 68 61 74 20 69 74  * except that it
2d990 20 61 63 63 65 70 74 73 20 74 77 6f 20 61 64 64   accepts two add
2d9a0 69 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65  itional paramete
2d9b0 72 73 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  rs for additiona
2d9c0 6c 20 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 6f 76 65  l control.** ove
2d9d0 72 20 74 68 65 20 6e 65 77 20 64 61 74 61 62 61  r the new databa
2d9e0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  se connection.  
2d9f0 5e 28 54 68 65 20 66 6c 61 67 73 20 70 61 72 61  ^(The flags para
2da00 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 73 71 6c 69  meter to.** sqli
2da10 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 63 61  te3_open_v2() ca
2da20 6e 20 74 61 6b 65 20 6f 6e 65 20 6f 66 0a 2a 2a  n take one of.**
2da30 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
2da40 68 72 65 65 20 76 61 6c 75 65 73 2c 20 6f 70 74  hree values, opt
2da50 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62 69 6e 65 64  ionally combined
2da60 20 77 69 74 68 20 74 68 65 20 0a 2a 2a 20 5b 53   with the .** [S
2da70 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54  QLITE_OPEN_NOMUT
2da80 45 58 5d 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45  EX], [SQLITE_OPE
2da90 4e 5f 46 55 4c 4c 4d 55 54 45 58 5d 2c 20 5b 53  N_FULLMUTEX], [S
2daa0 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45  QLITE_OPEN_SHARE
2dab0 44 43 41 43 48 45 5d 2c 0a 2a 2a 20 5b 53 51 4c  DCACHE],.** [SQL
2dac0 49 54 45 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45  ITE_OPEN_PRIVATE
2dad0 43 41 43 48 45 5d 2c 20 61 6e 64 2f 6f 72 20 5b  CACHE], and/or [
2dae0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d  SQLITE_OPEN_URI]
2daf0 20 66 6c 61 67 73 3a 29 5e 0a 2a 2a 0a 2a 2a 20   flags:)^.**.** 
2db00 3c 64 6c 3e 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53  <dl>.** ^(<dt>[S
2db10 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f  QLITE_OPEN_READO
2db20 4e 4c 59 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  NLY]</dt>.** <dd
2db30 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73  >The database is
2db40 20 6f 70 65 6e 65 64 20 69 6e 20 72 65 61 64 2d   opened in read-
2db50 6f 6e 6c 79 20 6d 6f 64 65 2e 20 20 49 66 20 74  only mode.  If t
2db60 68 65 20 64 61 74 61 62 61 73 65 20 64 6f 65 73  he database does
2db70 20 6e 6f 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20   not.** already 
2db80 65 78 69 73 74 2c 20 61 6e 20 65 72 72 6f 72 20  exist, an error 
2db90 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64  is returned.</dd
2dba0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e  >)^.**.** ^(<dt>
2dbb0 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41  [SQLITE_OPEN_REA
2dbc0 44 57 52 49 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20  DWRITE]</dt>.** 
2dbd0 3c 64 64 3e 54 68 65 20 64 61 74 61 62 61 73 65  <dd>The database
2dbe0 20 69 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72   is opened for r
2dbf0 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69  eading and writi
2dc00 6e 67 20 69 66 20 70 6f 73 73 69 62 6c 65 2c 20  ng if possible, 
2dc10 6f 72 20 72 65 61 64 69 6e 67 0a 2a 2a 20 6f 6e  or reading.** on
2dc20 6c 79 20 69 66 20 74 68 65 20 66 69 6c 65 20 69  ly if the file i
2dc30 73 20 77 72 69 74 65 20 70 72 6f 74 65 63 74 65  s write protecte
2dc40 64 20 62 79 20 74 68 65 20 6f 70 65 72 61 74 69  d by the operati
2dc50 6e 67 20 73 79 73 74 65 6d 2e 20 20 49 6e 20 65  ng system.  In e
2dc60 69 74 68 65 72 0a 2a 2a 20 63 61 73 65 20 74 68  ither.** case th
2dc70 65 20 64 61 74 61 62 61 73 65 20 6d 75 73 74 20  e database must 
2dc80 61 6c 72 65 61 64 79 20 65 78 69 73 74 2c 20 6f  already exist, o
2dc90 74 68 65 72 77 69 73 65 20 61 6e 20 65 72 72 6f  therwise an erro
2dca0 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f  r is returned.</
2dcb0 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64  dd>)^.**.** ^(<d
2dcc0 74 3e 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  t>[SQLITE_OPEN_R
2dcd0 45 41 44 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c  EADWRITE] | [SQL
2dce0 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d  ITE_OPEN_CREATE]
2dcf0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
2dd00 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
2dd10 6e 65 64 20 66 6f 72 20 72 65 61 64 69 6e 67 20  ned for reading 
2dd20 61 6e 64 20 77 72 69 74 69 6e 67 2c 20 61 6e 64  and writing, and
2dd30 20 69 73 20 63 72 65 61 74 65 64 20 69 66 0a 2a   is created if.*
2dd40 2a 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 61 6c  * it does not al
2dd50 72 65 61 64 79 20 65 78 69 73 74 2e 20 54 68 69  ready exist. Thi
2dd60 73 20 69 73 20 74 68 65 20 62 65 68 61 76 69 6f  s is the behavio
2dd70 72 20 74 68 61 74 20 69 73 20 61 6c 77 61 79 73  r that is always
2dd80 20 75 73 65 64 20 66 6f 72 0a 2a 2a 20 73 71 6c   used for.** sql
2dd90 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20  ite3_open() and 
2dda0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29  sqlite3_open16()
2ddb0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c  .</dd>)^.** </dl
2ddc0 3e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 33  >.**.** If the 3
2ddd0 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  rd parameter to 
2dde0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2ddf0 29 20 69 73 20 6e 6f 74 20 6f 6e 65 20 6f 66 20  ) is not one of 
2de00 74 68 65 0a 2a 2a 20 63 6f 6d 62 69 6e 61 74 69  the.** combinati
2de10 6f 6e 73 20 73 68 6f 77 6e 20 61 62 6f 76 65 20  ons shown above 
2de20 6f 70 74 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62 69  optionally combi
2de30 6e 65 64 20 77 69 74 68 20 6f 74 68 65 72 0a 2a  ned with other.*
2de40 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52  * [SQLITE_OPEN_R
2de50 45 41 44 4f 4e 4c 59 20 7c 20 53 51 4c 49 54 45  EADONLY | SQLITE
2de60 5f 4f 50 45 4e 5f 2a 20 62 69 74 73 5d 0a 2a 2a  _OPEN_* bits].**
2de70 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76 69   then the behavi
2de80 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e  or is undefined.
2de90 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b  .**.** ^If the [
2dea0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55  SQLITE_OPEN_NOMU
2deb0 54 45 58 5d 20 66 6c 61 67 20 69 73 20 73 65 74  TEX] flag is set
2dec0 2c 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  , then the datab
2ded0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase connection.*
2dee0 2a 20 6f 70 65 6e 73 20 69 6e 20 74 68 65 20 6d  * opens in the m
2def0 75 6c 74 69 2d 74 68 72 65 61 64 20 5b 74 68 72  ulti-thread [thr
2df00 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 61 73 20  eading mode] as 
2df10 6c 6f 6e 67 20 61 73 20 74 68 65 20 73 69 6e 67  long as the sing
2df20 6c 65 2d 74 68 72 65 61 64 0a 2a 2a 20 6d 6f 64  le-thread.** mod
2df30 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 73  e has not been s
2df40 65 74 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69  et at compile-ti
2df50 6d 65 20 6f 72 20 73 74 61 72 74 2d 74 69 6d 65  me or start-time
2df60 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53  .  ^If the.** [S
2df70 51 4c 49 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d  QLITE_OPEN_FULLM
2df80 55 54 45 58 5d 20 66 6c 61 67 20 69 73 20 73 65  UTEX] flag is se
2df90 74 20 74 68 65 6e 20 74 68 65 20 64 61 74 61 62  t then the datab
2dfa0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  ase connection o
2dfb0 70 65 6e 73 0a 2a 2a 20 69 6e 20 74 68 65 20 73  pens.** in the s
2dfc0 65 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65 61  erialized [threa
2dfd0 64 69 6e 67 20 6d 6f 64 65 5d 20 75 6e 6c 65 73  ding mode] unles
2dfe0 73 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 20  s single-thread 
2dff0 77 61 73 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c  was.** previousl
2e000 79 20 73 65 6c 65 63 74 65 64 20 61 74 20 63 6f  y selected at co
2e010 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74  mpile-time or st
2e020 61 72 74 2d 74 69 6d 65 2e 0a 2a 2a 20 5e 54 68  art-time..** ^Th
2e030 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  e [SQLITE_OPEN_S
2e040 48 41 52 45 44 43 41 43 48 45 5d 20 66 6c 61 67  HAREDCACHE] flag
2e050 20 63 61 75 73 65 73 20 74 68 65 20 64 61 74 61   causes the data
2e060 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2e070 74 6f 20 62 65 0a 2a 2a 20 65 6c 69 67 69 62 6c  to be.** eligibl
2e080 65 20 74 6f 20 75 73 65 20 5b 73 68 61 72 65 64  e to use [shared
2e090 20 63 61 63 68 65 20 6d 6f 64 65 5d 2c 20 72 65   cache mode], re
2e0a0 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74  gardless of whet
2e0b0 68 65 72 20 6f 72 20 6e 6f 74 20 73 68 61 72 65  her or not share
2e0c0 64 0a 2a 2a 20 63 61 63 68 65 20 69 73 20 65 6e  d.** cache is en
2e0d0 61 62 6c 65 64 20 75 73 69 6e 67 20 5b 73 71 6c  abled using [sql
2e0e0 69 74 65 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72  ite3_enable_shar
2e0f0 65 64 5f 63 61 63 68 65 28 29 5d 2e 20 20 5e 54  ed_cache()].  ^T
2e100 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50  he.** [SQLITE_OP
2e110 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45 5d  EN_PRIVATECACHE]
2e120 20 66 6c 61 67 20 63 61 75 73 65 73 20 74 68 65   flag causes the
2e130 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2e140 74 69 6f 6e 20 74 6f 20 6e 6f 74 0a 2a 2a 20 70  tion to not.** p
2e150 61 72 74 69 63 69 70 61 74 65 20 69 6e 20 5b 73  articipate in [s
2e160 68 61 72 65 64 20 63 61 63 68 65 20 6d 6f 64 65  hared cache mode
2e170 5d 20 65 76 65 6e 20 69 66 20 69 74 20 69 73 20  ] even if it is 
2e180 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e  enabled..**.** ^
2e190 54 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  The fourth param
2e1a0 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
2e1b0 6f 70 65 6e 5f 76 32 28 29 20 69 73 20 74 68 65  open_v2() is the
2e1c0 20 6e 61 6d 65 20 6f 66 20 74 68 65 0a 2a 2a 20   name of the.** 
2e1d0 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62  [sqlite3_vfs] ob
2e1e0 6a 65 63 74 20 74 68 61 74 20 64 65 66 69 6e 65  ject that define
2e1f0 73 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20  s the operating 
2e200 73 79 73 74 65 6d 20 69 6e 74 65 72 66 61 63 65  system interface
2e210 20 74 68 61 74 0a 2a 2a 20 74 68 65 20 6e 65 77   that.** the new
2e220 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2e230 74 69 6f 6e 20 73 68 6f 75 6c 64 20 75 73 65 2e  tion should use.
2e240 20 20 5e 49 66 20 74 68 65 20 66 6f 75 72 74 68    ^If the fourth
2e250 20 70 61 72 61 6d 65 74 65 72 20 69 73 0a 2a 2a   parameter is.**
2e260 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
2e270 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74  then the default
2e280 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f   [sqlite3_vfs] o
2e290 62 6a 65 63 74 20 69 73 20 75 73 65 64 2e 0a 2a  bject is used..*
2e2a0 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69 6c  *.** ^If the fil
2e2b0 65 6e 61 6d 65 20 69 73 20 22 3a 6d 65 6d 6f 72  ename is ":memor
2e2c0 79 3a 22 2c 20 74 68 65 6e 20 61 20 70 72 69 76  y:", then a priv
2e2d0 61 74 65 2c 20 74 65 6d 70 6f 72 61 72 79 20 69  ate, temporary i
2e2e0 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
2e2f0 65 0a 2a 2a 20 69 73 20 63 72 65 61 74 65 64 20  e.** is created 
2e300 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  for the connecti
2e310 6f 6e 2e 20 20 5e 54 68 69 73 20 69 6e 2d 6d 65  on.  ^This in-me
2e320 6d 6f 72 79 20 64 61 74 61 62 61 73 65 20 77 69  mory database wi
2e330 6c 6c 20 76 61 6e 69 73 68 20 77 68 65 6e 0a 2a  ll vanish when.*
2e340 2a 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  * the database c
2e350 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f  onnection is clo
2e360 73 65 64 2e 20 20 46 75 74 75 72 65 20 76 65 72  sed.  Future ver
2e370 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 20  sions of SQLite 
2e380 6d 69 67 68 74 0a 2a 2a 20 6d 61 6b 65 20 75 73  might.** make us
2e390 65 20 6f 66 20 61 64 64 69 74 69 6f 6e 61 6c 20  e of additional 
2e3a0 73 70 65 63 69 61 6c 20 66 69 6c 65 6e 61 6d 65  special filename
2e3b0 73 20 74 68 61 74 20 62 65 67 69 6e 20 77 69 74  s that begin wit
2e3c0 68 20 74 68 65 20 22 3a 22 20 63 68 61 72 61 63  h the ":" charac
2e3d0 74 65 72 2e 0a 2a 2a 20 49 74 20 69 73 20 72 65  ter..** It is re
2e3e0 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20 77  commended that w
2e3f0 68 65 6e 20 61 20 64 61 74 61 62 61 73 65 20 66  hen a database f
2e400 69 6c 65 6e 61 6d 65 20 61 63 74 75 61 6c 6c 79  ilename actually
2e410 20 64 6f 65 73 20 62 65 67 69 6e 20 77 69 74 68   does begin with
2e420 0a 2a 2a 20 61 20 22 3a 22 20 63 68 61 72 61 63  .** a ":" charac
2e430 74 65 72 20 79 6f 75 20 73 68 6f 75 6c 64 20 70  ter you should p
2e440 72 65 66 69 78 20 74 68 65 20 66 69 6c 65 6e 61  refix the filena
2e450 6d 65 20 77 69 74 68 20 61 20 70 61 74 68 6e 61  me with a pathna
2e460 6d 65 20 73 75 63 68 20 61 73 0a 2a 2a 20 22 2e  me such as.** ".
2e470 2f 22 20 74 6f 20 61 76 6f 69 64 20 61 6d 62 69  /" to avoid ambi
2e480 67 75 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  guity..**.** ^If
2e490 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73   the filename is
2e4a0 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
2e4b0 2c 20 74 68 65 6e 20 61 20 70 72 69 76 61 74 65  , then a private
2e4c0 2c 20 74 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 6f  , temporary.** o
2e4d0 6e 2d 64 69 73 6b 20 64 61 74 61 62 61 73 65 20  n-disk database 
2e4e0 77 69 6c 6c 20 62 65 20 63 72 65 61 74 65 64 2e  will be created.
2e4f0 20 20 5e 54 68 69 73 20 70 72 69 76 61 74 65 20    ^This private 
2e500 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20 62 65  database will be
2e510 0a 2a 2a 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c  .** automaticall
2e520 79 20 64 65 6c 65 74 65 64 20 61 73 20 73 6f 6f  y deleted as soo
2e530 6e 20 61 73 20 74 68 65 20 64 61 74 61 62 61 73  n as the databas
2e540 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
2e550 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  closed..**.** [[
2e560 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e  URI filenames in
2e570 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d   sqlite3_open()]
2e580 5d 20 3c 68 33 3e 55 52 49 20 46 69 6c 65 6e 61  ] <h3>URI Filena
2e590 6d 65 73 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 5e  mes</h3>.**.** ^
2e5a0 49 66 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65  If [URI filename
2e5b0 5d 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e  ] interpretation
2e5c0 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 61 6e 64   is enabled, and
2e5d0 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72   the filename ar
2e5e0 67 75 6d 65 6e 74 0a 2a 2a 20 62 65 67 69 6e 73  gument.** begins
2e5f0 20 77 69 74 68 20 22 66 69 6c 65 3a 22 2c 20 74   with "file:", t
2e600 68 65 6e 20 74 68 65 20 66 69 6c 65 6e 61 6d 65  hen the filename
2e610 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20   is interpreted 
2e620 61 73 20 61 20 55 52 49 2e 20 5e 55 52 49 0a 2a  as a URI. ^URI.*
2e630 2a 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72  * filename inter
2e640 70 72 65 74 61 74 69 6f 6e 20 69 73 20 65 6e 61  pretation is ena
2e650 62 6c 65 64 20 69 66 20 74 68 65 20 5b 53 51 4c  bled if the [SQL
2e660 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c  ITE_OPEN_URI] fl
2e670 61 67 20 69 73 0a 2a 2a 20 73 65 74 20 69 6e 20  ag is.** set in 
2e680 74 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65  the third argume
2e690 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70  nt to sqlite3_op
2e6a0 65 6e 5f 76 32 28 29 2c 20 6f 72 20 69 66 20 69  en_v2(), or if i
2e6b0 74 20 68 61 73 0a 2a 2a 20 62 65 65 6e 20 65 6e  t has.** been en
2e6c0 61 62 6c 65 64 20 67 6c 6f 62 61 6c 6c 79 20 75  abled globally u
2e6d0 73 69 6e 67 20 74 68 65 20 5b 53 51 4c 49 54 45  sing the [SQLITE
2e6e0 5f 43 4f 4e 46 49 47 5f 55 52 49 5d 20 6f 70 74  _CONFIG_URI] opt
2e6f0 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 2a 2a 20  ion with the.** 
2e700 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
2e710 29 5d 20 6d 65 74 68 6f 64 20 6f 72 20 62 79 20  )] method or by 
2e720 74 68 65 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f  the [SQLITE_USE_
2e730 55 52 49 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d  URI] compile-tim
2e740 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 20 55 52 49  e option..** URI
2e750 20 66 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72 70   filename interp
2e760 72 65 74 61 74 69 6f 6e 20 69 73 20 74 75 72 6e  retation is turn
2e770 65 64 20 6f 66 66 0a 2a 2a 20 62 79 20 64 65 66  ed off.** by def
2e780 61 75 6c 74 2c 20 62 75 74 20 66 75 74 75 72 65  ault, but future
2e790 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c   releases of SQL
2e7a0 69 74 65 20 6d 69 67 68 74 20 65 6e 61 62 6c 65  ite might enable
2e7b0 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a   URI filename.**
2e7c0 20 69 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20   interpretation 
2e7d0 62 79 20 64 65 66 61 75 6c 74 2e 20 20 53 65 65  by default.  See
2e7e0 20 22 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 73   "[URI filenames
2e7f0 5d 22 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  ]" for additiona
2e800 6c 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  l.** information
2e810 2e 0a 2a 2a 0a 2a 2a 20 55 52 49 20 66 69 6c 65  ..**.** URI file
2e820 6e 61 6d 65 73 20 61 72 65 20 70 61 72 73 65 64  names are parsed
2e830 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 52 46   according to RF
2e840 43 20 33 39 38 36 2e 20 5e 49 66 20 74 68 65 20  C 3986. ^If the 
2e850 55 52 49 20 63 6f 6e 74 61 69 6e 73 20 61 6e 0a  URI contains an.
2e860 2a 2a 20 61 75 74 68 6f 72 69 74 79 2c 20 74 68  ** authority, th
2e870 65 6e 20 69 74 20 6d 75 73 74 20 62 65 20 65 69  en it must be ei
2e880 74 68 65 72 20 61 6e 20 65 6d 70 74 79 20 73 74  ther an empty st
2e890 72 69 6e 67 20 6f 72 20 74 68 65 20 73 74 72 69  ring or the stri
2e8a0 6e 67 20 0a 2a 2a 20 22 6c 6f 63 61 6c 68 6f 73  ng .** "localhos
2e8b0 74 22 2e 20 5e 49 66 20 74 68 65 20 61 75 74 68  t". ^If the auth
2e8c0 6f 72 69 74 79 20 69 73 20 6e 6f 74 20 61 6e 20  ority is not an 
2e8d0 65 6d 70 74 79 20 73 74 72 69 6e 67 20 6f 72 20  empty string or 
2e8e0 22 6c 6f 63 61 6c 68 6f 73 74 22 2c 20 61 6e 20  "localhost", an 
2e8f0 0a 2a 2a 20 65 72 72 6f 72 20 69 73 20 72 65 74  .** error is ret
2e900 75 72 6e 65 64 20 74 6f 20 74 68 65 20 63 61 6c  urned to the cal
2e910 6c 65 72 2e 20 5e 54 68 65 20 66 72 61 67 6d 65  ler. ^The fragme
2e920 6e 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20  nt component of 
2e930 61 20 55 52 49 2c 20 69 66 20 0a 2a 2a 20 70 72  a URI, if .** pr
2e940 65 73 65 6e 74 2c 20 69 73 20 69 67 6e 6f 72 65  esent, is ignore
2e950 64 2e 0a 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65  d..**.** ^SQLite
2e960 20 75 73 65 73 20 74 68 65 20 70 61 74 68 20 63   uses the path c
2e970 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 74 68 65 20  omponent of the 
2e980 55 52 49 20 61 73 20 74 68 65 20 6e 61 6d 65 20  URI as the name 
2e990 6f 66 20 74 68 65 20 64 69 73 6b 20 66 69 6c 65  of the disk file
2e9a0 0a 2a 2a 20 77 68 69 63 68 20 63 6f 6e 74 61 69  .** which contai
2e9b0 6e 73 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  ns the database.
2e9c0 20 5e 49 66 20 74 68 65 20 70 61 74 68 20 62 65   ^If the path be
2e9d0 67 69 6e 73 20 77 69 74 68 20 61 20 27 2f 27 20  gins with a '/' 
2e9e0 63 68 61 72 61 63 74 65 72 2c 20 0a 2a 2a 20 74  character, .** t
2e9f0 68 65 6e 20 69 74 20 69 73 20 69 6e 74 65 72 70  hen it is interp
2ea00 72 65 74 65 64 20 61 73 20 61 6e 20 61 62 73 6f  reted as an abso
2ea10 6c 75 74 65 20 70 61 74 68 2e 20 5e 49 66 20 74  lute path. ^If t
2ea20 68 65 20 70 61 74 68 20 64 6f 65 73 20 6e 6f 74  he path does not
2ea30 20 62 65 67 69 6e 20 0a 2a 2a 20 77 69 74 68 20   begin .** with 
2ea40 61 20 27 2f 27 20 28 6d 65 61 6e 69 6e 67 20 74  a '/' (meaning t
2ea50 68 61 74 20 74 68 65 20 61 75 74 68 6f 72 69 74  hat the authorit
2ea60 79 20 73 65 63 74 69 6f 6e 20 69 73 20 6f 6d 69  y section is omi
2ea70 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 55 52  tted from the UR
2ea80 49 29 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 70  I).** then the p
2ea90 61 74 68 20 69 73 20 69 6e 74 65 72 70 72 65 74  ath is interpret
2eaa0 65 64 20 61 73 20 61 20 72 65 6c 61 74 69 76 65  ed as a relative
2eab0 20 70 61 74 68 2e 20 0a 2a 2a 20 5e 28 4f 6e 20   path. .** ^(On 
2eac0 77 69 6e 64 6f 77 73 2c 20 74 68 65 20 66 69 72  windows, the fir
2ead0 73 74 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20  st component of 
2eae0 61 6e 20 61 62 73 6f 6c 75 74 65 20 70 61 74 68  an absolute path
2eaf0 20 0a 2a 2a 20 69 73 20 61 20 64 72 69 76 65 20   .** is a drive 
2eb00 73 70 65 63 69 66 69 63 61 74 69 6f 6e 20 28 65  specification (e
2eb10 2e 67 2e 20 22 43 3a 22 29 2e 29 5e 0a 2a 2a 0a  .g. "C:").)^.**.
2eb20 2a 2a 20 5b 5b 63 6f 72 65 20 55 52 49 20 71 75  ** [[core URI qu
2eb30 65 72 79 20 70 61 72 61 6d 65 74 65 72 73 5d 5d  ery parameters]]
2eb40 0a 2a 2a 20 54 68 65 20 71 75 65 72 79 20 63 6f  .** The query co
2eb50 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55 52 49  mponent of a URI
2eb60 20 6d 61 79 20 63 6f 6e 74 61 69 6e 20 70 61 72   may contain par
2eb70 61 6d 65 74 65 72 73 20 74 68 61 74 20 61 72 65  ameters that are
2eb80 20 69 6e 74 65 72 70 72 65 74 65 64 0a 2a 2a 20   interpreted.** 
2eb90 65 69 74 68 65 72 20 62 79 20 53 51 4c 69 74 65  either by SQLite
2eba0 20 69 74 73 65 6c 66 2c 20 6f 72 20 62 79 20 61   itself, or by a
2ebb0 20 5b 56 46 53 20 7c 20 63 75 73 74 6f 6d 20 56   [VFS | custom V
2ebc0 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
2ebd0 6e 5d 2e 0a 2a 2a 20 53 51 4c 69 74 65 20 61 6e  n]..** SQLite an
2ebe0 64 20 69 74 73 20 62 75 69 6c 74 2d 69 6e 20 5b  d its built-in [
2ebf0 56 46 53 65 73 5d 20 69 6e 74 65 72 70 72 65 74  VFSes] interpret
2ec00 20 74 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e   the.** followin
2ec10 67 20 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  g query paramete
2ec20 72 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a  rs:.**.** <ul>.*
2ec30 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e 76 66 73 3c  *   <li> <b>vfs<
2ec40 2f 62 3e 3a 20 5e 54 68 65 20 22 76 66 73 22 20  /b>: ^The "vfs" 
2ec50 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65  parameter may be
2ec60 20 75 73 65 64 20 74 6f 20 73 70 65 63 69 66 79   used to specify
2ec70 20 74 68 65 20 6e 61 6d 65 20 6f 66 0a 2a 2a 20   the name of.** 
2ec80 20 20 20 20 61 20 56 46 53 20 6f 62 6a 65 63 74      a VFS object
2ec90 20 74 68 61 74 20 70 72 6f 76 69 64 65 73 20 74   that provides t
2eca0 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
2ecb0 74 65 6d 20 69 6e 74 65 72 66 61 63 65 20 74 68  tem interface th
2ecc0 61 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 20 20 20  at should.**    
2ecd0 20 62 65 20 75 73 65 64 20 74 6f 20 61 63 63 65   be used to acce
2ece0 73 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ss the database 
2ecf0 66 69 6c 65 20 6f 6e 20 64 69 73 6b 2e 20 5e 49  file on disk. ^I
2ed00 66 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  f this option is
2ed10 20 73 65 74 20 74 6f 0a 2a 2a 20 20 20 20 20 61   set to.**     a
2ed20 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 20 74  n empty string t
2ed30 68 65 20 64 65 66 61 75 6c 74 20 56 46 53 20 6f  he default VFS o
2ed40 62 6a 65 63 74 20 69 73 20 75 73 65 64 2e 20 5e  bject is used. ^
2ed50 53 70 65 63 69 66 79 69 6e 67 20 61 6e 20 75 6e  Specifying an un
2ed60 6b 6e 6f 77 6e 0a 2a 2a 20 20 20 20 20 56 46 53  known.**     VFS
2ed70 20 69 73 20 61 6e 20 65 72 72 6f 72 2e 20 5e 49   is an error. ^I
2ed80 66 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76  f sqlite3_open_v
2ed90 32 28 29 20 69 73 20 75 73 65 64 20 61 6e 64 20  2() is used and 
2eda0 74 68 65 20 76 66 73 20 6f 70 74 69 6f 6e 20 69  the vfs option i
2edb0 73 0a 2a 2a 20 20 20 20 20 70 72 65 73 65 6e 74  s.**     present
2edc0 2c 20 74 68 65 6e 20 74 68 65 20 56 46 53 20 73  , then the VFS s
2edd0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
2ede0 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 70 72 65  option takes pre
2edf0 63 65 64 65 6e 63 65 20 6f 76 65 72 0a 2a 2a 20  cedence over.** 
2ee00 20 20 20 20 74 68 65 20 76 61 6c 75 65 20 70 61      the value pa
2ee10 73 73 65 64 20 61 73 20 74 68 65 20 66 6f 75 72  ssed as the four
2ee20 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20  th parameter to 
2ee30 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
2ee40 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e 20  )..**.**   <li> 
2ee50 3c 62 3e 6d 6f 64 65 3c 2f 62 3e 3a 20 5e 28 54  <b>mode</b>: ^(T
2ee60 68 65 20 6d 6f 64 65 20 70 61 72 61 6d 65 74 65  he mode paramete
2ee70 72 20 6d 61 79 20 62 65 20 73 65 74 20 74 6f 20  r may be set to 
2ee80 65 69 74 68 65 72 20 22 72 6f 22 2c 20 22 72 77  either "ro", "rw
2ee90 22 2c 0a 2a 2a 20 20 20 20 20 22 72 77 63 22 2c  ",.**     "rwc",
2eea0 20 6f 72 20 22 6d 65 6d 6f 72 79 22 2e 20 41 74   or "memory". At
2eeb0 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 65 74 20  tempting to set 
2eec0 69 74 20 74 6f 20 61 6e 79 20 6f 74 68 65 72 20  it to any other 
2eed0 76 61 6c 75 65 20 69 73 0a 2a 2a 20 20 20 20 20  value is.**     
2eee0 61 6e 20 65 72 72 6f 72 29 5e 2e 20 0a 2a 2a 20  an error)^. .** 
2eef0 20 20 20 20 5e 49 66 20 22 72 6f 22 20 69 73 20      ^If "ro" is 
2ef00 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 6e 20  specified, then 
2ef10 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2ef20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64 2d  opened for read-
2ef30 6f 6e 6c 79 20 0a 2a 2a 20 20 20 20 20 61 63 63  only .**     acc
2ef40 65 73 73 2c 20 6a 75 73 74 20 61 73 20 69 66 20  ess, just as if 
2ef50 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  the [SQLITE_OPEN
2ef60 5f 52 45 41 44 4f 4e 4c 59 5d 20 66 6c 61 67 20  _READONLY] flag 
2ef70 68 61 64 20 62 65 65 6e 20 73 65 74 20 69 6e 20  had been set in 
2ef80 74 68 65 20 0a 2a 2a 20 20 20 20 20 74 68 69 72  the .**     thir
2ef90 64 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  d argument to sq
2efa0 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
2efb0 20 5e 49 66 20 74 68 65 20 6d 6f 64 65 20 6f 70   ^If the mode op
2efc0 74 69 6f 6e 20 69 73 20 73 65 74 20 74 6f 20 0a  tion is set to .
2efd0 2a 2a 20 20 20 20 20 22 72 77 22 2c 20 74 68 65  **     "rw", the
2efe0 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69  n the database i
2eff0 73 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61  s opened for rea
2f000 64 2d 77 72 69 74 65 20 28 62 75 74 20 6e 6f 74  d-write (but not
2f010 20 63 72 65 61 74 65 29 20 0a 2a 2a 20 20 20 20   create) .**    
2f020 20 61 63 63 65 73 73 2c 20 61 73 20 69 66 20 53   access, as if S
2f030 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57  QLITE_OPEN_READW
2f040 52 49 54 45 20 28 62 75 74 20 6e 6f 74 20 53 51  RITE (but not SQ
2f050 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45  LITE_OPEN_CREATE
2f060 29 20 68 61 64 20 0a 2a 2a 20 20 20 20 20 62 65  ) had .**     be
2f070 65 6e 20 73 65 74 2e 20 5e 56 61 6c 75 65 20 22  en set. ^Value "
2f080 72 77 63 22 20 69 73 20 65 71 75 69 76 61 6c 65  rwc" is equivale
2f090 6e 74 20 74 6f 20 73 65 74 74 69 6e 67 20 62 6f  nt to setting bo
2f0a0 74 68 20 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54  th .**     SQLIT
2f0b0 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54 45  E_OPEN_READWRITE
2f0c0 20 61 6e 64 20 53 51 4c 49 54 45 5f 4f 50 45 4e   and SQLITE_OPEN
2f0d0 5f 43 52 45 41 54 45 2e 20 20 5e 49 66 20 74 68  _CREATE.  ^If th
2f0e0 65 20 6d 6f 64 65 20 6f 70 74 69 6f 6e 20 69 73  e mode option is
2f0f0 0a 2a 2a 20 20 20 20 20 73 65 74 20 74 6f 20 22  .**     set to "
2f100 6d 65 6d 6f 72 79 22 20 74 68 65 6e 20 61 20 70  memory" then a p
2f110 75 72 65 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64  ure [in-memory d
2f120 61 74 61 62 61 73 65 5d 20 74 68 61 74 20 6e 65  atabase] that ne
2f130 76 65 72 20 72 65 61 64 73 0a 2a 2a 20 20 20 20  ver reads.**    
2f140 20 6f 72 20 77 72 69 74 65 73 20 66 72 6f 6d 20   or writes from 
2f150 64 69 73 6b 20 69 73 20 75 73 65 64 2e 20 5e 49  disk is used. ^I
2f160 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f  t is an error to
2f170 20 73 70 65 63 69 66 79 20 61 20 76 61 6c 75 65   specify a value
2f180 20 66 6f 72 0a 2a 2a 20 20 20 20 20 74 68 65 20   for.**     the 
2f190 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72 20 74  mode parameter t
2f1a0 68 61 74 20 69 73 20 6c 65 73 73 20 72 65 73 74  hat is less rest
2f1b0 72 69 63 74 69 76 65 20 74 68 61 6e 20 74 68 61  rictive than tha
2f1c0 74 20 73 70 65 63 69 66 69 65 64 20 62 79 0a 2a  t specified by.*
2f1d0 2a 20 20 20 20 20 74 68 65 20 66 6c 61 67 73 20  *     the flags 
2f1e0 70 61 73 73 65 64 20 69 6e 20 74 68 65 20 74 68  passed in the th
2f1f0 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f  ird parameter to
2f200 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2f210 28 29 2e 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e  ()..**.**   <li>
2f220 20 3c 62 3e 63 61 63 68 65 3c 2f 62 3e 3a 20 5e   <b>cache</b>: ^
2f230 54 68 65 20 63 61 63 68 65 20 70 61 72 61 6d 65  The cache parame
2f240 74 65 72 20 6d 61 79 20 62 65 20 73 65 74 20 74  ter may be set t
2f250 6f 20 65 69 74 68 65 72 20 22 73 68 61 72 65 64  o either "shared
2f260 22 20 6f 72 0a 2a 2a 20 20 20 20 20 22 70 72 69  " or.**     "pri
2f270 76 61 74 65 22 2e 20 5e 53 65 74 74 69 6e 67 20  vate". ^Setting 
2f280 69 74 20 74 6f 20 22 73 68 61 72 65 64 22 20 69  it to "shared" i
2f290 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20  s equivalent to 
2f2a0 73 65 74 74 69 6e 67 20 74 68 65 0a 2a 2a 20 20  setting the.**  
2f2b0 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53     SQLITE_OPEN_S
2f2c0 48 41 52 45 44 43 41 43 48 45 20 62 69 74 20 69  HAREDCACHE bit i
2f2d0 6e 20 74 68 65 20 66 6c 61 67 73 20 61 72 67 75  n the flags argu
2f2e0 6d 65 6e 74 20 70 61 73 73 65 64 20 74 6f 0a 2a  ment passed to.*
2f2f0 2a 20 20 20 20 20 73 71 6c 69 74 65 33 5f 6f 70  *     sqlite3_op
2f300 65 6e 5f 76 32 28 29 2e 20 5e 53 65 74 74 69 6e  en_v2(). ^Settin
2f310 67 20 74 68 65 20 63 61 63 68 65 20 70 61 72 61  g the cache para
2f320 6d 65 74 65 72 20 74 6f 20 22 70 72 69 76 61 74  meter to "privat
2f330 65 22 20 69 73 20 0a 2a 2a 20 20 20 20 20 65 71  e" is .**     eq
2f340 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65 74 74  uivalent to sett
2f350 69 6e 67 20 74 68 65 20 53 51 4c 49 54 45 5f 4f  ing the SQLITE_O
2f360 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45  PEN_PRIVATECACHE
2f370 20 62 69 74 2e 0a 2a 2a 20 20 20 20 20 5e 49 66   bit..**     ^If
2f380 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2f390 28 29 20 69 73 20 75 73 65 64 20 61 6e 64 20 74  () is used and t
2f3a0 68 65 20 22 63 61 63 68 65 22 20 70 61 72 61 6d  he "cache" param
2f3b0 65 74 65 72 20 69 73 20 70 72 65 73 65 6e 74 20  eter is present 
2f3c0 69 6e 0a 2a 2a 20 20 20 20 20 61 20 55 52 49 20  in.**     a URI 
2f3d0 66 69 6c 65 6e 61 6d 65 2c 20 69 74 73 20 76 61  filename, its va
2f3e0 6c 75 65 20 6f 76 65 72 72 69 64 65 73 20 61 6e  lue overrides an
2f3f0 79 20 62 65 68 61 76 69 6f 72 20 72 65 71 75 65  y behavior reque
2f400 73 74 65 64 20 62 79 20 73 65 74 74 69 6e 67 0a  sted by setting.
2f410 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f 4f 50  **     SQLITE_OP
2f420 45 4e 5f 50 52 49 56 41 54 45 43 41 43 48 45 20  EN_PRIVATECACHE 
2f430 6f 72 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53  or SQLITE_OPEN_S
2f440 48 41 52 45 44 43 41 43 48 45 20 66 6c 61 67 2e  HAREDCACHE flag.
2f450 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e  .**.**  <li> <b>
2f460 70 73 6f 77 3c 2f 62 3e 3a 20 5e 54 68 65 20 70  psow</b>: ^The p
2f470 73 6f 77 20 70 61 72 61 6d 65 74 65 72 20 69 6e  sow parameter in
2f480 64 69 63 61 74 65 73 20 77 68 65 74 68 65 72 20  dicates whether 
2f490 6f 72 20 6e 6f 74 20 74 68 65 0a 2a 2a 20 20 20  or not the.**   
2f4a0 20 20 5b 70 6f 77 65 72 73 61 66 65 20 6f 76 65    [powersafe ove
2f4b0 72 77 72 69 74 65 5d 20 70 72 6f 70 65 72 74 79  rwrite] property
2f4c0 20 64 6f 65 73 20 6f 72 20 64 6f 65 73 20 6e 6f   does or does no
2f4d0 74 20 61 70 70 6c 79 20 74 6f 20 74 68 65 0a 2a  t apply to the.*
2f4e0 2a 20 20 20 20 20 73 74 6f 72 61 67 65 20 6d 65  *     storage me
2f4f0 64 69 61 20 6f 6e 20 77 68 69 63 68 20 74 68 65  dia on which the
2f500 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 72   database file r
2f510 65 73 69 64 65 73 2e 0a 2a 2a 0a 2a 2a 20 20 3c  esides..**.**  <
2f520 6c 69 3e 20 3c 62 3e 6e 6f 6c 6f 63 6b 3c 2f 62  li> <b>nolock</b
2f530 3e 3a 20 5e 54 68 65 20 6e 6f 6c 6f 63 6b 20 70  >: ^The nolock p
2f540 61 72 61 6d 65 74 65 72 20 69 73 20 61 20 62 6f  arameter is a bo
2f550 6f 6c 65 61 6e 20 71 75 65 72 79 20 70 61 72 61  olean query para
2f560 6d 65 74 65 72 0a 2a 2a 20 20 20 20 20 77 68 69  meter.**     whi
2f570 63 68 20 69 66 20 73 65 74 20 64 69 73 61 62 6c  ch if set disabl
2f580 65 73 20 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20  es file locking 
2f590 69 6e 20 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72  in rollback jour
2f5a0 6e 61 6c 20 6d 6f 64 65 73 2e 20 20 54 68 69 73  nal modes.  This
2f5b0 0a 2a 2a 20 20 20 20 20 69 73 20 75 73 65 66 75  .**     is usefu
2f5c0 6c 20 66 6f 72 20 61 63 63 65 73 73 69 6e 67 20  l for accessing 
2f5d0 61 20 64 61 74 61 62 61 73 65 20 6f 6e 20 61 20  a database on a 
2f5e0 66 69 6c 65 73 79 73 74 65 6d 20 74 68 61 74 20  filesystem that 
2f5f0 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 20 20 20 20  does not.**     
2f600 73 75 70 70 6f 72 74 20 6c 6f 63 6b 69 6e 67 2e  support locking.
2f610 20 20 43 61 75 74 69 6f 6e 3a 20 20 44 61 74 61    Caution:  Data
2f620 62 61 73 65 20 63 6f 72 72 75 70 74 69 6f 6e 20  base corruption 
2f630 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 66 20  might result if 
2f640 74 77 6f 0a 2a 2a 20 20 20 20 20 6f 72 20 6d 6f  two.**     or mo
2f650 72 65 20 70 72 6f 63 65 73 73 65 73 20 77 72 69  re processes wri
2f660 74 65 20 74 6f 20 74 68 65 20 73 61 6d 65 20 64  te to the same d
2f670 61 74 61 62 61 73 65 20 61 6e 64 20 61 6e 79 20  atabase and any 
2f680 6f 6e 65 20 6f 66 20 74 68 6f 73 65 0a 2a 2a 20  one of those.** 
2f690 20 20 20 20 70 72 6f 63 65 73 73 65 73 20 75 73      processes us
2f6a0 65 73 20 6e 6f 6c 6f 63 6b 3d 31 2e 0a 2a 2a 0a  es nolock=1..**.
2f6b0 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 69 6d 6d 75  **  <li> <b>immu
2f6c0 74 61 62 6c 65 3c 2f 62 3e 3a 20 5e 54 68 65 20  table</b>: ^The 
2f6d0 69 6d 6d 75 74 61 62 6c 65 20 70 61 72 61 6d 65  immutable parame
2f6e0 74 65 72 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e  ter is a boolean
2f6f0 20 71 75 65 72 79 0a 2a 2a 20 20 20 20 20 70 61   query.**     pa
2f700 72 61 6d 65 74 65 72 20 74 68 61 74 20 69 6e 64  rameter that ind
2f710 69 63 61 74 65 73 20 74 68 61 74 20 74 68 65 20  icates that the 
2f720 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69 73  database file is
2f730 20 73 74 6f 72 65 64 20 6f 6e 0a 2a 2a 20 20 20   stored on.**   
2f740 20 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69    read-only medi
2f750 61 2e 20 20 5e 57 68 65 6e 20 69 6d 6d 75 74 61  a.  ^When immuta
2f760 62 6c 65 20 69 73 20 73 65 74 2c 20 53 51 4c 69  ble is set, SQLi
2f770 74 65 20 61 73 73 75 6d 65 73 20 74 68 61 74 20  te assumes that 
2f780 74 68 65 0a 2a 2a 20 20 20 20 20 64 61 74 61 62  the.**     datab
2f790 61 73 65 20 66 69 6c 65 20 63 61 6e 6e 6f 74 20  ase file cannot 
2f7a0 62 65 20 63 68 61 6e 67 65 64 2c 20 65 76 65 6e  be changed, even
2f7b0 20 62 79 20 61 20 70 72 6f 63 65 73 73 20 77 69   by a process wi
2f7c0 74 68 20 68 69 67 68 65 72 0a 2a 2a 20 20 20 20  th higher.**    
2f7d0 20 70 72 69 76 69 6c 65 67 65 2c 20 61 6e 64 20   privilege, and 
2f7e0 73 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  so the database 
2f7f0 69 73 20 6f 70 65 6e 65 64 20 72 65 61 64 2d 6f  is opened read-o
2f800 6e 6c 79 20 61 6e 64 20 61 6c 6c 20 6c 6f 63 6b  nly and all lock
2f810 69 6e 67 0a 2a 2a 20 20 20 20 20 61 6e 64 20 63  ing.**     and c
2f820 68 61 6e 67 65 20 64 65 74 65 63 74 69 6f 6e 20  hange detection 
2f830 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20 43 61  is disabled.  Ca
2f840 75 74 69 6f 6e 3a 20 53 65 74 74 69 6e 67 20 74  ution: Setting t
2f850 68 65 20 69 6d 6d 75 74 61 62 6c 65 0a 2a 2a 20  he immutable.** 
2f860 20 20 20 20 70 72 6f 70 65 72 74 79 20 6f 6e 20      property on 
2f870 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  a database file 
2f880 74 68 61 74 20 64 6f 65 73 20 69 6e 20 66 61 63  that does in fac
2f890 74 20 63 68 61 6e 67 65 20 63 61 6e 20 72 65 73  t change can res
2f8a0 75 6c 74 0a 2a 2a 20 20 20 20 20 69 6e 20 69 6e  ult.**     in in
2f8b0 63 6f 72 72 65 63 74 20 71 75 65 72 79 20 72 65  correct query re
2f8c0 73 75 6c 74 73 20 61 6e 64 2f 6f 72 20 5b 53 51  sults and/or [SQ
2f8d0 4c 49 54 45 5f 43 4f 52 52 55 50 54 5d 20 65 72  LITE_CORRUPT] er
2f8e0 72 6f 72 73 2e 0a 2a 2a 20 20 20 20 20 53 65 65  rors..**     See
2f8f0 20 61 6c 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 49   also: [SQLITE_I
2f900 4f 43 41 50 5f 49 4d 4d 55 54 41 42 4c 45 5d 2e  OCAP_IMMUTABLE].
2f910 0a 2a 2a 20 20 20 20 20 20 20 0a 2a 2a 20 3c 2f  .**       .** </
2f920 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 53 70 65 63 69  ul>.**.** ^Speci
2f930 66 79 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77 6e  fying an unknown
2f940 20 70 61 72 61 6d 65 74 65 72 20 69 6e 20 74 68   parameter in th
2f950 65 20 71 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e  e query componen
2f960 74 20 6f 66 20 61 20 55 52 49 20 69 73 20 6e 6f  t of a URI is no
2f970 74 20 61 6e 0a 2a 2a 20 65 72 72 6f 72 2e 20 20  t an.** error.  
2f980 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 20  Future versions 
2f990 6f 66 20 53 51 4c 69 74 65 20 6d 69 67 68 74 20  of SQLite might 
2f9a0 75 6e 64 65 72 73 74 61 6e 64 20 61 64 64 69 74  understand addit
2f9b0 69 6f 6e 61 6c 20 71 75 65 72 79 0a 2a 2a 20 70  ional query.** p
2f9c0 61 72 61 6d 65 74 65 72 73 2e 20 20 53 65 65 20  arameters.  See 
2f9d0 22 5b 71 75 65 72 79 20 70 61 72 61 6d 65 74 65  "[query paramete
2f9e0 72 73 20 77 69 74 68 20 73 70 65 63 69 61 6c 20  rs with special 
2f9f0 6d 65 61 6e 69 6e 67 20 74 6f 20 53 51 4c 69 74  meaning to SQLit
2fa00 65 5d 22 20 66 6f 72 0a 2a 2a 20 61 64 64 69 74  e]" for.** addit
2fa10 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
2fa20 6e 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20 66  n..**.** [[URI f
2fa30 69 6c 65 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73  ilename examples
2fa40 5d 5d 20 3c 68 33 3e 55 52 49 20 66 69 6c 65 6e  ]] <h3>URI filen
2fa50 61 6d 65 20 65 78 61 6d 70 6c 65 73 3c 2f 68 33  ame examples</h3
2fa60 3e 0a 2a 2a 0a 2a 2a 20 3c 74 61 62 6c 65 20 62  >.**.** <table b
2fa70 6f 72 64 65 72 3d 22 31 22 20 61 6c 69 67 6e 3d  order="1" align=
2fa80 63 65 6e 74 65 72 20 63 65 6c 6c 70 61 64 64 69  center cellpaddi
2fa90 6e 67 3d 35 3e 0a 2a 2a 20 3c 74 72 3e 3c 74 68  ng=5>.** <tr><th
2faa0 3e 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 20  > URI filenames 
2fab0 3c 74 68 3e 20 52 65 73 75 6c 74 73 0a 2a 2a 20  <th> Results.** 
2fac0 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61  <tr><td> file:da
2fad0 74 61 2e 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20  ta.db <td> .**  
2fae0 20 20 20 20 20 20 20 20 4f 70 65 6e 20 74 68 65          Open the
2faf0 20 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20   file "data.db" 
2fb00 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  in the current d
2fb10 69 72 65 63 74 6f 72 79 2e 0a 2a 2a 20 3c 74 72  irectory..** <tr
2fb20 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65  ><td> file:/home
2fb30 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 3c 62 72  /fred/data.db<br
2fb40 3e 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 66 69  >.**          fi
2fb50 6c 65 3a 2f 2f 2f 68 6f 6d 65 2f 66 72 65 64 2f  le:///home/fred/
2fb60 64 61 74 61 2e 64 62 20 3c 62 72 3e 20 0a 2a 2a  data.db <br> .**
2fb70 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a 2f            file:/
2fb80 2f 6c 6f 63 61 6c 68 6f 73 74 2f 68 6f 6d 65 2f  /localhost/home/
2fb90 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 62 72  fred/data.db <br
2fba0 3e 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20  > <td> .**      
2fbb0 20 20 20 20 4f 70 65 6e 20 74 68 65 20 64 61 74      Open the dat
2fbc0 61 62 61 73 65 20 66 69 6c 65 20 22 2f 68 6f 6d  abase file "/hom
2fbd0 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 22 2e  e/fred/data.db".
2fbe0 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c  .** <tr><td> fil
2fbf0 65 3a 2f 2f 64 61 72 6b 73 74 61 72 2f 68 6f 6d  e://darkstar/hom
2fc00 65 2f 66 72 65 64 2f 64 61 74 61 2e 64 62 20 3c  e/fred/data.db <
2fc10 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  td> .**         
2fc20 20 41 6e 20 65 72 72 6f 72 2e 20 22 64 61 72 6b   An error. "dark
2fc30 73 74 61 72 22 20 69 73 20 6e 6f 74 20 61 20 72  star" is not a r
2fc40 65 63 6f 67 6e 69 7a 65 64 20 61 75 74 68 6f 72  ecognized author
2fc50 69 74 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 20  ity..** <tr><td 
2fc60 73 74 79 6c 65 3d 22 77 68 69 74 65 2d 73 70 61  style="white-spa
2fc70 63 65 3a 6e 6f 77 72 61 70 22 3e 20 0a 2a 2a 20  ce:nowrap"> .** 
2fc80 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f           file://
2fc90 2f 43 3a 2f 44 6f 63 75 6d 65 6e 74 73 25 32 30  /C:/Documents%20
2fca0 61 6e 64 25 32 30 53 65 74 74 69 6e 67 73 2f 66  and%20Settings/f
2fcb0 72 65 64 2f 44 65 73 6b 74 6f 70 2f 64 61 74 61  red/Desktop/data
2fcc0 2e 64 62 0a 2a 2a 20 20 20 20 20 3c 74 64 3e 20  .db.**     <td> 
2fcd0 57 69 6e 64 6f 77 73 20 6f 6e 6c 79 3a 20 4f 70  Windows only: Op
2fce0 65 6e 20 74 68 65 20 66 69 6c 65 20 22 64 61 74  en the file "dat
2fcf0 61 2e 64 62 22 20 6f 6e 20 66 72 65 64 27 73 20  a.db" on fred's 
2fd00 64 65 73 6b 74 6f 70 20 6f 6e 20 64 72 69 76 65  desktop on drive
2fd10 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 43 3a 2e  .**          C:.
2fd20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 25   Note that the %
2fd30 32 30 20 65 73 63 61 70 69 6e 67 20 69 6e 20 74  20 escaping in t
2fd40 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 6e  his example is n
2fd50 6f 74 20 73 74 72 69 63 74 6c 79 20 0a 2a 2a 20  ot strictly .** 
2fd60 20 20 20 20 20 20 20 20 20 6e 65 63 65 73 73 61           necessa
2fd70 72 79 20 2d 20 73 70 61 63 65 20 63 68 61 72 61  ry - space chara
2fd80 63 74 65 72 73 20 63 61 6e 20 62 65 20 75 73 65  cters can be use
2fd90 64 20 6c 69 74 65 72 61 6c 6c 79 0a 2a 2a 20 20  d literally.**  
2fda0 20 20 20 20 20 20 20 20 69 6e 20 55 52 49 20 66          in URI f
2fdb0 69 6c 65 6e 61 6d 65 73 2e 0a 2a 2a 20 3c 74 72  ilenames..** <tr
2fdc0 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e  ><td> file:data.
2fdd0 64 62 3f 6d 6f 64 65 3d 72 6f 26 63 61 63 68 65  db?mode=ro&cache
2fde0 3d 70 72 69 76 61 74 65 20 3c 74 64 3e 20 0a 2a  =private <td> .*
2fdf0 2a 20 20 20 20 20 20 20 20 20 20 4f 70 65 6e 20  *          Open 
2fe00 66 69 6c 65 20 22 64 61 74 61 2e 64 62 22 20 69  file "data.db" i
2fe10 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69  n the current di
2fe20 72 65 63 74 6f 72 79 20 66 6f 72 20 72 65 61 64  rectory for read
2fe30 2d 6f 6e 6c 79 20 61 63 63 65 73 73 2e 0a 2a 2a  -only access..**
2fe40 20 20 20 20 20 20 20 20 20 20 52 65 67 61 72 64            Regard
2fe50 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20  less of whether 
2fe60 6f 72 20 6e 6f 74 20 73 68 61 72 65 64 2d 63 61  or not shared-ca
2fe70 63 68 65 20 6d 6f 64 65 20 69 73 20 65 6e 61 62  che mode is enab
2fe80 6c 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20  led by.**       
2fe90 20 20 20 64 65 66 61 75 6c 74 2c 20 75 73 65 20     default, use 
2fea0 61 20 70 72 69 76 61 74 65 20 63 61 63 68 65 2e  a private cache.
2feb0 0a 2a 2a 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c  .** <tr><td> fil
2fec0 65 3a 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74  e:/home/fred/dat
2fed0 61 2e 64 62 3f 76 66 73 3d 75 6e 69 78 2d 64 6f  a.db?vfs=unix-do
2fee0 74 66 69 6c 65 20 3c 74 64 3e 0a 2a 2a 20 20 20  tfile <td>.**   
2fef0 20 20 20 20 20 20 20 4f 70 65 6e 20 66 69 6c 65         Open file
2ff00 20 22 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74   "/home/fred/dat
2ff10 61 2e 64 62 22 2e 20 55 73 65 20 74 68 65 20 73  a.db". Use the s
2ff20 70 65 63 69 61 6c 20 56 46 53 20 22 75 6e 69 78  pecial VFS "unix
2ff30 2d 64 6f 74 66 69 6c 65 22 0a 2a 2a 20 20 20 20  -dotfile".**    
2ff40 20 20 20 20 20 20 74 68 61 74 20 75 73 65 73 20        that uses 
2ff50 64 6f 74 2d 66 69 6c 65 73 20 69 6e 20 70 6c 61  dot-files in pla
2ff60 63 65 20 6f 66 20 70 6f 73 69 78 20 61 64 76 69  ce of posix advi
2ff70 73 6f 72 79 20 6c 6f 63 6b 69 6e 67 2e 0a 2a 2a  sory locking..**
2ff80 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64   <tr><td> file:d
2ff90 61 74 61 2e 64 62 3f 6d 6f 64 65 3d 72 65 61 64  ata.db?mode=read
2ffa0 6f 6e 6c 79 20 3c 74 64 3e 20 0a 2a 2a 20 20 20  only <td> .**   
2ffb0 20 20 20 20 20 20 20 41 6e 20 65 72 72 6f 72 2e         An error.
2ffc0 20 22 72 65 61 64 6f 6e 6c 79 22 20 69 73 20 6e   "readonly" is n
2ffd0 6f 74 20 61 20 76 61 6c 69 64 20 6f 70 74 69 6f  ot a valid optio
2ffe0 6e 20 66 6f 72 20 74 68 65 20 22 6d 6f 64 65 22  n for the "mode"
2fff0 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 3c   parameter..** <
30000 2f 74 61 62 6c 65 3e 0a 2a 2a 0a 2a 2a 20 5e 55  /table>.**.** ^U
30010 52 49 20 68 65 78 61 64 65 63 69 6d 61 6c 20 65  RI hexadecimal e
30020 73 63 61 70 65 20 73 65 71 75 65 6e 63 65 73 20  scape sequences 
30030 28 25 48 48 29 20 61 72 65 20 73 75 70 70 6f 72  (%HH) are suppor
30040 74 65 64 20 77 69 74 68 69 6e 20 74 68 65 20 70  ted within the p
30050 61 74 68 20 61 6e 64 0a 2a 2a 20 71 75 65 72 79  ath and.** query
30060 20 63 6f 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61   components of a
30070 20 55 52 49 2e 20 41 20 68 65 78 61 64 65 63 69   URI. A hexadeci
30080 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75 65  mal escape seque
30090 6e 63 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 20  nce consists of 
300a0 61 0a 2a 2a 20 70 65 72 63 65 6e 74 20 73 69 67  a.** percent sig
300b0 6e 20 2d 20 22 25 22 20 2d 20 66 6f 6c 6c 6f 77  n - "%" - follow
300c0 65 64 20 62 79 20 65 78 61 63 74 6c 79 20 74 77  ed by exactly tw
300d0 6f 20 68 65 78 61 64 65 63 69 6d 61 6c 20 64 69  o hexadecimal di
300e0 67 69 74 73 20 0a 2a 2a 20 73 70 65 63 69 66 79  gits .** specify
300f0 69 6e 67 20 61 6e 20 6f 63 74 65 74 20 76 61 6c  ing an octet val
30100 75 65 2e 20 5e 42 65 66 6f 72 65 20 74 68 65 20  ue. ^Before the 
30110 70 61 74 68 20 6f 72 20 71 75 65 72 79 20 63 6f  path or query co
30120 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 0a 2a 2a  mponents of a.**
30130 20 55 52 49 20 66 69 6c 65 6e 61 6d 65 20 61 72   URI filename ar
30140 65 20 69 6e 74 65 72 70 72 65 74 65 64 2c 20 74  e interpreted, t
30150 68 65 79 20 61 72 65 20 65 6e 63 6f 64 65 64 20  hey are encoded 
30160 75 73 69 6e 67 20 55 54 46 2d 38 20 61 6e 64 20  using UTF-8 and 
30170 61 6c 6c 20 0a 2a 2a 20 68 65 78 61 64 65 63 69  all .** hexadeci
30180 6d 61 6c 20 65 73 63 61 70 65 20 73 65 71 75 65  mal escape seque
30190 6e 63 65 73 20 72 65 70 6c 61 63 65 64 20 62 79  nces replaced by
301a0 20 61 20 73 69 6e 67 6c 65 20 62 79 74 65 20 63   a single byte c
301b0 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 0a 2a 2a  ontaining the.**
301c0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f   corresponding o
301d0 63 74 65 74 2e 20 49 66 20 74 68 69 73 20 70 72  ctet. If this pr
301e0 6f 63 65 73 73 20 67 65 6e 65 72 61 74 65 73 20  ocess generates 
301f0 61 6e 20 69 6e 76 61 6c 69 64 20 55 54 46 2d 38  an invalid UTF-8
30200 20 65 6e 63 6f 64 69 6e 67 2c 0a 2a 2a 20 74 68   encoding,.** th
30210 65 20 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e  e results are un
30220 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c  defined..**.** <
30230 62 3e 4e 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77  b>Note to Window
30240 73 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20 54 68  s users:</b>  Th
30250 65 20 65 6e 63 6f 64 69 6e 67 20 75 73 65 64 20  e encoding used 
30260 66 6f 72 20 74 68 65 20 66 69 6c 65 6e 61 6d 65  for the filename
30270 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20 6f 66 20   argument.** of 
30280 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61  sqlite3_open() a
30290 6e 64 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  nd sqlite3_open_
302a0 76 32 28 29 20 6d 75 73 74 20 62 65 20 55 54 46  v2() must be UTF
302b0 2d 38 2c 20 6e 6f 74 20 77 68 61 74 65 76 65 72  -8, not whatever
302c0 0a 2a 2a 20 63 6f 64 65 70 61 67 65 20 69 73 20  .** codepage is 
302d0 63 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65  currently define
302e0 64 2e 20 20 46 69 6c 65 6e 61 6d 65 73 20 63 6f  d.  Filenames co
302f0 6e 74 61 69 6e 69 6e 67 20 69 6e 74 65 72 6e 61  ntaining interna
30300 74 69 6f 6e 61 6c 0a 2a 2a 20 63 68 61 72 61 63  tional.** charac
30310 74 65 72 73 20 6d 75 73 74 20 62 65 20 63 6f 6e  ters must be con
30320 76 65 72 74 65 64 20 74 6f 20 55 54 46 2d 38 20  verted to UTF-8 
30330 70 72 69 6f 72 20 74 6f 20 70 61 73 73 69 6e 67  prior to passing
30340 20 74 68 65 6d 20 69 6e 74 6f 0a 2a 2a 20 73 71   them into.** sq
30350 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20  lite3_open() or 
30360 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
30370 29 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65  )..**.** <b>Note
30380 20 74 6f 20 57 69 6e 64 6f 77 73 20 52 75 6e 74   to Windows Runt
30390 69 6d 65 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20  ime users:</b>  
303a0 54 68 65 20 74 65 6d 70 6f 72 61 72 79 20 64 69  The temporary di
303b0 72 65 63 74 6f 72 79 20 6d 75 73 74 20 62 65 20  rectory must be 
303c0 73 65 74 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20  set.** prior to 
303d0 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f  calling sqlite3_
303e0 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69 74 65  open() or sqlite
303f0 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 20 4f 74  3_open_v2().  Ot
30400 68 65 72 77 69 73 65 2c 20 76 61 72 69 6f 75 73  herwise, various
30410 0a 2a 2a 20 66 65 61 74 75 72 65 73 20 74 68 61  .** features tha
30420 74 20 72 65 71 75 69 72 65 20 74 68 65 20 75 73  t require the us
30430 65 20 6f 66 20 74 65 6d 70 6f 72 61 72 79 20 66  e of temporary f
30440 69 6c 65 73 20 6d 61 79 20 66 61 69 6c 2e 0a 2a  iles may fail..*
30450 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b  *.** See also: [
30460 73 71 6c 69 74 65 33 5f 74 65 6d 70 5f 64 69 72  sqlite3_temp_dir
30470 65 63 74 6f 72 79 5d 0a 2a 2f 0a 53 51 4c 49 54  ectory].*/.SQLIT
30480 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
30490 33 5f 6f 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20  3_open(.  const 
304a0 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20  char *filename, 
304b0 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69    /* Database fi
304c0 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38 29 20 2a  lename (UTF-8) *
304d0 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70  /.  sqlite3 **pp
304e0 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f  Db          /* O
304f0 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61  UT: SQLite db ha
30500 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54  ndle */.);.SQLIT
30510 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
30520 33 5f 6f 70 65 6e 31 36 28 0a 20 20 63 6f 6e 73  3_open16(.  cons
30530 74 20 76 6f 69 64 20 2a 66 69 6c 65 6e 61 6d 65  t void *filename
30540 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20  ,   /* Database 
30550 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 31 36  filename (UTF-16
30560 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a  ) */.  sqlite3 *
30570 2a 70 70 44 62 20 20 20 20 20 20 20 20 20 20 2f  *ppDb          /
30580 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62  * OUT: SQLite db
30590 20 68 61 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51   handle */.);.SQ
305a0 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
305b0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 0a 20 20  ite3_open_v2(.  
305c0 63 6f 6e 73 74 20 63 68 61 72 20 2a 66 69 6c 65  const char *file
305d0 6e 61 6d 65 2c 20 20 20 2f 2a 20 44 61 74 61 62  name,   /* Datab
305e0 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 28 55 54  ase filename (UT
305f0 46 2d 38 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65  F-8) */.  sqlite
30600 33 20 2a 2a 70 70 44 62 2c 20 20 20 20 20 20 20  3 **ppDb,       
30610 20 20 2f 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65    /* OUT: SQLite
30620 20 64 62 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20   db handle */.  
30630 69 6e 74 20 66 6c 61 67 73 2c 20 20 20 20 20 20  int flags,      
30640 20 20 20 20 20 20 20 20 2f 2a 20 46 6c 61 67 73          /* Flags
30650 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
30660 20 2a 7a 56 66 73 20 20 20 20 20 20 20 20 2f 2a   *zVfs        /*
30670 20 4e 61 6d 65 20 6f 66 20 56 46 53 20 6d 6f 64   Name of VFS mod
30680 75 6c 65 20 74 6f 20 75 73 65 20 2a 2f 0a 29 3b  ule to use */.);
30690 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
306a0 3a 20 4f 62 74 61 69 6e 20 56 61 6c 75 65 73 20  : Obtain Values 
306b0 46 6f 72 20 55 52 49 20 50 61 72 61 6d 65 74 65  For URI Paramete
306c0 72 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 61  rs.**.** These a
306d0 72 65 20 75 74 69 6c 69 74 79 20 72 6f 75 74 69  re utility routi
306e0 6e 65 73 2c 20 75 73 65 66 75 6c 20 74 6f 20 56  nes, useful to V
306f0 46 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  FS implementatio
30700 6e 73 2c 20 74 68 61 74 20 63 68 65 63 6b 0a 2a  ns, that check.*
30710 2a 20 74 6f 20 73 65 65 20 69 66 20 61 20 64 61  * to see if a da
30720 74 61 62 61 73 65 20 66 69 6c 65 20 77 61 73 20  tabase file was 
30730 61 20 55 52 49 20 74 68 61 74 20 63 6f 6e 74 61  a URI that conta
30740 69 6e 65 64 20 61 20 73 70 65 63 69 66 69 63 20  ined a specific 
30750 71 75 65 72 79 20 0a 2a 2a 20 70 61 72 61 6d 65  query .** parame
30760 74 65 72 2c 20 61 6e 64 20 69 66 20 73 6f 20 6f  ter, and if so o
30770 62 74 61 69 6e 73 20 74 68 65 20 76 61 6c 75 65  btains the value
30780 20 6f 66 20 74 68 61 74 20 71 75 65 72 79 20 70   of that query p
30790 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20  arameter..**.** 
307a0 49 66 20 46 20 69 73 20 74 68 65 20 64 61 74 61  If F is the data
307b0 62 61 73 65 20 66 69 6c 65 6e 61 6d 65 20 70 6f  base filename po
307c0 69 6e 74 65 72 20 70 61 73 73 65 64 20 69 6e 74  inter passed int
307d0 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 20 6d 65  o the xOpen() me
307e0 74 68 6f 64 20 6f 66 20 0a 2a 2a 20 61 20 56 46  thod of .** a VF
307f0 53 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  S implementation
30800 20 77 68 65 6e 20 74 68 65 20 66 6c 61 67 73 20   when the flags 
30810 70 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70  parameter to xOp
30820 65 6e 28 29 20 68 61 73 20 6f 6e 65 20 6f 72 20  en() has one or 
30830 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68 65 20  .** more of the 
30840 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49  [SQLITE_OPEN_URI
30850 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45  ] or [SQLITE_OPE
30860 4e 5f 4d 41 49 4e 5f 44 42 5d 20 62 69 74 73 20  N_MAIN_DB] bits 
30870 73 65 74 20 61 6e 64 0a 2a 2a 20 50 20 69 73 20  set and.** P is 
30880 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
30890 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 2c  query parameter,
308a0 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   then.** sqlite3
308b0 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28 46  _uri_parameter(F
308c0 2c 50 29 20 72 65 74 75 72 6e 73 20 74 68 65 20  ,P) returns the 
308d0 76 61 6c 75 65 20 6f 66 20 74 68 65 20 50 0a 2a  value of the P.*
308e0 2a 20 70 61 72 61 6d 65 74 65 72 20 69 66 20 69  * parameter if i
308f0 74 20 65 78 69 73 74 73 20 6f 72 20 61 20 4e 55  t exists or a NU
30900 4c 4c 20 70 6f 69 6e 74 65 72 20 69 66 20 50 20  LL pointer if P 
30910 64 6f 65 73 20 6e 6f 74 20 61 70 70 65 61 72 20  does not appear 
30920 61 73 20 61 20 0a 2a 2a 20 71 75 65 72 79 20 70  as a .** query p
30930 61 72 61 6d 65 74 65 72 20 6f 6e 20 46 2e 20 20  arameter on F.  
30940 49 66 20 50 20 69 73 20 61 20 71 75 65 72 79 20  If P is a query 
30950 70 61 72 61 6d 65 74 65 72 20 6f 66 20 46 0a 2a  parameter of F.*
30960 2a 20 68 61 73 20 6e 6f 20 65 78 70 6c 69 63 69  * has no explici
30970 74 20 76 61 6c 75 65 2c 20 74 68 65 6e 20 73 71  t value, then sq
30980 6c 69 74 65 33 5f 75 72 69 5f 70 61 72 61 6d 65  lite3_uri_parame
30990 74 65 72 28 46 2c 50 29 20 72 65 74 75 72 6e 73  ter(F,P) returns
309a0 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  .** a pointer to
309b0 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67   an empty string
309c0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ..**.** The sqli
309d0 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28  te3_uri_boolean(
309e0 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65 20 61  F,P,B) routine a
309f0 73 73 75 6d 65 73 20 74 68 61 74 20 50 20 69 73  ssumes that P is
30a00 20 61 20 62 6f 6f 6c 65 61 6e 0a 2a 2a 20 70 61   a boolean.** pa
30a10 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75  rameter and retu
30a20 72 6e 73 20 74 72 75 65 20 28 31 29 20 6f 72 20  rns true (1) or 
30a30 66 61 6c 73 65 20 28 30 29 20 61 63 63 6f 72 64  false (0) accord
30a40 69 6e 67 20 74 6f 20 74 68 65 20 76 61 6c 75 65  ing to the value
30a50 0a 2a 2a 20 6f 66 20 50 2e 20 20 54 68 65 20 73  .** of P.  The s
30a60 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65  qlite3_uri_boole
30a70 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e  an(F,P,B) routin
30a80 65 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 28  e returns true (
30a90 31 29 20 69 66 20 74 68 65 0a 2a 2a 20 76 61 6c  1) if the.** val
30aa0 75 65 20 6f 66 20 71 75 65 72 79 20 70 61 72 61  ue of query para
30ab0 6d 65 74 65 72 20 50 20 69 73 20 6f 6e 65 20 6f  meter P is one o
30ac0 66 20 22 79 65 73 22 2c 20 22 74 72 75 65 22 2c  f "yes", "true",
30ad0 20 6f 72 20 22 6f 6e 22 20 69 6e 20 61 6e 79 0a   or "on" in any.
30ae0 2a 2a 20 63 61 73 65 20 6f 72 20 69 66 20 74 68  ** case or if th
30af0 65 20 76 61 6c 75 65 20 62 65 67 69 6e 73 20 77  e value begins w
30b00 69 74 68 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20 6e  ith a non-zero n
30b10 75 6d 62 65 72 2e 20 20 54 68 65 20 0a 2a 2a 20  umber.  The .** 
30b20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
30b30 65 61 6e 28 46 2c 50 2c 42 29 20 72 6f 75 74 69  ean(F,P,B) routi
30b40 6e 65 73 20 72 65 74 75 72 6e 73 20 66 61 6c 73  nes returns fals
30b50 65 20 28 30 29 20 69 66 20 74 68 65 20 76 61 6c  e (0) if the val
30b60 75 65 20 6f 66 0a 2a 2a 20 71 75 65 72 79 20 70  ue of.** query p
30b70 61 72 61 6d 65 74 65 72 20 50 20 69 73 20 6f 6e  arameter P is on
30b80 65 20 6f 66 20 22 6e 6f 22 2c 20 22 66 61 6c 73  e of "no", "fals
30b90 65 22 2c 20 6f 72 20 22 6f 66 66 22 20 69 6e 20  e", or "off" in 
30ba0 61 6e 79 20 63 61 73 65 20 6f 72 0a 2a 2a 20 69  any case or.** i
30bb0 66 20 74 68 65 20 76 61 6c 75 65 20 62 65 67 69  f the value begi
30bc0 6e 73 20 77 69 74 68 20 61 20 6e 75 6d 65 72 69  ns with a numeri
30bd0 63 20 7a 65 72 6f 2e 20 20 49 66 20 50 20 69 73  c zero.  If P is
30be0 20 6e 6f 74 20 61 20 71 75 65 72 79 0a 2a 2a 20   not a query.** 
30bf0 70 61 72 61 6d 65 74 65 72 20 6f 6e 20 46 20 6f  parameter on F o
30c00 72 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 6f  r if the value o
30c10 66 20 50 20 69 73 20 64 6f 65 73 20 6e 6f 74 20  f P is does not 
30c20 6d 61 74 63 68 20 61 6e 79 20 6f 66 20 74 68 65  match any of the
30c30 0a 2a 2a 20 61 62 6f 76 65 2c 20 74 68 65 6e 20  .** above, then 
30c40 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c  sqlite3_uri_bool
30c50 65 61 6e 28 46 2c 50 2c 42 29 20 72 65 74 75 72  ean(F,P,B) retur
30c60 6e 73 20 28 42 21 3d 30 29 2e 0a 2a 2a 0a 2a 2a  ns (B!=0)..**.**
30c70 20 54 68 65 20 73 71 6c 69 74 65 33 5f 75 72 69   The sqlite3_uri
30c80 5f 69 6e 74 36 34 28 46 2c 50 2c 44 29 20 72 6f  _int64(F,P,D) ro
30c90 75 74 69 6e 65 20 63 6f 6e 76 65 72 74 73 20 74  utine converts t
30ca0 68 65 20 76 61 6c 75 65 20 6f 66 20 50 20 69 6e  he value of P in
30cb0 74 6f 20 61 0a 2a 2a 20 36 34 2d 62 69 74 20 73  to a.** 64-bit s
30cc0 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 61 6e  igned integer an
30cd0 64 20 72 65 74 75 72 6e 73 20 74 68 61 74 20 69  d returns that i
30ce0 6e 74 65 67 65 72 2c 20 6f 72 20 44 20 69 66 20  nteger, or D if 
30cf0 50 20 64 6f 65 73 20 6e 6f 74 0a 2a 2a 20 65 78  P does not.** ex
30d00 69 73 74 2e 20 20 49 66 20 74 68 65 20 76 61 6c  ist.  If the val
30d10 75 65 20 6f 66 20 50 20 69 73 20 73 6f 6d 65 74  ue of P is somet
30d20 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e 20  hing other than 
30d30 61 6e 20 69 6e 74 65 67 65 72 2c 20 74 68 65 6e  an integer, then
30d40 0a 2a 2a 20 7a 65 72 6f 20 69 73 20 72 65 74 75  .** zero is retu
30d50 72 6e 65 64 2e 0a 2a 2a 20 0a 2a 2a 20 49 66 20  rned..** .** If 
30d60 46 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  F is a NULL poin
30d70 74 65 72 2c 20 74 68 65 6e 20 73 71 6c 69 74 65  ter, then sqlite
30d80 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72 28  3_uri_parameter(
30d90 46 2c 50 29 20 72 65 74 75 72 6e 73 20 4e 55 4c  F,P) returns NUL
30da0 4c 20 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33  L and.** sqlite3
30db0 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50  _uri_boolean(F,P
30dc0 2c 42 29 20 72 65 74 75 72 6e 73 20 42 2e 20 20  ,B) returns B.  
30dd0 49 66 20 46 20 69 73 20 6e 6f 74 20 61 20 4e 55  If F is not a NU
30de0 4c 4c 20 70 6f 69 6e 74 65 72 20 61 6e 64 0a 2a  LL pointer and.*
30df0 2a 20 69 73 20 6e 6f 74 20 61 20 64 61 74 61 62  * is not a datab
30e00 61 73 65 20 66 69 6c 65 20 70 61 74 68 6e 61 6d  ase file pathnam
30e10 65 20 70 6f 69 6e 74 65 72 20 74 68 61 74 20 53  e pointer that S
30e20 51 4c 69 74 65 20 70 61 73 73 65 64 20 69 6e 74  QLite passed int
30e30 6f 20 74 68 65 20 78 4f 70 65 6e 0a 2a 2a 20 56  o the xOpen.** V
30e40 46 53 20 6d 65 74 68 6f 64 2c 20 74 68 65 6e 20  FS method, then 
30e50 74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20  the behavior of 
30e60 74 68 69 73 20 72 6f 75 74 69 6e 65 20 69 73 20  this routine is 
30e70 75 6e 64 65 66 69 6e 65 64 20 61 6e 64 20 70 72  undefined and pr
30e80 6f 62 61 62 6c 79 0a 2a 2a 20 75 6e 64 65 73 69  obably.** undesi
30e90 72 61 62 6c 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45  rable..*/.SQLITE
30ea0 5f 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20  _API const char 
30eb0 2a 73 71 6c 69 74 65 33 5f 75 72 69 5f 70 61 72  *sqlite3_uri_par
30ec0 61 6d 65 74 65 72 28 63 6f 6e 73 74 20 63 68 61  ameter(const cha
30ed0 72 20 2a 7a 46 69 6c 65 6e 61 6d 65 2c 20 63 6f  r *zFilename, co
30ee0 6e 73 74 20 63 68 61 72 20 2a 7a 50 61 72 61 6d  nst char *zParam
30ef0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
30f00 74 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 62 6f  t sqlite3_uri_bo
30f10 6f 6c 65 61 6e 28 63 6f 6e 73 74 20 63 68 61 72  olean(const char
30f20 20 2a 7a 46 69 6c 65 2c 20 63 6f 6e 73 74 20 63   *zFile, const c
30f30 68 61 72 20 2a 7a 50 61 72 61 6d 2c 20 69 6e 74  har *zParam, int
30f40 20 62 44 65 66 61 75 6c 74 29 3b 0a 53 51 4c 49   bDefault);.SQLI
30f50 54 45 5f 41 50 49 20 73 71 6c 69 74 65 33 5f 69  TE_API sqlite3_i
30f60 6e 74 36 34 20 73 71 6c 69 74 65 33 5f 75 72 69  nt64 sqlite3_uri
30f70 5f 69 6e 74 36 34 28 63 6f 6e 73 74 20 63 68 61  _int64(const cha
30f80 72 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a 2c  r*, const char*,
30f90 20 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 29 3b   sqlite3_int64);
30fa0 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  .../*.** CAPI3RE
30fb0 46 3a 20 45 72 72 6f 72 20 43 6f 64 65 73 20 41  F: Error Codes A
30fc0 6e 64 20 4d 65 73 73 61 67 65 73 0a 2a 2a 20 4d  nd Messages.** M
30fd0 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
30fe0 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20 6d 6f 73  *.** ^If the mos
30ff0 74 20 72 65 63 65 6e 74 20 73 71 6c 69 74 65 33  t recent sqlite3
31000 5f 2a 20 41 50 49 20 63 61 6c 6c 20 61 73 73 6f  _* API call asso
31010 63 69 61 74 65 64 20 77 69 74 68 20 0a 2a 2a 20  ciated with .** 
31020 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
31030 74 69 6f 6e 5d 20 44 20 66 61 69 6c 65 64 2c 20  tion] D failed, 
31040 74 68 65 6e 20 74 68 65 20 73 71 6c 69 74 65 33  then the sqlite3
31050 5f 65 72 72 63 6f 64 65 28 44 29 20 69 6e 74 65  _errcode(D) inte
31060 72 66 61 63 65 0a 2a 2a 20 72 65 74 75 72 6e 73  rface.** returns
31070 20 74 68 65 20 6e 75 6d 65 72 69 63 20 5b 72 65   the numeric [re
31080 73 75 6c 74 20 63 6f 64 65 5d 20 6f 72 20 5b 65  sult code] or [e
31090 78 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63  xtended result c
310a0 6f 64 65 5d 20 66 6f 72 20 74 68 61 74 0a 2a 2a  ode] for that.**
310b0 20 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 5e 54   API call..** ^T
310c0 68 65 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e  he sqlite3_exten
310d0 64 65 64 5f 65 72 72 63 6f 64 65 28 29 0a 2a 2a  ded_errcode().**
310e0 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 68   interface is th
310f0 65 20 73 61 6d 65 20 65 78 63 65 70 74 20 74 68  e same except th
31100 61 74 20 69 74 20 61 6c 77 61 79 73 20 72 65 74  at it always ret
31110 75 72 6e 73 20 74 68 65 20 0a 2a 2a 20 5b 65 78  urns the .** [ex
31120 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
31130 64 65 5d 20 65 76 65 6e 20 77 68 65 6e 20 65 78  de] even when ex
31140 74 65 6e 64 65 64 20 72 65 73 75 6c 74 20 63 6f  tended result co
31150 64 65 73 20 61 72 65 0a 2a 2a 20 64 69 73 61 62  des are.** disab
31160 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 76  led..**.** The v
31170 61 6c 75 65 73 20 72 65 74 75 72 6e 65 64 20 62  alues returned b
31180 79 20 73 71 6c 69 74 65 33 5f 65 72 72 63 6f 64  y sqlite3_errcod
31190 65 28 29 20 61 6e 64 2f 6f 72 0a 2a 2a 20 73 71  e() and/or.** sq
311a0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
311b0 72 72 63 6f 64 65 28 29 20 6d 69 67 68 74 20 63  rrcode() might c
311c0 68 61 6e 67 65 20 77 69 74 68 20 65 61 63 68 20  hange with each 
311d0 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a 20 45 78 63  API call..** Exc
311e0 65 70 74 2c 20 74 68 65 72 65 20 61 72 65 20 73  ept, there are s
311f0 6f 6d 65 20 69 6e 74 65 72 66 61 63 65 73 20 74  ome interfaces t
31200 68 61 74 20 61 72 65 20 67 75 61 72 61 6e 74 65  hat are guarante
31210 65 64 20 74 6f 20 6e 65 76 65 72 0a 2a 2a 20 63  ed to never.** c
31220 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20  hange the value 
31230 6f 66 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64  of the error cod
31240 65 2e 20 20 54 68 65 20 65 72 72 6f 72 2d 63 6f  e.  The error-co
31250 64 65 20 70 72 65 73 65 72 76 69 6e 67 0a 2a 2a  de preserving.**
31260 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 3a   interfaces are:
31270 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  .**.** <ul>.** <
31280 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65 72 72 63  li> sqlite3_errc
31290 6f 64 65 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71  ode().** <li> sq
312a0 6c 69 74 65 33 5f 65 78 74 65 6e 64 65 64 5f 65  lite3_extended_e
312b0 72 72 63 6f 64 65 28 29 0a 2a 2a 20 3c 6c 69 3e  rrcode().** <li>
312c0 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
312d0 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65  ).** <li> sqlite
312e0 33 5f 65 72 72 6d 73 67 31 36 28 29 0a 2a 2a 20  3_errmsg16().** 
312f0 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  </ul>.**.** ^The
31300 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28   sqlite3_errmsg(
31310 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 65 72  ) and sqlite3_er
31320 72 6d 73 67 31 36 28 29 20 72 65 74 75 72 6e 20  rmsg16() return 
31330 45 6e 67 6c 69 73 68 2d 6c 61 6e 67 75 61 67 65  English-language
31340 0a 2a 2a 20 74 65 78 74 20 74 68 61 74 20 64 65  .** text that de
31350 73 63 72 69 62 65 73 20 74 68 65 20 65 72 72 6f  scribes the erro
31360 72 2c 20 61 73 20 65 69 74 68 65 72 20 55 54 46  r, as either UTF
31370 2d 38 20 6f 72 20 55 54 46 2d 31 36 20 72 65 73  -8 or UTF-16 res
31380 70 65 63 74 69 76 65 6c 79 2e 0a 2a 2a 20 5e 28  pectively..** ^(
31390 4d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74  Memory to hold t
313a0 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  he error message
313b0 20 73 74 72 69 6e 67 20 69 73 20 6d 61 6e 61 67   string is manag
313c0 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 2e 0a 2a  ed internally..*
313d0 2a 20 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f  * The applicatio
313e0 6e 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20  n does not need 
313f0 74 6f 20 77 6f 72 72 79 20 61 62 6f 75 74 20 66  to worry about f
31400 72 65 65 69 6e 67 20 74 68 65 20 72 65 73 75 6c  reeing the resul
31410 74 2e 0a 2a 2a 20 48 6f 77 65 76 65 72 2c 20 74  t..** However, t
31420 68 65 20 65 72 72 6f 72 20 73 74 72 69 6e 67 20  he error string 
31430 6d 69 67 68 74 20 62 65 20 6f 76 65 72 77 72 69  might be overwri
31440 74 74 65 6e 20 6f 72 20 64 65 61 6c 6c 6f 63 61  tten or dealloca
31450 74 65 64 20 62 79 0a 2a 2a 20 73 75 62 73 65 71  ted by.** subseq
31460 75 65 6e 74 20 63 61 6c 6c 73 20 74 6f 20 6f 74  uent calls to ot
31470 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74 65 72  her SQLite inter
31480 66 61 63 65 20 66 75 6e 63 74 69 6f 6e 73 2e 29  face functions.)
31490 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ^.**.** ^The sql
314a0 69 74 65 33 5f 65 72 72 73 74 72 28 29 20 69 6e  ite3_errstr() in
314b0 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
314c0 74 68 65 20 45 6e 67 6c 69 73 68 2d 6c 61 6e 67  the English-lang
314d0 75 61 67 65 20 74 65 78 74 0a 2a 2a 20 74 68 61  uage text.** tha
314e0 74 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20  t describes the 
314f0 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d 2c 20 61  [result code], a
31500 73 20 55 54 46 2d 38 2e 0a 2a 2a 20 5e 28 4d 65  s UTF-8..** ^(Me
31510 6d 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68 65  mory to hold the
31520 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 73   error message s
31530 74 72 69 6e 67 20 69 73 20 6d 61 6e 61 67 65 64  tring is managed
31540 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 61   internally.** a
31550 6e 64 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 66  nd must not be f
31560 72 65 65 64 20 62 79 20 74 68 65 20 61 70 70 6c  reed by the appl
31570 69 63 61 74 69 6f 6e 29 5e 2e 0a 2a 2a 0a 2a 2a  ication)^..**.**
31580 20 57 68 65 6e 20 74 68 65 20 73 65 72 69 61 6c   When the serial
31590 69 7a 65 64 20 5b 74 68 72 65 61 64 69 6e 67 20  ized [threading 
315a0 6d 6f 64 65 5d 20 69 73 20 69 6e 20 75 73 65 2c  mode] is in use,
315b0 20 69 74 20 6d 69 67 68 74 20 62 65 20 74 68 65   it might be the
315c0 0a 2a 2a 20 63 61 73 65 20 74 68 61 74 20 61 20  .** case that a 
315d0 73 65 63 6f 6e 64 20 65 72 72 6f 72 20 6f 63 63  second error occ
315e0 75 72 73 20 6f 6e 20 61 20 73 65 70 61 72 61 74  urs on a separat
315f0 65 20 74 68 72 65 61 64 20 69 6e 20 62 65 74 77  e thread in betw
31600 65 65 6e 0a 2a 2a 20 74 68 65 20 74 69 6d 65 20  een.** the time 
31610 6f 66 20 74 68 65 20 66 69 72 73 74 20 65 72 72  of the first err
31620 6f 72 20 61 6e 64 20 74 68 65 20 63 61 6c 6c 20  or and the call 
31630 74 6f 20 74 68 65 73 65 20 69 6e 74 65 72 66 61  to these interfa
31640 63 65 73 2e 0a 2a 2a 20 57 68 65 6e 20 74 68 61  ces..** When tha
31650 74 20 68 61 70 70 65 6e 73 2c 20 74 68 65 20 73  t happens, the s
31660 65 63 6f 6e 64 20 65 72 72 6f 72 20 77 69 6c 6c  econd error will
31670 20 62 65 20 72 65 70 6f 72 74 65 64 20 73 69 6e   be reported sin
31680 63 65 20 74 68 65 73 65 0a 2a 2a 20 69 6e 74 65  ce these.** inte
31690 72 66 61 63 65 73 20 61 6c 77 61 79 73 20 72 65  rfaces always re
316a0 70 6f 72 74 20 74 68 65 20 6d 6f 73 74 20 72 65  port the most re
316b0 63 65 6e 74 20 72 65 73 75 6c 74 2e 20 20 54 6f  cent result.  To
316c0 20 61 76 6f 69 64 0a 2a 2a 20 74 68 69 73 2c 20   avoid.** this, 
316d0 65 61 63 68 20 74 68 72 65 61 64 20 63 61 6e 20  each thread can 
316e0 6f 62 74 61 69 6e 20 65 78 63 6c 75 73 69 76 65  obtain exclusive
316f0 20 75 73 65 20 6f 66 20 74 68 65 20 5b 64 61 74   use of the [dat
31700 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
31710 5d 20 44 0a 2a 2a 20 62 79 20 69 6e 76 6f 6b 69  ] D.** by invoki
31720 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  ng [sqlite3_mute
31730 78 5f 65 6e 74 65 72 5d 28 5b 73 71 6c 69 74 65  x_enter]([sqlite
31740 33 5f 64 62 5f 6d 75 74 65 78 5d 28 44 29 29 20  3_db_mutex](D)) 
31750 62 65 66 6f 72 65 20 62 65 67 69 6e 6e 69 6e 67  before beginning
31760 0a 2a 2a 20 74 6f 20 75 73 65 20 44 20 61 6e 64  .** to use D and
31770 20 69 6e 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74   invoking [sqlit
31780 65 33 5f 6d 75 74 65 78 5f 6c 65 61 76 65 5d 28  e3_mutex_leave](
31790 5b 73 71 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65  [sqlite3_db_mute
317a0 78 5d 28 44 29 29 20 61 66 74 65 72 0a 2a 2a 20  x](D)) after.** 
317b0 61 6c 6c 20 63 61 6c 6c 73 20 74 6f 20 74 68 65  all calls to the
317c0 20 69 6e 74 65 72 66 61 63 65 73 20 6c 69 73 74   interfaces list
317d0 65 64 20 68 65 72 65 20 61 72 65 20 63 6f 6d 70  ed here are comp
317e0 6c 65 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  leted..**.** If 
317f0 61 6e 20 69 6e 74 65 72 66 61 63 65 20 66 61 69  an interface fai
31800 6c 73 20 77 69 74 68 20 53 51 4c 49 54 45 5f 4d  ls with SQLITE_M
31810 49 53 55 53 45 2c 20 74 68 61 74 20 6d 65 61 6e  ISUSE, that mean
31820 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 0a  s the interface.
31830 2a 2a 20 77 61 73 20 69 6e 76 6f 6b 65 64 20 69  ** was invoked i
31840 6e 63 6f 72 72 65 63 74 6c 79 20 62 79 20 74 68  ncorrectly by th
31850 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 20 20  e application.  
31860 49 6e 20 74 68 61 74 20 63 61 73 65 2c 20 74 68  In that case, th
31870 65 0a 2a 2a 20 65 72 72 6f 72 20 63 6f 64 65 20  e.** error code 
31880 61 6e 64 20 6d 65 73 73 61 67 65 20 6d 61 79 20  and message may 
31890 6f 72 20 6d 61 79 20 6e 6f 74 20 62 65 20 73 65  or may not be se
318a0 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  t..*/.SQLITE_API
318b0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 72 72   int sqlite3_err
318c0 63 6f 64 65 28 73 71 6c 69 74 65 33 20 2a 64 62  code(sqlite3 *db
318d0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
318e0 74 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  t sqlite3_extend
318f0 65 64 5f 65 72 72 63 6f 64 65 28 73 71 6c 69 74  ed_errcode(sqlit
31900 65 33 20 2a 64 62 29 3b 0a 53 51 4c 49 54 45 5f  e3 *db);.SQLITE_
31910 41 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  API const char *
31920 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28 73  sqlite3_errmsg(s
31930 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c 49 54 45  qlite3*);.SQLITE
31940 5f 41 50 49 20 63 6f 6e 73 74 20 76 6f 69 64 20  _API const void 
31950 2a 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31  *sqlite3_errmsg1
31960 36 28 73 71 6c 69 74 65 33 2a 29 3b 0a 53 51 4c  6(sqlite3*);.SQL
31970 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68  ITE_API const ch
31980 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72 72 73  ar *sqlite3_errs
31990 74 72 28 69 6e 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20  tr(int);../*.** 
319a0 43 41 50 49 33 52 45 46 3a 20 50 72 65 70 61 72  CAPI3REF: Prepar
319b0 65 64 20 53 74 61 74 65 6d 65 6e 74 20 4f 62 6a  ed Statement Obj
319c0 65 63 74 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a  ect.** KEYWORDS:
319d0 20 7b 70 72 65 70 61 72 65 64 20 73 74 61 74 65   {prepared state
319e0 6d 65 6e 74 7d 20 7b 70 72 65 70 61 72 65 64 20  ment} {prepared 
319f0 73 74 61 74 65 6d 65 6e 74 73 7d 0a 2a 2a 0a 2a  statements}.**.*
31a00 2a 20 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66  * An instance of
31a10 20 74 68 69 73 20 6f 62 6a 65 63 74 20 72 65 70   this object rep
31a20 72 65 73 65 6e 74 73 20 61 20 73 69 6e 67 6c 65  resents a single
31a30 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74   SQL statement t
31a40 68 61 74 0a 2a 2a 20 68 61 73 20 62 65 65 6e 20  hat.** has been 
31a50 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 62 69  compiled into bi
31a60 6e 61 72 79 20 66 6f 72 6d 20 61 6e 64 20 69 73  nary form and is
31a70 20 72 65 61 64 79 20 74 6f 20 62 65 20 65 76 61   ready to be eva
31a80 6c 75 61 74 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  luated..**.** Th
31a90 69 6e 6b 20 6f 66 20 65 61 63 68 20 53 51 4c 20  ink of each SQL 
31aa0 73 74 61 74 65 6d 65 6e 74 20 61 73 20 61 20 73  statement as a s
31ab0 65 70 61 72 61 74 65 20 63 6f 6d 70 75 74 65 72  eparate computer
31ac0 20 70 72 6f 67 72 61 6d 2e 20 20 54 68 65 0a 2a   program.  The.*
31ad0 2a 20 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20 74  * original SQL t
31ae0 65 78 74 20 69 73 20 73 6f 75 72 63 65 20 63 6f  ext is source co
31af0 64 65 2e 20 20 41 20 70 72 65 70 61 72 65 64 20  de.  A prepared 
31b00 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a 65 63 74  statement object
31b10 20 0a 2a 2a 20 69 73 20 74 68 65 20 63 6f 6d 70   .** is the comp
31b20 69 6c 65 64 20 6f 62 6a 65 63 74 20 63 6f 64 65  iled object code
31b30 2e 20 20 41 6c 6c 20 53 51 4c 20 6d 75 73 74 20  .  All SQL must 
31b40 62 65 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 74  be converted int
31b50 6f 20 61 0a 2a 2a 20 70 72 65 70 61 72 65 64 20  o a.** prepared 
31b60 73 74 61 74 65 6d 65 6e 74 20 62 65 66 6f 72 65  statement before
31b70 20 69 74 20 63 61 6e 20 62 65 20 72 75 6e 2e 0a   it can be run..
31b80 2a 2a 0a 2a 2a 20 54 68 65 20 6c 69 66 65 2d 63  **.** The life-c
31b90 79 63 6c 65 20 6f 66 20 61 20 70 72 65 70 61 72  ycle of a prepar
31ba0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a  ed statement obj
31bb0 65 63 74 20 75 73 75 61 6c 6c 79 20 67 6f 65 73  ect usually goes
31bc0 20 6c 69 6b 65 20 74 68 69 73 3a 0a 2a 2a 0a 2a   like this:.**.*
31bd0 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 20 43  * <ol>.** <li> C
31be0 72 65 61 74 65 20 74 68 65 20 70 72 65 70 61 72  reate the prepar
31bf0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62 6a  ed statement obj
31c00 65 63 74 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ect using [sqlit
31c10 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d  e3_prepare_v2()]
31c20 2e 0a 2a 2a 20 3c 6c 69 3e 20 42 69 6e 64 20 76  ..** <li> Bind v
31c30 61 6c 75 65 73 20 74 6f 20 5b 70 61 72 61 6d 65  alues to [parame
31c40 74 65 72 73 5d 20 75 73 69 6e 67 20 74 68 65 20  ters] using the 
31c50 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29  sqlite3_bind_*()
31c60 0a 2a 2a 20 20 20 20 20 20 69 6e 74 65 72 66 61  .**      interfa
31c70 63 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 52 75 6e  ces..** <li> Run
31c80 20 74 68 65 20 53 51 4c 20 62 79 20 63 61 6c 6c   the SQL by call
31c90 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73 74 65  ing [sqlite3_ste
31ca0 70 28 29 5d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65  p()] one or more
31cb0 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20   times..** <li> 
31cc0 52 65 73 65 74 20 74 68 65 20 70 72 65 70 61 72  Reset the prepar
31cd0 65 64 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69  ed statement usi
31ce0 6e 67 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65  ng [sqlite3_rese
31cf0 74 28 29 5d 20 74 68 65 6e 20 67 6f 20 62 61 63  t()] then go bac
31d00 6b 0a 2a 2a 20 20 20 20 20 20 74 6f 20 73 74 65  k.**      to ste
31d10 70 20 32 2e 20 20 44 6f 20 74 68 69 73 20 7a 65  p 2.  Do this ze
31d20 72 6f 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73  ro or more times
31d30 2e 0a 2a 2a 20 3c 6c 69 3e 20 44 65 73 74 72 6f  ..** <li> Destro
31d40 79 20 74 68 65 20 6f 62 6a 65 63 74 20 75 73 69  y the object usi
31d50 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61  ng [sqlite3_fina
31d60 6c 69 7a 65 28 29 5d 2e 0a 2a 2a 20 3c 2f 6f 6c  lize()]..** </ol
31d70 3e 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72  >.*/.typedef str
31d80 75 63 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  uct sqlite3_stmt
31d90 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 3b 0a 0a   sqlite3_stmt;..
31da0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
31db0 52 75 6e 2d 74 69 6d 65 20 4c 69 6d 69 74 73 0a  Run-time Limits.
31dc0 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
31dd0 65 33 0a 2a 2a 0a 2a 2a 20 5e 28 54 68 69 73 20  e3.**.** ^(This 
31de0 69 6e 74 65 72 66 61 63 65 20 61 6c 6c 6f 77 73  interface allows
31df0 20 74 68 65 20 73 69 7a 65 20 6f 66 20 76 61 72   the size of var
31e00 69 6f 75 73 20 63 6f 6e 73 74 72 75 63 74 73 20  ious constructs 
31e10 74 6f 20 62 65 20 6c 69 6d 69 74 65 64 0a 2a 2a  to be limited.**
31e20 20 6f 6e 20 61 20 63 6f 6e 6e 65 63 74 69 6f 6e   on a connection
31e30 20 62 79 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62   by connection b
31e40 61 73 69 73 2e 20 20 54 68 65 20 66 69 72 73 74  asis.  The first
31e50 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68   parameter is th
31e60 65 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63  e.** [database c
31e70 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77 68 6f 73 65  onnection] whose
31e80 20 6c 69 6d 69 74 20 69 73 20 74 6f 20 62 65 20   limit is to be 
31e90 73 65 74 20 6f 72 20 71 75 65 72 69 65 64 2e 20  set or queried. 
31ea0 20 54 68 65 0a 2a 2a 20 73 65 63 6f 6e 64 20 70   The.** second p
31eb0 61 72 61 6d 65 74 65 72 20 69 73 20 6f 6e 65 20  arameter is one 
31ec0 6f 66 20 74 68 65 20 5b 6c 69 6d 69 74 20 63 61  of the [limit ca
31ed0 74 65 67 6f 72 69 65 73 5d 20 74 68 61 74 20 64  tegories] that d
31ee0 65 66 69 6e 65 20 61 0a 2a 2a 20 63 6c 61 73 73  efine a.** class
31ef0 20 6f 66 20 63 6f 6e 73 74 72 75 63 74 73 20 74   of constructs t
31f00 6f 20 62 65 20 73 69 7a 65 20 6c 69 6d 69 74 65  o be size limite
31f10 64 2e 20 20 54 68 65 20 74 68 69 72 64 20 70 61  d.  The third pa
31f20 72 61 6d 65 74 65 72 20 69 73 20 74 68 65 0a 2a  rameter is the.*
31f30 2a 20 6e 65 77 20 6c 69 6d 69 74 20 66 6f 72 20  * new limit for 
31f40 74 68 61 74 20 63 6f 6e 73 74 72 75 63 74 2e 29  that construct.)
31f50 5e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ^.**.** ^If the 
31f60 6e 65 77 20 6c 69 6d 69 74 20 69 73 20 61 20 6e  new limit is a n
31f70 65 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2c 20  egative number, 
31f80 74 68 65 20 6c 69 6d 69 74 20 69 73 20 75 6e 63  the limit is unc
31f90 68 61 6e 67 65 64 2e 0a 2a 2a 20 5e 28 46 6f 72  hanged..** ^(For
31fa0 20 65 61 63 68 20 6c 69 6d 69 74 20 63 61 74 65   each limit cate
31fb0 67 6f 72 79 20 53 51 4c 49 54 45 5f 4c 49 4d 49  gory SQLITE_LIMI
31fc0 54 5f 3c 69 3e 4e 41 4d 45 3c 2f 69 3e 20 74 68  T_<i>NAME</i> th
31fd0 65 72 65 20 69 73 20 61 20 0a 2a 2a 20 5b 6c 69  ere is a .** [li
31fe0 6d 69 74 73 20 7c 20 68 61 72 64 20 75 70 70 65  mits | hard uppe
31ff0 72 20 62 6f 75 6e 64 5d 0a 2a 2a 20 73 65 74 20  r bound].** set 
32000 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
32010 62 79 20 61 20 43 20 70 72 65 70 72 6f 63 65 73  by a C preproces
32020 73 6f 72 20 6d 61 63 72 6f 20 63 61 6c 6c 65 64  sor macro called
32030 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20 7c 20 53 51  .** [limits | SQ
32040 4c 49 54 45 5f 4d 41 58 5f 3c 69 3e 4e 41 4d 45  LITE_MAX_<i>NAME
32050 3c 2f 69 3e 5d 2e 0a 2a 2a 20 28 54 68 65 20 22  </i>]..** (The "
32060 5f 4c 49 4d 49 54 5f 22 20 69 6e 20 74 68 65 20  _LIMIT_" in the 
32070 6e 61 6d 65 20 69 73 20 63 68 61 6e 67 65 64 20  name is changed 
32080 74 6f 20 22 5f 4d 41 58 5f 22 2e 29 29 5e 0a 2a  to "_MAX_".))^.*
32090 2a 20 5e 41 74 74 65 6d 70 74 73 20 74 6f 20 69  * ^Attempts to i
320a0 6e 63 72 65 61 73 65 20 61 20 6c 69 6d 69 74 20  ncrease a limit 
320b0 61 62 6f 76 65 20 69 74 73 20 68 61 72 64 20 75  above its hard u
320c0 70 70 65 72 20 62 6f 75 6e 64 20 61 72 65 0a 2a  pper bound are.*
320d0 2a 20 73 69 6c 65 6e 74 6c 79 20 74 72 75 6e 63  * silently trunc
320e0 61 74 65 64 20 74 6f 20 74 68 65 20 68 61 72 64  ated to the hard
320f0 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 2a 2a   upper bound..**
32100 0a 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20  .** ^Regardless 
32110 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  of whether or no
32120 74 20 74 68 65 20 6c 69 6d 69 74 20 77 61 73 20  t the limit was 
32130 63 68 61 6e 67 65 64 2c 20 74 68 65 20 0a 2a 2a  changed, the .**
32140 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28   [sqlite3_limit(
32150 29 5d 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  )] interface ret
32160 75 72 6e 73 20 74 68 65 20 70 72 69 6f 72 20 76  urns the prior v
32170 61 6c 75 65 20 6f 66 20 74 68 65 20 6c 69 6d 69  alue of the limi
32180 74 2e 0a 2a 2a 20 5e 48 65 6e 63 65 2c 20 74 6f  t..** ^Hence, to
32190 20 66 69 6e 64 20 74 68 65 20 63 75 72 72 65 6e   find the curren
321a0 74 20 76 61 6c 75 65 20 6f 66 20 61 20 6c 69 6d  t value of a lim
321b0 69 74 20 77 69 74 68 6f 75 74 20 63 68 61 6e 67  it without chang
321c0 69 6e 67 20 69 74 2c 0a 2a 2a 20 73 69 6d 70 6c  ing it,.** simpl
321d0 79 20 69 6e 76 6f 6b 65 20 74 68 69 73 20 69 6e  y invoke this in
321e0 74 65 72 66 61 63 65 20 77 69 74 68 20 74 68 65  terface with the
321f0 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
32200 20 73 65 74 20 74 6f 20 2d 31 2e 0a 2a 2a 0a 2a   set to -1..**.*
32210 2a 20 52 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74  * Run-time limit
32220 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20 66  s are intended f
32230 6f 72 20 75 73 65 20 69 6e 20 61 70 70 6c 69 63  or use in applic
32240 61 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 6e 61  ations that mana
32250 67 65 0a 2a 2a 20 62 6f 74 68 20 74 68 65 69 72  ge.** both their
32260 20 6f 77 6e 20 69 6e 74 65 72 6e 61 6c 20 64 61   own internal da
32270 74 61 62 61 73 65 20 61 6e 64 20 61 6c 73 6f 20  tabase and also 
32280 64 61 74 61 62 61 73 65 73 20 74 68 61 74 20 61  databases that a
32290 72 65 20 63 6f 6e 74 72 6f 6c 6c 65 64 0a 2a 2a  re controlled.**
322a0 20 62 79 20 75 6e 74 72 75 73 74 65 64 20 65 78   by untrusted ex
322b0 74 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 2e 20  ternal sources. 
322c0 20 41 6e 20 65 78 61 6d 70 6c 65 20 61 70 70 6c   An example appl
322d0 69 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 62 65  ication might be
322e0 20 61 0a 2a 2a 20 77 65 62 20 62 72 6f 77 73 65   a.** web browse
322f0 72 20 74 68 61 74 20 68 61 73 20 69 74 73 20 6f  r that has its o
32300 77 6e 20 64 61 74 61 62 61 73 65 73 20 66 6f 72  wn databases for
32310 20 73 74 6f 72 69 6e 67 20 68 69 73 74 6f 72 79   storing history
32320 20 61 6e 64 0a 2a 2a 20 73 65 70 61 72 61 74 65   and.** separate
32330 20 64 61 74 61 62 61 73 65 73 20 63 6f 6e 74 72   databases contr
32340 6f 6c 6c 65 64 20 62 79 20 4a 61 76 61 53 63 72  olled by JavaScr
32350 69 70 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  ipt applications
32360 20 64 6f 77 6e 6c 6f 61 64 65 64 0a 2a 2a 20 6f   downloaded.** o
32370 66 66 20 74 68 65 20 49 6e 74 65 72 6e 65 74 2e  ff the Internet.
32380 20 20 54 68 65 20 69 6e 74 65 72 6e 61 6c 20 64    The internal d
32390 61 74 61 62 61 73 65 73 20 63 61 6e 20 62 65 20  atabases can be 
323a0 67 69 76 65 6e 20 74 68 65 0a 2a 2a 20 6c 61 72  given the.** lar
323b0 67 65 2c 20 64 65 66 61 75 6c 74 20 6c 69 6d 69  ge, default limi
323c0 74 73 2e 20 20 44 61 74 61 62 61 73 65 73 20 6d  ts.  Databases m
323d0 61 6e 61 67 65 64 20 62 79 20 65 78 74 65 72 6e  anaged by extern
323e0 61 6c 20 73 6f 75 72 63 65 73 20 63 61 6e 0a 2a  al sources can.*
323f0 2a 20 62 65 20 67 69 76 65 6e 20 6d 75 63 68 20  * be given much 
32400 73 6d 61 6c 6c 65 72 20 6c 69 6d 69 74 73 20 64  smaller limits d
32410 65 73 69 67 6e 65 64 20 74 6f 20 70 72 65 76 65  esigned to preve
32420 6e 74 20 61 20 64 65 6e 69 61 6c 20 6f 66 20 73  nt a denial of s
32430 65 72 76 69 63 65 0a 2a 2a 20 61 74 74 61 63 6b  ervice.** attack
32440 2e 20 20 44 65 76 65 6c 6f 70 65 72 73 20 6d 69  .  Developers mi
32450 67 68 74 20 61 6c 73 6f 20 77 61 6e 74 20 74 6f  ght also want to
32460 20 75 73 65 20 74 68 65 20 5b 73 71 6c 69 74 65   use the [sqlite
32470 33 5f 73 65 74 5f 61 75 74 68 6f 72 69 7a 65 72  3_set_authorizer
32480 28 29 5d 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  ()].** interface
32490 20 74 6f 20 66 75 72 74 68 65 72 20 63 6f 6e 74   to further cont
324a0 72 6f 6c 20 75 6e 74 72 75 73 74 65 64 20 53 51  rol untrusted SQ
324b0 4c 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66 20  L.  The size of 
324c0 74 68 65 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  the database.** 
324d0 63 72 65 61 74 65 64 20 62 79 20 61 6e 20 75 6e  created by an un
324e0 74 72 75 73 74 65 64 20 73 63 72 69 70 74 20 63  trusted script c
324f0 61 6e 20 62 65 20 63 6f 6e 74 61 69 6e 65 64 20  an be contained 
32500 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 6d 61  using the.** [ma
32510 78 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20 5b 50  x_page_count] [P
32520 52 41 47 4d 41 5d 2e 0a 2a 2a 0a 2a 2a 20 4e 65  RAGMA]..**.** Ne
32530 77 20 72 75 6e 2d 74 69 6d 65 20 6c 69 6d 69 74  w run-time limit
32540 20 63 61 74 65 67 6f 72 69 65 73 20 6d 61 79 20   categories may 
32550 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74 75  be added in futu
32560 72 65 20 72 65 6c 65 61 73 65 73 2e 0a 2a 2f 0a  re releases..*/.
32570 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
32580 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 73 71 6c  qlite3_limit(sql
32590 69 74 65 33 2a 2c 20 69 6e 74 20 69 64 2c 20 69  ite3*, int id, i
325a0 6e 74 20 6e 65 77 56 61 6c 29 3b 0a 0a 2f 2a 0a  nt newVal);../*.
325b0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 75 6e  ** CAPI3REF: Run
325c0 2d 54 69 6d 65 20 4c 69 6d 69 74 20 43 61 74 65  -Time Limit Cate
325d0 67 6f 72 69 65 73 0a 2a 2a 20 4b 45 59 57 4f 52  gories.** KEYWOR
325e0 44 53 3a 20 7b 6c 69 6d 69 74 20 63 61 74 65 67  DS: {limit categ
325f0 6f 72 79 7d 20 7b 2a 6c 69 6d 69 74 20 63 61 74  ory} {*limit cat
32600 65 67 6f 72 69 65 73 7d 0a 2a 2a 0a 2a 2a 20 54  egories}.**.** T
32610 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 64  hese constants d
32620 65 66 69 6e 65 20 76 61 72 69 6f 75 73 20 70 65  efine various pe
32630 72 66 6f 72 6d 61 6e 63 65 20 6c 69 6d 69 74 73  rformance limits
32640 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62 65 20  .** that can be 
32650 6c 6f 77 65 72 65 64 20 61 74 20 72 75 6e 2d 74  lowered at run-t
32660 69 6d 65 20 75 73 69 6e 67 20 5b 73 71 6c 69 74  ime using [sqlit
32670 65 33 5f 6c 69 6d 69 74 28 29 5d 2e 0a 2a 2a 20  e3_limit()]..** 
32680 54 68 65 20 73 79 6e 6f 70 73 69 73 20 6f 66 20  The synopsis of 
32690 74 68 65 20 6d 65 61 6e 69 6e 67 73 20 6f 66 20  the meanings of 
326a0 74 68 65 20 76 61 72 69 6f 75 73 20 6c 69 6d 69  the various limi
326b0 74 73 20 69 73 20 73 68 6f 77 6e 20 62 65 6c 6f  ts is shown belo
326c0 77 2e 0a 2a 2a 20 41 64 64 69 74 69 6f 6e 61 6c  w..** Additional
326d0 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
326e0 61 76 61 69 6c 61 62 6c 65 20 61 74 20 5b 6c 69  available at [li
326f0 6d 69 74 73 20 7c 20 4c 69 6d 69 74 73 20 69 6e  mits | Limits in
32700 20 53 51 4c 69 74 65 5d 2e 0a 2a 2a 0a 2a 2a 20   SQLite]..**.** 
32710 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  <dl>.** [[SQLITE
32720 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 5d 20  _LIMIT_LENGTH]] 
32730 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d  ^(<dt>SQLITE_LIM
32740 49 54 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a 2a  IT_LENGTH</dt>.*
32750 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75  * <dd>The maximu
32760 6d 20 73 69 7a 65 20 6f 66 20 61 6e 79 20 73 74  m size of any st
32770 72 69 6e 67 20 6f 72 20 42 4c 4f 42 20 6f 72 20  ring or BLOB or 
32780 74 61 62 6c 65 20 72 6f 77 2c 20 69 6e 20 62 79  table row, in by
32790 74 65 73 2e 3c 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  tes.<dd>)^.**.**
327a0 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
327b0 53 51 4c 5f 4c 45 4e 47 54 48 5d 5d 20 5e 28 3c  SQL_LENGTH]] ^(<
327c0 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
327d0 53 51 4c 5f 4c 45 4e 47 54 48 3c 2f 64 74 3e 0a  SQL_LENGTH</dt>.
327e0 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
327f0 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 61 6e 20  um length of an 
32800 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 69  SQL statement, i
32810 6e 20 62 79 74 65 73 2e 3c 2f 64 64 3e 29 5e 0a  n bytes.</dd>)^.
32820 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
32830 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d 5d 20 5e 28  IMIT_COLUMN]] ^(
32840 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54  <dt>SQLITE_LIMIT
32850 5f 43 4f 4c 55 4d 4e 3c 2f 64 74 3e 0a 2a 2a 20  _COLUMN</dt>.** 
32860 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
32870 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e  number of column
32880 73 20 69 6e 20 61 20 74 61 62 6c 65 20 64 65 66  s in a table def
32890 69 6e 69 74 69 6f 6e 20 6f 72 20 69 6e 20 74 68  inition or in th
328a0 65 0a 2a 2a 20 72 65 73 75 6c 74 20 73 65 74 20  e.** result set 
328b0 6f 66 20 61 20 5b 53 45 4c 45 43 54 5d 20 6f 72  of a [SELECT] or
328c0 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
328d0 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
328e0 6e 20 61 6e 20 69 6e 64 65 78 0a 2a 2a 20 6f 72  n an index.** or
328f0 20 69 6e 20 61 6e 20 4f 52 44 45 52 20 42 59 20   in an ORDER BY 
32900 6f 72 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  or GROUP BY clau
32910 73 65 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a  se.</dd>)^.**.**
32920 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f   [[SQLITE_LIMIT_
32930 45 58 50 52 5f 44 45 50 54 48 5d 5d 20 5e 28 3c  EXPR_DEPTH]] ^(<
32940 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
32950 45 58 50 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a  EXPR_DEPTH</dt>.
32960 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d  ** <dd>The maxim
32970 75 6d 20 64 65 70 74 68 20 6f 66 20 74 68 65 20  um depth of the 
32980 70 61 72 73 65 20 74 72 65 65 20 6f 6e 20 61 6e  parse tree on an
32990 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 64  y expression.</d
329a0 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  d>)^.**.** [[SQL
329b0 49 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55  ITE_LIMIT_COMPOU
329c0 4e 44 5f 53 45 4c 45 43 54 5d 5d 20 5e 28 3c 64  ND_SELECT]] ^(<d
329d0 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43  t>SQLITE_LIMIT_C
329e0 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 3c 2f  OMPOUND_SELECT</
329f0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
32a00 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66  aximum number of
32a10 20 74 65 72 6d 73 20 69 6e 20 61 20 63 6f 6d 70   terms in a comp
32a20 6f 75 6e 64 20 53 45 4c 45 43 54 20 73 74 61 74  ound SELECT stat
32a30 65 6d 65 6e 74 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a  ement.</dd>)^.**
32a40 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
32a50 49 54 5f 56 44 42 45 5f 4f 50 5d 5d 20 5e 28 3c  IT_VDBE_OP]] ^(<
32a60 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
32a70 56 44 42 45 5f 4f 50 3c 2f 64 74 3e 0a 2a 2a 20  VDBE_OP</dt>.** 
32a80 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
32a90 6e 75 6d 62 65 72 20 6f 66 20 69 6e 73 74 72 75  number of instru
32aa0 63 74 69 6f 6e 73 20 69 6e 20 61 20 76 69 72 74  ctions in a virt
32ab0 75 61 6c 20 6d 61 63 68 69 6e 65 20 70 72 6f 67  ual machine prog
32ac0 72 61 6d 0a 2a 2a 20 75 73 65 64 20 74 6f 20 69  ram.** used to i
32ad0 6d 70 6c 65 6d 65 6e 74 20 61 6e 20 53 51 4c 20  mplement an SQL 
32ae0 73 74 61 74 65 6d 65 6e 74 2e 20 20 49 66 20 5b  statement.  If [
32af0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
32b00 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 74 68 65 20  v2()] or.** the 
32b10 65 71 75 69 76 61 6c 65 6e 74 20 74 72 69 65 73  equivalent tries
32b20 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 73 70 61   to allocate spa
32b30 63 65 20 66 6f 72 20 6d 6f 72 65 20 74 68 61 6e  ce for more than
32b40 20 74 68 69 73 20 6d 61 6e 79 20 6f 70 63 6f 64   this many opcod
32b50 65 73 0a 2a 2a 20 69 6e 20 61 20 73 69 6e 67 6c  es.** in a singl
32b60 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
32b70 6d 65 6e 74 2c 20 61 6e 20 53 51 4c 49 54 45 5f  ment, an SQLITE_
32b80 4e 4f 4d 45 4d 20 65 72 72 6f 72 20 69 73 20 72  NOMEM error is r
32b90 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e 0a  eturned.</dd>)^.
32ba0 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c  **.** [[SQLITE_L
32bb0 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f 41 52  IMIT_FUNCTION_AR
32bc0 47 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  G]] ^(<dt>SQLITE
32bd0 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f  _LIMIT_FUNCTION_
32be0 41 52 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ARG</dt>.** <dd>
32bf0 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62  The maximum numb
32c00 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20  er of arguments 
32c10 6f 6e 20 61 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f  on a function.</
32c20 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  dd>)^.**.** [[SQ
32c30 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43  LITE_LIMIT_ATTAC
32c40 48 45 44 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49  HED]] ^(<dt>SQLI
32c50 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48 45  TE_LIMIT_ATTACHE
32c60 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  D</dt>.** <dd>Th
32c70 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  e maximum number
32c80 20 6f 66 20 5b 41 54 54 41 43 48 20 7c 20 61 74   of [ATTACH | at
32c90 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 73  tached databases
32ca0 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ].)^</dd>.**.** 
32cb0 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c  [[SQLITE_LIMIT_L
32cc0 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47  IKE_PATTERN_LENG
32cd0 54 48 5d 5d 0a 2a 2a 20 5e 28 3c 64 74 3e 53 51  TH]].** ^(<dt>SQ
32ce0 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f  LITE_LIMIT_LIKE_
32cf0 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48 3c 2f  PATTERN_LENGTH</
32d00 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
32d10 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
32d20 20 74 68 65 20 70 61 74 74 65 72 6e 20 61 72 67   the pattern arg
32d30 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 5b 4c 49  ument to the [LI
32d40 4b 45 5d 20 6f 72 0a 2a 2a 20 5b 47 4c 4f 42 5d  KE] or.** [GLOB]
32d50 20 6f 70 65 72 61 74 6f 72 73 2e 3c 2f 64 64 3e   operators.</dd>
32d60 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
32d70 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45  E_LIMIT_VARIABLE
32d80 5f 4e 55 4d 42 45 52 5d 5d 0a 2a 2a 20 5e 28 3c  _NUMBER]].** ^(<
32d90 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  dt>SQLITE_LIMIT_
32da0 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 3c  VARIABLE_NUMBER<
32db0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20  /dt>.** <dd>The 
32dc0 6d 61 78 69 6d 75 6d 20 69 6e 64 65 78 20 6e 75  maximum index nu
32dd0 6d 62 65 72 20 6f 66 20 61 6e 79 20 5b 70 61 72  mber of any [par
32de0 61 6d 65 74 65 72 5d 20 69 6e 20 61 6e 20 53 51  ameter] in an SQ
32df0 4c 20 73 74 61 74 65 6d 65 6e 74 2e 29 5e 0a 2a  L statement.)^.*
32e00 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
32e10 4d 49 54 5f 54 52 49 47 47 45 52 5f 44 45 50 54  MIT_TRIGGER_DEPT
32e20 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  H]] ^(<dt>SQLITE
32e30 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f 44  _LIMIT_TRIGGER_D
32e40 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  EPTH</dt>.** <dd
32e50 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 64 65 70  >The maximum dep
32e60 74 68 20 6f 66 20 72 65 63 75 72 73 69 6f 6e 20  th of recursion 
32e70 66 6f 72 20 74 72 69 67 67 65 72 73 2e 3c 2f 64  for triggers.</d
32e80 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  d>)^.**.** [[SQL
32e90 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b 45 52  ITE_LIMIT_WORKER
32ea0 5f 54 48 52 45 41 44 53 5d 5d 20 5e 28 3c 64 74  _THREADS]] ^(<dt
32eb0 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  >SQLITE_LIMIT_WO
32ec0 52 4b 45 52 5f 54 48 52 45 41 44 53 3c 2f 64 74  RKER_THREADS</dt
32ed0 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78  >.** <dd>The max
32ee0 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 61  imum number of a
32ef0 75 78 69 6c 69 61 72 79 20 77 6f 72 6b 65 72 20  uxiliary worker 
32f00 74 68 72 65 61 64 73 20 74 68 61 74 20 61 20 73  threads that a s
32f10 69 6e 67 6c 65 0a 2a 2a 20 5b 70 72 65 70 61 72  ingle.** [prepar
32f20 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6d 61  ed statement] ma
32f30 79 20 73 74 61 72 74 2e 3c 2f 64 64 3e 29 5e 0a  y start.</dd>)^.
32f40 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66  ** </dl>.*/.#def
32f50 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54  ine SQLITE_LIMIT
32f60 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20 20 20  _LENGTH         
32f70 20 20 20 20 20 20 20 20 20 20 20 30 0a 23 64 65             0.#de
32f80 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49  fine SQLITE_LIMI
32f90 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 20 20 20 20  T_SQL_LENGTH    
32fa0 20 20 20 20 20 20 20 20 20 20 20 20 31 0a 23 64              1.#d
32fb0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d  efine SQLITE_LIM
32fc0 49 54 5f 43 4f 4c 55 4d 4e 20 20 20 20 20 20 20  IT_COLUMN       
32fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 32 0a 23               2.#
32fe0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 49  define SQLITE_LI
32ff0 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 20 20  MIT_EXPR_DEPTH  
33000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 0a                3.
33010 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
33020 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45  IMIT_COMPOUND_SE
33030 4c 45 43 54 20 20 20 20 20 20 20 20 20 20 20 34  LECT           4
33040 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
33050 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50 20 20 20  LIMIT_VDBE_OP   
33060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33070 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  5.#define SQLITE
33080 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f 4e 5f  _LIMIT_FUNCTION_
33090 41 52 47 20 20 20 20 20 20 20 20 20 20 20 20 20  ARG             
330a0 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   6.#define SQLIT
330b0 45 5f 4c 49 4d 49 54 5f 41 54 54 41 43 48 45 44  E_LIMIT_ATTACHED
330c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330d0 20 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    7.#define SQLI
330e0 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b 45 5f 50 41  TE_LIMIT_LIKE_PA
330f0 54 54 45 52 4e 5f 4c 45 4e 47 54 48 20 20 20 20  TTERN_LENGTH    
33100 20 20 20 38 0a 23 64 65 66 69 6e 65 20 53 51 4c     8.#define SQL
33110 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49 41 42  ITE_LIMIT_VARIAB
33120 4c 45 5f 4e 55 4d 42 45 52 20 20 20 20 20 20 20  LE_NUMBER       
33130 20 20 20 20 39 0a 23 64 65 66 69 6e 65 20 53 51      9.#define SQ
33140 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47  LITE_LIMIT_TRIGG
33150 45 52 5f 44 45 50 54 48 20 20 20 20 20 20 20 20  ER_DEPTH        
33160 20 20 20 20 31 30 0a 23 64 65 66 69 6e 65 20 53      10.#define S
33170 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f 52 4b  QLITE_LIMIT_WORK
33180 45 52 5f 54 48 52 45 41 44 53 20 20 20 20 20 20  ER_THREADS      
33190 20 20 20 20 20 31 31 0a 0a 2f 2a 0a 2a 2a 20 43       11../*.** C
331a0 41 50 49 33 52 45 46 3a 20 50 72 65 70 61 72 65  API3REF: Prepare
331b0 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a 20 54 68 65   Flags.**.** The
331c0 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 64 65 66  se constants def
331d0 69 6e 65 20 76 61 72 69 6f 75 73 20 66 6c 61 67  ine various flag
331e0 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 70 61  s that can be pa
331f0 73 73 65 64 20 69 6e 74 6f 0a 2a 2a 20 22 70 72  ssed into.** "pr
33200 65 70 46 6c 61 67 73 22 20 70 61 72 61 6d 65 74  epFlags" paramet
33210 65 72 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  er of the [sqlit
33220 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d  e3_prepare_v3()]
33230 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33   and.** [sqlite3
33240 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29 5d  _prepare16_v3()]
33250 20 69 6e 74 65 72 66 61 63 65 73 2e 0a 2a 2a 0a   interfaces..**.
33260 2a 2a 20 4e 65 77 20 66 6c 61 67 73 20 6d 61 79  ** New flags may
33270 20 62 65 20 61 64 64 65 64 20 69 6e 20 66 75 74   be added in fut
33280 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66 20  ure releases of 
33290 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a 2a 20 3c 64  SQLite..**.** <d
332a0 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 50  l>.** [[SQLITE_P
332b0 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e  REPARE_PERSISTEN
332c0 54 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  T]] ^(<dt>SQLITE
332d0 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49 53 54  _PREPARE_PERSIST
332e0 45 4e 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ENT</dt>.** <dd>
332f0 54 68 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41  The SQLITE_PREPA
33300 52 45 5f 50 45 52 53 49 53 54 45 4e 54 20 66 6c  RE_PERSISTENT fl
33310 61 67 20 69 73 20 61 20 68 69 6e 74 20 74 6f 20  ag is a hint to 
33320 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65  the query planne
33330 72 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 70 72  r.** that the pr
33340 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33350 20 77 69 6c 6c 20 62 65 20 72 65 74 61 69 6e 65   will be retaine
33360 64 20 66 6f 72 20 61 20 6c 6f 6e 67 20 74 69 6d  d for a long tim
33370 65 20 61 6e 64 0a 2a 2a 20 70 72 6f 62 61 62 6c  e and.** probabl
33380 79 20 72 65 75 73 65 64 20 6d 61 6e 79 20 74 69  y reused many ti
33390 6d 65 73 2e 29 5e 20 5e 57 69 74 68 6f 75 74 20  mes.)^ ^Without 
333a0 74 68 69 73 20 66 6c 61 67 2c 20 5b 73 71 6c 69  this flag, [sqli
333b0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29  te3_prepare_v3()
333c0 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71 6c 69 74 65  ].** and [sqlite
333d0 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
333e0 5d 20 61 73 73 75 6d 65 20 74 68 61 74 20 74 68  ] assume that th
333f0 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
33400 6d 65 6e 74 20 77 69 6c 6c 20 0a 2a 2a 20 62 65  ment will .** be
33410 20 75 73 65 64 20 6a 75 73 74 20 6f 6e 63 65 20   used just once 
33420 6f 72 20 61 74 20 6d 6f 73 74 20 61 20 66 65 77  or at most a few
33430 20 74 69 6d 65 73 20 61 6e 64 20 74 68 65 6e 20   times and then 
33440 64 65 73 74 72 6f 79 65 64 20 75 73 69 6e 67 0a  destroyed using.
33450 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61  ** [sqlite3_fina
33460 6c 69 7a 65 28 29 5d 20 72 65 6c 61 74 69 76 65  lize()] relative
33470 6c 79 20 73 6f 6f 6e 2e 20 54 68 65 20 63 75 72  ly soon. The cur
33480 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74  rent implementat
33490 69 6f 6e 20 61 63 74 73 0a 2a 2a 20 6f 6e 20 74  ion acts.** on t
334a0 68 69 73 20 68 69 6e 74 20 62 79 20 61 76 6f 69  his hint by avoi
334b0 64 69 6e 67 20 74 68 65 20 75 73 65 20 6f 66 20  ding the use of 
334c0 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72  [lookaside memor
334d0 79 5d 20 73 6f 20 61 73 20 6e 6f 74 20 74 6f 0a  y] so as not to.
334e0 2a 2a 20 64 65 70 6c 65 74 65 20 74 68 65 20 6c  ** deplete the l
334f0 69 6d 69 74 65 64 20 73 74 6f 72 65 20 6f 66 20  imited store of 
33500 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79  lookaside memory
33510 2e 20 46 75 74 75 72 65 20 76 65 72 73 69 6f 6e  . Future version
33520 73 20 6f 66 0a 2a 2a 20 53 51 4c 69 74 65 20 6d  s of.** SQLite m
33530 61 79 20 61 63 74 20 6f 6e 20 74 68 69 73 20 68  ay act on this h
33540 69 6e 74 20 64 69 66 66 65 72 65 6e 74 6c 79 2e  int differently.
33550 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
33560 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a  PREPARE_NORMALIZ
33570 45 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  E]] ^(<dt>SQLITE
33580 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49  _PREPARE_NORMALI
33590 5a 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  ZE</dt>.** <dd>T
335a0 68 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52  he SQLITE_PREPAR
335b0 45 5f 4e 4f 52 4d 41 4c 49 5a 45 20 66 6c 61 67  E_NORMALIZE flag
335c0 20 69 6e 64 69 63 61 74 65 73 20 74 68 61 74 20   indicates that 
335d0 61 20 6e 6f 72 6d 61 6c 69 7a 65 64 0a 2a 2a 20  a normalized.** 
335e0 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f  representation o
335f0 66 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  f the SQL statem
33600 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 63 61  ent should be ca
33610 6c 63 75 6c 61 74 65 64 20 61 6e 64 20 74 68 65  lculated and the
33620 6e 0a 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20  n.** associated 
33630 77 69 74 68 20 74 68 65 20 70 72 65 70 61 72 65  with the prepare
33640 64 20 73 74 61 74 65 6d 65 6e 74 2c 20 77 68 69  d statement, whi
33650 63 68 20 63 61 6e 20 62 65 20 6f 62 74 61 69 6e  ch can be obtain
33660 65 64 20 76 69 61 0a 2a 2a 20 74 68 65 20 5b 73  ed via.** the [s
33670 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65  qlite3_normalize
33680 64 5f 73 71 6c 28 29 5d 20 69 6e 74 65 72 66 61  d_sql()] interfa
33690 63 65 2e 29 5e 20 20 54 68 65 20 73 65 6d 61 6e  ce.)^  The seman
336a0 74 69 63 73 20 75 73 65 64 20 74 6f 0a 2a 2a 20  tics used to.** 
336b0 6e 6f 72 6d 61 6c 69 7a 65 20 61 20 53 51 4c 20  normalize a SQL 
336c0 73 74 61 74 65 6d 65 6e 74 20 61 72 65 20 75 6e  statement are un
336d0 73 70 65 63 69 66 69 65 64 20 61 6e 64 20 73 75  specified and su
336e0 62 6a 65 63 74 20 74 6f 20 63 68 61 6e 67 65 2e  bject to change.
336f0 0a 2a 2a 20 41 74 20 61 20 6d 69 6e 69 6d 75 6d  .** At a minimum
33700 2c 20 6c 69 74 65 72 61 6c 20 76 61 6c 75 65 73  , literal values
33710 20 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65   will be replace
33720 64 20 77 69 74 68 20 73 75 69 74 61 62 6c 65 0a  d with suitable.
33730 2a 2a 20 70 6c 61 63 65 68 6f 6c 64 65 72 73 2e  ** placeholders.
33740 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65  .** </dl>.*/.#de
33750 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 45 50  fine SQLITE_PREP
33760 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 20 20  ARE_PERSISTENT  
33770 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 31              0x01
33780 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
33790 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a  PREPARE_NORMALIZ
337a0 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
337b0 30 78 30 32 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  0x02../*.** CAPI
337c0 33 52 45 46 3a 20 43 6f 6d 70 69 6c 69 6e 67 20  3REF: Compiling 
337d0 41 6e 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74  An SQL Statement
337e0 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53  .** KEYWORDS: {S
337f0 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 6d  QL statement com
33800 70 69 6c 65 72 7d 0a 2a 2a 20 4d 45 54 48 4f 44  piler}.** METHOD
33810 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 20 43 4f 4e  : sqlite3.** CON
33820 53 54 52 55 43 54 4f 52 3a 20 73 71 6c 69 74 65  STRUCTOR: sqlite
33830 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 54 6f 20  3_stmt.**.** To 
33840 65 78 65 63 75 74 65 20 61 6e 20 53 51 4c 20 73  execute an SQL s
33850 74 61 74 65 6d 65 6e 74 2c 20 69 74 20 6d 75 73  tatement, it mus
33860 74 20 66 69 72 73 74 20 62 65 20 63 6f 6d 70 69  t first be compi
33870 6c 65 64 20 69 6e 74 6f 20 61 20 62 79 74 65 2d  led into a byte-
33880 63 6f 64 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20  code.** program 
33890 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65  using one of the
338a0 73 65 20 72 6f 75 74 69 6e 65 73 2e 20 20 4f 72  se routines.  Or
338b0 2c 20 69 6e 20 6f 74 68 65 72 20 77 6f 72 64 73  , in other words
338c0 2c 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  , these routines
338d0 0a 2a 2a 20 61 72 65 20 63 6f 6e 73 74 72 75 63  .** are construc
338e0 74 6f 72 73 20 66 6f 72 20 74 68 65 20 5b 70 72  tors for the [pr
338f0 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33900 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20  ] object..**.** 
33910 54 68 65 20 70 72 65 66 65 72 72 65 64 20 72 6f  The preferred ro
33920 75 74 69 6e 65 20 74 6f 20 75 73 65 20 69 73 20  utine to use is 
33930 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
33940 5f 76 32 28 29 5d 2e 20 20 54 68 65 0a 2a 2a 20  _v2()].  The.** 
33950 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
33960 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 69 73  ()] interface is
33970 20 6c 65 67 61 63 79 20 61 6e 64 20 73 68 6f 75   legacy and shou
33980 6c 64 20 62 65 20 61 76 6f 69 64 65 64 2e 0a 2a  ld be avoided..*
33990 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  * [sqlite3_prepa
339a0 72 65 5f 76 33 28 29 5d 20 68 61 73 20 61 6e 20  re_v3()] has an 
339b0 65 78 74 72 61 20 22 70 72 65 70 46 6c 61 67 73  extra "prepFlags
339c0 22 20 6f 70 74 69 6f 6e 20 74 68 61 74 20 69 73  " option that is
339d0 20 75 73 65 64 0a 2a 2a 20 66 6f 72 20 73 70 65   used.** for spe
339e0 63 69 61 6c 20 70 75 72 70 6f 73 65 73 2e 0a 2a  cial purposes..*
339f0 2a 0a 2a 2a 20 54 68 65 20 75 73 65 20 6f 66 20  *.** The use of 
33a00 74 68 65 20 55 54 46 2d 38 20 69 6e 74 65 72 66  the UTF-8 interf
33a10 61 63 65 73 20 69 73 20 70 72 65 66 65 72 72 65  aces is preferre
33a20 64 2c 20 61 73 20 53 51 4c 69 74 65 20 63 75 72  d, as SQLite cur
33a30 72 65 6e 74 6c 79 0a 2a 2a 20 64 6f 65 73 20 61  rently.** does a
33a40 6c 6c 20 70 61 72 73 69 6e 67 20 75 73 69 6e 67  ll parsing using
33a50 20 55 54 46 2d 38 2e 20 20 54 68 65 20 55 54 46   UTF-8.  The UTF
33a60 2d 31 36 20 69 6e 74 65 72 66 61 63 65 73 20 61  -16 interfaces a
33a70 72 65 20 70 72 6f 76 69 64 65 64 0a 2a 2a 20 61  re provided.** a
33a80 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 63 65 2e  s a convenience.
33a90 20 20 54 68 65 20 55 54 46 2d 31 36 20 69 6e 74    The UTF-16 int
33aa0 65 72 66 61 63 65 73 20 77 6f 72 6b 20 62 79 20  erfaces work by 
33ab0 63 6f 6e 76 65 72 74 69 6e 67 20 74 68 65 0a 2a  converting the.*
33ac0 2a 20 69 6e 70 75 74 20 74 65 78 74 20 69 6e 74  * input text int
33ad0 6f 20 55 54 46 2d 38 2c 20 74 68 65 6e 20 69 6e  o UTF-8, then in
33ae0 76 6f 6b 69 6e 67 20 74 68 65 20 63 6f 72 72 65  voking the corre
33af0 73 70 6f 6e 64 69 6e 67 20 55 54 46 2d 38 20 69  sponding UTF-8 i
33b00 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20  nterface..**.** 
33b10 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
33b20 6e 74 2c 20 22 64 62 22 2c 20 69 73 20 61 20 5b  nt, "db", is a [
33b30 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
33b40 69 6f 6e 5d 20 6f 62 74 61 69 6e 65 64 20 66 72  ion] obtained fr
33b50 6f 6d 20 61 0a 2a 2a 20 70 72 69 6f 72 20 73 75  om a.** prior su
33b60 63 63 65 73 73 66 75 6c 20 63 61 6c 6c 20 74 6f  ccessful call to
33b70 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
33b80 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ], [sqlite3_open
33b90 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20 5b 73 71  _v2()] or.** [sq
33ba0 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2e  lite3_open16()].
33bb0 20 20 54 68 65 20 64 61 74 61 62 61 73 65 20 63    The database c
33bc0 6f 6e 6e 65 63 74 69 6f 6e 20 6d 75 73 74 20 6e  onnection must n
33bd0 6f 74 20 68 61 76 65 20 62 65 65 6e 20 63 6c 6f  ot have been clo
33be0 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  sed..**.** The s
33bf0 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 2c 20  econd argument, 
33c00 22 7a 53 71 6c 22 2c 20 69 73 20 74 68 65 20 73  "zSql", is the s
33c10 74 61 74 65 6d 65 6e 74 20 74 6f 20 62 65 20 63  tatement to be c
33c20 6f 6d 70 69 6c 65 64 2c 20 65 6e 63 6f 64 65 64  ompiled, encoded
33c30 0a 2a 2a 20 61 73 20 65 69 74 68 65 72 20 55 54  .** as either UT
33c40 46 2d 38 20 6f 72 20 55 54 46 2d 31 36 2e 20 20  F-8 or UTF-16.  
33c50 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  The sqlite3_prep
33c60 61 72 65 28 29 2c 20 73 71 6c 69 74 65 33 5f 70  are(), sqlite3_p
33c70 72 65 70 61 72 65 5f 76 32 28 29 2c 0a 2a 2a 20  repare_v2(),.** 
33c80 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72 65 70  and sqlite3_prep
33c90 61 72 65 5f 76 33 28 29 0a 2a 2a 20 69 6e 74 65  are_v3().** inte
33ca0 72 66 61 63 65 73 20 75 73 65 20 55 54 46 2d 38  rfaces use UTF-8
33cb0 2c 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  , and sqlite3_pr
33cc0 65 70 61 72 65 31 36 28 29 2c 20 73 71 6c 69 74  epare16(), sqlit
33cd0 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
33ce0 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65  ),.** and sqlite
33cf0 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
33d00 20 75 73 65 20 55 54 46 2d 31 36 2e 0a 2a 2a 0a   use UTF-16..**.
33d10 2a 2a 20 5e 49 66 20 74 68 65 20 6e 42 79 74 65  ** ^If the nByte
33d20 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6e 65 67   argument is neg
33d30 61 74 69 76 65 2c 20 74 68 65 6e 20 7a 53 71 6c  ative, then zSql
33d40 20 69 73 20 72 65 61 64 20 75 70 20 74 6f 20 74   is read up to t
33d50 68 65 0a 2a 2a 20 66 69 72 73 74 20 7a 65 72 6f  he.** first zero
33d60 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 5e 49 66   terminator. ^If
33d70 20 6e 42 79 74 65 20 69 73 20 70 6f 73 69 74 69   nByte is positi
33d80 76 65 2c 20 74 68 65 6e 20 69 74 20 69 73 20 74  ve, then it is t
33d90 68 65 0a 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20  he.** number of 
33da0 62 79 74 65 73 20 72 65 61 64 20 66 72 6f 6d 20  bytes read from 
33db0 7a 53 71 6c 2e 20 20 5e 49 66 20 6e 42 79 74 65  zSql.  ^If nByte
33dc0 20 69 73 20 7a 65 72 6f 2c 20 74 68 65 6e 20 6e   is zero, then n
33dd0 6f 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74  o prepared.** st
33de0 61 74 65 6d 65 6e 74 20 69 73 20 67 65 6e 65 72  atement is gener
33df0 61 74 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20  ated..** If the 
33e00 63 61 6c 6c 65 72 20 6b 6e 6f 77 73 20 74 68 61  caller knows tha
33e10 74 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 73  t the supplied s
33e20 74 72 69 6e 67 20 69 73 20 6e 75 6c 2d 74 65 72  tring is nul-ter
33e30 6d 69 6e 61 74 65 64 2c 20 74 68 65 6e 0a 2a 2a  minated, then.**
33e40 20 74 68 65 72 65 20 69 73 20 61 20 73 6d 61 6c   there is a smal
33e50 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 61 64  l performance ad
33e60 76 61 6e 74 61 67 65 20 74 6f 20 70 61 73 73 69  vantage to passi
33e70 6e 67 20 61 6e 20 6e 42 79 74 65 20 70 61 72 61  ng an nByte para
33e80 6d 65 74 65 72 20 74 68 61 74 0a 2a 2a 20 69 73  meter that.** is
33e90 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62   the number of b
33ea0 79 74 65 73 20 69 6e 20 74 68 65 20 69 6e 70 75  ytes in the inpu
33eb0 74 20 73 74 72 69 6e 67 20 3c 69 3e 69 6e 63 6c  t string <i>incl
33ec0 75 64 69 6e 67 3c 2f 69 3e 0a 2a 2a 20 74 68 65  uding</i>.** the
33ed0 20 6e 75 6c 2d 74 65 72 6d 69 6e 61 74 6f 72 2e   nul-terminator.
33ee0 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 70 7a 54 61 69  .**.** ^If pzTai
33ef0 6c 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 74 68  l is not NULL th
33f00 65 6e 20 2a 70 7a 54 61 69 6c 20 69 73 20 6d 61  en *pzTail is ma
33f10 64 65 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74  de to point to t
33f20 68 65 20 66 69 72 73 74 20 62 79 74 65 0a 2a 2a  he first byte.**
33f30 20 70 61 73 74 20 74 68 65 20 65 6e 64 20 6f 66   past the end of
33f40 20 74 68 65 20 66 69 72 73 74 20 53 51 4c 20 73   the first SQL s
33f50 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c  tatement in zSql
33f60 2e 20 20 54 68 65 73 65 20 72 6f 75 74 69 6e 65  .  These routine
33f70 73 20 6f 6e 6c 79 0a 2a 2a 20 63 6f 6d 70 69 6c  s only.** compil
33f80 65 20 74 68 65 20 66 69 72 73 74 20 73 74 61 74  e the first stat
33f90 65 6d 65 6e 74 20 69 6e 20 7a 53 71 6c 2c 20 73  ement in zSql, s
33fa0 6f 20 2a 70 7a 54 61 69 6c 20 69 73 20 6c 65 66  o *pzTail is lef
33fb0 74 20 70 6f 69 6e 74 69 6e 67 20 74 6f 0a 2a 2a  t pointing to.**
33fc0 20 77 68 61 74 20 72 65 6d 61 69 6e 73 20 75 6e   what remains un
33fd0 63 6f 6d 70 69 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20  compiled..**.** 
33fe0 5e 2a 70 70 53 74 6d 74 20 69 73 20 6c 65 66 74  ^*ppStmt is left
33ff0 20 70 6f 69 6e 74 69 6e 67 20 74 6f 20 61 20 63   pointing to a c
34000 6f 6d 70 69 6c 65 64 20 5b 70 72 65 70 61 72 65  ompiled [prepare
34010 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 74 68 61  d statement] tha
34020 74 20 63 61 6e 20 62 65 0a 2a 2a 20 65 78 65 63  t can be.** exec
34030 75 74 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69  uted using [sqli
34040 74 65 33 5f 73 74 65 70 28 29 5d 2e 20 20 5e 49  te3_step()].  ^I
34050 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 72  f there is an er
34060 72 6f 72 2c 20 2a 70 70 53 74 6d 74 20 69 73 20  ror, *ppStmt is 
34070 73 65 74 0a 2a 2a 20 74 6f 20 4e 55 4c 4c 2e 20  set.** to NULL. 
34080 20 5e 49 66 20 74 68 65 20 69 6e 70 75 74 20 74   ^If the input t
34090 65 78 74 20 63 6f 6e 74 61 69 6e 73 20 6e 6f 20  ext contains no 
340a0 53 51 4c 20 28 69 66 20 74 68 65 20 69 6e 70 75  SQL (if the inpu
340b0 74 20 69 73 20 61 6e 20 65 6d 70 74 79 0a 2a 2a  t is an empty.**
340c0 20 73 74 72 69 6e 67 20 6f 72 20 61 20 63 6f 6d   string or a com
340d0 6d 65 6e 74 29 20 74 68 65 6e 20 2a 70 70 53 74  ment) then *ppSt
340e0 6d 74 20 69 73 20 73 65 74 20 74 6f 20 4e 55 4c  mt is set to NUL
340f0 4c 2e 0a 2a 2a 20 54 68 65 20 63 61 6c 6c 69 6e  L..** The callin
34100 67 20 70 72 6f 63 65 64 75 72 65 20 69 73 20 72  g procedure is r
34110 65 73 70 6f 6e 73 69 62 6c 65 20 66 6f 72 20 64  esponsible for d
34120 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f 6d 70  eleting the comp
34130 69 6c 65 64 0a 2a 2a 20 53 51 4c 20 73 74 61 74  iled.** SQL stat
34140 65 6d 65 6e 74 20 75 73 69 6e 67 20 5b 73 71 6c  ement using [sql
34150 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 28 29 5d  ite3_finalize()]
34160 20 61 66 74 65 72 20 69 74 20 68 61 73 20 66 69   after it has fi
34170 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 0a  nished with it..
34180 2a 2a 20 70 70 53 74 6d 74 20 6d 61 79 20 6e 6f  ** ppStmt may no
34190 74 20 62 65 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a 2a  t be NULL..**.**
341a0 20 5e 4f 6e 20 73 75 63 63 65 73 73 2c 20 74 68   ^On success, th
341b0 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  e sqlite3_prepar
341c0 65 28 29 20 66 61 6d 69 6c 79 20 6f 66 20 72 6f  e() family of ro
341d0 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20 5b 53  utines return [S
341e0 51 4c 49 54 45 5f 4f 4b 5d 3b 0a 2a 2a 20 6f 74  QLITE_OK];.** ot
341f0 68 65 72 77 69 73 65 20 61 6e 20 5b 65 72 72 6f  herwise an [erro
34200 72 20 63 6f 64 65 5d 20 69 73 20 72 65 74 75 72  r code] is retur
34210 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  ned..**.** The s
34220 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34230 32 28 29 2c 20 73 71 6c 69 74 65 33 5f 70 72 65  2(), sqlite3_pre
34240 70 61 72 65 5f 76 33 28 29 2c 20 73 71 6c 69 74  pare_v3(), sqlit
34250 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32 28  e3_prepare16_v2(
34260 29 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65  ),.** and sqlite
34270 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28 29  3_prepare16_v3()
34280 20 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20   interfaces are 
34290 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20  recommended for 
342a0 61 6c 6c 20 6e 65 77 20 70 72 6f 67 72 61 6d 73  all new programs
342b0 2e 0a 2a 2a 20 54 68 65 20 6f 6c 64 65 72 20 69  ..** The older i
342c0 6e 74 65 72 66 61 63 65 73 20 28 73 71 6c 69 74  nterfaces (sqlit
342d0 65 33 5f 70 72 65 70 61 72 65 28 29 20 61 6e 64  e3_prepare() and
342e0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
342f0 31 36 28 29 29 0a 2a 2a 20 61 72 65 20 72 65 74  16()).** are ret
34300 61 69 6e 65 64 20 66 6f 72 20 62 61 63 6b 77 61  ained for backwa
34310 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  rds compatibilit
34320 79 2c 20 62 75 74 20 74 68 65 69 72 20 75 73 65  y, but their use
34330 20 69 73 20 64 69 73 63 6f 75 72 61 67 65 64 2e   is discouraged.
34340 0a 2a 2a 20 5e 49 6e 20 74 68 65 20 22 76 58 22  .** ^In the "vX"
34350 20 69 6e 74 65 72 66 61 63 65 73 2c 20 74 68 65   interfaces, the
34360 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
34370 65 6e 74 0a 2a 2a 20 74 68 61 74 20 69 73 20 72  ent.** that is r
34380 65 74 75 72 6e 65 64 20 28 74 68 65 20 5b 73 71  eturned (the [sq
34390 6c 69 74 65 33 5f 73 74 6d 74 5d 20 6f 62 6a 65  lite3_stmt] obje
343a0 63 74 29 20 63 6f 6e 74 61 69 6e 73 20 61 20 63  ct) contains a c
343b0 6f 70 79 20 6f 66 20 74 68 65 0a 2a 2a 20 6f 72  opy of the.** or
343c0 69 67 69 6e 61 6c 20 53 51 4c 20 74 65 78 74 2e  iginal SQL text.
343d0 20 54 68 69 73 20 63 61 75 73 65 73 20 74 68 65   This causes the
343e0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
343f0 5d 20 69 6e 74 65 72 66 61 63 65 20 74 6f 0a 2a  ] interface to.*
34400 2a 20 62 65 68 61 76 65 20 64 69 66 66 65 72 65  * behave differe
34410 6e 74 6c 79 20 69 6e 20 74 68 72 65 65 20 77 61  ntly in three wa
34420 79 73 3a 0a 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a  ys:.**.** <ol>.*
34430 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20 74 68  * <li>.** ^If th
34440 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
34450 61 20 63 68 61 6e 67 65 73 2c 20 69 6e 73 74 65  a changes, inste
34460 61 64 20 6f 66 20 72 65 74 75 72 6e 69 6e 67 20  ad of returning 
34470 5b 53 51 4c 49 54 45 5f 53 43 48 45 4d 41 5d 20  [SQLITE_SCHEMA] 
34480 61 73 20 69 74 0a 2a 2a 20 61 6c 77 61 79 73 20  as it.** always 
34490 75 73 65 64 20 74 6f 20 64 6f 2c 20 5b 73 71 6c  used to do, [sql
344a0 69 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c  ite3_step()] wil
344b0 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  l automatically 
344c0 72 65 63 6f 6d 70 69 6c 65 20 74 68 65 20 53 51  recompile the SQ
344d0 4c 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 61  L.** statement a
344e0 6e 64 20 74 72 79 20 74 6f 20 72 75 6e 20 69 74  nd try to run it
344f0 20 61 67 61 69 6e 2e 20 41 73 20 6d 61 6e 79 20   again. As many 
34500 61 73 20 5b 53 51 4c 49 54 45 5f 4d 41 58 5f 53  as [SQLITE_MAX_S
34510 43 48 45 4d 41 5f 52 45 54 52 59 5d 0a 2a 2a 20  CHEMA_RETRY].** 
34520 72 65 74 72 69 65 73 20 77 69 6c 6c 20 6f 63 63  retries will occ
34530 75 72 20 62 65 66 6f 72 65 20 73 71 6c 69 74 65  ur before sqlite
34540 33 5f 73 74 65 70 28 29 20 67 69 76 65 73 20 75  3_step() gives u
34550 70 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 6e  p and returns an
34560 20 65 72 72 6f 72 2e 0a 2a 2a 20 3c 2f 6c 69 3e   error..** </li>
34570 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e  .**.** <li>.** ^
34580 57 68 65 6e 20 61 6e 20 65 72 72 6f 72 20 6f 63  When an error oc
34590 63 75 72 73 2c 20 5b 73 71 6c 69 74 65 33 5f 73  curs, [sqlite3_s
345a0 74 65 70 28 29 5d 20 77 69 6c 6c 20 72 65 74 75  tep()] will retu
345b0 72 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20 64 65  rn one of the de
345c0 74 61 69 6c 65 64 0a 2a 2a 20 5b 65 72 72 6f 72  tailed.** [error
345d0 20 63 6f 64 65 73 5d 20 6f 72 20 5b 65 78 74 65   codes] or [exte
345e0 6e 64 65 64 20 65 72 72 6f 72 20 63 6f 64 65 73  nded error codes
345f0 5d 2e 20 20 5e 54 68 65 20 6c 65 67 61 63 79 20  ].  ^The legacy 
34600 62 65 68 61 76 69 6f 72 20 77 61 73 20 74 68 61  behavior was tha
34610 74 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74  t.** [sqlite3_st
34620 65 70 28 29 5d 20 77 6f 75 6c 64 20 6f 6e 6c 79  ep()] would only
34630 20 72 65 74 75 72 6e 20 61 20 67 65 6e 65 72 69   return a generi
34640 63 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  c [SQLITE_ERROR]
34650 20 72 65 73 75 6c 74 20 63 6f 64 65 0a 2a 2a 20   result code.** 
34660 61 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 74  and the applicat
34670 69 6f 6e 20 77 6f 75 6c 64 20 68 61 76 65 20 74  ion would have t
34680 6f 20 6d 61 6b 65 20 61 20 73 65 63 6f 6e 64 20  o make a second 
34690 63 61 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33  call to [sqlite3
346a0 5f 72 65 73 65 74 28 29 5d 0a 2a 2a 20 69 6e 20  _reset()].** in 
346b0 6f 72 64 65 72 20 74 6f 20 66 69 6e 64 20 74 68  order to find th
346c0 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 63 61 75  e underlying cau
346d0 73 65 20 6f 66 20 74 68 65 20 70 72 6f 62 6c 65  se of the proble
346e0 6d 2e 20 57 69 74 68 20 74 68 65 20 22 76 32 22  m. With the "v2"
346f0 20 70 72 65 70 61 72 65 0a 2a 2a 20 69 6e 74 65   prepare.** inte
34700 72 66 61 63 65 73 2c 20 74 68 65 20 75 6e 64 65  rfaces, the unde
34710 72 6c 79 69 6e 67 20 72 65 61 73 6f 6e 20 66 6f  rlying reason fo
34720 72 20 74 68 65 20 65 72 72 6f 72 20 69 73 20 72  r the error is r
34730 65 74 75 72 6e 65 64 20 69 6d 6d 65 64 69 61 74  eturned immediat
34740 65 6c 79 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a  ely..** </li>.**
34750 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e 49 66 20  .** <li>.** ^If 
34760 74 68 65 20 73 70 65 63 69 66 69 63 20 76 61 6c  the specific val
34770 75 65 20 62 6f 75 6e 64 20 74 6f 20 5b 70 61 72  ue bound to [par
34780 61 6d 65 74 65 72 20 7c 20 68 6f 73 74 20 70 61  ameter | host pa
34790 72 61 6d 65 74 65 72 5d 20 69 6e 20 74 68 65 20  rameter] in the 
347a0 0a 2a 2a 20 57 48 45 52 45 20 63 6c 61 75 73 65  .** WHERE clause
347b0 20 6d 69 67 68 74 20 69 6e 66 6c 75 65 6e 63 65   might influence
347c0 20 74 68 65 20 63 68 6f 69 63 65 20 6f 66 20 71   the choice of q
347d0 75 65 72 79 20 70 6c 61 6e 20 66 6f 72 20 61 20  uery plan for a 
347e0 73 74 61 74 65 6d 65 6e 74 2c 0a 2a 2a 20 74 68  statement,.** th
347f0 65 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  en the statement
34800 20 77 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74   will be automat
34810 69 63 61 6c 6c 79 20 72 65 63 6f 6d 70 69 6c 65  ically recompile
34820 64 2c 20 61 73 20 69 66 20 74 68 65 72 65 20 68  d, as if there h
34830 61 64 20 62 65 65 6e 20 0a 2a 2a 20 61 20 73 63  ad been .** a sc
34840 68 65 6d 61 20 63 68 61 6e 67 65 2c 20 6f 6e 20  hema change, on 
34850 74 68 65 20 66 69 72 73 74 20 20 5b 73 71 6c 69  the first  [sqli
34860 74 65 33 5f 73 74 65 70 28 29 5d 20 63 61 6c 6c  te3_step()] call
34870 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 6e 79 20 63   following any c
34880 68 61 6e 67 65 0a 2a 2a 20 74 6f 20 74 68 65 20  hange.** to the 
34890 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65  [sqlite3_bind_te
348a0 78 74 20 7c 20 62 69 6e 64 69 6e 67 73 5d 20 6f  xt | bindings] o
348b0 66 20 74 68 61 74 20 5b 70 61 72 61 6d 65 74 65  f that [paramete
348c0 72 5d 2e 20 0a 2a 2a 20 5e 54 68 65 20 73 70 65  r]. .** ^The spe
348d0 63 69 66 69 63 20 76 61 6c 75 65 20 6f 66 20 57  cific value of W
348e0 48 45 52 45 2d 63 6c 61 75 73 65 20 5b 70 61 72  HERE-clause [par
348f0 61 6d 65 74 65 72 5d 20 6d 69 67 68 74 20 69 6e  ameter] might in
34900 66 6c 75 65 6e 63 65 20 74 68 65 20 0a 2a 2a 20  fluence the .** 
34910 63 68 6f 69 63 65 20 6f 66 20 71 75 65 72 79 20  choice of query 
34920 70 6c 61 6e 20 69 66 20 74 68 65 20 70 61 72 61  plan if the para
34930 6d 65 74 65 72 20 69 73 20 74 68 65 20 6c 65 66  meter is the lef
34940 74 2d 68 61 6e 64 20 73 69 64 65 20 6f 66 20 61  t-hand side of a
34950 20 5b 4c 49 4b 45 5d 0a 2a 2a 20 6f 72 20 5b 47   [LIKE].** or [G
34960 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 20 6f 72  LOB] operator or
34970 20 69 66 20 74 68 65 20 70 61 72 61 6d 65 74 65   if the paramete
34980 72 20 69 73 20 63 6f 6d 70 61 72 65 64 20 74 6f  r is compared to
34990 20 61 6e 20 69 6e 64 65 78 65 64 20 63 6f 6c 75   an indexed colu
349a0 6d 6e 0a 2a 2a 20 61 6e 64 20 74 68 65 20 5b 53  mn.** and the [S
349b0 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 54 41  QLITE_ENABLE_STA
349c0 54 33 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  T3] compile-time
349d0 20 6f 70 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c   option is enabl
349e0 65 64 2e 0a 2a 2a 20 3c 2f 6c 69 3e 0a 2a 2a 20  ed..** </li>.** 
349f0 3c 2f 6f 6c 3e 0a 2a 2a 0a 2a 2a 20 3c 70 3e 5e  </ol>.**.** <p>^
34a00 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
34a10 76 33 28 29 20 64 69 66 66 65 72 73 20 66 72 6f  v3() differs fro
34a20 6d 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  m sqlite3_prepar
34a30 65 5f 76 32 28 29 20 6f 6e 6c 79 20 69 6e 20 68  e_v2() only in h
34a40 61 76 69 6e 67 0a 2a 2a 20 74 68 65 20 65 78 74  aving.** the ext
34a50 72 61 20 70 72 65 70 46 6c 61 67 73 20 70 61 72  ra prepFlags par
34a60 61 6d 65 74 65 72 2c 20 77 68 69 63 68 20 69 73  ameter, which is
34a70 20 61 20 62 69 74 20 61 72 72 61 79 20 63 6f 6e   a bit array con
34a80 73 69 73 74 69 6e 67 20 6f 66 20 7a 65 72 6f 20  sisting of zero 
34a90 6f 72 0a 2a 2a 20 6d 6f 72 65 20 6f 66 20 74 68  or.** more of th
34aa0 65 20 5b 53 51 4c 49 54 45 5f 50 52 45 50 41 52  e [SQLITE_PREPAR
34ab0 45 5f 50 45 52 53 49 53 54 45 4e 54 7c 53 51 4c  E_PERSISTENT|SQL
34ac0 49 54 45 5f 50 52 45 50 41 52 45 5f 2a 5d 20 66  ITE_PREPARE_*] f
34ad0 6c 61 67 73 2e 20 20 5e 54 68 65 0a 2a 2a 20 73  lags.  ^The.** s
34ae0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
34af0 32 28 29 20 69 6e 74 65 72 66 61 63 65 20 77 6f  2() interface wo
34b00 72 6b 73 20 65 78 61 63 74 6c 79 20 74 68 65 20  rks exactly the 
34b10 73 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69 74  same as.** sqlit
34b20 65 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 20  e3_prepare_v3() 
34b30 77 69 74 68 20 61 20 7a 65 72 6f 20 70 72 65 70  with a zero prep
34b40 46 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 2e  Flags parameter.
34b50 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
34b60 6e 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61  nt sqlite3_prepa
34b70 72 65 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64  re(.  sqlite3 *d
34b80 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  b,            /*
34b90 20 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65   Database handle
34ba0 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72   */.  const char
34bb0 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a   *zSql,       /*
34bc0 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20   SQL statement, 
34bd0 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a 2f  UTF-8 encoded */
34be0 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20  .  int nByte,   
34bf0 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61             /* Ma
34c00 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20  ximum length of 
34c10 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a  zSql in bytes. *
34c20 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  /.  sqlite3_stmt
34c30 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f   **ppStmt,  /* O
34c40 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61  UT: Statement ha
34c50 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  ndle */.  const 
34c60 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20 20  char **pzTail   
34c70 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65    /* OUT: Pointe
34c80 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74  r to unused port
34c90 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29  ion of zSql */.)
34ca0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  ;.SQLITE_API int
34cb0 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
34cc0 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 20 2a  _v2(.  sqlite3 *
34cd0 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20 2f  db,            /
34ce0 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64 6c  * Database handl
34cf0 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61  e */.  const cha
34d00 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f  r *zSql,       /
34d10 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c  * SQL statement,
34d20 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 2a   UTF-8 encoded *
34d30 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20  /.  int nByte,  
34d40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d              /* M
34d50 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
34d60 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20   zSql in bytes. 
34d70 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
34d80 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
34d90 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
34da0 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
34db0 20 63 68 61 72 20 2a 2a 70 7a 54 61 69 6c 20 20   char **pzTail  
34dc0 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
34dd0 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
34de0 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
34df0 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
34e00 74 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72  t sqlite3_prepar
34e10 65 5f 76 33 28 0a 20 20 73 71 6c 69 74 65 33 20  e_v3(.  sqlite3 
34e20 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
34e30 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
34e40 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  le */.  const ch
34e50 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  ar *zSql,       
34e60 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
34e70 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20  , UTF-8 encoded 
34e80 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c 20  */.  int nByte, 
34e90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
34ea0 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f  Maximum length o
34eb0 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73 2e  f zSql in bytes.
34ec0 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20 69   */.  unsigned i
34ed0 6e 74 20 70 72 65 70 46 6c 61 67 73 2c 20 2f 2a  nt prepFlags, /*
34ee0 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 53 51   Zero or more SQ
34ef0 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 20 66 6c  LITE_PREPARE_ fl
34f00 61 67 73 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  ags */.  sqlite3
34f10 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20  _stmt **ppStmt, 
34f20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65   /* OUT: Stateme
34f30 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  nt handle */.  c
34f40 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61  onst char **pzTa
34f50 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50  il     /* OUT: P
34f60 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64  ointer to unused
34f70 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c   portion of zSql
34f80 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50   */.);.SQLITE_AP
34f90 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72  I int sqlite3_pr
34fa0 65 70 61 72 65 31 36 28 0a 20 20 73 71 6c 69 74  epare16(.  sqlit
34fb0 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20  e3 *db,         
34fc0 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68     /* Database h
34fd0 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
34fe0 20 76 6f 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20   void *zSql,    
34ff0 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d     /* SQL statem
35000 65 6e 74 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f  ent, UTF-16 enco
35010 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
35020 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  te,             
35030 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67   /* Maximum leng
35040 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
35050 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
35060 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
35070 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
35080 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
35090 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54  const void **pzT
350a0 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
350b0 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
350c0 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
350d0 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  l */.);.SQLITE_A
350e0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70  PI int sqlite3_p
350f0 72 65 70 61 72 65 31 36 5f 76 32 28 0a 20 20 73  repare16_v2(.  s
35100 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20  qlite3 *db,     
35110 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61         /* Databa
35120 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  se handle */.  c
35130 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c 2c  onst void *zSql,
35140 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74         /* SQL st
35150 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36 20  atement, UTF-16 
35160 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74  encoded */.  int
35170 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20 20   nByte,         
35180 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20       /* Maximum 
35190 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20 69  length of zSql i
351a0 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73 71  n bytes. */.  sq
351b0 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
351c0 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
351d0 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
351e0 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  /.  const void *
351f0 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
35200 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
35210 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
35220 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49   zSql */.);.SQLI
35230 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
35240 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33 28  e3_prepare16_v3(
35250 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c 20  .  sqlite3 *db, 
35260 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44 61             /* Da
35270 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f  tabase handle */
35280 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a  .  const void *z
35290 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53 51  Sql,       /* SQ
352a0 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54 46  L statement, UTF
352b0 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20  -16 encoded */. 
352c0 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20 20   int nByte,     
352d0 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78 69           /* Maxi
352e0 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53  mum length of zS
352f0 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a  ql in bytes. */.
35300 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 70    unsigned int p
35310 72 65 70 46 6c 61 67 73 2c 20 2f 2a 20 5a 65 72  repFlags, /* Zer
35320 6f 20 6f 72 20 6d 6f 72 65 20 53 51 4c 49 54 45  o or more SQLITE
35330 5f 50 52 45 50 41 52 45 5f 20 66 6c 61 67 73 20  _PREPARE_ flags 
35340 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d  */.  sqlite3_stm
35350 74 20 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20  t **ppStmt,  /* 
35360 4f 55 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68  OUT: Statement h
35370 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
35380 20 76 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20   void **pzTail  
35390 20 20 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74     /* OUT: Point
353a0 65 72 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72  er to unused por
353b0 74 69 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a  tion of zSql */.
353c0 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  );../*.** CAPI3R
353d0 45 46 3a 20 52 65 74 72 69 65 76 69 6e 67 20 53  EF: Retrieving S
353e0 74 61 74 65 6d 65 6e 74 20 53 51 4c 0a 2a 2a 20  tatement SQL.** 
353f0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f  METHOD: sqlite3_
35400 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  stmt.**.** ^The 
35410 73 71 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 69  sqlite3_sql(P) i
35420 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73  nterface returns
35430 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
35440 63 6f 70 79 20 6f 66 20 74 68 65 20 55 54 46 2d  copy of the UTF-
35450 38 0a 2a 2a 20 53 51 4c 20 74 65 78 74 20 75 73  8.** SQL text us
35460 65 64 20 74 6f 20 63 72 65 61 74 65 20 5b 70 72  ed to create [pr
35470 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
35480 5d 20 50 20 69 66 20 50 20 77 61 73 0a 2a 2a 20  ] P if P was.** 
35490 63 72 65 61 74 65 64 20 62 79 20 5b 73 71 6c 69  created by [sqli
354a0 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
354b0 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ], [sqlite3_prep
354c0 61 72 65 5f 76 33 28 29 5d 2c 0a 2a 2a 20 5b 73  are_v3()],.** [s
354d0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
354e0 5f 76 32 28 29 5d 2c 20 6f 72 20 5b 73 71 6c 69  _v2()], or [sqli
354f0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 33  te3_prepare16_v3
35500 28 29 5d 2e 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ()]..** ^The sql
35510 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
35520 6c 28 50 29 20 69 6e 74 65 72 66 61 63 65 20 72  l(P) interface r
35530 65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72  eturns a pointer
35540 20 74 6f 20 61 20 55 54 46 2d 38 0a 2a 2a 20 73   to a UTF-8.** s
35550 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67  tring containing
35560 20 74 68 65 20 53 51 4c 20 74 65 78 74 20 6f 66   the SQL text of
35570 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d   prepared statem
35580 65 6e 74 20 50 20 77 69 74 68 0a 2a 2a 20 5b 62  ent P with.** [b
35590 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 5d  ound parameters]
355a0 20 65 78 70 61 6e 64 65 64 2e 0a 2a 2a 20 5e 54   expanded..** ^T
355b0 68 65 20 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61  he sqlite3_norma
355c0 6c 69 7a 65 64 5f 73 71 6c 28 50 29 20 69 6e 74  lized_sql(P) int
355d0 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 61  erface returns a
355e0 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 55 54   pointer to a UT
355f0 46 2d 38 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f  F-8.** string co
35600 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e 6f 72  ntaining the nor
35610 6d 61 6c 69 7a 65 64 20 53 51 4c 20 74 65 78 74  malized SQL text
35620 20 6f 66 20 70 72 65 70 61 72 65 64 20 73 74 61   of prepared sta
35630 74 65 6d 65 6e 74 20 50 2e 20 20 54 68 65 0a 2a  tement P.  The.*
35640 2a 20 73 65 6d 61 6e 74 69 63 73 20 75 73 65 64  * semantics used
35650 20 74 6f 20 6e 6f 72 6d 61 6c 69 7a 65 20 61 20   to normalize a 
35660 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 72  SQL statement ar
35670 65 20 75 6e 73 70 65 63 69 66 69 65 64 20 61 6e  e unspecified an
35680 64 20 73 75 62 6a 65 63 74 0a 2a 2a 20 74 6f 20  d subject.** to 
35690 63 68 61 6e 67 65 2e 20 20 41 74 20 61 20 6d 69  change.  At a mi
356a0 6e 69 6d 75 6d 2c 20 6c 69 74 65 72 61 6c 20 76  nimum, literal v
356b0 61 6c 75 65 73 20 77 69 6c 6c 20 62 65 20 72 65  alues will be re
356c0 70 6c 61 63 65 64 20 77 69 74 68 20 73 75 69 74  placed with suit
356d0 61 62 6c 65 0a 2a 2a 20 70 6c 61 63 65 68 6f 6c  able.** placehol
356e0 64 65 72 73 2e 0a 2a 2a 0a 2a 2a 20 5e 28 46 6f  ders..**.** ^(Fo
356f0 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 20  r example, if a 
35700 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
35710 6e 74 20 69 73 20 63 72 65 61 74 65 64 20 75 73  nt is created us
35720 69 6e 67 20 74 68 65 20 53 51 4c 0a 2a 2a 20 74  ing the SQL.** t
35730 65 78 74 20 22 53 45 4c 45 43 54 20 24 61 62 63  ext "SELECT $abc
35740 2c 3a 78 79 7a 22 20 61 6e 64 20 69 66 20 70 61  ,:xyz" and if pa
35750 72 61 6d 65 74 65 72 20 24 61 62 63 20 69 73 20  rameter $abc is 
35760 62 6f 75 6e 64 20 74 6f 20 69 6e 74 65 67 65 72  bound to integer
35770 20 32 33 34 35 0a 2a 2a 20 61 6e 64 20 70 61 72   2345.** and par
35780 61 6d 65 74 65 72 20 3a 78 79 7a 20 69 73 20 75  ameter :xyz is u
35790 6e 62 6f 75 6e 64 2c 20 74 68 65 6e 20 73 71 6c  nbound, then sql
357a0 69 74 65 33 5f 73 71 6c 28 29 20 77 69 6c 6c 20  ite3_sql() will 
357b0 72 65 74 75 72 6e 0a 2a 2a 20 74 68 65 20 6f 72  return.** the or
357c0 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 2c 20 22  iginal string, "
357d0 53 45 4c 45 43 54 20 24 61 62 63 2c 3a 78 79 7a  SELECT $abc,:xyz
357e0 22 20 62 75 74 20 73 71 6c 69 74 65 33 5f 65 78  " but sqlite3_ex
357f0 70 61 6e 64 65 64 5f 73 71 6c 28 29 0a 2a 2a 20  panded_sql().** 
35800 77 69 6c 6c 20 72 65 74 75 72 6e 20 22 53 45 4c  will return "SEL
35810 45 43 54 20 32 33 34 35 2c 4e 55 4c 4c 22 2e 29  ECT 2345,NULL".)
35820 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  ^.**.** ^The sql
35830 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
35840 6c 28 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  l() interface re
35850 74 75 72 6e 73 20 4e 55 4c 4c 20 69 66 20 69 6e  turns NULL if in
35860 73 75 66 66 69 63 69 65 6e 74 20 6d 65 6d 6f 72  sufficient memor
35870 79 0a 2a 2a 20 69 73 20 61 76 61 69 6c 61 62 6c  y.** is availabl
35880 65 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65  e to hold the re
35890 73 75 6c 74 2c 20 6f 72 20 69 66 20 74 68 65 20  sult, or if the 
358a0 72 65 73 75 6c 74 20 77 6f 75 6c 64 20 65 78 63  result would exc
358b0 65 65 64 20 74 68 65 0a 2a 2a 20 74 68 65 20 6d  eed the.** the m
358c0 61 78 69 6d 75 6d 20 73 74 72 69 6e 67 20 6c 65  aximum string le
358d0 6e 67 74 68 20 64 65 74 65 72 6d 69 6e 65 64 20  ngth determined 
358e0 62 79 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4c  by the [SQLITE_L
358f0 49 4d 49 54 5f 4c 45 4e 47 54 48 5d 2e 0a 2a 2a  IMIT_LENGTH]..**
35900 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45  .** ^The [SQLITE
35910 5f 54 52 41 43 45 5f 53 49 5a 45 5f 4c 49 4d 49  _TRACE_SIZE_LIMI
35920 54 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  T] compile-time 
35930 6f 70 74 69 6f 6e 20 6c 69 6d 69 74 73 20 74 68  option limits th
35940 65 20 73 69 7a 65 20 6f 66 0a 2a 2a 20 62 6f 75  e size of.** bou
35950 6e 64 20 70 61 72 61 6d 65 74 65 72 20 65 78 70  nd parameter exp
35960 61 6e 73 69 6f 6e 73 2e 20 20 5e 54 68 65 20 5b  ansions.  ^The [
35970 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 41 43  SQLITE_OMIT_TRAC
35980 45 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  E] compile-time.
35990 2a 2a 20 6f 70 74 69 6f 6e 20 63 61 75 73 65 73  ** option causes
359a0 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64 65   sqlite3_expande
359b0 64 5f 73 71 6c 28 29 20 74 6f 20 61 6c 77 61 79  d_sql() to alway
359c0 73 20 72 65 74 75 72 6e 20 4e 55 4c 4c 2e 0a 2a  s return NULL..*
359d0 2a 0a 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67  *.** ^The string
359e0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71  s returned by sq
359f0 6c 69 74 65 33 5f 73 71 6c 28 50 29 20 61 6e 64  lite3_sql(P) and
35a00 20 73 71 6c 69 74 65 33 5f 6e 6f 72 6d 61 6c 69   sqlite3_normali
35a10 7a 65 64 5f 73 71 6c 28 50 29 0a 2a 2a 20 61 72  zed_sql(P).** ar
35a20 65 20 6d 61 6e 61 67 65 64 20 62 79 20 53 51 4c  e managed by SQL
35a30 69 74 65 20 61 6e 64 20 61 72 65 20 61 75 74 6f  ite and are auto
35a40 6d 61 74 69 63 61 6c 6c 79 20 66 72 65 65 64 20  matically freed 
35a50 77 68 65 6e 20 74 68 65 20 70 72 65 70 61 72 65  when the prepare
35a60 64 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 69  d.** statement i
35a70 73 20 66 69 6e 61 6c 69 7a 65 64 2e 0a 2a 2a 20  s finalized..** 
35a80 5e 54 68 65 20 73 74 72 69 6e 67 20 72 65 74 75  ^The string retu
35a90 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f  rned by sqlite3_
35aa0 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 50 29 2c  expanded_sql(P),
35ab0 20 6f 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61   on the other ha
35ac0 6e 64 2c 0a 2a 2a 20 69 73 20 6f 62 74 61 69 6e  nd,.** is obtain
35ad0 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
35ae0 5f 6d 61 6c 6c 6f 63 28 29 5d 20 61 6e 64 20 6d  _malloc()] and m
35af0 75 73 74 20 62 65 20 66 72 65 65 20 62 79 20 74  ust be free by t
35b00 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0a 2a  he application.*
35b10 2a 20 62 79 20 70 61 73 73 69 6e 67 20 69 74 20  * by passing it 
35b20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65 65  to [sqlite3_free
35b30 28 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ()]..*/.SQLITE_A
35b40 50 49 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 73  PI const char *s
35b50 71 6c 69 74 65 33 5f 73 71 6c 28 73 71 6c 69 74  qlite3_sql(sqlit
35b60 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
35b70 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61 72  .SQLITE_API char
35b80 20 2a 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64   *sqlite3_expand
35b90 65 64 5f 73 71 6c 28 73 71 6c 69 74 65 33 5f 73  ed_sql(sqlite3_s
35ba0 74 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 53 51 4c  tmt *pStmt);.SQL
35bb0 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68  ITE_API const ch
35bc0 61 72 20 2a 73 71 6c 69 74 65 33 5f 6e 6f 72 6d  ar *sqlite3_norm
35bd0 61 6c 69 7a 65 64 5f 73 71 6c 28 73 71 6c 69 74  alized_sql(sqlit
35be0 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29 3b  e3_stmt *pStmt);
35bf0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
35c00 3a 20 44 65 74 65 72 6d 69 6e 65 20 49 66 20 41  : Determine If A
35c10 6e 20 53 51 4c 20 53 74 61 74 65 6d 65 6e 74 20  n SQL Statement 
35c20 57 72 69 74 65 73 20 54 68 65 20 44 61 74 61 62  Writes The Datab
35c30 61 73 65 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ase.** METHOD: s
35c40 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a  qlite3_stmt.**.*
35c50 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73  * ^The sqlite3_s
35c60 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 58 29 20  tmt_readonly(X) 
35c70 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72 6e  interface return
35c80 73 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72 6f  s true (non-zero
35c90 29 20 69 66 0a 2a 2a 20 61 6e 64 20 6f 6e 6c 79  ) if.** and only
35ca0 20 69 66 20 74 68 65 20 5b 70 72 65 70 61 72 65   if the [prepare
35cb0 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 58 20 6d  d statement] X m
35cc0 61 6b 65 73 20 6e 6f 20 64 69 72 65 63 74 20 63  akes no direct c
35cd0 68 61 6e 67 65 73 20 74 6f 0a 2a 2a 20 74 68 65  hanges to.** the
35ce0 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20   content of the 
35cf0 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e 0a 2a  database file..*
35d00 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20 5b  *.** Note that [
35d10 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69  application-defi
35d20 6e 65 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e  ned SQL function
35d30 73 5d 20 6f 72 0a 2a 2a 20 5b 76 69 72 74 75 61  s] or.** [virtua
35d40 6c 20 74 61 62 6c 65 73 5d 20 6d 69 67 68 74 20  l tables] might 
35d50 63 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 62  change the datab
35d60 61 73 65 20 69 6e 64 69 72 65 63 74 6c 79 20 61  ase indirectly a
35d70 73 20 61 20 73 69 64 65 20 65 66 66 65 63 74 2e  s a side effect.
35d80 20 20 0a 2a 2a 20 5e 28 46 6f 72 20 65 78 61 6d    .** ^(For exam
35d90 70 6c 65 2c 20 69 66 20 61 6e 20 61 70 70 6c 69  ple, if an appli
35da0 63 61 74 69 6f 6e 20 64 65 66 69 6e 65 73 20 61  cation defines a
35db0 20 66 75 6e 63 74 69 6f 6e 20 22 65 76 61 6c 28   function "eval(
35dc0 29 22 20 74 68 61 74 20 0a 2a 2a 20 63 61 6c 6c  )" that .** call
35dd0 73 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63 28  s [sqlite3_exec(
35de0 29 5d 2c 20 74 68 65 6e 20 74 68 65 20 66 6f 6c  )], then the fol
35df0 6c 6f 77 69 6e 67 20 53 51 4c 20 73 74 61 74 65  lowing SQL state
35e00 6d 65 6e 74 20 77 6f 75 6c 64 0a 2a 2a 20 63 68  ment would.** ch
35e10 61 6e 67 65 20 74 68 65 20 64 61 74 61 62 61 73  ange the databas
35e20 65 20 66 69 6c 65 20 74 68 72 6f 75 67 68 20 73  e file through s
35e30 69 64 65 2d 65 66 66 65 63 74 73 3a 0a 2a 2a 0a  ide-effects:.**.
35e40 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  ** <blockquote><
35e50 70 72 65 3e 0a 2a 2a 20 20 20 20 53 45 4c 45 43  pre>.**    SELEC
35e60 54 20 65 76 61 6c 28 27 44 45 4c 45 54 45 20 46  T eval('DELETE F
35e70 52 4f 4d 20 74 31 27 29 20 46 52 4f 4d 20 74 32  ROM t1') FROM t2
35e80 3b 0a 2a 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  ;.** </pre></blo
35e90 63 6b 71 75 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 42  ckquote>.**.** B
35ea0 75 74 20 62 65 63 61 75 73 65 20 74 68 65 20 5b  ut because the [
35eb0 53 45 4c 45 43 54 5d 20 73 74 61 74 65 6d 65 6e  SELECT] statemen
35ec0 74 20 64 6f 65 73 20 6e 6f 74 20 63 68 61 6e 67  t does not chang
35ed0 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  e the database f
35ee0 69 6c 65 0a 2a 2a 20 64 69 72 65 63 74 6c 79 2c  ile.** directly,
35ef0 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
35f00 61 64 6f 6e 6c 79 28 29 20 77 6f 75 6c 64 20 73  adonly() would s
35f10 74 69 6c 6c 20 72 65 74 75 72 6e 20 74 72 75 65  till return true
35f20 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 72 61 6e 73  .)^.**.** ^Trans
35f30 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73  action control s
35f40 74 61 74 65 6d 65 6e 74 73 20 73 75 63 68 20 61  tatements such a
35f50 73 20 5b 42 45 47 49 4e 5d 2c 20 5b 43 4f 4d 4d  s [BEGIN], [COMM
35f60 49 54 5d 2c 20 5b 52 4f 4c 4c 42 41 43 4b 5d 2c  IT], [ROLLBACK],
35f70 0a 2a 2a 20 5b 53 41 56 45 50 4f 49 4e 54 5d 2c  .** [SAVEPOINT],
35f80 20 61 6e 64 20 5b 52 45 4c 45 41 53 45 5d 20 63   and [RELEASE] c
35f90 61 75 73 65 20 73 71 6c 69 74 65 33 5f 73 74 6d  ause sqlite3_stm
35fa0 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f 20  t_readonly() to 
35fb0 72 65 74 75 72 6e 20 74 72 75 65 2c 0a 2a 2a 20  return true,.** 
35fc0 73 69 6e 63 65 20 74 68 65 20 73 74 61 74 65 6d  since the statem
35fd0 65 6e 74 73 20 74 68 65 6d 73 65 6c 76 65 73 20  ents themselves 
35fe0 64 6f 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20  do not actually 
35ff0 6d 6f 64 69 66 79 20 74 68 65 20 64 61 74 61 62  modify the datab
36000 61 73 65 20 62 75 74 0a 2a 2a 20 72 61 74 68 65  ase but.** rathe
36010 72 20 74 68 65 79 20 63 6f 6e 74 72 6f 6c 20 74  r they control t
36020 68 65 20 74 69 6d 69 6e 67 20 6f 66 20 77 68 65  he timing of whe
36030 6e 20 6f 74 68 65 72 20 73 74 61 74 65 6d 65 6e  n other statemen
36040 74 73 20 6d 6f 64 69 66 79 20 74 68 65 20 0a 2a  ts modify the .*
36050 2a 20 64 61 74 61 62 61 73 65 2e 20 20 5e 54 68  * database.  ^Th
36060 65 20 5b 41 54 54 41 43 48 5d 20 61 6e 64 20 5b  e [ATTACH] and [
36070 44 45 54 41 43 48 5d 20 73 74 61 74 65 6d 65 6e  DETACH] statemen
36080 74 73 20 61 6c 73 6f 20 63 61 75 73 65 0a 2a 2a  ts also cause.**
36090 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65   sqlite3_stmt_re
360a0 61 64 6f 6e 6c 79 28 29 20 74 6f 20 72 65 74 75  adonly() to retu
360b0 72 6e 20 74 72 75 65 20 73 69 6e 63 65 2c 20 77  rn true since, w
360c0 68 69 6c 65 20 74 68 6f 73 65 20 73 74 61 74 65  hile those state
360d0 6d 65 6e 74 73 0a 2a 2a 20 63 68 61 6e 67 65 20  ments.** change 
360e0 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
360f0 6e 20 6f 66 20 61 20 64 61 74 61 62 61 73 65 20  n of a database 
36100 63 6f 6e 6e 65 63 74 69 6f 6e 2c 20 74 68 65 79  connection, they
36110 20 64 6f 20 6e 6f 74 20 6d 61 6b 65 20 0a 2a 2a   do not make .**
36120 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65 20   changes to the 
36130 63 6f 6e 74 65 6e 74 20 6f 66 20 74 68 65 20 64  content of the d
36140 61 74 61 62 61 73 65 20 66 69 6c 65 73 20 6f 6e  atabase files on
36150 20 64 69 73 6b 2e 0a 2a 2a 20 5e 54 68 65 20 73   disk..** ^The s
36160 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
36170 6f 6e 6c 79 28 29 20 69 6e 74 65 72 66 61 63 65  only() interface
36180 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 66 6f   returns true fo
36190 72 20 5b 42 45 47 49 4e 5d 20 73 69 6e 63 65 0a  r [BEGIN] since.
361a0 2a 2a 20 5b 42 45 47 49 4e 5d 20 6d 65 72 65 6c  ** [BEGIN] merel
361b0 79 20 73 65 74 73 20 69 6e 74 65 72 6e 61 6c 20  y sets internal 
361c0 66 6c 61 67 73 2c 20 62 75 74 20 74 68 65 20 5b  flags, but the [
361d0 42 45 47 49 4e 7c 42 45 47 49 4e 20 49 4d 4d 45  BEGIN|BEGIN IMME
361e0 44 49 41 54 45 5d 20 61 6e 64 0a 2a 2a 20 5b 42  DIATE] and.** [B
361f0 45 47 49 4e 7c 42 45 47 49 4e 20 45 58 43 4c 55  EGIN|BEGIN EXCLU
36200 53 49 56 45 5d 20 63 6f 6d 6d 61 6e 64 73 20 64  SIVE] commands d
36210 6f 20 74 6f 75 63 68 20 74 68 65 20 64 61 74 61  o touch the data
36220 62 61 73 65 20 61 6e 64 20 73 6f 0a 2a 2a 20 73  base and so.** s
36230 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61 64  qlite3_stmt_read
36240 6f 6e 6c 79 28 29 20 72 65 74 75 72 6e 73 20 66  only() returns f
36250 61 6c 73 65 20 66 6f 72 20 74 68 6f 73 65 20 63  alse for those c
36260 6f 6d 6d 61 6e 64 73 2e 0a 2a 2f 0a 53 51 4c 49  ommands..*/.SQLI
36270 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
36280 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79  e3_stmt_readonly
36290 28 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70  (sqlite3_stmt *p
362a0 53 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41  Stmt);../*.** CA
362b0 50 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e  PI3REF: Determin
362c0 65 20 49 66 20 41 20 50 72 65 70 61 72 65 64 20  e If A Prepared 
362d0 53 74 61 74 65 6d 65 6e 74 20 48 61 73 20 42 65  Statement Has Be
362e0 65 6e 20 52 65 73 65 74 0a 2a 2a 20 4d 45 54 48  en Reset.** METH
362f0 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  OD: sqlite3_stmt
36300 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
36310 74 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29  te3_stmt_busy(S)
36320 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75 72   interface retur
36330 6e 73 20 74 72 75 65 20 28 6e 6f 6e 2d 7a 65 72  ns true (non-zer
36340 6f 29 20 69 66 20 74 68 65 0a 2a 2a 20 5b 70 72  o) if the.** [pr
36350 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
36360 5d 20 53 20 68 61 73 20 62 65 65 6e 20 73 74 65  ] S has been ste
36370 70 70 65 64 20 61 74 20 6c 65 61 73 74 20 6f 6e  pped at least on
36380 63 65 20 75 73 69 6e 67 20 0a 2a 2a 20 5b 73 71  ce using .** [sq
36390 6c 69 74 65 33 5f 73 74 65 70 28 53 29 5d 20 62  lite3_step(S)] b
363a0 75 74 20 68 61 73 20 6e 65 69 74 68 65 72 20 72  ut has neither r
363b0 75 6e 20 74 6f 20 63 6f 6d 70 6c 65 74 69 6f 6e  un to completion
363c0 20 28 72 65 74 75 72 6e 65 64 0a 2a 2a 20 5b 53   (returned.** [S
363d0 51 4c 49 54 45 5f 44 4f 4e 45 5d 20 66 72 6f 6d  QLITE_DONE] from
363e0 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 53   [sqlite3_step(S
363f0 29 5d 29 20 6e 6f 72 0a 2a 2a 20 62 65 65 6e 20  )]) nor.** been 
36400 72 65 73 65 74 20 75 73 69 6e 67 20 5b 73 71 6c  reset using [sql
36410 69 74 65 33 5f 72 65 73 65 74 28 53 29 5d 2e 20  ite3_reset(S)]. 
36420 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74   ^The sqlite3_st
36430 6d 74 5f 62 75 73 79 28 53 29 0a 2a 2a 20 69 6e  mt_busy(S).** in
36440 74 65 72 66 61 63 65 20 72 65 74 75 72 6e 73 20  terface returns 
36450 66 61 6c 73 65 20 69 66 20 53 20 69 73 20 61 20  false if S is a 
36460 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 49  NULL pointer.  I
36470 66 20 53 20 69 73 20 6e 6f 74 20 61 20 0a 2a 2a  f S is not a .**
36480 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 61 6e   NULL pointer an
36490 64 20 69 73 20 6e 6f 74 20 61 20 70 6f 69 6e 74  d is not a point
364a0 65 72 20 74 6f 20 61 20 76 61 6c 69 64 20 5b 70  er to a valid [p
364b0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
364c0 74 5d 0a 2a 2a 20 6f 62 6a 65 63 74 2c 20 74 68  t].** object, th
364d0 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  en the behavior 
364e0 69 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64  is undefined and
364f0 20 70 72 6f 62 61 62 6c 79 20 75 6e 64 65 73 69   probably undesi
36500 72 61 62 6c 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 69  rable..**.** Thi
36510 73 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e 20  s interface can 
36520 62 65 20 75 73 65 64 20 69 6e 20 63 6f 6d 62 69  be used in combi
36530 6e 61 74 69 6f 6e 20 5b 73 71 6c 69 74 65 33 5f  nation [sqlite3_
36540 6e 65 78 74 5f 73 74 6d 74 28 29 5d 0a 2a 2a 20  next_stmt()].** 
36550 74 6f 20 6c 6f 63 61 74 65 20 61 6c 6c 20 70 72  to locate all pr
36560 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
36570 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  s associated wit
36580 68 20 61 20 64 61 74 61 62 61 73 65 20 0a 2a 2a  h a database .**
36590 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
365a0 20 61 72 65 20 69 6e 20 6e 65 65 64 20 6f 66 20   are in need of 
365b0 62 65 69 6e 67 20 72 65 73 65 74 2e 20 20 54 68  being reset.  Th
365c0 69 73 20 63 61 6e 20 62 65 20 75 73 65 64 2c 0a  is can be used,.
365d0 2a 2a 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20  ** for example, 
365e0 69 6e 20 64 69 61 67 6e 6f 73 74 69 63 20 72 6f  in diagnostic ro
365f0 75 74 69 6e 65 73 20 74 6f 20 73 65 61 72 63 68  utines to search
36600 20 66 6f 72 20 70 72 65 70 61 72 65 64 20 0a 2a   for prepared .*
36610 2a 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61  * statements tha
36620 74 20 61 72 65 20 68 6f 6c 64 69 6e 67 20 61 20  t are holding a 
36630 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f 70 65 6e  transaction open
36640 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
36650 69 6e 74 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  int sqlite3_stmt
36660 5f 62 75 73 79 28 73 71 6c 69 74 65 33 5f 73 74  _busy(sqlite3_st
36670 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  mt*);../*.** CAP
36680 49 33 52 45 46 3a 20 44 79 6e 61 6d 69 63 61 6c  I3REF: Dynamical
36690 6c 79 20 54 79 70 65 64 20 56 61 6c 75 65 20 4f  ly Typed Value O
366a0 62 6a 65 63 74 0a 2a 2a 20 4b 45 59 57 4f 52 44  bject.** KEYWORD
366b0 53 3a 20 7b 70 72 6f 74 65 63 74 65 64 20 73 71  S: {protected sq
366c0 6c 69 74 65 33 5f 76 61 6c 75 65 7d 20 7b 75 6e  lite3_value} {un
366d0 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65  protected sqlite
366e0 33 5f 76 61 6c 75 65 7d 0a 2a 2a 0a 2a 2a 20 53  3_value}.**.** S
366f0 51 4c 69 74 65 20 75 73 65 73 20 74 68 65 20 73  QLite uses the s
36700 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
36710 65 63 74 20 74 6f 20 72 65 70 72 65 73 65 6e 74  ect to represent
36720 20 61 6c 6c 20 76 61 6c 75 65 73 0a 2a 2a 20 74   all values.** t
36730 68 61 74 20 63 61 6e 20 62 65 20 73 74 6f 72 65  hat can be store
36740 64 20 69 6e 20 61 20 64 61 74 61 62 61 73 65 20  d in a database 
36750 74 61 62 6c 65 2e 20 53 51 4c 69 74 65 20 75 73  table. SQLite us
36760 65 73 20 64 79 6e 61 6d 69 63 20 74 79 70 69 6e  es dynamic typin
36770 67 0a 2a 2a 20 66 6f 72 20 74 68 65 20 76 61 6c  g.** for the val
36780 75 65 73 20 69 74 20 73 74 6f 72 65 73 2e 20 20  ues it stores.  
36790 5e 56 61 6c 75 65 73 20 73 74 6f 72 65 64 20 69  ^Values stored i
367a0 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  n sqlite3_value 
367b0 6f 62 6a 65 63 74 73 0a 2a 2a 20 63 61 6e 20 62  objects.** can b
367c0 65 20 69 6e 74 65 67 65 72 73 2c 20 66 6c 6f 61  e integers, floa
367d0 74 69 6e 67 20 70 6f 69 6e 74 20 76 61 6c 75 65  ting point value
367e0 73 2c 20 73 74 72 69 6e 67 73 2c 20 42 4c 4f 42  s, strings, BLOB
367f0 73 2c 20 6f 72 20 4e 55 4c 4c 2e 0a 2a 2a 0a 2a  s, or NULL..**.*
36800 2a 20 41 6e 20 73 71 6c 69 74 65 33 5f 76 61 6c  * An sqlite3_val
36810 75 65 20 6f 62 6a 65 63 74 20 6d 61 79 20 62 65  ue object may be
36820 20 65 69 74 68 65 72 20 22 70 72 6f 74 65 63 74   either "protect
36830 65 64 22 20 6f 72 20 22 75 6e 70 72 6f 74 65 63  ed" or "unprotec
36840 74 65 64 22 2e 0a 2a 2a 20 53 6f 6d 65 20 69 6e  ted"..** Some in
36850 74 65 72 66 61 63 65 73 20 72 65 71 75 69 72 65  terfaces require
36860 20 61 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c   a protected sql
36870 69 74 65 33 5f 76 61 6c 75 65 2e 20 20 4f 74 68  ite3_value.  Oth
36880 65 72 20 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a  er interfaces.**
36890 20 77 69 6c 6c 20 61 63 63 65 70 74 20 65 69 74   will accept eit
368a0 68 65 72 20 61 20 70 72 6f 74 65 63 74 65 64 20  her a protected 
368b0 6f 72 20 61 6e 20 75 6e 70 72 6f 74 65 63 74 65  or an unprotecte
368c0 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
368d0 0a 2a 2a 20 45 76 65 72 79 20 69 6e 74 65 72 66  .** Every interf
368e0 61 63 65 20 74 68 61 74 20 61 63 63 65 70 74 73  ace that accepts
368f0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 61   sqlite3_value a
36900 72 67 75 6d 65 6e 74 73 20 73 70 65 63 69 66 69  rguments specifi
36910 65 73 0a 2a 2a 20 77 68 65 74 68 65 72 20 6f 72  es.** whether or
36920 20 6e 6f 74 20 69 74 20 72 65 71 75 69 72 65 73   not it requires
36930 20 61 20 70 72 6f 74 65 63 74 65 64 20 73 71 6c   a protected sql
36940 69 74 65 33 5f 76 61 6c 75 65 2e 20 20 54 68 65  ite3_value.  The
36950 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c  .** [sqlite3_val
36960 75 65 5f 64 75 70 28 29 5d 20 69 6e 74 65 72 66  ue_dup()] interf
36970 61 63 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ace can be used 
36980 74 6f 20 63 6f 6e 73 74 72 75 63 74 20 61 20 6e  to construct a n
36990 65 77 20 0a 2a 2a 20 70 72 6f 74 65 63 74 65 64  ew .** protected
369a0 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 66   sqlite3_value f
369b0 72 6f 6d 20 61 6e 20 75 6e 70 72 6f 74 65 63 74  rom an unprotect
369c0 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
369d0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 74 65 72 6d  ..**.** The term
369e0 73 20 22 70 72 6f 74 65 63 74 65 64 22 20 61 6e  s "protected" an
369f0 64 20 22 75 6e 70 72 6f 74 65 63 74 65 64 22 20  d "unprotected" 
36a00 72 65 66 65 72 20 74 6f 20 77 68 65 74 68 65 72  refer to whether
36a10 20 6f 72 20 6e 6f 74 0a 2a 2a 20 61 20 6d 75 74   or not.** a mut
36a20 65 78 20 69 73 20 68 65 6c 64 2e 20 20 41 6e 20  ex is held.  An 
36a30 69 6e 74 65 72 6e 61 6c 20 6d 75 74 65 78 20 69  internal mutex i
36a40 73 20 68 65 6c 64 20 66 6f 72 20 61 20 70 72 6f  s held for a pro
36a50 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65  tected.** sqlite
36a60 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 62  3_value object b
36a70 75 74 20 6e 6f 20 6d 75 74 65 78 20 69 73 20 68  ut no mutex is h
36a80 65 6c 64 20 66 6f 72 20 61 6e 20 75 6e 70 72 6f  eld for an unpro
36a90 74 65 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65  tected.** sqlite
36aa0 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 2e 20  3_value object. 
36ab0 20 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f   If SQLite is co
36ac0 6d 70 69 6c 65 64 20 74 6f 20 62 65 20 73 69 6e  mpiled to be sin
36ad0 67 6c 65 2d 74 68 72 65 61 64 65 64 0a 2a 2a 20  gle-threaded.** 
36ae0 28 77 69 74 68 20 5b 53 51 4c 49 54 45 5f 54 48  (with [SQLITE_TH
36af0 52 45 41 44 53 41 46 45 3d 30 5d 20 61 6e 64 20  READSAFE=0] and 
36b00 77 69 74 68 20 5b 73 71 6c 69 74 65 33 5f 74 68  with [sqlite3_th
36b10 72 65 61 64 73 61 66 65 28 29 5d 20 72 65 74 75  readsafe()] retu
36b20 72 6e 69 6e 67 20 30 29 0a 2a 2a 20 6f 72 20 69  rning 0).** or i
36b30 66 20 53 51 4c 69 74 65 20 69 73 20 72 75 6e 20  f SQLite is run 
36b40 69 6e 20 6f 6e 65 20 6f 66 20 72 65 64 75 63 65  in one of reduce
36b50 64 20 6d 75 74 65 78 20 6d 6f 64 65 73 20 0a 2a  d mutex modes .*
36b60 2a 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  * [SQLITE_CONFIG
36b70 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d 20 6f  _SINGLETHREAD] o
36b80 72 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  r [SQLITE_CONFIG
36b90 5f 4d 55 4c 54 49 54 48 52 45 41 44 5d 0a 2a 2a  _MULTITHREAD].**
36ba0 20 74 68 65 6e 20 74 68 65 72 65 20 69 73 20 6e   then there is n
36bb0 6f 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62 65  o distinction be
36bc0 74 77 65 65 6e 20 70 72 6f 74 65 63 74 65 64 20  tween protected 
36bd0 61 6e 64 20 75 6e 70 72 6f 74 65 63 74 65 64 0a  and unprotected.
36be0 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ** sqlite3_value
36bf0 20 6f 62 6a 65 63 74 73 20 61 6e 64 20 74 68 65   objects and the
36c00 79 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e  y can be used in
36c10 74 65 72 63 68 61 6e 67 65 61 62 6c 79 2e 20 20  terchangeably.  
36c20 48 6f 77 65 76 65 72 2c 0a 2a 2a 20 66 6f 72 20  However,.** for 
36c30 6d 61 78 69 6d 75 6d 20 63 6f 64 65 20 70 6f 72  maximum code por
36c40 74 61 62 69 6c 69 74 79 20 69 74 20 69 73 20 72  tability it is r
36c50 65 63 6f 6d 6d 65 6e 64 65 64 20 74 68 61 74 20  ecommended that 
36c60 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20  applications.** 
36c70 73 74 69 6c 6c 20 6d 61 6b 65 20 74 68 65 20 64  still make the d
36c80 69 73 74 69 6e 63 74 69 6f 6e 20 62 65 74 77 65  istinction betwe
36c90 65 6e 20 70 72 6f 74 65 63 74 65 64 20 61 6e 64  en protected and
36ca0 20 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20   unprotected.** 
36cb0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62  sqlite3_value ob
36cc0 6a 65 63 74 73 20 65 76 65 6e 20 77 68 65 6e 20  jects even when 
36cd0 6e 6f 74 20 73 74 72 69 63 74 6c 79 20 72 65 71  not strictly req
36ce0 75 69 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  uired..**.** ^Th
36cf0 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  e sqlite3_value 
36d00 6f 62 6a 65 63 74 73 20 74 68 61 74 20 61 72 65  objects that are
36d10 20 70 61 73 73 65 64 20 61 73 20 70 61 72 61 6d   passed as param
36d20 65 74 65 72 73 20 69 6e 74 6f 20 74 68 65 0a 2a  eters into the.*
36d30 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  * implementation
36d40 20 6f 66 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e   of [application
36d50 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e  -defined SQL fun
36d60 63 74 69 6f 6e 73 5d 20 61 72 65 20 70 72 6f 74  ctions] are prot
36d70 65 63 74 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 73  ected..** ^The s
36d80 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
36d90 65 63 74 20 72 65 74 75 72 6e 65 64 20 62 79 0a  ect returned by.
36da0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75  ** [sqlite3_colu
36db0 6d 6e 5f 76 61 6c 75 65 28 29 5d 20 69 73 20 75  mn_value()] is u
36dc0 6e 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20 55  nprotected..** U
36dd0 6e 70 72 6f 74 65 63 74 65 64 20 73 71 6c 69 74  nprotected sqlit
36de0 65 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 73  e3_value objects
36df0 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75 73 65   may only be use
36e00 64 20 61 73 20 61 72 67 75 6d 65 6e 74 73 0a 2a  d as arguments.*
36e10 2a 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 72 65  * to [sqlite3_re
36e20 73 75 6c 74 5f 76 61 6c 75 65 28 29 5d 2c 20 5b  sult_value()], [
36e30 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 76 61 6c  sqlite3_bind_val
36e40 75 65 28 29 5d 2c 20 61 6e 64 0a 2a 2a 20 5b 73  ue()], and.** [s
36e50 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f 64 75 70  qlite3_value_dup
36e60 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c  ()]..** The [sql
36e70 69 74 65 33 5f 76 61 6c 75 65 5f 62 6c 6f 62 20  ite3_value_blob 
36e80 7c 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f  | sqlite3_value_
36e90 74 79 70 65 28 29 5d 20 66 61 6d 69 6c 79 20 6f  type()] family o
36ea0 66 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  f.** interfaces 
36eb0 72 65 71 75 69 72 65 20 70 72 6f 74 65 63 74 65  require protecte
36ec0 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20  d sqlite3_value 
36ed0 6f 62 6a 65 63 74 73 2e 0a 2a 2f 0a 74 79 70 65  objects..*/.type
36ee0 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
36ef0 65 33 5f 76 61 6c 75 65 20 73 71 6c 69 74 65 33  e3_value sqlite3
36f00 5f 76 61 6c 75 65 3b 0a 0a 2f 2a 0a 2a 2a 20 43  _value;../*.** C
36f10 41 50 49 33 52 45 46 3a 20 53 51 4c 20 46 75 6e  API3REF: SQL Fun
36f20 63 74 69 6f 6e 20 43 6f 6e 74 65 78 74 20 4f 62  ction Context Ob
36f30 6a 65 63 74 0a 2a 2a 0a 2a 2a 20 54 68 65 20 63  ject.**.** The c
36f40 6f 6e 74 65 78 74 20 69 6e 20 77 68 69 63 68 20  ontext in which 
36f50 61 6e 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  an SQL function 
36f60 65 78 65 63 75 74 65 73 20 69 73 20 73 74 6f 72  executes is stor
36f70 65 64 20 69 6e 20 61 6e 0a 2a 2a 20 73 71 6c 69  ed in an.** sqli
36f80 74 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65  te3_context obje
36f90 63 74 2e 20 20 5e 41 20 70 6f 69 6e 74 65 72 20  ct.  ^A pointer 
36fa0 74 6f 20 61 6e 20 73 71 6c 69 74 65 33 5f 63 6f  to an sqlite3_co
36fb0 6e 74 65 78 74 20 6f 62 6a 65 63 74 0a 2a 2a 20  ntext object.** 
36fc0 69 73 20 61 6c 77 61 79 73 20 66 69 72 73 74 20  is always first 
36fd0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b 61 70  parameter to [ap
36fe0 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
36ff0 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 5d  d SQL functions]
37000 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63 61  ..** The applica
37010 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51 4c  tion-defined SQL
37020 20 66 75 6e 63 74 69 6f 6e 20 69 6d 70 6c 65 6d   function implem
37030 65 6e 74 61 74 69 6f 6e 20 77 69 6c 6c 20 70 61  entation will pa
37040 73 73 20 74 68 69 73 0a 2a 2a 20 70 6f 69 6e 74  ss this.** point
37050 65 72 20 74 68 72 6f 75 67 68 20 69 6e 74 6f 20  er through into 
37060 63 61 6c 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65  calls to [sqlite
37070 33 5f 72 65 73 75 6c 74 5f 69 6e 74 20 7c 20 73  3_result_int | s
37080 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 28 29 5d  qlite3_result()]
37090 2c 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 61 67  ,.** [sqlite3_ag
370a0 67 72 65 67 61 74 65 5f 63 6f 6e 74 65 78 74 28  gregate_context(
370b0 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 75 73 65  )], [sqlite3_use
370c0 72 5f 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 5b 73  r_data()],.** [s
370d0 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 5f 64  qlite3_context_d
370e0 62 5f 68 61 6e 64 6c 65 28 29 5d 2c 20 5b 73 71  b_handle()], [sq
370f0 6c 69 74 65 33 5f 67 65 74 5f 61 75 78 64 61 74  lite3_get_auxdat
37100 61 28 29 5d 2c 0a 2a 2a 20 61 6e 64 2f 6f 72 20  a()],.** and/or 
37110 5b 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75 78  [sqlite3_set_aux
37120 64 61 74 61 28 29 5d 2e 0a 2a 2f 0a 74 79 70 65  data()]..*/.type
37130 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74  def struct sqlit
37140 65 33 5f 63 6f 6e 74 65 78 74 20 73 71 6c 69 74  e3_context sqlit
37150 65 33 5f 63 6f 6e 74 65 78 74 3b 0a 0a 2f 2a 0a  e3_context;../*.
37160 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 42 69 6e  ** CAPI3REF: Bin
37170 64 69 6e 67 20 56 61 6c 75 65 73 20 54 6f 20 50  ding Values To P
37180 72 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e  repared Statemen
37190 74 73 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20  ts.** KEYWORDS: 
371a0 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72 7d  {host parameter}
371b0 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74 65 72   {host parameter
371c0 73 7d 20 7b 68 6f 73 74 20 70 61 72 61 6d 65 74  s} {host paramet
371d0 65 72 20 6e 61 6d 65 7d 0a 2a 2a 20 4b 45 59 57  er name}.** KEYW
371e0 4f 52 44 53 3a 20 7b 53 51 4c 20 70 61 72 61 6d  ORDS: {SQL param
371f0 65 74 65 72 7d 20 7b 53 51 4c 20 70 61 72 61 6d  eter} {SQL param
37200 65 74 65 72 73 7d 20 7b 70 61 72 61 6d 65 74 65  eters} {paramete
37210 72 20 62 69 6e 64 69 6e 67 7d 0a 2a 2a 20 4d 45  r binding}.** ME
37220 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74  THOD: sqlite3_st
37230 6d 74 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68  mt.**.** ^(In th
37240 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
37250 74 65 78 74 20 69 6e 70 75 74 20 74 6f 20 5b 73  text input to [s
37260 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
37270 32 28 29 5d 20 61 6e 64 20 69 74 73 20 76 61 72  2()] and its var
37280 69 61 6e 74 73 2c 0a 2a 2a 20 6c 69 74 65 72 61  iants,.** litera
37290 6c 73 20 6d 61 79 20 62 65 20 72 65 70 6c 61 63  ls may be replac
372a0 65 64 20 62 79 20 61 20 5b 70 61 72 61 6d 65 74  ed by a [paramet
372b0 65 72 5d 20 74 68 61 74 20 6d 61 74 63 68 65 73  er] that matches
372c0 20 6f 6e 65 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e   one of followin
372d0 67 0a 2a 2a 20 74 65 6d 70 6c 61 74 65 73 3a 0a  g.** templates:.
372e0 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c  **.** <ul>.** <l
372f0 69 3e 20 20 3f 0a 2a 2a 20 3c 6c 69 3e 20 20 3f  i>  ?.** <li>  ?
37300 4e 4e 4e 0a 2a 2a 20 3c 6c 69 3e 20 20 3a 56 56  NNN.** <li>  :VV
37310 56 0a 2a 2a 20 3c 6c 69 3e 20 20 40 56 56 56 0a  V.** <li>  @VVV.
37320 2a 2a 20 3c 6c 69 3e 20 20 24 56 56 56 0a 2a 2a  ** <li>  $VVV.**
37330 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 49 6e 20   </ul>.**.** In 
37340 74 68 65 20 74 65 6d 70 6c 61 74 65 73 20 61 62  the templates ab
37350 6f 76 65 2c 20 4e 4e 4e 20 72 65 70 72 65 73 65  ove, NNN represe
37360 6e 74 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6c  nts an integer l
37370 69 74 65 72 61 6c 2c 0a 2a 2a 20 61 6e 64 20 56  iteral,.** and V
37380 56 56 20 72 65 70 72 65 73 65 6e 74 73 20 61 6e  VV represents an
37390 20 61 6c 70 68 61 6e 75 6d 65 72 69 63 20 69 64   alphanumeric id
373a0 65 6e 74 69 66 69 65 72 2e 29 5e 20 20 5e 54 68  entifier.)^  ^Th
373b0 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 65 73  e values of thes
373c0 65 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72 73 20  e.** parameters 
373d0 28 61 6c 73 6f 20 63 61 6c 6c 65 64 20 22 68 6f  (also called "ho
373e0 73 74 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d  st parameter nam
373f0 65 73 22 20 6f 72 20 22 53 51 4c 20 70 61 72 61  es" or "SQL para
37400 6d 65 74 65 72 73 22 29 0a 2a 2a 20 63 61 6e 20  meters").** can 
37410 62 65 20 73 65 74 20 75 73 69 6e 67 20 74 68 65  be set using the
37420 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28   sqlite3_bind_*(
37430 29 20 72 6f 75 74 69 6e 65 73 20 64 65 66 69 6e  ) routines defin
37440 65 64 20 68 65 72 65 2e 0a 2a 2a 0a 2a 2a 20 5e  ed here..**.** ^
37450 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
37460 6e 74 20 74 6f 20 74 68 65 20 73 71 6c 69 74 65  nt to the sqlite
37470 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69  3_bind_*() routi
37480 6e 65 73 20 69 73 20 61 6c 77 61 79 73 0a 2a 2a  nes is always.**
37490 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
374a0 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d  e [sqlite3_stmt]
374b0 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64   object returned
374c0 20 66 72 6f 6d 0a 2a 2a 20 5b 73 71 6c 69 74 65   from.** [sqlite
374d0 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20  3_prepare_v2()] 
374e0 6f 72 20 69 74 73 20 76 61 72 69 61 6e 74 73 2e  or its variants.
374f0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 65 63 6f  .**.** ^The seco
37500 6e 64 20 61 72 67 75 6d 65 6e 74 20 69 73 20 74  nd argument is t
37510 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20  he index of the 
37520 53 51 4c 20 70 61 72 61 6d 65 74 65 72 20 74 6f  SQL parameter to
37530 20 62 65 20 73 65 74 2e 0a 2a 2a 20 5e 54 68 65   be set..** ^The
37540 20 6c 65 66 74 6d 6f 73 74 20 53 51 4c 20 70 61   leftmost SQL pa
37550 72 61 6d 65 74 65 72 20 68 61 73 20 61 6e 20 69  rameter has an i
37560 6e 64 65 78 20 6f 66 20 31 2e 20 20 5e 57 68 65  ndex of 1.  ^Whe
37570 6e 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 64  n the same named
37580 0a 2a 2a 20 53 51 4c 20 70 61 72 61 6d 65 74 65  .** SQL paramete
37590 72 20 69 73 20 75 73 65 64 20 6d 6f 72 65 20 74  r is used more t
375a0 68 61 6e 20 6f 6e 63 65 2c 20 73 65 63 6f 6e 64  han once, second
375b0 20 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74 0a   and subsequent.
375c0 2a 2a 20 6f 63 63 75 72 72 65 6e 63 65 73 20 68  ** occurrences h
375d0 61 76 65 20 74 68 65 20 73 61 6d 65 20 69 6e 64  ave the same ind
375e0 65 78 20 61 73 20 74 68 65 20 66 69 72 73 74 20  ex as the first 
375f0 6f 63 63 75 72 72 65 6e 63 65 2e 0a 2a 2a 20 5e  occurrence..** ^
37600 54 68 65 20 69 6e 64 65 78 20 66 6f 72 20 6e 61  The index for na
37610 6d 65 64 20 70 61 72 61 6d 65 74 65 72 73 20 63  med parameters c
37620 61 6e 20 62 65 20 6c 6f 6f 6b 65 64 20 75 70 20  an be looked up 
37630 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b 73 71  using the.** [sq
37640 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
37650 65 74 65 72 5f 69 6e 64 65 78 28 29 5d 20 41 50  eter_index()] AP
37660 49 20 69 66 20 64 65 73 69 72 65 64 2e 20 20 5e  I if desired.  ^
37670 54 68 65 20 69 6e 64 65 78 0a 2a 2a 20 66 6f 72  The index.** for
37680 20 22 3f 4e 4e 4e 22 20 70 61 72 61 6d 65 74 65   "?NNN" paramete
37690 72 73 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  rs is the value 
376a0 6f 66 20 4e 4e 4e 2e 0a 2a 2a 20 5e 54 68 65 20  of NNN..** ^The 
376b0 4e 4e 4e 20 76 61 6c 75 65 20 6d 75 73 74 20 62  NNN value must b
376c0 65 20 62 65 74 77 65 65 6e 20 31 20 61 6e 64 20  e between 1 and 
376d0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 69 6d  the [sqlite3_lim
376e0 69 74 28 29 5d 0a 2a 2a 20 70 61 72 61 6d 65 74  it()].** paramet
376f0 65 72 20 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54  er [SQLITE_LIMIT
37700 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52  _VARIABLE_NUMBER
37710 5d 20 28 64 65 66 61 75 6c 74 20 76 61 6c 75 65  ] (default value
37720 3a 20 39 39 39 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54  : 999)..**.** ^T
37730 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
37740 74 20 69 73 20 74 68 65 20 76 61 6c 75 65 20 74  t is the value t
37750 6f 20 62 69 6e 64 20 74 6f 20 74 68 65 20 70 61  o bind to the pa
37760 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66 20  rameter..** ^If 
37770 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d 65  the third parame
37780 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62  ter to sqlite3_b
37790 69 6e 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71  ind_text() or sq
377a0 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
377b0 36 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65  6().** or sqlite
377c0 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69 73  3_bind_blob() is
377d0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20   a NULL pointer 
377e0 74 68 65 6e 20 74 68 65 20 66 6f 75 72 74 68 20  then the fourth 
377f0 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 69 73 20  parameter.** is 
37800 69 67 6e 6f 72 65 64 20 61 6e 64 20 74 68 65 20  ignored and the 
37810 65 6e 64 20 72 65 73 75 6c 74 20 69 73 20 74 68  end result is th
37820 65 20 73 61 6d 65 20 61 73 20 73 71 6c 69 74 65  e same as sqlite
37830 33 5f 62 69 6e 64 5f 6e 75 6c 6c 28 29 2e 0a 2a  3_bind_null()..*
37840 2a 0a 2a 2a 20 5e 28 49 6e 20 74 68 6f 73 65 20  *.** ^(In those 
37850 72 6f 75 74 69 6e 65 73 20 74 68 61 74 20 68 61  routines that ha
37860 76 65 20 61 20 66 6f 75 72 74 68 20 61 72 67 75  ve a fourth argu
37870 6d 65 6e 74 2c 20 69 74 73 20 76 61 6c 75 65 20  ment, its value 
37880 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65 72  is the.** number
37890 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
378a0 20 70 61 72 61 6d 65 74 65 72 2e 20 20 54 6f 20   parameter.  To 
378b0 62 65 20 63 6c 65 61 72 3a 20 74 68 65 20 76 61  be clear: the va
378c0 6c 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75  lue is the.** nu
378d0 6d 62 65 72 20 6f 66 20 3c 75 3e 62 79 74 65 73  mber of <u>bytes
378e0 3c 2f 75 3e 20 69 6e 20 74 68 65 20 76 61 6c 75  </u> in the valu
378f0 65 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65  e, not the numbe
37900 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 2e  r of characters.
37910 29 5e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 6f  )^.** ^If the fo
37920 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 74  urth parameter t
37930 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  o sqlite3_bind_t
37940 65 78 74 28 29 20 6f 72 20 73 71 6c 69 74 65 33  ext() or sqlite3
37950 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 0a 2a  _bind_text16().*
37960 2a 20 69 73 20 6e 65 67 61 74 69 76 65 2c 20 74  * is negative, t
37970 68 65 6e 20 74 68 65 20 6c 65 6e 67 74 68 20 6f  hen the length o
37980 66 20 74 68 65 20 73 74 72 69 6e 67 20 69 73 0a  f the string is.
37990 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ** the number of
379a0 20 62 79 74 65 73 20 75 70 20 74 6f 20 74 68 65   bytes up to the
379b0 20 66 69 72 73 74 20 7a 65 72 6f 20 74 65 72 6d   first zero term
379c0 69 6e 61 74 6f 72 2e 0a 2a 2a 20 49 66 20 74 68  inator..** If th
379d0 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
379e0 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69  er to sqlite3_bi
379f0 6e 64 5f 62 6c 6f 62 28 29 20 69 73 20 6e 65 67  nd_blob() is neg
37a00 61 74 69 76 65 2c 20 74 68 65 6e 0a 2a 2a 20 74  ative, then.** t
37a10 68 65 20 62 65 68 61 76 69 6f 72 20 69 73 20 75  he behavior is u
37a20 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 20 49 66 20  ndefined..** If 
37a30 61 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 66  a non-negative f
37a40 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20  ourth parameter 
37a50 69 73 20 70 72 6f 76 69 64 65 64 20 74 6f 20 73  is provided to s
37a60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
37a70 28 29 0a 2a 2a 20 6f 72 20 73 71 6c 69 74 65 33  ().** or sqlite3
37a80 5f 62 69 6e 64 5f 74 65 78 74 31 36 28 29 20 6f  _bind_text16() o
37a90 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  r sqlite3_bind_t
37aa0 65 78 74 36 34 28 29 20 74 68 65 6e 0a 2a 2a 20  ext64() then.** 
37ab0 74 68 61 74 20 70 61 72 61 6d 65 74 65 72 20 6d  that parameter m
37ac0 75 73 74 20 62 65 20 74 68 65 20 62 79 74 65 20  ust be the byte 
37ad0 6f 66 66 73 65 74 0a 2a 2a 20 77 68 65 72 65 20  offset.** where 
37ae0 74 68 65 20 4e 55 4c 20 74 65 72 6d 69 6e 61 74  the NUL terminat
37af0 6f 72 20 77 6f 75 6c 64 20 6f 63 63 75 72 20 61  or would occur a
37b00 73 73 75 6d 69 6e 67 20 74 68 65 20 73 74 72 69  ssuming the stri
37b10 6e 67 20 77 65 72 65 20 4e 55 4c 0a 2a 2a 20 74  ng were NUL.** t
37b20 65 72 6d 69 6e 61 74 65 64 2e 20 20 49 66 20 61  erminated.  If a
37b30 6e 79 20 4e 55 4c 20 63 68 61 72 61 63 74 65 72  ny NUL character
37b40 73 20 6f 63 63 75 72 20 61 74 20 62 79 74 65 20  s occur at byte 
37b50 6f 66 66 73 65 74 73 20 6c 65 73 73 20 74 68 61  offsets less tha
37b60 6e 20 0a 2a 2a 20 74 68 65 20 76 61 6c 75 65 20  n .** the value 
37b70 6f 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  of the fourth pa
37b80 72 61 6d 65 74 65 72 20 74 68 65 6e 20 74 68 65  rameter then the
37b90 20 72 65 73 75 6c 74 69 6e 67 20 73 74 72 69 6e   resulting strin
37ba0 67 20 76 61 6c 75 65 20 77 69 6c 6c 0a 2a 2a 20  g value will.** 
37bb0 63 6f 6e 74 61 69 6e 20 65 6d 62 65 64 64 65 64  contain embedded
37bc0 20 4e 55 4c 73 2e 20 20 54 68 65 20 72 65 73 75   NULs.  The resu
37bd0 6c 74 20 6f 66 20 65 78 70 72 65 73 73 69 6f 6e  lt of expression
37be0 73 20 69 6e 76 6f 6c 76 69 6e 67 20 73 74 72 69  s involving stri
37bf0 6e 67 73 0a 2a 2a 20 77 69 74 68 20 65 6d 62 65  ngs.** with embe
37c00 64 64 65 64 20 4e 55 4c 73 20 69 73 20 75 6e 64  dded NULs is und
37c10 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54  efined..**.** ^T
37c20 68 65 20 66 69 66 74 68 20 61 72 67 75 6d 65 6e  he fifth argumen
37c30 74 20 74 6f 20 74 68 65 20 42 4c 4f 42 20 61 6e  t to the BLOB an
37c40 64 20 73 74 72 69 6e 67 20 62 69 6e 64 69 6e 67  d string binding
37c50 20 69 6e 74 65 72 66 61 63 65 73 0a 2a 2a 20 69   interfaces.** i
37c60 73 20 61 20 64 65 73 74 72 75 63 74 6f 72 20 75  s a destructor u
37c70 73 65 64 20 74 6f 20 64 69 73 70 6f 73 65 20 6f  sed to dispose o
37c80 66 20 74 68 65 20 42 4c 4f 42 20 6f 72 0a 2a 2a  f the BLOB or.**
37c90 20 73 74 72 69 6e 67 20 61 66 74 65 72 20 53 51   string after SQ
37ca0 4c 69 74 65 20 68 61 73 20 66 69 6e 69 73 68 65  Lite has finishe
37cb0 64 20 77 69 74 68 20 69 74 2e 20 20 5e 54 68 65  d with it.  ^The
37cc0 20 64 65 73 74 72 75 63 74 6f 72 20 69 73 20 63   destructor is c
37cd0 61 6c 6c 65 64 0a 2a 2a 20 74 6f 20 64 69 73 70  alled.** to disp
37ce0 6f 73 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20  ose of the BLOB 
37cf0 6f 72 20 73 74 72 69 6e 67 20 65 76 65 6e 20 69  or string even i
37d00 66 20 74 68 65 20 63 61 6c 6c 20 74 6f 20 62 69  f the call to bi
37d10 6e 64 20 41 50 49 20 66 61 69 6c 73 2e 0a 2a 2a  nd API fails..**
37d20 20 5e 49 66 20 74 68 65 20 66 69 66 74 68 20 61   ^If the fifth a
37d30 72 67 75 6d 65 6e 74 20 69 73 0a 2a 2a 20 74 68  rgument is.** th
37d40 65 20 73 70 65 63 69 61 6c 20 76 61 6c 75 65 20  e special value 
37d50 5b 53 51 4c 49 54 45 5f 53 54 41 54 49 43 5d 2c  [SQLITE_STATIC],
37d60 20 74 68 65 6e 20 53 51 4c 69 74 65 20 61 73 73   then SQLite ass
37d70 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a 2a 2a  umes that the.**
37d80 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20   information is 
37d90 69 6e 20 73 74 61 74 69 63 2c 20 75 6e 6d 61 6e  in static, unman
37da0 61 67 65 64 20 73 70 61 63 65 20 61 6e 64 20 64  aged space and d
37db0 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20  oes not need to 
37dc0 62 65 20 66 72 65 65 64 2e 0a 2a 2a 20 5e 49 66  be freed..** ^If
37dd0 20 74 68 65 20 66 69 66 74 68 20 61 72 67 75 6d   the fifth argum
37de0 65 6e 74 20 68 61 73 20 74 68 65 20 76 61 6c 75  ent has the valu
37df0 65 20 5b 53 51 4c 49 54 45 5f 54 52 41 4e 53 49  e [SQLITE_TRANSI
37e00 45 4e 54 5d 2c 20 74 68 65 6e 0a 2a 2a 20 53 51  ENT], then.** SQ
37e10 4c 69 74 65 20 6d 61 6b 65 73 20 69 74 73 20 6f  Lite makes its o
37e20 77 6e 20 70 72 69 76 61 74 65 20 63 6f 70 79 20  wn private copy 
37e30 6f 66 20 74 68 65 20 64 61 74 61 20 69 6d 6d 65  of the data imme
37e40 64 69 61 74 65 6c 79 2c 20 62 65 66 6f 72 65 0a  diately, before.
37e50 2a 2a 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62  ** the sqlite3_b
37e60 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 20  ind_*() routine 
37e70 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e  returns..**.** ^
37e80 54 68 65 20 73 69 78 74 68 20 61 72 67 75 6d 65  The sixth argume
37e90 6e 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69  nt to sqlite3_bi
37ea0 6e 64 5f 74 65 78 74 36 34 28 29 20 6d 75 73 74  nd_text64() must
37eb0 20 62 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 5b 53   be one of.** [S
37ec0 51 4c 49 54 45 5f 55 54 46 38 5d 2c 20 5b 53 51  QLITE_UTF8], [SQ
37ed0 4c 49 54 45 5f 55 54 46 31 36 5d 2c 20 5b 53 51  LITE_UTF16], [SQ
37ee0 4c 49 54 45 5f 55 54 46 31 36 42 45 5d 2c 20 6f  LITE_UTF16BE], o
37ef0 72 20 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 4c  r [SQLITE_UTF16L
37f00 45 5d 0a 2a 2a 20 74 6f 20 73 70 65 63 69 66 79  E].** to specify
37f10 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20 6f 66   the encoding of
37f20 20 74 68 65 20 74 65 78 74 20 69 6e 20 74 68 65   the text in the
37f30 20 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72   third parameter
37f40 2e 20 20 49 66 0a 2a 2a 20 74 68 65 20 73 69 78  .  If.** the six
37f50 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73  th argument to s
37f60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
37f70 36 34 28 29 20 69 73 20 6e 6f 74 20 6f 6e 65 20  64() is not one 
37f80 6f 66 20 74 68 65 0a 2a 2a 20 61 6c 6c 6f 77 65  of the.** allowe
37f90 64 20 76 61 6c 75 65 73 20 73 68 6f 77 6e 20 61  d values shown a
37fa0 62 6f 76 65 2c 20 6f 72 20 69 66 20 74 68 65 20  bove, or if the 
37fb0 74 65 78 74 20 65 6e 63 6f 64 69 6e 67 20 69 73  text encoding is
37fc0 20 64 69 66 66 65 72 65 6e 74 0a 2a 2a 20 66 72   different.** fr
37fd0 6f 6d 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 20  om the encoding 
37fe0 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
37ff0 20 73 69 78 74 68 20 70 61 72 61 6d 65 74 65 72   sixth parameter
38000 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61 76  , then the behav
38010 69 6f 72 0a 2a 2a 20 69 73 20 75 6e 64 65 66 69  ior.** is undefi
38020 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ned..**.** ^The 
38030 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 7a 65 72  sqlite3_bind_zer
38040 6f 62 6c 6f 62 28 29 20 72 6f 75 74 69 6e 65 20  oblob() routine 
38050 62 69 6e 64 73 20 61 20 42 4c 4f 42 20 6f 66 20  binds a BLOB of 
38060 6c 65 6e 67 74 68 20 4e 20 74 68 61 74 0a 2a 2a  length N that.**
38070 20 69 73 20 66 69 6c 6c 65 64 20 77 69 74 68 20   is filled with 
38080 7a 65 72 6f 65 73 2e 20 20 5e 41 20 7a 65 72 6f  zeroes.  ^A zero
38090 62 6c 6f 62 20 75 73 65 73 20 61 20 66 69 78 65  blob uses a fixe
380a0 64 20 61 6d 6f 75 6e 74 20 6f 66 20 6d 65 6d 6f  d amount of memo
380b0 72 79 0a 2a 2a 20 28 6a 75 73 74 20 61 6e 20 69  ry.** (just an i
380c0 6e 74 65 67 65 72 20 74 6f 20 68 6f 6c 64 20 69  nteger to hold i
380d0 74 73 20 73 69 7a 65 29 20 77 68 69 6c 65 20 69  ts size) while i
380e0 74 20 69 73 20 62 65 69 6e 67 20 70 72 6f 63 65  t is being proce
380f0 73 73 65 64 2e 0a 2a 2a 20 5a 65 72 6f 62 6c 6f  ssed..** Zeroblo
38100 62 73 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20  bs are intended 
38110 74 6f 20 73 65 72 76 65 20 61 73 20 70 6c 61 63  to serve as plac
38120 65 68 6f 6c 64 65 72 73 20 66 6f 72 20 42 4c 4f  eholders for BLO
38130 42 73 20 77 68 6f 73 65 0a 2a 2a 20 63 6f 6e 74  Bs whose.** cont
38140 65 6e 74 20 69 73 20 6c 61 74 65 72 20 77 72 69  ent is later wri
38150 74 74 65 6e 20 75 73 69 6e 67 0a 2a 2a 20 5b 73  tten using.** [s
38160 71 6c 69 74 65 33 5f 62 6c 6f 62 5f 6f 70 65 6e  qlite3_blob_open
38170 20 7c 20 69 6e 63 72 65 6d 65 6e 74 61 6c 20 42   | incremental B
38180 4c 4f 42 20 49 2f 4f 5d 20 72 6f 75 74 69 6e 65  LOB I/O] routine
38190 73 2e 0a 2a 2a 20 5e 41 20 6e 65 67 61 74 69 76  s..** ^A negativ
381a0 65 20 76 61 6c 75 65 20 66 6f 72 20 74 68 65 20  e value for the 
381b0 7a 65 72 6f 62 6c 6f 62 20 72 65 73 75 6c 74 73  zeroblob results
381c0 20 69 6e 20 61 20 7a 65 72 6f 2d 6c 65 6e 67 74   in a zero-lengt
381d0 68 20 42 4c 4f 42 2e 0a 2a 2a 0a 2a 2a 20 5e 54  h BLOB..**.** ^T
381e0 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  he sqlite3_bind_
381f0 70 6f 69 6e 74 65 72 28 53 2c 49 2c 50 2c 54 2c  pointer(S,I,P,T,
38200 44 29 20 72 6f 75 74 69 6e 65 20 63 61 75 73 65  D) routine cause
38210 73 20 74 68 65 20 49 2d 74 68 20 70 61 72 61 6d  s the I-th param
38220 65 74 65 72 20 69 6e 0a 2a 2a 20 5b 70 72 65 70  eter in.** [prep
38230 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
38240 53 20 74 6f 20 68 61 76 65 20 61 6e 20 53 51 4c  S to have an SQL
38250 20 76 61 6c 75 65 20 6f 66 20 4e 55 4c 4c 2c 20   value of NULL, 
38260 62 75 74 20 74 6f 20 61 6c 73 6f 20 62 65 0a 2a  but to also be.*
38270 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  * associated wit
38280 68 20 74 68 65 20 70 6f 69 6e 74 65 72 20 50 20  h the pointer P 
38290 6f 66 20 74 79 70 65 20 54 2e 20 20 5e 44 20 69  of type T.  ^D i
382a0 73 20 65 69 74 68 65 72 20 61 20 4e 55 4c 4c 20  s either a NULL 
382b0 70 6f 69 6e 74 65 72 20 6f 72 0a 2a 2a 20 61 20  pointer or.** a 
382c0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 64 65 73  pointer to a des
382d0 74 72 75 63 74 6f 72 20 66 75 6e 63 74 69 6f 6e  tructor function
382e0 20 66 6f 72 20 50 2e 20 5e 53 51 4c 69 74 65 20   for P. ^SQLite 
382f0 77 69 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 0a  will invoke the.
38300 2a 2a 20 64 65 73 74 72 75 63 74 6f 72 20 44 20  ** destructor D 
38310 77 69 74 68 20 61 20 73 69 6e 67 6c 65 20 61 72  with a single ar
38320 67 75 6d 65 6e 74 20 6f 66 20 50 20 77 68 65 6e  gument of P when
38330 20 69 74 20 69 73 20 66 69 6e 69 73 68 65 64 20   it is finished 
38340 75 73 69 6e 67 0a 2a 2a 20 50 2e 20 20 54 68 65  using.** P.  The
38350 20 54 20 70 61 72 61 6d 65 74 65 72 20 73 68 6f   T parameter sho
38360 75 6c 64 20 62 65 20 61 20 73 74 61 74 69 63 20  uld be a static 
38370 73 74 72 69 6e 67 2c 20 70 72 65 66 65 72 61 62  string, preferab
38380 6c 79 20 61 20 73 74 72 69 6e 67 0a 2a 2a 20 6c  ly a string.** l
38390 69 74 65 72 61 6c 2e 20 54 68 65 20 73 71 6c 69  iteral. The sqli
383a0 74 65 33 5f 62 69 6e 64 5f 70 6f 69 6e 74 65 72  te3_bind_pointer
383b0 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 70 61  () routine is pa
383c0 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 70 6f  rt of the.** [po
383d0 69 6e 74 65 72 20 70 61 73 73 69 6e 67 20 69 6e  inter passing in
383e0 74 65 72 66 61 63 65 5d 20 61 64 64 65 64 20 66  terface] added f
383f0 6f 72 20 53 51 4c 69 74 65 20 33 2e 32 30 2e 30  or SQLite 3.20.0
38400 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 61 6e 79 20  ..**.** ^If any 
38410 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62  of the sqlite3_b
38420 69 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73  ind_*() routines
38430 20 61 72 65 20 63 61 6c 6c 65 64 20 77 69 74 68   are called with
38440 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 0a   a NULL pointer.
38450 2a 2a 20 66 6f 72 20 74 68 65 20 5b 70 72 65 70  ** for the [prep
38460 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
38470 6f 72 20 77 69 74 68 20 61 20 70 72 65 70 61 72  or with a prepar
38480 65 64 20 73 74 61 74 65 6d 65 6e 74 20 66 6f 72  ed statement for
38490 20 77 68 69 63 68 0a 2a 2a 20 5b 73 71 6c 69 74   which.** [sqlit
384a0 65 33 5f 73 74 65 70 28 29 5d 20 68 61 73 20 62  e3_step()] has b
384b0 65 65 6e 20 63 61 6c 6c 65 64 20 6d 6f 72 65 20  een called more 
384c0 72 65 63 65 6e 74 6c 79 20 74 68 61 6e 20 5b 73  recently than [s
384d0 71 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 2c  qlite3_reset()],
384e0 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20 63 61 6c  .** then the cal
384f0 6c 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53  l will return [S
38500 51 4c 49 54 45 5f 4d 49 53 55 53 45 5d 2e 20 20  QLITE_MISUSE].  
38510 49 66 20 61 6e 79 20 73 71 6c 69 74 65 33 5f 62  If any sqlite3_b
38520 69 6e 64 5f 28 29 0a 2a 2a 20 72 6f 75 74 69 6e  ind_().** routin
38530 65 20 69 73 20 70 61 73 73 65 64 20 61 20 5b 70  e is passed a [p
38540 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
38550 74 5d 20 74 68 61 74 20 68 61 73 20 62 65 65 6e  t] that has been
38560 20 66 69 6e 61 6c 69 7a 65 64 2c 20 74 68 65 0a   finalized, the.
38570 2a 2a 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64  ** result is und
38580 65 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61  efined and proba
38590 62 6c 79 20 68 61 72 6d 66 75 6c 2e 0a 2a 2a 0a  bly harmful..**.
385a0 2a 2a 20 5e 42 69 6e 64 69 6e 67 73 20 61 72 65  ** ^Bindings are
385b0 20 6e 6f 74 20 63 6c 65 61 72 65 64 20 62 79 20   not cleared by 
385c0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 72 65 73  the [sqlite3_res
385d0 65 74 28 29 5d 20 72 6f 75 74 69 6e 65 2e 0a 2a  et()] ro