System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 762c070d292d7ff7e90f81127cbc58f33fd0c11a:


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 37 2e 31 2e 20 20  ersion 3.27.1.  
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 37 2e 31 22 0a 23 64       "3.27.1".#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 37  SION_NUMBER 3027
8170: 30 30 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  001.#define SQLI
8180: 54 45 5f 53 4f 55 52 43 45 5f 49 44 20 20 20 20  TE_SOURCE_ID    
8190: 20 20 22 32 30 31 39 2d 30 32 2d 30 38 20 31 33    "2019-02-08 13
81a0: 3a 31 37 3a 33 39 20 30 65 63 61 33 64 64 33 64  :17:39 0eca3dd3d
81b0: 33 38 62 33 31 63 39 32 62 34 39 63 61 32 64 33  38b31c92b49ca2d3
81c0: 31 31 31 32 38 62 37 34 35 38 34 37 31 34 64 39  11128b74584714d9
81d0: 65 37 64 65 38 39 35 62 31 61 36 32 38 36 65 66  e7de895b1a6286ef
81e0: 39 35 39 61 31 64 64 22 0a 0a 2f 2a 0a 2a 2a 20  959a1dd"../*.** 
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 53 49 5a 45 5f 4c 49 4d 49 54 5d 5d  NTL_SIZE_LIMIT]]
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 53 49 5a 45 5f 4c 49 4d 49 54  FCNTL_SIZE_LIMIT
10700 5d 20 6f 70 63 6f 64 65 20 69 73 20 75 73 65 64  ] opcode is used
10710 20 62 79 20 69 6e 2d 6d 65 6d 6f 72 79 20 56 46   by in-memory VF
10720 53 20 74 68 61 74 0a 2a 2a 20 69 6d 70 6c 65 6d  S that.** implem
10730 65 6e 74 73 20 5b 73 71 6c 69 74 65 33 5f 64 65  ents [sqlite3_de
10740 73 65 72 69 61 6c 69 7a 65 28 29 5d 20 74 6f 20  serialize()] to 
10750 73 65 74 20 61 6e 20 75 70 70 65 72 20 62 6f 75  set an upper bou
10760 6e 64 20 6f 6e 20 74 68 65 20 73 69 7a 65 0a 2a  nd on the size.*
10770 2a 20 6f 66 20 74 68 65 20 69 6e 2d 6d 65 6d 6f  * of the in-memo
10780 72 79 20 64 61 74 61 62 61 73 65 2e 20 20 54 68  ry database.  Th
10790 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
107a0 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 5b 73 71  pointer to a [sq
107b0 6c 69 74 65 33 5f 69 6e 74 36 34 5d 2e 0a 2a 2a  lite3_int64]..**
107c0 20 49 66 20 74 68 65 20 69 6e 74 65 67 65 72 20   If the integer 
107d0 70 6f 69 6e 74 65 64 20 74 6f 20 69 73 20 6e 65  pointed to is ne
107e0 67 61 74 69 76 65 2c 20 74 68 65 6e 20 69 74 20  gative, then it 
107f0 69 73 20 66 69 6c 6c 65 64 20 69 6e 20 77 69 74  is filled in wit
10800 68 20 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74  h the.** current
10810 20 6c 69 6d 69 74 2e 20 20 4f 74 68 65 72 77 69   limit.  Otherwi
10820 73 65 20 74 68 65 20 6c 69 6d 69 74 20 69 73 20  se the limit is 
10830 73 65 74 20 74 6f 20 74 68 65 20 6c 61 72 67 65  set to the large
10840 72 20 6f 66 20 74 68 65 20 76 61 6c 75 65 0a 2a  r of the value.*
10850 2a 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72  * of the integer
10860 20 70 6f 69 6e 74 65 64 20 74 6f 20 61 6e 64 20   pointed to and 
10870 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61  the current data
10880 62 61 73 65 20 73 69 7a 65 2e 20 20 54 68 65 20  base size.  The 
10890 69 6e 74 65 67 65 72 0a 2a 2a 20 70 6f 69 6e 74  integer.** point
108a0 65 64 20 74 6f 20 69 73 20 73 65 74 20 74 6f 20  ed to is set to 
108b0 74 68 65 20 6e 65 77 20 6c 69 6d 69 74 2e 0a 2a  the new limit..*
108c0 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
108d0 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f 53 49  E_FCNTL_CHUNK_SI
108e0 5a 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ZE]].** The [SQL
108f0 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
10900 53 49 5a 45 5d 20 6f 70 63 6f 64 65 20 69 73 20  SIZE] opcode is 
10910 75 73 65 64 20 74 6f 20 72 65 71 75 65 73 74 20  used to request 
10920 74 68 61 74 20 74 68 65 20 56 46 53 0a 2a 2a 20  that the VFS.** 
10930 65 78 74 65 6e 64 73 20 61 6e 64 20 74 72 75 6e  extends and trun
10940 63 61 74 65 73 20 74 68 65 20 64 61 74 61 62 61  cates the databa
10950 73 65 20 66 69 6c 65 20 69 6e 20 63 68 75 6e 6b  se file in chunk
10960 73 20 6f 66 20 61 20 73 69 7a 65 20 73 70 65 63  s of a size spec
10970 69 66 69 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  ified.** by the 
10980 75 73 65 72 2e 20 54 68 65 20 66 6f 75 72 74 68  user. The fourth
10990 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b 73 71   argument to [sq
109a0 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72  lite3_file_contr
109b0 6f 6c 28 29 5d 20 73 68 6f 75 6c 64 20 0a 2a 2a  ol()] should .**
109c0 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 69 6e 74   point to an int
109d0 65 67 65 72 20 28 74 79 70 65 20 69 6e 74 29 20  eger (type int) 
109e0 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 6e  containing the n
109f0 65 77 20 63 68 75 6e 6b 2d 73 69 7a 65 20 74 6f  ew chunk-size to
10a00 20 75 73 65 0a 2a 2a 20 66 6f 72 20 74 68 65 20   use.** for the 
10a10 6e 6f 6d 69 6e 61 74 65 64 20 64 61 74 61 62 61  nominated databa
10a20 73 65 2e 20 41 6c 6c 6f 63 61 74 69 6e 67 20 64  se. Allocating d
10a30 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 70 61  atabase file spa
10a40 63 65 20 69 6e 20 6c 61 72 67 65 0a 2a 2a 20 63  ce in large.** c
10a50 68 75 6e 6b 73 20 28 73 61 79 20 31 4d 42 20 61  hunks (say 1MB a
10a60 74 20 61 20 74 69 6d 65 29 2c 20 6d 61 79 20 72  t a time), may r
10a70 65 64 75 63 65 20 66 69 6c 65 2d 73 79 73 74 65  educe file-syste
10a80 6d 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 20  m fragmentation 
10a90 61 6e 64 0a 2a 2a 20 69 6d 70 72 6f 76 65 20 70  and.** improve p
10aa0 65 72 66 6f 72 6d 61 6e 63 65 20 6f 6e 20 73 6f  erformance on so
10ab0 6d 65 20 73 79 73 74 65 6d 73 2e 0a 2a 2a 0a 2a  me systems..**.*
10ac0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
10ad0 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f 49 4e 54 45  CNTL_FILE_POINTE
10ae0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
10af0 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
10b00 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65 20 69 73  INTER] opcode is
10b10 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69 6e 20   used to obtain 
10b20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20 74 6f 20  a pointer.** to 
10b30 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c  the [sqlite3_fil
10b40 65 5d 20 6f 62 6a 65 63 74 20 61 73 73 6f 63 69  e] object associ
10b50 61 74 65 64 20 77 69 74 68 20 61 20 70 61 72 74  ated with a part
10b60 69 63 75 6c 61 72 20 64 61 74 61 62 61 73 65 0a  icular database.
10b70 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20  ** connection.  
10b80 53 65 65 20 61 6c 73 6f 20 5b 53 51 4c 49 54 45  See also [SQLITE
10b90 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50  _FCNTL_JOURNAL_P
10ba0 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  OINTER]..**.** <
10bb0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
10bc0 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49 4e 54 45  L_JOURNAL_POINTE
10bd0 52 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  R]].** The [SQLI
10be0 54 45 5f 46 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c  TE_FCNTL_JOURNAL
10bf0 5f 50 4f 49 4e 54 45 52 5d 20 6f 70 63 6f 64 65  _POINTER] opcode
10c00 20 69 73 20 75 73 65 64 20 74 6f 20 6f 62 74 61   is used to obta
10c10 69 6e 20 61 20 70 6f 69 6e 74 65 72 0a 2a 2a 20  in a pointer.** 
10c20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
10c30 66 69 6c 65 5d 20 6f 62 6a 65 63 74 20 61 73 73  file] object ass
10c40 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
10c50 20 6a 6f 75 72 6e 61 6c 20 66 69 6c 65 20 28 65   journal file (e
10c60 69 74 68 65 72 0a 2a 2a 20 74 68 65 20 5b 72 6f  ither.** the [ro
10c70 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c 5d 20  llback journal] 
10c80 6f 72 20 74 68 65 20 5b 77 72 69 74 65 2d 61 68  or the [write-ah
10c90 65 61 64 20 6c 6f 67 5d 29 20 66 6f 72 20 61 20  ead log]) for a 
10ca0 70 61 72 74 69 63 75 6c 61 72 20 64 61 74 61 62  particular datab
10cb0 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f  ase.** connectio
10cc0 6e 2e 20 20 53 65 65 20 61 6c 73 6f 20 5b 53 51  n.  See also [SQ
10cd0 4c 49 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f  LITE_FCNTL_FILE_
10ce0 50 4f 49 4e 54 45 52 5d 2e 0a 2a 2a 0a 2a 2a 20  POINTER]..**.** 
10cf0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
10d00 54 4c 5f 53 59 4e 43 5f 4f 4d 49 54 54 45 44 5d  TL_SYNC_OMITTED]
10d10 5d 0a 2a 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 69  ].** No longer i
10d20 6e 20 75 73 65 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69  n use..**.** <li
10d30 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  >[[SQLITE_FCNTL_
10d40 53 59 4e 43 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53  SYNC]].** The [S
10d50 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
10d60 5d 20 6f 70 63 6f 64 65 20 69 73 20 67 65 6e 65  ] opcode is gene
10d70 72 61 74 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79  rated internally
10d80 20 62 79 20 53 51 4c 69 74 65 20 61 6e 64 0a 2a   by SQLite and.*
10d90 2a 20 73 65 6e 74 20 74 6f 20 74 68 65 20 56 46  * sent to the VF
10da0 53 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 65  S immediately be
10db0 66 6f 72 65 20 74 68 65 20 78 53 79 6e 63 20 6d  fore the xSync m
10dc0 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b 65 64  ethod is invoked
10dd0 20 6f 6e 20 61 0a 2a 2a 20 64 61 74 61 62 61 73   on a.** databas
10de0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
10df0 72 2e 20 4f 72 2c 20 69 66 20 74 68 65 20 78 53  r. Or, if the xS
10e00 79 6e 63 20 6d 65 74 68 6f 64 20 69 73 20 6e 6f  ync method is no
10e10 74 20 69 6e 76 6f 6b 65 64 20 0a 2a 2a 20 62 65  t invoked .** be
10e20 63 61 75 73 65 20 74 68 65 20 75 73 65 72 20 68  cause the user h
10e30 61 73 20 63 6f 6e 66 69 67 75 72 65 64 20 53 51  as configured SQ
10e40 4c 69 74 65 20 77 69 74 68 20 0a 2a 2a 20 5b 50  Lite with .** [P
10e50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
10e60 73 20 7c 20 50 52 41 47 4d 41 20 73 79 6e 63 68  s | PRAGMA synch
10e70 72 6f 6e 6f 75 73 3d 4f 46 46 5d 20 69 74 20 69  ronous=OFF] it i
10e80 73 20 69 6e 76 6f 6b 65 64 20 69 6e 20 70 6c 61  s invoked in pla
10e90 63 65 20 0a 2a 2a 20 6f 66 20 74 68 65 20 78 53  ce .** of the xS
10ea0 79 6e 63 20 6d 65 74 68 6f 64 2e 20 49 6e 20 6d  ync method. In m
10eb0 6f 73 74 20 63 61 73 65 73 2c 20 74 68 65 20 70  ost cases, the p
10ec0 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 20  ointer argument 
10ed0 70 61 73 73 65 64 20 77 69 74 68 0a 2a 2a 20 74  passed with.** t
10ee0 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
10ef0 20 69 73 20 4e 55 4c 4c 2e 20 48 6f 77 65 76 65   is NULL. Howeve
10f00 72 2c 20 69 66 20 74 68 65 20 64 61 74 61 62 61  r, if the databa
10f10 73 65 20 66 69 6c 65 20 69 73 20 62 65 69 6e 67  se file is being
10f20 20 73 79 6e 63 65 64 0a 2a 2a 20 61 73 20 70 61   synced.** as pa
10f30 72 74 20 6f 66 20 61 20 6d 75 6c 74 69 2d 64 61  rt of a multi-da
10f40 74 61 62 61 73 65 20 63 6f 6d 6d 69 74 2c 20 74  tabase commit, t
10f50 68 65 20 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e  he argument poin
10f60 74 73 20 74 6f 20 61 20 6e 75 6c 2d 74 65 72 6d  ts to a nul-term
10f70 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e 67  inated.** string
10f80 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20   containing the 
10f90 74 72 61 6e 73 61 63 74 69 6f 6e 73 20 6d 61 73  transactions mas
10fa0 74 65 72 2d 6a 6f 75 72 6e 61 6c 20 66 69 6c 65  ter-journal file
10fb0 20 6e 61 6d 65 2e 20 56 46 53 65 73 20 74 68 61   name. VFSes tha
10fc0 74 20 0a 2a 2a 20 64 6f 20 6e 6f 74 20 6e 65 65  t .** do not nee
10fd0 64 20 74 68 69 73 20 73 69 67 6e 61 6c 20 73 68  d this signal sh
10fe0 6f 75 6c 64 20 73 69 6c 65 6e 74 6c 79 20 69 67  ould silently ig
10ff0 6e 6f 72 65 20 74 68 69 73 20 6f 70 63 6f 64 65  nore this opcode
11000 2e 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 0a  . Applications .
11010 2a 2a 20 73 68 6f 75 6c 64 20 6e 6f 74 20 63 61  ** should not ca
11020 6c 6c 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65  ll [sqlite3_file
11030 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 77 69 74 68  _control()] with
11040 20 74 68 69 73 20 6f 70 63 6f 64 65 20 61 73 20   this opcode as 
11050 64 6f 69 6e 67 20 73 6f 20 6d 61 79 20 0a 2a 2a  doing so may .**
11060 20 64 69 73 72 75 70 74 20 74 68 65 20 6f 70 65   disrupt the ope
11070 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 70  ration of the sp
11080 65 63 69 61 6c 69 7a 65 64 20 56 46 53 65 73 20  ecialized VFSes 
11090 74 68 61 74 20 64 6f 20 72 65 71 75 69 72 65 20  that do require 
110a0 69 74 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  it.  .**.** <li>
110b0 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43  [[SQLITE_FCNTL_C
110c0 4f 4d 4d 49 54 5f 50 48 41 53 45 54 57 4f 5d 5d  OMMIT_PHASETWO]]
110d0 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
110e0 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 50 48 41  FCNTL_COMMIT_PHA
110f0 53 45 54 57 4f 5d 20 6f 70 63 6f 64 65 20 69 73  SETWO] opcode is
11100 20 67 65 6e 65 72 61 74 65 64 20 69 6e 74 65 72   generated inter
11110 6e 61 6c 6c 79 20 62 79 20 53 51 4c 69 74 65 0a  nally by SQLite.
11120 2a 2a 20 61 6e 64 20 73 65 6e 74 20 74 6f 20 74  ** and sent to t
11130 68 65 20 56 46 53 20 61 66 74 65 72 20 61 20 74  he VFS after a t
11140 72 61 6e 73 61 63 74 69 6f 6e 20 68 61 73 20 62  ransaction has b
11150 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 69 6d  een committed im
11160 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 62 75 74  mediately.** but
11170 20 62 65 66 6f 72 65 20 74 68 65 20 64 61 74 61   before the data
11180 62 61 73 65 20 69 73 20 75 6e 6c 6f 63 6b 65 64  base is unlocked
11190 2e 20 56 46 53 65 73 20 74 68 61 74 20 64 6f 20  . VFSes that do 
111a0 6e 6f 74 20 6e 65 65 64 20 74 68 69 73 20 73 69  not need this si
111b0 67 6e 61 6c 0a 2a 2a 20 73 68 6f 75 6c 64 20 73  gnal.** should s
111c0 69 6c 65 6e 74 6c 79 20 69 67 6e 6f 72 65 20 74  ilently ignore t
111d0 68 69 73 20 6f 70 63 6f 64 65 2e 20 41 70 70 6c  his opcode. Appl
111e0 69 63 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64 20  ications should 
111f0 6e 6f 74 20 63 61 6c 6c 0a 2a 2a 20 5b 73 71 6c  not call.** [sql
11200 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f  ite3_file_contro
11210 6c 28 29 5d 20 77 69 74 68 20 74 68 69 73 20 6f  l()] with this o
11220 70 63 6f 64 65 20 61 73 20 64 6f 69 6e 67 20 73  pcode as doing s
11230 6f 20 6d 61 79 20 64 69 73 72 75 70 74 20 74 68  o may disrupt th
11240 65 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 20  e .** operation 
11250 6f 66 20 74 68 65 20 73 70 65 63 69 61 6c 69 7a  of the specializ
11260 65 64 20 56 46 53 65 73 20 74 68 61 74 20 64 6f  ed VFSes that do
11270 20 72 65 71 75 69 72 65 20 69 74 2e 20 20 0a 2a   require it.  .*
11280 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54  *.** <li>[[SQLIT
11290 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56  E_FCNTL_WIN32_AV
112a0 5f 52 45 54 52 59 5d 5d 0a 2a 2a 20 5e 54 68 65  _RETRY]].** ^The
112b0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57   [SQLITE_FCNTL_W
112c0 49 4e 33 32 5f 41 56 5f 52 45 54 52 59 5d 20 6f  IN32_AV_RETRY] o
112d0 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f  pcode is used to
112e0 20 63 6f 6e 66 69 67 75 72 65 20 61 75 74 6f 6d   configure autom
112f0 61 74 69 63 0a 2a 2a 20 72 65 74 72 79 20 63 6f  atic.** retry co
11300 75 6e 74 73 20 61 6e 64 20 69 6e 74 65 72 76 61  unts and interva
11310 6c 73 20 66 6f 72 20 63 65 72 74 61 69 6e 20 64  ls for certain d
11320 69 73 6b 20 49 2f 4f 20 6f 70 65 72 61 74 69 6f  isk I/O operatio
11330 6e 73 20 66 6f 72 20 74 68 65 0a 2a 2a 20 77 69  ns for the.** wi
11340 6e 64 6f 77 73 20 5b 56 46 53 5d 20 69 6e 20 6f  ndows [VFS] in o
11350 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20  rder to provide 
11360 72 6f 62 75 73 74 6e 65 73 73 20 69 6e 20 74 68  robustness in th
11370 65 20 70 72 65 73 65 6e 63 65 20 6f 66 0a 2a 2a  e presence of.**
11380 20 61 6e 74 69 2d 76 69 72 75 73 20 70 72 6f 67   anti-virus prog
11390 72 61 6d 73 2e 20 20 42 79 20 64 65 66 61 75 6c  rams.  By defaul
113a0 74 2c 20 74 68 65 20 77 69 6e 64 6f 77 73 20 56  t, the windows V
113b0 46 53 20 77 69 6c 6c 20 72 65 74 72 79 20 66 69  FS will retry fi
113c0 6c 65 20 72 65 61 64 2c 0a 2a 2a 20 66 69 6c 65  le read,.** file
113d0 20 77 72 69 74 65 2c 20 61 6e 64 20 66 69 6c 65   write, and file
113e0 20 64 65 6c 65 74 65 20 6f 70 65 72 61 74 69 6f   delete operatio
113f0 6e 73 20 75 70 20 74 6f 20 31 30 20 74 69 6d 65  ns up to 10 time
11400 73 2c 20 77 69 74 68 20 61 20 64 65 6c 61 79 0a  s, with a delay.
11410 2a 2a 20 6f 66 20 32 35 20 6d 69 6c 6c 69 73 65  ** of 25 millise
11420 63 6f 6e 64 73 20 62 65 66 6f 72 65 20 74 68 65  conds before the
11430 20 66 69 72 73 74 20 72 65 74 72 79 20 61 6e 64   first retry and
11440 20 77 69 74 68 20 74 68 65 20 64 65 6c 61 79 20   with the delay 
11450 69 6e 63 72 65 61 73 69 6e 67 0a 2a 2a 20 62 79  increasing.** by
11460 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 32   an additional 2
11470 35 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 77  5 milliseconds w
11480 69 74 68 20 65 61 63 68 20 73 75 62 73 65 71 75  ith each subsequ
11490 65 6e 74 20 72 65 74 72 79 2e 20 20 54 68 69 73  ent retry.  This
114a0 0a 2a 2a 20 6f 70 63 6f 64 65 20 61 6c 6c 6f 77  .** opcode allow
114b0 73 20 74 68 65 73 65 20 74 77 6f 20 76 61 6c 75  s these two valu
114c0 65 73 20 28 31 30 20 72 65 74 72 69 65 73 20 61  es (10 retries a
114d0 6e 64 20 32 35 20 6d 69 6c 6c 69 73 65 63 6f 6e  nd 25 millisecon
114e0 64 73 20 6f 66 20 64 65 6c 61 79 29 0a 2a 2a 20  ds of delay).** 
114f0 74 6f 20 62 65 20 61 64 6a 75 73 74 65 64 2e 20  to be adjusted. 
11500 20 54 68 65 20 76 61 6c 75 65 73 20 61 72 65 20   The values are 
11510 63 68 61 6e 67 65 64 20 66 6f 72 20 61 6c 6c 20  changed for all 
11520 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
11530 69 6f 6e 73 0a 2a 2a 20 77 69 74 68 69 6e 20 74  ions.** within t
11540 68 65 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e  he same process.
11550 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69    The argument i
11560 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
11570 6e 20 61 72 72 61 79 20 6f 66 20 74 77 6f 0a 2a  n array of two.*
11580 2a 20 69 6e 74 65 67 65 72 73 20 77 68 65 72 65  * integers where
11590 20 74 68 65 20 66 69 72 73 74 20 69 6e 74 65 67   the first integ
115a0 65 72 20 69 73 20 74 68 65 20 6e 65 77 20 72 65  er is the new re
115b0 74 72 79 20 63 6f 75 6e 74 20 61 6e 64 20 74 68  try count and th
115c0 65 20 73 65 63 6f 6e 64 0a 2a 2a 20 69 6e 74 65  e second.** inte
115d0 67 65 72 20 69 73 20 74 68 65 20 64 65 6c 61 79  ger is the delay
115e0 2e 20 20 49 66 20 65 69 74 68 65 72 20 69 6e 74  .  If either int
115f0 65 67 65 72 20 69 73 20 6e 65 67 61 74 69 76 65  eger is negative
11600 2c 20 74 68 65 6e 20 74 68 65 20 73 65 74 74 69  , then the setti
11610 6e 67 0a 2a 2a 20 69 73 20 6e 6f 74 20 63 68 61  ng.** is not cha
11620 6e 67 65 64 20 62 75 74 20 69 6e 73 74 65 61 64  nged but instead
11630 20 74 68 65 20 70 72 69 6f 72 20 76 61 6c 75 65   the prior value
11640 20 6f 66 20 74 68 61 74 20 73 65 74 74 69 6e 67   of that setting
11650 20 69 73 20 77 72 69 74 74 65 6e 0a 2a 2a 20 69   is written.** i
11660 6e 74 6f 20 74 68 65 20 61 72 72 61 79 20 65 6e  nto the array en
11670 74 72 79 2c 20 61 6c 6c 6f 77 69 6e 67 20 74 68  try, allowing th
11680 65 20 63 75 72 72 65 6e 74 20 72 65 74 72 79 20  e current retry 
11690 73 65 74 74 69 6e 67 73 20 74 6f 20 62 65 0a 2a  settings to be.*
116a0 2a 20 69 6e 74 65 72 72 6f 67 61 74 65 64 2e 20  * interrogated. 
116b0 20 54 68 65 20 7a 44 62 4e 61 6d 65 20 70 61 72   The zDbName par
116c0 61 6d 65 74 65 72 20 69 73 20 69 67 6e 6f 72 65  ameter is ignore
116d0 64 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53  d..**.** <li>[[S
116e0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 45 52 53  QLITE_FCNTL_PERS
116f0 49 53 54 5f 57 41 4c 5d 5d 0a 2a 2a 20 5e 54 68  IST_WAL]].** ^Th
11700 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
11710 50 45 52 53 49 53 54 5f 57 41 4c 5d 20 6f 70 63  PERSIST_WAL] opc
11720 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20 73  ode is used to s
11730 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65 0a  et or query the.
11740 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 5b 57  ** persistent [W
11750 41 4c 20 7c 20 57 72 69 74 65 20 41 68 65 61 64  AL | Write Ahead
11760 20 4c 6f 67 5d 20 73 65 74 74 69 6e 67 2e 20 20   Log] setting.  
11770 42 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20  By default, the 
11780 61 75 78 69 6c 69 61 72 79 0a 2a 2a 20 77 72 69  auxiliary.** wri
11790 74 65 20 61 68 65 61 64 20 6c 6f 67 20 28 5b 57  te ahead log ([W
117a0 41 4c 20 66 69 6c 65 5d 29 20 61 6e 64 20 73 68  AL file]) and sh
117b0 61 72 65 64 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66  ared memory.** f
117c0 69 6c 65 73 20 75 73 65 64 20 66 6f 72 20 74 72  iles used for tr
117d0 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74 72 6f  ansaction contro
117e0 6c 0a 2a 2a 20 61 72 65 20 61 75 74 6f 6d 61 74  l.** are automat
117f0 69 63 61 6c 6c 79 20 64 65 6c 65 74 65 64 20 77  ically deleted w
11800 68 65 6e 20 74 68 65 20 6c 61 74 65 73 74 20 63  hen the latest c
11810 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65  onnection to the
11820 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 63 6c 6f   database.** clo
11830 73 65 73 2e 20 20 53 65 74 74 69 6e 67 20 70 65  ses.  Setting pe
11840 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
11850 65 20 63 61 75 73 65 73 20 74 68 6f 73 65 20 66  e causes those f
11860 69 6c 65 73 20 74 6f 20 70 65 72 73 69 73 74 20  iles to persist 
11870 61 66 74 65 72 0a 2a 2a 20 63 6c 6f 73 65 2e 20  after.** close. 
11880 20 50 65 72 73 69 73 74 69 6e 67 20 74 68 65 20   Persisting the 
11890 66 69 6c 65 73 20 69 73 20 75 73 65 66 75 6c 20  files is useful 
118a0 77 68 65 6e 20 6f 74 68 65 72 20 70 72 6f 63 65  when other proce
118b0 73 73 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74  sses that do not
118c0 0a 2a 2a 20 68 61 76 65 20 77 72 69 74 65 20 70  .** have write p
118d0 65 72 6d 69 73 73 69 6f 6e 20 6f 6e 20 74 68 65  ermission on the
118e0 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 61   directory conta
118f0 69 6e 69 6e 67 20 74 68 65 20 64 61 74 61 62 61  ining the databa
11900 73 65 20 66 69 6c 65 20 77 61 6e 74 0a 2a 2a 20  se file want.** 
11910 74 6f 20 72 65 61 64 20 74 68 65 20 64 61 74 61  to read the data
11920 62 61 73 65 20 66 69 6c 65 2c 20 61 73 20 74 68  base file, as th
11930 65 20 57 41 4c 20 61 6e 64 20 73 68 61 72 65 64  e WAL and shared
11940 20 6d 65 6d 6f 72 79 20 66 69 6c 65 73 20 6d 75   memory files mu
11950 73 74 20 65 78 69 73 74 0a 2a 2a 20 69 6e 20 6f  st exist.** in o
11960 72 64 65 72 20 66 6f 72 20 74 68 65 20 64 61 74  rder for the dat
11970 61 62 61 73 65 20 74 6f 20 62 65 20 72 65 61 64  abase to be read
11980 61 62 6c 65 2e 20 20 54 68 65 20 66 6f 75 72 74  able.  The fourt
11990 68 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a  h parameter to.*
119a0 2a 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  * [sqlite3_file_
119b0 63 6f 6e 74 72 6f 6c 28 29 5d 20 66 6f 72 20 74  control()] for t
119c0 68 69 73 20 6f 70 63 6f 64 65 20 73 68 6f 75 6c  his opcode shoul
119d0 64 20 62 65 20 61 20 70 6f 69 6e 74 65 72 20 74  d be a pointer t
119e0 6f 20 61 6e 20 69 6e 74 65 67 65 72 2e 0a 2a 2a  o an integer..**
119f0 20 54 68 61 74 20 69 6e 74 65 67 65 72 20 69 73   That integer is
11a00 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 70 65   0 to disable pe
11a10 72 73 69 73 74 65 6e 74 20 57 41 4c 20 6d 6f 64  rsistent WAL mod
11a20 65 20 6f 72 20 31 20 74 6f 20 65 6e 61 62 6c 65  e or 1 to enable
11a30 20 70 65 72 73 69 73 74 65 6e 74 0a 2a 2a 20 57   persistent.** W
11a40 41 4c 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  AL mode.  If the
11a50 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11a60 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11a70 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11a80 63 75 72 72 65 6e 74 0a 2a 2a 20 57 41 4c 20 70  current.** WAL p
11a90 65 72 73 69 73 74 65 6e 63 65 20 73 65 74 74 69  ersistence setti
11aa0 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  ng..**.** <li>[[
11ab0 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 4f 57  SQLITE_FCNTL_POW
11ac0 45 52 53 41 46 45 5f 4f 56 45 52 57 52 49 54 45  ERSAFE_OVERWRITE
11ad0 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
11ae0 54 45 5f 46 43 4e 54 4c 5f 50 4f 57 45 52 53 41  TE_FCNTL_POWERSA
11af0 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 6f 70  FE_OVERWRITE] op
11b00 63 6f 64 65 20 69 73 20 75 73 65 64 20 74 6f 20  code is used to 
11b10 73 65 74 20 6f 72 20 71 75 65 72 79 20 74 68 65  set or query the
11b20 0a 2a 2a 20 70 65 72 73 69 73 74 65 6e 74 20 22  .** persistent "
11b30 70 6f 77 65 72 73 61 66 65 2d 6f 76 65 72 77 72  powersafe-overwr
11b40 69 74 65 22 20 6f 72 20 22 50 53 4f 57 22 20 73  ite" or "PSOW" s
11b50 65 74 74 69 6e 67 2e 20 20 54 68 65 20 50 53 4f  etting.  The PSO
11b60 57 20 73 65 74 74 69 6e 67 0a 2a 2a 20 64 65 74  W setting.** det
11b70 65 72 6d 69 6e 65 73 20 74 68 65 20 5b 53 51 4c  ermines the [SQL
11b80 49 54 45 5f 49 4f 43 41 50 5f 50 4f 57 45 52 53  ITE_IOCAP_POWERS
11b90 41 46 45 5f 4f 56 45 52 57 52 49 54 45 5d 20 62  AFE_OVERWRITE] b
11ba0 69 74 20 6f 66 20 74 68 65 0a 2a 2a 20 78 44 65  it of the.** xDe
11bb0 76 69 63 65 43 68 61 72 61 63 74 65 72 69 73 74  viceCharacterist
11bc0 69 63 73 20 6d 65 74 68 6f 64 73 2e 20 54 68 65  ics methods. The
11bd0 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
11be0 72 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  r to.** [sqlite3
11bf0 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d  _file_control()]
11c00 20 66 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65   for this opcode
11c10 20 73 68 6f 75 6c 64 20 62 65 20 61 20 70 6f 69   should be a poi
11c20 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67  nter to an integ
11c30 65 72 2e 0a 2a 2a 20 54 68 61 74 20 69 6e 74 65  er..** That inte
11c40 67 65 72 20 69 73 20 30 20 74 6f 20 64 69 73 61  ger is 0 to disa
11c50 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 20  ble zero-damage 
11c60 6d 6f 64 65 20 6f 72 20 31 20 74 6f 20 65 6e 61  mode or 1 to ena
11c70 62 6c 65 20 7a 65 72 6f 2d 64 61 6d 61 67 65 0a  ble zero-damage.
11c80 2a 2a 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65  ** mode.  If the
11c90 20 69 6e 74 65 67 65 72 20 69 73 20 2d 31 2c 20   integer is -1, 
11ca0 74 68 65 6e 20 69 74 20 69 73 20 6f 76 65 72 77  then it is overw
11cb0 72 69 74 74 65 6e 20 77 69 74 68 20 74 68 65 20  ritten with the 
11cc0 63 75 72 72 65 6e 74 0a 2a 2a 20 7a 65 72 6f 2d  current.** zero-
11cd0 64 61 6d 61 67 65 20 6d 6f 64 65 20 73 65 74 74  damage mode sett
11ce0 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b  ing..**.** <li>[
11cf0 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4f 56  [SQLITE_FCNTL_OV
11d00 45 52 57 52 49 54 45 5d 5d 0a 2a 2a 20 5e 54 68  ERWRITE]].** ^Th
11d10 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
11d20 4f 56 45 52 57 52 49 54 45 5d 20 6f 70 63 6f 64  OVERWRITE] opcod
11d30 65 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20  e is invoked by 
11d40 53 51 4c 69 74 65 20 61 66 74 65 72 20 6f 70 65  SQLite after ope
11d50 6e 69 6e 67 0a 2a 2a 20 61 20 77 72 69 74 65 20  ning.** a write 
11d60 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 6f 20 69  transaction to i
11d70 6e 64 69 63 61 74 65 20 74 68 61 74 2c 20 75 6e  ndicate that, un
11d80 6c 65 73 73 20 69 74 20 69 73 20 72 6f 6c 6c 65  less it is rolle
11d90 64 20 62 61 63 6b 20 66 6f 72 20 73 6f 6d 65 0a  d back for some.
11da0 2a 2a 20 72 65 61 73 6f 6e 2c 20 74 68 65 20 65  ** reason, the e
11db0 6e 74 69 72 65 20 64 61 74 61 62 61 73 65 20 66  ntire database f
11dc0 69 6c 65 20 77 69 6c 6c 20 62 65 20 6f 76 65 72  ile will be over
11dd0 77 72 69 74 74 65 6e 20 62 79 20 74 68 65 20 63  written by the c
11de0 75 72 72 65 6e 74 20 0a 2a 2a 20 74 72 61 6e 73  urrent .** trans
11df0 61 63 74 69 6f 6e 2e 20 54 68 69 73 20 69 73 20  action. This is 
11e00 75 73 65 64 20 62 79 20 56 41 43 55 55 4d 20 6f  used by VACUUM o
11e10 70 65 72 61 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a  perations..**.**
11e20 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
11e30 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 5d 0a 2a 2a  NTL_VFSNAME]].**
11e40 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43   ^The [SQLITE_FC
11e50 4e 54 4c 5f 56 46 53 4e 41 4d 45 5d 20 6f 70 63  NTL_VFSNAME] opc
11e60 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ode can be used 
11e70 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6e 61  to obtain the na
11e80 6d 65 73 20 6f 66 0a 2a 2a 20 61 6c 6c 20 5b 56  mes of.** all [V
11e90 46 53 65 73 5d 20 69 6e 20 74 68 65 20 56 46 53  FSes] in the VFS
11ea0 20 73 74 61 63 6b 2e 20 20 54 68 65 20 6e 61 6d   stack.  The nam
11eb0 65 73 20 61 72 65 20 6f 66 20 61 6c 6c 20 56 46  es are of all VF
11ec0 53 20 73 68 69 6d 73 20 61 6e 64 20 74 68 65 0a  S shims and the.
11ed0 2a 2a 20 66 69 6e 61 6c 20 62 6f 74 74 6f 6d 2d  ** final bottom-
11ee0 6c 65 76 65 6c 20 56 46 53 20 61 72 65 20 77 72  level VFS are wr
11ef0 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65 6d 6f 72  itten into memor
11f00 79 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20  y obtained from 
11f10 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c  .** [sqlite3_mal
11f20 6c 6f 63 28 29 5d 20 61 6e 64 20 74 68 65 20 72  loc()] and the r
11f30 65 73 75 6c 74 20 69 73 20 73 74 6f 72 65 64 20  esult is stored 
11f40 69 6e 20 74 68 65 20 63 68 61 72 2a 20 76 61 72  in the char* var
11f50 69 61 62 6c 65 0a 2a 2a 20 74 68 61 74 20 74 68  iable.** that th
11f60 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74  e fourth paramet
11f70 65 72 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 66  er of [sqlite3_f
11f80 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28 29 5d 20 70  ile_control()] p
11f90 6f 69 6e 74 73 20 74 6f 2e 0a 2a 2a 20 54 68 65  oints to..** The
11fa0 20 63 61 6c 6c 65 72 20 69 73 20 72 65 73 70 6f   caller is respo
11fb0 6e 73 69 62 6c 65 20 66 6f 72 20 66 72 65 65 69  nsible for freei
11fc0 6e 67 20 74 68 65 20 6d 65 6d 6f 72 79 20 77 68  ng the memory wh
11fd0 65 6e 20 64 6f 6e 65 2e 20 20 41 73 20 77 69 74  en done.  As wit
11fe0 68 0a 2a 2a 20 61 6c 6c 20 66 69 6c 65 2d 63 6f  h.** all file-co
11ff0 6e 74 72 6f 6c 20 61 63 74 69 6f 6e 73 2c 20 74  ntrol actions, t
12000 68 65 72 65 20 69 73 20 6e 6f 20 67 75 61 72 61  here is no guara
12010 6e 74 65 65 20 74 68 61 74 20 74 68 69 73 20 77  ntee that this w
12020 69 6c 6c 20 61 63 74 75 61 6c 6c 79 0a 2a 2a 20  ill actually.** 
12030 64 6f 20 61 6e 79 74 68 69 6e 67 2e 20 20 43 61  do anything.  Ca
12040 6c 6c 65 72 73 20 73 68 6f 75 6c 64 20 69 6e 69  llers should ini
12050 74 69 61 6c 69 7a 65 20 74 68 65 20 63 68 61 72  tialize the char
12060 2a 20 76 61 72 69 61 62 6c 65 20 74 6f 20 61 20  * variable to a 
12070 4e 55 4c 4c 0a 2a 2a 20 70 6f 69 6e 74 65 72 20  NULL.** pointer 
12080 69 6e 20 63 61 73 65 20 74 68 69 73 20 66 69 6c  in case this fil
12090 65 2d 63 6f 6e 74 72 6f 6c 20 69 73 20 6e 6f 74  e-control is not
120a0 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2e 20 20 54   implemented.  T
120b0 68 69 73 20 66 69 6c 65 2d 63 6f 6e 74 72 6f 6c  his file-control
120c0 0a 2a 2a 20 69 73 20 69 6e 74 65 6e 64 65 64 20  .** is intended 
120d0 66 6f 72 20 64 69 61 67 6e 6f 73 74 69 63 20 75  for diagnostic u
120e0 73 65 20 6f 6e 6c 79 2e 0a 2a 2a 0a 2a 2a 20 3c  se only..**.** <
120f0 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
12100 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52 5d 5d 0a  L_VFS_POINTER]].
12110 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f  ** ^The [SQLITE_
12120 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
12130 52 5d 20 6f 70 63 6f 64 65 20 66 69 6e 64 73 20  R] opcode finds 
12140 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
12150 20 74 6f 70 2d 6c 65 76 65 6c 0a 2a 2a 20 5b 56   top-level.** [V
12160 46 53 65 73 5d 20 63 75 72 72 65 6e 74 6c 79 20  FSes] currently 
12170 69 6e 20 75 73 65 2e 20 20 5e 28 54 68 65 20 61  in use.  ^(The a
12180 72 67 75 6d 65 6e 74 20 58 20 69 6e 0a 2a 2a 20  rgument X in.** 
12190 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e  sqlite3_file_con
121a0 74 72 6f 6c 28 64 62 2c 53 51 4c 49 54 45 5f 46  trol(db,SQLITE_F
121b0 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45 52  CNTL_VFS_POINTER
121c0 2c 58 29 20 6d 75 73 74 20 62 65 0a 2a 2a 20 6f  ,X) must be.** o
121d0 66 20 74 79 70 65 20 22 5b 73 71 6c 69 74 65 33  f type "[sqlite3
121e0 5f 76 66 73 5d 20 2a 2a 22 2e 20 20 54 68 69 73  _vfs] **".  This
121f0 20 6f 70 63 6f 64 65 73 20 77 69 6c 6c 20 73 65   opcodes will se
12200 74 20 2a 58 0a 2a 2a 20 74 6f 20 61 20 70 6f 69  t *X.** to a poi
12210 6e 74 65 72 20 74 6f 20 74 68 65 20 74 6f 70 2d  nter to the top-
12220 6c 65 76 65 6c 20 56 46 53 2e 29 5e 0a 2a 2a 20  level VFS.)^.** 
12230 5e 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20  ^When there are 
12240 6d 75 6c 74 69 70 6c 65 20 56 46 53 20 73 68 69  multiple VFS shi
12250 6d 73 20 69 6e 20 74 68 65 20 73 74 61 63 6b 2c  ms in the stack,
12260 20 74 68 69 73 20 6f 70 63 6f 64 65 20 66 69 6e   this opcode fin
12270 64 73 20 74 68 65 0a 2a 2a 20 75 70 70 65 72 2d  ds the.** upper-
12280 6d 6f 73 74 20 73 68 69 6d 20 6f 6e 6c 79 2e 0a  most shim only..
12290 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
122a0 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
122b0 5d 0a 2a 2a 20 5e 57 68 65 6e 65 76 65 72 20 61  ].** ^Whenever a
122c0 20 5b 50 52 41 47 4d 41 5d 20 73 74 61 74 65 6d   [PRAGMA] statem
122d0 65 6e 74 20 69 73 20 70 61 72 73 65 64 2c 20 61  ent is parsed, a
122e0 6e 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  n [SQLITE_FCNTL_
122f0 50 52 41 47 4d 41 5d 20 0a 2a 2a 20 66 69 6c 65  PRAGMA] .** file
12300 20 63 6f 6e 74 72 6f 6c 20 69 73 20 73 65 6e 74   control is sent
12310 20 74 6f 20 74 68 65 20 6f 70 65 6e 20 5b 73 71   to the open [sq
12320 6c 69 74 65 33 5f 66 69 6c 65 5d 20 6f 62 6a 65  lite3_file] obje
12330 63 74 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67  ct corresponding
12340 0a 2a 2a 20 74 6f 20 74 68 65 20 64 61 74 61 62  .** to the datab
12350 61 73 65 20 66 69 6c 65 20 74 6f 20 77 68 69 63  ase file to whic
12360 68 20 74 68 65 20 70 72 61 67 6d 61 20 73 74 61  h the pragma sta
12370 74 65 6d 65 6e 74 20 72 65 66 65 72 73 2e 20 5e  tement refers. ^
12380 54 68 65 20 61 72 67 75 6d 65 6e 74 0a 2a 2a 20  The argument.** 
12390 74 6f 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 46  to the [SQLITE_F
123a0 43 4e 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c  CNTL_PRAGMA] fil
123b0 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20 61 6e 20  e control is an 
123c0 61 72 72 61 79 20 6f 66 0a 2a 2a 20 70 6f 69 6e  array of.** poin
123d0 74 65 72 73 20 74 6f 20 73 74 72 69 6e 67 73 20  ters to strings 
123e0 28 63 68 61 72 2a 2a 29 20 69 6e 20 77 68 69 63  (char**) in whic
123f0 68 20 74 68 65 20 73 65 63 6f 6e 64 20 65 6c 65  h the second ele
12400 6d 65 6e 74 20 6f 66 20 74 68 65 20 61 72 72 61  ment of the arra
12410 79 0a 2a 2a 20 69 73 20 74 68 65 20 6e 61 6d 65  y.** is the name
12420 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 61   of the pragma a
12430 6e 64 20 74 68 65 20 74 68 69 72 64 20 65 6c 65  nd the third ele
12440 6d 65 6e 74 20 69 73 20 74 68 65 20 61 72 67 75  ment is the argu
12450 6d 65 6e 74 20 74 6f 20 74 68 65 0a 2a 2a 20 70  ment to the.** p
12460 72 61 67 6d 61 20 6f 72 20 4e 55 4c 4c 20 69 66  ragma or NULL if
12470 20 74 68 65 20 70 72 61 67 6d 61 20 68 61 73 20   the pragma has 
12480 6e 6f 20 61 72 67 75 6d 65 6e 74 2e 20 20 5e 54  no argument.  ^T
12490 68 65 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61  he handler for a
124a0 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43 4e  n.** [SQLITE_FCN
124b0 54 4c 5f 50 52 41 47 4d 41 5d 20 66 69 6c 65 20  TL_PRAGMA] file 
124c0 63 6f 6e 74 72 6f 6c 20 63 61 6e 20 6f 70 74 69  control can opti
124d0 6f 6e 61 6c 6c 79 20 6d 61 6b 65 20 74 68 65 20  onally make the 
124e0 66 69 72 73 74 20 65 6c 65 6d 65 6e 74 0a 2a 2a  first element.**
124f0 20 6f 66 20 74 68 65 20 63 68 61 72 2a 2a 20 61   of the char** a
12500 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 20 74 6f  rgument point to
12510 20 61 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e   a string obtain
12520 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33  ed from [sqlite3
12530 5f 6d 70 72 69 6e 74 66 28 29 5d 0a 2a 2a 20 6f  _mprintf()].** o
12540 72 20 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74  r the equivalent
12550 20 61 6e 64 20 74 68 61 74 20 73 74 72 69 6e 67   and that string
12560 20 77 69 6c 6c 20 62 65 63 6f 6d 65 20 74 68 65   will become the
12570 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 70   result of the p
12580 72 61 67 6d 61 20 6f 72 0a 2a 2a 20 74 68 65 20  ragma or.** the 
12590 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 66  error message if
125a0 20 74 68 65 20 70 72 61 67 6d 61 20 66 61 69 6c   the pragma fail
125b0 73 2e 20 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53  s. ^If the.** [S
125c0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47  QLITE_FCNTL_PRAG
125d0 4d 41 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c  MA] file control
125e0 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45   returns [SQLITE
125f0 5f 4e 4f 54 46 4f 55 4e 44 5d 2c 20 74 68 65 6e  _NOTFOUND], then
12600 20 6e 6f 72 6d 61 6c 20 0a 2a 2a 20 5b 50 52 41   normal .** [PRA
12610 47 4d 41 5d 20 70 72 6f 63 65 73 73 69 6e 67 20  GMA] processing 
12620 63 6f 6e 74 69 6e 75 65 73 2e 20 20 5e 49 66 20  continues.  ^If 
12630 74 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  the [SQLITE_FCNT
12640 4c 5f 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c  L_PRAGMA].** fil
12650 65 20 63 6f 6e 74 72 6f 6c 20 72 65 74 75 72 6e  e control return
12660 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c 20 74  s [SQLITE_OK], t
12670 68 65 6e 20 74 68 65 20 70 61 72 73 65 72 20 61  hen the parser a
12680 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65 0a  ssumes that the.
12690 2a 2a 20 56 46 53 20 68 61 73 20 68 61 6e 64 6c  ** VFS has handl
126a0 65 64 20 74 68 65 20 50 52 41 47 4d 41 20 69 74  ed the PRAGMA it
126b0 73 65 6c 66 20 61 6e 64 20 74 68 65 20 70 61 72  self and the par
126c0 73 65 72 20 67 65 6e 65 72 61 74 65 73 20 61 20  ser generates a 
126d0 6e 6f 2d 6f 70 0a 2a 2a 20 70 72 65 70 61 72 65  no-op.** prepare
126e0 64 20 73 74 61 74 65 6d 65 6e 74 20 69 66 20 72  d statement if r
126f0 65 73 75 6c 74 20 73 74 72 69 6e 67 20 69 73 20  esult string is 
12700 4e 55 4c 4c 2c 20 6f 72 20 74 68 61 74 20 72 65  NULL, or that re
12710 74 75 72 6e 73 20 61 20 63 6f 70 79 0a 2a 2a 20  turns a copy.** 
12720 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 73 74  of the result st
12730 72 69 6e 67 20 69 66 20 74 68 65 20 73 74 72 69  ring if the stri
12740 6e 67 20 69 73 20 6e 6f 6e 2d 4e 55 4c 4c 2e 0a  ng is non-NULL..
12750 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c 49  ** ^If the [SQLI
12760 54 45 5f 46 43 4e 54 4c 5f 50 52 41 47 4d 41 5d  TE_FCNTL_PRAGMA]
12770 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 72 65   file control re
12780 74 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 72 65 73  turns.** any res
12790 75 6c 74 20 63 6f 64 65 20 6f 74 68 65 72 20 74  ult code other t
127a0 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20  han [SQLITE_OK] 
127b0 6f 72 20 5b 53 51 4c 49 54 45 5f 4e 4f 54 46 4f  or [SQLITE_NOTFO
127c0 55 4e 44 5d 2c 20 74 68 61 74 20 6d 65 61 6e 73  UND], that means
127d0 0a 2a 2a 20 74 68 61 74 20 74 68 65 20 56 46 53  .** that the VFS
127e0 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20   encountered an 
127f0 65 72 72 6f 72 20 77 68 69 6c 65 20 68 61 6e 64  error while hand
12800 6c 69 6e 67 20 74 68 65 20 5b 50 52 41 47 4d 41  ling the [PRAGMA
12810 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 63 6f 6d  ] and the.** com
12820 70 69 6c 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  pilation of the 
12830 50 52 41 47 4d 41 20 66 61 69 6c 73 20 77 69 74  PRAGMA fails wit
12840 68 20 61 6e 20 65 72 72 6f 72 2e 20 20 5e 54 68  h an error.  ^Th
12850 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
12860 50 52 41 47 4d 41 5d 0a 2a 2a 20 66 69 6c 65 20  PRAGMA].** file 
12870 63 6f 6e 74 72 6f 6c 20 6f 63 63 75 72 73 20 61  control occurs a
12880 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
12890 6f 66 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d  of pragma statem
128a0 65 6e 74 20 61 6e 61 6c 79 73 69 73 20 61 6e 64  ent analysis and
128b0 20 73 6f 0a 2a 2a 20 69 74 20 69 73 20 61 62 6c   so.** it is abl
128c0 65 20 74 6f 20 6f 76 65 72 72 69 64 65 20 62 75  e to override bu
128d0 69 6c 74 2d 69 6e 20 5b 50 52 41 47 4d 41 5d 20  ilt-in [PRAGMA] 
128e0 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
128f0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
12900 43 4e 54 4c 5f 42 55 53 59 48 41 4e 44 4c 45 52  CNTL_BUSYHANDLER
12910 5d 5d 0a 2a 2a 20 5e 54 68 65 20 5b 53 51 4c 49  ]].** ^The [SQLI
12920 54 45 5f 46 43 4e 54 4c 5f 42 55 53 59 48 41 4e  TE_FCNTL_BUSYHAN
12930 44 4c 45 52 5d 0a 2a 2a 20 66 69 6c 65 2d 63 6f  DLER].** file-co
12940 6e 74 72 6f 6c 20 6d 61 79 20 62 65 20 69 6e 76  ntrol may be inv
12950 6f 6b 65 64 20 62 79 20 53 51 4c 69 74 65 20 6f  oked by SQLite o
12960 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  n the database f
12970 69 6c 65 20 68 61 6e 64 6c 65 0a 2a 2a 20 73 68  ile handle.** sh
12980 6f 72 74 6c 79 20 61 66 74 65 72 20 69 74 20 69  ortly after it i
12990 73 20 6f 70 65 6e 65 64 20 69 6e 20 6f 72 64 65  s opened in orde
129a0 72 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 63  r to provide a c
129b0 75 73 74 6f 6d 20 56 46 53 20 77 69 74 68 20 61  ustom VFS with a
129c0 63 63 65 73 73 0a 2a 2a 20 74 6f 20 74 68 65 20  ccess.** to the 
129d0 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 62 75 73 79  connections busy
129e0 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
129f0 6b 2e 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20  k. The argument 
12a00 69 73 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64  is of type (void
12a10 20 2a 2a 29 0a 2a 2a 20 2d 20 61 6e 20 61 72 72   **).** - an arr
12a20 61 79 20 6f 66 20 74 77 6f 20 28 76 6f 69 64 20  ay of two (void 
12a30 2a 29 20 76 61 6c 75 65 73 2e 20 54 68 65 20 66  *) values. The f
12a40 69 72 73 74 20 28 76 6f 69 64 20 2a 29 20 61 63  irst (void *) ac
12a50 74 75 61 6c 6c 79 20 70 6f 69 6e 74 73 0a 2a 2a  tually points.**
12a60 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f   to a function o
12a70 66 20 74 79 70 65 20 28 69 6e 74 20 28 2a 29 28  f type (int (*)(
12a80 76 6f 69 64 20 2a 29 29 2e 20 49 6e 20 6f 72 64  void *)). In ord
12a90 65 72 20 74 6f 20 69 6e 76 6f 6b 65 20 74 68 65  er to invoke the
12aa0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20   connections.** 
12ab0 62 75 73 79 2d 68 61 6e 64 6c 65 72 2c 20 74 68  busy-handler, th
12ac0 69 73 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75  is function shou
12ad0 6c 64 20 62 65 20 69 6e 76 6f 6b 65 64 20 77 69  ld be invoked wi
12ae0 74 68 20 74 68 65 20 73 65 63 6f 6e 64 20 28 76  th the second (v
12af0 6f 69 64 20 2a 29 20 69 6e 0a 2a 2a 20 74 68 65  oid *) in.** the
12b00 20 61 72 72 61 79 20 61 73 20 74 68 65 20 6f 6e   array as the on
12b10 6c 79 20 61 72 67 75 6d 65 6e 74 2e 20 49 66 20  ly argument. If 
12b20 69 74 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  it returns non-z
12b30 65 72 6f 2c 20 74 68 65 6e 20 74 68 65 20 6f 70  ero, then the op
12b40 65 72 61 74 69 6f 6e 0a 2a 2a 20 73 68 6f 75 6c  eration.** shoul
12b50 64 20 62 65 20 72 65 74 72 69 65 64 2e 20 49 66  d be retried. If
12b60 20 69 74 20 72 65 74 75 72 6e 73 20 7a 65 72 6f   it returns zero
12b70 2c 20 74 68 65 20 63 75 73 74 6f 6d 20 56 46 53  , the custom VFS
12b80 20 73 68 6f 75 6c 64 20 61 62 61 6e 64 6f 6e 20   should abandon 
12b90 74 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 20 6f  the.** current o
12ba0 70 65 72 61 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20  peration..**.** 
12bb0 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e  <li>[[SQLITE_FCN
12bc0 54 4c 5f 54 45 4d 50 46 49 4c 45 4e 41 4d 45 5d  TL_TEMPFILENAME]
12bd0 5d 0a 2a 2a 20 5e 41 70 70 6c 69 63 61 74 69 6f  ].** ^Applicatio
12be0 6e 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 65  n can invoke the
12bf0 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
12c00 45 4d 50 46 49 4c 45 4e 41 4d 45 5d 20 66 69 6c  EMPFILENAME] fil
12c10 65 2d 63 6f 6e 74 72 6f 6c 0a 2a 2a 20 74 6f 20  e-control.** to 
12c20 68 61 76 65 20 53 51 4c 69 74 65 20 67 65 6e 65  have SQLite gene
12c30 72 61 74 65 20 61 0a 2a 2a 20 74 65 6d 70 6f 72  rate a.** tempor
12c40 61 72 79 20 66 69 6c 65 6e 61 6d 65 20 75 73 69  ary filename usi
12c50 6e 67 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f  ng the same algo
12c60 72 69 74 68 6d 20 74 68 61 74 20 69 73 20 66 6f  rithm that is fo
12c70 6c 6c 6f 77 65 64 20 74 6f 20 67 65 6e 65 72 61  llowed to genera
12c80 74 65 0a 2a 2a 20 74 65 6d 70 6f 72 61 72 79 20  te.** temporary 
12c90 66 69 6c 65 6e 61 6d 65 73 20 66 6f 72 20 54 45  filenames for TE
12ca0 4d 50 20 74 61 62 6c 65 73 20 61 6e 64 20 6f 74  MP tables and ot
12cb0 68 65 72 20 69 6e 74 65 72 6e 61 6c 20 75 73 65  her internal use
12cc0 73 2e 20 20 54 68 65 0a 2a 2a 20 61 72 67 75 6d  s.  The.** argum
12cd0 65 6e 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20  ent should be a 
12ce0 63 68 61 72 2a 2a 20 77 68 69 63 68 20 77 69 6c  char** which wil
12cf0 6c 20 62 65 20 66 69 6c 6c 65 64 20 77 69 74 68  l be filled with
12d00 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a   the filename.**
12d10 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 6d 65   written into me
12d20 6d 6f 72 79 20 6f 62 74 61 69 6e 65 64 20 66 72  mory obtained fr
12d30 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  om [sqlite3_mall
12d40 6f 63 28 29 5d 2e 20 20 54 68 65 20 63 61 6c 6c  oc()].  The call
12d50 65 72 20 73 68 6f 75 6c 64 0a 2a 2a 20 69 6e 76  er should.** inv
12d60 6f 6b 65 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  oke [sqlite3_fre
12d70 65 28 29 5d 20 6f 6e 20 74 68 65 20 72 65 73 75  e()] on the resu
12d80 6c 74 20 74 6f 20 61 76 6f 69 64 20 61 20 6d 65  lt to avoid a me
12d90 6d 6f 72 79 20 6c 65 61 6b 2e 0a 2a 2a 0a 2a 2a  mory leak..**.**
12da0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
12db0 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a  NTL_MMAP_SIZE]].
12dc0 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46  ** The [SQLITE_F
12dd0 43 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20  CNTL_MMAP_SIZE] 
12de0 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 73 20  file control is 
12df0 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 6f 72  used to query or
12e00 20 73 65 74 20 74 68 65 0a 2a 2a 20 6d 61 78 69   set the.** maxi
12e10 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  mum number of by
12e20 74 65 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65  tes that will be
12e30 20 75 73 65 64 20 66 6f 72 20 6d 65 6d 6f 72 79   used for memory
12e40 2d 6d 61 70 70 65 64 20 49 2f 4f 2e 0a 2a 2a 20  -mapped I/O..** 
12e50 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20  The argument is 
12e60 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76  a pointer to a v
12e70 61 6c 75 65 20 6f 66 20 74 79 70 65 20 73 71 6c  alue of type sql
12e80 69 74 65 33 5f 69 6e 74 36 34 20 74 68 61 74 0a  ite3_int64 that.
12e90 2a 2a 20 69 73 20 61 6e 20 61 64 76 69 73 6f 72  ** is an advisor
12ea0 79 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72  y maximum number
12eb0 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
12ec0 20 66 69 6c 65 20 74 6f 20 6d 65 6d 6f 72 79 20   file to memory 
12ed0 6d 61 70 2e 20 20 54 68 65 0a 2a 2a 20 70 6f 69  map.  The.** poi
12ee0 6e 74 65 72 20 69 73 20 6f 76 65 72 77 72 69 74  nter is overwrit
12ef0 74 65 6e 20 77 69 74 68 20 74 68 65 20 6f 6c 64  ten with the old
12f00 20 76 61 6c 75 65 2e 20 20 54 68 65 20 6c 69 6d   value.  The lim
12f10 69 74 20 69 73 20 6e 6f 74 20 63 68 61 6e 67 65  it is not change
12f20 64 20 69 66 0a 2a 2a 20 74 68 65 20 76 61 6c 75  d if.** the valu
12f30 65 20 6f 72 69 67 69 6e 61 6c 6c 79 20 70 6f 69  e originally poi
12f40 6e 74 65 64 20 74 6f 20 69 73 20 6e 65 67 61 74  nted to is negat
12f50 69 76 65 2c 20 61 6e 64 20 73 6f 20 74 68 65 20  ive, and so the 
12f60 63 75 72 72 65 6e 74 20 6c 69 6d 69 74 20 0a 2a  current limit .*
12f70 2a 20 63 61 6e 20 62 65 20 71 75 65 72 69 65 64  * can be queried
12f80 20 62 79 20 70 61 73 73 69 6e 67 20 69 6e 20 61   by passing in a
12f90 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 6e 65   pointer to a ne
12fa0 67 61 74 69 76 65 20 6e 75 6d 62 65 72 2e 20 20  gative number.  
12fb0 54 68 69 73 0a 2a 2a 20 66 69 6c 65 2d 63 6f 6e  This.** file-con
12fc0 74 72 6f 6c 20 69 73 20 75 73 65 64 20 69 6e 74  trol is used int
12fd0 65 72 6e 61 6c 6c 79 20 74 6f 20 69 6d 70 6c 65  ernally to imple
12fe0 6d 65 6e 74 20 5b 50 52 41 47 4d 41 20 6d 6d 61  ment [PRAGMA mma
12ff0 70 5f 73 69 7a 65 5d 2e 0a 2a 2a 0a 2a 2a 20 3c  p_size]..**.** <
13000 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54  li>[[SQLITE_FCNT
13010 4c 5f 54 52 41 43 45 5d 5d 0a 2a 2a 20 54 68 65  L_TRACE]].** The
13020 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54   [SQLITE_FCNTL_T
13030 52 41 43 45 5d 20 66 69 6c 65 20 63 6f 6e 74 72  RACE] file contr
13040 6f 6c 20 70 72 6f 76 69 64 65 73 20 61 64 76 69  ol provides advi
13050 73 6f 72 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  sory information
13060 0a 2a 2a 20 74 6f 20 74 68 65 20 56 46 53 20 61  .** to the VFS a
13070 62 6f 75 74 20 77 68 61 74 20 74 68 65 20 68 69  bout what the hi
13080 67 68 65 72 20 6c 61 79 65 72 73 20 6f 66 20 74  gher layers of t
13090 68 65 20 53 51 4c 69 74 65 20 73 74 61 63 6b 20  he SQLite stack 
130a0 61 72 65 20 64 6f 69 6e 67 2e 0a 2a 2a 20 54 68  are doing..** Th
130b0 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
130c0 69 73 20 75 73 65 64 20 62 79 20 73 6f 6d 65 20  is used by some 
130d0 56 46 53 20 61 63 74 69 76 69 74 79 20 74 72 61  VFS activity tra
130e0 63 69 6e 67 20 5b 73 68 69 6d 73 5d 2e 0a 2a 2a  cing [shims]..**
130f0 20 54 68 65 20 61 72 67 75 6d 65 6e 74 20 69 73   The argument is
13100 20 61 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74   a zero-terminat
13110 65 64 20 73 74 72 69 6e 67 2e 20 20 48 69 67 68  ed string.  High
13120 65 72 20 6c 61 79 65 72 73 20 69 6e 20 74 68 65  er layers in the
13130 0a 2a 2a 20 53 51 4c 69 74 65 20 73 74 61 63 6b  .** SQLite stack
13140 20 6d 61 79 20 67 65 6e 65 72 61 74 65 20 69 6e   may generate in
13150 73 74 61 6e 63 65 73 20 6f 66 20 74 68 69 73 20  stances of this 
13160 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20 69 66 0a  file control if.
13170 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 55  ** the [SQLITE_U
13180 53 45 5f 46 43 4e 54 4c 5f 54 52 41 43 45 5d 20  SE_FCNTL_TRACE] 
13190 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
131a0 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65 64 2e 0a  ion is enabled..
131b0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
131c0 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f 56  TE_FCNTL_HAS_MOV
131d0 45 44 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c  ED]].** The [SQL
131e0 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53 5f 4d 4f  ITE_FCNTL_HAS_MO
131f0 56 45 44 5d 20 66 69 6c 65 20 63 6f 6e 74 72 6f  VED] file contro
13200 6c 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73  l interprets its
13210 20 61 72 67 75 6d 65 6e 74 20 61 73 20 61 0a 2a   argument as a.*
13220 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  * pointer to an 
13230 69 6e 74 65 67 65 72 20 61 6e 64 20 69 74 20 77  integer and it w
13240 72 69 74 65 73 20 61 20 62 6f 6f 6c 65 61 6e 20  rites a boolean 
13250 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67 65  into that intege
13260 72 20 64 65 70 65 6e 64 69 6e 67 0a 2a 2a 20 6f  r depending.** o
13270 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
13280 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 62 65   the file has be
13290 65 6e 20 72 65 6e 61 6d 65 64 2c 20 6d 6f 76 65  en renamed, move
132a0 64 2c 20 6f 72 20 64 65 6c 65 74 65 64 20 73 69  d, or deleted si
132b0 6e 63 65 20 69 74 0a 2a 2a 20 77 61 73 20 66 69  nce it.** was fi
132c0 72 73 74 20 6f 70 65 6e 65 64 2e 0a 2a 2a 0a 2a  rst opened..**.*
132d0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
132e0 43 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48  CNTL_WIN32_GET_H
132f0 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
13300 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
13310 33 32 5f 47 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_GET_HANDLE] o
13320 70 63 6f 64 65 20 63 61 6e 20 62 65 20 75 73 65  pcode can be use
13330 64 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 0a  d to obtain the.
13340 2a 2a 20 75 6e 64 65 72 6c 79 69 6e 67 20 6e 61  ** underlying na
13350 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64 6c 65  tive file handle
13360 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68   associated with
13370 20 61 20 66 69 6c 65 20 68 61 6e 64 6c 65 2e 20   a file handle. 
13380 20 54 68 69 73 20 66 69 6c 65 0a 2a 2a 20 63 6f   This file.** co
13390 6e 74 72 6f 6c 20 69 6e 74 65 72 70 72 65 74 73  ntrol interprets
133a0 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 61 73   its argument as
133b0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
133c0 6e 61 74 69 76 65 20 66 69 6c 65 20 68 61 6e 64  native file hand
133d0 6c 65 20 61 6e 64 0a 2a 2a 20 77 72 69 74 65 73  le and.** writes
133e0 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76   the resulting v
133f0 61 6c 75 65 20 74 68 65 72 65 2e 0a 2a 2a 0a 2a  alue there..**.*
13400 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13410 43 4e 54 4c 5f 57 49 4e 33 32 5f 53 45 54 5f 48  CNTL_WIN32_SET_H
13420 41 4e 44 4c 45 5d 5d 0a 2a 2a 20 54 68 65 20 5b  ANDLE]].** The [
13430 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e  SQLITE_FCNTL_WIN
13440 33 32 5f 53 45 54 5f 48 41 4e 44 4c 45 5d 20 6f  32_SET_HANDLE] o
13450 70 63 6f 64 65 20 69 73 20 75 73 65 64 20 66 6f  pcode is used fo
13460 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 54 68  r debugging.  Th
13470 69 73 0a 2a 2a 20 6f 70 63 6f 64 65 20 63 61 75  is.** opcode cau
13480 73 65 73 20 74 68 65 20 78 46 69 6c 65 43 6f 6e  ses the xFileCon
13490 74 72 6f 6c 20 6d 65 74 68 6f 64 20 74 6f 20 73  trol method to s
134a0 77 61 70 20 74 68 65 20 66 69 6c 65 20 68 61 6e  wap the file han
134b0 64 6c 65 20 77 69 74 68 20 74 68 65 20 6f 6e 65  dle with the one
134c0 0a 2a 2a 20 70 6f 69 6e 74 65 64 20 74 6f 20 62  .** pointed to b
134d0 79 20 74 68 65 20 70 41 72 67 20 61 72 67 75 6d  y the pArg argum
134e0 65 6e 74 2e 20 20 54 68 69 73 20 63 61 70 61 62  ent.  This capab
134f0 69 6c 69 74 79 20 69 73 20 75 73 65 64 20 64 75  ility is used du
13500 72 69 6e 67 20 74 65 73 74 69 6e 67 0a 2a 2a 20  ring testing.** 
13510 61 6e 64 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74  and only needs t
13520 6f 20 62 65 20 73 75 70 70 6f 72 74 65 64 20 77  o be supported w
13530 68 65 6e 20 53 51 4c 49 54 45 5f 54 45 53 54 20  hen SQLITE_TEST 
13540 69 73 20 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a 2a  is defined..**.*
13550 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13560 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d 5d  CNTL_WAL_BLOCK]]
13570 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f  .** The [SQLITE_
13580 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f 43 4b 5d  FCNTL_WAL_BLOCK]
13590 20 69 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20   is a signal to 
135a0 74 68 65 20 56 46 53 20 6c 61 79 65 72 20 74 68  the VFS layer th
135b0 61 74 20 69 74 20 6d 69 67 68 74 0a 2a 2a 20 62  at it might.** b
135c0 65 20 61 64 76 61 6e 74 61 67 65 6f 75 73 20 74  e advantageous t
135d0 6f 20 62 6c 6f 63 6b 20 6f 6e 20 74 68 65 20 6e  o block on the n
135e0 65 78 74 20 57 41 4c 20 6c 6f 63 6b 20 69 66 20  ext WAL lock if 
135f0 74 68 65 20 6c 6f 63 6b 20 69 73 20 6e 6f 74 20  the lock is not 
13600 69 6d 6d 65 64 69 61 74 65 6c 79 0a 2a 2a 20 61  immediately.** a
13610 76 61 69 6c 61 62 6c 65 2e 20 20 54 68 65 20 57  vailable.  The W
13620 41 4c 20 73 75 62 73 79 73 74 65 6d 20 69 73 73  AL subsystem iss
13630 75 65 73 20 74 68 69 73 20 73 69 67 6e 61 6c 20  ues this signal 
13640 64 75 72 69 6e 67 20 72 61 72 65 0a 2a 2a 20 63  during rare.** c
13650 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 6e 20  ircumstances in 
13660 6f 72 64 65 72 20 74 6f 20 66 69 78 20 61 20 70  order to fix a p
13670 72 6f 62 6c 65 6d 20 77 69 74 68 20 70 72 69 6f  roblem with prio
13680 72 69 74 79 20 69 6e 76 65 72 73 69 6f 6e 2e 0a  rity inversion..
13690 2a 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20  ** Applications 
136a0 73 68 6f 75 6c 64 20 3c 65 6d 3e 6e 6f 74 3c 2f  should <em>not</
136b0 65 6d 3e 20 75 73 65 20 74 68 69 73 20 66 69 6c  em> use this fil
136c0 65 2d 63 6f 6e 74 72 6f 6c 2e 0a 2a 2a 0a 2a 2a  e-control..**.**
136d0 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43   <li>[[SQLITE_FC
136e0 4e 54 4c 5f 5a 49 50 56 46 53 5d 5d 0a 2a 2a 20  NTL_ZIPVFS]].** 
136f0 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54  The [SQLITE_FCNT
13700 4c 5f 5a 49 50 56 46 53 5d 20 6f 70 63 6f 64 65  L_ZIPVFS] opcode
13710 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20   is implemented 
13720 62 79 20 7a 69 70 76 66 73 20 6f 6e 6c 79 2e 20  by zipvfs only. 
13730 41 6c 6c 20 6f 74 68 65 72 0a 2a 2a 20 56 46 53  All other.** VFS
13740 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 53   should return S
13750 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 20 66  QLITE_NOTFOUND f
13760 6f 72 20 74 68 69 73 20 6f 70 63 6f 64 65 2e 0a  or this opcode..
13770 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
13780 54 45 5f 46 43 4e 54 4c 5f 52 42 55 5d 5d 0a 2a  TE_FCNTL_RBU]].*
13790 2a 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43  * The [SQLITE_FC
137a0 4e 54 4c 5f 52 42 55 5d 20 6f 70 63 6f 64 65 20  NTL_RBU] opcode 
137b0 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  is implemented b
137c0 79 20 74 68 65 20 73 70 65 63 69 61 6c 20 56 46  y the special VF
137d0 53 20 75 73 65 64 20 62 79 0a 2a 2a 20 74 68 65  S used by.** the
137e0 20 52 42 55 20 65 78 74 65 6e 73 69 6f 6e 20 6f   RBU extension o
137f0 6e 6c 79 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20  nly.  All other 
13800 56 46 53 20 73 68 6f 75 6c 64 20 72 65 74 75 72  VFS should retur
13810 6e 20 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e  n SQLITE_NOTFOUN
13820 44 20 66 6f 72 0a 2a 2a 20 74 68 69 73 20 6f 70  D for.** this op
13830 63 6f 64 65 2e 20 20 0a 2a 2a 0a 2a 2a 20 3c 6c  code.  .**.** <l
13840 69 3e 5b 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c  i>[[SQLITE_FCNTL
13850 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52  _BEGIN_ATOMIC_WR
13860 49 54 45 5d 5d 0a 2a 2a 20 49 66 20 74 68 65 20  ITE]].** If the 
13870 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45  [SQLITE_FCNTL_BE
13880 47 49 4e 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  GIN_ATOMIC_WRITE
13890 5d 20 6f 70 63 6f 64 65 20 72 65 74 75 72 6e 73  ] opcode returns
138a0 20 53 51 4c 49 54 45 5f 4f 4b 2c 20 74 68 65 6e   SQLITE_OK, then
138b0 0a 2a 2a 20 74 68 65 20 66 69 6c 65 20 64 65 73  .** the file des
138c0 63 72 69 70 74 6f 72 20 69 73 20 70 6c 61 63 65  criptor is place
138d0 64 20 69 6e 20 22 62 61 74 63 68 20 77 72 69 74  d in "batch writ
138e0 65 20 6d 6f 64 65 22 2c 20 77 68 69 63 68 0a 2a  e mode", which.*
138f0 2a 20 6d 65 61 6e 73 20 61 6c 6c 20 73 75 62 73  * means all subs
13900 65 71 75 65 6e 74 20 77 72 69 74 65 20 6f 70 65  equent write ope
13910 72 61 74 69 6f 6e 73 20 77 69 6c 6c 20 62 65 20  rations will be 
13920 64 65 66 65 72 72 65 64 20 61 6e 64 20 64 6f 6e  deferred and don
13930 65 0a 2a 2a 20 61 74 6f 6d 69 63 61 6c 6c 79 20  e.** atomically 
13940 61 74 20 74 68 65 20 6e 65 78 74 20 5b 53 51 4c  at the next [SQL
13950 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54  ITE_FCNTL_COMMIT
13960 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 20  _ATOMIC_WRITE]. 
13970 20 53 79 73 74 65 6d 73 0a 2a 2a 20 74 68 61 74   Systems.** that
13980 20 64 6f 20 6e 6f 74 20 73 75 70 70 6f 72 74 20   do not support 
13990 62 61 74 63 68 20 61 74 6f 6d 69 63 20 77 72 69  batch atomic wri
139a0 74 65 73 20 77 69 6c 6c 20 72 65 74 75 72 6e 20  tes will return 
139b0 53 51 4c 49 54 45 5f 4e 4f 54 46 4f 55 4e 44 2e  SQLITE_NOTFOUND.
139c0 0a 2a 2a 20 5e 46 6f 6c 6c 6f 77 69 6e 67 20 61  .** ^Following a
139d0 20 73 75 63 63 65 73 73 66 75 6c 20 53 51 4c 49   successful SQLI
139e0 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41  TE_FCNTL_BEGIN_A
139f0 54 4f 4d 49 43 5f 57 52 49 54 45 20 61 6e 64 20  TOMIC_WRITE and 
13a00 70 72 69 6f 72 20 74 6f 0a 2a 2a 20 74 68 65 20  prior to.** the 
13a10 63 6c 6f 73 69 6e 67 20 5b 53 51 4c 49 54 45 5f  closing [SQLITE_
13a20 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41 54 4f  FCNTL_COMMIT_ATO
13a30 4d 49 43 5f 57 52 49 54 45 5d 20 6f 72 0a 2a 2a  MIC_WRITE] or.**
13a40 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52   [SQLITE_FCNTL_R
13a50 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57  OLLBACK_ATOMIC_W
13a60 52 49 54 45 5d 2c 20 53 51 4c 69 74 65 20 77 69  RITE], SQLite wi
13a70 6c 6c 20 6d 61 6b 65 0a 2a 2a 20 6e 6f 20 56 46  ll make.** no VF
13a80 53 20 69 6e 74 65 72 66 61 63 65 20 63 61 6c 6c  S interface call
13a90 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 5b 73  s on the same [s
13aa0 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 66 69 6c  qlite3_file] fil
13ab0 65 20 64 65 73 63 72 69 70 74 6f 72 0a 2a 2a 20  e descriptor.** 
13ac0 65 78 63 65 70 74 20 66 6f 72 20 63 61 6c 6c 73  except for calls
13ad0 20 74 6f 20 74 68 65 20 78 57 72 69 74 65 20 6d   to the xWrite m
13ae0 65 74 68 6f 64 20 61 6e 64 20 74 68 65 20 78 46  ethod and the xF
13af0 69 6c 65 43 6f 6e 74 72 6f 6c 20 6d 65 74 68 6f  ileControl metho
13b00 64 0a 2a 2a 20 77 69 74 68 20 5b 53 51 4c 49 54  d.** with [SQLIT
13b10 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f 48 49 4e  E_FCNTL_SIZE_HIN
13b20 54 5d 2e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b  T]..**.** <li>[[
13b30 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d  SQLITE_FCNTL_COM
13b40 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45  MIT_ATOMIC_WRITE
13b50 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49 54  ]].** The [SQLIT
13b60 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49 54 5f 41  E_FCNTL_COMMIT_A
13b70 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 6f 70 63  TOMIC_WRITE] opc
13b80 6f 64 65 20 63 61 75 73 65 73 20 61 6c 6c 20 77  ode causes all w
13b90 72 69 74 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  rite.** operatio
13ba0 6e 73 20 73 69 6e 63 65 20 74 68 65 20 70 72 65  ns since the pre
13bb0 76 69 6f 75 73 20 73 75 63 63 65 73 73 66 75 6c  vious successful
13bc0 20 63 61 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51   call to .** [SQ
13bd0 4c 49 54 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e  LITE_FCNTL_BEGIN
13be0 5f 41 54 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74  _ATOMIC_WRITE] t
13bf0 6f 20 62 65 20 70 65 72 66 6f 72 6d 65 64 20 61  o be performed a
13c00 74 6f 6d 69 63 61 6c 6c 79 2e 0a 2a 2a 20 54 68  tomically..** Th
13c10 69 73 20 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 20  is file control 
13c20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
13c30 4f 4b 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  OK] if and only 
13c40 69 66 20 74 68 65 20 77 72 69 74 65 73 20 77 65  if the writes we
13c50 72 65 0a 2a 2a 20 61 6c 6c 20 70 65 72 66 6f 72  re.** all perfor
13c60 6d 65 64 20 73 75 63 63 65 73 73 66 75 6c 6c 79  med successfully
13c70 20 61 6e 64 20 68 61 76 65 20 62 65 65 6e 20 63   and have been c
13c80 6f 6d 6d 69 74 74 65 64 20 74 6f 20 70 65 72 73  ommitted to pers
13c90 69 73 74 65 6e 74 20 73 74 6f 72 61 67 65 2e 0a  istent storage..
13ca0 2a 2a 20 5e 52 65 67 61 72 64 6c 65 73 73 20 6f  ** ^Regardless o
13cb0 66 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  f whether or not
13cc0 20 69 74 20 69 73 20 73 75 63 63 65 73 73 66 75   it is successfu
13cd0 6c 2c 20 74 68 69 73 20 66 69 6c 65 20 63 6f 6e  l, this file con
13ce0 74 72 6f 6c 20 74 61 6b 65 73 0a 2a 2a 20 74 68  trol takes.** th
13cf0 65 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  e file descripto
13d00 72 20 6f 75 74 20 6f 66 20 62 61 74 63 68 20 77  r out of batch w
13d10 72 69 74 65 20 6d 6f 64 65 20 73 6f 20 74 68 61  rite mode so tha
13d20 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
13d30 0a 2a 2a 20 77 72 69 74 65 20 6f 70 65 72 61 74  .** write operat
13d40 69 6f 6e 73 20 61 72 65 20 69 6e 64 65 70 65 6e  ions are indepen
13d50 64 65 6e 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65  dent..** ^SQLite
13d60 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f   will never invo
13d70 6b 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ke SQLITE_FCNTL_
13d80 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57 52  COMMIT_ATOMIC_WR
13d90 49 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61  ITE without.** a
13da0 20 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75   prior successfu
13db0 6c 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54  l call to [SQLIT
13dc0 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
13dd0 4f 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a  OMIC_WRITE]..**.
13de0 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f  ** <li>[[SQLITE_
13df0 46 43 4e 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41  FCNTL_ROLLBACK_A
13e00 54 4f 4d 49 43 5f 57 52 49 54 45 5d 5d 0a 2a 2a  TOMIC_WRITE]].**
13e10 20 54 68 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e   The [SQLITE_FCN
13e20 54 4c 5f 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d  TL_ROLLBACK_ATOM
13e30 49 43 5f 57 52 49 54 45 5d 20 6f 70 63 6f 64 65  IC_WRITE] opcode
13e40 20 63 61 75 73 65 73 20 61 6c 6c 20 77 72 69 74   causes all writ
13e50 65 0a 2a 2a 20 6f 70 65 72 61 74 69 6f 6e 73 20  e.** operations 
13e60 73 69 6e 63 65 20 74 68 65 20 70 72 65 76 69 6f  since the previo
13e70 75 73 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  us successful ca
13e80 6c 6c 20 74 6f 20 0a 2a 2a 20 5b 53 51 4c 49 54  ll to .** [SQLIT
13e90 45 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54  E_FCNTL_BEGIN_AT
13ea0 4f 4d 49 43 5f 57 52 49 54 45 5d 20 74 6f 20 62  OMIC_WRITE] to b
13eb0 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b 2e 0a 2a  e rolled back..*
13ec0 2a 20 5e 54 68 69 73 20 66 69 6c 65 20 63 6f 6e  * ^This file con
13ed0 74 72 6f 6c 20 74 61 6b 65 73 20 74 68 65 20 66  trol takes the f
13ee0 69 6c 65 20 64 65 73 63 72 69 70 74 6f 72 20 6f  ile descriptor o
13ef0 75 74 20 6f 66 20 62 61 74 63 68 20 77 72 69 74  ut of batch writ
13f00 65 20 6d 6f 64 65 0a 2a 2a 20 73 6f 20 74 68 61  e mode.** so tha
13f10 74 20 61 6c 6c 20 73 75 62 73 65 71 75 65 6e 74  t all subsequent
13f20 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
13f30 73 20 61 72 65 20 69 6e 64 65 70 65 6e 64 65 6e  s are independen
13f40 74 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69  t..** ^SQLite wi
13f50 6c 6c 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20  ll never invoke 
13f60 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 52 4f 4c  SQLITE_FCNTL_ROL
13f70 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f 57 52 49  LBACK_ATOMIC_WRI
13f80 54 45 20 77 69 74 68 6f 75 74 0a 2a 2a 20 61 20  TE without.** a 
13f90 70 72 69 6f 72 20 73 75 63 63 65 73 73 66 75 6c  prior successful
13fa0 20 63 61 6c 6c 20 74 6f 20 5b 53 51 4c 49 54 45   call to [SQLITE
13fb0 5f 46 43 4e 54 4c 5f 42 45 47 49 4e 5f 41 54 4f  _FCNTL_BEGIN_ATO
13fc0 4d 49 43 5f 57 52 49 54 45 5d 2e 0a 2a 2a 0a 2a  MIC_WRITE]..**.*
13fd0 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49 54 45 5f 46  * <li>[[SQLITE_F
13fe0 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49 4d 45 4f 55  CNTL_LOCK_TIMEOU
13ff0 54 5d 5d 0a 2a 2a 20 54 68 65 20 5b 53 51 4c 49  T]].** The [SQLI
14000 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43 4b 5f 54 49  TE_FCNTL_LOCK_TI
14010 4d 45 4f 55 54 5d 20 6f 70 63 6f 64 65 20 63 61  MEOUT] opcode ca
14020 75 73 65 73 20 61 74 74 65 6d 70 74 73 20 74 6f  uses attempts to
14030 20 6f 62 74 61 69 6e 0a 2a 2a 20 61 20 66 69 6c   obtain.** a fil
14040 65 20 6c 6f 63 6b 20 75 73 69 6e 67 20 74 68 65  e lock using the
14050 20 78 4c 6f 63 6b 20 6f 72 20 78 53 68 6d 4c 6f   xLock or xShmLo
14060 63 6b 20 6d 65 74 68 6f 64 73 20 6f 66 20 74 68  ck methods of th
14070 65 20 56 46 53 20 74 6f 20 77 61 69 74 0a 2a 2a  e VFS to wait.**
14080 20 66 6f 72 20 75 70 20 74 6f 20 4d 20 6d 69 6c   for up to M mil
14090 6c 69 73 65 63 6f 6e 64 73 20 62 65 66 6f 72 65  liseconds before
140a0 20 66 61 69 6c 69 6e 67 2c 20 77 68 65 72 65 20   failing, where 
140b0 4d 20 69 73 20 74 68 65 20 73 69 6e 67 6c 65 20  M is the single 
140c0 0a 2a 2a 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  .** unsigned int
140d0 65 67 65 72 20 70 61 72 61 6d 65 74 65 72 2e 0a  eger parameter..
140e0 2a 2a 0a 2a 2a 20 3c 6c 69 3e 5b 5b 53 51 4c 49  **.** <li>[[SQLI
140f0 54 45 5f 46 43 4e 54 4c 5f 44 41 54 41 5f 56 45  TE_FCNTL_DATA_VE
14100 52 53 49 4f 4e 5d 5d 0a 2a 2a 20 54 68 65 20 5b  RSION]].** The [
14110 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41 54  SQLITE_FCNTL_DAT
14120 41 5f 56 45 52 53 49 4f 4e 5d 20 6f 70 63 6f 64  A_VERSION] opcod
14130 65 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74  e is used to det
14140 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a  ect changes to.*
14150 2a 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c  * a database fil
14160 65 2e 20 20 54 68 65 20 61 72 67 75 6d 65 6e 74  e.  The argument
14170 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f   is a pointer to
14180 20 61 20 33 32 2d 62 69 74 20 75 6e 73 69 67 6e   a 32-bit unsign
14190 65 64 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 20 54  ed integer..** T
141a0 68 65 20 22 64 61 74 61 20 76 65 72 73 69 6f 6e  he "data version
141b0 22 20 66 6f 72 20 74 68 65 20 70 61 67 65 72 20  " for the pager 
141c0 69 73 20 77 72 69 74 74 65 6e 20 69 6e 74 6f 20  is written into 
141d0 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 20 54 68  the pointer.  Th
141e0 65 0a 2a 2a 20 22 64 61 74 61 20 76 65 72 73 69  e.** "data versi
141f0 6f 6e 22 20 63 68 61 6e 67 65 73 20 77 68 65 6e  on" changes when
14200 65 76 65 72 20 61 6e 79 20 63 68 61 6e 67 65 20  ever any change 
14210 6f 63 63 75 72 73 20 74 6f 20 74 68 65 20 63 6f  occurs to the co
14220 72 72 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20 64  rresponding.** d
14230 61 74 61 62 61 73 65 20 66 69 6c 65 2c 20 65 69  atabase file, ei
14240 74 68 65 72 20 74 68 72 6f 75 67 68 20 53 51 4c  ther through SQL
14250 20 73 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20 74   statements on t
14260 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
14270 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f  .** connection o
14280 72 20 74 68 72 6f 75 67 68 20 74 72 61 6e 73 61  r through transa
14290 63 74 69 6f 6e 73 20 63 6f 6d 6d 69 74 74 65 64  ctions committed
142a0 20 62 79 20 73 65 70 61 72 61 74 65 20 64 61 74   by separate dat
142b0 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74  abase.** connect
142c0 69 6f 6e 73 20 70 6f 73 73 69 62 6c 79 20 69 6e  ions possibly in
142d0 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 65 73   other processes
142e0 2e 20 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 74  . The [sqlite3_t
142f0 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 0a  otal_changes()].
14300 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 63 61 6e  ** interface can
14310 20 62 65 20 75 73 65 64 20 74 6f 20 66 69 6e 64   be used to find
14320 20 69 66 20 61 6e 79 20 64 61 74 61 62 61 73 65   if any database
14330 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69   on the connecti
14340 6f 6e 20 68 61 73 20 63 68 61 6e 67 65 64 2c 0a  on has changed,.
14350 2a 2a 20 62 75 74 20 74 68 61 74 20 69 6e 74 65  ** but that inte
14360 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73 20 74  rface responds t
14370 6f 20 63 68 61 6e 67 65 73 20 6f 6e 20 54 45 4d  o changes on TEM
14380 50 20 61 73 20 77 65 6c 6c 20 61 73 20 4d 41 49  P as well as MAI
14390 4e 20 61 6e 64 20 64 6f 65 73 0a 2a 2a 20 6e 6f  N and does.** no
143a0 74 20 70 72 6f 76 69 64 65 20 61 20 6d 65 63 68  t provide a mech
143b0 61 6e 69 73 6d 20 74 6f 20 64 65 74 65 63 74 20  anism to detect 
143c0 63 68 61 6e 67 65 73 20 74 6f 20 4d 41 49 4e 20  changes to MAIN 
143d0 6f 6e 6c 79 2e 20 20 41 6c 73 6f 2c 20 74 68 65  only.  Also, the
143e0 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 74 6f 74  .** [sqlite3_tot
143f0 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69 6e  al_changes()] in
14400 74 65 72 66 61 63 65 20 72 65 73 70 6f 6e 64 73  terface responds
14410 20 74 6f 20 69 6e 74 65 72 6e 61 6c 20 63 68 61   to internal cha
14420 6e 67 65 73 20 6f 6e 6c 79 20 61 6e 64 0a 2a 2a  nges only and.**
14430 20 6f 6d 69 74 73 20 63 68 61 6e 67 65 73 20 6d   omits changes m
14440 61 64 65 20 62 79 20 6f 74 68 65 72 20 64 61 74  ade by other dat
14450 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
14460 73 2e 20 20 54 68 65 0a 2a 2a 20 5b 50 52 41 47  s.  The.** [PRAG
14470 4d 41 20 64 61 74 61 5f 76 65 72 73 69 6f 6e 5d  MA data_version]
14480 20 63 6f 6d 6d 61 6e 64 20 70 72 6f 76 69 64 65   command provide
14490 20 61 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f 20   a mechanism to 
144a0 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20 74  detect changes t
144b0 6f 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 61 74  o.** a single at
144c0 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20  tached database 
144d0 74 68 61 74 20 6f 63 63 75 72 20 64 75 65 20 74  that occur due t
144e0 6f 20 6f 74 68 65 72 20 64 61 74 61 62 61 73 65  o other database
144f0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 2c 0a 2a 2a   connections,.**
14500 20 62 75 74 20 6f 6d 69 74 73 20 63 68 61 6e 67   but omits chang
14510 65 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62  es implemented b
14520 79 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  y the database c
14530 6f 6e 6e 65 63 74 69 6f 6e 20 6f 6e 20 77 68 69  onnection on whi
14540 63 68 20 69 74 20 69 73 0a 2a 2a 20 63 61 6c 6c  ch it is.** call
14550 65 64 2e 20 20 54 68 69 73 20 66 69 6c 65 20 63  ed.  This file c
14560 6f 6e 74 72 6f 6c 20 69 73 20 74 68 65 20 6f 6e  ontrol is the on
14570 6c 79 20 6d 65 63 68 61 6e 69 73 6d 20 74 6f 20  ly mechanism to 
14580 64 65 74 65 63 74 20 63 68 61 6e 67 65 73 20 74  detect changes t
14590 68 61 74 0a 2a 2a 20 68 61 70 70 65 6e 20 65 69  hat.** happen ei
145a0 74 68 65 72 20 69 6e 74 65 72 6e 61 6c 6c 79 20  ther internally 
145b0 6f 72 20 65 78 74 65 72 6e 61 6c 6c 79 20 61 6e  or externally an
145c0 64 20 74 68 61 74 20 61 72 65 20 61 73 73 6f 63  d that are assoc
145d0 69 61 74 65 64 20 77 69 74 68 0a 2a 2a 20 61 20  iated with.** a 
145e0 70 61 72 74 69 63 75 6c 61 72 20 61 74 74 61 63  particular attac
145f0 68 65 64 20 64 61 74 61 62 61 73 65 2e 0a 2a 2a  hed database..**
14600 20 3c 2f 75 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </ul>.*/.#defin
14610 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c  e SQLITE_FCNTL_L
14620 4f 43 4b 53 54 41 54 45 20 20 20 20 20 20 20 20  OCKSTATE        
14630 20 20 20 20 20 20 20 31 0a 23 64 65 66 69 6e 65         1.#define
14640 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 47 45   SQLITE_FCNTL_GE
14650 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20  T_LOCKPROXYFILE 
14660 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20        2.#define 
14670 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 45 54  SQLITE_FCNTL_SET
14680 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20 20  _LOCKPROXYFILE  
14690 20 20 20 20 20 33 0a 23 64 65 66 69 6e 65 20 53       3.#define S
146a0 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54  QLITE_FCNTL_LAST
146b0 5f 45 52 52 4e 4f 20 20 20 20 20 20 20 20 20 20  _ERRNO          
146c0 20 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51      4.#define SQ
146d0 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a 45 5f  LITE_FCNTL_SIZE_
146e0 48 49 4e 54 20 20 20 20 20 20 20 20 20 20 20 20  HINT            
146f0 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51 4c     5.#define SQL
14700 49 54 45 5f 46 43 4e 54 4c 5f 43 48 55 4e 4b 5f  ITE_FCNTL_CHUNK_
14710 53 49 5a 45 20 20 20 20 20 20 20 20 20 20 20 20  SIZE            
14720 20 20 36 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    6.#define SQLI
14730 54 45 5f 46 43 4e 54 4c 5f 46 49 4c 45 5f 50 4f  TE_FCNTL_FILE_PO
14740 49 4e 54 45 52 20 20 20 20 20 20 20 20 20 20 20  INTER           
14750 20 37 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   7.#define SQLIT
14760 45 5f 46 43 4e 54 4c 5f 53 59 4e 43 5f 4f 4d 49  E_FCNTL_SYNC_OMI
14770 54 54 45 44 20 20 20 20 20 20 20 20 20 20 20 20  TTED            
14780 38 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  8.#define SQLITE
14790 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f 41 56 5f  _FCNTL_WIN32_AV_
147a0 52 45 54 52 59 20 20 20 20 20 20 20 20 20 20 39  RETRY          9
147b0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
147c0 46 43 4e 54 4c 5f 50 45 52 53 49 53 54 5f 57 41  FCNTL_PERSIST_WA
147d0 4c 20 20 20 20 20 20 20 20 20 20 20 20 31 30 0a  L            10.
147e0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
147f0 43 4e 54 4c 5f 4f 56 45 52 57 52 49 54 45 20 20  CNTL_OVERWRITE  
14800 20 20 20 20 20 20 20 20 20 20 20 20 31 31 0a 23              11.#
14810 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14820 4e 54 4c 5f 56 46 53 4e 41 4d 45 20 20 20 20 20  NTL_VFSNAME     
14830 20 20 20 20 20 20 20 20 20 20 20 31 32 0a 23 64             12.#d
14840 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14850 54 4c 5f 50 4f 57 45 52 53 41 46 45 5f 4f 56 45  TL_POWERSAFE_OVE
14860 52 57 52 49 54 45 20 20 20 20 31 33 0a 23 64 65  RWRITE    13.#de
14870 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14880 4c 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20 20  L_PRAGMA        
14890 20 20 20 20 20 20 20 20 20 31 34 0a 23 64 65 66           14.#def
148a0 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
148b0 5f 42 55 53 59 48 41 4e 44 4c 45 52 20 20 20 20  _BUSYHANDLER    
148c0 20 20 20 20 20 20 20 20 31 35 0a 23 64 65 66 69          15.#defi
148d0 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
148e0 54 45 4d 50 46 49 4c 45 4e 41 4d 45 20 20 20 20  TEMPFILENAME    
148f0 20 20 20 20 20 20 20 31 36 0a 23 64 65 66 69 6e         16.#defin
14900 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4d  e SQLITE_FCNTL_M
14910 4d 41 50 5f 53 49 5a 45 20 20 20 20 20 20 20 20  MAP_SIZE        
14920 20 20 20 20 20 20 31 38 0a 23 64 65 66 69 6e 65        18.#define
14930 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 54 52   SQLITE_FCNTL_TR
14940 41 43 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ACE             
14950 20 20 20 20 20 31 39 0a 23 64 65 66 69 6e 65 20       19.#define 
14960 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 48 41 53  SQLITE_FCNTL_HAS
14970 5f 4d 4f 56 45 44 20 20 20 20 20 20 20 20 20 20  _MOVED          
14980 20 20 20 20 32 30 0a 23 64 65 66 69 6e 65 20 53      20.#define S
14990 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 59 4e 43  QLITE_FCNTL_SYNC
149a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149b0 20 20 20 32 31 0a 23 64 65 66 69 6e 65 20 53 51     21.#define SQ
149c0 4c 49 54 45 5f 46 43 4e 54 4c 5f 43 4f 4d 4d 49  LITE_FCNTL_COMMI
149d0 54 5f 50 48 41 53 45 54 57 4f 20 20 20 20 20 20  T_PHASETWO      
149e0 20 20 32 32 0a 23 64 65 66 69 6e 65 20 53 51 4c    22.#define SQL
149f0 49 54 45 5f 46 43 4e 54 4c 5f 57 49 4e 33 32 5f  ITE_FCNTL_WIN32_
14a00 53 45 54 5f 48 41 4e 44 4c 45 20 20 20 20 20 20  SET_HANDLE      
14a10 20 32 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   23.#define SQLI
14a20 54 45 5f 46 43 4e 54 4c 5f 57 41 4c 5f 42 4c 4f  TE_FCNTL_WAL_BLO
14a30 43 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  CK              
14a40 32 34 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  24.#define SQLIT
14a50 45 5f 46 43 4e 54 4c 5f 5a 49 50 56 46 53 20 20  E_FCNTL_ZIPVFS  
14a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                 2
14a70 35 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  5.#define SQLITE
14a80 5f 46 43 4e 54 4c 5f 52 42 55 20 20 20 20 20 20  _FCNTL_RBU      
14a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 36                26
14aa0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
14ab0 46 43 4e 54 4c 5f 56 46 53 5f 50 4f 49 4e 54 45  FCNTL_VFS_POINTE
14ac0 52 20 20 20 20 20 20 20 20 20 20 20 20 32 37 0a  R            27.
14ad0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46  #define SQLITE_F
14ae0 43 4e 54 4c 5f 4a 4f 55 52 4e 41 4c 5f 50 4f 49  CNTL_JOURNAL_POI
14af0 4e 54 45 52 20 20 20 20 20 20 20 20 32 38 0a 23  NTER        28.#
14b00 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
14b10 4e 54 4c 5f 57 49 4e 33 32 5f 47 45 54 5f 48 41  NTL_WIN32_GET_HA
14b20 4e 44 4c 45 20 20 20 20 20 20 20 32 39 0a 23 64  NDLE       29.#d
14b30 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e  efine SQLITE_FCN
14b40 54 4c 5f 50 44 42 20 20 20 20 20 20 20 20 20 20  TL_PDB          
14b50 20 20 20 20 20 20 20 20 20 20 33 30 0a 23 64 65            30.#de
14b60 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54  fine SQLITE_FCNT
14b70 4c 5f 42 45 47 49 4e 5f 41 54 4f 4d 49 43 5f 57  L_BEGIN_ATOMIC_W
14b80 52 49 54 45 20 20 20 20 20 33 31 0a 23 64 65 66  RITE     31.#def
14b90 69 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c  ine SQLITE_FCNTL
14ba0 5f 43 4f 4d 4d 49 54 5f 41 54 4f 4d 49 43 5f 57  _COMMIT_ATOMIC_W
14bb0 52 49 54 45 20 20 20 20 33 32 0a 23 64 65 66 69  RITE    32.#defi
14bc0 6e 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  ne SQLITE_FCNTL_
14bd0 52 4f 4c 4c 42 41 43 4b 5f 41 54 4f 4d 49 43 5f  ROLLBACK_ATOMIC_
14be0 57 52 49 54 45 20 20 33 33 0a 23 64 65 66 69 6e  WRITE  33.#defin
14bf0 65 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c  e SQLITE_FCNTL_L
14c00 4f 43 4b 5f 54 49 4d 45 4f 55 54 20 20 20 20 20  OCK_TIMEOUT     
14c10 20 20 20 20 20 20 33 34 0a 23 64 65 66 69 6e 65        34.#define
14c20 20 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 44 41   SQLITE_FCNTL_DA
14c30 54 41 5f 56 45 52 53 49 4f 4e 20 20 20 20 20 20  TA_VERSION      
14c40 20 20 20 20 20 33 35 0a 23 64 65 66 69 6e 65 20       35.#define 
14c50 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
14c60 45 5f 4c 49 4d 49 54 20 20 20 20 20 20 20 20 20  E_LIMIT         
14c70 20 20 20 20 33 36 0a 0a 2f 2a 20 64 65 70 72 65      36../* depre
14c80 63 61 74 65 64 20 6e 61 6d 65 73 20 2a 2f 0a 23  cated names */.#
14c90 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 47 45  define SQLITE_GE
14ca0 54 5f 4c 4f 43 4b 50 52 4f 58 59 46 49 4c 45 20  T_LOCKPROXYFILE 
14cb0 20 20 20 20 20 53 51 4c 49 54 45 5f 46 43 4e 54       SQLITE_FCNT
14cc0 4c 5f 47 45 54 5f 4c 4f 43 4b 50 52 4f 58 59 46  L_GET_LOCKPROXYF
14cd0 49 4c 45 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  ILE.#define SQLI
14ce0 54 45 5f 53 45 54 5f 4c 4f 43 4b 50 52 4f 58 59  TE_SET_LOCKPROXY
14cf0 46 49 4c 45 20 20 20 20 20 20 53 51 4c 49 54 45  FILE      SQLITE
14d00 5f 46 43 4e 54 4c 5f 53 45 54 5f 4c 4f 43 4b 50  _FCNTL_SET_LOCKP
14d10 52 4f 58 59 46 49 4c 45 0a 23 64 65 66 69 6e 65  ROXYFILE.#define
14d20 20 53 51 4c 49 54 45 5f 4c 41 53 54 5f 45 52 52   SQLITE_LAST_ERR
14d30 4e 4f 20 20 20 20 20 20 20 20 20 20 20 20 20 53  NO             S
14d40 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 41 53 54  QLITE_FCNTL_LAST
14d50 5f 45 52 52 4e 4f 0a 0a 0a 2f 2a 0a 2a 2a 20 43  _ERRNO.../*.** C
14d60 41 50 49 33 52 45 46 3a 20 4d 75 74 65 78 20 48  API3REF: Mutex H
14d70 61 6e 64 6c 65 0a 2a 2a 0a 2a 2a 20 54 68 65 20  andle.**.** The 
14d80 6d 75 74 65 78 20 6d 6f 64 75 6c 65 20 77 69 74  mutex module wit
14d90 68 69 6e 20 53 51 4c 69 74 65 20 64 65 66 69 6e  hin SQLite defin
14da0 65 73 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  es [sqlite3_mute
14db0 78 5d 20 74 6f 20 62 65 20 61 6e 0a 2a 2a 20 61  x] to be an.** a
14dc0 62 73 74 72 61 63 74 20 74 79 70 65 20 66 6f 72  bstract type for
14dd0 20 61 20 6d 75 74 65 78 20 6f 62 6a 65 63 74 2e   a mutex object.
14de0 20 20 54 68 65 20 53 51 4c 69 74 65 20 63 6f 72    The SQLite cor
14df0 65 20 6e 65 76 65 72 20 6c 6f 6f 6b 73 0a 2a 2a  e never looks.**
14e00 20 61 74 20 74 68 65 20 69 6e 74 65 72 6e 61 6c   at the internal
14e10 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
14e20 6f 66 20 61 6e 20 5b 73 71 6c 69 74 65 33 5f 6d  of an [sqlite3_m
14e30 75 74 65 78 5d 2e 20 20 49 74 20 6f 6e 6c 79 0a  utex].  It only.
14e40 2a 2a 20 64 65 61 6c 73 20 77 69 74 68 20 70 6f  ** deals with po
14e50 69 6e 74 65 72 73 20 74 6f 20 74 68 65 20 5b 73  inters to the [s
14e60 71 6c 69 74 65 33 5f 6d 75 74 65 78 5d 20 6f 62  qlite3_mutex] ob
14e70 6a 65 63 74 2e 0a 2a 2a 0a 2a 2a 20 4d 75 74 65  ject..**.** Mute
14e80 78 65 73 20 61 72 65 20 63 72 65 61 74 65 64 20  xes are created 
14e90 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6d  using [sqlite3_m
14ea0 75 74 65 78 5f 61 6c 6c 6f 63 28 29 5d 2e 0a 2a  utex_alloc()]..*
14eb0 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74  /.typedef struct
14ec0 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78 20 73   sqlite3_mutex s
14ed0 71 6c 69 74 65 33 5f 6d 75 74 65 78 3b 0a 0a 2f  qlite3_mutex;../
14ee0 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4c  *.** CAPI3REF: L
14ef0 6f 61 64 61 62 6c 65 20 45 78 74 65 6e 73 69 6f  oadable Extensio
14f00 6e 20 54 68 75 6e 6b 0a 2a 2a 0a 2a 2a 20 41 20  n Thunk.**.** A 
14f10 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 6f  pointer to the o
14f20 70 61 71 75 65 20 73 71 6c 69 74 65 33 5f 61 70  paque sqlite3_ap
14f30 69 5f 72 6f 75 74 69 6e 65 73 20 73 74 72 75 63  i_routines struc
14f40 74 75 72 65 20 69 73 20 70 61 73 73 65 64 20 61  ture is passed a
14f50 73 0a 2a 2a 20 74 68 65 20 74 68 69 72 64 20 70  s.** the third p
14f60 61 72 61 6d 65 74 65 72 20 74 6f 20 65 6e 74 72  arameter to entr
14f70 79 20 70 6f 69 6e 74 73 20 6f 66 20 5b 6c 6f 61  y points of [loa
14f80 64 61 62 6c 65 20 65 78 74 65 6e 73 69 6f 6e 73  dable extensions
14f90 5d 2e 20 20 54 68 69 73 0a 2a 2a 20 73 74 72 75  ].  This.** stru
14fa0 63 74 75 72 65 20 6d 75 73 74 20 62 65 20 74 79  cture must be ty
14fb0 70 65 64 65 66 65 64 20 69 6e 20 6f 72 64 65 72  pedefed in order
14fc0 20 74 6f 20 77 6f 72 6b 20 61 72 6f 75 6e 64 20   to work around 
14fd0 63 6f 6d 70 69 6c 65 72 20 77 61 72 6e 69 6e 67  compiler warning
14fe0 73 0a 2a 2a 20 6f 6e 20 73 6f 6d 65 20 70 6c 61  s.** on some pla
14ff0 74 66 6f 72 6d 73 2e 0a 2a 2f 0a 74 79 70 65 64  tforms..*/.typed
15000 65 66 20 73 74 72 75 63 74 20 73 71 6c 69 74 65  ef struct sqlite
15010 33 5f 61 70 69 5f 72 6f 75 74 69 6e 65 73 20 73  3_api_routines s
15020 71 6c 69 74 65 33 5f 61 70 69 5f 72 6f 75 74 69  qlite3_api_routi
15030 6e 65 73 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  nes;../*.** CAPI
15040 33 52 45 46 3a 20 4f 53 20 49 6e 74 65 72 66 61  3REF: OS Interfa
15050 63 65 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20  ce Object.**.** 
15060 41 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  An instance of t
15070 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f  he sqlite3_vfs o
15080 62 6a 65 63 74 20 64 65 66 69 6e 65 73 20 74 68  bject defines th
15090 65 20 69 6e 74 65 72 66 61 63 65 20 62 65 74 77  e interface betw
150a0 65 65 6e 0a 2a 2a 20 74 68 65 20 53 51 4c 69 74  een.** the SQLit
150b0 65 20 63 6f 72 65 20 61 6e 64 20 74 68 65 20 75  e core and the u
150c0 6e 64 65 72 6c 79 69 6e 67 20 6f 70 65 72 61 74  nderlying operat
150d0 69 6e 67 20 73 79 73 74 65 6d 2e 20 20 54 68 65  ing system.  The
150e0 20 22 76 66 73 22 0a 2a 2a 20 69 6e 20 74 68 65   "vfs".** in the
150f0 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6f 62 6a   name of the obj
15100 65 63 74 20 73 74 61 6e 64 73 20 66 6f 72 20 22  ect stands for "
15110 76 69 72 74 75 61 6c 20 66 69 6c 65 20 73 79 73  virtual file sys
15120 74 65 6d 22 2e 20 20 53 65 65 0a 2a 2a 20 74 68  tem".  See.** th
15130 65 20 5b 56 46 53 20 7c 20 56 46 53 20 64 6f 63  e [VFS | VFS doc
15140 75 6d 65 6e 74 61 74 69 6f 6e 5d 20 66 6f 72 20  umentation] for 
15150 66 75 72 74 68 65 72 20 69 6e 66 6f 72 6d 61 74  further informat
15160 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 56  ion..**.** The V
15170 46 53 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  FS interface is 
15180 73 6f 6d 65 74 69 6d 65 73 20 65 78 74 65 6e 64  sometimes extend
15190 65 64 20 62 79 20 61 64 64 69 6e 67 20 6e 65 77  ed by adding new
151a0 20 6d 65 74 68 6f 64 73 20 6f 6e 74 6f 0a 2a 2a   methods onto.**
151b0 20 74 68 65 20 65 6e 64 2e 20 20 45 61 63 68 20   the end.  Each 
151c0 74 69 6d 65 20 73 75 63 68 20 61 6e 20 65 78 74  time such an ext
151d0 65 6e 73 69 6f 6e 20 6f 63 63 75 72 73 2c 20 74  ension occurs, t
151e0 68 65 20 69 56 65 72 73 69 6f 6e 20 66 69 65 6c  he iVersion fiel
151f0 64 0a 2a 2a 20 69 73 20 69 6e 63 72 65 6d 65 6e  d.** is incremen
15200 74 65 64 2e 20 20 54 68 65 20 69 56 65 72 73 69  ted.  The iVersi
15210 6f 6e 20 76 61 6c 75 65 20 73 74 61 72 74 65 64  on value started
15220 20 6f 75 74 20 61 73 20 31 20 69 6e 0a 2a 2a 20   out as 1 in.** 
15230 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
15240 33 2e 35 2e 30 5d 20 6f 6e 20 5b 64 61 74 65 6f  3.5.0] on [dateo
15250 66 3a 33 2e 35 2e 30 5d 2c 20 74 68 65 6e 20 69  f:3.5.0], then i
15260 6e 63 72 65 61 73 65 64 20 74 6f 20 32 0a 2a 2a  ncreased to 2.**
15270 20 77 69 74 68 20 53 51 4c 69 74 65 20 5b 76 65   with SQLite [ve
15280 72 73 69 6f 6e 20 33 2e 37 2e 30 5d 20 6f 6e 20  rsion 3.7.0] on 
15290 5b 64 61 74 65 6f 66 3a 33 2e 37 2e 30 5d 2c 20  [dateof:3.7.0], 
152a0 61 6e 64 20 74 68 65 6e 20 69 6e 63 72 65 61 73  and then increas
152b0 65 64 0a 2a 2a 20 74 6f 20 33 20 77 69 74 68 20  ed.** to 3 with 
152c0 53 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20  SQLite [version 
152d0 33 2e 37 2e 36 5d 20 6f 6e 20 5b 64 61 74 65 6f  3.7.6] on [dateo
152e0 66 3a 33 2e 37 2e 36 5d 2e 20 20 41 64 64 69 74  f:3.7.6].  Addit
152f0 69 6f 6e 61 6c 20 66 69 65 6c 64 73 0a 2a 2a 20  ional fields.** 
15300 6d 61 79 20 62 65 20 61 70 70 65 6e 64 65 64 20  may be appended 
15310 74 6f 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  to the sqlite3_v
15320 66 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 74 68  fs object and th
15330 65 20 69 56 65 72 73 69 6f 6e 20 76 61 6c 75 65  e iVersion value
15340 0a 2a 2a 20 6d 61 79 20 69 6e 63 72 65 61 73 65  .** may increase
15350 20 61 67 61 69 6e 20 69 6e 20 66 75 74 75 72 65   again in future
15360 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c   versions of SQL
15370 69 74 65 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68 61  ite..** Note tha
15380 74 20 74 68 65 20 73 74 72 75 63 74 75 72 65 0a  t the structure.
15390 2a 2a 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65  ** of the sqlite
153a0 33 5f 76 66 73 20 6f 62 6a 65 63 74 20 63 68 61  3_vfs object cha
153b0 6e 67 65 73 20 69 6e 20 74 68 65 20 74 72 61 6e  nges in the tran
153c0 73 69 74 69 6f 6e 20 66 72 6f 6d 0a 2a 2a 20 53  sition from.** S
153d0 51 4c 69 74 65 20 5b 76 65 72 73 69 6f 6e 20 33  QLite [version 3
153e0 2e 35 2e 39 5d 20 74 6f 20 5b 76 65 72 73 69 6f  .5.9] to [versio
153f0 6e 20 33 2e 36 2e 30 5d 20 6f 6e 20 5b 64 61 74  n 3.6.0] on [dat
15400 65 6f 66 3a 33 2e 36 2e 30 5d 0a 2a 2a 20 61 6e  eof:3.6.0].** an
15410 64 20 79 65 74 20 74 68 65 20 69 56 65 72 73 69  d yet the iVersi
15420 6f 6e 20 66 69 65 6c 64 20 77 61 73 20 6e 6f 74  on field was not
15430 20 6d 6f 64 69 66 69 65 64 2e 0a 2a 2a 0a 2a 2a   modified..**.**
15440 20 54 68 65 20 73 7a 4f 73 46 69 6c 65 20 66 69   The szOsFile fi
15450 65 6c 64 20 69 73 20 74 68 65 20 73 69 7a 65 20  eld is the size 
15460 6f 66 20 74 68 65 20 73 75 62 63 6c 61 73 73 65  of the subclasse
15470 64 20 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d  d [sqlite3_file]
15480 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 75 73  .** structure us
15490 65 64 20 62 79 20 74 68 69 73 20 56 46 53 2e 20  ed by this VFS. 
154a0 20 6d 78 50 61 74 68 6e 61 6d 65 20 69 73 20 74   mxPathname is t
154b0 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  he maximum lengt
154c0 68 20 6f 66 0a 2a 2a 20 61 20 70 61 74 68 6e 61  h of.** a pathna
154d0 6d 65 20 69 6e 20 74 68 69 73 20 56 46 53 2e 0a  me in this VFS..
154e0 2a 2a 0a 2a 2a 20 52 65 67 69 73 74 65 72 65 64  **.** Registered
154f0 20 73 71 6c 69 74 65 33 5f 76 66 73 20 6f 62 6a   sqlite3_vfs obj
15500 65 63 74 73 20 61 72 65 20 6b 65 70 74 20 6f 6e  ects are kept on
15510 20 61 20 6c 69 6e 6b 65 64 20 6c 69 73 74 20 66   a linked list f
15520 6f 72 6d 65 64 20 62 79 0a 2a 2a 20 74 68 65 20  ormed by.** the 
15530 70 4e 65 78 74 20 70 6f 69 6e 74 65 72 2e 20 20  pNext pointer.  
15540 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  The [sqlite3_vfs
15550 5f 72 65 67 69 73 74 65 72 28 29 5d 0a 2a 2a 20  _register()].** 
15560 61 6e 64 20 5b 73 71 6c 69 74 65 33 5f 76 66 73  and [sqlite3_vfs
15570 5f 75 6e 72 65 67 69 73 74 65 72 28 29 5d 20 69  _unregister()] i
15580 6e 74 65 72 66 61 63 65 73 20 6d 61 6e 61 67 65  nterfaces manage
15590 20 74 68 69 73 20 6c 69 73 74 0a 2a 2a 20 69 6e   this list.** in
155a0 20 61 20 74 68 72 65 61 64 2d 73 61 66 65 20 77   a thread-safe w
155b0 61 79 2e 20 20 54 68 65 20 5b 73 71 6c 69 74 65  ay.  The [sqlite
155c0 33 5f 76 66 73 5f 66 69 6e 64 28 29 5d 20 69 6e  3_vfs_find()] in
155d0 74 65 72 66 61 63 65 0a 2a 2a 20 73 65 61 72 63  terface.** searc
155e0 68 65 73 20 74 68 65 20 6c 69 73 74 2e 20 20 4e  hes the list.  N
155f0 65 69 74 68 65 72 20 74 68 65 20 61 70 70 6c 69  either the appli
15600 63 61 74 69 6f 6e 20 63 6f 64 65 20 6e 6f 72 20  cation code nor 
15610 74 68 65 20 56 46 53 0a 2a 2a 20 69 6d 70 6c 65  the VFS.** imple
15620 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 75 6c 64  mentation should
15630 20 75 73 65 20 74 68 65 20 70 4e 65 78 74 20 70   use the pNext p
15640 6f 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 54 68  ointer..**.** Th
15650 65 20 70 4e 65 78 74 20 66 69 65 6c 64 20 69 73  e pNext field is
15660 20 74 68 65 20 6f 6e 6c 79 20 66 69 65 6c 64 20   the only field 
15670 69 6e 20 74 68 65 20 73 71 6c 69 74 65 33 5f 76  in the sqlite3_v
15680 66 73 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20  fs.** structure 
15690 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c 6c  that SQLite will
156a0 20 65 76 65 72 20 6d 6f 64 69 66 79 2e 20 20 53   ever modify.  S
156b0 51 4c 69 74 65 20 77 69 6c 6c 20 6f 6e 6c 79 20  QLite will only 
156c0 61 63 63 65 73 73 0a 2a 2a 20 6f 72 20 6d 6f 64  access.** or mod
156d0 69 66 79 20 74 68 69 73 20 66 69 65 6c 64 20 77  ify this field w
156e0 68 69 6c 65 20 68 6f 6c 64 69 6e 67 20 61 20 70  hile holding a p
156f0 61 72 74 69 63 75 6c 61 72 20 73 74 61 74 69 63  articular static
15700 20 6d 75 74 65 78 2e 0a 2a 2a 20 54 68 65 20 61   mutex..** The a
15710 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c  pplication shoul
15720 64 20 6e 65 76 65 72 20 6d 6f 64 69 66 79 20 61  d never modify a
15730 6e 79 74 68 69 6e 67 20 77 69 74 68 69 6e 20 74  nything within t
15740 68 65 20 73 71 6c 69 74 65 33 5f 76 66 73 0a 2a  he sqlite3_vfs.*
15750 2a 20 6f 62 6a 65 63 74 20 6f 6e 63 65 20 74 68  * object once th
15760 65 20 6f 62 6a 65 63 74 20 68 61 73 20 62 65 65  e object has bee
15770 6e 20 72 65 67 69 73 74 65 72 65 64 2e 0a 2a 2a  n registered..**
15780 0a 2a 2a 20 54 68 65 20 7a 4e 61 6d 65 20 66 69  .** The zName fi
15790 65 6c 64 20 68 6f 6c 64 73 20 74 68 65 20 6e 61  eld holds the na
157a0 6d 65 20 6f 66 20 74 68 65 20 56 46 53 20 6d 6f  me of the VFS mo
157b0 64 75 6c 65 2e 20 20 54 68 65 20 6e 61 6d 65 20  dule.  The name 
157c0 6d 75 73 74 0a 2a 2a 20 62 65 20 75 6e 69 71 75  must.** be uniqu
157d0 65 20 61 63 72 6f 73 73 20 61 6c 6c 20 56 46 53  e across all VFS
157e0 20 6d 6f 64 75 6c 65 73 2e 0a 2a 2a 0a 2a 2a 20   modules..**.** 
157f0 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e 78 4f  [[sqlite3_vfs.xO
15800 70 65 6e 5d 5d 0a 2a 2a 20 5e 53 51 4c 69 74 65  pen]].** ^SQLite
15810 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74   guarantees that
15820 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d 65 20 70   the zFilename p
15830 61 72 61 6d 65 74 65 72 20 74 6f 20 78 4f 70 65  arameter to xOpe
15840 6e 0a 2a 2a 20 69 73 20 65 69 74 68 65 72 20 61  n.** is either a
15850 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 6f 72   NULL pointer or
15860 20 73 74 72 69 6e 67 20 6f 62 74 61 69 6e 65 64   string obtained
15870 0a 2a 2a 20 66 72 6f 6d 20 78 46 75 6c 6c 50 61  .** from xFullPa
15880 74 68 6e 61 6d 65 28 29 20 77 69 74 68 20 61 6e  thname() with an
15890 20 6f 70 74 69 6f 6e 61 6c 20 73 75 66 66 69 78   optional suffix
158a0 20 61 64 64 65 64 2e 0a 2a 2a 20 5e 49 66 20 61   added..** ^If a
158b0 20 73 75 66 66 69 78 20 69 73 20 61 64 64 65 64   suffix is added
158c0 20 74 6f 20 74 68 65 20 7a 46 69 6c 65 6e 61 6d   to the zFilenam
158d0 65 20 70 61 72 61 6d 65 74 65 72 2c 20 69 74 20  e parameter, it 
158e0 77 69 6c 6c 0a 2a 2a 20 63 6f 6e 73 69 73 74 20  will.** consist 
158f0 6f 66 20 61 20 73 69 6e 67 6c 65 20 22 2d 22 20  of a single "-" 
15900 63 68 61 72 61 63 74 65 72 20 66 6f 6c 6c 6f 77  character follow
15910 65 64 20 62 79 20 6e 6f 20 6d 6f 72 65 20 74 68  ed by no more th
15920 61 6e 0a 2a 2a 20 31 31 20 61 6c 70 68 61 6e 75  an.** 11 alphanu
15930 6d 65 72 69 63 20 61 6e 64 2f 6f 72 20 22 2d 22  meric and/or "-"
15940 20 63 68 61 72 61 63 74 65 72 73 2e 0a 2a 2a 20   characters..** 
15950 5e 53 51 4c 69 74 65 20 66 75 72 74 68 65 72 20  ^SQLite further 
15960 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 0a  guarantees that.
15970 2a 2a 20 74 68 65 20 73 74 72 69 6e 67 20 77 69  ** the string wi
15980 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 6e 64 20  ll be valid and 
15990 75 6e 63 68 61 6e 67 65 64 20 75 6e 74 69 6c 20  unchanged until 
159a0 78 43 6c 6f 73 65 28 29 20 69 73 0a 2a 2a 20 63  xClose() is.** c
159b0 61 6c 6c 65 64 2e 20 42 65 63 61 75 73 65 20 6f  alled. Because o
159c0 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 73  f the previous s
159d0 65 6e 74 65 6e 63 65 2c 0a 2a 2a 20 74 68 65 20  entence,.** the 
159e0 5b 73 71 6c 69 74 65 33 5f 66 69 6c 65 5d 20 63  [sqlite3_file] c
159f0 61 6e 20 73 61 66 65 6c 79 20 73 74 6f 72 65 20  an safely store 
15a00 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65  a pointer to the
15a10 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 69 66 20  .** filename if 
15a20 69 74 20 6e 65 65 64 73 20 74 6f 20 72 65 6d 65  it needs to reme
15a30 6d 62 65 72 20 74 68 65 20 66 69 6c 65 6e 61 6d  mber the filenam
15a40 65 20 66 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f  e for some reaso
15a50 6e 2e 0a 2a 2a 20 49 66 20 74 68 65 20 7a 46 69  n..** If the zFi
15a60 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72  lename parameter
15a70 20 74 6f 20 78 4f 70 65 6e 20 69 73 20 61 20 4e   to xOpen is a N
15a80 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65 6e  ULL pointer then
15a90 20 78 4f 70 65 6e 0a 2a 2a 20 6d 75 73 74 20 69   xOpen.** must i
15aa0 6e 76 65 6e 74 20 69 74 73 20 6f 77 6e 20 74 65  nvent its own te
15ab0 6d 70 6f 72 61 72 79 20 6e 61 6d 65 20 66 6f 72  mporary name for
15ac0 20 74 68 65 20 66 69 6c 65 2e 20 20 5e 57 68 65   the file.  ^Whe
15ad0 6e 65 76 65 72 20 74 68 65 20 0a 2a 2a 20 78 46  never the .** xF
15ae0 69 6c 65 6e 61 6d 65 20 70 61 72 61 6d 65 74 65  ilename paramete
15af0 72 20 69 73 20 4e 55 4c 4c 20 69 74 20 77 69 6c  r is NULL it wil
15b00 6c 20 61 6c 73 6f 20 62 65 20 74 68 65 20 63 61  l also be the ca
15b10 73 65 20 74 68 61 74 20 74 68 65 0a 2a 2a 20 66  se that the.** f
15b20 6c 61 67 73 20 70 61 72 61 6d 65 74 65 72 20 77  lags parameter w
15b30 69 6c 6c 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c  ill include [SQL
15b40 49 54 45 5f 4f 50 45 4e 5f 44 45 4c 45 54 45 4f  ITE_OPEN_DELETEO
15b50 4e 43 4c 4f 53 45 5d 2e 0a 2a 2a 0a 2a 2a 20 54  NCLOSE]..**.** T
15b60 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
15b70 74 20 74 6f 20 78 4f 70 65 6e 28 29 20 69 6e 63  t to xOpen() inc
15b80 6c 75 64 65 73 20 61 6c 6c 20 62 69 74 73 20 73  ludes all bits s
15b90 65 74 20 69 6e 0a 2a 2a 20 74 68 65 20 66 6c 61  et in.** the fla
15ba0 67 73 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b  gs argument to [
15bb0 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
15bc0 29 5d 2e 20 20 4f 72 20 69 66 20 5b 73 71 6c 69  )].  Or if [sqli
15bd0 74 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20 6f  te3_open()].** o
15be0 72 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  r [sqlite3_open1
15bf0 36 28 29 5d 20 69 73 20 75 73 65 64 2c 20 74 68  6()] is used, th
15c00 65 6e 20 66 6c 61 67 73 20 69 6e 63 6c 75 64 65  en flags include
15c10 73 20 61 74 20 6c 65 61 73 74 0a 2a 2a 20 5b 53  s at least.** [S
15c20 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57  QLITE_OPEN_READW
15c30 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45 5f  RITE] | [SQLITE_
15c40 4f 50 45 4e 5f 43 52 45 41 54 45 5d 2e 20 0a 2a  OPEN_CREATE]. .*
15c50 2a 20 49 66 20 78 4f 70 65 6e 28 29 20 6f 70 65  * If xOpen() ope
15c60 6e 73 20 61 20 66 69 6c 65 20 72 65 61 64 2d 6f  ns a file read-o
15c70 6e 6c 79 20 74 68 65 6e 20 69 74 20 73 65 74 73  nly then it sets
15c80 20 2a 70 4f 75 74 46 6c 61 67 73 20 74 6f 0a 2a   *pOutFlags to.*
15c90 2a 20 69 6e 63 6c 75 64 65 20 5b 53 51 4c 49 54  * include [SQLIT
15ca0 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59 5d  E_OPEN_READONLY]
15cb0 2e 20 20 4f 74 68 65 72 20 62 69 74 73 20 69 6e  .  Other bits in
15cc0 20 2a 70 4f 75 74 46 6c 61 67 73 20 6d 61 79 20   *pOutFlags may 
15cd0 62 65 20 73 65 74 2e 0a 2a 2a 0a 2a 2a 20 5e 28  be set..**.** ^(
15ce0 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 73 6f  SQLite will also
15cf0 20 61 64 64 20 6f 6e 65 20 6f 66 20 74 68 65 20   add one of the 
15d00 66 6f 6c 6c 6f 77 69 6e 67 20 66 6c 61 67 73 20  following flags 
15d10 74 6f 20 74 68 65 20 78 4f 70 65 6e 28 29 0a 2a  to the xOpen().*
15d20 2a 20 63 61 6c 6c 2c 20 64 65 70 65 6e 64 69 6e  * call, dependin
15d30 67 20 6f 6e 20 74 68 65 20 6f 62 6a 65 63 74 20  g on the object 
15d40 62 65 69 6e 67 20 6f 70 65 6e 65 64 3a 0a 2a 2a  being opened:.**
15d50 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c 6c 69 3e  .** <ul>.** <li>
15d60 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d    [SQLITE_OPEN_M
15d70 41 49 4e 5f 44 42 5d 0a 2a 2a 20 3c 6c 69 3e 20  AIN_DB].** <li> 
15d80 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41   [SQLITE_OPEN_MA
15d90 49 4e 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c  IN_JOURNAL].** <
15da0 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45  li>  [SQLITE_OPE
15db0 4e 5f 54 45 4d 50 5f 44 42 5d 0a 2a 2a 20 3c 6c  N_TEMP_DB].** <l
15dc0 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  i>  [SQLITE_OPEN
15dd0 5f 54 45 4d 50 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a  _TEMP_JOURNAL].*
15de0 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c 49 54 45 5f  * <li>  [SQLITE_
15df0 4f 50 45 4e 5f 54 52 41 4e 53 49 45 4e 54 5f 44  OPEN_TRANSIENT_D
15e00 42 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53 51 4c  B].** <li>  [SQL
15e10 49 54 45 5f 4f 50 45 4e 5f 53 55 42 4a 4f 55 52  ITE_OPEN_SUBJOUR
15e20 4e 41 4c 5d 0a 2a 2a 20 3c 6c 69 3e 20 20 5b 53  NAL].** <li>  [S
15e30 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d 41 53 54 45  QLITE_OPEN_MASTE
15e40 52 5f 4a 4f 55 52 4e 41 4c 5d 0a 2a 2a 20 3c 6c  R_JOURNAL].** <l
15e50 69 3e 20 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  i>  [SQLITE_OPEN
15e60 5f 57 41 4c 5d 0a 2a 2a 20 3c 2f 75 6c 3e 29 5e  _WAL].** </ul>)^
15e70 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 6c 65 20  .**.** The file 
15e80 49 2f 4f 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  I/O implementati
15e90 6f 6e 20 63 61 6e 20 75 73 65 20 74 68 65 20 6f  on can use the o
15ea0 62 6a 65 63 74 20 74 79 70 65 20 66 6c 61 67 73  bject type flags
15eb0 20 74 6f 0a 2a 2a 20 63 68 61 6e 67 65 20 74 68   to.** change th
15ec0 65 20 77 61 79 20 69 74 20 64 65 61 6c 73 20 77  e way it deals w
15ed0 69 74 68 20 66 69 6c 65 73 2e 20 20 46 6f 72 20  ith files.  For 
15ee0 65 78 61 6d 70 6c 65 2c 20 61 6e 20 61 70 70 6c  example, an appl
15ef0 69 63 61 74 69 6f 6e 0a 2a 2a 20 74 68 61 74 20  ication.** that 
15f00 64 6f 65 73 20 6e 6f 74 20 63 61 72 65 20 61 62  does not care ab
15f10 6f 75 74 20 63 72 61 73 68 20 72 65 63 6f 76 65  out crash recove
15f20 72 79 20 6f 72 20 72 6f 6c 6c 62 61 63 6b 20 6d  ry or rollback m
15f30 69 67 68 74 20 6d 61 6b 65 0a 2a 2a 20 74 68 65  ight make.** the
15f40 20 6f 70 65 6e 20 6f 66 20 61 20 6a 6f 75 72 6e   open of a journ
15f50 61 6c 20 66 69 6c 65 20 61 20 6e 6f 2d 6f 70 2e  al file a no-op.
15f60 20 20 57 72 69 74 65 73 20 74 6f 20 74 68 69 73    Writes to this
15f70 20 6a 6f 75 72 6e 61 6c 20 77 6f 75 6c 64 0a 2a   journal would.*
15f80 2a 20 61 6c 73 6f 20 62 65 20 6e 6f 2d 6f 70 73  * also be no-ops
15f90 2c 20 61 6e 64 20 61 6e 79 20 61 74 74 65 6d 70  , and any attemp
15fa0 74 20 74 6f 20 72 65 61 64 20 74 68 65 20 6a 6f  t to read the jo
15fb0 75 72 6e 61 6c 20 77 6f 75 6c 64 20 72 65 74 75  urnal would retu
15fc0 72 6e 0a 2a 2a 20 53 51 4c 49 54 45 5f 49 4f 45  rn.** SQLITE_IOE
15fd0 52 52 2e 20 20 4f 72 20 74 68 65 20 69 6d 70 6c  RR.  Or the impl
15fe0 65 6d 65 6e 74 61 74 69 6f 6e 20 6d 69 67 68 74  ementation might
15ff0 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 61 74 20   recognize that 
16000 61 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 66 69  a database.** fi
16010 6c 65 20 77 69 6c 6c 20 62 65 20 64 6f 69 6e 67  le will be doing
16020 20 70 61 67 65 2d 61 6c 69 67 6e 65 64 20 73 65   page-aligned se
16030 63 74 6f 72 20 72 65 61 64 73 20 61 6e 64 20 77  ctor reads and w
16040 72 69 74 65 73 20 69 6e 20 61 20 72 61 6e 64 6f  rites in a rando
16050 6d 0a 2a 2a 20 6f 72 64 65 72 20 61 6e 64 20 73  m.** order and s
16060 65 74 20 75 70 20 69 74 73 20 49 2f 4f 20 73 75  et up its I/O su
16070 62 73 79 73 74 65 6d 20 61 63 63 6f 72 64 69 6e  bsystem accordin
16080 67 6c 79 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  gly..**.** SQLit
16090 65 20 6d 69 67 68 74 20 61 6c 73 6f 20 61 64 64  e might also add
160a0 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c   one of the foll
160b0 6f 77 69 6e 67 20 66 6c 61 67 73 20 74 6f 20 74  owing flags to t
160c0 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 3a  he xOpen method:
160d0 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  .**.** <ul>.** <
160e0 6c 69 3e 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e  li> [SQLITE_OPEN
160f0 5f 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a  _DELETEONCLOSE].
16100 2a 2a 20 3c 6c 69 3e 20 5b 53 51 4c 49 54 45 5f  ** <li> [SQLITE_
16110 4f 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d 0a  OPEN_EXCLUSIVE].
16120 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 54  ** </ul>.**.** T
16130 68 65 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  he [SQLITE_OPEN_
16140 44 45 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 20 66  DELETEONCLOSE] f
16150 6c 61 67 20 6d 65 61 6e 73 20 74 68 65 20 66 69  lag means the fi
16160 6c 65 20 73 68 6f 75 6c 64 20 62 65 0a 2a 2a 20  le should be.** 
16170 64 65 6c 65 74 65 64 20 77 68 65 6e 20 69 74 20  deleted when it 
16180 69 73 20 63 6c 6f 73 65 64 2e 20 20 5e 54 68 65  is closed.  ^The
16190 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 44 45   [SQLITE_OPEN_DE
161a0 4c 45 54 45 4f 4e 43 4c 4f 53 45 5d 0a 2a 2a 20  LETEONCLOSE].** 
161b0 77 69 6c 6c 20 62 65 20 73 65 74 20 66 6f 72 20  will be set for 
161c0 54 45 4d 50 20 64 61 74 61 62 61 73 65 73 20 61  TEMP databases a
161d0 6e 64 20 74 68 65 69 72 20 6a 6f 75 72 6e 61 6c  nd their journal
161e0 73 2c 20 74 72 61 6e 73 69 65 6e 74 0a 2a 2a 20  s, transient.** 
161f0 64 61 74 61 62 61 73 65 73 2c 20 61 6e 64 20 73  databases, and s
16200 75 62 6a 6f 75 72 6e 61 6c 73 2e 0a 2a 2a 0a 2a  ubjournals..**.*
16210 2a 20 5e 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f  * ^The [SQLITE_O
16220 50 45 4e 5f 45 58 43 4c 55 53 49 56 45 5d 20 66  PEN_EXCLUSIVE] f
16230 6c 61 67 20 69 73 20 61 6c 77 61 79 73 20 75 73  lag is always us
16240 65 64 20 69 6e 20 63 6f 6e 6a 75 6e 63 74 69 6f  ed in conjunctio
16250 6e 0a 2a 2a 20 77 69 74 68 20 74 68 65 20 5b 53  n.** with the [S
16260 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52 45 41 54  QLITE_OPEN_CREAT
16270 45 5d 20 66 6c 61 67 2c 20 77 68 69 63 68 20 61  E] flag, which a
16280 72 65 20 62 6f 74 68 20 64 69 72 65 63 74 6c 79  re both directly
16290 0a 2a 2a 20 61 6e 61 6c 6f 67 6f 75 73 20 74 6f  .** analogous to
162a0 20 74 68 65 20 4f 5f 45 58 43 4c 20 61 6e 64 20   the O_EXCL and 
162b0 4f 5f 43 52 45 41 54 20 66 6c 61 67 73 20 6f 66  O_CREAT flags of
162c0 20 74 68 65 20 50 4f 53 49 58 20 6f 70 65 6e 28   the POSIX open(
162d0 29 0a 2a 2a 20 41 50 49 2e 20 20 54 68 65 20 53  ).** API.  The S
162e0 51 4c 49 54 45 5f 4f 50 45 4e 5f 45 58 43 4c 55  QLITE_OPEN_EXCLU
162f0 53 49 56 45 20 66 6c 61 67 2c 20 77 68 65 6e 20  SIVE flag, when 
16300 70 61 69 72 65 64 20 77 69 74 68 20 74 68 65 20  paired with the 
16310 0a 2a 2a 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  .** SQLITE_OPEN_
16320 43 52 45 41 54 45 2c 20 69 73 20 75 73 65 64 20  CREATE, is used 
16330 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74  to indicate that
16340 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 61 6c 77   file should alw
16350 61 79 73 0a 2a 2a 20 62 65 20 63 72 65 61 74 65  ays.** be create
16360 64 2c 20 61 6e 64 20 74 68 61 74 20 69 74 20 69  d, and that it i
16370 73 20 61 6e 20 65 72 72 6f 72 20 69 66 20 69 74  s an error if it
16380 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 2e   already exists.
16390 0a 2a 2a 20 49 74 20 69 73 20 3c 69 3e 6e 6f 74  .** It is <i>not
163a0 3c 2f 69 3e 20 75 73 65 64 20 74 6f 20 69 6e 64  </i> used to ind
163b0 69 63 61 74 65 20 74 68 65 20 66 69 6c 65 20 73  icate the file s
163c0 68 6f 75 6c 64 20 62 65 20 6f 70 65 6e 65 64 20  hould be opened 
163d0 0a 2a 2a 20 66 6f 72 20 65 78 63 6c 75 73 69 76  .** for exclusiv
163e0 65 20 61 63 63 65 73 73 2e 0a 2a 2a 0a 2a 2a 20  e access..**.** 
163f0 5e 41 74 20 6c 65 61 73 74 20 73 7a 4f 73 46 69  ^At least szOsFi
16400 6c 65 20 62 79 74 65 73 20 6f 66 20 6d 65 6d 6f  le bytes of memo
16410 72 79 20 61 72 65 20 61 6c 6c 6f 63 61 74 65 64  ry are allocated
16420 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 74 6f   by SQLite.** to
16430 20 68 6f 6c 64 20 74 68 65 20 20 5b 73 71 6c 69   hold the  [sqli
16440 74 65 33 5f 66 69 6c 65 5d 20 73 74 72 75 63 74  te3_file] struct
16450 75 72 65 20 70 61 73 73 65 64 20 61 73 20 74 68  ure passed as th
16460 65 20 74 68 69 72 64 0a 2a 2a 20 61 72 67 75 6d  e third.** argum
16470 65 6e 74 20 74 6f 20 78 4f 70 65 6e 2e 20 20 54  ent to xOpen.  T
16480 68 65 20 78 4f 70 65 6e 20 6d 65 74 68 6f 64 20  he xOpen method 
16490 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74 6f  does not have to
164a0 0a 2a 2a 20 61 6c 6c 6f 63 61 74 65 20 74 68 65  .** allocate the
164b0 20 73 74 72 75 63 74 75 72 65 3b 20 69 74 20 73   structure; it s
164c0 68 6f 75 6c 64 20 6a 75 73 74 20 66 69 6c 6c 20  hould just fill 
164d0 69 74 20 69 6e 2e 20 20 4e 6f 74 65 20 74 68 61  it in.  Note tha
164e0 74 0a 2a 2a 20 74 68 65 20 78 4f 70 65 6e 20 6d  t.** the xOpen m
164f0 65 74 68 6f 64 20 6d 75 73 74 20 73 65 74 20 74  ethod must set t
16500 68 65 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 2e  he sqlite3_file.
16510 70 4d 65 74 68 6f 64 73 20 74 6f 20 65 69 74 68  pMethods to eith
16520 65 72 0a 2a 2a 20 61 20 76 61 6c 69 64 20 5b 73  er.** a valid [s
16530 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64  qlite3_io_method
16540 73 5d 20 6f 62 6a 65 63 74 20 6f 72 20 74 6f 20  s] object or to 
16550 4e 55 4c 4c 2e 20 20 78 4f 70 65 6e 20 6d 75 73  NULL.  xOpen mus
16560 74 20 64 6f 0a 2a 2a 20 74 68 69 73 20 65 76 65  t do.** this eve
16570 6e 20 69 66 20 74 68 65 20 6f 70 65 6e 20 66 61  n if the open fa
16580 69 6c 73 2e 20 20 53 51 4c 69 74 65 20 65 78 70  ils.  SQLite exp
16590 65 63 74 73 20 74 68 61 74 20 74 68 65 20 73 71  ects that the sq
165a0 6c 69 74 65 33 5f 66 69 6c 65 2e 70 4d 65 74 68  lite3_file.pMeth
165b0 6f 64 73 0a 2a 2a 20 65 6c 65 6d 65 6e 74 20 77  ods.** element w
165c0 69 6c 6c 20 62 65 20 76 61 6c 69 64 20 61 66 74  ill be valid aft
165d0 65 72 20 78 4f 70 65 6e 20 72 65 74 75 72 6e 73  er xOpen returns
165e0 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74   regardless of t
165f0 68 65 20 73 75 63 63 65 73 73 0a 2a 2a 20 6f 72  he success.** or
16600 20 66 61 69 6c 75 72 65 20 6f 66 20 74 68 65 20   failure of the 
16610 78 4f 70 65 6e 20 63 61 6c 6c 2e 0a 2a 2a 0a 2a  xOpen call..**.*
16620 2a 20 5b 5b 73 71 6c 69 74 65 33 5f 76 66 73 2e  * [[sqlite3_vfs.
16630 78 41 63 63 65 73 73 5d 5d 0a 2a 2a 20 5e 54 68  xAccess]].** ^Th
16640 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e 74  e flags argument
16650 20 74 6f 20 78 41 63 63 65 73 73 28 29 20 6d 61   to xAccess() ma
16660 79 20 62 65 20 5b 53 51 4c 49 54 45 5f 41 43 43  y be [SQLITE_ACC
16670 45 53 53 5f 45 58 49 53 54 53 5d 0a 2a 2a 20 74  ESS_EXISTS].** t
16680 6f 20 74 65 73 74 20 66 6f 72 20 74 68 65 20 65  o test for the e
16690 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 66 69  xistence of a fi
166a0 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 41  le, or [SQLITE_A
166b0 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45 5d  CCESS_READWRITE]
166c0 20 74 6f 0a 2a 2a 20 74 65 73 74 20 77 68 65 74   to.** test whet
166d0 68 65 72 20 61 20 66 69 6c 65 20 69 73 20 72 65  her a file is re
166e0 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74 61  adable and writa
166f0 62 6c 65 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f  ble, or [SQLITE_
16700 41 43 43 45 53 53 5f 52 45 41 44 5d 0a 2a 2a 20  ACCESS_READ].** 
16710 74 6f 20 74 65 73 74 20 77 68 65 74 68 65 72 20  to test whether 
16720 61 20 66 69 6c 65 20 69 73 20 61 74 20 6c 65 61  a file is at lea
16730 73 74 20 72 65 61 64 61 62 6c 65 2e 20 20 20 54  st readable.   T
16740 68 65 20 66 69 6c 65 20 63 61 6e 20 62 65 20 61  he file can be a
16750 0a 2a 2a 20 64 69 72 65 63 74 6f 72 79 2e 0a 2a  .** directory..*
16760 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 77 69 6c  *.** ^SQLite wil
16770 6c 20 61 6c 77 61 79 73 20 61 6c 6c 6f 63 61 74  l always allocat
16780 65 20 61 74 20 6c 65 61 73 74 20 6d 78 50 61 74  e at least mxPat
16790 68 6e 61 6d 65 2b 31 20 62 79 74 65 73 20 66 6f  hname+1 bytes fo
167a0 72 20 74 68 65 0a 2a 2a 20 6f 75 74 70 75 74 20  r the.** output 
167b0 62 75 66 66 65 72 20 78 46 75 6c 6c 50 61 74 68  buffer xFullPath
167c0 6e 61 6d 65 2e 20 20 54 68 65 20 65 78 61 63 74  name.  The exact
167d0 20 73 69 7a 65 20 6f 66 20 74 68 65 20 6f 75 74   size of the out
167e0 70 75 74 20 62 75 66 66 65 72 0a 2a 2a 20 69 73  put buffer.** is
167f0 20 61 6c 73 6f 20 70 61 73 73 65 64 20 61 73 20   also passed as 
16800 61 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 62  a parameter to b
16810 6f 74 68 20 20 6d 65 74 68 6f 64 73 2e 20 49 66  oth  methods. If
16820 20 74 68 65 20 6f 75 74 70 75 74 20 62 75 66 66   the output buff
16830 65 72 0a 2a 2a 20 69 73 20 6e 6f 74 20 6c 61 72  er.** is not lar
16840 67 65 20 65 6e 6f 75 67 68 2c 20 5b 53 51 4c 49  ge enough, [SQLI
16850 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 73 68 6f  TE_CANTOPEN] sho
16860 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 2e  uld be returned.
16870 20 53 69 6e 63 65 20 74 68 69 73 20 69 73 0a 2a   Since this is.*
16880 2a 20 68 61 6e 64 6c 65 64 20 61 73 20 61 20 66  * handled as a f
16890 61 74 61 6c 20 65 72 72 6f 72 20 62 79 20 53 51  atal error by SQ
168a0 4c 69 74 65 2c 20 76 66 73 20 69 6d 70 6c 65 6d  Lite, vfs implem
168b0 65 6e 74 61 74 69 6f 6e 73 20 73 68 6f 75 6c 64  entations should
168c0 20 65 6e 64 65 61 76 6f 72 0a 2a 2a 20 74 6f 20   endeavor.** to 
168d0 70 72 65 76 65 6e 74 20 74 68 69 73 20 62 79 20  prevent this by 
168e0 73 65 74 74 69 6e 67 20 6d 78 50 61 74 68 6e 61  setting mxPathna
168f0 6d 65 20 74 6f 20 61 20 73 75 66 66 69 63 69 65  me to a sufficie
16900 6e 74 6c 79 20 6c 61 72 67 65 20 76 61 6c 75 65  ntly large value
16910 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 52 61 6e  ..**.** The xRan
16920 64 6f 6d 6e 65 73 73 28 29 2c 20 78 53 6c 65 65  domness(), xSlee
16930 70 28 29 2c 20 78 43 75 72 72 65 6e 74 54 69 6d  p(), xCurrentTim
16940 65 28 29 2c 20 61 6e 64 20 78 43 75 72 72 65 6e  e(), and xCurren
16950 74 54 69 6d 65 49 6e 74 36 34 28 29 0a 2a 2a 20  tTimeInt64().** 
16960 69 6e 74 65 72 66 61 63 65 73 20 61 72 65 20 6e  interfaces are n
16970 6f 74 20 73 74 72 69 63 74 6c 79 20 61 20 70 61  ot strictly a pa
16980 72 74 20 6f 66 20 74 68 65 20 66 69 6c 65 73 79  rt of the filesy
16990 73 74 65 6d 2c 20 62 75 74 20 74 68 65 79 20 61  stem, but they a
169a0 72 65 0a 2a 2a 20 69 6e 63 6c 75 64 65 64 20 69  re.** included i
169b0 6e 20 74 68 65 20 56 46 53 20 73 74 72 75 63 74  n the VFS struct
169c0 75 72 65 20 66 6f 72 20 63 6f 6d 70 6c 65 74 65  ure for complete
169d0 6e 65 73 73 2e 0a 2a 2a 20 54 68 65 20 78 52 61  ness..** The xRa
169e0 6e 64 6f 6d 6e 65 73 73 28 29 20 66 75 6e 63 74  ndomness() funct
169f0 69 6f 6e 20 61 74 74 65 6d 70 74 73 20 74 6f 20  ion attempts to 
16a00 72 65 74 75 72 6e 20 6e 42 79 74 65 73 20 62 79  return nBytes by
16a10 74 65 73 0a 2a 2a 20 6f 66 20 67 6f 6f 64 2d 71  tes.** of good-q
16a20 75 61 6c 69 74 79 20 72 61 6e 64 6f 6d 6e 65 73  uality randomnes
16a30 73 20 69 6e 74 6f 20 7a 4f 75 74 2e 20 20 54 68  s into zOut.  Th
16a40 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69  e return value i
16a50 73 0a 2a 2a 20 74 68 65 20 61 63 74 75 61 6c 20  s.** the actual 
16a60 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20  number of bytes 
16a70 6f 66 20 72 61 6e 64 6f 6d 6e 65 73 73 20 6f 62  of randomness ob
16a80 74 61 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20 78  tained..** The x
16a90 53 6c 65 65 70 28 29 20 6d 65 74 68 6f 64 20 63  Sleep() method c
16aa0 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 69 6e  auses the callin
16ab0 67 20 74 68 72 65 61 64 20 74 6f 20 73 6c 65 65  g thread to slee
16ac0 70 20 66 6f 72 20 61 74 0a 2a 2a 20 6c 65 61 73  p for at.** leas
16ad0 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  t the number of 
16ae0 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 67 69 76  microseconds giv
16af0 65 6e 2e 20 20 5e 54 68 65 20 78 43 75 72 72 65  en.  ^The xCurre
16b00 6e 74 54 69 6d 65 28 29 0a 2a 2a 20 6d 65 74 68  ntTime().** meth
16b10 6f 64 20 72 65 74 75 72 6e 73 20 61 20 4a 75 6c  od returns a Jul
16b20 69 61 6e 20 44 61 79 20 4e 75 6d 62 65 72 20 66  ian Day Number f
16b30 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 64  or the current d
16b40 61 74 65 20 61 6e 64 20 74 69 6d 65 20 61 73 0a  ate and time as.
16b50 2a 2a 20 61 20 66 6c 6f 61 74 69 6e 67 20 70 6f  ** a floating po
16b60 69 6e 74 20 76 61 6c 75 65 2e 0a 2a 2a 20 5e 54  int value..** ^T
16b70 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65 49  he xCurrentTimeI
16b80 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 72 65  nt64() method re
16b90 74 75 72 6e 73 2c 20 61 73 20 61 6e 20 69 6e 74  turns, as an int
16ba0 65 67 65 72 2c 20 74 68 65 20 4a 75 6c 69 61 6e  eger, the Julian
16bb0 0a 2a 2a 20 44 61 79 20 4e 75 6d 62 65 72 20 6d  .** Day Number m
16bc0 75 6c 74 69 70 6c 69 65 64 20 62 79 20 38 36 34  ultiplied by 864
16bd0 30 30 30 30 30 20 28 74 68 65 20 6e 75 6d 62 65  00000 (the numbe
16be0 72 20 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64  r of millisecond
16bf0 73 20 69 6e 20 0a 2a 2a 20 61 20 32 34 2d 68 6f  s in .** a 24-ho
16c00 75 72 20 64 61 79 29 2e 20 20 0a 2a 2a 20 5e 53  ur day).  .** ^S
16c10 51 4c 69 74 65 20 77 69 6c 6c 20 75 73 65 20 74  QLite will use t
16c20 68 65 20 78 43 75 72 72 65 6e 74 54 69 6d 65 49  he xCurrentTimeI
16c30 6e 74 36 34 28 29 20 6d 65 74 68 6f 64 20 74 6f  nt64() method to
16c40 20 67 65 74 20 74 68 65 20 63 75 72 72 65 6e 74   get the current
16c50 0a 2a 2a 20 64 61 74 65 20 61 6e 64 20 74 69 6d  .** date and tim
16c60 65 20 69 66 20 74 68 61 74 20 6d 65 74 68 6f 64  e if that method
16c70 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 28 69   is available (i
16c80 66 20 69 56 65 72 73 69 6f 6e 20 69 73 20 32 20  f iVersion is 2 
16c90 6f 72 20 0a 2a 2a 20 67 72 65 61 74 65 72 20 61  or .** greater a
16ca0 6e 64 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20  nd the function 
16cb0 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f 74 20 4e  pointer is not N
16cc0 55 4c 4c 29 20 61 6e 64 20 77 69 6c 6c 20 66 61  ULL) and will fa
16cd0 6c 6c 20 62 61 63 6b 0a 2a 2a 20 74 6f 20 78 43  ll back.** to xC
16ce0 75 72 72 65 6e 74 54 69 6d 65 28 29 20 69 66 20  urrentTime() if 
16cf0 78 43 75 72 72 65 6e 74 54 69 6d 65 49 6e 74 36  xCurrentTimeInt6
16d00 34 28 29 20 69 73 20 75 6e 61 76 61 69 6c 61 62  4() is unavailab
16d10 6c 65 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 78  le..**.** ^The x
16d20 53 65 74 53 79 73 74 65 6d 43 61 6c 6c 28 29 2c  SetSystemCall(),
16d30 20 78 47 65 74 53 79 73 74 65 6d 43 61 6c 6c 28   xGetSystemCall(
16d40 29 2c 20 61 6e 64 20 78 4e 65 73 74 53 79 73 74  ), and xNestSyst
16d50 65 6d 43 61 6c 6c 28 29 20 69 6e 74 65 72 66 61  emCall() interfa
16d60 63 65 73 0a 2a 2a 20 61 72 65 20 6e 6f 74 20 75  ces.** are not u
16d70 73 65 64 20 62 79 20 74 68 65 20 53 51 4c 69 74  sed by the SQLit
16d80 65 20 63 6f 72 65 2e 20 20 54 68 65 73 65 20 6f  e core.  These o
16d90 70 74 69 6f 6e 61 6c 20 69 6e 74 65 72 66 61 63  ptional interfac
16da0 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 0a  es are provided.
16db0 2a 2a 20 62 79 20 73 6f 6d 65 20 56 46 53 65 73  ** by some VFSes
16dc0 20 74 6f 20 66 61 63 69 6c 69 74 61 74 65 20 74   to facilitate t
16dd0 65 73 74 69 6e 67 20 6f 66 20 74 68 65 20 56 46  esting of the VF
16de0 53 20 63 6f 64 65 2e 20 42 79 20 6f 76 65 72 72  S code. By overr
16df0 69 64 69 6e 67 20 0a 2a 2a 20 73 79 73 74 65 6d  iding .** system
16e00 20 63 61 6c 6c 73 20 77 69 74 68 20 66 75 6e 63   calls with func
16e10 74 69 6f 6e 73 20 75 6e 64 65 72 20 69 74 73 20  tions under its 
16e20 63 6f 6e 74 72 6f 6c 2c 20 61 20 74 65 73 74 20  control, a test 
16e30 70 72 6f 67 72 61 6d 20 63 61 6e 0a 2a 2a 20 73  program can.** s
16e40 69 6d 75 6c 61 74 65 20 66 61 75 6c 74 73 20 61  imulate faults a
16e50 6e 64 20 65 72 72 6f 72 20 63 6f 6e 64 69 74 69  nd error conditi
16e60 6f 6e 73 20 74 68 61 74 20 77 6f 75 6c 64 20 6f  ons that would o
16e70 74 68 65 72 77 69 73 65 20 62 65 20 64 69 66 66  therwise be diff
16e80 69 63 75 6c 74 0a 2a 2a 20 6f 72 20 69 6d 70 6f  icult.** or impo
16e90 73 73 69 62 6c 65 20 74 6f 20 69 6e 64 75 63 65  ssible to induce
16ea0 2e 20 20 54 68 65 20 73 65 74 20 6f 66 20 73 79  .  The set of sy
16eb0 73 74 65 6d 20 63 61 6c 6c 73 20 74 68 61 74 20  stem calls that 
16ec0 63 61 6e 20 62 65 20 6f 76 65 72 72 69 64 64 65  can be overridde
16ed0 6e 0a 2a 2a 20 76 61 72 69 65 73 20 66 72 6f 6d  n.** varies from
16ee0 20 6f 6e 65 20 56 46 53 20 74 6f 20 61 6e 6f 74   one VFS to anot
16ef0 68 65 72 2c 20 61 6e 64 20 66 72 6f 6d 20 6f 6e  her, and from on
16f00 65 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65  e version of the
16f10 20 73 61 6d 65 20 56 46 53 20 74 6f 20 74 68 65   same VFS to the
16f20 0a 2a 2a 20 6e 65 78 74 2e 20 20 41 70 70 6c 69  .** next.  Appli
16f30 63 61 74 69 6f 6e 73 20 74 68 61 74 20 75 73 65  cations that use
16f40 20 74 68 65 73 65 20 69 6e 74 65 72 66 61 63 65   these interface
16f50 73 20 6d 75 73 74 20 62 65 20 70 72 65 70 61 72  s must be prepar
16f60 65 64 20 66 6f 72 20 61 6e 79 0a 2a 2a 20 6f 72  ed for any.** or
16f70 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 69 6e   all of these in
16f80 74 65 72 66 61 63 65 73 20 74 6f 20 62 65 20 4e  terfaces to be N
16f90 55 4c 4c 20 6f 72 20 66 6f 72 20 74 68 65 69 72  ULL or for their
16fa0 20 62 65 68 61 76 69 6f 72 20 74 6f 20 63 68 61   behavior to cha
16fb0 6e 67 65 0a 2a 2a 20 66 72 6f 6d 20 6f 6e 65 20  nge.** from one 
16fc0 72 65 6c 65 61 73 65 20 74 6f 20 74 68 65 20 6e  release to the n
16fd0 65 78 74 2e 20 20 41 70 70 6c 69 63 61 74 69 6f  ext.  Applicatio
16fe0 6e 73 20 6d 75 73 74 20 6e 6f 74 20 61 74 74 65  ns must not atte
16ff0 6d 70 74 20 74 6f 20 61 63 63 65 73 73 0a 2a 2a  mpt to access.**
17000 20 61 6e 79 20 6f 66 20 74 68 65 73 65 20 6d 65   any of these me
17010 74 68 6f 64 73 20 69 66 20 74 68 65 20 69 56 65  thods if the iVe
17020 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 56 46 53  rsion of the VFS
17030 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 33 2e   is less than 3.
17040 0a 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75  .*/.typedef stru
17050 63 74 20 73 71 6c 69 74 65 33 5f 76 66 73 20 73  ct sqlite3_vfs s
17060 71 6c 69 74 65 33 5f 76 66 73 3b 0a 74 79 70 65  qlite3_vfs;.type
17070 64 65 66 20 76 6f 69 64 20 28 2a 73 71 6c 69 74  def void (*sqlit
17080 65 33 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29 28  e3_syscall_ptr)(
17090 76 6f 69 64 29 3b 0a 73 74 72 75 63 74 20 73 71  void);.struct sq
170a0 6c 69 74 65 33 5f 76 66 73 20 7b 0a 20 20 69 6e  lite3_vfs {.  in
170b0 74 20 69 56 65 72 73 69 6f 6e 3b 20 20 20 20 20  t iVersion;     
170c0 20 20 20 20 20 20 20 2f 2a 20 53 74 72 75 63 74         /* Struct
170d0 75 72 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  ure version numb
170e0 65 72 20 28 63 75 72 72 65 6e 74 6c 79 20 33 29  er (currently 3)
170f0 20 2a 2f 0a 20 20 69 6e 74 20 73 7a 4f 73 46 69   */.  int szOsFi
17100 6c 65 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f  le;            /
17110 2a 20 53 69 7a 65 20 6f 66 20 73 75 62 63 6c 61  * Size of subcla
17120 73 73 65 64 20 73 71 6c 69 74 65 33 5f 66 69 6c  ssed sqlite3_fil
17130 65 20 2a 2f 0a 20 20 69 6e 74 20 6d 78 50 61 74  e */.  int mxPat
17140 68 6e 61 6d 65 3b 20 20 20 20 20 20 20 20 20 20  hname;          
17150 2f 2a 20 4d 61 78 69 6d 75 6d 20 66 69 6c 65 20  /* Maximum file 
17160 70 61 74 68 6e 61 6d 65 20 6c 65 6e 67 74 68 20  pathname length 
17170 2a 2f 0a 20 20 73 71 6c 69 74 65 33 5f 76 66 73  */.  sqlite3_vfs
17180 20 2a 70 4e 65 78 74 3b 20 20 20 20 20 20 2f 2a   *pNext;      /*
17190 20 4e 65 78 74 20 72 65 67 69 73 74 65 72 65 64   Next registered
171a0 20 56 46 53 20 2a 2f 0a 20 20 63 6f 6e 73 74 20   VFS */.  const 
171b0 63 68 61 72 20 2a 7a 4e 61 6d 65 3b 20 20 20 20  char *zName;    
171c0 20 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 74 68     /* Name of th
171d0 69 73 20 76 69 72 74 75 61 6c 20 66 69 6c 65 20  is virtual file 
171e0 73 79 73 74 65 6d 20 2a 2f 0a 20 20 76 6f 69 64  system */.  void
171f0 20 2a 70 41 70 70 44 61 74 61 3b 20 20 20 20 20   *pAppData;     
17200 20 20 20 20 20 2f 2a 20 50 6f 69 6e 74 65 72 20       /* Pointer 
17210 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d 73  to application-s
17220 70 65 63 69 66 69 63 20 64 61 74 61 20 2a 2f 0a  pecific data */.
17230 20 20 69 6e 74 20 28 2a 78 4f 70 65 6e 29 28 73    int (*xOpen)(s
17240 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e  qlite3_vfs*, con
17250 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20  st char *zName, 
17260 73 71 6c 69 74 65 33 5f 66 69 6c 65 2a 2c 0a 20  sqlite3_file*,. 
17270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
17280 74 20 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70 4f  t flags, int *pO
17290 75 74 46 6c 61 67 73 29 3b 0a 20 20 69 6e 74 20  utFlags);.  int 
172a0 28 2a 78 44 65 6c 65 74 65 29 28 73 71 6c 69 74  (*xDelete)(sqlit
172b0 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
172c0 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20  har *zName, int 
172d0 73 79 6e 63 44 69 72 29 3b 0a 20 20 69 6e 74 20  syncDir);.  int 
172e0 28 2a 78 41 63 63 65 73 73 29 28 73 71 6c 69 74  (*xAccess)(sqlit
172f0 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63  e3_vfs*, const c
17300 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e 74 20  har *zName, int 
17310 66 6c 61 67 73 2c 20 69 6e 74 20 2a 70 52 65 73  flags, int *pRes
17320 4f 75 74 29 3b 0a 20 20 69 6e 74 20 28 2a 78 46  Out);.  int (*xF
17330 75 6c 6c 50 61 74 68 6e 61 6d 65 29 28 73 71 6c  ullPathname)(sql
17340 69 74 65 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74  ite3_vfs*, const
17350 20 63 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 69 6e   char *zName, in
17360 74 20 6e 4f 75 74 2c 20 63 68 61 72 20 2a 7a 4f  t nOut, char *zO
17370 75 74 29 3b 0a 20 20 76 6f 69 64 20 2a 28 2a 78  ut);.  void *(*x
17380 44 6c 4f 70 65 6e 29 28 73 71 6c 69 74 65 33 5f  DlOpen)(sqlite3_
17390 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
173a0 20 2a 7a 46 69 6c 65 6e 61 6d 65 29 3b 0a 20 20   *zFilename);.  
173b0 76 6f 69 64 20 28 2a 78 44 6c 45 72 72 6f 72 29  void (*xDlError)
173c0 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 69  (sqlite3_vfs*, i
173d0 6e 74 20 6e 42 79 74 65 2c 20 63 68 61 72 20 2a  nt nByte, char *
173e0 7a 45 72 72 4d 73 67 29 3b 0a 20 20 76 6f 69 64  zErrMsg);.  void
173f0 20 28 2a 28 2a 78 44 6c 53 79 6d 29 28 73 71 6c   (*(*xDlSym)(sql
17400 69 74 65 33 5f 76 66 73 2a 2c 76 6f 69 64 2a 2c  ite3_vfs*,void*,
17410 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 53 79   const char *zSy
17420 6d 62 6f 6c 29 29 28 76 6f 69 64 29 3b 0a 20 20  mbol))(void);.  
17430 76 6f 69 64 20 28 2a 78 44 6c 43 6c 6f 73 65 29  void (*xDlClose)
17440 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20 76  (sqlite3_vfs*, v
17450 6f 69 64 2a 29 3b 0a 20 20 69 6e 74 20 28 2a 78  oid*);.  int (*x
17460 52 61 6e 64 6f 6d 6e 65 73 73 29 28 73 71 6c 69  Randomness)(sqli
17470 74 65 33 5f 76 66 73 2a 2c 20 69 6e 74 20 6e 42  te3_vfs*, int nB
17480 79 74 65 2c 20 63 68 61 72 20 2a 7a 4f 75 74 29  yte, char *zOut)
17490 3b 0a 20 20 69 6e 74 20 28 2a 78 53 6c 65 65 70  ;.  int (*xSleep
174a0 29 28 73 71 6c 69 74 65 33 5f 76 66 73 2a 2c 20  )(sqlite3_vfs*, 
174b0 69 6e 74 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73  int microseconds
174c0 29 3b 0a 20 20 69 6e 74 20 28 2a 78 43 75 72 72  );.  int (*xCurr
174d0 65 6e 74 54 69 6d 65 29 28 73 71 6c 69 74 65 33  entTime)(sqlite3
174e0 5f 76 66 73 2a 2c 20 64 6f 75 62 6c 65 2a 29 3b  _vfs*, double*);
174f0 0a 20 20 69 6e 74 20 28 2a 78 47 65 74 4c 61 73  .  int (*xGetLas
17500 74 45 72 72 6f 72 29 28 73 71 6c 69 74 65 33 5f  tError)(sqlite3_
17510 76 66 73 2a 2c 20 69 6e 74 2c 20 63 68 61 72 20  vfs*, int, char 
17520 2a 29 3b 0a 20 20 2f 2a 0a 20 20 2a 2a 20 54 68  *);.  /*.  ** Th
17530 65 20 6d 65 74 68 6f 64 73 20 61 62 6f 76 65 20  e methods above 
17540 61 72 65 20 69 6e 20 76 65 72 73 69 6f 6e 20 31  are in version 1
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 0a 20 20 2a 2a 20 64  fs object.  ** d
17570 65 66 69 6e 69 74 69 6f 6e 2e 20 20 54 68 6f 73  efinition.  Thos
17580 65 20 74 68 61 74 20 66 6f 6c 6c 6f 77 20 61 72  e that follow ar
17590 65 20 61 64 64 65 64 20 69 6e 20 76 65 72 73 69  e added in versi
175a0 6f 6e 20 32 20 6f 72 20 6c 61 74 65 72 0a 20 20  on 2 or later.  
175b0 2a 2f 0a 20 20 69 6e 74 20 28 2a 78 43 75 72 72  */.  int (*xCurr
175c0 65 6e 74 54 69 6d 65 49 6e 74 36 34 29 28 73 71  entTimeInt64)(sq
175d0 6c 69 74 65 33 5f 76 66 73 2a 2c 20 73 71 6c 69  lite3_vfs*, sqli
175e0 74 65 33 5f 69 6e 74 36 34 2a 29 3b 0a 20 20 2f  te3_int64*);.  /
175f0 2a 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f  *.  ** The metho
17600 64 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20  ds above are in 
17610 76 65 72 73 69 6f 6e 73 20 31 20 61 6e 64 20 32  versions 1 and 2
17620 20 6f 66 20 74 68 65 20 73 71 6c 69 74 65 5f 76   of the sqlite_v
17630 66 73 20 6f 62 6a 65 63 74 2e 0a 20 20 2a 2a 20  fs object..  ** 
17640 54 68 6f 73 65 20 62 65 6c 6f 77 20 61 72 65 20  Those below are 
17650 66 6f 72 20 76 65 72 73 69 6f 6e 20 33 20 61 6e  for version 3 an
17660 64 20 67 72 65 61 74 65 72 2e 0a 20 20 2a 2f 0a  d greater..  */.
17670 20 20 69 6e 74 20 28 2a 78 53 65 74 53 79 73 74    int (*xSetSyst
17680 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f  emCall)(sqlite3_
17690 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72  vfs*, const char
176a0 20 2a 7a 4e 61 6d 65 2c 20 73 71 6c 69 74 65 33   *zName, sqlite3
176b0 5f 73 79 73 63 61 6c 6c 5f 70 74 72 29 3b 0a 20  _syscall_ptr);. 
176c0 20 73 71 6c 69 74 65 33 5f 73 79 73 63 61 6c 6c   sqlite3_syscall
176d0 5f 70 74 72 20 28 2a 78 47 65 74 53 79 73 74 65  _ptr (*xGetSyste
176e0 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65 33 5f 76  mCall)(sqlite3_v
176f0 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68 61 72 20  fs*, const char 
17700 2a 7a 4e 61 6d 65 29 3b 0a 20 20 63 6f 6e 73 74  *zName);.  const
17710 20 63 68 61 72 20 2a 28 2a 78 4e 65 78 74 53 79   char *(*xNextSy
17720 73 74 65 6d 43 61 6c 6c 29 28 73 71 6c 69 74 65  stemCall)(sqlite
17730 33 5f 76 66 73 2a 2c 20 63 6f 6e 73 74 20 63 68  3_vfs*, const ch
17740 61 72 20 2a 7a 4e 61 6d 65 29 3b 0a 20 20 2f 2a  ar *zName);.  /*
17750 0a 20 20 2a 2a 20 54 68 65 20 6d 65 74 68 6f 64  .  ** The method
17760 73 20 61 62 6f 76 65 20 61 72 65 20 69 6e 20 76  s above are in v
17770 65 72 73 69 6f 6e 73 20 31 20 74 68 72 6f 75 67  ersions 1 throug
17780 68 20 33 20 6f 66 20 74 68 65 20 73 71 6c 69 74  h 3 of the sqlit
17790 65 5f 76 66 73 20 6f 62 6a 65 63 74 2e 0a 20 20  e_vfs object..  
177a0 2a 2a 20 4e 65 77 20 66 69 65 6c 64 73 20 6d 61  ** New fields ma
177b0 79 20 62 65 20 61 70 70 65 6e 64 65 64 20 69 6e  y be appended in
177c0 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73   future versions
177d0 2e 20 20 54 68 65 20 69 56 65 72 73 69 6f 6e 0a  .  The iVersion.
177e0 20 20 2a 2a 20 76 61 6c 75 65 20 77 69 6c 6c 20    ** value will 
177f0 69 6e 63 72 65 6d 65 6e 74 20 77 68 65 6e 65 76  increment whenev
17800 65 72 20 74 68 69 73 20 68 61 70 70 65 6e 73 2e  er this happens.
17810 20 0a 20 20 2a 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a   .  */.};../*.**
17820 20 43 41 50 49 33 52 45 46 3a 20 46 6c 61 67 73   CAPI3REF: Flags
17830 20 66 6f 72 20 74 68 65 20 78 41 63 63 65 73 73   for the xAccess
17840 20 56 46 53 20 6d 65 74 68 6f 64 0a 2a 2a 0a 2a   VFS method.**.*
17850 2a 20 54 68 65 73 65 20 69 6e 74 65 67 65 72 20  * These integer 
17860 63 6f 6e 73 74 61 6e 74 73 20 63 61 6e 20 62 65  constants can be
17870 20 75 73 65 64 20 61 73 20 74 68 65 20 74 68 69   used as the thi
17880 72 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 0a  rd parameter to.
17890 2a 2a 20 74 68 65 20 78 41 63 63 65 73 73 20 6d  ** the xAccess m
178a0 65 74 68 6f 64 20 6f 66 20 61 6e 20 5b 73 71 6c  ethod of an [sql
178b0 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63 74  ite3_vfs] object
178c0 2e 20 20 54 68 65 79 20 64 65 74 65 72 6d 69 6e  .  They determin
178d0 65 0a 2a 2a 20 77 68 61 74 20 6b 69 6e 64 20 6f  e.** what kind o
178e0 66 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74 68  f permissions th
178f0 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64  e xAccess method
17900 20 69 73 20 6c 6f 6f 6b 69 6e 67 20 66 6f 72 2e   is looking for.
17910 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45 5f  .** With SQLITE_
17920 41 43 43 45 53 53 5f 45 58 49 53 54 53 2c 20 74  ACCESS_EXISTS, t
17930 68 65 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f  he xAccess metho
17940 64 0a 2a 2a 20 73 69 6d 70 6c 79 20 63 68 65 63  d.** simply chec
17950 6b 73 20 77 68 65 74 68 65 72 20 74 68 65 20 66  ks whether the f
17960 69 6c 65 20 65 78 69 73 74 73 2e 0a 2a 2a 20 57  ile exists..** W
17970 69 74 68 20 53 51 4c 49 54 45 5f 41 43 43 45 53  ith SQLITE_ACCES
17980 53 5f 52 45 41 44 57 52 49 54 45 2c 20 74 68 65  S_READWRITE, the
17990 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64 0a   xAccess method.
179a0 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68 65  ** checks whethe
179b0 72 20 74 68 65 20 6e 61 6d 65 64 20 64 69 72 65  r the named dire
179c0 63 74 6f 72 79 20 69 73 20 62 6f 74 68 20 72 65  ctory is both re
179d0 61 64 61 62 6c 65 20 61 6e 64 20 77 72 69 74 61  adable and writa
179e0 62 6c 65 0a 2a 2a 20 28 69 6e 20 6f 74 68 65 72  ble.** (in other
179f0 20 77 6f 72 64 73 2c 20 69 66 20 66 69 6c 65 73   words, if files
17a00 20 63 61 6e 20 62 65 20 61 64 64 65 64 2c 20 72   can be added, r
17a10 65 6d 6f 76 65 64 2c 20 61 6e 64 20 72 65 6e 61  emoved, and rena
17a20 6d 65 64 20 77 69 74 68 69 6e 0a 2a 2a 20 74 68  med within.** th
17a30 65 20 64 69 72 65 63 74 6f 72 79 29 2e 0a 2a 2a  e directory)..**
17a40 20 54 68 65 20 53 51 4c 49 54 45 5f 41 43 43 45   The SQLITE_ACCE
17a50 53 53 5f 52 45 41 44 57 52 49 54 45 20 63 6f 6e  SS_READWRITE con
17a60 73 74 61 6e 74 20 69 73 20 63 75 72 72 65 6e 74  stant is current
17a70 6c 79 20 75 73 65 64 20 6f 6e 6c 79 20 62 79 20  ly used only by 
17a80 74 68 65 0a 2a 2a 20 5b 74 65 6d 70 5f 73 74 6f  the.** [temp_sto
17a90 72 65 5f 64 69 72 65 63 74 6f 72 79 20 70 72 61  re_directory pra
17aa0 67 6d 61 5d 2c 20 74 68 6f 75 67 68 20 74 68 69  gma], though thi
17ab0 73 20 63 6f 75 6c 64 20 63 68 61 6e 67 65 20 69  s could change i
17ac0 6e 20 61 20 66 75 74 75 72 65 0a 2a 2a 20 72 65  n a future.** re
17ad0 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65 2e  lease of SQLite.
17ae0 0a 2a 2a 20 57 69 74 68 20 53 51 4c 49 54 45 5f  .** With SQLITE_
17af0 41 43 43 45 53 53 5f 52 45 41 44 2c 20 74 68 65  ACCESS_READ, the
17b00 20 78 41 63 63 65 73 73 20 6d 65 74 68 6f 64 0a   xAccess method.
17b10 2a 2a 20 63 68 65 63 6b 73 20 77 68 65 74 68 65  ** checks whethe
17b20 72 20 74 68 65 20 66 69 6c 65 20 69 73 20 72 65  r the file is re
17b30 61 64 61 62 6c 65 2e 20 20 54 68 65 20 53 51 4c  adable.  The SQL
17b40 49 54 45 5f 41 43 43 45 53 53 5f 52 45 41 44 20  ITE_ACCESS_READ 
17b50 63 6f 6e 73 74 61 6e 74 20 69 73 0a 2a 2a 20 63  constant is.** c
17b60 75 72 72 65 6e 74 6c 79 20 75 6e 75 73 65 64 2c  urrently unused,
17b70 20 74 68 6f 75 67 68 20 69 74 20 6d 69 67 68 74   though it might
17b80 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 66 75   be used in a fu
17b90 74 75 72 65 20 72 65 6c 65 61 73 65 20 6f 66 0a  ture release of.
17ba0 2a 2a 20 53 51 4c 69 74 65 2e 0a 2a 2f 0a 23 64  ** SQLite..*/.#d
17bb0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43 43  efine SQLITE_ACC
17bc0 45 53 53 5f 45 58 49 53 54 53 20 20 20 20 30 0a  ESS_EXISTS    0.
17bd0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41  #define SQLITE_A
17be0 43 43 45 53 53 5f 52 45 41 44 57 52 49 54 45 20  CCESS_READWRITE 
17bf0 31 20 20 20 2f 2a 20 55 73 65 64 20 62 79 20 50  1   /* Used by P
17c00 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72 65  RAGMA temp_store
17c10 5f 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a 23 64  _directory */.#d
17c20 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 43 43  efine SQLITE_ACC
17c30 45 53 53 5f 52 45 41 44 20 20 20 20 20 20 32 20  ESS_READ      2 
17c40 20 20 2f 2a 20 55 6e 75 73 65 64 20 2a 2f 0a 0a    /* Unused */..
17c50 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
17c60 46 6c 61 67 73 20 66 6f 72 20 74 68 65 20 78 53  Flags for the xS
17c70 68 6d 4c 6f 63 6b 20 56 46 53 20 6d 65 74 68 6f  hmLock VFS metho
17c80 64 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 69 6e  d.**.** These in
17c90 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 20  teger constants 
17ca0 64 65 66 69 6e 65 20 74 68 65 20 76 61 72 69 6f  define the vario
17cb0 75 73 20 6c 6f 63 6b 69 6e 67 20 6f 70 65 72 61  us locking opera
17cc0 74 69 6f 6e 73 0a 2a 2a 20 61 6c 6c 6f 77 65 64  tions.** allowed
17cd0 20 62 79 20 74 68 65 20 78 53 68 6d 4c 6f 63 6b   by the xShmLock
17ce0 20 6d 65 74 68 6f 64 20 6f 66 20 5b 73 71 6c 69   method of [sqli
17cf0 74 65 33 5f 69 6f 5f 6d 65 74 68 6f 64 73 5d 2e  te3_io_methods].
17d00 20 20 54 68 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69    The.** followi
17d10 6e 67 20 61 72 65 20 74 68 65 20 6f 6e 6c 79 20  ng are the only 
17d20 6c 65 67 61 6c 20 63 6f 6d 62 69 6e 61 74 69 6f  legal combinatio
17d30 6e 73 20 6f 66 20 66 6c 61 67 73 20 74 6f 20 74  ns of flags to t
17d40 68 65 0a 2a 2a 20 78 53 68 6d 4c 6f 63 6b 20 6d  he.** xShmLock m
17d50 65 74 68 6f 64 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c  ethod:.**.** <ul
17d60 3e 0a 2a 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54  >.** <li>  SQLIT
17d70 45 5f 53 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c  E_SHM_LOCK | SQL
17d80 49 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a 2a  ITE_SHM_SHARED.*
17d90 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53  * <li>  SQLITE_S
17da0 48 4d 5f 4c 4f 43 4b 20 7c 20 53 51 4c 49 54 45  HM_LOCK | SQLITE
17db0 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 0a 2a  _SHM_EXCLUSIVE.*
17dc0 2a 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53  * <li>  SQLITE_S
17dd0 48 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49  HM_UNLOCK | SQLI
17de0 54 45 5f 53 48 4d 5f 53 48 41 52 45 44 0a 2a 2a  TE_SHM_SHARED.**
17df0 20 3c 6c 69 3e 20 20 53 51 4c 49 54 45 5f 53 48   <li>  SQLITE_SH
17e00 4d 5f 55 4e 4c 4f 43 4b 20 7c 20 53 51 4c 49 54  M_UNLOCK | SQLIT
17e10 45 5f 53 48 4d 5f 45 58 43 4c 55 53 49 56 45 0a  E_SHM_EXCLUSIVE.
17e20 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20 57  ** </ul>.**.** W
17e30 68 65 6e 20 75 6e 6c 6f 63 6b 69 6e 67 2c 20 74  hen unlocking, t
17e40 68 65 20 73 61 6d 65 20 53 48 41 52 45 44 20 6f  he same SHARED o
17e50 72 20 45 58 43 4c 55 53 49 56 45 20 66 6c 61 67  r EXCLUSIVE flag
17e60 20 6d 75 73 74 20 62 65 20 73 75 70 70 6c 69 65   must be supplie
17e70 64 20 61 73 0a 2a 2a 20 77 61 73 20 67 69 76 65  d as.** was give
17e80 6e 20 6f 6e 20 74 68 65 20 63 6f 72 72 65 73 70  n on the corresp
17e90 6f 6e 64 69 6e 67 20 6c 6f 63 6b 2e 20 20 0a 2a  onding lock.  .*
17ea0 2a 0a 2a 2a 20 54 68 65 20 78 53 68 6d 4c 6f 63  *.** The xShmLoc
17eb0 6b 20 6d 65 74 68 6f 64 20 63 61 6e 20 74 72 61  k method can tra
17ec0 6e 73 69 74 69 6f 6e 20 62 65 74 77 65 65 6e 20  nsition between 
17ed0 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20 53 48 41  unlocked and SHA
17ee0 52 45 44 20 6f 72 0a 2a 2a 20 62 65 74 77 65 65  RED or.** betwee
17ef0 6e 20 75 6e 6c 6f 63 6b 65 64 20 61 6e 64 20 45  n unlocked and E
17f00 58 43 4c 55 53 49 56 45 2e 20 20 49 74 20 63 61  XCLUSIVE.  It ca
17f10 6e 6e 6f 74 20 74 72 61 6e 73 69 74 69 6f 6e 20  nnot transition 
17f20 62 65 74 77 65 65 6e 20 53 48 41 52 45 44 0a 2a  between SHARED.*
17f30 2a 20 61 6e 64 20 45 58 43 4c 55 53 49 56 45 2e  * and EXCLUSIVE.
17f40 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
17f50 54 45 5f 53 48 4d 5f 55 4e 4c 4f 43 4b 20 20 20  TE_SHM_UNLOCK   
17f60 20 20 20 20 31 0a 23 64 65 66 69 6e 65 20 53 51      1.#define SQ
17f70 4c 49 54 45 5f 53 48 4d 5f 4c 4f 43 4b 20 20 20  LITE_SHM_LOCK   
17f80 20 20 20 20 20 20 32 0a 23 64 65 66 69 6e 65 20        2.#define 
17f90 53 51 4c 49 54 45 5f 53 48 4d 5f 53 48 41 52 45  SQLITE_SHM_SHARE
17fa0 44 20 20 20 20 20 20 20 34 0a 23 64 65 66 69 6e  D       4.#defin
17fb0 65 20 53 51 4c 49 54 45 5f 53 48 4d 5f 45 58 43  e SQLITE_SHM_EXC
17fc0 4c 55 53 49 56 45 20 20 20 20 38 0a 0a 2f 2a 0a  LUSIVE    8../*.
17fd0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4d 61 78  ** CAPI3REF: Max
17fe0 69 6d 75 6d 20 78 53 68 6d 4c 6f 63 6b 20 69 6e  imum xShmLock in
17ff0 64 65 78 0a 2a 2a 0a 2a 2a 20 54 68 65 20 78 53  dex.**.** The xS
18000 68 6d 4c 6f 63 6b 20 6d 65 74 68 6f 64 20 6f 6e  hmLock method on
18010 20 5b 73 71 6c 69 74 65 33 5f 69 6f 5f 6d 65 74   [sqlite3_io_met
18020 68 6f 64 73 5d 20 6d 61 79 20 75 73 65 20 76 61  hods] may use va
18030 6c 75 65 73 0a 2a 2a 20 62 65 74 77 65 65 6e 20  lues.** between 
18040 30 20 61 6e 64 20 74 68 69 73 20 75 70 70 65 72  0 and this upper
18050 20 62 6f 75 6e 64 20 61 73 20 69 74 73 20 22 6f   bound as its "o
18060 66 66 73 65 74 22 20 61 72 67 75 6d 65 6e 74 2e  ffset" argument.
18070 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20 63  .** The SQLite c
18080 6f 72 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 61  ore will never a
18090 74 74 65 6d 70 74 20 74 6f 20 61 63 71 75 69 72  ttempt to acquir
180a0 65 20 6f 72 20 72 65 6c 65 61 73 65 20 61 0a 2a  e or release a.*
180b0 2a 20 6c 6f 63 6b 20 6f 75 74 73 69 64 65 20 6f  * lock outside o
180c0 66 20 74 68 69 73 20 72 61 6e 67 65 0a 2a 2f 0a  f this range.*/.
180d0 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 53  #define SQLITE_S
180e0 48 4d 5f 4e 4c 4f 43 4b 20 20 20 20 20 20 20 20  HM_NLOCK        
180f0 38 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  8.../*.** CAPI3R
18100 45 46 3a 20 49 6e 69 74 69 61 6c 69 7a 65 20 54  EF: Initialize T
18110 68 65 20 53 51 4c 69 74 65 20 4c 69 62 72 61 72  he SQLite Librar
18120 79 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c  y.**.** ^The sql
18130 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
18140 29 20 72 6f 75 74 69 6e 65 20 69 6e 69 74 69 61  ) routine initia
18150 6c 69 7a 65 73 20 74 68 65 0a 2a 2a 20 53 51 4c  lizes the.** SQL
18160 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 5e 54  ite library.  ^T
18170 68 65 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64  he sqlite3_shutd
18180 6f 77 6e 28 29 20 72 6f 75 74 69 6e 65 0a 2a 2a  own() routine.**
18190 20 64 65 61 6c 6c 6f 63 61 74 65 73 20 61 6e 79   deallocates any
181a0 20 72 65 73 6f 75 72 63 65 73 20 74 68 61 74 20   resources that 
181b0 77 65 72 65 20 61 6c 6c 6f 63 61 74 65 64 20 62  were allocated b
181c0 79 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  y sqlite3_initia
181d0 6c 69 7a 65 28 29 2e 0a 2a 2a 20 54 68 65 73 65  lize()..** These
181e0 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 64 65   routines are de
181f0 73 69 67 6e 65 64 20 74 6f 20 61 69 64 20 69 6e  signed to aid in
18200 20 70 72 6f 63 65 73 73 20 69 6e 69 74 69 61 6c   process initial
18210 69 7a 61 74 69 6f 6e 20 61 6e 64 0a 2a 2a 20 73  ization and.** s
18220 68 75 74 64 6f 77 6e 20 6f 6e 20 65 6d 62 65 64  hutdown on embed
18230 64 65 64 20 73 79 73 74 65 6d 73 2e 20 20 57 6f  ded systems.  Wo
18240 72 6b 73 74 61 74 69 6f 6e 20 61 70 70 6c 69 63  rkstation applic
18250 61 74 69 6f 6e 73 20 75 73 69 6e 67 0a 2a 2a 20  ations using.** 
18260 53 51 4c 69 74 65 20 6e 6f 72 6d 61 6c 6c 79 20  SQLite normally 
18270 64 6f 20 6e 6f 74 20 6e 65 65 64 20 74 6f 20 69  do not need to i
18280 6e 76 6f 6b 65 20 65 69 74 68 65 72 20 6f 66 20  nvoke either of 
18290 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73 2e 0a  these routines..
182a0 2a 2a 0a 2a 2a 20 41 20 63 61 6c 6c 20 74 6f 20  **.** A call to 
182b0 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69  sqlite3_initiali
182c0 7a 65 28 29 20 69 73 20 61 6e 20 22 65 66 66 65  ze() is an "effe
182d0 63 74 69 76 65 22 20 63 61 6c 6c 20 69 66 20 69  ctive" call if i
182e0 74 20 69 73 0a 2a 2a 20 74 68 65 20 66 69 72 73  t is.** the firs
182f0 74 20 74 69 6d 65 20 73 71 6c 69 74 65 33 5f 69  t time sqlite3_i
18300 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73 20 69  nitialize() is i
18310 6e 76 6f 6b 65 64 20 64 75 72 69 6e 67 20 74 68  nvoked during th
18320 65 20 6c 69 66 65 74 69 6d 65 20 6f 66 0a 2a 2a  e lifetime of.**
18330 20 74 68 65 20 70 72 6f 63 65 73 73 2c 20 6f 72   the process, or
18340 20 69 66 20 69 74 20 69 73 20 74 68 65 20 66 69   if it is the fi
18350 72 73 74 20 74 69 6d 65 20 73 71 6c 69 74 65 33  rst time sqlite3
18360 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20 69 73  _initialize() is
18370 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 66 6f 6c 6c   invoked.** foll
18380 6f 77 69 6e 67 20 61 20 63 61 6c 6c 20 74 6f 20  owing a call to 
18390 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
183a0 28 29 2e 20 20 5e 28 4f 6e 6c 79 20 61 6e 20 65  ().  ^(Only an e
183b0 66 66 65 63 74 69 76 65 20 63 61 6c 6c 0a 2a 2a  ffective call.**
183c0 20 6f 66 20 73 71 6c 69 74 65 33 5f 69 6e 69 74   of sqlite3_init
183d0 69 61 6c 69 7a 65 28 29 20 64 6f 65 73 20 61 6e  ialize() does an
183e0 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e  y initialization
183f0 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 63 61 6c  .  All other cal
18400 6c 73 0a 2a 2a 20 61 72 65 20 68 61 72 6d 6c 65  ls.** are harmle
18410 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e 0a 2a 2a 0a  ss no-ops.)^.**.
18420 2a 2a 20 41 20 63 61 6c 6c 20 74 6f 20 73 71 6c  ** A call to sql
18430 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20  ite3_shutdown() 
18440 69 73 20 61 6e 20 22 65 66 66 65 63 74 69 76 65  is an "effective
18450 22 20 63 61 6c 6c 20 69 66 20 69 74 20 69 73 20  " call if it is 
18460 74 68 65 20 66 69 72 73 74 0a 2a 2a 20 63 61 6c  the first.** cal
18470 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 68 75  l to sqlite3_shu
18480 74 64 6f 77 6e 28 29 20 73 69 6e 63 65 20 74 68  tdown() since th
18490 65 20 6c 61 73 74 20 73 71 6c 69 74 65 33 5f 69  e last sqlite3_i
184a0 6e 69 74 69 61 6c 69 7a 65 28 29 2e 20 20 5e 28  nitialize().  ^(
184b0 4f 6e 6c 79 0a 2a 2a 20 61 6e 20 65 66 66 65 63  Only.** an effec
184c0 74 69 76 65 20 63 61 6c 6c 20 74 6f 20 73 71 6c  tive call to sql
184d0 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 20  ite3_shutdown() 
184e0 64 6f 65 73 20 61 6e 79 20 64 65 69 6e 69 74 69  does any deiniti
184f0 61 6c 69 7a 61 74 69 6f 6e 2e 0a 2a 2a 20 41 6c  alization..** Al
18500 6c 20 6f 74 68 65 72 20 76 61 6c 69 64 20 63 61  l other valid ca
18510 6c 6c 73 20 74 6f 20 73 71 6c 69 74 65 33 5f 73  lls to sqlite3_s
18520 68 75 74 64 6f 77 6e 28 29 20 61 72 65 20 68 61  hutdown() are ha
18530 72 6d 6c 65 73 73 20 6e 6f 2d 6f 70 73 2e 29 5e  rmless no-ops.)^
18540 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
18550 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18560 69 6e 74 65 72 66 61 63 65 20 69 73 20 74 68 72  interface is thr
18570 65 61 64 73 61 66 65 2c 20 62 75 74 20 73 71 6c  eadsafe, but sql
18580 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 0a  ite3_shutdown().
18590 2a 2a 20 69 73 20 6e 6f 74 2e 20 20 54 68 65 20  ** is not.  The 
185a0 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77 6e  sqlite3_shutdown
185b0 28 29 20 69 6e 74 65 72 66 61 63 65 20 6d 75 73  () interface mus
185c0 74 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64  t only be called
185d0 20 66 72 6f 6d 20 61 0a 2a 2a 20 73 69 6e 67 6c   from a.** singl
185e0 65 20 74 68 72 65 61 64 2e 20 20 41 6c 6c 20 6f  e thread.  All o
185f0 70 65 6e 20 5b 64 61 74 61 62 61 73 65 20 63 6f  pen [database co
18600 6e 6e 65 63 74 69 6f 6e 73 5d 20 6d 75 73 74 20  nnections] must 
18610 62 65 20 63 6c 6f 73 65 64 20 61 6e 64 20 61 6c  be closed and al
18620 6c 0a 2a 2a 20 6f 74 68 65 72 20 53 51 4c 69 74  l.** other SQLit
18630 65 20 72 65 73 6f 75 72 63 65 73 20 6d 75 73 74  e resources must
18640 20 62 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20   be deallocated 
18650 70 72 69 6f 72 20 74 6f 20 69 6e 76 6f 6b 69 6e  prior to invokin
18660 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 68 75  g.** sqlite3_shu
18670 74 64 6f 77 6e 28 29 2e 0a 2a 2a 0a 2a 2a 20 41  tdown()..**.** A
18680 6d 6f 6e 67 20 6f 74 68 65 72 20 74 68 69 6e 67  mong other thing
18690 73 2c 20 5e 73 71 6c 69 74 65 33 5f 69 6e 69 74  s, ^sqlite3_init
186a0 69 61 6c 69 7a 65 28 29 20 77 69 6c 6c 20 69 6e  ialize() will in
186b0 76 6f 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  voke.** sqlite3_
186c0 6f 73 5f 69 6e 69 74 28 29 2e 20 20 53 69 6d 69  os_init().  Simi
186d0 6c 61 72 6c 79 2c 20 5e 73 71 6c 69 74 65 33 5f  larly, ^sqlite3_
186e0 73 68 75 74 64 6f 77 6e 28 29 0a 2a 2a 20 77 69  shutdown().** wi
186f0 6c 6c 20 69 6e 76 6f 6b 65 20 73 71 6c 69 74 65  ll invoke sqlite
18700 33 5f 6f 73 5f 65 6e 64 28 29 2e 0a 2a 2a 0a 2a  3_os_end()..**.*
18710 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69  * ^The sqlite3_i
18720 6e 69 74 69 61 6c 69 7a 65 28 29 20 72 6f 75 74  nitialize() rout
18730 69 6e 65 20 72 65 74 75 72 6e 73 20 5b 53 51 4c  ine returns [SQL
18740 49 54 45 5f 4f 4b 5d 20 6f 6e 20 73 75 63 63 65  ITE_OK] on succe
18750 73 73 2e 0a 2a 2a 20 5e 49 66 20 66 6f 72 20 73  ss..** ^If for s
18760 6f 6d 65 20 72 65 61 73 6f 6e 2c 20 73 71 6c 69  ome reason, sqli
18770 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29  te3_initialize()
18780 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 69 6e   is unable to in
18790 69 74 69 61 6c 69 7a 65 0a 2a 2a 20 74 68 65 20  itialize.** the 
187a0 6c 69 62 72 61 72 79 20 28 70 65 72 68 61 70 73  library (perhaps
187b0 20 69 74 20 69 73 20 75 6e 61 62 6c 65 20 74 6f   it is unable to
187c0 20 61 6c 6c 6f 63 61 74 65 20 61 20 6e 65 65 64   allocate a need
187d0 65 64 20 72 65 73 6f 75 72 63 65 20 73 75 63 68  ed resource such
187e0 0a 2a 2a 20 61 73 20 61 20 6d 75 74 65 78 29 20  .** as a mutex) 
187f0 69 74 20 72 65 74 75 72 6e 73 20 61 6e 20 5b 65  it returns an [e
18800 72 72 6f 72 20 63 6f 64 65 5d 20 6f 74 68 65 72  rror code] other
18810 20 74 68 61 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b   than [SQLITE_OK
18820 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  ]..**.** ^The sq
18830 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65  lite3_initialize
18840 28 29 20 72 6f 75 74 69 6e 65 20 69 73 20 63 61  () routine is ca
18850 6c 6c 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 20  lled internally 
18860 62 79 20 6d 61 6e 79 20 6f 74 68 65 72 0a 2a 2a  by many other.**
18870 20 53 51 4c 69 74 65 20 69 6e 74 65 72 66 61 63   SQLite interfac
18880 65 73 20 73 6f 20 74 68 61 74 20 61 6e 20 61 70  es so that an ap
18890 70 6c 69 63 61 74 69 6f 6e 20 75 73 75 61 6c 6c  plication usuall
188a0 79 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65 64 20  y does not need 
188b0 74 6f 0a 2a 2a 20 69 6e 76 6f 6b 65 20 73 71 6c  to.** invoke sql
188c0 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28  ite3_initialize(
188d0 29 20 64 69 72 65 63 74 6c 79 2e 20 20 46 6f 72  ) directly.  For
188e0 20 65 78 61 6d 70 6c 65 2c 20 5b 73 71 6c 69 74   example, [sqlit
188f0 65 33 5f 6f 70 65 6e 28 29 5d 0a 2a 2a 20 63 61  e3_open()].** ca
18900 6c 6c 73 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  lls sqlite3_init
18910 69 61 6c 69 7a 65 28 29 20 73 6f 20 74 68 65 20  ialize() so the 
18920 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 77  SQLite library w
18930 69 6c 6c 20 62 65 20 61 75 74 6f 6d 61 74 69 63  ill be automatic
18940 61 6c 6c 79 0a 2a 2a 20 69 6e 69 74 69 61 6c 69  ally.** initiali
18950 7a 65 64 20 77 68 65 6e 20 5b 73 71 6c 69 74 65  zed when [sqlite
18960 33 5f 6f 70 65 6e 28 29 5d 20 69 73 20 63 61 6c  3_open()] is cal
18970 6c 65 64 20 69 66 20 69 74 20 68 61 73 20 6e 6f  led if it has no
18980 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 64  t be initialized
18990 0a 2a 2a 20 61 6c 72 65 61 64 79 2e 20 20 5e 48  .** already.  ^H
189a0 6f 77 65 76 65 72 2c 20 69 66 20 53 51 4c 69 74  owever, if SQLit
189b0 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
189c0 74 68 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 4f  th the [SQLITE_O
189d0 4d 49 54 5f 41 55 54 4f 49 4e 49 54 5d 0a 2a 2a  MIT_AUTOINIT].**
189e0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
189f0 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65 20 61  tion, then the a
18a00 75 74 6f 6d 61 74 69 63 20 63 61 6c 6c 73 20 74  utomatic calls t
18a10 6f 20 73 71 6c 69 74 65 33 5f 69 6e 69 74 69 61  o sqlite3_initia
18a20 6c 69 7a 65 28 29 0a 2a 2a 20 61 72 65 20 6f 6d  lize().** are om
18a30 69 74 74 65 64 20 61 6e 64 20 74 68 65 20 61 70  itted and the ap
18a40 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 63  plication must c
18a50 61 6c 6c 20 73 71 6c 69 74 65 33 5f 69 6e 69 74  all sqlite3_init
18a60 69 61 6c 69 7a 65 28 29 20 64 69 72 65 63 74 6c  ialize() directl
18a70 79 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 75 73  y.** prior to us
18a80 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 53 51  ing any other SQ
18a90 4c 69 74 65 20 69 6e 74 65 72 66 61 63 65 2e 20  Lite interface. 
18aa0 20 46 6f 72 20 6d 61 78 69 6d 75 6d 20 70 6f 72   For maximum por
18ab0 74 61 62 69 6c 69 74 79 2c 0a 2a 2a 20 69 74 20  tability,.** it 
18ac0 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 74  is recommended t
18ad0 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e 73  hat applications
18ae0 20 61 6c 77 61 79 73 20 69 6e 76 6f 6b 65 20 73   always invoke s
18af0 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
18b00 65 28 29 0a 2a 2a 20 64 69 72 65 63 74 6c 79 20  e().** directly 
18b10 70 72 69 6f 72 20 74 6f 20 75 73 69 6e 67 20 61  prior to using a
18b20 6e 79 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20  ny other SQLite 
18b30 69 6e 74 65 72 66 61 63 65 2e 20 20 46 75 74 75  interface.  Futu
18b40 72 65 20 72 65 6c 65 61 73 65 73 0a 2a 2a 20 6f  re releases.** o
18b50 66 20 53 51 4c 69 74 65 20 6d 61 79 20 72 65 71  f SQLite may req
18b60 75 69 72 65 20 74 68 69 73 2e 20 20 49 6e 20 6f  uire this.  In o
18b70 74 68 65 72 20 77 6f 72 64 73 2c 20 74 68 65 20  ther words, the 
18b80 62 65 68 61 76 69 6f 72 20 65 78 68 69 62 69 74  behavior exhibit
18b90 65 64 0a 2a 2a 20 77 68 65 6e 20 53 51 4c 69 74  ed.** when SQLit
18ba0 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
18bb0 74 68 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  th [SQLITE_OMIT_
18bc0 41 55 54 4f 49 4e 49 54 5d 20 6d 69 67 68 74 20  AUTOINIT] might 
18bd0 62 65 63 6f 6d 65 20 74 68 65 0a 2a 2a 20 64 65  become the.** de
18be0 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20 69  fault behavior i
18bf0 6e 20 73 6f 6d 65 20 66 75 74 75 72 65 20 72 65  n some future re
18c00 6c 65 61 73 65 20 6f 66 20 53 51 4c 69 74 65 2e  lease of SQLite.
18c10 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74  .**.** The sqlit
18c20 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 72 6f 75  e3_os_init() rou
18c30 74 69 6e 65 20 64 6f 65 73 20 6f 70 65 72 61 74  tine does operat
18c40 69 6e 67 2d 73 79 73 74 65 6d 20 73 70 65 63 69  ing-system speci
18c50 66 69 63 0a 2a 2a 20 69 6e 69 74 69 61 6c 69 7a  fic.** initializ
18c60 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c  ation of the SQL
18c70 69 74 65 20 6c 69 62 72 61 72 79 2e 20 20 54 68  ite library.  Th
18c80 65 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64  e sqlite3_os_end
18c90 28 29 0a 2a 2a 20 72 6f 75 74 69 6e 65 20 75 6e  ().** routine un
18ca0 64 6f 65 73 20 74 68 65 20 65 66 66 65 63 74 20  does the effect 
18cb0 6f 66 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e  of sqlite3_os_in
18cc0 69 74 28 29 2e 20 20 54 79 70 69 63 61 6c 20 74  it().  Typical t
18cd0 61 73 6b 73 0a 2a 2a 20 70 65 72 66 6f 72 6d 65  asks.** performe
18ce0 64 20 62 79 20 74 68 65 73 65 20 72 6f 75 74 69  d by these routi
18cf0 6e 65 73 20 69 6e 63 6c 75 64 65 20 61 6c 6c 6f  nes include allo
18d00 63 61 74 69 6f 6e 20 6f 72 20 64 65 61 6c 6c 6f  cation or deallo
18d10 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66 20 73 74 61  cation.** of sta
18d20 74 69 63 20 72 65 73 6f 75 72 63 65 73 2c 20 69  tic resources, i
18d30 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66  nitialization of
18d40 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65   global variable
18d50 73 2c 0a 2a 2a 20 73 65 74 74 69 6e 67 20 75 70  s,.** setting up
18d60 20 61 20 64 65 66 61 75 6c 74 20 5b 73 71 6c 69   a default [sqli
18d70 74 65 33 5f 76 66 73 5d 20 6d 6f 64 75 6c 65 2c  te3_vfs] module,
18d80 20 6f 72 20 73 65 74 74 69 6e 67 20 75 70 0a 2a   or setting up.*
18d90 2a 20 61 20 64 65 66 61 75 6c 74 20 63 6f 6e 66  * a default conf
18da0 69 67 75 72 61 74 69 6f 6e 20 75 73 69 6e 67 20  iguration using 
18db0 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
18dc0 29 5d 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 70  )]..**.** The ap
18dd0 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64  plication should
18de0 20 6e 65 76 65 72 20 69 6e 76 6f 6b 65 20 65 69   never invoke ei
18df0 74 68 65 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f  ther sqlite3_os_
18e00 69 6e 69 74 28 29 0a 2a 2a 20 6f 72 20 73 71 6c  init().** or sql
18e10 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 20 64 69  ite3_os_end() di
18e20 72 65 63 74 6c 79 2e 20 20 54 68 65 20 61 70 70  rectly.  The app
18e30 6c 69 63 61 74 69 6f 6e 20 73 68 6f 75 6c 64 20  lication should 
18e40 6f 6e 6c 79 20 69 6e 76 6f 6b 65 0a 2a 2a 20 73  only invoke.** s
18e50 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
18e60 65 28 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f  e() and sqlite3_
18e70 73 68 75 74 64 6f 77 6e 28 29 2e 20 20 54 68 65  shutdown().  The
18e80 20 73 71 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74   sqlite3_os_init
18e90 28 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20  ().** interface 
18ea0 69 73 20 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61  is called automa
18eb0 74 69 63 61 6c 6c 79 20 62 79 20 73 71 6c 69 74  tically by sqlit
18ec0 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
18ed0 61 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6f  and.** sqlite3_o
18ee0 73 5f 65 6e 64 28 29 20 69 73 20 63 61 6c 6c 65  s_end() is calle
18ef0 64 20 62 79 20 73 71 6c 69 74 65 33 5f 73 68 75  d by sqlite3_shu
18f00 74 64 6f 77 6e 28 29 2e 20 20 41 70 70 72 6f 70  tdown().  Approp
18f10 72 69 61 74 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65  riate.** impleme
18f20 6e 74 61 74 69 6f 6e 73 20 66 6f 72 20 73 71 6c  ntations for sql
18f30 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20 61  ite3_os_init() a
18f40 6e 64 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  nd sqlite3_os_en
18f50 64 28 29 0a 2a 2a 20 61 72 65 20 62 75 69 6c 74  d().** are built
18f60 20 69 6e 74 6f 20 53 51 4c 69 74 65 20 77 68 65   into SQLite whe
18f70 6e 20 69 74 20 69 73 20 63 6f 6d 70 69 6c 65 64  n it is compiled
18f80 20 66 6f 72 20 55 6e 69 78 2c 20 57 69 6e 64 6f   for Unix, Windo
18f90 77 73 2c 20 6f 72 20 4f 53 2f 32 2e 0a 2a 2a 20  ws, or OS/2..** 
18fa0 57 68 65 6e 20 5b 63 75 73 74 6f 6d 20 62 75 69  When [custom bui
18fb0 6c 64 73 20 7c 20 62 75 69 6c 74 20 66 6f 72 20  lds | built for 
18fc0 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d 73 5d  other platforms]
18fd0 0a 2a 2a 20 28 75 73 69 6e 67 20 74 68 65 20 5b  .** (using the [
18fe0 53 51 4c 49 54 45 5f 4f 53 5f 4f 54 48 45 52 3d  SQLITE_OS_OTHER=
18ff0 31 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a  1] compile-time.
19000 2a 2a 20 6f 70 74 69 6f 6e 29 20 74 68 65 20 61  ** option) the a
19010 70 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20  pplication must 
19020 73 75 70 70 6c 79 20 61 20 73 75 69 74 61 62 6c  supply a suitabl
19030 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
19040 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65 33 5f   for.** sqlite3_
19050 6f 73 5f 69 6e 69 74 28 29 20 61 6e 64 20 73 71  os_init() and sq
19060 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 29 2e 20  lite3_os_end(). 
19070 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d   An application-
19080 73 75 70 70 6c 69 65 64 0a 2a 2a 20 69 6d 70 6c  supplied.** impl
19090 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 73 71  ementation of sq
190a0 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 20  lite3_os_init() 
190b0 6f 72 20 73 71 6c 69 74 65 33 5f 6f 73 5f 65 6e  or sqlite3_os_en
190c0 64 28 29 0a 2a 2a 20 6d 75 73 74 20 72 65 74 75  d().** must retu
190d0 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f  rn [SQLITE_OK] o
190e0 6e 20 73 75 63 63 65 73 73 20 61 6e 64 20 73 6f  n success and so
190f0 6d 65 20 6f 74 68 65 72 20 5b 65 72 72 6f 72 20  me other [error 
19100 63 6f 64 65 5d 20 75 70 6f 6e 0a 2a 2a 20 66 61  code] upon.** fa
19110 69 6c 75 72 65 2e 0a 2a 2f 0a 53 51 4c 49 54 45  ilure..*/.SQLITE
19120 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
19130 5f 69 6e 69 74 69 61 6c 69 7a 65 28 76 6f 69 64  _initialize(void
19140 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e  );.SQLITE_API in
19150 74 20 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f  t sqlite3_shutdo
19160 77 6e 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45  wn(void);.SQLITE
19170 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
19180 5f 6f 73 5f 69 6e 69 74 28 76 6f 69 64 29 3b 0a  _os_init(void);.
19190 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73  SQLITE_API int s
191a0 71 6c 69 74 65 33 5f 6f 73 5f 65 6e 64 28 76 6f  qlite3_os_end(vo
191b0 69 64 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  id);../*.** CAPI
191c0 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 69 6e  3REF: Configurin
191d0 67 20 54 68 65 20 53 51 4c 69 74 65 20 4c 69 62  g The SQLite Lib
191e0 72 61 72 79 0a 2a 2a 0a 2a 2a 20 54 68 65 20 73  rary.**.** The s
191f0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20  qlite3_config() 
19200 69 6e 74 65 72 66 61 63 65 20 69 73 20 75 73 65  interface is use
19210 64 20 74 6f 20 6d 61 6b 65 20 67 6c 6f 62 61 6c  d to make global
19220 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 2a   configuration.*
19230 2a 20 63 68 61 6e 67 65 73 20 74 6f 20 53 51 4c  * changes to SQL
19240 69 74 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ite in order to 
19250 74 75 6e 65 20 53 51 4c 69 74 65 20 74 6f 20 74  tune SQLite to t
19260 68 65 20 73 70 65 63 69 66 69 63 20 6e 65 65 64  he specific need
19270 73 20 6f 66 0a 2a 2a 20 74 68 65 20 61 70 70 6c  s of.** the appl
19280 69 63 61 74 69 6f 6e 2e 20 20 54 68 65 20 64 65  ication.  The de
19290 66 61 75 6c 74 20 63 6f 6e 66 69 67 75 72 61 74  fault configurat
192a0 69 6f 6e 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64  ion is recommend
192b0 65 64 20 66 6f 72 20 6d 6f 73 74 0a 2a 2a 20 61  ed for most.** a
192c0 70 70 6c 69 63 61 74 69 6f 6e 73 20 61 6e 64 20  pplications and 
192d0 73 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  so this routine 
192e0 69 73 20 75 73 75 61 6c 6c 79 20 6e 6f 74 20 6e  is usually not n
192f0 65 63 65 73 73 61 72 79 2e 20 20 49 74 20 69 73  ecessary.  It is
19300 0a 2a 2a 20 70 72 6f 76 69 64 65 64 20 74 6f 20  .** provided to 
19310 73 75 70 70 6f 72 74 20 72 61 72 65 20 61 70 70  support rare app
19320 6c 69 63 61 74 69 6f 6e 73 20 77 69 74 68 20 75  lications with u
19330 6e 75 73 75 61 6c 20 6e 65 65 64 73 2e 0a 2a 2a  nusual needs..**
19340 0a 2a 2a 20 3c 62 3e 54 68 65 20 73 71 6c 69 74  .** <b>The sqlit
19350 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65  e3_config() inte
19360 72 66 61 63 65 20 69 73 20 6e 6f 74 20 74 68 72  rface is not thr
19370 65 61 64 73 61 66 65 2e 20 54 68 65 20 61 70 70  eadsafe. The app
19380 6c 69 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74  lication.** must
19390 20 65 6e 73 75 72 65 20 74 68 61 74 20 6e 6f 20   ensure that no 
193a0 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69 6e 74  other SQLite int
193b0 65 72 66 61 63 65 73 20 61 72 65 20 69 6e 76 6f  erfaces are invo
193c0 6b 65 64 20 62 79 20 6f 74 68 65 72 0a 2a 2a 20  ked by other.** 
193d0 74 68 72 65 61 64 73 20 77 68 69 6c 65 20 73 71  threads while sq
193e0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69  lite3_config() i
193f0 73 20 72 75 6e 6e 69 6e 67 2e 3c 2f 62 3e 0a 2a  s running.</b>.*
19400 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
19410 5f 63 6f 6e 66 69 67 28 29 20 69 6e 74 65 72 66  _config() interf
19420 61 63 65 0a 2a 2a 20 6d 61 79 20 6f 6e 6c 79 20  ace.** may only 
19430 62 65 20 69 6e 76 6f 6b 65 64 20 70 72 69 6f 72  be invoked prior
19440 20 74 6f 20 6c 69 62 72 61 72 79 20 69 6e 69 74   to library init
19450 69 61 6c 69 7a 61 74 69 6f 6e 20 75 73 69 6e 67  ialization using
19460 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  .** [sqlite3_ini
19470 74 69 61 6c 69 7a 65 28 29 5d 20 6f 72 20 61 66  tialize()] or af
19480 74 65 72 20 73 68 75 74 64 6f 77 6e 20 62 79 20  ter shutdown by 
19490 5b 73 71 6c 69 74 65 33 5f 73 68 75 74 64 6f 77  [sqlite3_shutdow
194a0 6e 28 29 5d 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c  n()]..** ^If sql
194b0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69 73  ite3_config() is
194c0 20 63 61 6c 6c 65 64 20 61 66 74 65 72 20 5b 73   called after [s
194d0 71 6c 69 74 65 33 5f 69 6e 69 74 69 61 6c 69 7a  qlite3_initializ
194e0 65 28 29 5d 20 61 6e 64 20 62 65 66 6f 72 65 0a  e()] and before.
194f0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73 68 75 74  ** [sqlite3_shut
19500 64 6f 77 6e 28 29 5d 20 74 68 65 6e 20 69 74 20  down()] then it 
19510 77 69 6c 6c 20 72 65 74 75 72 6e 20 53 51 4c 49  will return SQLI
19520 54 45 5f 4d 49 53 55 53 45 2e 0a 2a 2a 20 4e 6f  TE_MISUSE..** No
19530 74 65 2c 20 68 6f 77 65 76 65 72 2c 20 74 68 61  te, however, tha
19540 74 20 5e 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  t ^sqlite3_confi
19550 67 28 29 20 63 61 6e 20 62 65 20 63 61 6c 6c 65  g() can be calle
19560 64 20 61 73 20 70 61 72 74 20 6f 66 20 74 68 65  d as part of the
19570 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  .** implementati
19580 6f 6e 20 6f 66 20 61 6e 20 61 70 70 6c 69 63 61  on of an applica
19590 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 5b 73 71  tion-defined [sq
195a0 6c 69 74 65 33 5f 6f 73 5f 69 6e 69 74 28 29 5d  lite3_os_init()]
195b0 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73  ..**.** The firs
195c0 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 73 71  t argument to sq
195d0 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 20 69  lite3_config() i
195e0 73 20 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20  s an integer.** 
195f0 5b 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f  [configuration o
19600 70 74 69 6f 6e 5d 20 74 68 61 74 20 64 65 74 65  ption] that dete
19610 72 6d 69 6e 65 73 0a 2a 2a 20 77 68 61 74 20 70  rmines.** what p
19620 72 6f 70 65 72 74 79 20 6f 66 20 53 51 4c 69 74  roperty of SQLit
19630 65 20 69 73 20 74 6f 20 62 65 20 63 6f 6e 66 69  e is to be confi
19640 67 75 72 65 64 2e 20 20 53 75 62 73 65 71 75 65  gured.  Subseque
19650 6e 74 20 61 72 67 75 6d 65 6e 74 73 0a 2a 2a 20  nt arguments.** 
19660 76 61 72 79 20 64 65 70 65 6e 64 69 6e 67 20 6f  vary depending o
19670 6e 20 74 68 65 20 5b 63 6f 6e 66 69 67 75 72 61  n the [configura
19680 74 69 6f 6e 20 6f 70 74 69 6f 6e 5d 0a 2a 2a 20  tion option].** 
19690 69 6e 20 74 68 65 20 66 69 72 73 74 20 61 72 67  in the first arg
196a0 75 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5e 57 68  ument..**.** ^Wh
196b0 65 6e 20 61 20 63 6f 6e 66 69 67 75 72 61 74 69  en a configurati
196c0 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 73 65 74  on option is set
196d0 2c 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67  , sqlite3_config
196e0 28 29 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49  () returns [SQLI
196f0 54 45 5f 4f 4b 5d 2e 0a 2a 2a 20 5e 49 66 20 74  TE_OK]..** ^If t
19700 68 65 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e 6b  he option is unk
19710 6e 6f 77 6e 20 6f 72 20 53 51 4c 69 74 65 20 69  nown or SQLite i
19720 73 20 75 6e 61 62 6c 65 20 74 6f 20 73 65 74 20  s unable to set 
19730 74 68 65 20 6f 70 74 69 6f 6e 0a 2a 2a 20 74 68  the option.** th
19740 65 6e 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  en this routine 
19750 72 65 74 75 72 6e 73 20 61 20 6e 6f 6e 2d 7a 65  returns a non-ze
19760 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 2e  ro [error code].
19770 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
19780 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69  nt sqlite3_confi
19790 67 28 69 6e 74 2c 20 2e 2e 2e 29 3b 0a 0a 2f 2a  g(int, ...);../*
197a0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 43 6f  .** CAPI3REF: Co
197b0 6e 66 69 67 75 72 65 20 64 61 74 61 62 61 73 65  nfigure database
197c0 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 2a 2a 20   connections.** 
197d0 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
197e0 2a 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65  **.** The sqlite
197f0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 20 69 6e  3_db_config() in
19800 74 65 72 66 61 63 65 20 69 73 20 75 73 65 64 20  terface is used 
19810 74 6f 20 6d 61 6b 65 20 63 6f 6e 66 69 67 75 72  to make configur
19820 61 74 69 6f 6e 0a 2a 2a 20 63 68 61 6e 67 65 73  ation.** changes
19830 20 74 6f 20 61 20 5b 64 61 74 61 62 61 73 65 20   to a [database 
19840 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 20 20 54 68  connection].  Th
19850 65 20 69 6e 74 65 72 66 61 63 65 20 69 73 20 73  e interface is s
19860 69 6d 69 6c 61 72 20 74 6f 0a 2a 2a 20 5b 73 71  imilar to.** [sq
19870 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
19880 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
19890 63 68 61 6e 67 65 73 20 61 70 70 6c 79 20 74 6f  changes apply to
198a0 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 5b 64 61   a single.** [da
198b0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
198c0 6e 5d 20 28 73 70 65 63 69 66 69 65 64 20 69 6e  n] (specified in
198d0 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
198e0 65 6e 74 29 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ent)..**.** The 
198f0 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 20  second argument 
19900 74 6f 20 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f  to sqlite3_db_co
19910 6e 66 69 67 28 44 2c 56 2c 2e 2e 2e 29 20 20 69  nfig(D,V,...)  i
19920 73 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45  s the.** [SQLITE
19930 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
19940 49 44 45 20 7c 20 63 6f 6e 66 69 67 75 72 61 74  IDE | configurat
19950 69 6f 6e 20 76 65 72 62 5d 20 2d 20 61 6e 20 69  ion verb] - an i
19960 6e 74 65 67 65 72 20 63 6f 64 65 20 0a 2a 2a 20  nteger code .** 
19970 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20 77  that indicates w
19980 68 61 74 20 61 73 70 65 63 74 20 6f 66 20 74 68  hat aspect of th
19990 65 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  e [database conn
199a0 65 63 74 69 6f 6e 5d 20 69 73 20 62 65 69 6e 67  ection] is being
199b0 20 63 6f 6e 66 69 67 75 72 65 64 2e 0a 2a 2a 20   configured..** 
199c0 53 75 62 73 65 71 75 65 6e 74 20 61 72 67 75 6d  Subsequent argum
199d0 65 6e 74 73 20 76 61 72 79 20 64 65 70 65 6e 64  ents vary depend
199e0 69 6e 67 20 6f 6e 20 74 68 65 20 63 6f 6e 66 69  ing on the confi
199f0 67 75 72 61 74 69 6f 6e 20 76 65 72 62 2e 0a 2a  guration verb..*
19a00 2a 0a 2a 2a 20 5e 43 61 6c 6c 73 20 74 6f 20 73  *.** ^Calls to s
19a10 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67  qlite3_db_config
19a20 28 29 20 72 65 74 75 72 6e 20 53 51 4c 49 54 45  () return SQLITE
19a30 5f 4f 4b 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20  _OK if and only 
19a40 69 66 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 69  if.** the call i
19a50 73 20 63 6f 6e 73 69 64 65 72 65 64 20 73 75 63  s considered suc
19a60 63 65 73 73 66 75 6c 2e 0a 2a 2f 0a 53 51 4c 49  cessful..*/.SQLI
19a70 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
19a80 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 73 71 6c  e3_db_config(sql
19a90 69 74 65 33 2a 2c 20 69 6e 74 20 6f 70 2c 20 2e  ite3*, int op, .
19aa0 2e 2e 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  ..);../*.** CAPI
19ab0 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c 6c  3REF: Memory All
19ac0 6f 63 61 74 69 6f 6e 20 52 6f 75 74 69 6e 65 73  ocation Routines
19ad0 0a 2a 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e  .**.** An instan
19ae0 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  ce of this objec
19af0 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 69 6e  t defines the in
19b00 74 65 72 66 61 63 65 20 62 65 74 77 65 65 6e 20  terface between 
19b10 53 51 4c 69 74 65 0a 2a 2a 20 61 6e 64 20 6c 6f  SQLite.** and lo
19b20 77 2d 6c 65 76 65 6c 20 6d 65 6d 6f 72 79 20 61  w-level memory a
19b30 6c 6c 6f 63 61 74 69 6f 6e 20 72 6f 75 74 69 6e  llocation routin
19b40 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 6f  es..**.** This o
19b50 62 6a 65 63 74 20 69 73 20 75 73 65 64 20 69 6e  bject is used in
19b60 20 6f 6e 6c 79 20 6f 6e 65 20 70 6c 61 63 65 20   only one place 
19b70 69 6e 20 74 68 65 20 53 51 4c 69 74 65 20 69 6e  in the SQLite in
19b80 74 65 72 66 61 63 65 2e 0a 2a 2a 20 41 20 70 6f  terface..** A po
19b90 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 73 74  inter to an inst
19ba0 61 6e 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a  ance of this obj
19bb0 65 63 74 20 69 73 20 74 68 65 20 61 72 67 75 6d  ect is the argum
19bc0 65 6e 74 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74  ent to.** [sqlit
19bd0 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 68 65  e3_config()] whe
19be0 6e 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74  n the configurat
19bf0 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a  ion option is.**
19c00 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f   [SQLITE_CONFIG_
19c10 4d 41 4c 4c 4f 43 5d 20 6f 72 20 5b 53 51 4c 49  MALLOC] or [SQLI
19c20 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 41 4c  TE_CONFIG_GETMAL
19c30 4c 4f 43 5d 2e 20 20 0a 2a 2a 20 42 79 20 63 72  LOC].  .** By cr
19c40 65 61 74 69 6e 67 20 61 6e 20 69 6e 73 74 61 6e  eating an instan
19c50 63 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63  ce of this objec
19c60 74 0a 2a 2a 20 61 6e 64 20 70 61 73 73 69 6e 67  t.** and passing
19c70 20 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f   it to [sqlite3_
19c80 63 6f 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f  config]([SQLITE_
19c90 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43 5d 29 0a  CONFIG_MALLOC]).
19ca0 2a 2a 20 64 75 72 69 6e 67 20 63 6f 6e 66 69 67  ** during config
19cb0 75 72 61 74 69 6f 6e 2c 20 61 6e 20 61 70 70 6c  uration, an appl
19cc0 69 63 61 74 69 6f 6e 20 63 61 6e 20 73 70 65 63  ication can spec
19cd0 69 66 79 20 61 6e 20 61 6c 74 65 72 6e 61 74 69  ify an alternati
19ce0 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c  ve.** memory all
19cf0 6f 63 61 74 69 6f 6e 20 73 75 62 73 79 73 74 65  ocation subsyste
19d00 6d 20 66 6f 72 20 53 51 4c 69 74 65 20 74 6f 20  m for SQLite to 
19d10 75 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69  use for all of i
19d20 74 73 0a 2a 2a 20 64 79 6e 61 6d 69 63 20 6d 65  ts.** dynamic me
19d30 6d 6f 72 79 20 6e 65 65 64 73 2e 0a 2a 2a 0a 2a  mory needs..**.*
19d40 2a 20 4e 6f 74 65 20 74 68 61 74 20 53 51 4c 69  * Note that SQLi
19d50 74 65 20 63 6f 6d 65 73 20 77 69 74 68 20 73 65  te comes with se
19d60 76 65 72 61 6c 20 5b 62 75 69 6c 74 2d 69 6e 20  veral [built-in 
19d70 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72  memory allocator
19d80 73 5d 0a 2a 2a 20 74 68 61 74 20 61 72 65 20 70  s].** that are p
19d90 65 72 66 65 63 74 6c 79 20 61 64 65 71 75 61 74  erfectly adequat
19da0 65 20 66 6f 72 20 74 68 65 20 6f 76 65 72 77 68  e for the overwh
19db0 65 6c 6d 69 6e 67 20 6d 61 6a 6f 72 69 74 79 20  elming majority 
19dc0 6f 66 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 0a  of applications.
19dd0 2a 2a 20 61 6e 64 20 74 68 61 74 20 74 68 69 73  ** and that this
19de0 20 6f 62 6a 65 63 74 20 69 73 20 6f 6e 6c 79 20   object is only 
19df0 75 73 65 66 75 6c 20 74 6f 20 61 20 74 69 6e 79  useful to a tiny
19e00 20 6d 69 6e 6f 72 69 74 79 20 6f 66 20 61 70 70   minority of app
19e10 6c 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 77 69 74  lications.** wit
19e20 68 20 73 70 65 63 69 61 6c 69 7a 65 64 20 6d 65  h specialized me
19e30 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
19e40 72 65 71 75 69 72 65 6d 65 6e 74 73 2e 20 20 54  requirements.  T
19e50 68 69 73 20 6f 62 6a 65 63 74 20 69 73 0a 2a 2a  his object is.**
19e60 20 61 6c 73 6f 20 75 73 65 64 20 64 75 72 69 6e   also used durin
19e70 67 20 74 65 73 74 69 6e 67 20 6f 66 20 53 51 4c  g testing of SQL
19e80 69 74 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  ite in order to 
19e90 73 70 65 63 69 66 79 20 61 6e 20 61 6c 74 65 72  specify an alter
19ea0 6e 61 74 69 76 65 0a 2a 2a 20 6d 65 6d 6f 72 79  native.** memory
19eb0 20 61 6c 6c 6f 63 61 74 6f 72 20 74 68 61 74 20   allocator that 
19ec0 73 69 6d 75 6c 61 74 65 73 20 6d 65 6d 6f 72 79  simulates memory
19ed0 20 6f 75 74 2d 6f 66 2d 6d 65 6d 6f 72 79 20 63   out-of-memory c
19ee0 6f 6e 64 69 74 69 6f 6e 73 20 69 6e 0a 2a 2a 20  onditions in.** 
19ef0 6f 72 64 65 72 20 74 6f 20 76 65 72 69 66 79 20  order to verify 
19f00 74 68 61 74 20 53 51 4c 69 74 65 20 72 65 63 6f  that SQLite reco
19f10 76 65 72 73 20 67 72 61 63 65 66 75 6c 6c 79 20  vers gracefully 
19f20 66 72 6f 6d 20 73 75 63 68 0a 2a 2a 20 63 6f 6e  from such.** con
19f30 64 69 74 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 54  ditions..**.** T
19f40 68 65 20 78 4d 61 6c 6c 6f 63 2c 20 78 52 65 61  he xMalloc, xRea
19f50 6c 6c 6f 63 2c 20 61 6e 64 20 78 46 72 65 65 20  lloc, and xFree 
19f60 6d 65 74 68 6f 64 73 20 6d 75 73 74 20 77 6f 72  methods must wor
19f70 6b 20 6c 69 6b 65 20 74 68 65 0a 2a 2a 20 6d 61  k like the.** ma
19f80 6c 6c 6f 63 28 29 2c 20 72 65 61 6c 6c 6f 63 28  lloc(), realloc(
19f90 29 20 61 6e 64 20 66 72 65 65 28 29 20 66 75 6e  ) and free() fun
19fa0 63 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20  ctions from the 
19fb0 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62 72 61  standard C libra
19fc0 72 79 2e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 67  ry..** ^SQLite g
19fd0 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 74  uarantees that t
19fe0 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
19ff0 6e 74 20 74 6f 0a 2a 2a 20 78 52 65 61 6c 6c 6f  nt to.** xReallo
1a000 63 20 69 73 20 61 6c 77 61 79 73 20 61 20 76 61  c is always a va
1a010 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62 79 20  lue returned by 
1a020 61 20 70 72 69 6f 72 20 63 61 6c 6c 20 74 6f 20  a prior call to 
1a030 78 52 6f 75 6e 64 75 70 2e 0a 2a 2a 0a 2a 2a 20  xRoundup..**.** 
1a040 78 53 69 7a 65 20 73 68 6f 75 6c 64 20 72 65 74  xSize should ret
1a050 75 72 6e 20 74 68 65 20 61 6c 6c 6f 63 61 74 65  urn the allocate
1a060 64 20 73 69 7a 65 20 6f 66 20 61 20 6d 65 6d 6f  d size of a memo
1a070 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a  ry allocation.**
1a080 20 70 72 65 76 69 6f 75 73 6c 79 20 6f 62 74 61   previously obta
1a090 69 6e 65 64 20 66 72 6f 6d 20 78 4d 61 6c 6c 6f  ined from xMallo
1a0a0 63 20 6f 72 20 78 52 65 61 6c 6c 6f 63 2e 20 20  c or xRealloc.  
1a0b0 54 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 73 69  The allocated si
1a0c0 7a 65 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20  ze.** is always 
1a0d0 61 74 20 6c 65 61 73 74 20 61 73 20 62 69 67 20  at least as big 
1a0e0 61 73 20 74 68 65 20 72 65 71 75 65 73 74 65 64  as the requested
1a0f0 20 73 69 7a 65 20 62 75 74 20 6d 61 79 20 62 65   size but may be
1a100 20 6c 61 72 67 65 72 2e 0a 2a 2a 0a 2a 2a 20 54   larger..**.** T
1a110 68 65 20 78 52 6f 75 6e 64 75 70 20 6d 65 74 68  he xRoundup meth
1a120 6f 64 20 72 65 74 75 72 6e 73 20 77 68 61 74 20  od returns what 
1a130 77 6f 75 6c 64 20 62 65 20 74 68 65 20 61 6c 6c  would be the all
1a140 6f 63 61 74 65 64 20 73 69 7a 65 20 6f 66 0a 2a  ocated size of.*
1a150 2a 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  * a memory alloc
1a160 61 74 69 6f 6e 20 67 69 76 65 6e 20 61 20 70 61  ation given a pa
1a170 72 74 69 63 75 6c 61 72 20 72 65 71 75 65 73 74  rticular request
1a180 65 64 20 73 69 7a 65 2e 20 20 4d 6f 73 74 20 6d  ed size.  Most m
1a190 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74  emory.** allocat
1a1a0 6f 72 73 20 72 6f 75 6e 64 20 75 70 20 6d 65 6d  ors round up mem
1a1b0 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 20  ory allocations 
1a1c0 61 74 20 6c 65 61 73 74 20 74 6f 20 74 68 65 20  at least to the 
1a1d0 6e 65 78 74 20 6d 75 6c 74 69 70 6c 65 0a 2a 2a  next multiple.**
1a1e0 20 6f 66 20 38 2e 20 20 53 6f 6d 65 20 61 6c 6c   of 8.  Some all
1a1f0 6f 63 61 74 6f 72 73 20 72 6f 75 6e 64 20 75 70  ocators round up
1a200 20 74 6f 20 61 20 6c 61 72 67 65 72 20 6d 75 6c   to a larger mul
1a210 74 69 70 6c 65 20 6f 72 20 74 6f 20 61 20 70 6f  tiple or to a po
1a220 77 65 72 20 6f 66 20 32 2e 0a 2a 2a 20 45 76 65  wer of 2..** Eve
1a230 72 79 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  ry memory alloca
1a240 74 69 6f 6e 20 72 65 71 75 65 73 74 20 63 6f 6d  tion request com
1a250 69 6e 67 20 69 6e 20 74 68 72 6f 75 67 68 20 5b  ing in through [
1a260 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29  sqlite3_malloc()
1a270 5d 0a 2a 2a 20 6f 72 20 5b 73 71 6c 69 74 65 33  ].** or [sqlite3
1a280 5f 72 65 61 6c 6c 6f 63 28 29 5d 20 66 69 72 73  _realloc()] firs
1a290 74 20 63 61 6c 6c 73 20 78 52 6f 75 6e 64 75 70  t calls xRoundup
1a2a0 2e 20 20 49 66 20 78 52 6f 75 6e 64 75 70 20 72  .  If xRoundup r
1a2b0 65 74 75 72 6e 73 20 30 2c 20 0a 2a 2a 20 74 68  eturns 0, .** th
1a2c0 61 74 20 63 61 75 73 65 73 20 74 68 65 20 63 6f  at causes the co
1a2d0 72 72 65 73 70 6f 6e 64 69 6e 67 20 6d 65 6d 6f  rresponding memo
1a2e0 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 6f  ry allocation to
1a2f0 20 66 61 69 6c 2e 0a 2a 2a 0a 2a 2a 20 54 68 65   fail..**.** The
1a300 20 78 49 6e 69 74 20 6d 65 74 68 6f 64 20 69 6e   xInit method in
1a310 69 74 69 61 6c 69 7a 65 73 20 74 68 65 20 6d 65  itializes the me
1a320 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 2e 20  mory allocator. 
1a330 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 2a 2a   For example,.**
1a340 20 69 74 20 6d 69 67 68 74 20 61 6c 6c 6f 63 61   it might alloca
1a350 74 65 20 61 6e 79 20 72 65 71 75 69 72 65 20 6d  te any require m
1a360 75 74 65 78 65 73 20 6f 72 20 69 6e 69 74 69 61  utexes or initia
1a370 6c 69 7a 65 20 69 6e 74 65 72 6e 61 6c 20 64 61  lize internal da
1a380 74 61 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 73  ta.** structures
1a390 2e 20 20 54 68 65 20 78 53 68 75 74 64 6f 77 6e  .  The xShutdown
1a3a0 20 6d 65 74 68 6f 64 20 69 73 20 69 6e 76 6f 6b   method is invok
1a3b0 65 64 20 28 69 6e 64 69 72 65 63 74 6c 79 29 20  ed (indirectly) 
1a3c0 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 73  by.** [sqlite3_s
1a3d0 68 75 74 64 6f 77 6e 28 29 5d 20 61 6e 64 20 73  hutdown()] and s
1a3e0 68 6f 75 6c 64 20 64 65 61 6c 6c 6f 63 61 74 65  hould deallocate
1a3f0 20 61 6e 79 20 72 65 73 6f 75 72 63 65 73 20 61   any resources a
1a400 63 71 75 69 72 65 64 0a 2a 2a 20 62 79 20 78 49  cquired.** by xI
1a410 6e 69 74 2e 20 20 54 68 65 20 70 41 70 70 44 61  nit.  The pAppDa
1a420 74 61 20 70 6f 69 6e 74 65 72 20 69 73 20 75 73  ta pointer is us
1a430 65 64 20 61 73 20 74 68 65 20 6f 6e 6c 79 20 70  ed as the only p
1a440 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20 78  arameter to.** x
1a450 49 6e 69 74 20 61 6e 64 20 78 53 68 75 74 64 6f  Init and xShutdo
1a460 77 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74 65  wn..**.** SQLite
1a470 20 68 6f 6c 64 73 20 74 68 65 20 5b 53 51 4c 49   holds the [SQLI
1a480 54 45 5f 4d 55 54 45 58 5f 53 54 41 54 49 43 5f  TE_MUTEX_STATIC_
1a490 4d 41 53 54 45 52 5d 20 6d 75 74 65 78 20 77 68  MASTER] mutex wh
1a4a0 65 6e 20 69 74 20 69 6e 76 6f 6b 65 73 0a 2a 2a  en it invokes.**
1a4b0 20 74 68 65 20 78 49 6e 69 74 20 6d 65 74 68 6f   the xInit metho
1a4c0 64 2c 20 73 6f 20 74 68 65 20 78 49 6e 69 74 20  d, so the xInit 
1a4d0 6d 65 74 68 6f 64 20 6e 65 65 64 20 6e 6f 74 20  method need not 
1a4e0 62 65 20 74 68 72 65 61 64 73 61 66 65 2e 20 20  be threadsafe.  
1a4f0 54 68 65 0a 2a 2a 20 78 53 68 75 74 64 6f 77 6e  The.** xShutdown
1a500 20 6d 65 74 68 6f 64 20 69 73 20 6f 6e 6c 79 20   method is only 
1a510 63 61 6c 6c 65 64 20 66 72 6f 6d 20 5b 73 71 6c  called from [sql
1a520 69 74 65 33 5f 73 68 75 74 64 6f 77 6e 28 29 5d  ite3_shutdown()]
1a530 20 73 6f 20 69 74 20 64 6f 65 73 0a 2a 2a 20 6e   so it does.** n
1a540 6f 74 20 6e 65 65 64 20 74 6f 20 62 65 20 74 68  ot need to be th
1a550 72 65 61 64 73 61 66 65 20 65 69 74 68 65 72 2e  readsafe either.
1a560 20 20 46 6f 72 20 61 6c 6c 20 6f 74 68 65 72 20    For all other 
1a570 6d 65 74 68 6f 64 73 2c 20 53 51 4c 69 74 65 0a  methods, SQLite.
1a580 2a 2a 20 68 6f 6c 64 73 20 74 68 65 20 5b 53 51  ** holds the [SQ
1a590 4c 49 54 45 5f 4d 55 54 45 58 5f 53 54 41 54 49  LITE_MUTEX_STATI
1a5a0 43 5f 4d 45 4d 5d 20 6d 75 74 65 78 20 61 73 20  C_MEM] mutex as 
1a5b0 6c 6f 6e 67 20 61 73 20 74 68 65 0a 2a 2a 20 5b  long as the.** [
1a5c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
1a5d0 4d 53 54 41 54 55 53 5d 20 63 6f 6e 66 69 67 75  MSTATUS] configu
1a5e0 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73  ration option is
1a5f0 20 74 75 72 6e 65 64 20 6f 6e 20 28 77 68 69 63   turned on (whic
1a600 68 0a 2a 2a 20 69 74 20 69 73 20 62 79 20 64 65  h.** it is by de
1a610 66 61 75 6c 74 29 20 61 6e 64 20 73 6f 20 74 68  fault) and so th
1a620 65 20 6d 65 74 68 6f 64 73 20 61 72 65 20 61 75  e methods are au
1a630 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 65 72 69  tomatically seri
1a640 61 6c 69 7a 65 64 2e 0a 2a 2a 20 48 6f 77 65 76  alized..** Howev
1a650 65 72 2c 20 69 66 20 5b 53 51 4c 49 54 45 5f 43  er, if [SQLITE_C
1a660 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 5d  ONFIG_MEMSTATUS]
1a670 20 69 73 20 64 69 73 61 62 6c 65 64 2c 20 74 68   is disabled, th
1a680 65 6e 20 74 68 65 20 6f 74 68 65 72 0a 2a 2a 20  en the other.** 
1a690 6d 65 74 68 6f 64 73 20 6d 75 73 74 20 62 65 20  methods must be 
1a6a0 74 68 72 65 61 64 73 61 66 65 20 6f 72 20 65 6c  threadsafe or el
1a6b0 73 65 20 6d 61 6b 65 20 74 68 65 69 72 20 6f 77  se make their ow
1a6c0 6e 20 61 72 72 61 6e 67 65 6d 65 6e 74 73 20 66  n arrangements f
1a6d0 6f 72 0a 2a 2a 20 73 65 72 69 61 6c 69 7a 61 74  or.** serializat
1a6e0 69 6f 6e 2e 0a 2a 2a 0a 2a 2a 20 53 51 4c 69 74  ion..**.** SQLit
1a6f0 65 20 77 69 6c 6c 20 6e 65 76 65 72 20 69 6e 76  e will never inv
1a700 6f 6b 65 20 78 49 6e 69 74 28 29 20 6d 6f 72 65  oke xInit() more
1a710 20 74 68 61 6e 20 6f 6e 63 65 20 77 69 74 68 6f   than once witho
1a720 75 74 20 61 6e 20 69 6e 74 65 72 76 65 6e 69 6e  ut an intervenin
1a730 67 0a 2a 2a 20 63 61 6c 6c 20 74 6f 20 78 53 68  g.** call to xSh
1a740 75 74 64 6f 77 6e 28 29 2e 0a 2a 2f 0a 74 79 70  utdown()..*/.typ
1a750 65 64 65 66 20 73 74 72 75 63 74 20 73 71 6c 69  edef struct sqli
1a760 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20  te3_mem_methods 
1a770 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74 68  sqlite3_mem_meth
1a780 6f 64 73 3b 0a 73 74 72 75 63 74 20 73 71 6c 69  ods;.struct sqli
1a790 74 65 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 20  te3_mem_methods 
1a7a0 7b 0a 20 20 76 6f 69 64 20 2a 28 2a 78 4d 61 6c  {.  void *(*xMal
1a7b0 6c 6f 63 29 28 69 6e 74 29 3b 20 20 20 20 20 20  loc)(int);      
1a7c0 20 20 20 2f 2a 20 4d 65 6d 6f 72 79 20 61 6c 6c     /* Memory all
1a7d0 6f 63 61 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e  ocation function
1a7e0 20 2a 2f 0a 20 20 76 6f 69 64 20 28 2a 78 46 72   */.  void (*xFr
1a7f0 65 65 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20  ee)(void*);     
1a800 20 20 20 20 20 2f 2a 20 46 72 65 65 20 61 20 70       /* Free a p
1a810 72 69 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  rior allocation 
1a820 2a 2f 0a 20 20 76 6f 69 64 20 2a 28 2a 78 52 65  */.  void *(*xRe
1a830 61 6c 6c 6f 63 29 28 76 6f 69 64 2a 2c 69 6e 74  alloc)(void*,int
1a840 29 3b 20 20 2f 2a 20 52 65 73 69 7a 65 20 61 6e  );  /* Resize an
1a850 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 2a 2f 0a 20   allocation */. 
1a860 20 69 6e 74 20 28 2a 78 53 69 7a 65 29 28 76 6f   int (*xSize)(vo
1a870 69 64 2a 29 3b 20 20 20 20 20 20 20 20 20 20 20  id*);           
1a880 2f 2a 20 52 65 74 75 72 6e 20 74 68 65 20 73 69  /* Return the si
1a890 7a 65 20 6f 66 20 61 6e 20 61 6c 6c 6f 63 61 74  ze of an allocat
1a8a0 69 6f 6e 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ion */.  int (*x
1a8b0 52 6f 75 6e 64 75 70 29 28 69 6e 74 29 3b 20 20  Roundup)(int);  
1a8c0 20 20 20 20 20 20 20 20 2f 2a 20 52 6f 75 6e 64          /* Round
1a8d0 20 75 70 20 72 65 71 75 65 73 74 20 73 69 7a 65   up request size
1a8e0 20 74 6f 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73   to allocation s
1a8f0 69 7a 65 20 2a 2f 0a 20 20 69 6e 74 20 28 2a 78  ize */.  int (*x
1a900 49 6e 69 74 29 28 76 6f 69 64 2a 29 3b 20 20 20  Init)(void*);   
1a910 20 20 20 20 20 20 20 20 2f 2a 20 49 6e 69 74 69          /* Initi
1a920 61 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79  alize the memory
1a930 20 61 6c 6c 6f 63 61 74 6f 72 20 2a 2f 0a 20 20   allocator */.  
1a940 76 6f 69 64 20 28 2a 78 53 68 75 74 64 6f 77 6e  void (*xShutdown
1a950 29 28 76 6f 69 64 2a 29 3b 20 20 20 20 20 20 2f  )(void*);      /
1a960 2a 20 44 65 69 6e 69 74 69 61 6c 69 7a 65 20 74  * Deinitialize t
1a970 68 65 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61  he memory alloca
1a980 74 6f 72 20 2a 2f 0a 20 20 76 6f 69 64 20 2a 70  tor */.  void *p
1a990 41 70 70 44 61 74 61 3b 20 20 20 20 20 20 20 20  AppData;        
1a9a0 20 20 20 20 20 20 20 20 2f 2a 20 41 72 67 75 6d          /* Argum
1a9b0 65 6e 74 20 74 6f 20 78 49 6e 69 74 28 29 20 61  ent to xInit() a
1a9c0 6e 64 20 78 53 68 75 74 64 6f 77 6e 28 29 20 2a  nd xShutdown() *
1a9d0 2f 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  /.};../*.** CAPI
1a9e0 33 52 45 46 3a 20 43 6f 6e 66 69 67 75 72 61 74  3REF: Configurat
1a9f0 69 6f 6e 20 4f 70 74 69 6f 6e 73 0a 2a 2a 20 4b  ion Options.** K
1aa00 45 59 57 4f 52 44 53 3a 20 7b 63 6f 6e 66 69 67  EYWORDS: {config
1aa10 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 7d 0a  uration option}.
1aa20 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73  **.** These cons
1aa30 74 61 6e 74 73 20 61 72 65 20 74 68 65 20 61 76  tants are the av
1aa40 61 69 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 20  ailable integer 
1aa50 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70  configuration op
1aa60 74 69 6f 6e 73 20 74 68 61 74 0a 2a 2a 20 63 61  tions that.** ca
1aa70 6e 20 62 65 20 70 61 73 73 65 64 20 61 73 20 74  n be passed as t
1aa80 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e  he first argumen
1aa90 74 20 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65  t to the [sqlite
1aaa0 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69 6e 74 65  3_config()] inte
1aab0 72 66 61 63 65 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77  rface..**.** New
1aac0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1aad0 70 74 69 6f 6e 73 20 6d 61 79 20 62 65 20 61 64  ptions may be ad
1aae0 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72 65  ded in future re
1aaf0 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65  leases of SQLite
1ab00 2e 0a 2a 2a 20 45 78 69 73 74 69 6e 67 20 63 6f  ..** Existing co
1ab10 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1ab20 6f 6e 73 20 6d 69 67 68 74 20 62 65 20 64 69 73  ons might be dis
1ab30 63 6f 6e 74 69 6e 75 65 64 2e 20 20 41 70 70 6c  continued.  Appl
1ab40 69 63 61 74 69 6f 6e 73 0a 2a 2a 20 73 68 6f 75  ications.** shou
1ab50 6c 64 20 63 68 65 63 6b 20 74 68 65 20 72 65 74  ld check the ret
1ab60 75 72 6e 20 63 6f 64 65 20 66 72 6f 6d 20 5b 73  urn code from [s
1ab70 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
1ab80 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68   to make sure th
1ab90 61 74 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77  at.** the call w
1aba0 6f 72 6b 65 64 2e 20 20 54 68 65 20 5b 73 71 6c  orked.  The [sql
1abb0 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 69  ite3_config()] i
1abc0 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20 72 65  nterface will re
1abd0 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d 7a 65  turn a.** non-ze
1abe0 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20  ro [error code] 
1abf0 69 66 20 61 20 64 69 73 63 6f 6e 74 69 6e 75 65  if a discontinue
1ac00 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74 65 64  d or unsupported
1ac10 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f   configuration o
1ac20 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e 76 6f  ption.** is invo
1ac30 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c 3e 0a  ked..**.** <dl>.
1ac40 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1ac50 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44 5d  IG_SINGLETHREAD]
1ac60 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e  ] <dt>SQLITE_CON
1ac70 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45 41 44  FIG_SINGLETHREAD
1ac80 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
1ac90 72 65 20 61 72 65 20 6e 6f 20 61 72 67 75 6d 65  re are no argume
1aca0 6e 74 73 20 74 6f 20 74 68 69 73 20 6f 70 74 69  nts to this opti
1acb0 6f 6e 2e 20 20 5e 54 68 69 73 20 6f 70 74 69 6f  on.  ^This optio
1acc0 6e 20 73 65 74 73 20 74 68 65 0a 2a 2a 20 5b 74  n sets the.** [t
1acd0 68 72 65 61 64 69 6e 67 20 6d 6f 64 65 5d 20 74  hreading mode] t
1ace0 6f 20 53 69 6e 67 6c 65 2d 74 68 72 65 61 64 2e  o Single-thread.
1acf0 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73    In other words
1ad00 2c 20 69 74 20 64 69 73 61 62 6c 65 73 0a 2a 2a  , it disables.**
1ad10 20 61 6c 6c 20 6d 75 74 65 78 69 6e 67 20 61 6e   all mutexing an
1ad20 64 20 70 75 74 73 20 53 51 4c 69 74 65 20 69 6e  d puts SQLite in
1ad30 74 6f 20 61 20 6d 6f 64 65 20 77 68 65 72 65 20  to a mode where 
1ad40 69 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75  it can only be u
1ad50 73 65 64 0a 2a 2a 20 62 79 20 61 20 73 69 6e 67  sed.** by a sing
1ad60 6c 65 20 74 68 72 65 61 64 2e 20 20 20 5e 49 66  le thread.   ^If
1ad70 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70 69   SQLite is compi
1ad80 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74 68 65 20  led with.** the 
1ad90 5b 53 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41  [SQLITE_THREADSA
1ada0 46 45 20 7c 20 53 51 4c 49 54 45 5f 54 48 52 45  FE | SQLITE_THRE
1adb0 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d 70 69 6c  ADSAFE=0] compil
1adc0 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68  e-time option th
1add0 65 6e 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74 20  en.** it is not 
1ade0 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 68 61 6e  possible to chan
1adf0 67 65 20 74 68 65 20 5b 74 68 72 65 61 64 69 6e  ge the [threadin
1ae00 67 20 6d 6f 64 65 5d 20 66 72 6f 6d 20 69 74 73  g mode] from its
1ae10 20 64 65 66 61 75 6c 74 0a 2a 2a 20 76 61 6c 75   default.** valu
1ae20 65 20 6f 66 20 53 69 6e 67 6c 65 2d 74 68 72 65  e of Single-thre
1ae30 61 64 20 61 6e 64 20 73 6f 20 5b 73 71 6c 69 74  ad and so [sqlit
1ae40 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77 69 6c  e3_config()] wil
1ae50 6c 20 72 65 74 75 72 6e 20 0a 2a 2a 20 5b 53 51  l return .** [SQ
1ae60 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63  LITE_ERROR] if c
1ae70 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 53  alled with the S
1ae80 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e  QLITE_CONFIG_SIN
1ae90 47 4c 45 54 48 52 45 41 44 0a 2a 2a 20 63 6f 6e  GLETHREAD.** con
1aea0 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f  figuration optio
1aeb0 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  n.</dd>.**.** [[
1aec0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1aed0 4c 54 49 54 48 52 45 41 44 5d 5d 20 3c 64 74 3e  LTITHREAD]] <dt>
1aee0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55  SQLITE_CONFIG_MU
1aef0 4c 54 49 54 48 52 45 41 44 3c 2f 64 74 3e 0a 2a  LTITHREAD</dt>.*
1af00 2a 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20  * <dd>There are 
1af10 6e 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  no arguments to 
1af20 74 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54  this option.  ^T
1af30 68 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20  his option sets 
1af40 74 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e  the.** [threadin
1af50 67 20 6d 6f 64 65 5d 20 74 6f 20 4d 75 6c 74 69  g mode] to Multi
1af60 2d 74 68 72 65 61 64 2e 20 20 49 6e 20 6f 74 68  -thread.  In oth
1af70 65 72 20 77 6f 72 64 73 2c 20 69 74 20 64 69 73  er words, it dis
1af80 61 62 6c 65 73 0a 2a 2a 20 6d 75 74 65 78 69 6e  ables.** mutexin
1af90 67 20 6f 6e 20 5b 64 61 74 61 62 61 73 65 20 63  g on [database c
1afa0 6f 6e 6e 65 63 74 69 6f 6e 5d 20 61 6e 64 20 5b  onnection] and [
1afb0 70 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65  prepared stateme
1afc0 6e 74 5d 20 6f 62 6a 65 63 74 73 2e 0a 2a 2a 20  nt] objects..** 
1afd0 54 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  The application 
1afe0 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20 66  is responsible f
1aff0 6f 72 20 73 65 72 69 61 6c 69 7a 69 6e 67 20 61  or serializing a
1b000 63 63 65 73 73 20 74 6f 0a 2a 2a 20 5b 64 61 74  ccess to.** [dat
1b010 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
1b020 73 5d 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64  s] and [prepared
1b030 20 73 74 61 74 65 6d 65 6e 74 73 5d 2e 20 20 42   statements].  B
1b040 75 74 20 6f 74 68 65 72 20 6d 75 74 65 78 65 73  ut other mutexes
1b050 0a 2a 2a 20 61 72 65 20 65 6e 61 62 6c 65 64 20  .** are enabled 
1b060 73 6f 20 74 68 61 74 20 53 51 4c 69 74 65 20 77  so that SQLite w
1b070 69 6c 6c 20 62 65 20 73 61 66 65 20 74 6f 20 75  ill be safe to u
1b080 73 65 20 69 6e 20 61 20 6d 75 6c 74 69 2d 74 68  se in a multi-th
1b090 72 65 61 64 65 64 0a 2a 2a 20 65 6e 76 69 72 6f  readed.** enviro
1b0a0 6e 6d 65 6e 74 20 61 73 20 6c 6f 6e 67 20 61 73  nment as long as
1b0b0 20 6e 6f 20 74 77 6f 20 74 68 72 65 61 64 73 20   no two threads 
1b0c0 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 74  attempt to use t
1b0d0 68 65 20 73 61 6d 65 0a 2a 2a 20 5b 64 61 74 61  he same.** [data
1b0e0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d  base connection]
1b0f0 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
1b100 65 2e 20 20 5e 49 66 20 53 51 4c 69 74 65 20 69  e.  ^If SQLite i
1b110 73 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a  s compiled with.
1b120 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54  ** the [SQLITE_T
1b130 48 52 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49  HREADSAFE | SQLI
1b140 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
1b150 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1b160 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20  tion then.** it 
1b170 69 73 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20  is not possible 
1b180 74 6f 20 73 65 74 20 74 68 65 20 4d 75 6c 74 69  to set the Multi
1b190 2d 74 68 72 65 61 64 20 5b 74 68 72 65 61 64 69  -thread [threadi
1b1a0 6e 67 20 6d 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20  ng mode] and.** 
1b1b0 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28  [sqlite3_config(
1b1c0 29 5d 20 77 69 6c 6c 20 72 65 74 75 72 6e 20 5b  )] will return [
1b1d0 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d 20 69 66  SQLITE_ERROR] if
1b1e0 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65   called with the
1b1f0 0a 2a 2a 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  .** SQLITE_CONFI
1b200 47 5f 4d 55 4c 54 49 54 48 52 45 41 44 20 63 6f  G_MULTITHREAD co
1b210 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1b220 6f 6e 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  on.</dd>.**.** [
1b230 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  [SQLITE_CONFIG_S
1b240 45 52 49 41 4c 49 5a 45 44 5d 5d 20 3c 64 74 3e  ERIALIZED]] <dt>
1b250 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
1b260 52 49 41 4c 49 5a 45 44 3c 2f 64 74 3e 0a 2a 2a  RIALIZED</dt>.**
1b270 20 3c 64 64 3e 54 68 65 72 65 20 61 72 65 20 6e   <dd>There are n
1b280 6f 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 74  o arguments to t
1b290 68 69 73 20 6f 70 74 69 6f 6e 2e 20 20 5e 54 68  his option.  ^Th
1b2a0 69 73 20 6f 70 74 69 6f 6e 20 73 65 74 73 20 74  is option sets t
1b2b0 68 65 0a 2a 2a 20 5b 74 68 72 65 61 64 69 6e 67  he.** [threading
1b2c0 20 6d 6f 64 65 5d 20 74 6f 20 53 65 72 69 61 6c   mode] to Serial
1b2d0 69 7a 65 64 2e 20 49 6e 20 6f 74 68 65 72 20 77  ized. In other w
1b2e0 6f 72 64 73 2c 20 74 68 69 73 20 6f 70 74 69 6f  ords, this optio
1b2f0 6e 20 65 6e 61 62 6c 65 73 0a 2a 2a 20 61 6c 6c  n enables.** all
1b300 20 6d 75 74 65 78 65 73 20 69 6e 63 6c 75 64 69   mutexes includi
1b310 6e 67 20 74 68 65 20 72 65 63 75 72 73 69 76 65  ng the recursive
1b320 0a 2a 2a 20 6d 75 74 65 78 65 73 20 6f 6e 20 5b  .** mutexes on [
1b330 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
1b340 69 6f 6e 5d 20 61 6e 64 20 5b 70 72 65 70 61 72  ion] and [prepar
1b350 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20 6f 62  ed statement] ob
1b360 6a 65 63 74 73 2e 0a 2a 2a 20 49 6e 20 74 68 69  jects..** In thi
1b370 73 20 6d 6f 64 65 20 28 77 68 69 63 68 20 69 73  s mode (which is
1b380 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 68 65   the default whe
1b390 6e 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6d 70  n SQLite is comp
1b3a0 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 5b 53 51  iled with.** [SQ
1b3b0 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d  LITE_THREADSAFE=
1b3c0 31 5d 29 20 74 68 65 20 53 51 4c 69 74 65 20 6c  1]) the SQLite l
1b3d0 69 62 72 61 72 79 20 77 69 6c 6c 20 69 74 73 65  ibrary will itse
1b3e0 6c 66 20 73 65 72 69 61 6c 69 7a 65 20 61 63 63  lf serialize acc
1b3f0 65 73 73 0a 2a 2a 20 74 6f 20 5b 64 61 74 61 62  ess.** to [datab
1b400 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 5d  ase connections]
1b410 20 61 6e 64 20 5b 70 72 65 70 61 72 65 64 20 73   and [prepared s
1b420 74 61 74 65 6d 65 6e 74 73 5d 20 73 6f 20 74 68  tatements] so th
1b430 61 74 20 74 68 65 0a 2a 2a 20 61 70 70 6c 69 63  at the.** applic
1b440 61 74 69 6f 6e 20 69 73 20 66 72 65 65 20 74 6f  ation is free to
1b450 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 5b 64   use the same [d
1b460 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1b470 6f 6e 5d 20 6f 72 20 74 68 65 0a 2a 2a 20 73 61  on] or the.** sa
1b480 6d 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  me [prepared sta
1b490 74 65 6d 65 6e 74 5d 20 69 6e 20 64 69 66 66 65  tement] in diffe
1b4a0 72 65 6e 74 20 74 68 72 65 61 64 73 20 61 74 20  rent threads at 
1b4b0 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e 0a 2a  the same time..*
1b4c0 2a 20 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20  * ^If SQLite is 
1b4d0 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a  compiled with.**
1b4e0 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52   the [SQLITE_THR
1b4f0 45 41 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45  EADSAFE | SQLITE
1b500 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63  _THREADSAFE=0] c
1b510 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1b520 6f 6e 20 74 68 65 6e 0a 2a 2a 20 69 74 20 69 73  on then.** it is
1b530 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 20 74 6f   not possible to
1b540 20 73 65 74 20 74 68 65 20 53 65 72 69 61 6c 69   set the Seriali
1b550 7a 65 64 20 5b 74 68 72 65 61 64 69 6e 67 20 6d  zed [threading m
1b560 6f 64 65 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  ode] and.** [sql
1b570 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 77  ite3_config()] w
1b580 69 6c 6c 20 72 65 74 75 72 6e 20 5b 53 51 4c 49  ill return [SQLI
1b590 54 45 5f 45 52 52 4f 52 5d 20 69 66 20 63 61 6c  TE_ERROR] if cal
1b5a0 6c 65 64 20 77 69 74 68 20 74 68 65 0a 2a 2a 20  led with the.** 
1b5b0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45  SQLITE_CONFIG_SE
1b5c0 52 49 41 4c 49 5a 45 44 20 63 6f 6e 66 69 67 75  RIALIZED configu
1b5d0 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 2e 3c 2f  ration option.</
1b5e0 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  dd>.**.** [[SQLI
1b5f0 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1b600 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1b610 4e 46 49 47 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e  NFIG_MALLOC</dt>
1b620 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53  .** <dd> ^(The S
1b630 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
1b640 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73  LOC option takes
1b650 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65   a single argume
1b660 6e 74 20 77 68 69 63 68 20 69 73 20 0a 2a 2a 20  nt which is .** 
1b670 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
1b680 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20  instance of the 
1b690 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74  [sqlite3_mem_met
1b6a0 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65 2e  hods] structure.
1b6b0 0a 2a 2a 20 54 68 65 20 61 72 67 75 6d 65 6e 74  .** The argument
1b6c0 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 61 6c   specifies.** al
1b6d0 74 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d 6c 65  ternative low-le
1b6e0 76 65 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  vel memory alloc
1b6f0 61 74 69 6f 6e 20 72 6f 75 74 69 6e 65 73 20 74  ation routines t
1b700 6f 20 62 65 20 75 73 65 64 20 69 6e 20 70 6c 61  o be used in pla
1b710 63 65 20 6f 66 0a 2a 2a 20 74 68 65 20 6d 65 6d  ce of.** the mem
1b720 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 72  ory allocation r
1b730 6f 75 74 69 6e 65 73 20 62 75 69 6c 74 20 69 6e  outines built in
1b740 74 6f 20 53 51 4c 69 74 65 2e 29 5e 20 5e 53 51  to SQLite.)^ ^SQ
1b750 4c 69 74 65 20 6d 61 6b 65 73 0a 2a 2a 20 69 74  Lite makes.** it
1b760 73 20 6f 77 6e 20 70 72 69 76 61 74 65 20 63 6f  s own private co
1b770 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 6e  py of the conten
1b780 74 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65  t of the [sqlite
1b790 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 20 73  3_mem_methods] s
1b7a0 74 72 75 63 74 75 72 65 0a 2a 2a 20 62 65 66 6f  tructure.** befo
1b7b0 72 65 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  re the [sqlite3_
1b7c0 63 6f 6e 66 69 67 28 29 5d 20 63 61 6c 6c 20 72  config()] call r
1b7d0 65 74 75 72 6e 73 2e 3c 2f 64 64 3e 0a 2a 2a 0a  eturns.</dd>.**.
1b7e0 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46  ** [[SQLITE_CONF
1b7f0 49 47 5f 47 45 54 4d 41 4c 4c 4f 43 5d 5d 20 3c  IG_GETMALLOC]] <
1b800 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1b810 5f 47 45 54 4d 41 4c 4c 4f 43 3c 2f 64 74 3e 0a  _GETMALLOC</dt>.
1b820 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51  ** <dd> ^(The SQ
1b830 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d  LITE_CONFIG_GETM
1b840 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20 74 61 6b  ALLOC option tak
1b850 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
1b860 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69 73  ment which.** is
1b870 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
1b880 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 65   instance of the
1b890 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65   [sqlite3_mem_me
1b8a0 74 68 6f 64 73 5d 20 73 74 72 75 63 74 75 72 65  thods] structure
1b8b0 2e 0a 2a 2a 20 54 68 65 20 5b 73 71 6c 69 74 65  ..** The [sqlite
1b8c0 33 5f 6d 65 6d 5f 6d 65 74 68 6f 64 73 5d 0a 2a  3_mem_methods].*
1b8d0 2a 20 73 74 72 75 63 74 75 72 65 20 69 73 20 66  * structure is f
1b8e0 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 63  illed with the c
1b8f0 75 72 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64  urrently defined
1b900 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69   memory allocati
1b910 6f 6e 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a  on routines.)^.*
1b920 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61  * This option ca
1b930 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65  n be used to ove
1b940 72 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c  rload the defaul
1b950 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  t memory allocat
1b960 69 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20  ion.** routines 
1b970 77 69 74 68 20 61 20 77 72 61 70 70 65 72 20 74  with a wrapper t
1b980 68 61 74 20 73 69 6d 75 6c 61 74 69 6f 6e 73 20  hat simulations 
1b990 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
1b9a0 6e 20 66 61 69 6c 75 72 65 20 6f 72 0a 2a 2a 20  n failure or.** 
1b9b0 74 72 61 63 6b 73 20 6d 65 6d 6f 72 79 20 75 73  tracks memory us
1b9c0 61 67 65 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65  age, for example
1b9d0 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  . </dd>.**.** [[
1b9e0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d  SQLITE_CONFIG_SM
1b9f0 41 4c 4c 5f 4d 41 4c 4c 4f 43 5d 5d 20 3c 64 74  ALL_MALLOC]] <dt
1ba00 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  >SQLITE_CONFIG_S
1ba10 4d 41 4c 4c 5f 4d 41 4c 4c 4f 43 3c 2f 64 74 3e  MALL_MALLOC</dt>
1ba20 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65 20 53 51  .** <dd> ^The SQ
1ba30 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 4d 41 4c  LITE_CONFIG_SMAL
1ba40 4c 5f 4d 41 4c 4c 4f 43 20 6f 70 74 69 6f 6e 20  L_MALLOC option 
1ba50 74 61 6b 65 73 20 73 69 6e 67 6c 65 20 61 72 67  takes single arg
1ba60 75 6d 65 6e 74 20 6f 66 0a 2a 2a 20 74 79 70 65  ument of.** type
1ba70 20 69 6e 74 2c 20 69 6e 74 65 72 70 72 65 74 65   int, interprete
1ba80 64 20 61 73 20 61 20 62 6f 6f 6c 65 61 6e 2c 20  d as a boolean, 
1ba90 77 68 69 63 68 20 69 66 20 74 72 75 65 20 70 72  which if true pr
1baa0 6f 76 69 64 65 73 20 61 20 68 69 6e 74 20 74 6f  ovides a hint to
1bab0 0a 2a 2a 20 53 51 4c 69 74 65 20 74 68 61 74 20  .** SQLite that 
1bac0 69 74 20 73 68 6f 75 6c 64 20 61 76 6f 69 64 20  it should avoid 
1bad0 6c 61 72 67 65 20 6d 65 6d 6f 72 79 20 61 6c 6c  large memory all
1bae0 6f 63 61 74 69 6f 6e 73 20 69 66 20 70 6f 73 73  ocations if poss
1baf0 69 62 6c 65 2e 0a 2a 2a 20 53 51 4c 69 74 65 20  ible..** SQLite 
1bb00 77 69 6c 6c 20 72 75 6e 20 66 61 73 74 65 72 20  will run faster 
1bb10 69 66 20 69 74 20 69 73 20 66 72 65 65 20 74 6f  if it is free to
1bb20 20 6d 61 6b 65 20 6c 61 72 67 65 20 6d 65 6d 6f   make large memo
1bb30 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2c 0a  ry allocations,.
1bb40 2a 2a 20 62 75 74 20 73 6f 6d 65 20 61 70 70 6c  ** but some appl
1bb50 69 63 61 74 69 6f 6e 20 6d 69 67 68 74 20 70 72  ication might pr
1bb60 65 66 65 72 20 74 6f 20 72 75 6e 20 73 6c 6f 77  efer to run slow
1bb70 65 72 20 69 6e 20 65 78 63 68 61 6e 67 65 20 66  er in exchange f
1bb80 6f 72 0a 2a 2a 20 67 75 61 72 61 6e 74 65 65 73  or.** guarantees
1bb90 20 61 62 6f 75 74 20 6d 65 6d 6f 72 79 20 66 72   about memory fr
1bba0 61 67 6d 65 6e 74 61 74 69 6f 6e 20 74 68 61 74  agmentation that
1bbb0 20 61 72 65 20 70 6f 73 73 69 62 6c 65 20 69 66   are possible if
1bbc0 20 6c 61 72 67 65 0a 2a 2a 20 61 6c 6c 6f 63 61   large.** alloca
1bbd0 74 69 6f 6e 73 20 61 72 65 20 61 76 6f 69 64 65  tions are avoide
1bbe0 64 2e 20 20 54 68 69 73 20 68 69 6e 74 20 69 73  d.  This hint is
1bbf0 20 6e 6f 72 6d 61 6c 6c 79 20 6f 66 66 2e 0a 2a   normally off..*
1bc00 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b  * </dd>.**.** [[
1bc10 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45  SQLITE_CONFIG_ME
1bc20 4d 53 54 41 54 55 53 5d 5d 20 3c 64 74 3e 53 51  MSTATUS]] <dt>SQ
1bc30 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d 53  LITE_CONFIG_MEMS
1bc40 54 41 54 55 53 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  TATUS</dt>.** <d
1bc50 64 3e 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43  d> ^The SQLITE_C
1bc60 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20  ONFIG_MEMSTATUS 
1bc70 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 73 69 6e  option takes sin
1bc80 67 6c 65 20 61 72 67 75 6d 65 6e 74 20 6f 66 20  gle argument of 
1bc90 74 79 70 65 20 69 6e 74 2c 0a 2a 2a 20 69 6e 74  type int,.** int
1bca0 65 72 70 72 65 74 65 64 20 61 73 20 61 20 62 6f  erpreted as a bo
1bcb0 6f 6c 65 61 6e 2c 20 77 68 69 63 68 20 65 6e 61  olean, which ena
1bcc0 62 6c 65 73 20 6f 72 20 64 69 73 61 62 6c 65 73  bles or disables
1bcd0 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20   the collection 
1bce0 6f 66 0a 2a 2a 20 6d 65 6d 6f 72 79 20 61 6c 6c  of.** memory all
1bcf0 6f 63 61 74 69 6f 6e 20 73 74 61 74 69 73 74 69  ocation statisti
1bd00 63 73 2e 20 5e 28 57 68 65 6e 20 6d 65 6d 6f 72  cs. ^(When memor
1bd10 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74 61  y allocation sta
1bd20 74 69 73 74 69 63 73 20 61 72 65 0a 2a 2a 20 64  tistics are.** d
1bd30 69 73 61 62 6c 65 64 2c 20 74 68 65 20 66 6f 6c  isabled, the fol
1bd40 6c 6f 77 69 6e 67 20 53 51 4c 69 74 65 20 69 6e  lowing SQLite in
1bd50 74 65 72 66 61 63 65 73 20 62 65 63 6f 6d 65 20  terfaces become 
1bd60 6e 6f 6e 2d 6f 70 65 72 61 74 69 6f 6e 61 6c 3a  non-operational:
1bd70 0a 2a 2a 20 20 20 3c 75 6c 3e 0a 2a 2a 20 20 20  .**   <ul>.**   
1bd80 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 6d 65  <li> [sqlite3_me
1bd90 6d 6f 72 79 5f 75 73 65 64 28 29 5d 0a 2a 2a 20  mory_used()].** 
1bda0 20 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f    <li> [sqlite3_
1bdb0 6d 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72  memory_highwater
1bdc0 28 29 5d 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5b 73  ()].**   <li> [s
1bdd0 71 6c 69 74 65 33 5f 73 6f 66 74 5f 68 65 61 70  qlite3_soft_heap
1bde0 5f 6c 69 6d 69 74 36 34 28 29 5d 0a 2a 2a 20 20  _limit64()].**  
1bdf0 20 3c 6c 69 3e 20 5b 73 71 6c 69 74 65 33 5f 73   <li> [sqlite3_s
1be00 74 61 74 75 73 36 34 28 29 5d 0a 2a 2a 20 20 20  tatus64()].**   
1be10 3c 2f 75 6c 3e 29 5e 0a 2a 2a 20 5e 4d 65 6d 6f  </ul>)^.** ^Memo
1be20 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 74  ry allocation st
1be30 61 74 69 73 74 69 63 73 20 61 72 65 20 65 6e 61  atistics are ena
1be40 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 20  bled by default 
1be50 75 6e 6c 65 73 73 20 53 51 4c 69 74 65 20 69 73  unless SQLite is
1be60 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  .** compiled wit
1be70 68 20 5b 53 51 4c 49 54 45 5f 44 45 46 41 55 4c  h [SQLITE_DEFAUL
1be80 54 5f 4d 45 4d 53 54 41 54 55 53 5d 3d 30 20 69  T_MEMSTATUS]=0 i
1be90 6e 20 77 68 69 63 68 20 63 61 73 65 20 6d 65 6d  n which case mem
1bea0 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f  ory.** allocatio
1beb0 6e 20 73 74 61 74 69 73 74 69 63 73 20 61 72 65  n statistics are
1bec0 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
1bed0 61 75 6c 74 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a  ault..** </dd>.*
1bee0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f  *.** [[SQLITE_CO
1bef0 4e 46 49 47 5f 53 43 52 41 54 43 48 5d 5d 20 3c  NFIG_SCRATCH]] <
1bf00 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  dt>SQLITE_CONFIG
1bf10 5f 53 43 52 41 54 43 48 3c 2f 64 74 3e 0a 2a 2a  _SCRATCH</dt>.**
1bf20 20 3c 64 64 3e 20 54 68 65 20 53 51 4c 49 54 45   <dd> The SQLITE
1bf30 5f 43 4f 4e 46 49 47 5f 53 43 52 41 54 43 48 20  _CONFIG_SCRATCH 
1bf40 6f 70 74 69 6f 6e 20 69 73 20 6e 6f 20 6c 6f 6e  option is no lon
1bf50 67 65 72 20 75 73 65 64 2e 0a 2a 2a 20 3c 2f 64  ger used..** </d
1bf60 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
1bf70 45 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43  E_CONFIG_PAGECAC
1bf80 48 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  HE]] <dt>SQLITE_
1bf90 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48 45  CONFIG_PAGECACHE
1bfa0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54  </dt>.** <dd> ^T
1bfb0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1bfc0 5f 50 41 47 45 43 41 43 48 45 20 6f 70 74 69 6f  _PAGECACHE optio
1bfd0 6e 20 73 70 65 63 69 66 69 65 73 20 61 20 6d 65  n specifies a me
1bfe0 6d 6f 72 79 20 70 6f 6f 6c 0a 2a 2a 20 74 68 61  mory pool.** tha
1bff0 74 20 53 51 4c 69 74 65 20 63 61 6e 20 75 73 65  t SQLite can use
1c000 20 66 6f 72 20 74 68 65 20 64 61 74 61 62 61 73   for the databas
1c010 65 20 70 61 67 65 20 63 61 63 68 65 20 77 69 74  e page cache wit
1c020 68 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 61  h the default pa
1c030 67 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70 6c  ge.** cache impl
1c040 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 0a 2a 2a  ementation.  .**
1c050 20 54 68 69 73 20 63 6f 6e 66 69 67 75 72 61 74   This configurat
1c060 69 6f 6e 20 6f 70 74 69 6f 6e 20 69 73 20 61 20  ion option is a 
1c070 6e 6f 2d 6f 70 20 69 66 20 61 6e 20 61 70 70 6c  no-op if an appl
1c080 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65 20 70  ication-define p
1c090 61 67 65 0a 2a 2a 20 63 61 63 68 65 20 69 6d 70  age.** cache imp
1c0a0 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6c  lementation is l
1c0b0 6f 61 64 65 64 20 75 73 69 6e 67 20 74 68 65 20  oaded using the 
1c0c0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50  [SQLITE_CONFIG_P
1c0d0 43 41 43 48 45 32 5d 2e 0a 2a 2a 20 5e 54 68 65  CACHE2]..** ^The
1c0e0 72 65 20 61 72 65 20 74 68 72 65 65 20 61 72 67  re are three arg
1c0f0 75 6d 65 6e 74 73 20 74 6f 20 53 51 4c 49 54 45  uments to SQLITE
1c100 5f 43 4f 4e 46 49 47 5f 50 41 47 45 43 41 43 48  _CONFIG_PAGECACH
1c110 45 3a 20 41 20 70 6f 69 6e 74 65 72 20 74 6f 0a  E: A pointer to.
1c120 2a 2a 20 38 2d 62 79 74 65 20 61 6c 69 67 6e 65  ** 8-byte aligne
1c130 64 20 6d 65 6d 6f 72 79 20 28 70 4d 65 6d 29 2c  d memory (pMem),
1c140 20 74 68 65 20 73 69 7a 65 20 6f 66 20 65 61 63   the size of eac
1c150 68 20 70 61 67 65 20 63 61 63 68 65 20 6c 69 6e  h page cache lin
1c160 65 20 28 73 7a 29 2c 0a 2a 2a 20 61 6e 64 20 74  e (sz),.** and t
1c170 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 61 63  he number of cac
1c180 68 65 20 6c 69 6e 65 73 20 28 4e 29 2e 0a 2a 2a  he lines (N)..**
1c190 20 54 68 65 20 73 7a 20 61 72 67 75 6d 65 6e 74   The sz argument
1c1a0 20 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 73   should be the s
1c1b0 69 7a 65 20 6f 66 20 74 68 65 20 6c 61 72 67 65  ize of the large
1c1c0 73 74 20 64 61 74 61 62 61 73 65 20 70 61 67 65  st database page
1c1d0 0a 2a 2a 20 28 61 20 70 6f 77 65 72 20 6f 66 20  .** (a power of 
1c1e0 74 77 6f 20 62 65 74 77 65 65 6e 20 35 31 32 20  two between 512 
1c1f0 61 6e 64 20 36 35 35 33 36 29 20 70 6c 75 73 20  and 65536) plus 
1c200 73 6f 6d 65 20 65 78 74 72 61 20 62 79 74 65 73  some extra bytes
1c210 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 70 61 67   for each.** pag
1c220 65 20 68 65 61 64 65 72 2e 20 20 5e 54 68 65 20  e header.  ^The 
1c230 6e 75 6d 62 65 72 20 6f 66 20 65 78 74 72 61 20  number of extra 
1c240 62 79 74 65 73 20 6e 65 65 64 65 64 20 62 79 20  bytes needed by 
1c250 74 68 65 20 70 61 67 65 20 68 65 61 64 65 72 0a  the page header.
1c260 2a 2a 20 63 61 6e 20 62 65 20 64 65 74 65 72 6d  ** can be determ
1c270 69 6e 65 64 20 75 73 69 6e 67 20 5b 53 51 4c 49  ined using [SQLI
1c280 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1c290 5f 48 44 52 53 5a 5d 2e 0a 2a 2a 20 5e 49 74 20  _HDRSZ]..** ^It 
1c2a0 69 73 20 68 61 72 6d 6c 65 73 73 2c 20 61 70 61  is harmless, apa
1c2b0 72 74 20 66 72 6f 6d 20 74 68 65 20 77 61 73 74  rt from the wast
1c2c0 65 64 20 6d 65 6d 6f 72 79 2c 0a 2a 2a 20 66 6f  ed memory,.** fo
1c2d0 72 20 74 68 65 20 73 7a 20 70 61 72 61 6d 65 74  r the sz paramet
1c2e0 65 72 20 74 6f 20 62 65 20 6c 61 72 67 65 72 20  er to be larger 
1c2f0 74 68 61 6e 20 6e 65 63 65 73 73 61 72 79 2e 20  than necessary. 
1c300 20 54 68 65 20 70 4d 65 6d 0a 2a 2a 20 61 72 67   The pMem.** arg
1c310 75 6d 65 6e 74 20 6d 75 73 74 20 62 65 20 65 69  ument must be ei
1c320 74 68 65 72 20 61 20 4e 55 4c 4c 20 70 6f 69 6e  ther a NULL poin
1c330 74 65 72 20 6f 72 20 61 20 70 6f 69 6e 74 65 72  ter or a pointer
1c340 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 0a 2a 2a   to an 8-byte.**
1c350 20 61 6c 69 67 6e 65 64 20 62 6c 6f 63 6b 20 6f   aligned block o
1c360 66 20 6d 65 6d 6f 72 79 20 6f 66 20 61 74 20 6c  f memory of at l
1c370 65 61 73 74 20 73 7a 2a 4e 20 62 79 74 65 73 2c  east sz*N bytes,
1c380 20 6f 74 68 65 72 77 69 73 65 0a 2a 2a 20 73 75   otherwise.** su
1c390 62 73 65 71 75 65 6e 74 20 62 65 68 61 76 69 6f  bsequent behavio
1c3a0 72 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a  r is undefined..
1c3b0 2a 2a 20 5e 57 68 65 6e 20 70 4d 65 6d 20 69 73  ** ^When pMem is
1c3c0 20 6e 6f 74 20 4e 55 4c 4c 2c 20 53 51 4c 69 74   not NULL, SQLit
1c3d0 65 20 77 69 6c 6c 20 73 74 72 69 76 65 20 74 6f  e will strive to
1c3e0 20 75 73 65 20 74 68 65 20 6d 65 6d 6f 72 79 20   use the memory 
1c3f0 70 72 6f 76 69 64 65 64 0a 2a 2a 20 74 6f 20 73  provided.** to s
1c400 61 74 69 73 66 79 20 70 61 67 65 20 63 61 63 68  atisfy page cach
1c410 65 20 6e 65 65 64 73 2c 20 66 61 6c 6c 69 6e 67  e needs, falling
1c420 20 62 61 63 6b 20 74 6f 20 5b 73 71 6c 69 74 65   back to [sqlite
1c430 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20 69 66 0a 2a  3_malloc()] if.*
1c440 2a 20 61 20 70 61 67 65 20 63 61 63 68 65 20 6c  * a page cache l
1c450 69 6e 65 20 69 73 20 6c 61 72 67 65 72 20 74 68  ine is larger th
1c460 61 6e 20 73 7a 20 62 79 74 65 73 20 6f 72 20 69  an sz bytes or i
1c470 66 20 61 6c 6c 20 6f 66 20 74 68 65 20 70 4d 65  f all of the pMe
1c480 6d 20 62 75 66 66 65 72 0a 2a 2a 20 69 73 20 65  m buffer.** is e
1c490 78 68 61 75 73 74 65 64 2e 0a 2a 2a 20 5e 49 66  xhausted..** ^If
1c4a0 20 70 4d 65 6d 20 69 73 20 4e 55 4c 4c 20 61 6e   pMem is NULL an
1c4b0 64 20 4e 20 69 73 20 6e 6f 6e 2d 7a 65 72 6f 2c  d N is non-zero,
1c4c0 20 74 68 65 6e 20 65 61 63 68 20 64 61 74 61 62   then each datab
1c4d0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a  ase connection.*
1c4e0 2a 20 64 6f 65 73 20 61 6e 20 69 6e 69 74 69 61  * does an initia
1c4f0 6c 20 62 75 6c 6b 20 61 6c 6c 6f 63 61 74 69 6f  l bulk allocatio
1c500 6e 20 66 6f 72 20 70 61 67 65 20 63 61 63 68 65  n for page cache
1c510 20 6d 65 6d 6f 72 79 0a 2a 2a 20 66 72 6f 6d 20   memory.** from 
1c520 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28  [sqlite3_malloc(
1c530 29 5d 20 73 75 66 66 69 63 69 65 6e 74 20 66 6f  )] sufficient fo
1c540 72 20 4e 20 63 61 63 68 65 20 6c 69 6e 65 73 20  r N cache lines 
1c550 69 66 20 4e 20 69 73 20 70 6f 73 69 74 69 76 65  if N is positive
1c560 20 6f 72 0a 2a 2a 20 6f 66 20 2d 31 30 32 34 2a   or.** of -1024*
1c570 4e 20 62 79 74 65 73 20 69 66 20 4e 20 69 73 20  N bytes if N is 
1c580 6e 65 67 61 74 69 76 65 2c 20 2e 20 5e 49 66 20  negative, . ^If 
1c590 61 64 64 69 74 69 6f 6e 61 6c 0a 2a 2a 20 70 61  additional.** pa
1c5a0 67 65 20 63 61 63 68 65 20 6d 65 6d 6f 72 79 20  ge cache memory 
1c5b0 69 73 20 6e 65 65 64 65 64 20 62 65 79 6f 6e 64  is needed beyond
1c5c0 20 77 68 61 74 20 69 73 20 70 72 6f 76 69 64 65   what is provide
1c5d0 64 20 62 79 20 74 68 65 20 69 6e 69 74 69 61 6c  d by the initial
1c5e0 0a 2a 2a 20 61 6c 6c 6f 63 61 74 69 6f 6e 2c 20  .** allocation, 
1c5f0 74 68 65 6e 20 53 51 4c 69 74 65 20 67 6f 65 73  then SQLite goes
1c600 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c   to [sqlite3_mal
1c610 6c 6f 63 28 29 5d 20 73 65 70 61 72 61 74 65 6c  loc()] separatel
1c620 79 20 66 6f 72 20 65 61 63 68 0a 2a 2a 20 61 64  y for each.** ad
1c630 64 69 74 69 6f 6e 61 6c 20 63 61 63 68 65 20 6c  ditional cache l
1c640 69 6e 65 2e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ine. </dd>.**.**
1c650 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1c660 5f 48 45 41 50 5d 5d 20 3c 64 74 3e 53 51 4c 49  _HEAP]] <dt>SQLI
1c670 54 45 5f 43 4f 4e 46 49 47 5f 48 45 41 50 3c 2f  TE_CONFIG_HEAP</
1c680 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 65  dt>.** <dd> ^The
1c690 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48   SQLITE_CONFIG_H
1c6a0 45 41 50 20 6f 70 74 69 6f 6e 20 73 70 65 63 69  EAP option speci
1c6b0 66 69 65 73 20 61 20 73 74 61 74 69 63 20 6d 65  fies a static me
1c6c0 6d 6f 72 79 20 62 75 66 66 65 72 20 0a 2a 2a 20  mory buffer .** 
1c6d0 74 68 61 74 20 53 51 4c 69 74 65 20 77 69 6c 6c  that SQLite will
1c6e0 20 75 73 65 20 66 6f 72 20 61 6c 6c 20 6f 66 20   use for all of 
1c6f0 69 74 73 20 64 79 6e 61 6d 69 63 20 6d 65 6d 6f  its dynamic memo
1c700 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 6e 65  ry allocation ne
1c710 65 64 73 0a 2a 2a 20 62 65 79 6f 6e 64 20 74 68  eds.** beyond th
1c720 6f 73 65 20 70 72 6f 76 69 64 65 64 20 66 6f 72  ose provided for
1c730 20 62 79 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46   by [SQLITE_CONF
1c740 49 47 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a  IG_PAGECACHE]..*
1c750 2a 20 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  * ^The SQLITE_CO
1c760 4e 46 49 47 5f 48 45 41 50 20 6f 70 74 69 6f 6e  NFIG_HEAP option
1c770 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62   is only availab
1c780 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69 73 20  le if SQLite is 
1c790 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 77 69 74 68  compiled.** with
1c7a0 20 65 69 74 68 65 72 20 5b 53 51 4c 49 54 45 5f   either [SQLITE_
1c7b0 45 4e 41 42 4c 45 5f 4d 45 4d 53 59 53 33 5d 20  ENABLE_MEMSYS3] 
1c7c0 6f 72 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  or [SQLITE_ENABL
1c7d0 45 5f 4d 45 4d 53 59 53 35 5d 20 61 6e 64 20 72  E_MEMSYS5] and r
1c7e0 65 74 75 72 6e 73 0a 2a 2a 20 5b 53 51 4c 49 54  eturns.** [SQLIT
1c7f0 45 5f 45 52 52 4f 52 5d 20 69 66 20 69 6e 76 6f  E_ERROR] if invo
1c800 6b 65 64 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a  ked otherwise..*
1c810 2a 20 5e 54 68 65 72 65 20 61 72 65 20 74 68 72  * ^There are thr
1c820 65 65 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20  ee arguments to 
1c830 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48 45  SQLITE_CONFIG_HE
1c840 41 50 3a 0a 2a 2a 20 41 6e 20 38 2d 62 79 74 65  AP:.** An 8-byte
1c850 20 61 6c 69 67 6e 65 64 20 70 6f 69 6e 74 65 72   aligned pointer
1c860 20 74 6f 20 74 68 65 20 6d 65 6d 6f 72 79 2c 0a   to the memory,.
1c870 2a 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ** the number of
1c880 20 62 79 74 65 73 20 69 6e 20 74 68 65 20 6d 65   bytes in the me
1c890 6d 6f 72 79 20 62 75 66 66 65 72 2c 20 61 6e 64  mory buffer, and
1c8a0 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61 6c 6c   the minimum all
1c8b0 6f 63 61 74 69 6f 6e 20 73 69 7a 65 2e 0a 2a 2a  ocation size..**
1c8c0 20 5e 49 66 20 74 68 65 20 66 69 72 73 74 20 70   ^If the first p
1c8d0 6f 69 6e 74 65 72 20 28 74 68 65 20 6d 65 6d 6f  ointer (the memo
1c8e0 72 79 20 70 6f 69 6e 74 65 72 29 20 69 73 20 4e  ry pointer) is N
1c8f0 55 4c 4c 2c 20 74 68 65 6e 20 53 51 4c 69 74 65  ULL, then SQLite
1c900 20 72 65 76 65 72 74 73 0a 2a 2a 20 74 6f 20 75   reverts.** to u
1c910 73 69 6e 67 20 69 74 73 20 64 65 66 61 75 6c 74  sing its default
1c920 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
1c930 72 20 28 74 68 65 20 73 79 73 74 65 6d 20 6d 61  r (the system ma
1c940 6c 6c 6f 63 28 29 20 69 6d 70 6c 65 6d 65 6e 74  lloc() implement
1c950 61 74 69 6f 6e 29 2c 0a 2a 2a 20 75 6e 64 6f 69  ation),.** undoi
1c960 6e 67 20 61 6e 79 20 70 72 69 6f 72 20 69 6e 76  ng any prior inv
1c970 6f 63 61 74 69 6f 6e 20 6f 66 20 5b 53 51 4c 49  ocation of [SQLI
1c980 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c 4c 4f 43  TE_CONFIG_MALLOC
1c990 5d 2e 20 20 5e 49 66 20 74 68 65 0a 2a 2a 20 6d  ].  ^If the.** m
1c9a0 65 6d 6f 72 79 20 70 6f 69 6e 74 65 72 20 69 73  emory pointer is
1c9b0 20 6e 6f 74 20 4e 55 4c 4c 20 74 68 65 6e 20 74   not NULL then t
1c9c0 68 65 20 61 6c 74 65 72 6e 61 74 69 76 65 20 6d  he alternative m
1c9d0 65 6d 6f 72 79 0a 2a 2a 20 61 6c 6c 6f 63 61 74  emory.** allocat
1c9e0 6f 72 20 69 73 20 65 6e 67 61 67 65 64 20 74 6f  or is engaged to
1c9f0 20 68 61 6e 64 6c 65 20 61 6c 6c 20 6f 66 20 53   handle all of S
1ca00 51 4c 69 74 65 73 20 6d 65 6d 6f 72 79 20 61 6c  QLites memory al
1ca10 6c 6f 63 61 74 69 6f 6e 20 6e 65 65 64 73 2e 0a  location needs..
1ca20 2a 2a 20 54 68 65 20 66 69 72 73 74 20 70 6f 69  ** The first poi
1ca30 6e 74 65 72 20 28 74 68 65 20 6d 65 6d 6f 72 79  nter (the memory
1ca40 20 70 6f 69 6e 74 65 72 29 20 6d 75 73 74 20 62   pointer) must b
1ca50 65 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 6e 20  e aligned to an 
1ca60 38 2d 62 79 74 65 0a 2a 2a 20 62 6f 75 6e 64 61  8-byte.** bounda
1ca70 72 79 20 6f 72 20 73 75 62 73 65 71 75 65 6e 74  ry or subsequent
1ca80 20 62 65 68 61 76 69 6f 72 20 6f 66 20 53 51 4c   behavior of SQL
1ca90 69 74 65 20 77 69 6c 6c 20 62 65 20 75 6e 64 65  ite will be unde
1caa0 66 69 6e 65 64 2e 0a 2a 2a 20 54 68 65 20 6d 69  fined..** The mi
1cab0 6e 69 6d 75 6d 20 61 6c 6c 6f 63 61 74 69 6f 6e  nimum allocation
1cac0 20 73 69 7a 65 20 69 73 20 63 61 70 70 65 64 20   size is capped 
1cad0 61 74 20 32 2a 2a 31 32 2e 20 52 65 61 73 6f 6e  at 2**12. Reason
1cae0 61 62 6c 65 20 76 61 6c 75 65 73 0a 2a 2a 20 66  able values.** f
1caf0 6f 72 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 61  or the minimum a
1cb00 6c 6c 6f 63 61 74 69 6f 6e 20 73 69 7a 65 20 61  llocation size a
1cb10 72 65 20 32 2a 2a 35 20 74 68 72 6f 75 67 68 20  re 2**5 through 
1cb20 32 2a 2a 38 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  2**8.</dd>.**.**
1cb30 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1cb40 5f 4d 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c  _MUTEX]] <dt>SQL
1cb50 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
1cb60 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28  </dt>.** <dd> ^(
1cb70 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1cb80 47 5f 4d 55 54 45 58 20 6f 70 74 69 6f 6e 20 74  G_MUTEX option t
1cb90 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72  akes a single ar
1cba0 67 75 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20  gument which is 
1cbb0 61 0a 2a 2a 20 70 6f 69 6e 74 65 72 20 74 6f 20  a.** pointer to 
1cbc0 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 74  an instance of t
1cbd0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  he [sqlite3_mute
1cbe0 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63  x_methods] struc
1cbf0 74 75 72 65 2e 0a 2a 2a 20 54 68 65 20 61 72 67  ture..** The arg
1cc00 75 6d 65 6e 74 20 73 70 65 63 69 66 69 65 73 20  ument specifies 
1cc10 61 6c 74 65 72 6e 61 74 69 76 65 20 6c 6f 77 2d  alternative low-
1cc20 6c 65 76 65 6c 20 6d 75 74 65 78 20 72 6f 75 74  level mutex rout
1cc30 69 6e 65 73 20 74 6f 20 62 65 20 75 73 65 64 0a  ines to be used.
1cc40 2a 2a 20 69 6e 20 70 6c 61 63 65 20 74 68 65 20  ** in place the 
1cc50 6d 75 74 65 78 20 72 6f 75 74 69 6e 65 73 20 62  mutex routines b
1cc60 75 69 6c 74 20 69 6e 74 6f 20 53 51 4c 69 74 65  uilt into SQLite
1cc70 2e 29 5e 20 20 5e 53 51 4c 69 74 65 20 6d 61 6b  .)^  ^SQLite mak
1cc80 65 73 20 61 20 63 6f 70 79 20 6f 66 0a 2a 2a 20  es a copy of.** 
1cc90 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20 74  the content of t
1cca0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  he [sqlite3_mute
1ccb0 78 5f 6d 65 74 68 6f 64 73 5d 20 73 74 72 75 63  x_methods] struc
1ccc0 74 75 72 65 20 62 65 66 6f 72 65 20 74 68 65 20  ture before the 
1ccd0 63 61 6c 6c 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69  call to.** [sqli
1cce0 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20 72 65  te3_config()] re
1ccf0 74 75 72 6e 73 2e 20 5e 49 66 20 53 51 4c 69 74  turns. ^If SQLit
1cd00 65 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  e is compiled wi
1cd10 74 68 0a 2a 2a 20 74 68 65 20 5b 53 51 4c 49 54  th.** the [SQLIT
1cd20 45 5f 54 48 52 45 41 44 53 41 46 45 20 7c 20 53  E_THREADSAFE | S
1cd30 51 4c 49 54 45 5f 54 48 52 45 41 44 53 41 46 45  QLITE_THREADSAFE
1cd40 3d 30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65  =0] compile-time
1cd50 20 6f 70 74 69 6f 6e 20 74 68 65 6e 0a 2a 2a 20   option then.** 
1cd60 74 68 65 20 65 6e 74 69 72 65 20 6d 75 74 65 78  the entire mutex
1cd70 69 6e 67 20 73 75 62 73 79 73 74 65 6d 20 69 73  ing subsystem is
1cd80 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68   omitted from th
1cd90 65 20 62 75 69 6c 64 20 61 6e 64 20 68 65 6e 63  e build and henc
1cda0 65 20 63 61 6c 6c 73 20 74 6f 0a 2a 2a 20 5b 73  e calls to.** [s
1cdb0 71 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d  qlite3_config()]
1cdc0 20 77 69 74 68 20 74 68 65 20 53 51 4c 49 54 45   with the SQLITE
1cdd0 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58 20 63 6f  _CONFIG_MUTEX co
1cde0 6e 66 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69  nfiguration opti
1cdf0 6f 6e 20 77 69 6c 6c 0a 2a 2a 20 72 65 74 75 72  on will.** retur
1ce00 6e 20 5b 53 51 4c 49 54 45 5f 45 52 52 4f 52 5d  n [SQLITE_ERROR]
1ce10 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  .</dd>.**.** [[S
1ce20 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54  QLITE_CONFIG_GET
1ce30 4d 55 54 45 58 5d 5d 20 3c 64 74 3e 53 51 4c 49  MUTEX]] <dt>SQLI
1ce40 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 4d 55 54  TE_CONFIG_GETMUT
1ce50 45 58 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  EX</dt>.** <dd> 
1ce60 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e  ^(The SQLITE_CON
1ce70 46 49 47 5f 47 45 54 4d 55 54 45 58 20 6f 70 74  FIG_GETMUTEX opt
1ce80 69 6f 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67  ion takes a sing
1ce90 6c 65 20 61 72 67 75 6d 65 6e 74 20 77 68 69 63  le argument whic
1cea0 68 0a 2a 2a 20 69 73 20 61 20 70 6f 69 6e 74 65  h.** is a pointe
1ceb0 72 20 74 6f 20 61 6e 20 69 6e 73 74 61 6e 63 65  r to an instance
1cec0 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33   of the [sqlite3
1ced0 5f 6d 75 74 65 78 5f 6d 65 74 68 6f 64 73 5d 20  _mutex_methods] 
1cee0 73 74 72 75 63 74 75 72 65 2e 20 20 54 68 65 0a  structure.  The.
1cef0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 75 74 65  ** [sqlite3_mute
1cf00 78 5f 6d 65 74 68 6f 64 73 5d 0a 2a 2a 20 73 74  x_methods].** st
1cf10 72 75 63 74 75 72 65 20 69 73 20 66 69 6c 6c 65  ructure is fille
1cf20 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65  d with the curre
1cf30 6e 74 6c 79 20 64 65 66 69 6e 65 64 20 6d 75 74  ntly defined mut
1cf40 65 78 20 72 6f 75 74 69 6e 65 73 2e 29 5e 0a 2a  ex routines.)^.*
1cf50 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 63 61  * This option ca
1cf60 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6f 76 65  n be used to ove
1cf70 72 6c 6f 61 64 20 74 68 65 20 64 65 66 61 75 6c  rload the defaul
1cf80 74 20 6d 75 74 65 78 20 61 6c 6c 6f 63 61 74 69  t mutex allocati
1cf90 6f 6e 0a 2a 2a 20 72 6f 75 74 69 6e 65 73 20 77  on.** routines w
1cfa0 69 74 68 20 61 20 77 72 61 70 70 65 72 20 75 73  ith a wrapper us
1cfb0 65 64 20 74 6f 20 74 72 61 63 6b 20 6d 75 74 65  ed to track mute
1cfc0 78 20 75 73 61 67 65 20 66 6f 72 20 70 65 72 66  x usage for perf
1cfd0 6f 72 6d 61 6e 63 65 0a 2a 2a 20 70 72 6f 66 69  ormance.** profi
1cfe0 6c 69 6e 67 20 6f 72 20 74 65 73 74 69 6e 67 2c  ling or testing,
1cff0 20 66 6f 72 20 65 78 61 6d 70 6c 65 2e 20 20 20   for example.   
1d000 5e 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f  ^If SQLite is co
1d010 6d 70 69 6c 65 64 20 77 69 74 68 0a 2a 2a 20 74  mpiled with.** t
1d020 68 65 20 5b 53 51 4c 49 54 45 5f 54 48 52 45 41  he [SQLITE_THREA
1d030 44 53 41 46 45 20 7c 20 53 51 4c 49 54 45 5f 54  DSAFE | SQLITE_T
1d040 48 52 45 41 44 53 41 46 45 3d 30 5d 20 63 6f 6d  HREADSAFE=0] com
1d050 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e  pile-time option
1d060 20 74 68 65 6e 0a 2a 2a 20 74 68 65 20 65 6e 74   then.** the ent
1d070 69 72 65 20 6d 75 74 65 78 69 6e 67 20 73 75 62  ire mutexing sub
1d080 73 79 73 74 65 6d 20 69 73 20 6f 6d 69 74 74 65  system is omitte
1d090 64 20 66 72 6f 6d 20 74 68 65 20 62 75 69 6c 64  d from the build
1d0a0 20 61 6e 64 20 68 65 6e 63 65 20 63 61 6c 6c 73   and hence calls
1d0b0 20 74 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f   to.** [sqlite3_
1d0c0 63 6f 6e 66 69 67 28 29 5d 20 77 69 74 68 20 74  config()] with t
1d0d0 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  he SQLITE_CONFIG
1d0e0 5f 47 45 54 4d 55 54 45 58 20 63 6f 6e 66 69 67  _GETMUTEX config
1d0f0 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 77  uration option w
1d100 69 6c 6c 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53  ill.** return [S
1d110 51 4c 49 54 45 5f 45 52 52 4f 52 5d 2e 3c 2f 64  QLITE_ERROR].</d
1d120 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
1d130 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  E_CONFIG_LOOKASI
1d140 44 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  DE]] <dt>SQLITE_
1d150 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
1d160 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28  </dt>.** <dd> ^(
1d170 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1d180 47 5f 4c 4f 4f 4b 41 53 49 44 45 20 6f 70 74 69  G_LOOKASIDE opti
1d190 6f 6e 20 74 61 6b 65 73 20 74 77 6f 20 61 72 67  on takes two arg
1d1a0 75 6d 65 6e 74 73 20 74 68 61 74 20 64 65 74 65  uments that dete
1d1b0 72 6d 69 6e 65 0a 2a 2a 20 74 68 65 20 64 65 66  rmine.** the def
1d1c0 61 75 6c 74 20 73 69 7a 65 20 6f 66 20 6c 6f 6f  ault size of loo
1d1d0 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20 6f 6e  kaside memory on
1d1e0 20 65 61 63 68 20 5b 64 61 74 61 62 61 73 65 20   each [database 
1d1f0 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a 2a 2a 20  connection]..** 
1d200 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d 65  The first argume
1d210 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 73 69 7a  nt is the.** siz
1d220 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b 61 73  e of each lookas
1d230 69 64 65 20 62 75 66 66 65 72 20 73 6c 6f 74 20  ide buffer slot 
1d240 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 20 69  and the second i
1d250 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a  s the number of.
1d260 2a 2a 20 73 6c 6f 74 73 20 61 6c 6c 6f 63 61 74  ** slots allocat
1d270 65 64 20 74 6f 20 65 61 63 68 20 64 61 74 61 62  ed to each datab
1d280 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 29  ase connection.)
1d290 5e 20 20 5e 28 53 51 4c 49 54 45 5f 43 4f 4e 46  ^  ^(SQLITE_CONF
1d2a0 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 0a 2a 2a 20  IG_LOOKASIDE.** 
1d2b0 73 65 74 73 20 74 68 65 20 3c 69 3e 64 65 66 61  sets the <i>defa
1d2c0 75 6c 74 3c 2f 69 3e 20 6c 6f 6f 6b 61 73 69 64  ult</i> lookasid
1d2d0 65 20 73 69 7a 65 2e 20 54 68 65 20 5b 53 51 4c  e size. The [SQL
1d2e0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f  ITE_DBCONFIG_LOO
1d2f0 4b 41 53 49 44 45 5d 0a 2a 2a 20 6f 70 74 69 6f  KASIDE].** optio
1d300 6e 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 64 62  n to [sqlite3_db
1d310 5f 63 6f 6e 66 69 67 28 29 5d 20 63 61 6e 20 62  _config()] can b
1d320 65 20 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65  e used to change
1d330 20 74 68 65 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a   the lookaside.*
1d340 2a 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  * configuration 
1d350 6f 6e 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f  on individual co
1d360 6e 6e 65 63 74 69 6f 6e 73 2e 29 5e 20 3c 2f 64  nnections.)^ </d
1d370 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  d>.**.** [[SQLIT
1d380 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 32  E_CONFIG_PCACHE2
1d390 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1d3a0 4e 46 49 47 5f 50 43 41 43 48 45 32 3c 2f 64 74  NFIG_PCACHE2</dt
1d3b0 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20  >.** <dd> ^(The 
1d3c0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1d3d0 41 43 48 45 32 20 6f 70 74 69 6f 6e 20 74 61 6b  ACHE2 option tak
1d3e0 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
1d3f0 6d 65 6e 74 20 77 68 69 63 68 20 69 73 20 0a 2a  ment which is .*
1d400 2a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  * a pointer to a
1d410 6e 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68  n [sqlite3_pcach
1d420 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65  e_methods2] obje
1d430 63 74 2e 20 20 54 68 69 73 20 6f 62 6a 65 63 74  ct.  This object
1d440 20 73 70 65 63 69 66 69 65 73 0a 2a 2a 20 74 68   specifies.** th
1d450 65 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 61  e interface to a
1d460 20 63 75 73 74 6f 6d 20 70 61 67 65 20 63 61 63   custom page cac
1d470 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f  he implementatio
1d480 6e 2e 29 5e 0a 2a 2a 20 5e 53 51 4c 69 74 65 20  n.)^.** ^SQLite 
1d490 6d 61 6b 65 73 20 61 20 63 6f 70 79 20 6f 66 20  makes a copy of 
1d4a0 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 70 63 61  the [sqlite3_pca
1d4b0 63 68 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62  che_methods2] ob
1d4c0 6a 65 63 74 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ject.</dd>.**.**
1d4d0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1d4e0 5f 47 45 54 50 43 41 43 48 45 32 5d 5d 20 3c 64  _GETPCACHE2]] <d
1d4f0 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  t>SQLITE_CONFIG_
1d500 47 45 54 50 43 41 43 48 45 32 3c 2f 64 74 3e 0a  GETPCACHE2</dt>.
1d510 2a 2a 20 3c 64 64 3e 20 5e 28 54 68 65 20 53 51  ** <dd> ^(The SQ
1d520 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50  LITE_CONFIG_GETP
1d530 43 41 43 48 45 32 20 6f 70 74 69 6f 6e 20 74 61  CACHE2 option ta
1d540 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67  kes a single arg
1d550 75 6d 65 6e 74 20 77 68 69 63 68 0a 2a 2a 20 69  ument which.** i
1d560 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
1d570 6e 20 5b 73 71 6c 69 74 65 33 5f 70 63 61 63 68  n [sqlite3_pcach
1d580 65 5f 6d 65 74 68 6f 64 73 32 5d 20 6f 62 6a 65  e_methods2] obje
1d590 63 74 2e 20 20 53 51 4c 69 74 65 20 63 6f 70 69  ct.  SQLite copi
1d5a0 65 73 20 6f 66 0a 2a 2a 20 74 68 65 20 63 75 72  es of.** the cur
1d5b0 72 65 6e 74 20 70 61 67 65 20 63 61 63 68 65 20  rent page cache 
1d5c0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69  implementation i
1d5d0 6e 74 6f 20 74 68 61 74 20 6f 62 6a 65 63 74 2e  nto that object.
1d5e0 29 5e 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b  )^ </dd>.**.** [
1d5f0 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4c  [SQLITE_CONFIG_L
1d600 4f 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  OG]] <dt>SQLITE_
1d610 43 4f 4e 46 49 47 5f 4c 4f 47 3c 2f 64 74 3e 0a  CONFIG_LOG</dt>.
1d620 2a 2a 20 3c 64 64 3e 20 54 68 65 20 53 51 4c 49  ** <dd> The SQLI
1d630 54 45 5f 43 4f 4e 46 49 47 5f 4c 4f 47 20 6f 70  TE_CONFIG_LOG op
1d640 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20  tion is used to 
1d650 63 6f 6e 66 69 67 75 72 65 20 74 68 65 20 53 51  configure the SQ
1d660 4c 69 74 65 0a 2a 2a 20 67 6c 6f 62 61 6c 20 5b  Lite.** global [
1d670 65 72 72 6f 72 20 6c 6f 67 5d 2e 0a 2a 2a 20 28  error log]..** (
1d680 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1d690 49 47 5f 4c 4f 47 20 6f 70 74 69 6f 6e 20 74 61  IG_LOG option ta
1d6a0 6b 65 73 20 74 77 6f 20 61 72 67 75 6d 65 6e 74  kes two argument
1d6b0 73 3a 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  s: a pointer to 
1d6c0 61 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20 77 69  a.** function wi
1d6d0 74 68 20 61 20 63 61 6c 6c 20 73 69 67 6e 61 74  th a call signat
1d6e0 75 72 65 20 6f 66 20 76 6f 69 64 28 2a 29 28 76  ure of void(*)(v
1d6f0 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20 63  oid*,int,const c
1d700 68 61 72 2a 29 2c 20 0a 2a 2a 20 61 6e 64 20 61  har*), .** and a
1d710 20 70 6f 69 6e 74 65 72 20 74 6f 20 76 6f 69 64   pointer to void
1d720 2e 20 5e 49 66 20 74 68 65 20 66 75 6e 63 74 69  . ^If the functi
1d730 6f 6e 20 70 6f 69 6e 74 65 72 20 69 73 20 6e 6f  on pointer is no
1d740 74 20 4e 55 4c 4c 2c 20 69 74 20 69 73 0a 2a 2a  t NULL, it is.**
1d750 20 69 6e 76 6f 6b 65 64 20 62 79 20 5b 73 71 6c   invoked by [sql
1d760 69 74 65 33 5f 6c 6f 67 28 29 5d 20 74 6f 20 70  ite3_log()] to p
1d770 72 6f 63 65 73 73 20 65 61 63 68 20 6c 6f 67 67  rocess each logg
1d780 69 6e 67 20 65 76 65 6e 74 2e 20 20 5e 49 66 20  ing event.  ^If 
1d790 74 68 65 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  the.** function 
1d7a0 70 6f 69 6e 74 65 72 20 69 73 20 4e 55 4c 4c 2c  pointer is NULL,
1d7b0 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 6c 6f   the [sqlite3_lo
1d7c0 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65 20 62  g()] interface b
1d7d0 65 63 6f 6d 65 73 20 61 20 6e 6f 2d 6f 70 2e 0a  ecomes a no-op..
1d7e0 2a 2a 20 5e 54 68 65 20 76 6f 69 64 20 70 6f 69  ** ^The void poi
1d7f0 6e 74 65 72 20 74 68 61 74 20 69 73 20 74 68 65  nter that is the
1d800 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
1d810 20 74 6f 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49   to SQLITE_CONFI
1d820 47 5f 4c 4f 47 20 69 73 0a 2a 2a 20 70 61 73 73  G_LOG is.** pass
1d830 65 64 20 74 68 72 6f 75 67 68 20 61 73 20 74 68  ed through as th
1d840 65 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65  e first paramete
1d850 72 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61  r to the applica
1d860 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 6c 6f 67  tion-defined log
1d870 67 65 72 0a 2a 2a 20 66 75 6e 63 74 69 6f 6e 20  ger.** function 
1d880 77 68 65 6e 65 76 65 72 20 74 68 61 74 20 66 75  whenever that fu
1d890 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65  nction is invoke
1d8a0 64 2e 20 20 5e 54 68 65 20 73 65 63 6f 6e 64 20  d.  ^The second 
1d8b0 70 61 72 61 6d 65 74 65 72 20 74 6f 0a 2a 2a 20  parameter to.** 
1d8c0 74 68 65 20 6c 6f 67 67 65 72 20 66 75 6e 63 74  the logger funct
1d8d0 69 6f 6e 20 69 73 20 61 20 63 6f 70 79 20 6f 66  ion is a copy of
1d8e0 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d   the first param
1d8f0 65 74 65 72 20 74 6f 20 74 68 65 20 63 6f 72 72  eter to the corr
1d900 65 73 70 6f 6e 64 69 6e 67 0a 2a 2a 20 5b 73 71  esponding.** [sq
1d910 6c 69 74 65 33 5f 6c 6f 67 28 29 5d 20 63 61 6c  lite3_log()] cal
1d920 6c 20 61 6e 64 20 69 73 20 69 6e 74 65 6e 64 65  l and is intende
1d930 64 20 74 6f 20 62 65 20 61 20 5b 72 65 73 75 6c  d to be a [resul
1d940 74 20 63 6f 64 65 5d 20 6f 72 20 61 6e 0a 2a 2a  t code] or an.**
1d950 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c   [extended resul
1d960 74 20 63 6f 64 65 5d 2e 20 20 5e 54 68 65 20 74  t code].  ^The t
1d970 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20 70  hird parameter p
1d980 61 73 73 65 64 20 74 6f 20 74 68 65 20 6c 6f 67  assed to the log
1d990 67 65 72 20 69 73 0a 2a 2a 20 6c 6f 67 20 6d 65  ger is.** log me
1d9a0 73 73 61 67 65 20 61 66 74 65 72 20 66 6f 72 6d  ssage after form
1d9b0 61 74 74 69 6e 67 20 76 69 61 20 5b 73 71 6c 69  atting via [sqli
1d9c0 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 5d 2e  te3_snprintf()].
1d9d0 0a 2a 2a 20 54 68 65 20 53 51 4c 69 74 65 20 6c  .** The SQLite l
1d9e0 6f 67 67 69 6e 67 20 69 6e 74 65 72 66 61 63 65  ogging interface
1d9f0 20 69 73 20 6e 6f 74 20 72 65 65 6e 74 72 61 6e   is not reentran
1da00 74 3b 20 74 68 65 20 6c 6f 67 67 65 72 20 66 75  t; the logger fu
1da10 6e 63 74 69 6f 6e 0a 2a 2a 20 73 75 70 70 6c 69  nction.** suppli
1da20 65 64 20 62 79 20 74 68 65 20 61 70 70 6c 69 63  ed by the applic
1da30 61 74 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 69  ation must not i
1da40 6e 76 6f 6b 65 20 61 6e 79 20 53 51 4c 69 74 65  nvoke any SQLite
1da50 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a 2a 20 49   interface..** I
1da60 6e 20 61 20 6d 75 6c 74 69 2d 74 68 72 65 61 64  n a multi-thread
1da70 65 64 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20  ed application, 
1da80 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2d  the application-
1da90 64 65 66 69 6e 65 64 20 6c 6f 67 67 65 72 0a 2a  defined logger.*
1daa0 2a 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74 20  * function must 
1dab0 62 65 20 74 68 72 65 61 64 73 61 66 65 2e 20 3c  be threadsafe. <
1dac0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
1dad0 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 5d 5d  ITE_CONFIG_URI]]
1dae0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1daf0 49 47 5f 55 52 49 0a 2a 2a 20 3c 64 64 3e 5e 28  IG_URI.** <dd>^(
1db00 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  The SQLITE_CONFI
1db10 47 5f 55 52 49 20 6f 70 74 69 6f 6e 20 74 61 6b  G_URI option tak
1db20 65 73 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75  es a single argu
1db30 6d 65 6e 74 20 6f 66 20 74 79 70 65 20 69 6e 74  ment of type int
1db40 2e 0a 2a 2a 20 49 66 20 6e 6f 6e 2d 7a 65 72 6f  ..** If non-zero
1db50 2c 20 74 68 65 6e 20 55 52 49 20 68 61 6e 64 6c  , then URI handl
1db60 69 6e 67 20 69 73 20 67 6c 6f 62 61 6c 6c 79 20  ing is globally 
1db70 65 6e 61 62 6c 65 64 2e 20 49 66 20 74 68 65 20  enabled. If the 
1db80 70 61 72 61 6d 65 74 65 72 20 69 73 20 7a 65 72  parameter is zer
1db90 6f 2c 0a 2a 2a 20 74 68 65 6e 20 55 52 49 20 68  o,.** then URI h
1dba0 61 6e 64 6c 69 6e 67 20 69 73 20 67 6c 6f 62 61  andling is globa
1dbb0 6c 6c 79 20 64 69 73 61 62 6c 65 64 2e 29 5e 20  lly disabled.)^ 
1dbc0 5e 49 66 20 55 52 49 20 68 61 6e 64 6c 69 6e 67  ^If URI handling
1dbd0 20 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20   is globally.** 
1dbe0 65 6e 61 62 6c 65 64 2c 20 61 6c 6c 20 66 69 6c  enabled, all fil
1dbf0 65 6e 61 6d 65 73 20 70 61 73 73 65 64 20 74 6f  enames passed to
1dc00 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28 29   [sqlite3_open()
1dc10 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ], [sqlite3_open
1dc20 5f 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69  _v2()],.** [sqli
1dc30 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 20 6f 72  te3_open16()] or
1dc40 0a 2a 2a 20 73 70 65 63 69 66 69 65 64 20 61 73  .** specified as
1dc50 20 70 61 72 74 20 6f 66 20 5b 41 54 54 41 43 48   part of [ATTACH
1dc60 5d 20 63 6f 6d 6d 61 6e 64 73 20 61 72 65 20 69  ] commands are i
1dc70 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 55 52  nterpreted as UR
1dc80 49 73 2c 20 72 65 67 61 72 64 6c 65 73 73 0a 2a  Is, regardless.*
1dc90 2a 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20  * of whether or 
1dca0 6e 6f 74 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  not the [SQLITE_
1dcb0 4f 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 20 69  OPEN_URI] flag i
1dcc0 73 20 73 65 74 20 77 68 65 6e 20 74 68 65 20 64  s set when the d
1dcd0 61 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65  atabase.** conne
1dce0 63 74 69 6f 6e 20 69 73 20 6f 70 65 6e 65 64 2e  ction is opened.
1dcf0 20 5e 49 66 20 69 74 20 69 73 20 67 6c 6f 62 61   ^If it is globa
1dd00 6c 6c 79 20 64 69 73 61 62 6c 65 64 2c 20 66 69  lly disabled, fi
1dd10 6c 65 6e 61 6d 65 73 20 61 72 65 0a 2a 2a 20 6f  lenames are.** o
1dd20 6e 6c 79 20 69 6e 74 65 72 70 72 65 74 65 64 20  nly interpreted 
1dd30 61 73 20 55 52 49 73 20 69 66 20 74 68 65 20 53  as URIs if the S
1dd40 51 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 20 66  QLITE_OPEN_URI f
1dd50 6c 61 67 20 69 73 20 73 65 74 20 77 68 65 6e 20  lag is set when 
1dd60 74 68 65 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  the.** database 
1dd70 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 6f 70  connection is op
1dd80 65 6e 65 64 2e 20 5e 28 42 79 20 64 65 66 61 75  ened. ^(By defau
1dd90 6c 74 2c 20 55 52 49 20 68 61 6e 64 6c 69 6e 67  lt, URI handling
1dda0 20 69 73 20 67 6c 6f 62 61 6c 6c 79 0a 2a 2a 20   is globally.** 
1ddb0 64 69 73 61 62 6c 65 64 2e 20 54 68 65 20 64 65  disabled. The de
1ddc0 66 61 75 6c 74 20 76 61 6c 75 65 20 6d 61 79 20  fault value may 
1ddd0 62 65 20 63 68 61 6e 67 65 64 20 62 79 20 63 6f  be changed by co
1dde0 6d 70 69 6c 69 6e 67 20 77 69 74 68 20 74 68 65  mpiling with the
1ddf0 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f  .** [SQLITE_USE_
1de00 55 52 49 5d 20 73 79 6d 62 6f 6c 20 64 65 66 69  URI] symbol defi
1de10 6e 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  ned.)^.**.** [[S
1de20 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 43 4f 56  QLITE_CONFIG_COV
1de30 45 52 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e  ERING_INDEX_SCAN
1de40 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ]] <dt>SQLITE_CO
1de50 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e  NFIG_COVERING_IN
1de60 44 45 58 5f 53 43 41 4e 0a 2a 2a 20 3c 64 64 3e  DEX_SCAN.** <dd>
1de70 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46  ^The SQLITE_CONF
1de80 49 47 5f 43 4f 56 45 52 49 4e 47 5f 49 4e 44 45  IG_COVERING_INDE
1de90 58 5f 53 43 41 4e 20 6f 70 74 69 6f 6e 20 74 61  X_SCAN option ta
1dea0 6b 65 73 20 61 20 73 69 6e 67 6c 65 20 69 6e 74  kes a single int
1deb0 65 67 65 72 0a 2a 2a 20 61 72 67 75 6d 65 6e 74  eger.** argument
1dec0 20 77 68 69 63 68 20 69 73 20 69 6e 74 65 72 70   which is interp
1ded0 72 65 74 65 64 20 61 73 20 61 20 62 6f 6f 6c 65  reted as a boole
1dee0 61 6e 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 65  an in order to e
1def0 6e 61 62 6c 65 20 6f 72 20 64 69 73 61 62 6c 65  nable or disable
1df00 0a 2a 2a 20 74 68 65 20 75 73 65 20 6f 66 20 63  .** the use of c
1df10 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73 20  overing indices 
1df20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 20 73  for full table s
1df30 63 61 6e 73 20 69 6e 20 74 68 65 20 71 75 65 72  cans in the quer
1df40 79 20 6f 70 74 69 6d 69 7a 65 72 2e 0a 2a 2a 20  y optimizer..** 
1df50 5e 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74  ^The default set
1df60 74 69 6e 67 20 69 73 20 64 65 74 65 72 6d 69 6e  ting is determin
1df70 65 64 0a 2a 2a 20 62 79 20 74 68 65 20 5b 53 51  ed.** by the [SQ
1df80 4c 49 54 45 5f 41 4c 4c 4f 57 5f 43 4f 56 45 52  LITE_ALLOW_COVER
1df90 49 4e 47 5f 49 4e 44 45 58 5f 53 43 41 4e 5d 20  ING_INDEX_SCAN] 
1dfa0 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1dfb0 69 6f 6e 2c 20 6f 72 20 69 73 20 22 6f 6e 22 0a  ion, or is "on".
1dfc0 2a 2a 20 69 66 20 74 68 61 74 20 63 6f 6d 70 69  ** if that compi
1dfd0 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69  le-time option i
1dfe0 73 20 6f 6d 69 74 74 65 64 2e 0a 2a 2a 20 54 68  s omitted..** Th
1dff0 65 20 61 62 69 6c 69 74 79 20 74 6f 20 64 69 73  e ability to dis
1e000 61 62 6c 65 20 74 68 65 20 75 73 65 20 6f 66 20  able the use of 
1e010 63 6f 76 65 72 69 6e 67 20 69 6e 64 69 63 65 73  covering indices
1e020 20 66 6f 72 20 66 75 6c 6c 20 74 61 62 6c 65 20   for full table 
1e030 73 63 61 6e 73 0a 2a 2a 20 69 73 20 62 65 63 61  scans.** is beca
1e040 75 73 65 20 73 6f 6d 65 20 69 6e 63 6f 72 72 65  use some incorre
1e050 63 74 6c 79 20 63 6f 64 65 64 20 6c 65 67 61 63  ctly coded legac
1e060 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 6d  y applications m
1e070 69 67 68 74 20 6d 61 6c 66 75 6e 63 74 69 6f 6e  ight malfunction
1e080 0a 2a 2a 20 77 68 65 6e 20 74 68 65 20 6f 70 74  .** when the opt
1e090 69 6d 69 7a 61 74 69 6f 6e 20 69 73 20 65 6e 61  imization is ena
1e0a0 62 6c 65 64 2e 20 20 50 72 6f 76 69 64 69 6e 67  bled.  Providing
1e0b0 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 0a   the ability to.
1e0c0 2a 2a 20 64 69 73 61 62 6c 65 20 74 68 65 20 6f  ** disable the o
1e0d0 70 74 69 6d 69 7a 61 74 69 6f 6e 20 61 6c 6c 6f  ptimization allo
1e0e0 77 73 20 74 68 65 20 6f 6c 64 65 72 2c 20 62 75  ws the older, bu
1e0f0 67 67 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 20  ggy application 
1e100 63 6f 64 65 20 74 6f 20 77 6f 72 6b 0a 2a 2a 20  code to work.** 
1e110 77 69 74 68 6f 75 74 20 63 68 61 6e 67 65 20 65  without change e
1e120 76 65 6e 20 77 69 74 68 20 6e 65 77 65 72 20 76  ven with newer v
1e130 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
1e140 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  e..**.** [[SQLIT
1e150 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45 5d  E_CONFIG_PCACHE]
1e160 5d 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ] [[SQLITE_CONFI
1e170 47 5f 47 45 54 50 43 41 43 48 45 5d 5d 0a 2a 2a  G_GETPCACHE]].**
1e180 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1e190 49 47 5f 50 43 41 43 48 45 20 61 6e 64 20 53 51  IG_PCACHE and SQ
1e1a0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45 54 50  LITE_CONFIG_GETP
1e1b0 43 41 43 48 45 0a 2a 2a 20 3c 64 64 3e 20 54 68  CACHE.** <dd> Th
1e1c0 65 73 65 20 6f 70 74 69 6f 6e 73 20 61 72 65 20  ese options are 
1e1d0 6f 62 73 6f 6c 65 74 65 20 61 6e 64 20 73 68 6f  obsolete and sho
1e1e0 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20  uld not be used 
1e1f0 62 79 20 6e 65 77 20 63 6f 64 65 2e 0a 2a 2a 20  by new code..** 
1e200 54 68 65 79 20 61 72 65 20 72 65 74 61 69 6e 65  They are retaine
1e210 64 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20  d for backwards 
1e220 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 75  compatibility bu
1e230 74 20 61 72 65 20 6e 6f 77 20 6e 6f 2d 6f 70 73  t are now no-ops
1e240 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  ..** </dd>.**.**
1e250 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1e260 5f 53 51 4c 4c 4f 47 5d 5d 0a 2a 2a 20 3c 64 74  _SQLLOG]].** <dt
1e270 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53  >SQLITE_CONFIG_S
1e280 51 4c 4c 4f 47 0a 2a 2a 20 3c 64 64 3e 54 68 69  QLLOG.** <dd>Thi
1e290 73 20 6f 70 74 69 6f 6e 20 69 73 20 6f 6e 6c 79  s option is only
1e2a0 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 73 71   available if sq
1e2b0 6c 69 74 65 20 69 73 20 63 6f 6d 70 69 6c 65 64  lite is compiled
1e2c0 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 53 51   with the.** [SQ
1e2d0 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 53 51 4c 4c  LITE_ENABLE_SQLL
1e2e0 4f 47 5d 20 70 72 65 2d 70 72 6f 63 65 73 73 6f  OG] pre-processo
1e2f0 72 20 6d 61 63 72 6f 20 64 65 66 69 6e 65 64 2e  r macro defined.
1e300 20 54 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   The first argum
1e310 65 6e 74 20 73 68 6f 75 6c 64 0a 2a 2a 20 62 65  ent should.** be
1e320 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 20   a pointer to a 
1e330 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 79 70 65  function of type
1e340 20 76 6f 69 64 28 2a 29 28 76 6f 69 64 2a 2c 73   void(*)(void*,s
1e350 71 6c 69 74 65 33 2a 2c 63 6f 6e 73 74 20 63 68  qlite3*,const ch
1e360 61 72 2a 2c 20 69 6e 74 29 2e 0a 2a 2a 20 54 68  ar*, int)..** Th
1e370 65 20 73 65 63 6f 6e 64 20 73 68 6f 75 6c 64 20  e second should 
1e380 62 65 20 6f 66 20 74 79 70 65 20 28 76 6f 69 64  be of type (void
1e390 2a 29 2e 20 54 68 65 20 63 61 6c 6c 62 61 63 6b  *). The callback
1e3a0 20 69 73 20 69 6e 76 6f 6b 65 64 20 62 79 20 74   is invoked by t
1e3b0 68 65 20 6c 69 62 72 61 72 79 0a 2a 2a 20 69 6e  he library.** in
1e3c0 20 74 68 72 65 65 20 73 65 70 61 72 61 74 65 20   three separate 
1e3d0 63 69 72 63 75 6d 73 74 61 6e 63 65 73 2c 20 69  circumstances, i
1e3e0 64 65 6e 74 69 66 69 65 64 20 62 79 20 74 68 65  dentified by the
1e3f0 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 61 73   value passed as
1e400 20 74 68 65 0a 2a 2a 20 66 6f 75 72 74 68 20 70   the.** fourth p
1e410 61 72 61 6d 65 74 65 72 2e 20 49 66 20 74 68 65  arameter. If the
1e420 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
1e430 72 20 69 73 20 30 2c 20 74 68 65 6e 20 74 68 65  r is 0, then the
1e440 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
1e450 74 69 6f 6e 0a 2a 2a 20 70 61 73 73 65 64 20 61  tion.** passed a
1e460 73 20 74 68 65 20 73 65 63 6f 6e 64 20 61 72 67  s the second arg
1e470 75 6d 65 6e 74 20 68 61 73 20 6a 75 73 74 20 62  ument has just b
1e480 65 65 6e 20 6f 70 65 6e 65 64 2e 20 54 68 65 20  een opened. The 
1e490 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 0a 2a  third argument.*
1e4a0 2a 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 62 75  * points to a bu
1e4b0 66 66 65 72 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ffer containing 
1e4c0 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
1e4d0 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 66 69  main database fi
1e4e0 6c 65 2e 20 49 66 20 74 68 65 0a 2a 2a 20 66 6f  le. If the.** fo
1e4f0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 20 69  urth parameter i
1e500 73 20 31 2c 20 74 68 65 6e 20 74 68 65 20 53 51  s 1, then the SQ
1e510 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74  L statement that
1e520 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   the third param
1e530 65 74 65 72 0a 2a 2a 20 70 6f 69 6e 74 73 20 74  eter.** points t
1e540 6f 20 68 61 73 20 6a 75 73 74 20 62 65 65 6e 20  o has just been 
1e550 65 78 65 63 75 74 65 64 2e 20 4f 72 2c 20 69 66  executed. Or, if
1e560 20 74 68 65 20 66 6f 75 72 74 68 20 70 61 72 61   the fourth para
1e570 6d 65 74 65 72 20 69 73 20 32 2c 20 74 68 65 6e  meter is 2, then
1e580 0a 2a 2a 20 74 68 65 20 63 6f 6e 6e 65 63 74 69  .** the connecti
1e590 6f 6e 20 62 65 69 6e 67 20 70 61 73 73 65 64 20  on being passed 
1e5a0 61 73 20 74 68 65 20 73 65 63 6f 6e 64 20 70 61  as the second pa
1e5b0 72 61 6d 65 74 65 72 20 69 73 20 62 65 69 6e 67  rameter is being
1e5c0 20 63 6c 6f 73 65 64 2e 20 54 68 65 0a 2a 2a 20   closed. The.** 
1e5d0 74 68 69 72 64 20 70 61 72 61 6d 65 74 65 72 20  third parameter 
1e5e0 69 73 20 70 61 73 73 65 64 20 4e 55 4c 4c 20 49  is passed NULL I
1e5f0 6e 20 74 68 69 73 20 63 61 73 65 2e 20 20 41 6e  n this case.  An
1e600 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69 6e   example of usin
1e610 67 20 74 68 69 73 0a 2a 2a 20 63 6f 6e 66 69 67  g this.** config
1e620 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 20 63  uration option c
1e630 61 6e 20 62 65 20 73 65 65 6e 20 69 6e 20 74 68  an be seen in th
1e640 65 20 22 74 65 73 74 5f 73 71 6c 6c 6f 67 2e 63  e "test_sqllog.c
1e650 22 20 73 6f 75 72 63 65 20 66 69 6c 65 20 69 6e  " source file in
1e660 0a 2a 2a 20 74 68 65 20 63 61 6e 6f 6e 69 63 61  .** the canonica
1e670 6c 20 53 51 4c 69 74 65 20 73 6f 75 72 63 65 20  l SQLite source 
1e680 74 72 65 65 2e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a  tree.</dd>.**.**
1e690 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1e6a0 5f 4d 4d 41 50 5f 53 49 5a 45 5d 5d 0a 2a 2a 20  _MMAP_SIZE]].** 
1e6b0 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1e6c0 47 5f 4d 4d 41 50 5f 53 49 5a 45 0a 2a 2a 20 3c  G_MMAP_SIZE.** <
1e6d0 64 64 3e 5e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  dd>^SQLITE_CONFI
1e6e0 47 5f 4d 4d 41 50 5f 53 49 5a 45 20 74 61 6b 65  G_MMAP_SIZE take
1e6f0 73 20 74 77 6f 20 36 34 2d 62 69 74 20 69 6e 74  s two 64-bit int
1e700 65 67 65 72 20 28 73 71 6c 69 74 65 33 5f 69 6e  eger (sqlite3_in
1e710 74 36 34 29 20 76 61 6c 75 65 73 0a 2a 2a 20 74  t64) values.** t
1e720 68 61 74 20 61 72 65 20 74 68 65 20 64 65 66 61  hat are the defa
1e730 75 6c 74 20 6d 6d 61 70 20 73 69 7a 65 20 6c 69  ult mmap size li
1e740 6d 69 74 20 28 74 68 65 20 64 65 66 61 75 6c 74  mit (the default
1e750 20 73 65 74 74 69 6e 67 20 66 6f 72 0a 2a 2a 20   setting for.** 
1e760 5b 50 52 41 47 4d 41 20 6d 6d 61 70 5f 73 69 7a  [PRAGMA mmap_siz
1e770 65 5d 29 20 61 6e 64 20 74 68 65 20 6d 61 78 69  e]) and the maxi
1e780 6d 75 6d 20 61 6c 6c 6f 77 65 64 20 6d 6d 61 70  mum allowed mmap
1e790 20 73 69 7a 65 20 6c 69 6d 69 74 2e 0a 2a 2a 20   size limit..** 
1e7a0 5e 54 68 65 20 64 65 66 61 75 6c 74 20 73 65 74  ^The default set
1e7b0 74 69 6e 67 20 63 61 6e 20 62 65 20 6f 76 65 72  ting can be over
1e7c0 72 69 64 64 65 6e 20 62 79 20 65 61 63 68 20 64  ridden by each d
1e7d0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
1e7e0 6f 6e 20 75 73 69 6e 67 0a 2a 2a 20 65 69 74 68  on using.** eith
1e7f0 65 72 20 74 68 65 20 5b 50 52 41 47 4d 41 20 6d  er the [PRAGMA m
1e800 6d 61 70 5f 73 69 7a 65 5d 20 63 6f 6d 6d 61 6e  map_size] comman
1e810 64 2c 20 6f 72 20 62 79 20 75 73 69 6e 67 20 74  d, or by using t
1e820 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  he.** [SQLITE_FC
1e830 4e 54 4c 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 66  NTL_MMAP_SIZE] f
1e840 69 6c 65 20 63 6f 6e 74 72 6f 6c 2e 20 20 5e 28  ile control.  ^(
1e850 54 68 65 20 6d 61 78 69 6d 75 6d 20 61 6c 6c 6f  The maximum allo
1e860 77 65 64 20 6d 6d 61 70 20 73 69 7a 65 0a 2a 2a  wed mmap size.**
1e870 20 77 69 6c 6c 20 62 65 20 73 69 6c 65 6e 74 6c   will be silentl
1e880 79 20 74 72 75 6e 63 61 74 65 64 20 69 66 20 6e  y truncated if n
1e890 65 63 65 73 73 61 72 79 20 73 6f 20 74 68 61 74  ecessary so that
1e8a0 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 63   it does not exc
1e8b0 65 65 64 20 74 68 65 0a 2a 2a 20 63 6f 6d 70 69  eed the.** compi
1e8c0 6c 65 2d 74 69 6d 65 20 6d 61 78 69 6d 75 6d 20  le-time maximum 
1e8d0 6d 6d 61 70 20 73 69 7a 65 20 73 65 74 20 62 79  mmap size set by
1e8e0 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f   the.** [SQLITE_
1e8f0 4d 41 58 5f 4d 4d 41 50 5f 53 49 5a 45 5d 20 63  MAX_MMAP_SIZE] c
1e900 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1e910 6f 6e 2e 29 5e 0a 2a 2a 20 5e 49 66 20 65 69 74  on.)^.** ^If eit
1e920 68 65 72 20 61 72 67 75 6d 65 6e 74 20 74 6f 20  her argument to 
1e930 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 6e  this option is n
1e940 65 67 61 74 69 76 65 2c 20 74 68 65 6e 20 74 68  egative, then th
1e950 61 74 20 61 72 67 75 6d 65 6e 74 20 69 73 0a 2a  at argument is.*
1e960 2a 20 63 68 61 6e 67 65 64 20 74 6f 20 69 74 73  * changed to its
1e970 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 65   compile-time de
1e980 66 61 75 6c 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  fault..**.** [[S
1e990 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e  QLITE_CONFIG_WIN
1e9a0 33 32 5f 48 45 41 50 53 49 5a 45 5d 5d 0a 2a 2a  32_HEAPSIZE]].**
1e9b0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46   <dt>SQLITE_CONF
1e9c0 49 47 5f 57 49 4e 33 32 5f 48 45 41 50 53 49 5a  IG_WIN32_HEAPSIZ
1e9d0 45 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51  E.** <dd>^The SQ
1e9e0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 57 49 4e 33  LITE_CONFIG_WIN3
1e9f0 32 5f 48 45 41 50 53 49 5a 45 20 6f 70 74 69 6f  2_HEAPSIZE optio
1ea00 6e 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61  n is only availa
1ea10 62 6c 65 20 69 66 20 53 51 4c 69 74 65 20 69 73  ble if SQLite is
1ea20 0a 2a 2a 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72  .** compiled for
1ea30 20 57 69 6e 64 6f 77 73 20 77 69 74 68 20 74 68   Windows with th
1ea40 65 20 5b 53 51 4c 49 54 45 5f 57 49 4e 33 32 5f  e [SQLITE_WIN32_
1ea50 4d 41 4c 4c 4f 43 5d 20 70 72 65 2d 70 72 6f 63  MALLOC] pre-proc
1ea60 65 73 73 6f 72 20 6d 61 63 72 6f 0a 2a 2a 20 64  essor macro.** d
1ea70 65 66 69 6e 65 64 2e 20 5e 53 51 4c 49 54 45 5f  efined. ^SQLITE_
1ea80 43 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41  CONFIG_WIN32_HEA
1ea90 50 53 49 5a 45 20 74 61 6b 65 73 20 61 20 33 32  PSIZE takes a 32
1eaa0 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69 6e  -bit unsigned in
1eab0 74 65 67 65 72 20 76 61 6c 75 65 0a 2a 2a 20 74  teger value.** t
1eac0 68 61 74 20 73 70 65 63 69 66 69 65 73 20 74 68  hat specifies th
1ead0 65 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f  e maximum size o
1eae0 66 20 74 68 65 20 63 72 65 61 74 65 64 20 68 65  f the created he
1eaf0 61 70 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  ap..**.** [[SQLI
1eb00 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48 45  TE_CONFIG_PCACHE
1eb10 5f 48 44 52 53 5a 5d 5d 0a 2a 2a 20 3c 64 74 3e  _HDRSZ]].** <dt>
1eb20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43  SQLITE_CONFIG_PC
1eb30 41 43 48 45 5f 48 44 52 53 5a 0a 2a 2a 20 3c 64  ACHE_HDRSZ.** <d
1eb40 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  d>^The SQLITE_CO
1eb50 4e 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53  NFIG_PCACHE_HDRS
1eb60 5a 20 6f 70 74 69 6f 6e 20 74 61 6b 65 73 20 61  Z option takes a
1eb70 20 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65   single paramete
1eb80 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 61 20  r which.** is a 
1eb90 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e  pointer to an in
1eba0 74 65 67 65 72 20 61 6e 64 20 77 72 69 74 65 73  teger and writes
1ebb0 20 69 6e 74 6f 20 74 68 61 74 20 69 6e 74 65 67   into that integ
1ebc0 65 72 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  er the number of
1ebd0 20 65 78 74 72 61 0a 2a 2a 20 62 79 74 65 73 20   extra.** bytes 
1ebe0 70 65 72 20 70 61 67 65 20 72 65 71 75 69 72 65  per page require
1ebf0 64 20 66 6f 72 20 65 61 63 68 20 70 61 67 65 20  d for each page 
1ec00 69 6e 20 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  in [SQLITE_CONFI
1ec10 47 5f 50 41 47 45 43 41 43 48 45 5d 2e 0a 2a 2a  G_PAGECACHE]..**
1ec20 20 54 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20 65   The amount of e
1ec30 78 74 72 61 20 73 70 61 63 65 20 72 65 71 75 69  xtra space requi
1ec40 72 65 64 20 63 61 6e 20 63 68 61 6e 67 65 20 64  red can change d
1ec50 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20  epending on the 
1ec60 63 6f 6d 70 69 6c 65 72 2c 0a 2a 2a 20 74 61 72  compiler,.** tar
1ec70 67 65 74 20 70 6c 61 74 66 6f 72 6d 2c 20 61 6e  get platform, an
1ec80 64 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  d SQLite version
1ec90 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ..**.** [[SQLITE
1eca0 5f 43 4f 4e 46 49 47 5f 50 4d 41 53 5a 5d 5d 0a  _CONFIG_PMASZ]].
1ecb0 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f  ** <dt>SQLITE_CO
1ecc0 4e 46 49 47 5f 50 4d 41 53 5a 0a 2a 2a 20 3c 64  NFIG_PMASZ.** <d
1ecd0 64 3e 5e 54 68 65 20 53 51 4c 49 54 45 5f 43 4f  d>^The SQLITE_CO
1ece0 4e 46 49 47 5f 50 4d 41 53 5a 20 6f 70 74 69 6f  NFIG_PMASZ optio
1ecf0 6e 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65  n takes a single
1ed00 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68   parameter which
1ed10 0a 2a 2a 20 69 73 20 61 6e 20 75 6e 73 69 67 6e  .** is an unsign
1ed20 65 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20 73  ed integer and s
1ed30 65 74 73 20 74 68 65 20 22 4d 69 6e 69 6d 75 6d  ets the "Minimum
1ed40 20 50 4d 41 20 53 69 7a 65 22 20 66 6f 72 20 74   PMA Size" for t
1ed50 68 65 20 6d 75 6c 74 69 74 68 72 65 61 64 65 64  he multithreaded
1ed60 0a 2a 2a 20 73 6f 72 74 65 72 20 74 6f 20 74 68  .** sorter to th
1ed70 61 74 20 69 6e 74 65 67 65 72 2e 20 20 54 68 65  at integer.  The
1ed80 20 64 65 66 61 75 6c 74 20 6d 69 6e 69 6d 75 6d   default minimum
1ed90 20 50 4d 41 20 53 69 7a 65 20 69 73 20 73 65 74   PMA Size is set
1eda0 20 62 79 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49   by the.** [SQLI
1edb0 54 45 5f 53 4f 52 54 45 52 5f 50 4d 41 53 5a 5d  TE_SORTER_PMASZ]
1edc0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70   compile-time op
1edd0 74 69 6f 6e 2e 20 20 4e 65 77 20 74 68 72 65 61  tion.  New threa
1ede0 64 73 20 61 72 65 20 6c 61 75 6e 63 68 65 64 0a  ds are launched.
1edf0 2a 2a 20 74 6f 20 68 65 6c 70 20 77 69 74 68 20  ** to help with 
1ee00 73 6f 72 74 20 6f 70 65 72 61 74 69 6f 6e 73 20  sort operations 
1ee10 77 68 65 6e 20 6d 75 6c 74 69 74 68 72 65 61 64  when multithread
1ee20 65 64 20 73 6f 72 74 69 6e 67 0a 2a 2a 20 69 73  ed sorting.** is
1ee30 20 65 6e 61 62 6c 65 64 20 28 75 73 69 6e 67 20   enabled (using 
1ee40 74 68 65 20 5b 50 52 41 47 4d 41 20 74 68 72 65  the [PRAGMA thre
1ee50 61 64 73 5d 20 63 6f 6d 6d 61 6e 64 29 20 61 6e  ads] command) an
1ee60 64 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 20  d the amount of 
1ee70 63 6f 6e 74 65 6e 74 0a 2a 2a 20 74 6f 20 62 65  content.** to be
1ee80 20 73 6f 72 74 65 64 20 65 78 63 65 65 64 73 20   sorted exceeds 
1ee90 74 68 65 20 70 61 67 65 20 73 69 7a 65 20 74 69  the page size ti
1eea0 6d 65 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20  mes the minimum 
1eeb0 6f 66 20 74 68 65 0a 2a 2a 20 5b 50 52 41 47 4d  of the.** [PRAGM
1eec0 41 20 63 61 63 68 65 5f 73 69 7a 65 5d 20 73 65  A cache_size] se
1eed0 74 74 69 6e 67 20 61 6e 64 20 74 68 69 73 20 76  tting and this v
1eee0 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  alue..**.** [[SQ
1eef0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54  LITE_CONFIG_STMT
1ef00 4a 52 4e 4c 5f 53 50 49 4c 4c 5d 5d 0a 2a 2a 20  JRNL_SPILL]].** 
1ef10 3c 64 74 3e 53 51 4c 49 54 45 5f 43 4f 4e 46 49  <dt>SQLITE_CONFI
1ef20 47 5f 53 54 4d 54 4a 52 4e 4c 5f 53 50 49 4c 4c  G_STMTJRNL_SPILL
1ef30 0a 2a 2a 20 3c 64 64 3e 5e 54 68 65 20 53 51 4c  .** <dd>^The SQL
1ef40 49 54 45 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a  ITE_CONFIG_STMTJ
1ef50 52 4e 4c 5f 53 50 49 4c 4c 20 6f 70 74 69 6f 6e  RNL_SPILL option
1ef60 20 74 61 6b 65 73 20 61 20 73 69 6e 67 6c 65 20   takes a single 
1ef70 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 0a  parameter which.
1ef80 2a 2a 20 62 65 63 6f 6d 65 73 20 74 68 65 20 5b  ** becomes the [
1ef90 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72 6e 61  statement journa
1efa0 6c 5d 20 73 70 69 6c 6c 2d 74 6f 2d 64 69 73 6b  l] spill-to-disk
1efb0 20 74 68 72 65 73 68 6f 6c 64 2e 20 20 0a 2a 2a   threshold.  .**
1efc0 20 5b 53 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72   [Statement jour
1efd0 6e 61 6c 73 5d 20 61 72 65 20 68 65 6c 64 20 69  nals] are held i
1efe0 6e 20 6d 65 6d 6f 72 79 20 75 6e 74 69 6c 20 74  n memory until t
1eff0 68 65 69 72 20 73 69 7a 65 20 28 69 6e 20 62 79  heir size (in by
1f000 74 65 73 29 0a 2a 2a 20 65 78 63 65 65 64 73 20  tes).** exceeds 
1f010 74 68 69 73 20 74 68 72 65 73 68 6f 6c 64 2c 20  this threshold, 
1f020 61 74 20 77 68 69 63 68 20 70 6f 69 6e 74 20 74  at which point t
1f030 68 65 79 20 61 72 65 20 77 72 69 74 74 65 6e 20  hey are written 
1f040 74 6f 20 64 69 73 6b 2e 0a 2a 2a 20 4f 72 20 69  to disk..** Or i
1f050 66 20 74 68 65 20 74 68 72 65 73 68 6f 6c 64 20  f the threshold 
1f060 69 73 20 2d 31 2c 20 73 74 61 74 65 6d 65 6e 74  is -1, statement
1f070 20 6a 6f 75 72 6e 61 6c 73 20 61 72 65 20 61 6c   journals are al
1f080 77 61 79 73 20 68 65 6c 64 0a 2a 2a 20 65 78 63  ways held.** exc
1f090 6c 75 73 69 76 65 6c 79 20 69 6e 20 6d 65 6d 6f  lusively in memo
1f0a0 72 79 2e 0a 2a 2a 20 53 69 6e 63 65 20 6d 61 6e  ry..** Since man
1f0b0 79 20 73 74 61 74 65 6d 65 6e 74 20 6a 6f 75 72  y statement jour
1f0c0 6e 61 6c 73 20 6e 65 76 65 72 20 62 65 63 6f 6d  nals never becom
1f0d0 65 20 6c 61 72 67 65 2c 20 73 65 74 74 69 6e 67  e large, setting
1f0e0 20 74 68 65 20 73 70 69 6c 6c 0a 2a 2a 20 74 68   the spill.** th
1f0f0 72 65 73 68 6f 6c 64 20 74 6f 20 61 20 76 61 6c  reshold to a val
1f100 75 65 20 73 75 63 68 20 61 73 20 36 34 4b 69 42  ue such as 64KiB
1f110 20 63 61 6e 20 67 72 65 61 74 6c 79 20 72 65 64   can greatly red
1f120 75 63 65 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f  uce the amount o
1f130 66 0a 2a 2a 20 49 2f 4f 20 72 65 71 75 69 72 65  f.** I/O require
1f140 64 20 74 6f 20 73 75 70 70 6f 72 74 20 73 74 61  d to support sta
1f150 74 65 6d 65 6e 74 20 72 6f 6c 6c 62 61 63 6b 2e  tement rollback.
1f160 0a 2a 2a 20 54 68 65 20 64 65 66 61 75 6c 74 20  .** The default 
1f170 76 61 6c 75 65 20 66 6f 72 20 74 68 69 73 20 73  value for this s
1f180 65 74 74 69 6e 67 20 69 73 20 63 6f 6e 74 72 6f  etting is contro
1f190 6c 6c 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b  lled by the.** [
1f1a0 53 51 4c 49 54 45 5f 53 54 4d 54 4a 52 4e 4c 5f  SQLITE_STMTJRNL_
1f1b0 53 50 49 4c 4c 5d 20 63 6f 6d 70 69 6c 65 2d 74  SPILL] compile-t
1f1c0 69 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a  ime option..**.*
1f1d0 2a 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49  * [[SQLITE_CONFI
1f1e0 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45  G_SORTERREF_SIZE
1f1f0 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
1f200 5f 43 4f 4e 46 49 47 5f 53 4f 52 54 45 52 52 45  _CONFIG_SORTERRE
1f210 46 5f 53 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68  F_SIZE.** <dd>Th
1f220 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1f230 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45 20 6f  SORTERREF_SIZE o
1f240 70 74 69 6f 6e 20 61 63 63 65 70 74 73 20 61 20  ption accepts a 
1f250 73 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72  single parameter
1f260 0a 2a 2a 20 6f 66 20 74 79 70 65 20 28 69 6e 74  .** of type (int
1f270 29 20 2d 20 74 68 65 20 6e 65 77 20 76 61 6c 75  ) - the new valu
1f280 65 20 6f 66 20 74 68 65 20 73 6f 72 74 65 72 2d  e of the sorter-
1f290 72 65 66 65 72 65 6e 63 65 20 73 69 7a 65 20 74  reference size t
1f2a0 68 72 65 73 68 6f 6c 64 2e 0a 2a 2a 20 55 73 75  hreshold..** Usu
1f2b0 61 6c 6c 79 2c 20 77 68 65 6e 20 53 51 4c 69 74  ally, when SQLit
1f2c0 65 20 75 73 65 73 20 61 6e 20 65 78 74 65 72 6e  e uses an extern
1f2d0 61 6c 20 73 6f 72 74 20 74 6f 20 6f 72 64 65 72  al sort to order
1f2e0 20 72 65 63 6f 72 64 73 20 61 63 63 6f 72 64 69   records accordi
1f2f0 6e 67 0a 2a 2a 20 74 6f 20 61 6e 20 4f 52 44 45  ng.** to an ORDE
1f300 52 20 42 59 20 63 6c 61 75 73 65 2c 20 61 6c 6c  R BY clause, all
1f310 20 66 69 65 6c 64 73 20 72 65 71 75 69 72 65 64   fields required
1f320 20 62 79 20 74 68 65 20 63 61 6c 6c 65 72 20 61   by the caller a
1f330 72 65 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68  re present in th
1f340 65 0a 2a 2a 20 73 6f 72 74 65 64 20 72 65 63 6f  e.** sorted reco
1f350 72 64 73 2e 20 48 6f 77 65 76 65 72 2c 20 69 66  rds. However, if
1f360 20 53 51 4c 69 74 65 20 64 65 74 65 72 6d 69 6e   SQLite determin
1f370 65 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20  es based on the 
1f380 64 65 63 6c 61 72 65 64 20 74 79 70 65 0a 2a 2a  declared type.**
1f390 20 6f 66 20 61 20 74 61 62 6c 65 20 63 6f 6c 75   of a table colu
1f3a0 6d 6e 20 74 68 61 74 20 69 74 73 20 76 61 6c 75  mn that its valu
1f3b0 65 73 20 61 72 65 20 6c 69 6b 65 6c 79 20 74 6f  es are likely to
1f3c0 20 62 65 20 76 65 72 79 20 6c 61 72 67 65 20 2d   be very large -
1f3d0 20 6c 61 72 67 65 72 0a 2a 2a 20 74 68 61 6e 20   larger.** than 
1f3e0 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 73  the configured s
1f3f0 6f 72 74 65 72 2d 72 65 66 65 72 65 6e 63 65 20  orter-reference 
1f400 73 69 7a 65 20 74 68 72 65 73 68 6f 6c 64 20 2d  size threshold -
1f410 20 74 68 65 6e 20 61 20 72 65 66 65 72 65 6e 63   then a referenc
1f420 65 0a 2a 2a 20 69 73 20 73 74 6f 72 65 64 20 69  e.** is stored i
1f430 6e 20 65 61 63 68 20 73 6f 72 74 65 64 20 72 65  n each sorted re
1f440 63 6f 72 64 20 61 6e 64 20 74 68 65 20 72 65 71  cord and the req
1f450 75 69 72 65 64 20 63 6f 6c 75 6d 6e 20 76 61 6c  uired column val
1f460 75 65 73 20 6c 6f 61 64 65 64 0a 2a 2a 20 66 72  ues loaded.** fr
1f470 6f 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20  om the database 
1f480 61 73 20 72 65 63 6f 72 64 73 20 61 72 65 20 72  as records are r
1f490 65 74 75 72 6e 65 64 20 69 6e 20 73 6f 72 74 65  eturned in sorte
1f4a0 64 20 6f 72 64 65 72 2e 20 54 68 65 20 64 65 66  d order. The def
1f4b0 61 75 6c 74 0a 2a 2a 20 76 61 6c 75 65 20 66 6f  ault.** value fo
1f4c0 72 20 74 68 69 73 20 6f 70 74 69 6f 6e 20 69 73  r this option is
1f4d0 20 74 6f 20 6e 65 76 65 72 20 75 73 65 20 74 68   to never use th
1f4e0 69 73 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 2e  is optimization.
1f4f0 20 53 70 65 63 69 66 79 69 6e 67 20 61 20 0a 2a   Specifying a .*
1f500 2a 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65  * negative value
1f510 20 66 6f 72 20 74 68 69 73 20 6f 70 74 69 6f 6e   for this option
1f520 20 72 65 73 74 6f 72 65 73 20 74 68 65 20 64 65   restores the de
1f530 66 61 75 6c 74 20 62 65 68 61 76 69 6f 75 72 2e  fault behaviour.
1f540 0a 2a 2a 20 54 68 69 73 20 6f 70 74 69 6f 6e 20  .** This option 
1f550 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c  is only availabl
1f560 65 20 69 66 20 53 51 4c 69 74 65 20 69 73 20 63  e if SQLite is c
1f570 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74 68 65  ompiled with the
1f580 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42  .** [SQLITE_ENAB
1f590 4c 45 5f 53 4f 52 54 45 52 5f 52 45 46 45 52 45  LE_SORTER_REFERE
1f5a0 4e 43 45 53 5d 20 63 6f 6d 70 69 6c 65 2d 74 69  NCES] compile-ti
1f5b0 6d 65 20 6f 70 74 69 6f 6e 2e 0a 2a 2a 0a 2a 2a  me option..**.**
1f5c0 20 5b 5b 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47   [[SQLITE_CONFIG
1f5d0 5f 4d 45 4d 44 42 5f 4d 41 58 53 49 5a 45 5d 5d  _MEMDB_MAXSIZE]]
1f5e0 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 43  .** <dt>SQLITE_C
1f5f0 4f 4e 46 49 47 5f 4d 45 4d 44 42 5f 4d 41 58 53  ONFIG_MEMDB_MAXS
1f600 49 5a 45 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 53  IZE.** <dd>The S
1f610 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 45 4d  QLITE_CONFIG_MEM
1f620 44 42 5f 4d 41 58 53 49 5a 45 20 6f 70 74 69 6f  DB_MAXSIZE optio
1f630 6e 20 61 63 63 65 70 74 73 20 61 20 73 69 6e 67  n accepts a sing
1f640 6c 65 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20  le parameter.** 
1f650 5b 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 5d 20  [sqlite3_int64] 
1f660 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 20  parameter which 
1f670 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 6d  is the default m
1f680 61 78 69 6d 75 6d 20 73 69 7a 65 20 66 6f 72 20  aximum size for 
1f690 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 0a 2a 2a 20  an in-memory.** 
1f6a0 64 61 74 61 62 61 73 65 20 63 72 65 61 74 65 64  database created
1f6b0 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
1f6c0 64 65 73 65 72 69 61 6c 69 7a 65 28 29 5d 2e 20  deserialize()]. 
1f6d0 20 54 68 69 73 20 64 65 66 61 75 6c 74 20 6d 61   This default ma
1f6e0 78 69 6d 75 6d 0a 2a 2a 20 73 69 7a 65 20 63 61  ximum.** size ca
1f6f0 6e 20 62 65 20 61 64 6a 75 73 74 65 64 20 75 70  n be adjusted up
1f700 20 6f 72 20 64 6f 77 6e 20 66 6f 72 20 69 6e 64   or down for ind
1f710 69 76 69 64 75 61 6c 20 64 61 74 61 62 61 73 65  ividual database
1f720 73 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a 20 5b  s using the.** [
1f730 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 53 49 5a  SQLITE_FCNTL_SIZ
1f740 45 5f 4c 49 4d 49 54 5d 20 5b 73 71 6c 69 74 65  E_LIMIT] [sqlite
1f750 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 7c 66  3_file_control|f
1f760 69 6c 65 2d 63 6f 6e 74 72 6f 6c 5d 2e 20 20 49  ile-control].  I
1f770 66 20 74 68 69 73 0a 2a 2a 20 63 6f 6e 66 69 67  f this.** config
1f780 75 72 61 74 69 6f 6e 20 73 65 74 74 69 6e 67 20  uration setting 
1f790 69 73 20 6e 65 76 65 72 20 75 73 65 64 2c 20 74  is never used, t
1f7a0 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
1f7b0 6d 61 78 69 6d 75 6d 20 69 73 20 64 65 74 65 72  maximum is deter
1f7c0 6d 69 6e 65 64 0a 2a 2a 20 62 79 20 74 68 65 20  mined.** by the 
1f7d0 5b 53 51 4c 49 54 45 5f 4d 45 4d 44 42 5f 44 45  [SQLITE_MEMDB_DE
1f7e0 46 41 55 4c 54 5f 4d 41 58 53 49 5a 45 5d 20 63  FAULT_MAXSIZE] c
1f7f0 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69  ompile-time opti
1f800 6f 6e 2e 20 20 49 66 20 74 68 61 74 0a 2a 2a 20  on.  If that.** 
1f810 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74  compile-time opt
1f820 69 6f 6e 20 69 73 20 6e 6f 74 20 73 65 74 2c 20  ion is not set, 
1f830 74 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74  then the default
1f840 20 6d 61 78 69 6d 75 6d 20 69 73 20 31 30 37 33   maximum is 1073
1f850 37 34 31 38 32 34 2e 0a 2a 2a 20 3c 2f 64 6c 3e  741824..** </dl>
1f860 0a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  .*/.#define SQLI
1f870 54 45 5f 43 4f 4e 46 49 47 5f 53 49 4e 47 4c 45  TE_CONFIG_SINGLE
1f880 54 48 52 45 41 44 20 20 31 20 20 2f 2a 20 6e 69  THREAD  1  /* ni
1f890 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  l */.#define SQL
1f8a0 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 4c 54 49  ITE_CONFIG_MULTI
1f8b0 54 48 52 45 41 44 20 20 20 32 20 20 2f 2a 20 6e  THREAD   2  /* n
1f8c0 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  il */.#define SQ
1f8d0 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 53 45 52 49  LITE_CONFIG_SERI
1f8e0 41 4c 49 5a 45 44 20 20 20 20 33 20 20 2f 2a 20  ALIZED    3  /* 
1f8f0 6e 69 6c 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  nil */.#define S
1f900 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 41 4c  QLITE_CONFIG_MAL
1f910 4c 4f 43 20 20 20 20 20 20 20 20 34 20 20 2f 2a  LOC        4  /*
1f920 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d 65 74   sqlite3_mem_met
1f930 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  hods* */.#define
1f940 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1f950 45 54 4d 41 4c 4c 4f 43 20 20 20 20 20 35 20 20  ETMALLOC     5  
1f960 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 65 6d 5f 6d  /* sqlite3_mem_m
1f970 65 74 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69  ethods* */.#defi
1f980 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1f990 5f 53 43 52 41 54 43 48 20 20 20 20 20 20 20 36  _SCRATCH       6
1f9a0 20 20 2f 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75    /* No longer u
1f9b0 73 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  sed */.#define S
1f9c0 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 41 47  QLITE_CONFIG_PAG
1f9d0 45 43 41 43 48 45 20 20 20 20 20 37 20 20 2f 2a  ECACHE     7  /*
1f9e0 20 76 6f 69 64 2a 2c 20 69 6e 74 20 73 7a 2c 20   void*, int sz, 
1f9f0 69 6e 74 20 4e 20 2a 2f 0a 23 64 65 66 69 6e 65  int N */.#define
1fa00 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 48   SQLITE_CONFIG_H
1fa10 45 41 50 20 20 20 20 20 20 20 20 20 20 38 20 20  EAP          8  
1fa20 2f 2a 20 76 6f 69 64 2a 2c 20 69 6e 74 20 6e 42  /* void*, int nB
1fa30 79 74 65 2c 20 69 6e 74 20 6d 69 6e 20 2a 2f 0a  yte, int min */.
1fa40 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fa50 4f 4e 46 49 47 5f 4d 45 4d 53 54 41 54 55 53 20  ONFIG_MEMSTATUS 
1fa60 20 20 20 20 39 20 20 2f 2a 20 62 6f 6f 6c 65 61      9  /* boolea
1fa70 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  n */.#define SQL
1fa80 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 55 54 45 58  ITE_CONFIG_MUTEX
1fa90 20 20 20 20 20 20 20 20 31 30 20 20 2f 2a 20 73          10  /* s
1faa0 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6d 65 74  qlite3_mutex_met
1fab0 68 6f 64 73 2a 20 2a 2f 0a 23 64 65 66 69 6e 65  hods* */.#define
1fac0 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47   SQLITE_CONFIG_G
1fad0 45 54 4d 55 54 45 58 20 20 20 20 20 31 31 20 20  ETMUTEX     11  
1fae0 2f 2a 20 73 71 6c 69 74 65 33 5f 6d 75 74 65 78  /* sqlite3_mutex
1faf0 5f 6d 65 74 68 6f 64 73 2a 20 2a 2f 0a 2f 2a 20  _methods* */./* 
1fb00 70 72 65 76 69 6f 75 73 6c 79 20 53 51 4c 49 54  previously SQLIT
1fb10 45 5f 43 4f 4e 46 49 47 5f 43 48 55 4e 4b 41 4c  E_CONFIG_CHUNKAL
1fb20 4c 4f 43 20 31 32 20 77 68 69 63 68 20 69 73 20  LOC 12 which is 
1fb30 6e 6f 77 20 75 6e 75 73 65 64 2e 20 2a 2f 20 0a  now unused. */ .
1fb40 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fb50 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
1fb60 20 20 20 31 33 20 20 2f 2a 20 69 6e 74 20 69 6e     13  /* int in
1fb70 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  t */.#define SQL
1fb80 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43 48  ITE_CONFIG_PCACH
1fb90 45 20 20 20 20 20 20 20 31 34 20 20 2f 2a 20 6e  E       14  /* n
1fba0 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69 6e 65 20  o-op */.#define 
1fbb0 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 47 45  SQLITE_CONFIG_GE
1fbc0 54 50 43 41 43 48 45 20 20 20 20 31 35 20 20 2f  TPCACHE    15  /
1fbd0 2a 20 6e 6f 2d 6f 70 20 2a 2f 0a 23 64 65 66 69  * no-op */.#defi
1fbe0 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1fbf0 5f 4c 4f 47 20 20 20 20 20 20 20 20 20 20 31 36  _LOG          16
1fc00 20 20 2f 2a 20 78 46 75 6e 63 2c 20 76 6f 69 64    /* xFunc, void
1fc10 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c  * */.#define SQL
1fc20 49 54 45 5f 43 4f 4e 46 49 47 5f 55 52 49 20 20  ITE_CONFIG_URI  
1fc30 20 20 20 20 20 20 20 20 31 37 20 20 2f 2a 20 69          17  /* i
1fc40 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  nt */.#define SQ
1fc50 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 50 43 41 43  LITE_CONFIG_PCAC
1fc60 48 45 32 20 20 20 20 20 20 31 38 20 20 2f 2a 20  HE2      18  /* 
1fc70 73 71 6c 69 74 65 33 5f 70 63 61 63 68 65 5f 6d  sqlite3_pcache_m
1fc80 65 74 68 6f 64 73 32 2a 20 2a 2f 0a 23 64 65 66  ethods2* */.#def
1fc90 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fca0 47 5f 47 45 54 50 43 41 43 48 45 32 20 20 20 31  G_GETPCACHE2   1
1fcb0 39 20 20 2f 2a 20 73 71 6c 69 74 65 33 5f 70 63  9  /* sqlite3_pc
1fcc0 61 63 68 65 5f 6d 65 74 68 6f 64 73 32 2a 20 2a  ache_methods2* *
1fcd0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fce0 5f 43 4f 4e 46 49 47 5f 43 4f 56 45 52 49 4e 47  _CONFIG_COVERING
1fcf0 5f 49 4e 44 45 58 5f 53 43 41 4e 20 32 30 20 20  _INDEX_SCAN 20  
1fd00 2f 2a 20 69 6e 74 20 2a 2f 0a 23 64 65 66 69 6e  /* int */.#defin
1fd10 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1fd20 53 51 4c 4c 4f 47 20 20 20 20 20 20 20 32 31 20  SQLLOG       21 
1fd30 20 2f 2a 20 78 53 71 6c 6c 6f 67 2c 20 76 6f 69   /* xSqllog, voi
1fd40 64 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  d* */.#define SQ
1fd50 4c 49 54 45 5f 43 4f 4e 46 49 47 5f 4d 4d 41 50  LITE_CONFIG_MMAP
1fd60 5f 53 49 5a 45 20 20 20 20 32 32 20 20 2f 2a 20  _SIZE    22  /* 
1fd70 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 2c 20 73  sqlite3_int64, s
1fd80 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 2a 2f 0a  qlite3_int64 */.
1fd90 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fda0 4f 4e 46 49 47 5f 57 49 4e 33 32 5f 48 45 41 50  ONFIG_WIN32_HEAP
1fdb0 53 49 5a 45 20 20 20 20 20 20 32 33 20 20 2f 2a  SIZE      23  /*
1fdc0 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a 23 64   int nByte */.#d
1fdd0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e  efine SQLITE_CON
1fde0 46 49 47 5f 50 43 41 43 48 45 5f 48 44 52 53 5a  FIG_PCACHE_HDRSZ
1fdf0 20 20 20 20 20 20 20 20 32 34 20 20 2f 2a 20 69          24  /* i
1fe00 6e 74 20 2a 70 73 7a 20 2a 2f 0a 23 64 65 66 69  nt *psz */.#defi
1fe10 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47  ne SQLITE_CONFIG
1fe20 5f 50 4d 41 53 5a 20 20 20 20 20 20 20 20 20 20  _PMASZ          
1fe30 20 20 20 20 20 32 35 20 20 2f 2a 20 75 6e 73 69       25  /* unsi
1fe40 67 6e 65 64 20 69 6e 74 20 73 7a 50 6d 61 20 2a  gned int szPma *
1fe50 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
1fe60 5f 43 4f 4e 46 49 47 5f 53 54 4d 54 4a 52 4e 4c  _CONFIG_STMTJRNL
1fe70 5f 53 50 49 4c 4c 20 20 20 20 20 20 32 36 20 20  _SPILL      26  
1fe80 2f 2a 20 69 6e 74 20 6e 42 79 74 65 20 2a 2f 0a  /* int nByte */.
1fe90 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
1fea0 4f 4e 46 49 47 5f 53 4d 41 4c 4c 5f 4d 41 4c 4c  ONFIG_SMALL_MALL
1feb0 4f 43 20 20 20 20 20 20 20 20 32 37 20 20 2f 2a  OC        27  /*
1fec0 20 62 6f 6f 6c 65 61 6e 20 2a 2f 0a 23 64 65 66   boolean */.#def
1fed0 69 6e 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49  ine SQLITE_CONFI
1fee0 47 5f 53 4f 52 54 45 52 52 45 46 5f 53 49 5a 45  G_SORTERREF_SIZE
1fef0 20 20 20 20 20 20 32 38 20 20 2f 2a 20 69 6e 74        28  /* int
1ff00 20 6e 42 79 74 65 20 2a 2f 0a 23 64 65 66 69 6e   nByte */.#defin
1ff10 65 20 53 51 4c 49 54 45 5f 43 4f 4e 46 49 47 5f  e SQLITE_CONFIG_
1ff20 4d 45 4d 44 42 5f 4d 41 58 53 49 5a 45 20 20 20  MEMDB_MAXSIZE   
1ff30 20 20 20 20 32 39 20 20 2f 2a 20 73 71 6c 69 74      29  /* sqlit
1ff40 65 33 5f 69 6e 74 36 34 20 2a 2f 0a 0a 2f 2a 0a  e3_int64 */../*.
1ff50 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 61 74  ** CAPI3REF: Dat
1ff60 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f 6e  abase Connection
1ff70 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 4f   Configuration O
1ff80 70 74 69 6f 6e 73 0a 2a 2a 0a 2a 2a 20 54 68 65  ptions.**.** The
1ff90 73 65 20 63 6f 6e 73 74 61 6e 74 73 20 61 72 65  se constants are
1ffa0 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 69   the available i
1ffb0 6e 74 65 67 65 72 20 63 6f 6e 66 69 67 75 72 61  nteger configura
1ffc0 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 74 68 61  tion options tha
1ffd0 74 0a 2a 2a 20 63 61 6e 20 62 65 20 70 61 73 73  t.** can be pass
1ffe0 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e 64  ed as the second
1fff0 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
20000 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e   [sqlite3_db_con
20010 66 69 67 28 29 5d 20 69 6e 74 65 72 66 61 63 65  fig()] interface
20020 2e 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 63 6f 6e 66  ..**.** New conf
20030 69 67 75 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e  iguration option
20040 73 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69  s may be added i
20050 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65  n future release
20060 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 20  s of SQLite..** 
20070 45 78 69 73 74 69 6e 67 20 63 6f 6e 66 69 67 75  Existing configu
20080 72 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 20 6d  ration options m
20090 69 67 68 74 20 62 65 20 64 69 73 63 6f 6e 74 69  ight be disconti
200a0 6e 75 65 64 2e 20 20 41 70 70 6c 69 63 61 74 69  nued.  Applicati
200b0 6f 6e 73 0a 2a 2a 20 73 68 6f 75 6c 64 20 63 68  ons.** should ch
200c0 65 63 6b 20 74 68 65 20 72 65 74 75 72 6e 20 63  eck the return c
200d0 6f 64 65 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65  ode from [sqlite
200e0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d 20 74  3_db_config()] t
200f0 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74  o make sure that
20100 0a 2a 2a 20 74 68 65 20 63 61 6c 6c 20 77 6f 72  .** the call wor
20110 6b 65 64 2e 20 20 5e 54 68 65 20 5b 73 71 6c 69  ked.  ^The [sqli
20120 74 65 33 5f 64 62 5f 63 6f 6e 66 69 67 28 29 5d  te3_db_config()]
20130 20 69 6e 74 65 72 66 61 63 65 20 77 69 6c 6c 20   interface will 
20140 72 65 74 75 72 6e 20 61 0a 2a 2a 20 6e 6f 6e 2d  return a.** non-
20150 7a 65 72 6f 20 5b 65 72 72 6f 72 20 63 6f 64 65  zero [error code
20160 5d 20 69 66 20 61 20 64 69 73 63 6f 6e 74 69 6e  ] if a discontin
20170 75 65 64 20 6f 72 20 75 6e 73 75 70 70 6f 72 74  ued or unsupport
20180 65 64 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ed configuration
20190 20 6f 70 74 69 6f 6e 0a 2a 2a 20 69 73 20 69 6e   option.** is in
201a0 76 6f 6b 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c  voked..**.** <dl
201b0 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42  >.** [[SQLITE_DB
201c0 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45  CONFIG_LOOKASIDE
201d0 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45  ]].** <dt>SQLITE
201e0 5f 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53  _DBCONFIG_LOOKAS
201f0 49 44 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  IDE</dt>.** <dd>
20200 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 74 61   ^This option ta
20210 6b 65 73 20 74 68 72 65 65 20 61 64 64 69 74 69  kes three additi
20220 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 20 74  onal arguments t
20230 68 61 74 20 64 65 74 65 72 6d 69 6e 65 20 74 68  hat determine th
20240 65 20 0a 2a 2a 20 5b 6c 6f 6f 6b 61 73 69 64 65  e .** [lookaside
20250 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f   memory allocato
20260 72 5d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  r] configuration
20270 20 66 6f 72 20 74 68 65 20 5b 64 61 74 61 62 61   for the [databa
20280 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 2e 0a  se connection]..
20290 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61 72  ** ^The first ar
202a0 67 75 6d 65 6e 74 20 28 74 68 65 20 74 68 69 72  gument (the thir
202b0 64 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 5b  d parameter to [
202c0 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
202d0 67 28 29 5d 20 69 73 20 61 0a 2a 2a 20 70 6f 69  g()] is a.** poi
202e0 6e 74 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79  nter to a memory
202f0 20 62 75 66 66 65 72 20 74 6f 20 75 73 65 20 66   buffer to use f
20300 6f 72 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65 6d  or lookaside mem
20310 6f 72 79 2e 0a 2a 2a 20 5e 54 68 65 20 66 69 72  ory..** ^The fir
20320 73 74 20 61 72 67 75 6d 65 6e 74 20 61 66 74 65  st argument afte
20330 72 20 74 68 65 20 53 51 4c 49 54 45 5f 44 42 43  r the SQLITE_DBC
20340 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49 44 45 20  ONFIG_LOOKASIDE 
20350 76 65 72 62 0a 2a 2a 20 6d 61 79 20 62 65 20 4e  verb.** may be N
20360 55 4c 4c 20 69 6e 20 77 68 69 63 68 20 63 61 73  ULL in which cas
20370 65 20 53 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c  e SQLite will al
20380 6c 6f 63 61 74 65 20 74 68 65 0a 2a 2a 20 6c 6f  locate the.** lo
20390 6f 6b 61 73 69 64 65 20 62 75 66 66 65 72 20 69  okaside buffer i
203a0 74 73 65 6c 66 20 75 73 69 6e 67 20 5b 73 71 6c  tself using [sql
203b0 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 2e 20  ite3_malloc()]. 
203c0 5e 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75  ^The second argu
203d0 6d 65 6e 74 20 69 73 20 74 68 65 0a 2a 2a 20 73  ment is the.** s
203e0 69 7a 65 20 6f 66 20 65 61 63 68 20 6c 6f 6f 6b  ize of each look
203f0 61 73 69 64 65 20 62 75 66 66 65 72 20 73 6c 6f  aside buffer slo
20400 74 2e 20 20 5e 54 68 65 20 74 68 69 72 64 20 61  t.  ^The third a
20410 72 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 6e  rgument is the n
20420 75 6d 62 65 72 20 6f 66 0a 2a 2a 20 73 6c 6f 74  umber of.** slot
20430 73 2e 20 20 54 68 65 20 73 69 7a 65 20 6f 66 20  s.  The size of 
20440 74 68 65 20 62 75 66 66 65 72 20 69 6e 20 74 68  the buffer in th
20450 65 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74  e first argument
20460 20 6d 75 73 74 20 62 65 20 67 72 65 61 74 65 72   must be greater
20470 20 74 68 61 6e 0a 2a 2a 20 6f 72 20 65 71 75 61   than.** or equa
20480 6c 20 74 6f 20 74 68 65 20 70 72 6f 64 75 63 74  l to the product
20490 20 6f 66 20 74 68 65 20 73 65 63 6f 6e 64 20 61   of the second a
204a0 6e 64 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  nd third argumen
204b0 74 73 2e 20 20 54 68 65 20 62 75 66 66 65 72 0a  ts.  The buffer.
204c0 2a 2a 20 6d 75 73 74 20 62 65 20 61 6c 69 67 6e  ** must be align
204d0 65 64 20 74 6f 20 61 6e 20 38 2d 62 79 74 65 20  ed to an 8-byte 
204e0 62 6f 75 6e 64 61 72 79 2e 20 20 5e 49 66 20 74  boundary.  ^If t
204f0 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
20500 6e 74 20 74 6f 0a 2a 2a 20 53 51 4c 49 54 45 5f  nt to.** SQLITE_
20510 44 42 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  DBCONFIG_LOOKASI
20520 44 45 20 69 73 20 6e 6f 74 20 61 20 6d 75 6c 74  DE is not a mult
20530 69 70 6c 65 20 6f 66 20 38 2c 20 69 74 20 69 73  iple of 8, it is
20540 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 2a 2a 20 72   internally.** r
20550 6f 75 6e 64 65 64 20 64 6f 77 6e 20 74 6f 20 74  ounded down to t
20560 68 65 20 6e 65 78 74 20 73 6d 61 6c 6c 65 72 20  he next smaller 
20570 6d 75 6c 74 69 70 6c 65 20 6f 66 20 38 2e 20 20  multiple of 8.  
20580 5e 28 54 68 65 20 6c 6f 6f 6b 61 73 69 64 65 20  ^(The lookaside 
20590 6d 65 6d 6f 72 79 0a 2a 2a 20 63 6f 6e 66 69 67  memory.** config
205a0 75 72 61 74 69 6f 6e 20 66 6f 72 20 61 20 64 61  uration for a da
205b0 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
205c0 6e 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 63 68  n can only be ch
205d0 61 6e 67 65 64 20 77 68 65 6e 20 74 68 61 74 0a  anged when that.
205e0 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73  ** connection is
205f0 20 6e 6f 74 20 63 75 72 72 65 6e 74 6c 79 20 75   not currently u
20600 73 69 6e 67 20 6c 6f 6f 6b 61 73 69 64 65 20 6d  sing lookaside m
20610 65 6d 6f 72 79 2c 20 6f 72 20 69 6e 20 6f 74 68  emory, or in oth
20620 65 72 20 77 6f 72 64 73 0a 2a 2a 20 77 68 65 6e  er words.** when
20630 20 74 68 65 20 22 63 75 72 72 65 6e 74 20 76 61   the "current va
20640 6c 75 65 22 20 72 65 74 75 72 6e 65 64 20 62 79  lue" returned by
20650 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 64 62 5f  .** [sqlite3_db_
20660 73 74 61 74 75 73 5d 28 44 2c 5b 53 51 4c 49 54  status](D,[SQLIT
20670 45 5f 43 4f 4e 46 49 47 5f 4c 4f 4f 4b 41 53 49  E_CONFIG_LOOKASI
20680 44 45 5d 2c 2e 2e 2e 29 20 69 73 20 7a 65 72 6f  DE],...) is zero
20690 2e 0a 2a 2a 20 41 6e 79 20 61 74 74 65 6d 70 74  ..** Any attempt
206a0 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 6c   to change the l
206b0 6f 6f 6b 61 73 69 64 65 20 6d 65 6d 6f 72 79 20  ookaside memory 
206c0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 77 68  configuration wh
206d0 65 6e 20 6c 6f 6f 6b 61 73 69 64 65 0a 2a 2a 20  en lookaside.** 
206e0 6d 65 6d 6f 72 79 20 69 73 20 69 6e 20 75 73 65  memory is in use
206f0 20 6c 65 61 76 65 73 20 74 68 65 20 63 6f 6e 66   leaves the conf
20700 69 67 75 72 61 74 69 6f 6e 20 75 6e 63 68 61 6e  iguration unchan
20710 67 65 64 20 61 6e 64 20 72 65 74 75 72 6e 73 20  ged and returns 
20720 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 42 55 53 59  .** [SQLITE_BUSY
20730 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20  ].)^</dd>.**.** 
20740 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  [[SQLITE_DBCONFI
20750 47 5f 45 4e 41 42 4c 45 5f 46 4b 45 59 5d 5d 0a  G_ENABLE_FKEY]].
20760 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42  ** <dt>SQLITE_DB
20770 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b  CONFIG_ENABLE_FK
20780 45 59 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20  EY</dt>.** <dd> 
20790 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20  ^This option is 
207a0 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20 6f  used to enable o
207b0 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 65 6e  r disable the en
207c0 66 6f 72 63 65 6d 65 6e 74 20 6f 66 0a 2a 2a 20  forcement of.** 
207d0 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 63 6f 6e  [foreign key con
207e0 73 74 72 61 69 6e 74 73 5d 2e 20 20 54 68 65 72  straints].  Ther
207f0 65 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20  e should be two 
20800 61 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d  additional argum
20810 65 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72  ents..** The fir
20820 73 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61  st argument is a
20830 6e 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20  n integer which 
20840 69 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20  is 0 to disable 
20850 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74 2c 0a  FK enforcement,.
20860 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f 20 65  ** positive to e
20870 6e 61 62 6c 65 20 46 4b 20 65 6e 66 6f 72 63 65  nable FK enforce
20880 6d 65 6e 74 20 6f 72 20 6e 65 67 61 74 69 76 65  ment or negative
20890 20 74 6f 20 6c 65 61 76 65 20 46 4b 20 65 6e 66   to leave FK enf
208a0 6f 72 63 65 6d 65 6e 74 0a 2a 2a 20 75 6e 63 68  orcement.** unch
208b0 61 6e 67 65 64 2e 20 20 54 68 65 20 73 65 63 6f  anged.  The seco
208c0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
208d0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20  a pointer to an 
208e0 69 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69  integer into whi
208f0 63 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e  ch.** is written
20900 20 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63   0 or 1 to indic
20910 61 74 65 20 77 68 65 74 68 65 72 20 46 4b 20 65  ate whether FK e
20920 6e 66 6f 72 63 65 6d 65 6e 74 20 69 73 20 6f 66  nforcement is of
20930 66 20 6f 72 20 6f 6e 0a 2a 2a 20 66 6f 6c 6c 6f  f or on.** follo
20940 77 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20  wing this call. 
20950 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
20960 6d 65 74 65 72 20 6d 61 79 20 62 65 20 61 20 4e  meter may be a N
20970 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a  ULL pointer, in.
20980 2a 2a 20 77 68 69 63 68 20 63 61 73 65 20 74 68  ** which case th
20990 65 20 46 4b 20 65 6e 66 6f 72 63 65 6d 65 6e 74  e FK enforcement
209a0 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f 74 20   setting is not 
209b0 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c  reported back. <
209c0 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  /dd>.**.** [[SQL
209d0 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41  ITE_DBCONFIG_ENA
209e0 42 4c 45 5f 54 52 49 47 47 45 52 5d 5d 0a 2a 2a  BLE_TRIGGER]].**
209f0 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
20a00 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54 52 49 47  NFIG_ENABLE_TRIG
20a10 47 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  GER</dt>.** <dd>
20a20 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
20a30 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
20a40 6f 72 20 64 69 73 61 62 6c 65 20 5b 43 52 45 41  or disable [CREA
20a50 54 45 20 54 52 49 47 47 45 52 20 7c 20 74 72 69  TE TRIGGER | tri
20a60 67 67 65 72 73 5d 2e 0a 2a 2a 20 54 68 65 72 65  ggers]..** There
20a70 20 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61   should be two a
20a80 64 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65  dditional argume
20a90 6e 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73  nts..** The firs
20aa0 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e  t argument is an
20ab0 20 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69   integer which i
20ac0 73 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 74  s 0 to disable t
20ad0 72 69 67 67 65 72 73 2c 0a 2a 2a 20 70 6f 73 69  riggers,.** posi
20ae0 74 69 76 65 20 74 6f 20 65 6e 61 62 6c 65 20 74  tive to enable t
20af0 72 69 67 67 65 72 73 20 6f 72 20 6e 65 67 61 74  riggers or negat
20b00 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68 65  ive to leave the
20b10 20 73 65 74 74 69 6e 67 20 75 6e 63 68 61 6e 67   setting unchang
20b20 65 64 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  ed..** The secon
20b30 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
20b40 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
20b50 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
20b60 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
20b70 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
20b80 74 65 20 77 68 65 74 68 65 72 20 74 72 69 67 67  te whether trigg
20b90 65 72 73 20 61 72 65 20 64 69 73 61 62 6c 65 64  ers are disabled
20ba0 20 6f 72 20 65 6e 61 62 6c 65 64 0a 2a 2a 20 66   or enabled.** f
20bb0 6f 6c 6c 6f 77 69 6e 67 20 74 68 69 73 20 63 61  ollowing this ca
20bc0 6c 6c 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  ll.  The second 
20bd0 70 61 72 61 6d 65 74 65 72 20 6d 61 79 20 62 65  parameter may be
20be0 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c   a NULL pointer,
20bf0 20 69 6e 0a 2a 2a 20 77 68 69 63 68 20 63 61 73   in.** which cas
20c00 65 20 74 68 65 20 74 72 69 67 67 65 72 20 73 65  e the trigger se
20c10 74 74 69 6e 67 20 69 73 20 6e 6f 74 20 72 65 70  tting is not rep
20c20 6f 72 74 65 64 20 62 61 63 6b 2e 20 3c 2f 64 64  orted back. </dd
20c30 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
20c40 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
20c50 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 5d  _FTS3_TOKENIZER]
20c60 5d 0a 2a 2a 20 3c 64 74 3e 53 51 4c 49 54 45 5f  ].** <dt>SQLITE_
20c70 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f  DBCONFIG_ENABLE_
20c80 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 3c 2f  FTS3_TOKENIZER</
20c90 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68 69  dt>.** <dd> ^Thi
20ca0 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65 64  s option is used
20cb0 20 74 6f 20 65 6e 61 62 6c 65 20 6f 72 20 64 69   to enable or di
20cc0 73 61 62 6c 65 20 74 68 65 20 74 77 6f 2d 61 72  sable the two-ar
20cd0 67 75 6d 65 6e 74 0a 2a 2a 20 76 65 72 73 69 6f  gument.** versio
20ce0 6e 20 6f 66 20 74 68 65 20 5b 66 74 73 33 5f 74  n of the [fts3_t
20cf0 6f 6b 65 6e 69 7a 65 72 28 29 5d 20 66 75 6e 63  okenizer()] func
20d00 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 70 61  tion which is pa
20d10 72 74 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 46 54  rt of the.** [FT
20d20 53 33 5d 20 66 75 6c 6c 2d 74 65 78 74 20 73 65  S3] full-text se
20d30 61 72 63 68 20 65 6e 67 69 6e 65 20 65 78 74 65  arch engine exte
20d40 6e 73 69 6f 6e 2e 0a 2a 2a 20 54 68 65 72 65 20  nsion..** There 
20d50 73 68 6f 75 6c 64 20 62 65 20 74 77 6f 20 61 64  should be two ad
20d60 64 69 74 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e  ditional argumen
20d70 74 73 2e 0a 2a 2a 20 54 68 65 20 66 69 72 73 74  ts..** The first
20d80 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 6e 20   argument is an 
20d90 69 6e 74 65 67 65 72 20 77 68 69 63 68 20 69 73  integer which is
20da0 20 30 20 74 6f 20 64 69 73 61 62 6c 65 20 66 74   0 to disable ft
20db0 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 28 29 20 6f  s3_tokenizer() o
20dc0 72 0a 2a 2a 20 70 6f 73 69 74 69 76 65 20 74 6f  r.** positive to
20dd0 20 65 6e 61 62 6c 65 20 66 74 73 33 5f 74 6f 6b   enable fts3_tok
20de0 65 6e 69 7a 65 72 28 29 20 6f 72 20 6e 65 67 61  enizer() or nega
20df0 74 69 76 65 20 74 6f 20 6c 65 61 76 65 20 74 68  tive to leave th
20e00 65 20 73 65 74 74 69 6e 67 0a 2a 2a 20 75 6e 63  e setting.** unc
20e10 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
20e20 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
20e30 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
20e40 61 6e 20 69 6e 74 65 67 65 72 20 69 6e 74 6f 20  an integer into 
20e50 77 68 69 63 68 0a 2a 2a 20 69 73 20 77 72 69 74  which.** is writ
20e60 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
20e70 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 66  dicate whether f
20e80 74 73 33 5f 74 6f 6b 65 6e 69 7a 65 72 20 69 73  ts3_tokenizer is
20e90 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
20ea0 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
20eb0 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20 54 68  g this call.  Th
20ec0 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65 74  e second paramet
20ed0 65 72 20 6d 61 79 20 62 65 20 61 20 4e 55 4c 4c  er may be a NULL
20ee0 20 70 6f 69 6e 74 65 72 2c 20 69 6e 0a 2a 2a 20   pointer, in.** 
20ef0 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20 6e  which case the n
20f00 65 77 20 73 65 74 74 69 6e 67 20 69 73 20 6e 6f  ew setting is no
20f10 74 20 72 65 70 6f 72 74 65 64 20 62 61 63 6b 2e  t reported back.
20f20 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53   </dd>.**.** [[S
20f30 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45  QLITE_DBCONFIG_E
20f40 4e 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e  NABLE_LOAD_EXTEN
20f50 53 49 4f 4e 5d 5d 0a 2a 2a 20 3c 64 74 3e 53 51  SION]].** <dt>SQ
20f60 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e  LITE_DBCONFIG_EN
20f70 41 42 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53  ABLE_LOAD_EXTENS
20f80 49 4f 4e 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  ION</dt>.** <dd>
20f90 20 5e 54 68 69 73 20 6f 70 74 69 6f 6e 20 69 73   ^This option is
20fa0 20 75 73 65 64 20 74 6f 20 65 6e 61 62 6c 65 20   used to enable 
20fb0 6f 72 20 64 69 73 61 62 6c 65 20 74 68 65 20 5b  or disable the [
20fc0 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78 74  sqlite3_load_ext
20fd0 65 6e 73 69 6f 6e 28 29 5d 0a 2a 2a 20 69 6e 74  ension()].** int
20fe0 65 72 66 61 63 65 20 69 6e 64 65 70 65 6e 64 65  erface independe
20ff0 6e 74 6c 79 20 6f 66 20 74 68 65 20 5b 6c 6f 61  ntly of the [loa
21000 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29 5d 20 53  d_extension()] S
21010 51 4c 20 66 75 6e 63 74 69 6f 6e 2e 0a 2a 2a 20  QL function..** 
21020 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 65 6e 61  The [sqlite3_ena
21030 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  ble_load_extensi
21040 6f 6e 28 29 5d 20 41 50 49 20 65 6e 61 62 6c 65  on()] API enable
21050 73 20 6f 72 20 64 69 73 61 62 6c 65 73 20 62 6f  s or disables bo
21060 74 68 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20  th the.** C-API 
21070 5b 73 71 6c 69 74 65 33 5f 6c 6f 61 64 5f 65 78  [sqlite3_load_ex
21080 74 65 6e 73 69 6f 6e 28 29 5d 20 61 6e 64 20 74  tension()] and t
21090 68 65 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20  he SQL function 
210a0 5b 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28  [load_extension(
210b0 29 5d 2e 0a 2a 2a 20 54 68 65 72 65 20 73 68 6f  )]..** There sho
210c0 75 6c 64 20 62 65 20 74 77 6f 20 61 64 64 69 74  uld be two addit
210d0 69 6f 6e 61 6c 20 61 72 67 75 6d 65 6e 74 73 2e  ional arguments.
210e0 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 66 69 72  .** When the fir
210f0 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74  st argument to t
21100 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 69 73  his interface is
21110 20 31 2c 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68   1, then only th
21120 65 20 43 2d 41 50 49 20 69 73 0a 2a 2a 20 65 6e  e C-API is.** en
21130 61 62 6c 65 64 20 61 6e 64 20 74 68 65 20 53 51  abled and the SQ
21140 4c 20 66 75 6e 63 74 69 6f 6e 20 72 65 6d 61 69  L function remai
21150 6e 73 20 64 69 73 61 62 6c 65 64 2e 20 20 49 66  ns disabled.  If
21160 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d   the first argum
21170 65 6e 74 20 74 6f 0a 2a 2a 20 74 68 69 73 20 69  ent to.** this i
21180 6e 74 65 72 66 61 63 65 20 69 73 20 30 2c 20 74  nterface is 0, t
21190 68 65 6e 20 62 6f 74 68 20 74 68 65 20 43 2d 41  hen both the C-A
211a0 50 49 20 61 6e 64 20 74 68 65 20 53 51 4c 20 66  PI and the SQL f
211b0 75 6e 63 74 69 6f 6e 20 61 72 65 20 64 69 73 61  unction are disa
211c0 62 6c 65 64 2e 0a 2a 2a 20 49 66 20 74 68 65 20  bled..** If the 
211d0 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
211e0 73 20 2d 31 2c 20 74 68 65 6e 20 6e 6f 20 63 68  s -1, then no ch
211f0 61 6e 67 65 73 20 61 72 65 20 6d 61 64 65 20 74  anges are made t
21200 6f 20 73 74 61 74 65 20 6f 66 20 65 69 74 68 65  o state of eithe
21210 72 20 74 68 65 0a 2a 2a 20 43 2d 41 50 49 20 6f  r the.** C-API o
21220 72 20 74 68 65 20 53 51 4c 20 66 75 6e 63 74 69  r the SQL functi
21230 6f 6e 2e 0a 2a 2a 20 54 68 65 20 73 65 63 6f 6e  on..** The secon
21240 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 61  d parameter is a
21250 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69   pointer to an i
21260 6e 74 65 67 65 72 20 69 6e 74 6f 20 77 68 69 63  nteger into whic
21270 68 0a 2a 2a 20 69 73 20 77 72 69 74 74 65 6e 20  h.** is written 
21280 30 20 6f 72 20 31 20 74 6f 20 69 6e 64 69 63 61  0 or 1 to indica
21290 74 65 20 77 68 65 74 68 65 72 20 5b 73 71 6c 69  te whether [sqli
212a0 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
212b0 6f 6e 28 29 5d 20 69 6e 74 65 72 66 61 63 65 0a  on()] interface.
212c0 2a 2a 20 69 73 20 64 69 73 61 62 6c 65 64 20 6f  ** is disabled o
212d0 72 20 65 6e 61 62 6c 65 64 20 66 6f 6c 6c 6f 77  r enabled follow
212e0 69 6e 67 20 74 68 69 73 20 63 61 6c 6c 2e 20 20  ing this call.  
212f0 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d  The second param
21300 65 74 65 72 20 6d 61 79 0a 2a 2a 20 62 65 20 61  eter may.** be a
21310 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 2c 20 69   NULL pointer, i
21320 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65  n which case the
21330 20 6e 65 77 20 73 65 74 74 69 6e 67 20 69 73 20   new setting is 
21340 6e 6f 74 20 72 65 70 6f 72 74 65 64 20 62 61 63  not reported bac
21350 6b 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a 0a 2a  k..** </dd>.**.*
21360 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43 4f 4e  * [[SQLITE_DBCON
21370 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 5d 5d  FIG_MAINDBNAME]]
21380 20 3c 64 74 3e 53 51 4c 49 54 45 5f 44 42 43 4f   <dt>SQLITE_DBCO
21390 4e 46 49 47 5f 4d 41 49 4e 44 42 4e 41 4d 45 3c  NFIG_MAINDBNAME<
213a0 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 5e 54 68  /dt>.** <dd> ^Th
213b0 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 75 73 65  is option is use
213c0 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20  d to change the 
213d0 6e 61 6d 65 20 6f 66 20 74 68 65 20 22 6d 61 69  name of the "mai
213e0 6e 22 20 64 61 74 61 62 61 73 65 0a 2a 2a 20 73  n" database.** s
213f0 63 68 65 6d 61 2e 20 20 5e 54 68 65 20 73 6f 6c  chema.  ^The sol
21400 65 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  e argument is a 
21410 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 63 6f 6e  pointer to a con
21420 73 74 61 6e 74 20 55 54 46 38 20 73 74 72 69 6e  stant UTF8 strin
21430 67 0a 2a 2a 20 77 68 69 63 68 20 77 69 6c 6c 20  g.** which will 
21440 62 65 63 6f 6d 65 20 74 68 65 20 6e 65 77 20 73  become the new s
21450 63 68 65 6d 61 20 6e 61 6d 65 20 69 6e 20 70 6c  chema name in pl
21460 61 63 65 20 6f 66 20 22 6d 61 69 6e 22 2e 20 20  ace of "main".  
21470 5e 53 51 4c 69 74 65 0a 2a 2a 20 64 6f 65 73 20  ^SQLite.** does 
21480 6e 6f 74 20 6d 61 6b 65 20 61 20 63 6f 70 79 20  not make a copy 
21490 6f 66 20 74 68 65 20 6e 65 77 20 6d 61 69 6e 20  of the new main 
214a0 73 63 68 65 6d 61 20 6e 61 6d 65 20 73 74 72 69  schema name stri
214b0 6e 67 2c 20 73 6f 20 74 68 65 20 61 70 70 6c 69  ng, so the appli
214c0 63 61 74 69 6f 6e 0a 2a 2a 20 6d 75 73 74 20 65  cation.** must e
214d0 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 61  nsure that the a
214e0 72 67 75 6d 65 6e 74 20 70 61 73 73 65 64 20 69  rgument passed i
214f0 6e 74 6f 20 74 68 69 73 20 44 42 43 4f 4e 46 49  nto this DBCONFI
21500 47 20 6f 70 74 69 6f 6e 20 69 73 20 75 6e 63 68  G option is unch
21510 61 6e 67 65 64 0a 2a 2a 20 75 6e 74 69 6c 20 61  anged.** until a
21520 66 74 65 72 20 74 68 65 20 64 61 74 61 62 61 73  fter the databas
21530 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6c 6f  e connection clo
21540 73 65 73 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a 2a 2a  ses..** </dd>.**
21550 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44 42 43  .** [[SQLITE_DBC
21560 4f 4e 46 49 47 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e  ONFIG_NO_CKPT_ON
21570 5f 43 4c 4f 53 45 5d 5d 20 0a 2a 2a 20 3c 64 74  _CLOSE]] .** <dt
21580 3e 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47  >SQLITE_DBCONFIG
21590 5f 4e 4f 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53  _NO_CKPT_ON_CLOS
215a0 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 20 55  E</dt>.** <dd> U
215b0 73 75 61 6c 6c 79 2c 20 77 68 65 6e 20 61 20 64  sually, when a d
215c0 61 74 61 62 61 73 65 20 69 6e 20 77 61 6c 20 6d  atabase in wal m
215d0 6f 64 65 20 69 73 20 63 6c 6f 73 65 64 20 6f 72  ode is closed or
215e0 20 64 65 74 61 63 68 65 64 20 66 72 6f 6d 20 61   detached from a
215f0 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 68 61   .** database ha
21600 6e 64 6c 65 2c 20 53 51 4c 69 74 65 20 63 68 65  ndle, SQLite che
21610 63 6b 73 20 69 66 20 74 68 69 73 20 77 69 6c 6c  cks if this will
21620 20 6d 65 61 6e 20 74 68 61 74 20 74 68 65 72 65   mean that there
21630 20 61 72 65 20 6e 6f 77 20 6e 6f 20 0a 2a 2a 20   are now no .** 
21640 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 61 74 20 61  connections at a
21650 6c 6c 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  ll to the databa
21660 73 65 2e 20 49 66 20 73 6f 2c 20 69 74 20 70 65  se. If so, it pe
21670 72 66 6f 72 6d 73 20 61 20 63 68 65 63 6b 70 6f  rforms a checkpo
21680 69 6e 74 20 0a 2a 2a 20 6f 70 65 72 61 74 69 6f  int .** operatio
21690 6e 20 62 65 66 6f 72 65 20 63 6c 6f 73 69 6e 67  n before closing
216a0 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
216b0 20 54 68 69 73 20 6f 70 74 69 6f 6e 20 6d 61 79   This option may
216c0 20 62 65 20 75 73 65 64 20 74 6f 0a 2a 2a 20 6f   be used to.** o
216d0 76 65 72 72 69 64 65 20 74 68 69 73 20 62 65 68  verride this beh
216e0 61 76 69 6f 75 72 2e 20 54 68 65 20 66 69 72 73  aviour. The firs
216f0 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
21700 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
21710 74 69 6f 6e 0a 2a 2a 20 69 73 20 61 6e 20 69 6e  tion.** is an in
21720 74 65 67 65 72 20 2d 20 70 6f 73 69 74 69 76 65  teger - positive
21730 20 74 6f 20 64 69 73 61 62 6c 65 20 63 68 65 63   to disable chec
21740 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c 6f 73 65  kpoints-on-close
21750 2c 20 6f 72 20 7a 65 72 6f 20 28 74 68 65 0a 2a  , or zero (the.*
21760 2a 20 64 65 66 61 75 6c 74 29 20 74 6f 20 65 6e  * default) to en
21770 61 62 6c 65 20 74 68 65 6d 2c 20 61 6e 64 20 6e  able them, and n
21780 65 67 61 74 69 76 65 20 74 6f 20 6c 65 61 76 65  egative to leave
21790 20 74 68 65 20 73 65 74 74 69 6e 67 20 75 6e 63   the setting unc
217a0 68 61 6e 67 65 64 2e 0a 2a 2a 20 54 68 65 20 73  hanged..** The s
217b0 65 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20  econd parameter 
217c0 69 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20  is a pointer to 
217d0 61 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 69 6e  an integer.** in
217e0 74 6f 20 77 68 69 63 68 20 69 73 20 77 72 69 74  to which is writ
217f0 74 65 6e 20 30 20 6f 72 20 31 20 74 6f 20 69 6e  ten 0 or 1 to in
21800 64 69 63 61 74 65 20 77 68 65 74 68 65 72 20 63  dicate whether c
21810 68 65 63 6b 70 6f 69 6e 74 73 2d 6f 6e 2d 63 6c  heckpoints-on-cl
21820 6f 73 65 0a 2a 2a 20 68 61 76 65 20 62 65 65 6e  ose.** have been
21830 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20 69 66   disabled - 0 if
21840 20 74 68 65 79 20 61 72 65 20 6e 6f 74 20 64 69   they are not di
21850 73 61 62 6c 65 64 2c 20 31 20 69 66 20 74 68 65  sabled, 1 if the
21860 79 20 61 72 65 2e 0a 2a 2a 20 3c 2f 64 64 3e 0a  y are..** </dd>.
21870 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 44  **.** [[SQLITE_D
21880 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
21890 50 53 47 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  PSG]] <dt>SQLITE
218a0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
218b0 5f 51 50 53 47 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  _QPSG</dt>.** <d
218c0 64 3e 5e 28 54 68 65 20 53 51 4c 49 54 45 5f 44  d>^(The SQLITE_D
218d0 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 51  BCONFIG_ENABLE_Q
218e0 50 53 47 20 6f 70 74 69 6f 6e 20 61 63 74 69 76  PSG option activ
218f0 61 74 65 73 20 6f 72 20 64 65 61 63 74 69 76 61  ates or deactiva
21900 74 65 73 0a 2a 2a 20 74 68 65 20 5b 71 75 65 72  tes.** the [quer
21910 79 20 70 6c 61 6e 6e 65 72 20 73 74 61 62 69 6c  y planner stabil
21920 69 74 79 20 67 75 61 72 61 6e 74 65 65 5d 20 28  ity guarantee] (
21930 51 50 53 47 29 2e 20 20 57 68 65 6e 20 74 68 65  QPSG).  When the
21940 20 51 50 53 47 20 69 73 20 61 63 74 69 76 65 2c   QPSG is active,
21950 0a 2a 2a 20 61 20 73 69 6e 67 6c 65 20 53 51 4c  .** a single SQL
21960 20 71 75 65 72 79 20 73 74 61 74 65 6d 65 6e 74   query statement
21970 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 75 73 65   will always use
21980 20 74 68 65 20 73 61 6d 65 20 61 6c 67 6f 72 69   the same algori
21990 74 68 6d 20 72 65 67 61 72 64 6c 65 73 73 0a 2a  thm regardless.*
219a0 2a 20 6f 66 20 76 61 6c 75 65 73 20 6f 66 20 5b  * of values of [
219b0 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73  bound parameters
219c0 5d 2e 29 5e 20 54 68 65 20 51 50 53 47 20 64 69  ].)^ The QPSG di
219d0 73 61 62 6c 65 73 20 73 6f 6d 65 20 71 75 65 72  sables some quer
219e0 79 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 0a  y optimizations.
219f0 2a 2a 20 74 68 61 74 20 6c 6f 6f 6b 20 61 74 20  ** that look at 
21a00 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 62 6f  the values of bo
21a10 75 6e 64 20 70 61 72 61 6d 65 74 65 72 73 2c 20  und parameters, 
21a20 77 68 69 63 68 20 63 61 6e 20 6d 61 6b 65 20 73  which can make s
21a30 6f 6d 65 20 71 75 65 72 69 65 73 0a 2a 2a 20 73  ome queries.** s
21a40 6c 6f 77 65 72 2e 20 20 42 75 74 20 74 68 65 20  lower.  But the 
21a50 51 50 53 47 20 68 61 73 20 74 68 65 20 61 64 76  QPSG has the adv
21a60 61 6e 74 61 67 65 20 6f 66 20 6d 6f 72 65 20 70  antage of more p
21a70 72 65 64 69 63 74 61 62 6c 65 20 62 65 68 61 76  redictable behav
21a80 69 6f 72 2e 20 20 57 69 74 68 0a 2a 2a 20 74 68  ior.  With.** th
21a90 65 20 51 50 53 47 20 61 63 74 69 76 65 2c 20 53  e QPSG active, S
21aa0 51 4c 69 74 65 20 77 69 6c 6c 20 61 6c 77 61 79  QLite will alway
21ab0 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 71  s use the same q
21ac0 75 65 72 79 20 70 6c 61 6e 20 69 6e 20 74 68 65  uery plan in the
21ad0 20 66 69 65 6c 64 20 61 73 0a 2a 2a 20 77 61 73   field as.** was
21ae0 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 65 73   used during tes
21af0 74 69 6e 67 20 69 6e 20 74 68 65 20 6c 61 62 2e  ting in the lab.
21b00 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61 72  .** The first ar
21b10 67 75 6d 65 6e 74 20 74 6f 20 74 68 69 73 20 73  gument to this s
21b20 65 74 74 69 6e 67 20 69 73 20 61 6e 20 69 6e 74  etting is an int
21b30 65 67 65 72 20 77 68 69 63 68 20 69 73 20 30 20  eger which is 0 
21b40 74 6f 20 64 69 73 61 62 6c 65 20 0a 2a 2a 20 74  to disable .** t
21b50 68 65 20 51 50 53 47 2c 20 70 6f 73 69 74 69 76  he QPSG, positiv
21b60 65 20 74 6f 20 65 6e 61 62 6c 65 20 51 50 53 47  e to enable QPSG
21b70 2c 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  , or negative to
21b80 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
21b90 6e 67 0a 2a 2a 20 75 6e 63 68 61 6e 67 65 64 2e  ng.** unchanged.
21ba0 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
21bb0 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
21bc0 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
21bd0 20 69 6e 74 6f 20 77 68 69 63 68 0a 2a 2a 20 69   into which.** i
21be0 73 20 77 72 69 74 74 65 6e 20 30 20 6f 72 20 31  s written 0 or 1
21bf0 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65   to indicate whe
21c00 74 68 65 72 20 74 68 65 20 51 50 53 47 20 69 73  ther the QPSG is
21c10 20 64 69 73 61 62 6c 65 64 20 6f 72 20 65 6e 61   disabled or ena
21c20 62 6c 65 64 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e  bled.** followin
21c30 67 20 74 68 69 73 20 63 61 6c 6c 2e 0a 2a 2a 20  g this call..** 
21c40 3c 2f 64 64 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51  </dd>.**.** [[SQ
21c50 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 54 52  LITE_DBCONFIG_TR
21c60 49 47 47 45 52 5f 45 51 50 5d 5d 20 3c 64 74 3e  IGGER_EQP]] <dt>
21c70 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
21c80 54 52 49 47 47 45 52 5f 45 51 50 3c 2f 64 74 3e  TRIGGER_EQP</dt>
21c90 0a 2a 2a 20 3c 64 64 3e 20 42 79 20 64 65 66 61  .** <dd> By defa
21ca0 75 6c 74 2c 20 74 68 65 20 6f 75 74 70 75 74 20  ult, the output 
21cb0 6f 66 20 45 58 50 4c 41 49 4e 20 51 55 45 52 59  of EXPLAIN QUERY
21cc0 20 50 4c 41 4e 20 63 6f 6d 6d 61 6e 64 73 20 64   PLAN commands d
21cd0 6f 65 73 20 6e 6f 74 20 0a 2a 2a 20 69 6e 63 6c  oes not .** incl
21ce0 75 64 65 20 6f 75 74 70 75 74 20 66 6f 72 20 61  ude output for a
21cf0 6e 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 70 65  ny operations pe
21d00 72 66 6f 72 6d 65 64 20 62 79 20 74 72 69 67 67  rformed by trigg
21d10 65 72 20 70 72 6f 67 72 61 6d 73 2e 20 54 68 69  er programs. Thi
21d20 73 0a 2a 2a 20 6f 70 74 69 6f 6e 20 69 73 20 75  s.** option is u
21d30 73 65 64 20 74 6f 20 73 65 74 20 6f 72 20 63 6c  sed to set or cl
21d40 65 61 72 20 28 74 68 65 20 64 65 66 61 75 6c 74  ear (the default
21d50 29 20 61 20 66 6c 61 67 20 74 68 61 74 20 67 6f  ) a flag that go
21d60 76 65 72 6e 73 20 74 68 69 73 0a 2a 2a 20 62 65  verns this.** be
21d70 68 61 76 69 6f 72 2e 20 54 68 65 20 66 69 72 73  havior. The firs
21d80 74 20 70 61 72 61 6d 65 74 65 72 20 70 61 73 73  t parameter pass
21d90 65 64 20 74 6f 20 74 68 69 73 20 6f 70 65 72 61  ed to this opera
21da0 74 69 6f 6e 20 69 73 20 61 6e 20 69 6e 74 65 67  tion is an integ
21db0 65 72 20 2d 0a 2a 2a 20 70 6f 73 69 74 69 76 65  er -.** positive
21dc0 20 74 6f 20 65 6e 61 62 6c 65 20 6f 75 74 70 75   to enable outpu
21dd0 74 20 66 6f 72 20 74 72 69 67 67 65 72 20 70 72  t for trigger pr
21de0 6f 67 72 61 6d 73 2c 20 6f 72 20 7a 65 72 6f 20  ograms, or zero 
21df0 74 6f 20 64 69 73 61 62 6c 65 20 69 74 2c 0a 2a  to disable it,.*
21e00 2a 20 6f 72 20 6e 65 67 61 74 69 76 65 20 74 6f  * or negative to
21e10 20 6c 65 61 76 65 20 74 68 65 20 73 65 74 74 69   leave the setti
21e20 6e 67 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a  ng unchanged..**
21e30 20 54 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61   The second para
21e40 6d 65 74 65 72 20 69 73 20 61 20 70 6f 69 6e 74  meter is a point
21e50 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72  er to an integer
21e60 20 69 6e 74 6f 20 77 68 69 63 68 20 69 73 20 77   into which is w
21e70 72 69 74 74 65 6e 20 0a 2a 2a 20 30 20 6f 72 20  ritten .** 0 or 
21e80 31 20 74 6f 20 69 6e 64 69 63 61 74 65 20 77 68  1 to indicate wh
21e90 65 74 68 65 72 20 6f 75 74 70 75 74 2d 66 6f 72  ether output-for
21ea0 2d 74 72 69 67 67 65 72 73 20 68 61 73 20 62 65  -triggers has be
21eb0 65 6e 20 64 69 73 61 62 6c 65 64 20 2d 20 30 20  en disabled - 0 
21ec0 69 66 20 0a 2a 2a 20 69 74 20 69 73 20 6e 6f 74  if .** it is not
21ed0 20 64 69 73 61 62 6c 65 64 2c 20 31 20 69 66 20   disabled, 1 if 
21ee0 69 74 20 69 73 2e 20 20 0a 2a 2a 20 3c 2f 64 64  it is.  .** </dd
21ef0 3e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  >.**.** [[SQLITE
21f00 5f 44 42 43 4f 4e 46 49 47 5f 52 45 53 45 54 5f  _DBCONFIG_RESET_
21f10 44 41 54 41 42 41 53 45 5d 5d 20 3c 64 74 3e 53  DATABASE]] <dt>S
21f20 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 52  QLITE_DBCONFIG_R
21f30 45 53 45 54 5f 44 41 54 41 42 41 53 45 3c 2f 64  ESET_DATABASE</d
21f40 74 3e 0a 2a 2a 20 3c 64 64 3e 20 53 65 74 20 74  t>.** <dd> Set t
21f50 68 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46  he SQLITE_DBCONF
21f60 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41 53  IG_RESET_DATABAS
21f70 45 20 66 6c 61 67 20 61 6e 64 20 74 68 65 6e 20  E flag and then 
21f80 72 75 6e 0a 2a 2a 20 5b 56 41 43 55 55 4d 5d 20  run.** [VACUUM] 
21f90 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 73 65  in order to rese
21fa0 74 20 61 20 64 61 74 61 62 61 73 65 20 62 61 63  t a database bac
21fb0 6b 20 74 6f 20 61 6e 20 65 6d 70 74 79 20 64 61  k to an empty da
21fc0 74 61 62 61 73 65 0a 2a 2a 20 77 69 74 68 20 6e  tabase.** with n
21fd0 6f 20 73 63 68 65 6d 61 20 61 6e 64 20 6e 6f 20  o schema and no 
21fe0 63 6f 6e 74 65 6e 74 2e 20 54 68 65 20 66 6f 6c  content. The fol
21ff0 6c 6f 77 69 6e 67 20 70 72 6f 63 65 73 73 20 77  lowing process w
22000 6f 72 6b 73 20 65 76 65 6e 20 66 6f 72 0a 2a 2a  orks even for.**
22010 20 61 20 62 61 64 6c 79 20 63 6f 72 72 75 70 74   a badly corrupt
22020 65 64 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ed database file
22030 3a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c 69  :.** <ol>.** <li
22040 3e 20 49 66 20 74 68 65 20 64 61 74 61 62 61 73  > If the databas
22050 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20  e connection is 
22060 6e 65 77 6c 79 20 6f 70 65 6e 65 64 2c 20 6d 61  newly opened, ma
22070 6b 65 20 73 75 72 65 20 69 74 20 68 61 73 20 72  ke sure it has r
22080 65 61 64 20 74 68 65 0a 2a 2a 20 20 20 20 20 20  ead the.**      
22090 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
220a0 62 79 20 70 72 65 70 61 72 69 6e 67 20 74 68 65  by preparing the
220b0 6e 20 64 69 73 63 61 72 64 69 6e 67 20 73 6f 6d  n discarding som
220c0 65 20 71 75 65 72 79 20 61 67 61 69 6e 73 74 20  e query against 
220d0 74 68 65 0a 2a 2a 20 20 20 20 20 20 64 61 74 61  the.**      data
220e0 62 61 73 65 2c 20 6f 72 20 63 61 6c 6c 69 6e 67  base, or calling
220f0 20 73 71 6c 69 74 65 33 5f 74 61 62 6c 65 5f 63   sqlite3_table_c
22100 6f 6c 75 6d 6e 5f 6d 65 74 61 64 61 74 61 28 29  olumn_metadata()
22110 2c 20 69 67 6e 6f 72 69 6e 67 20 61 6e 79 0a 2a  , ignoring any.*
22120 2a 20 20 20 20 20 20 65 72 72 6f 72 73 2e 20 20  *      errors.  
22130 54 68 69 73 20 73 74 65 70 20 69 73 20 6f 6e 6c  This step is onl
22140 79 20 6e 65 63 65 73 73 61 72 79 20 69 66 20 74  y necessary if t
22150 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 64  he application d
22160 65 73 69 72 65 73 20 74 6f 20 6b 65 65 70 0a 2a  esires to keep.*
22170 2a 20 20 20 20 20 20 74 68 65 20 64 61 74 61 62  *      the datab
22180 61 73 65 20 69 6e 20 57 41 4c 20 6d 6f 64 65 20  ase in WAL mode 
22190 61 66 74 65 72 20 74 68 65 20 72 65 73 65 74 20  after the reset 
221a0 69 66 20 69 74 20 77 61 73 20 69 6e 20 57 41 4c  if it was in WAL
221b0 20 6d 6f 64 65 20 62 65 66 6f 72 65 0a 2a 2a 20   mode before.** 
221c0 20 20 20 20 20 74 68 65 20 72 65 73 65 74 2e 20       the reset. 
221d0 20 0a 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65   .** <li> sqlite
221e0 33 5f 64 62 5f 63 6f 6e 66 69 67 28 64 62 2c 20  3_db_config(db, 
221f0 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22200 52 45 53 45 54 5f 44 41 54 41 42 41 53 45 2c 20  RESET_DATABASE, 
22210 31 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20 5b  1, 0);.** <li> [
22220 73 71 6c 69 74 65 33 5f 65 78 65 63 5d 28 64 62  sqlite3_exec](db
22230 2c 20 22 5b 56 41 43 55 55 4d 5d 22 2c 20 30 2c  , "[VACUUM]", 0,
22240 20 30 2c 20 30 29 3b 0a 2a 2a 20 3c 6c 69 3e 20   0, 0);.** <li> 
22250 73 71 6c 69 74 65 33 5f 64 62 5f 63 6f 6e 66 69  sqlite3_db_confi
22260 67 28 64 62 2c 20 53 51 4c 49 54 45 5f 44 42 43  g(db, SQLITE_DBC
22270 4f 4e 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41  ONFIG_RESET_DATA
22280 42 41 53 45 2c 20 30 2c 20 30 29 3b 0a 2a 2a 20  BASE, 0, 0);.** 
22290 3c 2f 6f 6c 3e 0a 2a 2a 20 42 65 63 61 75 73 65  </ol>.** Because
222a0 20 72 65 73 65 74 74 69 6e 67 20 61 20 64 61 74   resetting a dat
222b0 61 62 61 73 65 20 69 73 20 64 65 73 74 72 75 63  abase is destruc
222c0 74 69 76 65 20 61 6e 64 20 69 72 72 65 76 65 72  tive and irrever
222d0 73 69 62 6c 65 2c 20 74 68 65 0a 2a 2a 20 70 72  sible, the.** pr
222e0 6f 63 65 73 73 20 72 65 71 75 69 72 65 73 20 74  ocess requires t
222f0 68 65 20 75 73 65 20 6f 66 20 74 68 69 73 20 6f  he use of this o
22300 62 73 63 75 72 65 20 41 50 49 20 61 6e 64 20 6d  bscure API and m
22310 75 6c 74 69 70 6c 65 20 73 74 65 70 73 20 74 6f  ultiple steps to
22320 20 68 65 6c 70 0a 2a 2a 20 65 6e 73 75 72 65 20   help.** ensure 
22330 74 68 61 74 20 69 74 20 64 6f 65 73 20 6e 6f 74  that it does not
22340 20 68 61 70 70 65 6e 20 62 79 20 61 63 63 69 64   happen by accid
22350 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  ent..**.** [[SQL
22360 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22370 45 4e 53 49 56 45 5d 5d 20 3c 64 74 3e 53 51 4c  ENSIVE]] <dt>SQL
22380 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 44 45 46  ITE_DBCONFIG_DEF
22390 45 4e 53 49 56 45 3c 2f 64 74 3e 0a 2a 2a 20 3c  ENSIVE</dt>.** <
223a0 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 44 42  dd>The SQLITE_DB
223b0 43 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45  CONFIG_DEFENSIVE
223c0 20 6f 70 74 69 6f 6e 20 61 63 74 69 76 61 74 65   option activate
223d0 73 20 6f 72 20 64 65 61 63 74 69 76 61 74 65 73  s or deactivates
223e0 20 74 68 65 0a 2a 2a 20 22 64 65 66 65 6e 73 69   the.** "defensi
223f0 76 65 22 20 66 6c 61 67 20 66 6f 72 20 61 20 64  ve" flag for a d
22400 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
22410 6f 6e 2e 20 20 57 68 65 6e 20 74 68 65 20 64 65  on.  When the de
22420 66 65 6e 73 69 76 65 0a 2a 2a 20 66 6c 61 67 20  fensive.** flag 
22430 69 73 20 65 6e 61 62 6c 65 64 2c 20 6c 61 6e 67  is enabled, lang
22440 75 61 67 65 20 66 65 61 74 75 72 65 73 20 74 68  uage features th
22450 61 74 20 61 6c 6c 6f 77 20 6f 72 64 69 6e 61 72  at allow ordinar
22460 79 20 53 51 4c 20 74 6f 20 0a 2a 2a 20 64 65 6c  y SQL to .** del
22470 69 62 65 72 61 74 65 6c 79 20 63 6f 72 72 75 70  iberately corrup
22480 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
22490 69 6c 65 20 61 72 65 20 64 69 73 61 62 6c 65 64  ile are disabled
224a0 2e 20 20 54 68 65 20 64 69 73 61 62 6c 65 64 0a  .  The disabled.
224b0 2a 2a 20 66 65 61 74 75 72 65 73 20 69 6e 63 6c  ** features incl
224c0 75 64 65 20 62 75 74 20 61 72 65 20 6e 6f 74 20  ude but are not 
224d0 6c 69 6d 69 74 65 64 20 74 6f 20 74 68 65 20 66  limited to the f
224e0 6f 6c 6c 6f 77 69 6e 67 3a 0a 2a 2a 20 3c 75 6c  ollowing:.** <ul
224f0 3e 0a 2a 2a 20 3c 6c 69 3e 20 54 68 65 20 5b 50  >.** <li> The [P
22500 52 41 47 4d 41 20 77 72 69 74 61 62 6c 65 5f 73  RAGMA writable_s
22510 63 68 65 6d 61 3d 4f 4e 5d 20 73 74 61 74 65 6d  chema=ON] statem
22520 65 6e 74 2e 0a 2a 2a 20 3c 6c 69 3e 20 57 72 69  ent..** <li> Wri
22530 74 65 73 20 74 6f 20 74 68 65 20 5b 73 71 6c 69  tes to the [sqli
22540 74 65 5f 64 62 70 61 67 65 5d 20 76 69 72 74 75  te_dbpage] virtu
22550 61 6c 20 74 61 62 6c 65 2e 0a 2a 2a 20 3c 6c 69  al table..** <li
22560 3e 20 44 69 72 65 63 74 20 77 72 69 74 65 73 20  > Direct writes 
22570 74 6f 20 5b 73 68 61 64 6f 77 20 74 61 62 6c 65  to [shadow table
22580 73 5d 2e 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 20  s]..** </ul>.** 
22590 3c 2f 64 64 3e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a  </dd>.** </dl>.*
225a0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
225b0 5f 44 42 43 4f 4e 46 49 47 5f 4d 41 49 4e 44 42  _DBCONFIG_MAINDB
225c0 4e 41 4d 45 20 20 20 20 20 20 20 20 20 20 20 20  NAME            
225d0 31 30 30 30 20 2f 2a 20 63 6f 6e 73 74 20 63 68  1000 /* const ch
225e0 61 72 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  ar* */.#define S
225f0 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4c  QLITE_DBCONFIG_L
22600 4f 4f 4b 41 53 49 44 45 20 20 20 20 20 20 20 20  OOKASIDE        
22610 20 20 20 20 20 31 30 30 31 20 2f 2a 20 76 6f 69       1001 /* voi
22620 64 2a 20 69 6e 74 20 69 6e 74 20 2a 2f 0a 23 64  d* int int */.#d
22630 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
22640 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 46 4b 45  ONFIG_ENABLE_FKE
22650 59 20 20 20 20 20 20 20 20 20 20 20 31 30 30 32  Y           1002
22660 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
22670 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
22680 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45 5f 54  BCONFIG_ENABLE_T
22690 52 49 47 47 45 52 20 20 20 20 20 20 20 20 31 30  RIGGER        10
226a0 30 33 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a  03 /* int int* *
226b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
226c0 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42 4c 45  _DBCONFIG_ENABLE
226d0 5f 46 54 53 33 5f 54 4f 4b 45 4e 49 5a 45 52 20  _FTS3_TOKENIZER 
226e0 31 30 30 34 20 2f 2a 20 69 6e 74 20 69 6e 74 2a  1004 /* int int*
226f0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
22700 54 45 5f 44 42 43 4f 4e 46 49 47 5f 45 4e 41 42  TE_DBCONFIG_ENAB
22710 4c 45 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  LE_LOAD_EXTENSIO
22720 4e 20 31 30 30 35 20 2f 2a 20 69 6e 74 20 69 6e  N 1005 /* int in
22730 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  t* */.#define SQ
22740 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f 4e 4f  LITE_DBCONFIG_NO
22750 5f 43 4b 50 54 5f 4f 4e 5f 43 4c 4f 53 45 20 20  _CKPT_ON_CLOSE  
22760 20 20 20 20 31 30 30 36 20 2f 2a 20 69 6e 74 20      1006 /* int 
22770 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e 65 20  int* */.#define 
22780 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49 47 5f  SQLITE_DBCONFIG_
22790 45 4e 41 42 4c 45 5f 51 50 53 47 20 20 20 20 20  ENABLE_QPSG     
227a0 20 20 20 20 20 20 31 30 30 37 20 2f 2a 20 69 6e        1007 /* in
227b0 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66 69 6e  t int* */.#defin
227c0 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e 46 49  e SQLITE_DBCONFI
227d0 47 5f 54 52 49 47 47 45 52 5f 45 51 50 20 20 20  G_TRIGGER_EQP   
227e0 20 20 20 20 20 20 20 20 31 30 30 38 20 2f 2a 20          1008 /* 
227f0 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64 65 66  int int* */.#def
22800 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43 4f 4e  ine SQLITE_DBCON
22810 46 49 47 5f 52 45 53 45 54 5f 44 41 54 41 42 41  FIG_RESET_DATABA
22820 53 45 20 20 20 20 20 20 20 20 31 30 30 39 20 2f  SE        1009 /
22830 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a 23 64  * int int* */.#d
22840 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 42 43  efine SQLITE_DBC
22850 4f 4e 46 49 47 5f 44 45 46 45 4e 53 49 56 45 20  ONFIG_DEFENSIVE 
22860 20 20 20 20 20 20 20 20 20 20 20 20 31 30 31 30              1010
22870 20 2f 2a 20 69 6e 74 20 69 6e 74 2a 20 2a 2f 0a   /* int int* */.
22880 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44  #define SQLITE_D
22890 42 43 4f 4e 46 49 47 5f 4d 41 58 20 20 20 20 20  BCONFIG_MAX     
228a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 30                10
228b0 31 30 20 2f 2a 20 4c 61 72 67 65 73 74 20 44 42  10 /* Largest DB
228c0 43 4f 4e 46 49 47 20 2a 2f 0a 0a 2f 2a 0a 2a 2a  CONFIG */../*.**
228d0 20 43 41 50 49 33 52 45 46 3a 20 45 6e 61 62 6c   CAPI3REF: Enabl
228e0 65 20 4f 72 20 44 69 73 61 62 6c 65 20 45 78 74  e Or Disable Ext
228f0 65 6e 64 65 64 20 52 65 73 75 6c 74 20 43 6f 64  ended Result Cod
22900 65 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  es.** METHOD: sq
22910 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  lite3.**.** ^The
22920 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64 65   sqlite3_extende
22930 64 5f 72 65 73 75 6c 74 5f 63 6f 64 65 73 28 29  d_result_codes()
22940 20 72 6f 75 74 69 6e 65 20 65 6e 61 62 6c 65 73   routine enables
22950 20 6f 72 20 64 69 73 61 62 6c 65 73 20 74 68 65   or disables the
22960 0a 2a 2a 20 5b 65 78 74 65 6e 64 65 64 20 72 65  .** [extended re
22970 73 75 6c 74 20 63 6f 64 65 73 5d 20 66 65 61 74  sult codes] feat
22980 75 72 65 20 6f 66 20 53 51 4c 69 74 65 2e 20 5e  ure of SQLite. ^
22990 54 68 65 20 65 78 74 65 6e 64 65 64 20 72 65 73  The extended res
229a0 75 6c 74 0a 2a 2a 20 63 6f 64 65 73 20 61 72 65  ult.** codes are
229b0 20 64 69 73 61 62 6c 65 64 20 62 79 20 64 65 66   disabled by def
229c0 61 75 6c 74 20 66 6f 72 20 68 69 73 74 6f 72 69  ault for histori
229d0 63 61 6c 20 63 6f 6d 70 61 74 69 62 69 6c 69 74  cal compatibilit
229e0 79 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  y..*/.SQLITE_API
229f0 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78 74   int sqlite3_ext
22a00 65 6e 64 65 64 5f 72 65 73 75 6c 74 5f 63 6f 64  ended_result_cod
22a10 65 73 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74  es(sqlite3*, int
22a20 20 6f 6e 6f 66 66 29 3b 0a 0a 2f 2a 0a 2a 2a 20   onoff);../*.** 
22a30 43 41 50 49 33 52 45 46 3a 20 4c 61 73 74 20 49  CAPI3REF: Last I
22a40 6e 73 65 72 74 20 52 6f 77 69 64 0a 2a 2a 20 4d  nsert Rowid.** M
22a50 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
22a60 2a 0a 2a 2a 20 5e 45 61 63 68 20 65 6e 74 72 79  *.** ^Each entry
22a70 20 69 6e 20 6d 6f 73 74 20 53 51 4c 69 74 65 20   in most SQLite 
22a80 74 61 62 6c 65 73 20 28 65 78 63 65 70 74 20 66  tables (except f
22a90 6f 72 20 5b 57 49 54 48 4f 55 54 20 52 4f 57 49  or [WITHOUT ROWI
22aa0 44 5d 20 74 61 62 6c 65 73 29 0a 2a 2a 20 68 61  D] tables).** ha
22ab0 73 20 61 20 75 6e 69 71 75 65 20 36 34 2d 62 69  s a unique 64-bi
22ac0 74 20 73 69 67 6e 65 64 0a 2a 2a 20 69 6e 74 65  t signed.** inte
22ad0 67 65 72 20 6b 65 79 20 63 61 6c 6c 65 64 20 74  ger key called t
22ae0 68 65 20 5b 52 4f 57 49 44 20 7c 20 22 72 6f 77  he [ROWID | "row
22af0 69 64 22 5d 2e 20 5e 54 68 65 20 72 6f 77 69 64  id"]. ^The rowid
22b00 20 69 73 20 61 6c 77 61 79 73 20 61 76 61 69 6c   is always avail
22b10 61 62 6c 65 0a 2a 2a 20 61 73 20 61 6e 20 75 6e  able.** as an un
22b20 64 65 63 6c 61 72 65 64 20 63 6f 6c 75 6d 6e 20  declared column 
22b30 6e 61 6d 65 64 20 52 4f 57 49 44 2c 20 4f 49 44  named ROWID, OID
22b40 2c 20 6f 72 20 5f 52 4f 57 49 44 5f 20 61 73 20  , or _ROWID_ as 
22b50 6c 6f 6e 67 20 61 73 20 74 68 6f 73 65 0a 2a 2a  long as those.**
22b60 20 6e 61 6d 65 73 20 61 72 65 20 6e 6f 74 20 61   names are not a
22b70 6c 73 6f 20 75 73 65 64 20 62 79 20 65 78 70 6c  lso used by expl
22b80 69 63 69 74 6c 79 20 64 65 63 6c 61 72 65 64 20  icitly declared 
22b90 63 6f 6c 75 6d 6e 73 2e 20 5e 49 66 0a 2a 2a 20  columns. ^If.** 
22ba0 74 68 65 20 74 61 62 6c 65 20 68 61 73 20 61 20  the table has a 
22bb0 63 6f 6c 75 6d 6e 20 6f 66 20 74 79 70 65 20 5b  column of type [
22bc0 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
22bd0 4b 45 59 5d 20 74 68 65 6e 20 74 68 61 74 20 63  KEY] then that c
22be0 6f 6c 75 6d 6e 0a 2a 2a 20 69 73 20 61 6e 6f 74  olumn.** is anot
22bf0 68 65 72 20 61 6c 69 61 73 20 66 6f 72 20 74 68  her alias for th
22c00 65 20 72 6f 77 69 64 2e 0a 2a 2a 0a 2a 2a 20 5e  e rowid..**.** ^
22c10 54 68 65 20 73 71 6c 69 74 65 33 5f 6c 61 73 74  The sqlite3_last
22c20 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 29  _insert_rowid(D)
22c30 20 69 6e 74 65 72 66 61 63 65 20 75 73 75 61 6c   interface usual
22c40 6c 79 20 72 65 74 75 72 6e 73 20 74 68 65 20 5b  ly returns the [
22c50 72 6f 77 69 64 5d 20 6f 66 0a 2a 2a 20 74 68 65  rowid] of.** the
22c60 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 75 63   most recent suc
22c70 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52 54 5d  cessful [INSERT]
22c80 20 69 6e 74 6f 20 61 20 72 6f 77 69 64 20 74 61   into a rowid ta
22c90 62 6c 65 20 6f 72 20 5b 76 69 72 74 75 61 6c 20  ble or [virtual 
22ca0 74 61 62 6c 65 5d 0a 2a 2a 20 6f 6e 20 64 61 74  table].** on dat
22cb0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
22cc0 20 44 2e 20 5e 49 6e 73 65 72 74 73 20 69 6e 74   D. ^Inserts int
22cd0 6f 20 5b 57 49 54 48 4f 55 54 20 52 4f 57 49 44  o [WITHOUT ROWID
22ce0 5d 20 74 61 62 6c 65 73 20 61 72 65 20 6e 6f 74  ] tables are not
22cf0 0a 2a 2a 20 72 65 63 6f 72 64 65 64 2e 20 5e 49  .** recorded. ^I
22d00 66 20 6e 6f 20 73 75 63 63 65 73 73 66 75 6c 20  f no successful 
22d10 5b 49 4e 53 45 52 54 5d 73 20 69 6e 74 6f 20 72  [INSERT]s into r
22d20 6f 77 69 64 20 74 61 62 6c 65 73 20 68 61 76 65  owid tables have
22d30 20 65 76 65 72 20 6f 63 63 75 72 72 65 64 20 0a   ever occurred .
22d40 2a 2a 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61  ** on the databa
22d50 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2c  se connection D,
22d60 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 6c 61   then sqlite3_la
22d70 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
22d80 44 29 20 72 65 74 75 72 6e 73 20 0a 2a 2a 20 7a  D) returns .** z
22d90 65 72 6f 2e 0a 2a 2a 0a 2a 2a 20 41 73 20 77 65  ero..**.** As we
22da0 6c 6c 20 61 73 20 62 65 69 6e 67 20 73 65 74 20  ll as being set 
22db0 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 73  automatically as
22dc0 20 72 6f 77 73 20 61 72 65 20 69 6e 73 65 72 74   rows are insert
22dd0 65 64 20 69 6e 74 6f 20 64 61 74 61 62 61 73 65  ed into database
22de0 0a 2a 2a 20 74 61 62 6c 65 73 2c 20 74 68 65 20  .** tables, the 
22df0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
22e00 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20  y this function 
22e10 6d 61 79 20 62 65 20 73 65 74 20 65 78 70 6c 69  may be set expli
22e20 63 69 74 6c 79 20 62 79 0a 2a 2a 20 5b 73 71 6c  citly by.** [sql
22e30 69 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69 6e  ite3_set_last_in
22e40 73 65 72 74 5f 72 6f 77 69 64 28 29 5d 0a 2a 2a  sert_rowid()].**
22e50 0a 2a 2a 20 53 6f 6d 65 20 76 69 72 74 75 61 6c  .** Some virtual
22e60 20 74 61 62 6c 65 20 69 6d 70 6c 65 6d 65 6e 74   table implement
22e70 61 74 69 6f 6e 73 20 6d 61 79 20 49 4e 53 45 52  ations may INSER
22e80 54 20 72 6f 77 73 20 69 6e 74 6f 20 72 6f 77 69  T rows into rowi
22e90 64 20 74 61 62 6c 65 73 20 61 73 0a 2a 2a 20 70  d tables as.** p
22ea0 61 72 74 20 6f 66 20 63 6f 6d 6d 69 74 74 69 6e  art of committin
22eb0 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  g a transaction 
22ec0 28 65 2e 67 2e 20 74 6f 20 66 6c 75 73 68 20 64  (e.g. to flush d
22ed0 61 74 61 20 61 63 63 75 6d 75 6c 61 74 65 64 20  ata accumulated 
22ee0 69 6e 20 6d 65 6d 6f 72 79 0a 2a 2a 20 74 6f 20  in memory.** to 
22ef0 64 69 73 6b 29 2e 20 49 6e 20 74 68 69 73 20 63  disk). In this c
22f00 61 73 65 20 73 75 62 73 65 71 75 65 6e 74 20 63  ase subsequent c
22f10 61 6c 6c 73 20 74 6f 20 74 68 69 73 20 66 75 6e  alls to this fun
22f20 63 74 69 6f 6e 20 72 65 74 75 72 6e 20 74 68 65  ction return the
22f30 20 72 6f 77 69 64 0a 2a 2a 20 61 73 73 6f 63 69   rowid.** associ
22f40 61 74 65 64 20 77 69 74 68 20 74 68 65 73 65 20  ated with these 
22f50 69 6e 74 65 72 6e 61 6c 20 49 4e 53 45 52 54 20  internal INSERT 
22f60 6f 70 65 72 61 74 69 6f 6e 73 2c 20 77 68 69 63  operations, whic
22f70 68 20 6c 65 61 64 73 20 74 6f 20 0a 2a 2a 20 75  h leads to .** u
22f80 6e 69 6e 74 75 69 74 69 76 65 20 72 65 73 75 6c  nintuitive resul
22f90 74 73 2e 20 56 69 72 74 75 61 6c 20 74 61 62 6c  ts. Virtual tabl
22fa0 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  e implementation
22fb0 73 20 74 68 61 74 20 64 6f 20 77 72 69 74 65 20  s that do write 
22fc0 74 6f 20 72 6f 77 69 64 0a 2a 2a 20 74 61 62 6c  to rowid.** tabl
22fd0 65 73 20 69 6e 20 74 68 69 73 20 77 61 79 20 63  es in this way c
22fe0 61 6e 20 61 76 6f 69 64 20 74 68 69 73 20 70 72  an avoid this pr
22ff0 6f 62 6c 65 6d 20 62 79 20 72 65 73 74 6f 72 69  oblem by restori
23000 6e 67 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20  ng the original 
23010 0a 2a 2a 20 72 6f 77 69 64 20 76 61 6c 75 65 20  .** rowid value 
23020 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 73  using [sqlite3_s
23030 65 74 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  et_last_insert_r
23040 6f 77 69 64 28 29 5d 20 62 65 66 6f 72 65 20 72  owid()] before r
23050 65 74 75 72 6e 69 6e 67 20 0a 2a 2a 20 63 6f 6e  eturning .** con
23060 74 72 6f 6c 20 74 6f 20 74 68 65 20 75 73 65 72  trol to the user
23070 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20 61 6e 20  ..**.** ^(If an 
23080 5b 49 4e 53 45 52 54 5d 20 6f 63 63 75 72 73 20  [INSERT] occurs 
23090 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
230a0 20 74 68 65 6e 20 74 68 69 73 20 72 6f 75 74 69   then this routi
230b0 6e 65 20 77 69 6c 6c 20 0a 2a 2a 20 72 65 74 75  ne will .** retu
230c0 72 6e 20 74 68 65 20 5b 72 6f 77 69 64 5d 20 6f  rn the [rowid] o
230d0 66 20 74 68 65 20 69 6e 73 65 72 74 65 64 20 72  f the inserted r
230e0 6f 77 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68  ow as long as th
230f0 65 20 74 72 69 67 67 65 72 20 69 73 20 0a 2a 2a  e trigger is .**
23100 20 72 75 6e 6e 69 6e 67 2e 20 4f 6e 63 65 20 74   running. Once t
23110 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  he trigger progr
23120 61 6d 20 65 6e 64 73 2c 20 74 68 65 20 76 61 6c  am ends, the val
23130 75 65 20 72 65 74 75 72 6e 65 64 20 0a 2a 2a 20  ue returned .** 
23140 62 79 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  by this routine 
23150 72 65 76 65 72 74 73 20 74 6f 20 77 68 61 74 20  reverts to what 
23160 69 74 20 77 61 73 20 62 65 66 6f 72 65 20 74 68  it was before th
23170 65 20 74 72 69 67 67 65 72 20 77 61 73 20 66 69  e trigger was fi
23180 72 65 64 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 41 6e  red.)^.**.** ^An
23190 20 5b 49 4e 53 45 52 54 5d 20 74 68 61 74 20 66   [INSERT] that f
231a0 61 69 6c 73 20 64 75 65 20 74 6f 20 61 20 63 6f  ails due to a co
231b0 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
231c0 6f 6e 20 69 73 20 6e 6f 74 20 61 0a 2a 2a 20 73  on is not a.** s
231d0 75 63 63 65 73 73 66 75 6c 20 5b 49 4e 53 45 52  uccessful [INSER
231e0 54 5d 20 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20  T] and does not 
231f0 63 68 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65  change the value
23200 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69   returned by thi
23210 73 0a 2a 2a 20 72 6f 75 74 69 6e 65 2e 20 20 5e  s.** routine.  ^
23220 54 68 75 73 20 49 4e 53 45 52 54 20 4f 52 20 46  Thus INSERT OR F
23230 41 49 4c 2c 20 49 4e 53 45 52 54 20 4f 52 20 49  AIL, INSERT OR I
23240 47 4e 4f 52 45 2c 20 49 4e 53 45 52 54 20 4f 52  GNORE, INSERT OR
23250 20 52 4f 4c 4c 42 41 43 4b 2c 0a 2a 2a 20 61 6e   ROLLBACK,.** an
23260 64 20 49 4e 53 45 52 54 20 4f 52 20 41 42 4f 52  d INSERT OR ABOR
23270 54 20 6d 61 6b 65 20 6e 6f 20 63 68 61 6e 67 65  T make no change
23280 73 20 74 6f 20 74 68 65 20 72 65 74 75 72 6e 20  s to the return 
23290 76 61 6c 75 65 20 6f 66 20 74 68 69 73 0a 2a 2a  value of this.**
232a0 20 72 6f 75 74 69 6e 65 20 77 68 65 6e 20 74 68   routine when th
232b0 65 69 72 20 69 6e 73 65 72 74 69 6f 6e 20 66 61  eir insertion fa
232c0 69 6c 73 2e 20 20 5e 28 57 68 65 6e 20 49 4e 53  ils.  ^(When INS
232d0 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 0a 2a  ERT OR REPLACE.*
232e0 2a 20 65 6e 63 6f 75 6e 74 65 72 73 20 61 20 63  * encounters a c
232f0 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74  onstraint violat
23300 69 6f 6e 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74  ion, it does not
23310 20 66 61 69 6c 2e 20 20 54 68 65 0a 2a 2a 20 49   fail.  The.** I
23320 4e 53 45 52 54 20 63 6f 6e 74 69 6e 75 65 73 20  NSERT continues 
23330 74 6f 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 61 66  to completion af
23340 74 65 72 20 64 65 6c 65 74 69 6e 67 20 72 6f 77  ter deleting row
23350 73 20 74 68 61 74 20 63 61 75 73 65 64 0a 2a 2a  s that caused.**
23360 20 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20   the constraint 
23370 70 72 6f 62 6c 65 6d 20 73 6f 20 49 4e 53 45 52  problem so INSER
23380 54 20 4f 52 20 52 45 50 4c 41 43 45 20 77 69 6c  T OR REPLACE wil
23390 6c 20 61 6c 77 61 79 73 20 63 68 61 6e 67 65 0a  l always change.
233a0 2a 2a 20 74 68 65 20 72 65 74 75 72 6e 20 76 61  ** the return va
233b0 6c 75 65 20 6f 66 20 74 68 69 73 20 69 6e 74 65  lue of this inte
233c0 72 66 61 63 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e  rface.)^.**.** ^
233d0 46 6f 72 20 74 68 65 20 70 75 72 70 6f 73 65 73  For the purposes
233e0 20 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65   of this routine
233f0 2c 20 61 6e 20 5b 49 4e 53 45 52 54 5d 20 69 73  , an [INSERT] is
23400 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 0a 2a   considered to.*
23410 2a 20 62 65 20 73 75 63 63 65 73 73 66 75 6c 20  * be successful 
23420 65 76 65 6e 20 69 66 20 69 74 20 69 73 20 73 75  even if it is su
23430 62 73 65 71 75 65 6e 74 6c 79 20 72 6f 6c 6c 65  bsequently rolle
23440 64 20 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a 20 54 68  d back..**.** Th
23450 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61  is function is a
23460 63 63 65 73 73 69 62 6c 65 20 74 6f 20 53 51 4c  ccessible to SQL
23470 20 73 74 61 74 65 6d 65 6e 74 73 20 76 69 61 20   statements via 
23480 74 68 65 0a 2a 2a 20 5b 6c 61 73 74 5f 69 6e 73  the.** [last_ins
23490 65 72 74 5f 72 6f 77 69 64 28 29 20 53 51 4c 20  ert_rowid() SQL 
234a0 66 75 6e 63 74 69 6f 6e 5d 2e 0a 2a 2a 0a 2a 2a  function]..**.**
234b0 20 49 66 20 61 20 73 65 70 61 72 61 74 65 20 74   If a separate t
234c0 68 72 65 61 64 20 70 65 72 66 6f 72 6d 73 20 61  hread performs a
234d0 20 6e 65 77 20 5b 49 4e 53 45 52 54 5d 20 6f 6e   new [INSERT] on
234e0 20 74 68 65 20 73 61 6d 65 0a 2a 2a 20 64 61 74   the same.** dat
234f0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
23500 20 77 68 69 6c 65 20 74 68 65 20 5b 73 71 6c 69   while the [sqli
23510 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
23520 72 6f 77 69 64 28 29 5d 0a 2a 2a 20 66 75 6e 63  rowid()].** func
23530 74 69 6f 6e 20 69 73 20 72 75 6e 6e 69 6e 67 20  tion is running 
23540 61 6e 64 20 74 68 75 73 20 63 68 61 6e 67 65 73  and thus changes
23550 20 74 68 65 20 6c 61 73 74 20 69 6e 73 65 72 74   the last insert
23560 20 5b 72 6f 77 69 64 5d 2c 0a 2a 2a 20 74 68 65   [rowid],.** the
23570 6e 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75  n the value retu
23580 72 6e 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33  rned by [sqlite3
23590 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  _last_insert_row
235a0 69 64 28 29 5d 20 69 73 0a 2a 2a 20 75 6e 70 72  id()] is.** unpr
235b0 65 64 69 63 74 61 62 6c 65 20 61 6e 64 20 6d 69  edictable and mi
235c0 67 68 74 20 6e 6f 74 20 65 71 75 61 6c 20 65 69  ght not equal ei
235d0 74 68 65 72 20 74 68 65 20 6f 6c 64 20 6f 72 20  ther the old or 
235e0 74 68 65 20 6e 65 77 0a 2a 2a 20 6c 61 73 74 20  the new.** last 
235f0 69 6e 73 65 72 74 20 5b 72 6f 77 69 64 5d 2e 0a  insert [rowid]..
23600 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 73 71  */.SQLITE_API sq
23610 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71 6c 69  lite3_int64 sqli
23620 74 65 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f  te3_last_insert_
23630 72 6f 77 69 64 28 73 71 6c 69 74 65 33 2a 29 3b  rowid(sqlite3*);
23640 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
23650 3a 20 53 65 74 20 74 68 65 20 4c 61 73 74 20 49  : Set the Last I
23660 6e 73 65 72 74 20 52 6f 77 69 64 20 76 61 6c 75  nsert Rowid valu
23670 65 2e 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71  e..** METHOD: sq
23680 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65 20  lite3.**.** The 
23690 73 71 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74  sqlite3_set_last
236a0 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 44 2c  _insert_rowid(D,
236b0 20 52 29 20 6d 65 74 68 6f 64 20 61 6c 6c 6f 77   R) method allow
236c0 73 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  s the applicatio
236d0 6e 20 74 6f 0a 2a 2a 20 73 65 74 20 74 68 65 20  n to.** set the 
236e0 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 62  value returned b
236f0 79 20 63 61 6c 6c 69 6e 67 20 73 71 6c 69 74 65  y calling sqlite
23700 33 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f  3_last_insert_ro
23710 77 69 64 28 44 29 20 74 6f 20 52 20 0a 2a 2a 20  wid(D) to R .** 
23720 77 69 74 68 6f 75 74 20 69 6e 73 65 72 74 69 6e  without insertin
23730 67 20 61 20 72 6f 77 20 69 6e 74 6f 20 74 68 65  g a row into the
23740 20 64 61 74 61 62 61 73 65 2e 0a 2a 2f 0a 53 51   database..*/.SQ
23750 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71  LITE_API void sq
23760 6c 69 74 65 33 5f 73 65 74 5f 6c 61 73 74 5f 69  lite3_set_last_i
23770 6e 73 65 72 74 5f 72 6f 77 69 64 28 73 71 6c 69  nsert_rowid(sqli
23780 74 65 33 2a 2c 73 71 6c 69 74 65 33 5f 69 6e 74  te3*,sqlite3_int
23790 36 34 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49  64);../*.** CAPI
237a0 33 52 45 46 3a 20 43 6f 75 6e 74 20 54 68 65 20  3REF: Count The 
237b0 4e 75 6d 62 65 72 20 4f 66 20 52 6f 77 73 20 4d  Number Of Rows M
237c0 6f 64 69 66 69 65 64 0a 2a 2a 20 4d 45 54 48 4f  odified.** METHO
237d0 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a  D: sqlite3.**.**
237e0 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20   ^This function 
237f0 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62  returns the numb
23800 65 72 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66  er of rows modif
23810 69 65 64 2c 20 69 6e 73 65 72 74 65 64 20 6f 72  ied, inserted or
23820 0a 2a 2a 20 64 65 6c 65 74 65 64 20 62 79 20 74  .** deleted by t
23830 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 6c 79  he most recently
23840 20 63 6f 6d 70 6c 65 74 65 64 20 49 4e 53 45 52   completed INSER
23850 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45 4c  T, UPDATE or DEL
23860 45 54 45 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  ETE.** statement
23870 20 6f 6e 20 74 68 65 20 64 61 74 61 62 61 73 65   on the database
23880 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 70 65 63   connection spec
23890 69 66 69 65 64 20 62 79 20 74 68 65 20 6f 6e 6c  ified by the onl
238a0 79 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20  y parameter..** 
238b0 5e 45 78 65 63 75 74 69 6e 67 20 61 6e 79 20 6f  ^Executing any o
238c0 74 68 65 72 20 74 79 70 65 20 6f 66 20 53 51 4c  ther type of SQL
238d0 20 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20   statement does 
238e0 6e 6f 74 20 6d 6f 64 69 66 79 20 74 68 65 20 76  not modify the v
238f0 61 6c 75 65 0a 2a 2a 20 72 65 74 75 72 6e 65 64  alue.** returned
23900 20 62 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f   by this functio
23910 6e 2e 0a 2a 2a 0a 2a 2a 20 5e 4f 6e 6c 79 20 63  n..**.** ^Only c
23920 68 61 6e 67 65 73 20 6d 61 64 65 20 64 69 72 65  hanges made dire
23930 63 74 6c 79 20 62 79 20 74 68 65 20 49 4e 53 45  ctly by the INSE
23940 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 44 45  RT, UPDATE or DE
23950 4c 45 54 45 20 73 74 61 74 65 6d 65 6e 74 20 61  LETE statement a
23960 72 65 0a 2a 2a 20 63 6f 6e 73 69 64 65 72 65 64  re.** considered
23970 20 2d 20 61 75 78 69 6c 69 61 72 79 20 63 68 61   - auxiliary cha
23980 6e 67 65 73 20 63 61 75 73 65 64 20 62 79 20 5b  nges caused by [
23990 43 52 45 41 54 45 20 54 52 49 47 47 45 52 20 7c  CREATE TRIGGER |
239a0 20 74 72 69 67 67 65 72 73 5d 2c 20 0a 2a 2a 20   triggers], .** 
239b0 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20 61 63 74  [foreign key act
239c0 69 6f 6e 73 5d 20 6f 72 20 5b 52 45 50 4c 41 43  ions] or [REPLAC
239d0 45 5d 20 63 6f 6e 73 74 72 61 69 6e 74 20 72 65  E] constraint re
239e0 73 6f 6c 75 74 69 6f 6e 20 61 72 65 20 6e 6f 74  solution are not
239f0 20 63 6f 75 6e 74 65 64 2e 0a 2a 2a 20 0a 2a 2a   counted..** .**
23a00 20 43 68 61 6e 67 65 73 20 74 6f 20 61 20 76 69   Changes to a vi
23a10 65 77 20 74 68 61 74 20 61 72 65 20 69 6e 74 65  ew that are inte
23a20 72 63 65 70 74 65 64 20 62 79 20 0a 2a 2a 20 5b  rcepted by .** [
23a30 49 4e 53 54 45 41 44 20 4f 46 20 74 72 69 67 67  INSTEAD OF trigg
23a40 65 72 20 7c 20 49 4e 53 54 45 41 44 20 4f 46 20  er | INSTEAD OF 
23a50 74 72 69 67 67 65 72 73 5d 20 61 72 65 20 6e 6f  triggers] are no
23a60 74 20 63 6f 75 6e 74 65 64 2e 20 5e 54 68 65 20  t counted. ^The 
23a70 76 61 6c 75 65 20 0a 2a 2a 20 72 65 74 75 72 6e  value .** return
23a80 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 63 68  ed by sqlite3_ch
23a90 61 6e 67 65 73 28 29 20 69 6d 6d 65 64 69 61 74  anges() immediat
23aa0 65 6c 79 20 61 66 74 65 72 20 61 6e 20 49 4e 53  ely after an INS
23ab0 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72 20 0a  ERT, UPDATE or .
23ac0 2a 2a 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d  ** DELETE statem
23ad0 65 6e 74 20 72 75 6e 20 6f 6e 20 61 20 76 69 65  ent run on a vie
23ae0 77 20 69 73 20 61 6c 77 61 79 73 20 7a 65 72 6f  w is always zero
23af0 2e 20 4f 6e 6c 79 20 63 68 61 6e 67 65 73 20 6d  . Only changes m
23b00 61 64 65 20 74 6f 20 72 65 61 6c 20 0a 2a 2a 20  ade to real .** 
23b10 74 61 62 6c 65 73 20 61 72 65 20 63 6f 75 6e 74  tables are count
23b20 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 69 6e 67 73  ed..**.** Things
23b30 20 61 72 65 20 6d 6f 72 65 20 63 6f 6d 70 6c 69   are more compli
23b40 63 61 74 65 64 20 69 66 20 74 68 65 20 73 71 6c  cated if the sql
23b50 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20 66  ite3_changes() f
23b60 75 6e 63 74 69 6f 6e 20 69 73 0a 2a 2a 20 65 78  unction is.** ex
23b70 65 63 75 74 65 64 20 77 68 69 6c 65 20 61 20 74  ecuted while a t
23b80 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 69  rigger program i
23b90 73 20 72 75 6e 6e 69 6e 67 2e 20 54 68 69 73 20  s running. This 
23ba0 6d 61 79 20 68 61 70 70 65 6e 20 69 66 20 74 68  may happen if th
23bb0 65 0a 2a 2a 20 70 72 6f 67 72 61 6d 20 75 73 65  e.** program use
23bc0 73 20 74 68 65 20 5b 63 68 61 6e 67 65 73 28 29  s the [changes()
23bd0 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 5d 2c 20   SQL function], 
23be0 6f 72 20 69 66 20 73 6f 6d 65 20 6f 74 68 65 72  or if some other
23bf0 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e   callback.** fun
23c00 63 74 69 6f 6e 20 69 6e 76 6f 6b 65 73 20 73 71  ction invokes sq
23c10 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 20  lite3_changes() 
23c20 64 69 72 65 63 74 6c 79 2e 20 45 73 73 65 6e 74  directly. Essent
23c30 69 61 6c 6c 79 3a 0a 2a 2a 20 0a 2a 2a 20 3c 75  ially:.** .** <u
23c40 6c 3e 0a 2a 2a 20 20 20 3c 6c 69 3e 20 5e 28 42  l>.**   <li> ^(B
23c50 65 66 6f 72 65 20 65 6e 74 65 72 69 6e 67 20 61  efore entering a
23c60 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d   trigger program
23c70 20 74 68 65 20 76 61 6c 75 65 20 72 65 74 75 72   the value retur
23c80 6e 65 64 20 62 79 0a 2a 2a 20 20 20 20 20 20 20  ned by.**       
23c90 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
23ca0 28 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 73  () function is s
23cb0 61 76 65 64 2e 20 41 66 74 65 72 20 74 68 65 20  aved. After the 
23cc0 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20  trigger program 
23cd0 0a 2a 2a 20 20 20 20 20 20 20 20 68 61 73 20 66  .**        has f
23ce0 69 6e 69 73 68 65 64 2c 20 74 68 65 20 6f 72 69  inished, the ori
23cf0 67 69 6e 61 6c 20 76 61 6c 75 65 20 69 73 20 72  ginal value is r
23d00 65 73 74 6f 72 65 64 2e 29 5e 0a 2a 2a 20 0a 2a  estored.)^.** .*
23d10 2a 20 20 20 3c 6c 69 3e 20 5e 28 57 69 74 68 69  *   <li> ^(Withi
23d20 6e 20 61 20 74 72 69 67 67 65 72 20 70 72 6f 67  n a trigger prog
23d30 72 61 6d 20 65 61 63 68 20 49 4e 53 45 52 54 2c  ram each INSERT,
23d40 20 55 50 44 41 54 45 20 61 6e 64 20 44 45 4c 45   UPDATE and DELE
23d50 54 45 20 0a 2a 2a 20 20 20 20 20 20 20 20 73 74  TE .**        st
23d60 61 74 65 6d 65 6e 74 20 73 65 74 73 20 74 68 65  atement sets the
23d70 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20   value returned 
23d80 62 79 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67  by sqlite3_chang
23d90 65 73 28 29 20 0a 2a 2a 20 20 20 20 20 20 20 20  es() .**        
23da0 75 70 6f 6e 20 63 6f 6d 70 6c 65 74 69 6f 6e 20  upon completion 
23db0 61 73 20 6e 6f 72 6d 61 6c 2e 20 4f 66 20 63 6f  as normal. Of co
23dc0 75 72 73 65 2c 20 74 68 69 73 20 76 61 6c 75 65  urse, this value
23dd0 20 77 69 6c 6c 20 6e 6f 74 20 69 6e 63 6c 75 64   will not includ
23de0 65 20 0a 2a 2a 20 20 20 20 20 20 20 20 61 6e 79  e .**        any
23df0 20 63 68 61 6e 67 65 73 20 70 65 72 66 6f 72 6d   changes perform
23e00 65 64 20 62 79 20 73 75 62 2d 74 72 69 67 67 65  ed by sub-trigge
23e10 72 73 2c 20 61 73 20 74 68 65 20 73 71 6c 69 74  rs, as the sqlit
23e20 65 33 5f 63 68 61 6e 67 65 73 28 29 20 0a 2a 2a  e3_changes() .**
23e30 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 77 69          value wi
23e40 6c 6c 20 62 65 20 73 61 76 65 64 20 61 6e 64 20  ll be saved and 
23e50 72 65 73 74 6f 72 65 64 20 61 66 74 65 72 20 65  restored after e
23e60 61 63 68 20 73 75 62 2d 74 72 69 67 67 65 72 20  ach sub-trigger 
23e70 68 61 73 20 72 75 6e 2e 29 5e 0a 2a 2a 20 3c 2f  has run.)^.** </
23e80 75 6c 3e 0a 2a 2a 20 0a 2a 2a 20 5e 54 68 69 73  ul>.** .** ^This
23e90 20 6d 65 61 6e 73 20 74 68 61 74 20 69 66 20 74   means that if t
23ea0 68 65 20 63 68 61 6e 67 65 73 28 29 20 53 51 4c  he changes() SQL
23eb0 20 66 75 6e 63 74 69 6f 6e 20 28 6f 72 20 73 69   function (or si
23ec0 6d 69 6c 61 72 29 20 69 73 20 75 73 65 64 0a 2a  milar) is used.*
23ed0 2a 20 62 79 20 74 68 65 20 66 69 72 73 74 20 49  * by the first I
23ee0 4e 53 45 52 54 2c 20 55 50 44 41 54 45 20 6f 72  NSERT, UPDATE or
23ef0 20 44 45 4c 45 54 45 20 73 74 61 74 65 6d 65 6e   DELETE statemen
23f00 74 20 77 69 74 68 69 6e 20 61 20 74 72 69 67 67  t within a trigg
23f10 65 72 2c 20 69 74 20 0a 2a 2a 20 72 65 74 75 72  er, it .** retur
23f20 6e 73 20 74 68 65 20 76 61 6c 75 65 20 61 73 20  ns the value as 
23f30 73 65 74 20 77 68 65 6e 20 74 68 65 20 63 61 6c  set when the cal
23f40 6c 69 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 62  ling statement b
23f50 65 67 61 6e 20 65 78 65 63 75 74 69 6e 67 2e 0a  egan executing..
23f60 2a 2a 20 5e 49 66 20 69 74 20 69 73 20 75 73 65  ** ^If it is use
23f70 64 20 62 79 20 74 68 65 20 73 65 63 6f 6e 64 20  d by the second 
23f80 6f 72 20 73 75 62 73 65 71 75 65 6e 74 20 73 75  or subsequent su
23f90 63 68 20 73 74 61 74 65 6d 65 6e 74 20 77 69 74  ch statement wit
23fa0 68 69 6e 20 61 20 74 72 69 67 67 65 72 20 0a 2a  hin a trigger .*
23fb0 2a 20 70 72 6f 67 72 61 6d 2c 20 74 68 65 20 76  * program, the v
23fc0 61 6c 75 65 20 72 65 74 75 72 6e 65 64 20 72 65  alue returned re
23fd0 66 6c 65 63 74 73 20 74 68 65 20 6e 75 6d 62 65  flects the numbe
23fe0 72 20 6f 66 20 72 6f 77 73 20 6d 6f 64 69 66 69  r of rows modifi
23ff0 65 64 20 62 79 20 74 68 65 20 0a 2a 2a 20 70 72  ed by the .** pr
24000 65 76 69 6f 75 73 20 49 4e 53 45 52 54 2c 20 55  evious INSERT, U
24010 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45 20  PDATE or DELETE 
24020 73 74 61 74 65 6d 65 6e 74 20 77 69 74 68 69 6e  statement within
24030 20 74 68 65 20 73 61 6d 65 20 74 72 69 67 67 65   the same trigge
24040 72 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 61 20 73 65  r..**.** If a se
24050 70 61 72 61 74 65 20 74 68 72 65 61 64 20 6d 61  parate thread ma
24060 6b 65 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74  kes changes on t
24070 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
24080 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77   connection.** w
24090 68 69 6c 65 20 5b 73 71 6c 69 74 65 33 5f 63 68  hile [sqlite3_ch
240a0 61 6e 67 65 73 28 29 5d 20 69 73 20 72 75 6e 6e  anges()] is runn
240b0 69 6e 67 20 74 68 65 6e 20 74 68 65 20 76 61 6c  ing then the val
240c0 75 65 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20 69  ue returned.** i
240d0 73 20 75 6e 70 72 65 64 69 63 74 61 62 6c 65 20  s unpredictable 
240e0 61 6e 64 20 6e 6f 74 20 6d 65 61 6e 69 6e 67 66  and not meaningf
240f0 75 6c 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c  ul..**.** See al
24100 73 6f 3a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 3c  so:.** <ul>.** <
24110 6c 69 3e 20 74 68 65 20 5b 73 71 6c 69 74 65 33  li> the [sqlite3
24120 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29  _total_changes()
24130 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c  ] interface.** <
24140 6c 69 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63  li> the [count_c
24150 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a  hanges pragma].*
24160 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e  * <li> the [chan
24170 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ges() SQL functi
24180 6f 6e 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20  on].** <li> the 
24190 5b 64 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72  [data_version pr
241a0 61 67 6d 61 5d 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a  agma].** </ul>.*
241b0 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
241c0 20 73 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73   sqlite3_changes
241d0 28 73 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a  (sqlite3*);../*.
241e0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 54 6f 74  ** CAPI3REF: Tot
241f0 61 6c 20 4e 75 6d 62 65 72 20 4f 66 20 52 6f 77  al Number Of Row
24200 73 20 4d 6f 64 69 66 69 65 64 0a 2a 2a 20 4d 45  s Modified.** ME
24210 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
24220 0a 2a 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69  .** ^This functi
24230 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 74  on returns the t
24240 6f 74 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 72  otal number of r
24250 6f 77 73 20 69 6e 73 65 72 74 65 64 2c 20 6d 6f  ows inserted, mo
24260 64 69 66 69 65 64 20 6f 72 0a 2a 2a 20 64 65 6c  dified or.** del
24270 65 74 65 64 20 62 79 20 61 6c 6c 20 5b 49 4e 53  eted by all [INS
24280 45 52 54 5d 2c 20 5b 55 50 44 41 54 45 5d 20 6f  ERT], [UPDATE] o
24290 72 20 5b 44 45 4c 45 54 45 5d 20 73 74 61 74 65  r [DELETE] state
242a0 6d 65 6e 74 73 20 63 6f 6d 70 6c 65 74 65 64 0a  ments completed.
242b0 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 64 61 74  ** since the dat
242c0 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e  abase connection
242d0 20 77 61 73 20 6f 70 65 6e 65 64 2c 20 69 6e 63   was opened, inc
242e0 6c 75 64 69 6e 67 20 74 68 6f 73 65 20 65 78 65  luding those exe
242f0 63 75 74 65 64 20 61 73 0a 2a 2a 20 70 61 72 74  cuted as.** part
24300 20 6f 66 20 74 72 69 67 67 65 72 20 70 72 6f 67   of trigger prog
24310 72 61 6d 73 2e 20 5e 45 78 65 63 75 74 69 6e 67  rams. ^Executing
24320 20 61 6e 79 20 6f 74 68 65 72 20 74 79 70 65 20   any other type 
24330 6f 66 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  of SQL statement
24340 0a 2a 2a 20 64 6f 65 73 20 6e 6f 74 20 61 66 66  .** does not aff
24350 65 63 74 20 74 68 65 20 76 61 6c 75 65 20 72 65  ect the value re
24360 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74 65  turned by sqlite
24370 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28  3_total_changes(
24380 29 2e 0a 2a 2a 20 0a 2a 2a 20 5e 43 68 61 6e 67  )..** .** ^Chang
24390 65 73 20 6d 61 64 65 20 61 73 20 70 61 72 74 20  es made as part 
243a0 6f 66 20 5b 66 6f 72 65 69 67 6e 20 6b 65 79 20  of [foreign key 
243b0 61 63 74 69 6f 6e 73 5d 20 61 72 65 20 69 6e 63  actions] are inc
243c0 6c 75 64 65 64 20 69 6e 20 74 68 65 0a 2a 2a 20  luded in the.** 
243d0 63 6f 75 6e 74 2c 20 62 75 74 20 74 68 6f 73 65  count, but those
243e0 20 6d 61 64 65 20 61 73 20 70 61 72 74 20 6f 66   made as part of
243f0 20 52 45 50 4c 41 43 45 20 63 6f 6e 73 74 72 61   REPLACE constra
24400 69 6e 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  int resolution a
24410 72 65 0a 2a 2a 20 6e 6f 74 2e 20 5e 43 68 61 6e  re.** not. ^Chan
24420 67 65 73 20 74 6f 20 61 20 76 69 65 77 20 74 68  ges to a view th
24430 61 74 20 61 72 65 20 69 6e 74 65 72 63 65 70 74  at are intercept
24440 65 64 20 62 79 20 49 4e 53 54 45 41 44 20 4f 46  ed by INSTEAD OF
24450 20 74 72 69 67 67 65 72 73 20 0a 2a 2a 20 61 72   triggers .** ar
24460 65 20 6e 6f 74 20 63 6f 75 6e 74 65 64 2e 0a 2a  e not counted..*
24470 2a 0a 2a 2a 20 54 68 69 73 20 74 68 65 20 5b 73  *.** This the [s
24480 71 6c 69 74 65 33 5f 74 6f 74 61 6c 5f 63 68 61  qlite3_total_cha
24490 6e 67 65 73 28 44 29 5d 20 69 6e 74 65 72 66 61  nges(D)] interfa
244a0 63 65 20 6f 6e 6c 79 20 72 65 70 6f 72 74 73 20  ce only reports 
244b0 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f 66  the number.** of
244c0 20 72 6f 77 73 20 74 68 61 74 20 63 68 61 6e 67   rows that chang
244d0 65 64 20 64 75 65 20 74 6f 20 53 51 4c 20 73 74  ed due to SQL st
244e0 61 74 65 6d 65 6e 74 20 72 75 6e 20 61 67 61 69  atement run agai
244f0 6e 73 74 20 64 61 74 61 62 61 73 65 0a 2a 2a 20  nst database.** 
24500 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 20 41  connection D.  A
24510 6e 79 20 63 68 61 6e 67 65 73 20 62 79 20 6f 74  ny changes by ot
24520 68 65 72 20 64 61 74 61 62 61 73 65 20 63 6f 6e  her database con
24530 6e 65 63 74 69 6f 6e 73 20 61 72 65 20 69 67 6e  nections are ign
24540 6f 72 65 64 2e 0a 2a 2a 20 54 6f 20 64 65 74 65  ored..** To dete
24550 63 74 20 63 68 61 6e 67 65 73 20 61 67 61 69 6e  ct changes again
24560 73 74 20 61 20 64 61 74 61 62 61 73 65 20 66 69  st a database fi
24570 6c 65 20 66 72 6f 6d 20 6f 74 68 65 72 20 64 61  le from other da
24580 74 61 62 61 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63  tabase.** connec
24590 74 69 6f 6e 73 20 75 73 65 20 74 68 65 20 5b 50  tions use the [P
245a0 52 41 47 4d 41 20 64 61 74 61 5f 76 65 72 73 69  RAGMA data_versi
245b0 6f 6e 5d 20 63 6f 6d 6d 61 6e 64 20 6f 72 20 74  on] command or t
245c0 68 65 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 46 43  he.** [SQLITE_FC
245d0 4e 54 4c 5f 44 41 54 41 5f 56 45 52 53 49 4f 4e  NTL_DATA_VERSION
245e0 5d 20 5b 66 69 6c 65 20 63 6f 6e 74 72 6f 6c 5d  ] [file control]
245f0 2e 0a 2a 2a 20 0a 2a 2a 20 49 66 20 61 20 73 65  ..** .** If a se
24600 70 61 72 61 74 65 20 74 68 72 65 61 64 20 6d 61  parate thread ma
24610 6b 65 73 20 63 68 61 6e 67 65 73 20 6f 6e 20 74  kes changes on t
24620 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65  he same database
24630 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 77   connection.** w
24640 68 69 6c 65 20 5b 73 71 6c 69 74 65 33 5f 74 6f  hile [sqlite3_to
24650 74 61 6c 5f 63 68 61 6e 67 65 73 28 29 5d 20 69  tal_changes()] i
24660 73 20 72 75 6e 6e 69 6e 67 20 74 68 65 6e 20 74  s running then t
24670 68 65 20 76 61 6c 75 65 0a 2a 2a 20 72 65 74 75  he value.** retu
24680 72 6e 65 64 20 69 73 20 75 6e 70 72 65 64 69 63  rned is unpredic
24690 74 61 62 6c 65 20 61 6e 64 20 6e 6f 74 20 6d 65  table and not me
246a0 61 6e 69 6e 67 66 75 6c 2e 0a 2a 2a 0a 2a 2a 20  aningful..**.** 
246b0 53 65 65 20 61 6c 73 6f 3a 0a 2a 2a 20 3c 75 6c  See also:.** <ul
246c0 3e 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 73  >.** <li> the [s
246d0 71 6c 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29  qlite3_changes()
246e0 5d 20 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 3c  ] interface.** <
246f0 6c 69 3e 20 74 68 65 20 5b 63 6f 75 6e 74 5f 63  li> the [count_c
24700 68 61 6e 67 65 73 20 70 72 61 67 6d 61 5d 0a 2a  hanges pragma].*
24710 2a 20 3c 6c 69 3e 20 74 68 65 20 5b 63 68 61 6e  * <li> the [chan
24720 67 65 73 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ges() SQL functi
24730 6f 6e 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68 65 20  on].** <li> the 
24740 5b 64 61 74 61 5f 76 65 72 73 69 6f 6e 20 70 72  [data_version pr
24750 61 67 6d 61 5d 0a 2a 2a 20 3c 6c 69 3e 20 74 68  agma].** <li> th
24760 65 20 5b 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f  e [SQLITE_FCNTL_
24770 44 41 54 41 5f 56 45 52 53 49 4f 4e 5d 20 5b 66  DATA_VERSION] [f
24780 69 6c 65 20 63 6f 6e 74 72 6f 6c 5d 0a 2a 2a 20  ile control].** 
24790 3c 2f 75 6c 3e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  </ul>.*/.SQLITE_
247a0 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
247b0 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 73 71  total_changes(sq
247c0 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  lite3*);../*.** 
247d0 43 41 50 49 33 52 45 46 3a 20 49 6e 74 65 72 72  CAPI3REF: Interr
247e0 75 70 74 20 41 20 4c 6f 6e 67 2d 52 75 6e 6e 69  upt A Long-Runni
247f0 6e 67 20 51 75 65 72 79 0a 2a 2a 20 4d 45 54 48  ng Query.** METH
24800 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a  OD: sqlite3.**.*
24810 2a 20 5e 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  * ^This function
24820 20 63 61 75 73 65 73 20 61 6e 79 20 70 65 6e 64   causes any pend
24830 69 6e 67 20 64 61 74 61 62 61 73 65 20 6f 70 65  ing database ope
24840 72 61 74 69 6f 6e 20 74 6f 20 61 62 6f 72 74 20  ration to abort 
24850 61 6e 64 0a 2a 2a 20 72 65 74 75 72 6e 20 61 74  and.** return at
24860 20 69 74 73 20 65 61 72 6c 69 65 73 74 20 6f 70   its earliest op
24870 70 6f 72 74 75 6e 69 74 79 2e 20 54 68 69 73 20  portunity. This 
24880 72 6f 75 74 69 6e 65 20 69 73 20 74 79 70 69 63  routine is typic
24890 61 6c 6c 79 0a 2a 2a 20 63 61 6c 6c 65 64 20 69  ally.** called i
248a0 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 61 20  n response to a 
248b0 75 73 65 72 20 61 63 74 69 6f 6e 20 73 75 63 68  user action such
248c0 20 61 73 20 70 72 65 73 73 69 6e 67 20 22 43 61   as pressing "Ca
248d0 6e 63 65 6c 22 0a 2a 2a 20 6f 72 20 43 74 72 6c  ncel".** or Ctrl
248e0 2d 43 20 77 68 65 72 65 20 74 68 65 20 75 73 65  -C where the use
248f0 72 20 77 61 6e 74 73 20 61 20 6c 6f 6e 67 20 71  r wants a long q
24900 75 65 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 74  uery operation t
24910 6f 20 68 61 6c 74 0a 2a 2a 20 69 6d 6d 65 64 69  o halt.** immedi
24920 61 74 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 74  ately..**.** ^It
24930 20 69 73 20 73 61 66 65 20 74 6f 20 63 61 6c 6c   is safe to call
24940 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 66 72   this routine fr
24950 6f 6d 20 61 20 74 68 72 65 61 64 20 64 69 66 66  om a thread diff
24960 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 0a 2a  erent from the.*
24970 2a 20 74 68 72 65 61 64 20 74 68 61 74 20 69 73  * thread that is
24980 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69   currently runni
24990 6e 67 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ng the database 
249a0 6f 70 65 72 61 74 69 6f 6e 2e 20 20 42 75 74 20  operation.  But 
249b0 69 74 0a 2a 2a 20 69 73 20 6e 6f 74 20 73 61 66  it.** is not saf
249c0 65 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 72  e to call this r
249d0 6f 75 74 69 6e 65 20 77 69 74 68 20 61 20 5b 64  outine with a [d
249e0 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
249f0 6f 6e 5d 20 74 68 61 74 0a 2a 2a 20 69 73 20 63  on] that.** is c
24a00 6c 6f 73 65 64 20 6f 72 20 6d 69 67 68 74 20 63  losed or might c
24a10 6c 6f 73 65 20 62 65 66 6f 72 65 20 73 71 6c 69  lose before sqli
24a20 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 20  te3_interrupt() 
24a30 72 65 74 75 72 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e  returns..**.** ^
24a40 49 66 20 61 6e 20 53 51 4c 20 6f 70 65 72 61 74  If an SQL operat
24a50 69 6f 6e 20 69 73 20 76 65 72 79 20 6e 65 61 72  ion is very near
24a60 6c 79 20 66 69 6e 69 73 68 65 64 20 61 74 20 74  ly finished at t
24a70 68 65 20 74 69 6d 65 20 77 68 65 6e 0a 2a 2a 20  he time when.** 
24a80 73 71 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70  sqlite3_interrup
24a90 74 28 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74  t() is called, t
24aa0 68 65 6e 20 69 74 20 6d 69 67 68 74 20 6e 6f 74  hen it might not
24ab0 20 68 61 76 65 20 61 6e 20 6f 70 70 6f 72 74 75   have an opportu
24ac0 6e 69 74 79 0a 2a 2a 20 74 6f 20 62 65 20 69 6e  nity.** to be in
24ad0 74 65 72 72 75 70 74 65 64 20 61 6e 64 20 6d 69  terrupted and mi
24ae0 67 68 74 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20  ght continue to 
24af0 63 6f 6d 70 6c 65 74 69 6f 6e 2e 0a 2a 2a 0a 2a  completion..**.*
24b00 2a 20 5e 41 6e 20 53 51 4c 20 6f 70 65 72 61 74  * ^An SQL operat
24b10 69 6f 6e 20 74 68 61 74 20 69 73 20 69 6e 74 65  ion that is inte
24b20 72 72 75 70 74 65 64 20 77 69 6c 6c 20 72 65 74  rrupted will ret
24b30 75 72 6e 20 5b 53 51 4c 49 54 45 5f 49 4e 54 45  urn [SQLITE_INTE
24b40 52 52 55 50 54 5d 2e 0a 2a 2a 20 5e 49 66 20 74  RRUPT]..** ^If t
24b50 68 65 20 69 6e 74 65 72 72 75 70 74 65 64 20 53  he interrupted S
24b60 51 4c 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20  QL operation is 
24b70 61 6e 20 49 4e 53 45 52 54 2c 20 55 50 44 41 54  an INSERT, UPDAT
24b80 45 2c 20 6f 72 20 44 45 4c 45 54 45 0a 2a 2a 20  E, or DELETE.** 
24b90 74 68 61 74 20 69 73 20 69 6e 73 69 64 65 20 61  that is inside a
24ba0 6e 20 65 78 70 6c 69 63 69 74 20 74 72 61 6e 73  n explicit trans
24bb0 61 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74 68 65  action, then the
24bc0 20 65 6e 74 69 72 65 20 74 72 61 6e 73 61 63 74   entire transact
24bd0 69 6f 6e 0a 2a 2a 20 77 69 6c 6c 20 62 65 20 72  ion.** will be r
24be0 6f 6c 6c 65 64 20 62 61 63 6b 20 61 75 74 6f 6d  olled back autom
24bf0 61 74 69 63 61 6c 6c 79 2e 0a 2a 2a 0a 2a 2a 20  atically..**.** 
24c00 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 69 6e 74  ^The sqlite3_int
24c10 65 72 72 75 70 74 28 44 29 20 63 61 6c 6c 20 69  errupt(D) call i
24c20 73 20 69 6e 20 65 66 66 65 63 74 20 75 6e 74 69  s in effect unti
24c30 6c 20 61 6c 6c 20 63 75 72 72 65 6e 74 6c 79 20  l all currently 
24c40 72 75 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20 73  running.** SQL s
24c50 74 61 74 65 6d 65 6e 74 73 20 6f 6e 20 5b 64 61  tatements on [da
24c60 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
24c70 6e 5d 20 44 20 63 6f 6d 70 6c 65 74 65 2e 20 20  n] D complete.  
24c80 5e 41 6e 79 20 6e 65 77 20 53 51 4c 20 73 74 61  ^Any new SQL sta
24c90 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61 74 20  tements.** that 
24ca0 61 72 65 20 73 74 61 72 74 65 64 20 61 66 74 65  are started afte
24cb0 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f 69 6e  r the sqlite3_in
24cc0 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c 20 61  terrupt() call a
24cd0 6e 64 20 62 65 66 6f 72 65 20 74 68 65 20 0a 2a  nd before the .*
24ce0 2a 20 72 75 6e 6e 69 6e 67 20 73 74 61 74 65 6d  * running statem
24cf0 65 6e 74 73 20 72 65 61 63 68 65 73 20 7a 65 72  ents reaches zer
24d00 6f 20 61 72 65 20 69 6e 74 65 72 72 75 70 74 65  o are interrupte
24d10 64 20 61 73 20 69 66 20 74 68 65 79 20 68 61 64  d as if they had
24d20 20 62 65 65 6e 0a 2a 2a 20 72 75 6e 6e 69 6e 67   been.** running
24d30 20 70 72 69 6f 72 20 74 6f 20 74 68 65 20 73 71   prior to the sq
24d40 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
24d50 29 20 63 61 6c 6c 2e 20 20 5e 4e 65 77 20 53 51  ) call.  ^New SQ
24d60 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  L statements.** 
24d70 74 68 61 74 20 61 72 65 20 73 74 61 72 74 65 64  that are started
24d80 20 61 66 74 65 72 20 74 68 65 20 72 75 6e 6e 69   after the runni
24d90 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 63 6f 75  ng statement cou
24da0 6e 74 20 72 65 61 63 68 65 73 20 7a 65 72 6f 20  nt reaches zero 
24db0 61 72 65 0a 2a 2a 20 6e 6f 74 20 65 66 66 65 63  are.** not effec
24dc0 74 65 64 20 62 79 20 74 68 65 20 73 71 6c 69 74  ted by the sqlit
24dd0 65 33 5f 69 6e 74 65 72 72 75 70 74 28 29 2e 0a  e3_interrupt()..
24de0 2a 2a 20 5e 41 20 63 61 6c 6c 20 74 6f 20 73 71  ** ^A call to sq
24df0 6c 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28  lite3_interrupt(
24e00 44 29 20 74 68 61 74 20 6f 63 63 75 72 73 20 77  D) that occurs w
24e10 68 65 6e 20 74 68 65 72 65 20 61 72 65 20 6e 6f  hen there are no
24e20 20 72 75 6e 6e 69 6e 67 0a 2a 2a 20 53 51 4c 20   running.** SQL 
24e30 73 74 61 74 65 6d 65 6e 74 73 20 69 73 20 61 20  statements is a 
24e40 6e 6f 2d 6f 70 20 61 6e 64 20 68 61 73 20 6e 6f  no-op and has no
24e50 20 65 66 66 65 63 74 20 6f 6e 20 53 51 4c 20 73   effect on SQL s
24e60 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 74 68 61  tatements.** tha
24e70 74 20 61 72 65 20 73 74 61 72 74 65 64 20 61 66  t are started af
24e80 74 65 72 20 74 68 65 20 73 71 6c 69 74 65 33 5f  ter the sqlite3_
24e90 69 6e 74 65 72 72 75 70 74 28 29 20 63 61 6c 6c  interrupt() call
24ea0 20 72 65 74 75 72 6e 73 2e 0a 2a 2f 0a 53 51 4c   returns..*/.SQL
24eb0 49 54 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c  ITE_API void sql
24ec0 69 74 65 33 5f 69 6e 74 65 72 72 75 70 74 28 73  ite3_interrupt(s
24ed0 71 6c 69 74 65 33 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  qlite3*);../*.**
24ee0 20 43 41 50 49 33 52 45 46 3a 20 44 65 74 65 72   CAPI3REF: Deter
24ef0 6d 69 6e 65 20 49 66 20 41 6e 20 53 51 4c 20 53  mine If An SQL S
24f00 74 61 74 65 6d 65 6e 74 20 49 73 20 43 6f 6d 70  tatement Is Comp
24f10 6c 65 74 65 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65  lete.**.** These
24f20 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20 75 73   routines are us
24f30 65 66 75 6c 20 64 75 72 69 6e 67 20 63 6f 6d 6d  eful during comm
24f40 61 6e 64 2d 6c 69 6e 65 20 69 6e 70 75 74 20 74  and-line input t
24f50 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 20 74  o determine if t
24f60 68 65 0a 2a 2a 20 63 75 72 72 65 6e 74 6c 79 20  he.** currently 
24f70 65 6e 74 65 72 65 64 20 74 65 78 74 20 73 65 65  entered text see
24f80 6d 73 20 74 6f 20 66 6f 72 6d 20 61 20 63 6f 6d  ms to form a com
24f90 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d  plete SQL statem
24fa0 65 6e 74 20 6f 72 0a 2a 2a 20 69 66 20 61 64 64  ent or.** if add
24fb0 69 74 69 6f 6e 61 6c 20 69 6e 70 75 74 20 69 73  itional input is
24fc0 20 6e 65 65 64 65 64 20 62 65 66 6f 72 65 20 73   needed before s
24fd0 65 6e 64 69 6e 67 20 74 68 65 20 74 65 78 74 20  ending the text 
24fe0 69 6e 74 6f 0a 2a 2a 20 53 51 4c 69 74 65 20 66  into.** SQLite f
24ff0 6f 72 20 70 61 72 73 69 6e 67 2e 20 20 5e 54 68  or parsing.  ^Th
25000 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74  ese routines ret
25010 75 72 6e 20 31 20 69 66 20 74 68 65 20 69 6e 70  urn 1 if the inp
25020 75 74 20 73 74 72 69 6e 67 0a 2a 2a 20 61 70 70  ut string.** app
25030 65 61 72 73 20 74 6f 20 62 65 20 61 20 63 6f 6d  ears to be a com
25040 70 6c 65 74 65 20 53 51 4c 20 73 74 61 74 65 6d  plete SQL statem
25050 65 6e 74 2e 20 20 5e 41 20 73 74 61 74 65 6d 65  ent.  ^A stateme
25060 6e 74 20 69 73 20 6a 75 64 67 65 64 20 74 6f 20  nt is judged to 
25070 62 65 0a 2a 2a 20 63 6f 6d 70 6c 65 74 65 20 69  be.** complete i
25080 66 20 69 74 20 65 6e 64 73 20 77 69 74 68 20 61  f it ends with a
25090 20 73 65 6d 69 63 6f 6c 6f 6e 20 74 6f 6b 65 6e   semicolon token
250a0 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20 70 72   and is not a pr
250b0 65 66 69 78 20 6f 66 20 61 0a 2a 2a 20 77 65 6c  efix of a.** wel
250c0 6c 2d 66 6f 72 6d 65 64 20 43 52 45 41 54 45 20  l-formed CREATE 
250d0 54 52 49 47 47 45 52 20 73 74 61 74 65 6d 65 6e  TRIGGER statemen
250e0 74 2e 20 20 5e 53 65 6d 69 63 6f 6c 6f 6e 73 20  t.  ^Semicolons 
250f0 74 68 61 74 20 61 72 65 20 65 6d 62 65 64 64 65  that are embedde
25100 64 20 77 69 74 68 69 6e 0a 2a 2a 20 73 74 72 69  d within.** stri
25110 6e 67 20 6c 69 74 65 72 61 6c 73 20 6f 72 20 71  ng literals or q
25120 75 6f 74 65 64 20 69 64 65 6e 74 69 66 69 65 72  uoted identifier
25130 20 6e 61 6d 65 73 20 6f 72 20 63 6f 6d 6d 65 6e   names or commen
25140 74 73 20 61 72 65 20 6e 6f 74 0a 2a 2a 20 69 6e  ts are not.** in
25150 64 65 70 65 6e 64 65 6e 74 20 74 6f 6b 65 6e 73  dependent tokens
25160 20 28 74 68 65 79 20 61 72 65 20 70 61 72 74 20   (they are part 
25170 6f 66 20 74 68 65 20 74 6f 6b 65 6e 20 69 6e 20  of the token in 
25180 77 68 69 63 68 20 74 68 65 79 20 61 72 65 0a 2a  which they are.*
25190 2a 20 65 6d 62 65 64 64 65 64 29 20 61 6e 64 20  * embedded) and 
251a0 74 68 75 73 20 64 6f 20 6e 6f 74 20 63 6f 75 6e  thus do not coun
251b0 74 20 61 73 20 61 20 73 74 61 74 65 6d 65 6e 74  t as a statement
251c0 20 74 65 72 6d 69 6e 61 74 6f 72 2e 20 20 5e 57   terminator.  ^W
251d0 68 69 74 65 73 70 61 63 65 0a 2a 2a 20 61 6e 64  hitespace.** and
251e0 20 63 6f 6d 6d 65 6e 74 73 20 74 68 61 74 20 66   comments that f
251f0 6f 6c 6c 6f 77 20 74 68 65 20 66 69 6e 61 6c 20  ollow the final 
25200 73 65 6d 69 63 6f 6c 6f 6e 20 61 72 65 20 69 67  semicolon are ig
25210 6e 6f 72 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  nored..**.** ^Th
25220 65 73 65 20 72 6f 75 74 69 6e 65 73 20 72 65 74  ese routines ret
25230 75 72 6e 20 30 20 69 66 20 74 68 65 20 73 74 61  urn 0 if the sta
25240 74 65 6d 65 6e 74 20 69 73 20 69 6e 63 6f 6d 70  tement is incomp
25250 6c 65 74 65 2e 20 20 5e 49 66 20 61 0a 2a 2a 20  lete.  ^If a.** 
25260 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f  memory allocatio
25270 6e 20 66 61 69 6c 73 2c 20 74 68 65 6e 20 53 51  n fails, then SQ
25280 4c 49 54 45 5f 4e 4f 4d 45 4d 20 69 73 20 72 65  LITE_NOMEM is re
25290 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54  turned..**.** ^T
252a0 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 64 6f  hese routines do
252b0 20 6e 6f 74 20 70 61 72 73 65 20 74 68 65 20 53   not parse the S
252c0 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68  QL statements th
252d0 75 73 0a 2a 2a 20 77 69 6c 6c 20 6e 6f 74 20 64  us.** will not d
252e0 65 74 65 63 74 20 73 79 6e 74 61 63 74 69 63 61  etect syntactica
252f0 6c 6c 79 20 69 6e 63 6f 72 72 65 63 74 20 53 51  lly incorrect SQ
25300 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 66 20 53 51  L..**.** ^(If SQ
25310 4c 69 74 65 20 68 61 73 20 6e 6f 74 20 62 65 65  Lite has not bee
25320 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 75 73  n initialized us
25330 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 69 6e 69  ing [sqlite3_ini
25340 74 69 61 6c 69 7a 65 28 29 5d 20 70 72 69 6f 72  tialize()] prior
25350 20 0a 2a 2a 20 74 6f 20 69 6e 76 6f 6b 69 6e 67   .** to invoking
25360 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74   sqlite3_complet
25370 65 31 36 28 29 20 74 68 65 6e 20 73 71 6c 69 74  e16() then sqlit
25380 65 33 5f 69 6e 69 74 69 61 6c 69 7a 65 28 29 20  e3_initialize() 
25390 69 73 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61 75  is invoked.** au
253a0 74 6f 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 73  tomatically by s
253b0 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31  qlite3_complete1
253c0 36 28 29 2e 20 20 49 66 20 74 68 61 74 20 69 6e  6().  If that in
253d0 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 66 61 69  itialization fai
253e0 6c 73 2c 0a 2a 2a 20 74 68 65 6e 20 74 68 65 20  ls,.** then the 
253f0 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f  return value fro
25400 6d 20 73 71 6c 69 74 65 33 5f 63 6f 6d 70 6c 65  m sqlite3_comple
25410 74 65 31 36 28 29 20 77 69 6c 6c 20 62 65 20 6e  te16() will be n
25420 6f 6e 2d 7a 65 72 6f 0a 2a 2a 20 72 65 67 61 72  on-zero.** regar
25430 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72  dless of whether
25440 20 6f 72 20 6e 6f 74 20 74 68 65 20 69 6e 70 75   or not the inpu
25450 74 20 53 51 4c 20 69 73 20 63 6f 6d 70 6c 65 74  t SQL is complet
25460 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 69  e.)^.**.** The i
25470 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  nput to [sqlite3
25480 5f 63 6f 6d 70 6c 65 74 65 28 29 5d 20 6d 75 73  _complete()] mus
25490 74 20 62 65 20 61 20 7a 65 72 6f 2d 74 65 72 6d  t be a zero-term
254a0 69 6e 61 74 65 64 0a 2a 2a 20 55 54 46 2d 38 20  inated.** UTF-8 
254b0 73 74 72 69 6e 67 2e 0a 2a 2a 0a 2a 2a 20 54 68  string..**.** Th
254c0 65 20 69 6e 70 75 74 20 74 6f 20 5b 73 71 6c 69  e input to [sqli
254d0 74 65 33 5f 63 6f 6d 70 6c 65 74 65 31 36 28 29  te3_complete16()
254e0 5d 20 6d 75 73 74 20 62 65 20 61 20 7a 65 72 6f  ] must be a zero
254f0 2d 74 65 72 6d 69 6e 61 74 65 64 0a 2a 2a 20 55  -terminated.** U
25500 54 46 2d 31 36 20 73 74 72 69 6e 67 20 69 6e 20  TF-16 string in 
25510 6e 61 74 69 76 65 20 62 79 74 65 20 6f 72 64 65  native byte orde
25520 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49  r..*/.SQLITE_API
25530 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63 6f 6d   int sqlite3_com
25540 70 6c 65 74 65 28 63 6f 6e 73 74 20 63 68 61 72  plete(const char
25550 20 2a 73 71 6c 29 3b 0a 53 51 4c 49 54 45 5f 41   *sql);.SQLITE_A
25560 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 63  PI int sqlite3_c
25570 6f 6d 70 6c 65 74 65 31 36 28 63 6f 6e 73 74 20  omplete16(const 
25580 76 6f 69 64 20 2a 73 71 6c 29 3b 0a 0a 2f 2a 0a  void *sql);../*.
25590 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 52 65 67  ** CAPI3REF: Reg
255a0 69 73 74 65 72 20 41 20 43 61 6c 6c 62 61 63 6b  ister A Callback
255b0 20 54 6f 20 48 61 6e 64 6c 65 20 53 51 4c 49 54   To Handle SQLIT
255c0 45 5f 42 55 53 59 20 45 72 72 6f 72 73 0a 2a 2a  E_BUSY Errors.**
255d0 20 4b 45 59 57 4f 52 44 53 3a 20 7b 62 75 73 79   KEYWORDS: {busy
255e0 2d 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61 63  -handler callbac
255f0 6b 7d 20 7b 62 75 73 79 20 68 61 6e 64 6c 65 72  k} {busy handler
25600 7d 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  }.** METHOD: sql
25610 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20  ite3.**.** ^The 
25620 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e  sqlite3_busy_han
25630 64 6c 65 72 28 44 2c 58 2c 50 29 20 72 6f 75 74  dler(D,X,P) rout
25640 69 6e 65 20 73 65 74 73 20 61 20 63 61 6c 6c 62  ine sets a callb
25650 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 58 0a 2a  ack function X.*
25660 2a 20 74 68 61 74 20 6d 69 67 68 74 20 62 65 20  * that might be 
25670 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 61 72 67  invoked with arg
25680 75 6d 65 6e 74 20 50 20 77 68 65 6e 65 76 65 72  ument P whenever
25690 0a 2a 2a 20 61 6e 20 61 74 74 65 6d 70 74 20 69  .** an attempt i
256a0 73 20 6d 61 64 65 20 74 6f 20 61 63 63 65 73 73  s made to access
256b0 20 61 20 64 61 74 61 62 61 73 65 20 74 61 62 6c   a database tabl
256c0 65 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74  e associated wit
256d0 68 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63  h.** [database c
256e0 6f 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 77 68 65  onnection] D whe
256f0 6e 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  n another thread
25700 0a 2a 2a 20 6f 72 20 70 72 6f 63 65 73 73 20 68  .** or process h
25710 61 73 20 74 68 65 20 74 61 62 6c 65 20 6c 6f 63  as the table loc
25720 6b 65 64 2e 0a 2a 2a 20 54 68 65 20 73 71 6c 69  ked..** The sqli
25730 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
25740 28 29 20 69 6e 74 65 72 66 61 63 65 20 69 73 20  () interface is 
25750 75 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e  used to implemen
25760 74 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 62 75  t.** [sqlite3_bu
25770 73 79 5f 74 69 6d 65 6f 75 74 28 29 5d 20 61 6e  sy_timeout()] an
25780 64 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74  d [PRAGMA busy_t
25790 69 6d 65 6f 75 74 5d 2e 0a 2a 2a 0a 2a 2a 20 5e  imeout]..**.** ^
257a0 49 66 20 74 68 65 20 62 75 73 79 20 63 61 6c 6c  If the busy call
257b0 62 61 63 6b 20 69 73 20 4e 55 4c 4c 2c 20 74 68  back is NULL, th
257c0 65 6e 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  en [SQLITE_BUSY]
257d0 0a 2a 2a 20 69 73 20 72 65 74 75 72 6e 65 64 20  .** is returned 
257e0 69 6d 6d 65 64 69 61 74 65 6c 79 20 75 70 6f 6e  immediately upon
257f0 20 65 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68   encountering th
25800 65 20 6c 6f 63 6b 2e 20 20 5e 49 66 20 74 68 65  e lock.  ^If the
25810 20 62 75 73 79 20 63 61 6c 6c 62 61 63 6b 0a 2a   busy callback.*
25820 2a 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 2c 20 74  * is not NULL, t
25830 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  hen the callback
25840 20 6d 69 67 68 74 20 62 65 20 69 6e 76 6f 6b 65   might be invoke
25850 64 20 77 69 74 68 20 74 77 6f 20 61 72 67 75 6d  d with two argum
25860 65 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ents..**.** ^The
25870 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
25880 74 6f 20 74 68 65 20 62 75 73 79 20 68 61 6e 64  to the busy hand
25890 6c 65 72 20 69 73 20 61 20 63 6f 70 79 20 6f 66  ler is a copy of
258a0 20 74 68 65 20 76 6f 69 64 2a 20 70 6f 69 6e 74   the void* point
258b0 65 72 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 74  er which.** is t
258c0 68 65 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e  he third argumen
258d0 74 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 75 73  t to sqlite3_bus
258e0 79 5f 68 61 6e 64 6c 65 72 28 29 2e 20 20 5e 54  y_handler().  ^T
258f0 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65  he second argume
25900 6e 74 20 74 6f 0a 2a 2a 20 74 68 65 20 62 75 73  nt to.** the bus
25910 79 20 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62 61  y handler callba
25920 63 6b 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  ck is the number
25930 20 6f 66 20 74 69 6d 65 73 20 74 68 61 74 20 74   of times that t
25940 68 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20  he busy handler 
25950 68 61 73 0a 2a 2a 20 62 65 65 6e 20 69 6e 76 6f  has.** been invo
25960 6b 65 64 20 70 72 65 76 69 6f 75 73 6c 79 20 66  ked previously f
25970 6f 72 20 74 68 65 20 73 61 6d 65 20 6c 6f 63 6b  or the same lock
25980 69 6e 67 20 65 76 65 6e 74 2e 20 20 5e 49 66 20  ing event.  ^If 
25990 74 68 65 0a 2a 2a 20 62 75 73 79 20 63 61 6c 6c  the.** busy call
259a0 62 61 63 6b 20 72 65 74 75 72 6e 73 20 30 2c 20  back returns 0, 
259b0 74 68 65 6e 20 6e 6f 20 61 64 64 69 74 69 6f 6e  then no addition
259c0 61 6c 20 61 74 74 65 6d 70 74 73 20 61 72 65 20  al attempts are 
259d0 6d 61 64 65 20 74 6f 0a 2a 2a 20 61 63 63 65 73  made to.** acces
259e0 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61  s the database a
259f0 6e 64 20 5b 53 51 4c 49 54 45 5f 42 55 53 59 5d  nd [SQLITE_BUSY]
25a00 20 69 73 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20   is returned.** 
25a10 74 6f 20 74 68 65 20 61 70 70 6c 69 63 61 74 69  to the applicati
25a20 6f 6e 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 63  on..** ^If the c
25a30 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e 73 20  allback returns 
25a40 6e 6f 6e 2d 7a 65 72 6f 2c 20 74 68 65 6e 20 61  non-zero, then a
25a50 6e 6f 74 68 65 72 20 61 74 74 65 6d 70 74 0a 2a  nother attempt.*
25a60 2a 20 69 73 20 6d 61 64 65 20 74 6f 20 61 63 63  * is made to acc
25a70 65 73 73 20 74 68 65 20 64 61 74 61 62 61 73 65  ess the database
25a80 20 61 6e 64 20 74 68 65 20 63 79 63 6c 65 20 72   and the cycle r
25a90 65 70 65 61 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68  epeats..**.** Th
25aa0 65 20 70 72 65 73 65 6e 63 65 20 6f 66 20 61 20  e presence of a 
25ab0 62 75 73 79 20 68 61 6e 64 6c 65 72 20 64 6f 65  busy handler doe
25ac0 73 20 6e 6f 74 20 67 75 61 72 61 6e 74 65 65 20  s not guarantee 
25ad0 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20  that it will be 
25ae0 69 6e 76 6f 6b 65 64 0a 2a 2a 20 77 68 65 6e 20  invoked.** when 
25af0 74 68 65 72 65 20 69 73 20 6c 6f 63 6b 20 63 6f  there is lock co
25b00 6e 74 65 6e 74 69 6f 6e 2e 20 5e 49 66 20 53 51  ntention. ^If SQ
25b10 4c 69 74 65 20 64 65 74 65 72 6d 69 6e 65 73 20  Lite determines 
25b20 74 68 61 74 20 69 6e 76 6f 6b 69 6e 67 20 74 68  that invoking th
25b30 65 20 62 75 73 79 0a 2a 2a 20 68 61 6e 64 6c 65  e busy.** handle
25b40 72 20 63 6f 75 6c 64 20 72 65 73 75 6c 74 20 69  r could result i
25b50 6e 20 61 20 64 65 61 64 6c 6f 63 6b 2c 20 69 74  n a deadlock, it
25b60 20 77 69 6c 6c 20 67 6f 20 61 68 65 61 64 20 61   will go ahead a
25b70 6e 64 20 72 65 74 75 72 6e 20 5b 53 51 4c 49 54  nd return [SQLIT
25b80 45 5f 42 55 53 59 5d 0a 2a 2a 20 74 6f 20 74 68  E_BUSY].** to th
25b90 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 69 6e  e application in
25ba0 73 74 65 61 64 20 6f 66 20 69 6e 76 6f 6b 69 6e  stead of invokin
25bb0 67 20 74 68 65 20 0a 2a 2a 20 62 75 73 79 20 68  g the .** busy h
25bc0 61 6e 64 6c 65 72 2e 0a 2a 2a 20 43 6f 6e 73 69  andler..** Consi
25bd0 64 65 72 20 61 20 73 63 65 6e 61 72 69 6f 20 77  der a scenario w
25be0 68 65 72 65 20 6f 6e 65 20 70 72 6f 63 65 73 73  here one process
25bf0 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20 72 65   is holding a re
25c00 61 64 20 6c 6f 63 6b 20 74 68 61 74 0a 2a 2a 20  ad lock that.** 
25c10 69 74 20 69 73 20 74 72 79 69 6e 67 20 74 6f 20  it is trying to 
25c20 70 72 6f 6d 6f 74 65 20 74 6f 20 61 20 72 65 73  promote to a res
25c30 65 72 76 65 64 20 6c 6f 63 6b 20 61 6e 64 0a 2a  erved lock and.*
25c40 2a 20 61 20 73 65 63 6f 6e 64 20 70 72 6f 63 65  * a second proce
25c50 73 73 20 69 73 20 68 6f 6c 64 69 6e 67 20 61 20  ss is holding a 
25c60 72 65 73 65 72 76 65 64 20 6c 6f 63 6b 20 74 68  reserved lock th
25c70 61 74 20 69 74 20 69 73 20 74 72 79 69 6e 67 0a  at it is trying.
25c80 2a 2a 20 74 6f 20 70 72 6f 6d 6f 74 65 20 74 6f  ** to promote to
25c90 20 61 6e 20 65 78 63 6c 75 73 69 76 65 20 6c 6f   an exclusive lo
25ca0 63 6b 2e 20 20 54 68 65 20 66 69 72 73 74 20 70  ck.  The first p
25cb0 72 6f 63 65 73 73 20 63 61 6e 6e 6f 74 20 70 72  rocess cannot pr
25cc0 6f 63 65 65 64 0a 2a 2a 20 62 65 63 61 75 73 65  oceed.** because
25cd0 20 69 74 20 69 73 20 62 6c 6f 63 6b 65 64 20 62   it is blocked b
25ce0 79 20 74 68 65 20 73 65 63 6f 6e 64 20 61 6e 64  y the second and
25cf0 20 74 68 65 20 73 65 63 6f 6e 64 20 70 72 6f 63   the second proc
25d00 65 73 73 20 63 61 6e 6e 6f 74 0a 2a 2a 20 70 72  ess cannot.** pr
25d10 6f 63 65 65 64 20 62 65 63 61 75 73 65 20 69 74  oceed because it
25d20 20 69 73 20 62 6c 6f 63 6b 65 64 20 62 79 20 74   is blocked by t
25d30 68 65 20 66 69 72 73 74 2e 20 20 49 66 20 62 6f  he first.  If bo
25d40 74 68 20 70 72 6f 63 65 73 73 65 73 0a 2a 2a 20  th processes.** 
25d50 69 6e 76 6f 6b 65 20 74 68 65 20 62 75 73 79 20  invoke the busy 
25d60 68 61 6e 64 6c 65 72 73 2c 20 6e 65 69 74 68 65  handlers, neithe
25d70 72 20 77 69 6c 6c 20 6d 61 6b 65 20 61 6e 79 20  r will make any 
25d80 70 72 6f 67 72 65 73 73 2e 20 20 54 68 65 72 65  progress.  There
25d90 66 6f 72 65 2c 0a 2a 2a 20 53 51 4c 69 74 65 20  fore,.** SQLite 
25da0 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54 45 5f  returns [SQLITE_
25db0 42 55 53 59 5d 20 66 6f 72 20 74 68 65 20 66 69  BUSY] for the fi
25dc0 72 73 74 20 70 72 6f 63 65 73 73 2c 20 68 6f 70  rst process, hop
25dd0 69 6e 67 20 74 68 61 74 20 74 68 69 73 0a 2a 2a  ing that this.**
25de0 20 77 69 6c 6c 20 69 6e 64 75 63 65 20 74 68 65   will induce the
25df0 20 66 69 72 73 74 20 70 72 6f 63 65 73 73 20 74   first process t
25e00 6f 20 72 65 6c 65 61 73 65 20 69 74 73 20 72 65  o release its re
25e10 61 64 20 6c 6f 63 6b 20 61 6e 64 20 61 6c 6c 6f  ad lock and allo
25e20 77 0a 2a 2a 20 74 68 65 20 73 65 63 6f 6e 64 20  w.** the second 
25e30 70 72 6f 63 65 73 73 20 74 6f 20 70 72 6f 63 65  process to proce
25e40 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64  ed..**.** ^The d
25e50 65 66 61 75 6c 74 20 62 75 73 79 20 63 61 6c 6c  efault busy call
25e60 62 61 63 6b 20 69 73 20 4e 55 4c 4c 2e 0a 2a 2a  back is NULL..**
25e70 0a 2a 2a 20 5e 28 54 68 65 72 65 20 63 61 6e 20  .** ^(There can 
25e80 6f 6e 6c 79 20 62 65 20 61 20 73 69 6e 67 6c 65  only be a single
25e90 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 64 65   busy handler de
25ea0 66 69 6e 65 64 20 66 6f 72 20 65 61 63 68 0a 2a  fined for each.*
25eb0 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  * [database conn
25ec0 65 63 74 69 6f 6e 5d 2e 20 20 53 65 74 74 69 6e  ection].  Settin
25ed0 67 20 61 20 6e 65 77 20 62 75 73 79 20 68 61 6e  g a new busy han
25ee0 64 6c 65 72 20 63 6c 65 61 72 73 20 61 6e 79 0a  dler clears any.
25ef0 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 73 65  ** previously se
25f00 74 20 68 61 6e 64 6c 65 72 2e 29 5e 20 20 5e 4e  t handler.)^  ^N
25f10 6f 74 65 20 74 68 61 74 20 63 61 6c 6c 69 6e 67  ote that calling
25f20 20 5b 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 74   [sqlite3_busy_t
25f30 69 6d 65 6f 75 74 28 29 5d 0a 2a 2a 20 6f 72 20  imeout()].** or 
25f40 65 76 61 6c 75 61 74 69 6e 67 20 5b 50 52 41 47  evaluating [PRAG
25f50 4d 41 20 62 75 73 79 5f 74 69 6d 65 6f 75 74 3d  MA busy_timeout=
25f60 4e 5d 20 77 69 6c 6c 20 63 68 61 6e 67 65 20 74  N] will change t
25f70 68 65 0a 2a 2a 20 62 75 73 79 20 68 61 6e 64 6c  he.** busy handl
25f80 65 72 20 61 6e 64 20 74 68 75 73 20 63 6c 65 61  er and thus clea
25f90 72 20 61 6e 79 20 70 72 65 76 69 6f 75 73 6c 79  r any previously
25fa0 20 73 65 74 20 62 75 73 79 20 68 61 6e 64 6c 65   set busy handle
25fb0 72 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 62 75 73  r..**.** The bus
25fc0 79 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75 6c  y callback shoul
25fd0 64 20 6e 6f 74 20 74 61 6b 65 20 61 6e 79 20 61  d not take any a
25fe0 63 74 69 6f 6e 73 20 77 68 69 63 68 20 6d 6f 64  ctions which mod
25ff0 69 66 79 20 74 68 65 0a 2a 2a 20 64 61 74 61 62  ify the.** datab
26000 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  ase connection t
26010 68 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65 20  hat invoked the 
26020 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 20 20 49  busy handler.  I
26030 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 0a 2a  n other words,.*
26040 2a 20 74 68 65 20 62 75 73 79 20 68 61 6e 64 6c  * the busy handl
26050 65 72 20 69 73 20 6e 6f 74 20 72 65 65 6e 74 72  er is not reentr
26060 61 6e 74 2e 20 20 41 6e 79 20 73 75 63 68 20 61  ant.  Any such a
26070 63 74 69 6f 6e 73 0a 2a 2a 20 72 65 73 75 6c 74  ctions.** result
26080 20 69 6e 20 75 6e 64 65 66 69 6e 65 64 20 62 65   in undefined be
26090 68 61 76 69 6f 72 2e 0a 2a 2a 20 0a 2a 2a 20 41  havior..** .** A
260a0 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 6d 75   busy handler mu
260b0 73 74 20 6e 6f 74 20 63 6c 6f 73 65 20 74 68 65  st not close the
260c0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
260d0 74 69 6f 6e 0a 2a 2a 20 6f 72 20 5b 70 72 65 70  tion.** or [prep
260e0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 5d 20  ared statement] 
260f0 74 68 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65  that invoked the
26100 20 62 75 73 79 20 68 61 6e 64 6c 65 72 2e 0a 2a   busy handler..*
26110 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74  /.SQLITE_API int
26120 20 73 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61   sqlite3_busy_ha
26130 6e 64 6c 65 72 28 73 71 6c 69 74 65 33 2a 2c 69  ndler(sqlite3*,i
26140 6e 74 28 2a 29 28 76 6f 69 64 2a 2c 69 6e 74 29  nt(*)(void*,int)
26150 2c 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  ,void*);../*.** 
26160 43 41 50 49 33 52 45 46 3a 20 53 65 74 20 41 20  CAPI3REF: Set A 
26170 42 75 73 79 20 54 69 6d 65 6f 75 74 0a 2a 2a 20  Busy Timeout.** 
26180 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a  METHOD: sqlite3.
26190 2a 2a 0a 2a 2a 20 5e 54 68 69 73 20 72 6f 75 74  **.** ^This rout
261a0 69 6e 65 20 73 65 74 73 20 61 20 5b 73 71 6c 69  ine sets a [sqli
261b0 74 65 33 5f 62 75 73 79 5f 68 61 6e 64 6c 65 72  te3_busy_handler
261c0 20 7c 20 62 75 73 79 20 68 61 6e 64 6c 65 72 5d   | busy handler]
261d0 20 74 68 61 74 20 73 6c 65 65 70 73 0a 2a 2a 20   that sleeps.** 
261e0 66 6f 72 20 61 20 73 70 65 63 69 66 69 65 64 20  for a specified 
261f0 61 6d 6f 75 6e 74 20 6f 66 20 74 69 6d 65 20 77  amount of time w
26200 68 65 6e 20 61 20 74 61 62 6c 65 20 69 73 20 6c  hen a table is l
26210 6f 63 6b 65 64 2e 20 20 5e 54 68 65 20 68 61 6e  ocked.  ^The han
26220 64 6c 65 72 0a 2a 2a 20 77 69 6c 6c 20 73 6c 65  dler.** will sle
26230 65 70 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  ep multiple time
26240 73 20 75 6e 74 69 6c 20 61 74 20 6c 65 61 73 74  s until at least
26250 20 22 6d 73 22 20 6d 69 6c 6c 69 73 65 63 6f 6e   "ms" millisecon
26260 64 73 20 6f 66 20 73 6c 65 65 70 69 6e 67 0a 2a  ds of sleeping.*
26270 2a 20 68 61 76 65 20 61 63 63 75 6d 75 6c 61 74  * have accumulat
26280 65 64 2e 20 20 5e 41 66 74 65 72 20 61 74 20 6c  ed.  ^After at l
26290 65 61 73 74 20 22 6d 73 22 20 6d 69 6c 6c 69 73  east "ms" millis
262a0 65 63 6f 6e 64 73 20 6f 66 20 73 6c 65 65 70 69  econds of sleepi
262b0 6e 67 2c 0a 2a 2a 20 74 68 65 20 68 61 6e 64 6c  ng,.** the handl
262c0 65 72 20 72 65 74 75 72 6e 73 20 30 20 77 68 69  er returns 0 whi
262d0 63 68 20 63 61 75 73 65 73 20 5b 73 71 6c 69 74  ch causes [sqlit
262e0 65 33 5f 73 74 65 70 28 29 5d 20 74 6f 20 72 65  e3_step()] to re
262f0 74 75 72 6e 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f  turn.** [SQLITE_
26300 42 55 53 59 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 43 61  BUSY]..**.** ^Ca
26310 6c 6c 69 6e 67 20 74 68 69 73 20 72 6f 75 74 69  lling this routi
26320 6e 65 20 77 69 74 68 20 61 6e 20 61 72 67 75 6d  ne with an argum
26330 65 6e 74 20 6c 65 73 73 20 74 68 61 6e 20 6f 72  ent less than or
26340 20 65 71 75 61 6c 20 74 6f 20 7a 65 72 6f 0a 2a   equal to zero.*
26350 2a 20 74 75 72 6e 73 20 6f 66 66 20 61 6c 6c 20  * turns off all 
26360 62 75 73 79 20 68 61 6e 64 6c 65 72 73 2e 0a 2a  busy handlers..*
26370 2a 0a 2a 2a 20 5e 28 54 68 65 72 65 20 63 61 6e  *.** ^(There can
26380 20 6f 6e 6c 79 20 62 65 20 61 20 73 69 6e 67 6c   only be a singl
26390 65 20 62 75 73 79 20 68 61 6e 64 6c 65 72 20 66  e busy handler f
263a0 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a  or a particular.
263b0 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e  ** [database con
263c0 6e 65 63 74 69 6f 6e 5d 20 61 74 20 61 6e 79 20  nection] at any 
263d0 67 69 76 65 6e 20 6d 6f 6d 65 6e 74 2e 20 20 49  given moment.  I
263e0 66 20 61 6e 6f 74 68 65 72 20 62 75 73 79 20 68  f another busy h
263f0 61 6e 64 6c 65 72 0a 2a 2a 20 77 61 73 20 64 65  andler.** was de
26400 66 69 6e 65 64 20 20 28 75 73 69 6e 67 20 5b 73  fined  (using [s
26410 71 6c 69 74 65 33 5f 62 75 73 79 5f 68 61 6e 64  qlite3_busy_hand
26420 6c 65 72 28 29 5d 29 20 70 72 69 6f 72 20 74 6f  ler()]) prior to
26430 20 63 61 6c 6c 69 6e 67 0a 2a 2a 20 74 68 69 73   calling.** this
26440 20 72 6f 75 74 69 6e 65 2c 20 74 68 61 74 20 6f   routine, that o
26450 74 68 65 72 20 62 75 73 79 20 68 61 6e 64 6c 65  ther busy handle
26460 72 20 69 73 20 63 6c 65 61 72 65 64 2e 29 5e 0a  r is cleared.)^.
26470 2a 2a 0a 2a 2a 20 53 65 65 20 61 6c 73 6f 3a 20  **.** See also: 
26480 20 5b 50 52 41 47 4d 41 20 62 75 73 79 5f 74 69   [PRAGMA busy_ti
26490 6d 65 6f 75 74 5d 0a 2a 2f 0a 53 51 4c 49 54 45  meout].*/.SQLITE
264a0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
264b0 5f 62 75 73 79 5f 74 69 6d 65 6f 75 74 28 73 71  _busy_timeout(sq
264c0 6c 69 74 65 33 2a 2c 20 69 6e 74 20 6d 73 29 3b  lite3*, int ms);
264d0 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
264e0 3a 20 43 6f 6e 76 65 6e 69 65 6e 63 65 20 52 6f  : Convenience Ro
264f0 75 74 69 6e 65 73 20 46 6f 72 20 52 75 6e 6e 69  utines For Runni
26500 6e 67 20 51 75 65 72 69 65 73 0a 2a 2a 20 4d 45  ng Queries.** ME
26510 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a 2a  THOD: sqlite3.**
26520 0a 2a 2a 20 54 68 69 73 20 69 73 20 61 20 6c 65  .** This is a le
26530 67 61 63 79 20 69 6e 74 65 72 66 61 63 65 20 74  gacy interface t
26540 68 61 74 20 69 73 20 70 72 65 73 65 72 76 65 64  hat is preserved
26550 20 66 6f 72 20 62 61 63 6b 77 61 72 64 73 20 63   for backwards c
26560 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 0a 2a 2a  ompatibility..**
26570 20 55 73 65 20 6f 66 20 74 68 69 73 20 69 6e 74   Use of this int
26580 65 72 66 61 63 65 20 69 73 20 6e 6f 74 20 72 65  erface is not re
26590 63 6f 6d 6d 65 6e 64 65 64 2e 0a 2a 2a 0a 2a 2a  commended..**.**
265a0 20 44 65 66 69 6e 69 74 69 6f 6e 3a 20 41 20 3c   Definition: A <
265b0 62 3e 72 65 73 75 6c 74 20 74 61 62 6c 65 3c 2f  b>result table</
265c0 62 3e 20 69 73 20 6d 65 6d 6f 72 79 20 64 61 74  b> is memory dat
265d0 61 20 73 74 72 75 63 74 75 72 65 20 63 72 65 61  a structure crea
265e0 74 65 64 20 62 79 20 74 68 65 0a 2a 2a 20 5b 73  ted by the.** [s
265f0 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
26600 28 29 5d 20 69 6e 74 65 72 66 61 63 65 2e 20 20  ()] interface.  
26610 41 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 72  A result table r
26620 65 63 6f 72 64 73 20 74 68 65 0a 2a 2a 20 63 6f  ecords the.** co
26630 6d 70 6c 65 74 65 20 71 75 65 72 79 20 72 65 73  mplete query res
26640 75 6c 74 73 20 66 72 6f 6d 20 6f 6e 65 20 6f 72  ults from one or
26650 20 6d 6f 72 65 20 71 75 65 72 69 65 73 2e 0a 2a   more queries..*
26660 2a 0a 2a 2a 20 54 68 65 20 74 61 62 6c 65 20 63  *.** The table c
26670 6f 6e 63 65 70 74 75 61 6c 6c 79 20 68 61 73 20  onceptually has 
26680 61 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73  a number of rows
26690 20 61 6e 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 42   and columns.  B
266a0 75 74 0a 2a 2a 20 74 68 65 73 65 20 6e 75 6d 62  ut.** these numb
266b0 65 72 73 20 61 72 65 20 6e 6f 74 20 70 61 72 74  ers are not part
266c0 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
266d0 61 62 6c 65 20 69 74 73 65 6c 66 2e 20 20 54 68  able itself.  Th
266e0 65 73 65 0a 2a 2a 20 6e 75 6d 62 65 72 73 20 61  ese.** numbers a
266f0 72 65 20 6f 62 74 61 69 6e 65 64 20 73 65 70 61  re obtained sepa
26700 72 61 74 65 6c 79 2e 20 20 4c 65 74 20 4e 20 62  rately.  Let N b
26710 65 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  e the number of 
26720 72 6f 77 73 0a 2a 2a 20 61 6e 64 20 4d 20 62 65  rows.** and M be
26730 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
26740 6f 6c 75 6d 6e 73 2e 0a 2a 2a 0a 2a 2a 20 41 20  olumns..**.** A 
26750 72 65 73 75 6c 74 20 74 61 62 6c 65 20 69 73 20  result table is 
26760 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e  an array of poin
26770 74 65 72 73 20 74 6f 20 7a 65 72 6f 2d 74 65 72  ters to zero-ter
26780 6d 69 6e 61 74 65 64 20 55 54 46 2d 38 20 73 74  minated UTF-8 st
26790 72 69 6e 67 73 2e 0a 2a 2a 20 54 68 65 72 65 20  rings..** There 
267a0 61 72 65 20 28 4e 2b 31 29 2a 4d 20 65 6c 65 6d  are (N+1)*M elem
267b0 65 6e 74 73 20 69 6e 20 74 68 65 20 61 72 72 61  ents in the arra
267c0 79 2e 20 20 54 68 65 20 66 69 72 73 74 20 4d 20  y.  The first M 
267d0 70 6f 69 6e 74 65 72 73 20 70 6f 69 6e 74 0a 2a  pointers point.*
267e0 2a 20 74 6f 20 7a 65 72 6f 2d 74 65 72 6d 69 6e  * to zero-termin
267f0 61 74 65 64 20 73 74 72 69 6e 67 73 20 74 68 61  ated strings tha
26800 74 20 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 6e  t  contain the n
26810 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f 6c 75  ames of the colu
26820 6d 6e 73 2e 0a 2a 2a 20 54 68 65 20 72 65 6d 61  mns..** The rema
26830 69 6e 69 6e 67 20 65 6e 74 72 69 65 73 20 61 6c  ining entries al
26840 6c 20 70 6f 69 6e 74 20 74 6f 20 71 75 65 72 79  l point to query
26850 20 72 65 73 75 6c 74 73 2e 20 20 4e 55 4c 4c 20   results.  NULL 
26860 76 61 6c 75 65 73 20 72 65 73 75 6c 74 0a 2a 2a  values result.**
26870 20 69 6e 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72   in NULL pointer
26880 73 2e 20 20 41 6c 6c 20 6f 74 68 65 72 20 76 61  s.  All other va
26890 6c 75 65 73 20 61 72 65 20 69 6e 20 74 68 65 69  lues are in thei
268a0 72 20 55 54 46 2d 38 20 7a 65 72 6f 2d 74 65 72  r UTF-8 zero-ter
268b0 6d 69 6e 61 74 65 64 0a 2a 2a 20 73 74 72 69 6e  minated.** strin
268c0 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e  g representation
268d0 20 61 73 20 72 65 74 75 72 6e 65 64 20 62 79 20   as returned by 
268e0 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f  [sqlite3_column_
268f0 74 65 78 74 28 29 5d 2e 0a 2a 2a 0a 2a 2a 20 41  text()]..**.** A
26900 20 72 65 73 75 6c 74 20 74 61 62 6c 65 20 6d 69   result table mi
26910 67 68 74 20 63 6f 6e 73 69 73 74 20 6f 66 20 6f  ght consist of o
26920 6e 65 20 6f 72 20 6d 6f 72 65 20 6d 65 6d 6f 72  ne or more memor
26930 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 73 2e 0a 2a  y allocations..*
26940 2a 20 49 74 20 69 73 20 6e 6f 74 20 73 61 66 65  * It is not safe
26950 20 74 6f 20 70 61 73 73 20 61 20 72 65 73 75 6c   to pass a resul
26960 74 20 74 61 62 6c 65 20 64 69 72 65 63 74 6c 79  t table directly
26970 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 66 72 65   to [sqlite3_fre
26980 65 28 29 5d 2e 0a 2a 2a 20 41 20 72 65 73 75 6c  e()]..** A resul
26990 74 20 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 62  t table should b
269a0 65 20 64 65 61 6c 6c 6f 63 61 74 65 64 20 75 73  e deallocated us
269b0 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 66 72 65  ing [sqlite3_fre
269c0 65 5f 74 61 62 6c 65 28 29 5d 2e 0a 2a 2a 0a 2a  e_table()]..**.*
269d0 2a 20 5e 28 41 73 20 61 6e 20 65 78 61 6d 70 6c  * ^(As an exampl
269e0 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  e of the result 
269f0 74 61 62 6c 65 20 66 6f 72 6d 61 74 2c 20 73 75  table format, su
26a00 70 70 6f 73 65 20 61 20 71 75 65 72 79 20 72 65  ppose a query re
26a10 73 75 6c 74 0a 2a 2a 20 69 73 20 61 73 20 66 6f  sult.** is as fo
26a20 6c 6c 6f 77 73 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c  llows:.**.** <bl
26a30 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 2a  ockquote><pre>.*
26a40 2a 20 20 20 20 20 20 20 20 4e 61 6d 65 20 20 20  *        Name   
26a50 20 20 20 20 20 7c 20 41 67 65 0a 2a 2a 20 20 20       | Age.**   
26a60 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d       -----------
26a70 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2a 2a 20  ------------.** 
26a80 20 20 20 20 20 20 20 41 6c 69 63 65 20 20 20 20         Alice    
26a90 20 20 20 7c 20 34 33 0a 2a 2a 20 20 20 20 20 20     | 43.**      
26aa0 20 20 42 6f 62 20 20 20 20 20 20 20 20 20 7c 20    Bob         | 
26ab0 32 38 0a 2a 2a 20 20 20 20 20 20 20 20 43 69 6e  28.**        Cin
26ac0 64 79 20 20 20 20 20 20 20 7c 20 32 31 0a 2a 2a  dy       | 21.**
26ad0 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75   </pre></blockqu
26ae0 6f 74 65 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65  ote>.**.** There
26af0 20 61 72 65 20 74 77 6f 20 63 6f 6c 75 6d 6e 20   are two column 
26b00 28 4d 3d 3d 32 29 20 61 6e 64 20 74 68 72 65 65  (M==2) and three
26b10 20 72 6f 77 73 20 28 4e 3d 3d 33 29 2e 20 20 54   rows (N==3).  T
26b20 68 75 73 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c  hus the.** resul
26b30 74 20 74 61 62 6c 65 20 68 61 73 20 38 20 65 6e  t table has 8 en
26b40 74 72 69 65 73 2e 20 20 53 75 70 70 6f 73 65 20  tries.  Suppose 
26b50 74 68 65 20 72 65 73 75 6c 74 20 74 61 62 6c 65  the result table
26b60 20 69 73 20 73 74 6f 72 65 64 0a 2a 2a 20 69 6e   is stored.** in
26b70 20 61 6e 20 61 72 72 61 79 20 6e 61 6d 65 73 20   an array names 
26b80 61 7a 52 65 73 75 6c 74 2e 20 20 54 68 65 6e 20  azResult.  Then 
26b90 61 7a 52 65 73 75 6c 74 20 68 6f 6c 64 73 20 74  azResult holds t
26ba0 68 69 73 20 63 6f 6e 74 65 6e 74 3a 0a 2a 2a 0a  his content:.**.
26bb0 2a 2a 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  ** <blockquote><
26bc0 70 72 65 3e 0a 2a 2a 20 20 20 20 20 20 20 20 61  pre>.**        a
26bd0 7a 52 65 73 75 6c 74 26 23 39 31 3b 30 5d 20 3d  zResult&#91;0] =
26be0 20 22 4e 61 6d 65 22 3b 0a 2a 2a 20 20 20 20 20   "Name";.**     
26bf0 20 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b     azResult&#91;
26c00 31 5d 20 3d 20 22 41 67 65 22 3b 0a 2a 2a 20 20  1] = "Age";.**  
26c10 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26 23        azResult&#
26c20 39 31 3b 32 5d 20 3d 20 22 41 6c 69 63 65 22 3b  91;2] = "Alice";
26c30 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52 65 73  .**        azRes
26c40 75 6c 74 26 23 39 31 3b 33 5d 20 3d 20 22 34 33  ult&#91;3] = "43
26c50 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20 61 7a 52  ";.**        azR
26c60 65 73 75 6c 74 26 23 39 31 3b 34 5d 20 3d 20 22  esult&#91;4] = "
26c70 42 6f 62 22 3b 0a 2a 2a 20 20 20 20 20 20 20 20  Bob";.**        
26c80 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 35 5d 20  azResult&#91;5] 
26c90 3d 20 22 32 38 22 3b 0a 2a 2a 20 20 20 20 20 20  = "28";.**      
26ca0 20 20 61 7a 52 65 73 75 6c 74 26 23 39 31 3b 36    azResult&#91;6
26cb0 5d 20 3d 20 22 43 69 6e 64 79 22 3b 0a 2a 2a 20  ] = "Cindy";.** 
26cc0 20 20 20 20 20 20 20 61 7a 52 65 73 75 6c 74 26         azResult&
26cd0 23 39 31 3b 37 5d 20 3d 20 22 32 31 22 3b 0a 2a  #91;7] = "21";.*
26ce0 2a 20 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  * </pre></blockq
26cf0 75 6f 74 65 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54  uote>)^.**.** ^T
26d00 68 65 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74  he sqlite3_get_t
26d10 61 62 6c 65 28 29 20 66 75 6e 63 74 69 6f 6e 20  able() function 
26d20 65 76 61 6c 75 61 74 65 73 20 6f 6e 65 20 6f 72  evaluates one or
26d30 20 6d 6f 72 65 0a 2a 2a 20 73 65 6d 69 63 6f 6c   more.** semicol
26d40 6f 6e 2d 73 65 70 61 72 61 74 65 64 20 53 51 4c  on-separated SQL
26d50 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6e 20 74   statements in t
26d60 68 65 20 7a 65 72 6f 2d 74 65 72 6d 69 6e 61 74  he zero-terminat
26d70 65 64 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69  ed UTF-8.** stri
26d80 6e 67 20 6f 66 20 69 74 73 20 32 6e 64 20 70 61  ng of its 2nd pa
26d90 72 61 6d 65 74 65 72 20 61 6e 64 20 72 65 74 75  rameter and retu
26da0 72 6e 73 20 61 20 72 65 73 75 6c 74 20 74 61 62  rns a result tab
26db0 6c 65 20 74 6f 20 74 68 65 0a 2a 2a 20 70 6f 69  le to the.** poi
26dc0 6e 74 65 72 20 67 69 76 65 6e 20 69 6e 20 69 74  nter given in it
26dd0 73 20 33 72 64 20 70 61 72 61 6d 65 74 65 72 2e  s 3rd parameter.
26de0 0a 2a 2a 0a 2a 2a 20 41 66 74 65 72 20 74 68 65  .**.** After the
26df0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 68 61 73   application has
26e00 20 66 69 6e 69 73 68 65 64 20 77 69 74 68 20 74   finished with t
26e10 68 65 20 72 65 73 75 6c 74 20 66 72 6f 6d 20 73  he result from s
26e20 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62 6c 65  qlite3_get_table
26e30 28 29 2c 0a 2a 2a 20 69 74 20 6d 75 73 74 20 70  (),.** it must p
26e40 61 73 73 20 74 68 65 20 72 65 73 75 6c 74 20 74  ass the result t
26e50 61 62 6c 65 20 70 6f 69 6e 74 65 72 20 74 6f 20  able pointer to 
26e60 73 71 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62  sqlite3_free_tab
26e70 6c 65 28 29 20 69 6e 20 6f 72 64 65 72 20 74 6f  le() in order to
26e80 0a 2a 2a 20 72 65 6c 65 61 73 65 20 74 68 65 20  .** release the 
26e90 6d 65 6d 6f 72 79 20 74 68 61 74 20 77 61 73 20  memory that was 
26ea0 6d 61 6c 6c 6f 63 65 64 2e 20 20 42 65 63 61 75  malloced.  Becau
26eb0 73 65 20 6f 66 20 74 68 65 20 77 61 79 20 74 68  se of the way th
26ec0 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 61  e.** [sqlite3_ma
26ed0 6c 6c 6f 63 28 29 5d 20 68 61 70 70 65 6e 73 20  lloc()] happens 
26ee0 77 69 74 68 69 6e 20 73 71 6c 69 74 65 33 5f 67  within sqlite3_g
26ef0 65 74 5f 74 61 62 6c 65 28 29 2c 20 74 68 65 20  et_table(), the 
26f00 63 61 6c 6c 69 6e 67 0a 2a 2a 20 66 75 6e 63 74  calling.** funct
26f10 69 6f 6e 20 6d 75 73 74 20 6e 6f 74 20 74 72 79  ion must not try
26f20 20 74 6f 20 63 61 6c 6c 20 5b 73 71 6c 69 74 65   to call [sqlite
26f30 33 5f 66 72 65 65 28 29 5d 20 64 69 72 65 63 74  3_free()] direct
26f40 6c 79 2e 20 20 4f 6e 6c 79 0a 2a 2a 20 5b 73 71  ly.  Only.** [sq
26f50 6c 69 74 65 33 5f 66 72 65 65 5f 74 61 62 6c 65  lite3_free_table
26f60 28 29 5d 20 69 73 20 61 62 6c 65 20 74 6f 20 72  ()] is able to r
26f70 65 6c 65 61 73 65 20 74 68 65 20 6d 65 6d 6f 72  elease the memor
26f80 79 20 70 72 6f 70 65 72 6c 79 20 61 6e 64 20 73  y properly and s
26f90 61 66 65 6c 79 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  afely..**.** The
26fa0 20 73 71 6c 69 74 65 33 5f 67 65 74 5f 74 61 62   sqlite3_get_tab
26fb0 6c 65 28 29 20 69 6e 74 65 72 66 61 63 65 20 69  le() interface i
26fc0 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 61 73  s implemented as
26fd0 20 61 20 77 72 61 70 70 65 72 20 61 72 6f 75 6e   a wrapper aroun
26fe0 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78  d.** [sqlite3_ex
26ff0 65 63 28 29 5d 2e 20 20 54 68 65 20 73 71 6c 69  ec()].  The sqli
27000 74 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 20  te3_get_table() 
27010 72 6f 75 74 69 6e 65 20 64 6f 65 73 20 6e 6f 74  routine does not
27020 20 68 61 76 65 20 61 63 63 65 73 73 0a 2a 2a 20   have access.** 
27030 74 6f 20 61 6e 79 20 69 6e 74 65 72 6e 61 6c 20  to any internal 
27040 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73 20  data structures 
27050 6f 66 20 53 51 4c 69 74 65 2e 20 20 49 74 20 75  of SQLite.  It u
27060 73 65 73 20 6f 6e 6c 79 20 74 68 65 20 70 75 62  ses only the pub
27070 6c 69 63 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65  lic.** interface
27080 20 64 65 66 69 6e 65 64 20 68 65 72 65 2e 20 20   defined here.  
27090 41 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65  As a consequence
270a0 2c 20 65 72 72 6f 72 73 20 74 68 61 74 20 6f 63  , errors that oc
270b0 63 75 72 20 69 6e 20 74 68 65 0a 2a 2a 20 77 72  cur in the.** wr
270c0 61 70 70 65 72 20 6c 61 79 65 72 20 6f 75 74 73  apper layer outs
270d0 69 64 65 20 6f 66 20 74 68 65 20 69 6e 74 65 72  ide of the inter
270e0 6e 61 6c 20 5b 73 71 6c 69 74 65 33 5f 65 78 65  nal [sqlite3_exe
270f0 63 28 29 5d 20 63 61 6c 6c 20 61 72 65 20 6e 6f  c()] call are no
27100 74 0a 2a 2a 20 72 65 66 6c 65 63 74 65 64 20 69  t.** reflected i
27110 6e 20 73 75 62 73 65 71 75 65 6e 74 20 63 61 6c  n subsequent cal
27120 6c 73 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 65  ls to [sqlite3_e
27130 72 72 63 6f 64 65 28 29 5d 20 6f 72 0a 2a 2a 20  rrcode()] or.** 
27140 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 28  [sqlite3_errmsg(
27150 29 5d 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  )]..*/.SQLITE_AP
27160 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 67 65  I int sqlite3_ge
27170 74 5f 74 61 62 6c 65 28 0a 20 20 73 71 6c 69 74  t_table(.  sqlit
27180 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20  e3 *db,         
27190 20 2f 2a 20 41 6e 20 6f 70 65 6e 20 64 61 74 61   /* An open data
271a0 62 61 73 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20  base */.  const 
271b0 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20 20  char *zSql,     
271c0 2f 2a 20 53 51 4c 20 74 6f 20 62 65 20 65 76 61  /* SQL to be eva
271d0 6c 75 61 74 65 64 20 2a 2f 0a 20 20 63 68 61 72  luated */.  char
271e0 20 2a 2a 2a 70 61 7a 52 65 73 75 6c 74 2c 20 20   ***pazResult,  
271f0 20 20 2f 2a 20 52 65 73 75 6c 74 73 20 6f 66 20    /* Results of 
27200 74 68 65 20 71 75 65 72 79 20 2a 2f 0a 20 20 69  the query */.  i
27210 6e 74 20 2a 70 6e 52 6f 77 2c 20 20 20 20 20 20  nt *pnRow,      
27220 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f       /* Number o
27230 66 20 72 65 73 75 6c 74 20 72 6f 77 73 20 77 72  f result rows wr
27240 69 74 74 65 6e 20 68 65 72 65 20 2a 2f 0a 20 20  itten here */.  
27250 69 6e 74 20 2a 70 6e 43 6f 6c 75 6d 6e 2c 20 20  int *pnColumn,  
27260 20 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20        /* Number 
27270 6f 66 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e  of result column
27280 73 20 77 72 69 74 74 65 6e 20 68 65 72 65 20 2a  s written here *
27290 2f 0a 20 20 63 68 61 72 20 2a 2a 70 7a 45 72 72  /.  char **pzErr
272a0 6d 73 67 20 20 20 20 20 20 20 2f 2a 20 45 72 72  msg       /* Err
272b0 6f 72 20 6d 73 67 20 77 72 69 74 74 65 6e 20 68  or msg written h
272c0 65 72 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45  ere */.);.SQLITE
272d0 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74 65  _API void sqlite
272e0 33 5f 66 72 65 65 5f 74 61 62 6c 65 28 63 68 61  3_free_table(cha
272f0 72 20 2a 2a 72 65 73 75 6c 74 29 3b 0a 0a 2f 2a  r **result);../*
27300 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 46 6f  .** CAPI3REF: Fo
27310 72 6d 61 74 74 65 64 20 53 74 72 69 6e 67 20 50  rmatted String P
27320 72 69 6e 74 69 6e 67 20 46 75 6e 63 74 69 6f 6e  rinting Function
27330 73 0a 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 72 6f  s.**.** These ro
27340 75 74 69 6e 65 73 20 61 72 65 20 77 6f 72 6b 2d  utines are work-
27350 61 6c 69 6b 65 73 20 6f 66 20 74 68 65 20 22 70  alikes of the "p
27360 72 69 6e 74 66 28 29 22 20 66 61 6d 69 6c 79 20  rintf()" family 
27370 6f 66 20 66 75 6e 63 74 69 6f 6e 73 0a 2a 2a 20  of functions.** 
27380 66 72 6f 6d 20 74 68 65 20 73 74 61 6e 64 61 72  from the standar
27390 64 20 43 20 6c 69 62 72 61 72 79 2e 0a 2a 2a 20  d C library..** 
273a0 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20 75  These routines u
273b0 6e 64 65 72 73 74 61 6e 64 20 6d 6f 73 74 20 6f  nderstand most o
273c0 66 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 66 6f 72  f the common for
273d0 6d 61 74 74 69 6e 67 20 6f 70 74 69 6f 6e 73 20  matting options 
273e0 66 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 74 61 6e  from.** the stan
273f0 64 61 72 64 20 6c 69 62 72 61 72 79 20 70 72 69  dard library pri
27400 6e 74 66 28 29 20 0a 2a 2a 20 70 6c 75 73 20 73  ntf() .** plus s
27410 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 6e  ome additional n
27420 6f 6e 2d 73 74 61 6e 64 61 72 64 20 66 6f 72 6d  on-standard form
27430 61 74 73 20 28 5b 25 71 5d 2c 20 5b 25 51 5d 2c  ats ([%q], [%Q],
27440 20 5b 25 77 5d 2c 20 61 6e 64 20 5b 25 7a 5d 29   [%w], and [%z])
27450 2e 0a 2a 2a 20 53 65 65 20 74 68 65 20 5b 62 75  ..** See the [bu
27460 69 6c 74 2d 69 6e 20 70 72 69 6e 74 66 28 29 5d  ilt-in printf()]
27470 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
27480 6f 72 20 64 65 74 61 69 6c 73 2e 0a 2a 2a 0a 2a  or details..**.*
27490 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 6d  * ^The sqlite3_m
274a0 70 72 69 6e 74 66 28 29 20 61 6e 64 20 73 71 6c  printf() and sql
274b0 69 74 65 33 5f 76 6d 70 72 69 6e 74 66 28 29 20  ite3_vmprintf() 
274c0 72 6f 75 74 69 6e 65 73 20 77 72 69 74 65 20 74  routines write t
274d0 68 65 69 72 0a 2a 2a 20 72 65 73 75 6c 74 73 20  heir.** results 
274e0 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 6f 62 74 61  into memory obta
274f0 69 6e 65 64 20 66 72 6f 6d 20 5b 73 71 6c 69 74  ined from [sqlit
27500 65 33 5f 6d 61 6c 6c 6f 63 36 34 28 29 5d 2e 0a  e3_malloc64()]..
27510 2a 2a 20 54 68 65 20 73 74 72 69 6e 67 73 20 72  ** The strings r
27520 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 73 65  eturned by these
27530 20 74 77 6f 20 72 6f 75 74 69 6e 65 73 20 73 68   two routines sh
27540 6f 75 6c 64 20 62 65 0a 2a 2a 20 72 65 6c 65 61  ould be.** relea
27550 73 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f  sed by [sqlite3_
27560 66 72 65 65 28 29 5d 2e 20 20 5e 42 6f 74 68 20  free()].  ^Both 
27570 72 6f 75 74 69 6e 65 73 20 72 65 74 75 72 6e 20  routines return 
27580 61 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  a.** NULL pointe
27590 72 20 69 66 20 5b 73 71 6c 69 74 65 33 5f 6d 61  r if [sqlite3_ma
275a0 6c 6c 6f 63 36 34 28 29 5d 20 69 73 20 75 6e 61  lloc64()] is una
275b0 62 6c 65 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20  ble to allocate 
275c0 65 6e 6f 75 67 68 0a 2a 2a 20 6d 65 6d 6f 72 79  enough.** memory
275d0 20 74 6f 20 68 6f 6c 64 20 74 68 65 20 72 65 73   to hold the res
275e0 75 6c 74 69 6e 67 20 73 74 72 69 6e 67 2e 0a 2a  ulting string..*
275f0 2a 0a 2a 2a 20 5e 28 54 68 65 20 73 71 6c 69 74  *.** ^(The sqlit
27600 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 20 72 6f  e3_snprintf() ro
27610 75 74 69 6e 65 20 69 73 20 73 69 6d 69 6c 61 72  utine is similar
27620 20 74 6f 20 22 73 6e 70 72 69 6e 74 66 28 29 22   to "snprintf()"
27630 20 66 72 6f 6d 0a 2a 2a 20 74 68 65 20 73 74 61   from.** the sta
27640 6e 64 61 72 64 20 43 20 6c 69 62 72 61 72 79 2e  ndard C library.
27650 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20    The result is 
27660 77 72 69 74 74 65 6e 20 69 6e 74 6f 20 74 68 65  written into the
27670 0a 2a 2a 20 62 75 66 66 65 72 20 73 75 70 70 6c  .** buffer suppl
27680 69 65 64 20 61 73 20 74 68 65 20 73 65 63 6f 6e  ied as the secon
27690 64 20 70 61 72 61 6d 65 74 65 72 20 77 68 6f 73  d parameter whos
276a0 65 20 73 69 7a 65 20 69 73 20 67 69 76 65 6e 20  e size is given 
276b0 62 79 0a 2a 2a 20 74 68 65 20 66 69 72 73 74 20  by.** the first 
276c0 70 61 72 61 6d 65 74 65 72 2e 20 4e 6f 74 65 20  parameter. Note 
276d0 74 68 61 74 20 74 68 65 20 6f 72 64 65 72 20 6f  that the order o
276e0 66 20 74 68 65 0a 2a 2a 20 66 69 72 73 74 20 74  f the.** first t
276f0 77 6f 20 70 61 72 61 6d 65 74 65 72 73 20 69 73  wo parameters is
27700 20 72 65 76 65 72 73 65 64 20 66 72 6f 6d 20 73   reversed from s
27710 6e 70 72 69 6e 74 66 28 29 2e 29 5e 20 20 54 68  nprintf().)^  Th
27720 69 73 20 69 73 20 61 6e 0a 2a 2a 20 68 69 73 74  is is an.** hist
27730 6f 72 69 63 61 6c 20 61 63 63 69 64 65 6e 74 20  orical accident 
27740 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 66  that cannot be f
27750 69 78 65 64 20 77 69 74 68 6f 75 74 20 62 72 65  ixed without bre
27760 61 6b 69 6e 67 0a 2a 2a 20 62 61 63 6b 77 61 72  aking.** backwar
27770 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79  ds compatibility
27780 2e 20 20 5e 28 4e 6f 74 65 20 61 6c 73 6f 20 74  .  ^(Note also t
27790 68 61 74 20 73 71 6c 69 74 65 33 5f 73 6e 70 72  hat sqlite3_snpr
277a0 69 6e 74 66 28 29 0a 2a 2a 20 72 65 74 75 72 6e  intf().** return
277b0 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 69  s a pointer to i
277c0 74 73 20 62 75 66 66 65 72 20 69 6e 73 74 65 61  ts buffer instea
277d0 64 20 6f 66 20 74 68 65 20 6e 75 6d 62 65 72 20  d of the number 
277e0 6f 66 0a 2a 2a 20 63 68 61 72 61 63 74 65 72 73  of.** characters
277f0 20 61 63 74 75 61 6c 6c 79 20 77 72 69 74 74 65   actually writte
27800 6e 20 69 6e 74 6f 20 74 68 65 20 62 75 66 66 65  n into the buffe
27810 72 2e 29 5e 20 20 57 65 20 61 64 6d 69 74 20 74  r.)^  We admit t
27820 68 61 74 0a 2a 2a 20 74 68 65 20 6e 75 6d 62 65  hat.** the numbe
27830 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20  r of characters 
27840 77 72 69 74 74 65 6e 20 77 6f 75 6c 64 20 62 65  written would be
27850 20 61 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 72   a more useful r
27860 65 74 75 72 6e 0a 2a 2a 20 76 61 6c 75 65 20 62  eturn.** value b
27870 75 74 20 77 65 20 63 61 6e 6e 6f 74 20 63 68 61  ut we cannot cha
27880 6e 67 65 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e  nge the implemen
27890 74 61 74 69 6f 6e 20 6f 66 20 73 71 6c 69 74 65  tation of sqlite
278a0 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a 2a 20  3_snprintf().** 
278b0 6e 6f 77 20 77 69 74 68 6f 75 74 20 62 72 65 61  now without brea
278c0 6b 69 6e 67 20 63 6f 6d 70 61 74 69 62 69 6c 69  king compatibili
278d0 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 73 20 6c 6f  ty..**.** ^As lo
278e0 6e 67 20 61 73 20 74 68 65 20 62 75 66 66 65 72  ng as the buffer
278f0 20 73 69 7a 65 20 69 73 20 67 72 65 61 74 65 72   size is greater
27900 20 74 68 61 6e 20 7a 65 72 6f 2c 20 73 71 6c 69   than zero, sqli
27910 74 65 33 5f 73 6e 70 72 69 6e 74 66 28 29 0a 2a  te3_snprintf().*
27920 2a 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61  * guarantees tha
27930 74 20 74 68 65 20 62 75 66 66 65 72 20 69 73 20  t the buffer is 
27940 61 6c 77 61 79 73 20 7a 65 72 6f 2d 74 65 72 6d  always zero-term
27950 69 6e 61 74 65 64 2e 20 20 5e 54 68 65 20 66 69  inated.  ^The fi
27960 72 73 74 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  rst.** parameter
27970 20 22 6e 22 20 69 73 20 74 68 65 20 74 6f 74 61   "n" is the tota
27980 6c 20 73 69 7a 65 20 6f 66 20 74 68 65 20 62 75  l size of the bu
27990 66 66 65 72 2c 20 69 6e 63 6c 75 64 69 6e 67 20  ffer, including 
279a0 73 70 61 63 65 20 66 6f 72 0a 2a 2a 20 74 68 65  space for.** the
279b0 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72   zero terminator
279c0 2e 20 20 53 6f 20 74 68 65 20 6c 6f 6e 67 65 73  .  So the longes
279d0 74 20 73 74 72 69 6e 67 20 74 68 61 74 20 63 61  t string that ca
279e0 6e 20 62 65 20 63 6f 6d 70 6c 65 74 65 6c 79 0a  n be completely.
279f0 2a 2a 20 77 72 69 74 74 65 6e 20 77 69 6c 6c 20  ** written will 
27a00 62 65 20 6e 2d 31 20 63 68 61 72 61 63 74 65 72  be n-1 character
27a10 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71  s..**.** ^The sq
27a20 6c 69 74 65 33 5f 76 73 6e 70 72 69 6e 74 66 28  lite3_vsnprintf(
27a30 29 20 72 6f 75 74 69 6e 65 20 69 73 20 61 20 76  ) routine is a v
27a40 61 72 61 72 67 73 20 76 65 72 73 69 6f 6e 20 6f  arargs version o
27a50 66 20 73 71 6c 69 74 65 33 5f 73 6e 70 72 69 6e  f sqlite3_snprin
27a60 74 66 28 29 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20  tf()..**.** See 
27a70 61 6c 73 6f 3a 20 20 5b 62 75 69 6c 74 2d 69 6e  also:  [built-in
27a80 20 70 72 69 6e 74 66 28 29 5d 2c 20 5b 70 72 69   printf()], [pri
27a90 6e 74 66 28 29 20 53 51 4c 20 66 75 6e 63 74 69  ntf() SQL functi
27aa0 6f 6e 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  on].*/.SQLITE_AP
27ab0 49 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  I char *sqlite3_
27ac0 6d 70 72 69 6e 74 66 28 63 6f 6e 73 74 20 63 68  mprintf(const ch
27ad0 61 72 2a 2c 2e 2e 2e 29 3b 0a 53 51 4c 49 54 45  ar*,...);.SQLITE
27ae0 5f 41 50 49 20 63 68 61 72 20 2a 73 71 6c 69 74  _API char *sqlit
27af0 65 33 5f 76 6d 70 72 69 6e 74 66 28 63 6f 6e 73  e3_vmprintf(cons
27b00 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c 69 73 74  t char*, va_list
27b10 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68  );.SQLITE_API ch
27b20 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 6e 70 72  ar *sqlite3_snpr
27b30 69 6e 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63  intf(int,char*,c
27b40 6f 6e 73 74 20 63 68 61 72 2a 2c 20 2e 2e 2e 29  onst char*, ...)
27b50 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 68 61  ;.SQLITE_API cha
27b60 72 20 2a 73 71 6c 69 74 65 33 5f 76 73 6e 70 72  r *sqlite3_vsnpr
27b70 69 6e 74 66 28 69 6e 74 2c 63 68 61 72 2a 2c 63  intf(int,char*,c
27b80 6f 6e 73 74 20 63 68 61 72 2a 2c 20 76 61 5f 6c  onst char*, va_l
27b90 69 73 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  ist);../*.** CAP
27ba0 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79 20 41 6c  I3REF: Memory Al
27bb0 6c 6f 63 61 74 69 6f 6e 20 53 75 62 73 79 73 74  location Subsyst
27bc0 65 6d 0a 2a 2a 0a 2a 2a 20 54 68 65 20 53 51 4c  em.**.** The SQL
27bd0 69 74 65 20 63 6f 72 65 20 75 73 65 73 20 74 68  ite core uses th
27be0 65 73 65 20 74 68 72 65 65 20 72 6f 75 74 69 6e  ese three routin
27bf0 65 73 20 66 6f 72 20 61 6c 6c 20 6f 66 20 69 74  es for all of it
27c00 73 20 6f 77 6e 0a 2a 2a 20 69 6e 74 65 72 6e 61  s own.** interna
27c10 6c 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  l memory allocat
27c20 69 6f 6e 20 6e 65 65 64 73 2e 20 22 43 6f 72 65  ion needs. "Core
27c30 22 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75  " in the previou
27c40 73 20 73 65 6e 74 65 6e 63 65 0a 2a 2a 20 64 6f  s sentence.** do
27c50 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 6f  es not include o
27c60 70 65 72 61 74 69 6e 67 2d 73 79 73 74 65 6d 20  perating-system 
27c70 73 70 65 63 69 66 69 63 20 56 46 53 20 69 6d 70  specific VFS imp
27c80 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 20 20 54 68  lementation.  Th
27c90 65 0a 2a 2a 20 57 69 6e 64 6f 77 73 20 56 46 53  e.** Windows VFS
27ca0 20 75 73 65 73 20 6e 61 74 69 76 65 20 6d 61 6c   uses native mal
27cb0 6c 6f 63 28 29 20 61 6e 64 20 66 72 65 65 28 29  loc() and free()
27cc0 20 66 6f 72 20 73 6f 6d 65 20 6f 70 65 72 61 74   for some operat
27cd0 69 6f 6e 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ions..**.** ^The
27ce0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
27cf0 29 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  ) routine return
27d00 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  s a pointer to a
27d10 20 62 6c 6f 63 6b 0a 2a 2a 20 6f 66 20 6d 65 6d   block.** of mem
27d20 6f 72 79 20 61 74 20 6c 65 61 73 74 20 4e 20 62  ory at least N b
27d30 79 74 65 73 20 69 6e 20 6c 65 6e 67 74 68 2c 20  ytes in length, 
27d40 77 68 65 72 65 20 4e 20 69 73 20 74 68 65 20 70  where N is the p
27d50 61 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 5e 49 66  arameter..** ^If
27d60 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
27d70 29 20 69 73 20 75 6e 61 62 6c 65 20 74 6f 20 6f  ) is unable to o
27d80 62 74 61 69 6e 20 73 75 66 66 69 63 69 65 6e 74  btain sufficient
27d90 20 66 72 65 65 0a 2a 2a 20 6d 65 6d 6f 72 79 2c   free.** memory,
27da0 20 69 74 20 72 65 74 75 72 6e 73 20 61 20 4e 55   it returns a NU
27db0 4c 4c 20 70 6f 69 6e 74 65 72 2e 20 20 5e 49 66  LL pointer.  ^If
27dc0 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 4e   the parameter N
27dd0 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d   to.** sqlite3_m
27de0 61 6c 6c 6f 63 28 29 20 69 73 20 7a 65 72 6f 20  alloc() is zero 
27df0 6f 72 20 6e 65 67 61 74 69 76 65 20 74 68 65 6e  or negative then
27e00 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
27e10 29 20 72 65 74 75 72 6e 73 0a 2a 2a 20 61 20 4e  ) returns.** a N
27e20 55 4c 4c 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 0a  ULL pointer..**.
27e30 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
27e40 6d 61 6c 6c 6f 63 36 34 28 4e 29 20 72 6f 75 74  malloc64(N) rout
27e50 69 6e 65 20 77 6f 72 6b 73 20 6a 75 73 74 20 6c  ine works just l
27e60 69 6b 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d  ike.** sqlite3_m
27e70 61 6c 6c 6f 63 28 4e 29 20 65 78 63 65 70 74 20  alloc(N) except 
27e80 74 68 61 74 20 4e 20 69 73 20 61 6e 20 75 6e 73  that N is an uns
27e90 69 67 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74  igned 64-bit int
27ea0 65 67 65 72 20 69 6e 73 74 65 61 64 0a 2a 2a 20  eger instead.** 
27eb0 6f 66 20 61 20 73 69 67 6e 65 64 20 33 32 2d 62  of a signed 32-b
27ec0 69 74 20 69 6e 74 65 67 65 72 2e 0a 2a 2a 0a 2a  it integer..**.*
27ed0 2a 20 5e 43 61 6c 6c 69 6e 67 20 73 71 6c 69 74  * ^Calling sqlit
27ee0 65 33 5f 66 72 65 65 28 29 20 77 69 74 68 20 61  e3_free() with a
27ef0 20 70 6f 69 6e 74 65 72 20 70 72 65 76 69 6f 75   pointer previou
27f00 73 6c 79 20 72 65 74 75 72 6e 65 64 0a 2a 2a 20  sly returned.** 
27f10 62 79 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  by sqlite3_mallo
27f20 63 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 72  c() or sqlite3_r
27f30 65 61 6c 6c 6f 63 28 29 20 72 65 6c 65 61 73 65  ealloc() release
27f40 73 20 74 68 61 74 20 6d 65 6d 6f 72 79 20 73 6f  s that memory so
27f50 0a 2a 2a 20 74 68 61 74 20 69 74 20 6d 69 67 68  .** that it migh
27f60 74 20 62 65 20 72 65 75 73 65 64 2e 20 20 5e 54  t be reused.  ^T
27f70 68 65 20 73 71 6c 69 74 65 33 5f 66 72 65 65 28  he sqlite3_free(
27f80 29 20 72 6f 75 74 69 6e 65 20 69 73 0a 2a 2a 20  ) routine is.** 
27f90 61 20 6e 6f 2d 6f 70 20 69 66 20 69 73 20 63 61  a no-op if is ca
27fa0 6c 6c 65 64 20 77 69 74 68 20 61 20 4e 55 4c 4c  lled with a NULL
27fb0 20 70 6f 69 6e 74 65 72 2e 20 20 50 61 73 73 69   pointer.  Passi
27fc0 6e 67 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ng a NULL pointe
27fd0 72 0a 2a 2a 20 74 6f 20 73 71 6c 69 74 65 33 5f  r.** to sqlite3_
27fe0 66 72 65 65 28 29 20 69 73 20 68 61 72 6d 6c 65  free() is harmle
27ff0 73 73 2e 20 20 41 66 74 65 72 20 62 65 69 6e 67  ss.  After being
28000 20 66 72 65 65 64 2c 20 6d 65 6d 6f 72 79 0a 2a   freed, memory.*
28010 2a 20 73 68 6f 75 6c 64 20 6e 65 69 74 68 65 72  * should neither
28020 20 62 65 20 72 65 61 64 20 6e 6f 72 20 77 72 69   be read nor wri
28030 74 74 65 6e 2e 20 20 45 76 65 6e 20 72 65 61 64  tten.  Even read
28040 69 6e 67 20 70 72 65 76 69 6f 75 73 6c 79 20 66  ing previously f
28050 72 65 65 64 0a 2a 2a 20 6d 65 6d 6f 72 79 20 6d  reed.** memory m
28060 69 67 68 74 20 72 65 73 75 6c 74 20 69 6e 20 61  ight result in a
28070 20 73 65 67 6d 65 6e 74 61 74 69 6f 6e 20 66 61   segmentation fa
28080 75 6c 74 20 6f 72 20 6f 74 68 65 72 20 73 65 76  ult or other sev
28090 65 72 65 20 65 72 72 6f 72 2e 0a 2a 2a 20 4d 65  ere error..** Me
280a0 6d 6f 72 79 20 63 6f 72 72 75 70 74 69 6f 6e 2c  mory corruption,
280b0 20 61 20 73 65 67 6d 65 6e 74 61 74 69 6f 6e 20   a segmentation 
280c0 66 61 75 6c 74 2c 20 6f 72 20 6f 74 68 65 72 20  fault, or other 
280d0 73 65 76 65 72 65 20 65 72 72 6f 72 0a 2a 2a 20  severe error.** 
280e0 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69 66 20  might result if 
280f0 73 71 6c 69 74 65 33 5f 66 72 65 65 28 29 20 69  sqlite3_free() i
28100 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20  s called with a 
28110 6e 6f 6e 2d 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  non-NULL pointer
28120 20 74 68 61 74 0a 2a 2a 20 77 61 73 20 6e 6f 74   that.** was not
28130 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
28140 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 20  qlite3_malloc() 
28150 6f 72 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  or sqlite3_reall
28160 6f 63 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  oc()..**.** ^The
28170 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
28180 28 58 2c 4e 29 20 69 6e 74 65 72 66 61 63 65 20  (X,N) interface 
28190 61 74 74 65 6d 70 74 73 20 74 6f 20 72 65 73 69  attempts to resi
281a0 7a 65 20 61 0a 2a 2a 20 70 72 69 6f 72 20 6d 65  ze a.** prior me
281b0 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20  mory allocation 
281c0 58 20 74 6f 20 62 65 20 61 74 20 6c 65 61 73 74  X to be at least
281d0 20 4e 20 62 79 74 65 73 2e 0a 2a 2a 20 5e 49 66   N bytes..** ^If
281e0 20 74 68 65 20 58 20 70 61 72 61 6d 65 74 65 72   the X parameter
281f0 20 74 6f 20 73 71 6c 69 74 65 33 5f 72 65 61 6c   to sqlite3_real
28200 6c 6f 63 28 58 2c 4e 29 0a 2a 2a 20 69 73 20 61  loc(X,N).** is a
28210 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68   NULL pointer th
28220 65 6e 20 69 74 73 20 62 65 68 61 76 69 6f 72 20  en its behavior 
28230 69 73 20 69 64 65 6e 74 69 63 61 6c 20 74 6f 20  is identical to 
28240 63 61 6c 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69 74  calling.** sqlit
28250 65 33 5f 6d 61 6c 6c 6f 63 28 4e 29 2e 0a 2a 2a  e3_malloc(N)..**
28260 20 5e 49 66 20 74 68 65 20 4e 20 70 61 72 61 6d   ^If the N param
28270 65 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f  eter to sqlite3_
28280 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 69 73 20  realloc(X,N) is 
28290 7a 65 72 6f 20 6f 72 0a 2a 2a 20 6e 65 67 61 74  zero or.** negat
282a0 69 76 65 20 74 68 65 6e 20 74 68 65 20 62 65 68  ive then the beh
282b0 61 76 69 6f 72 20 69 73 20 65 78 61 63 74 6c 79  avior is exactly
282c0 20 74 68 65 20 73 61 6d 65 20 61 73 20 63 61 6c   the same as cal
282d0 6c 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  ling.** sqlite3_
282e0 66 72 65 65 28 58 29 2e 0a 2a 2a 20 5e 73 71 6c  free(X)..** ^sql
282f0 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e  ite3_realloc(X,N
28300 29 20 72 65 74 75 72 6e 73 20 61 20 70 6f 69 6e  ) returns a poin
28310 74 65 72 20 74 6f 20 61 20 6d 65 6d 6f 72 79 20  ter to a memory 
28320 61 6c 6c 6f 63 61 74 69 6f 6e 0a 2a 2a 20 6f 66  allocation.** of
28330 20 61 74 20 6c 65 61 73 74 20 4e 20 62 79 74 65   at least N byte
28340 73 20 69 6e 20 73 69 7a 65 20 6f 72 20 4e 55 4c  s in size or NUL
28350 4c 20 69 66 20 69 6e 73 75 66 66 69 63 69 65 6e  L if insufficien
28360 74 20 6d 65 6d 6f 72 79 20 69 73 20 61 76 61 69  t memory is avai
28370 6c 61 62 6c 65 2e 0a 2a 2a 20 5e 49 66 20 4d 20  lable..** ^If M 
28380 69 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74  is the size of t
28390 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74  he prior allocat
283a0 69 6f 6e 2c 20 74 68 65 6e 20 6d 69 6e 28 4e 2c  ion, then min(N,
283b0 4d 29 20 62 79 74 65 73 0a 2a 2a 20 6f 66 20 74  M) bytes.** of t
283c0 68 65 20 70 72 69 6f 72 20 61 6c 6c 6f 63 61 74  he prior allocat
283d0 69 6f 6e 20 61 72 65 20 63 6f 70 69 65 64 20 69  ion are copied i
283e0 6e 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e  nto the beginnin
283f0 67 20 6f 66 20 62 75 66 66 65 72 20 72 65 74 75  g of buffer retu
28400 72 6e 65 64 0a 2a 2a 20 62 79 20 73 71 6c 69 74  rned.** by sqlit
28410 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20  e3_realloc(X,N) 
28420 61 6e 64 20 74 68 65 20 70 72 69 6f 72 20 61 6c  and the prior al
28430 6c 6f 63 61 74 69 6f 6e 20 69 73 20 66 72 65 65  location is free
28440 64 2e 0a 2a 2a 20 5e 49 66 20 73 71 6c 69 74 65  d..** ^If sqlite
28450 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29 20 72  3_realloc(X,N) r
28460 65 74 75 72 6e 73 20 4e 55 4c 4c 20 61 6e 64 20  eturns NULL and 
28470 4e 20 69 73 20 70 6f 73 69 74 69 76 65 2c 20 74  N is positive, t
28480 68 65 6e 20 74 68 65 0a 2a 2a 20 70 72 69 6f 72  hen the.** prior
28490 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 69 73 20 6e   allocation is n
284a0 6f 74 20 66 72 65 65 64 2e 0a 2a 2a 0a 2a 2a 20  ot freed..**.** 
284b0 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 72 65 61  ^The sqlite3_rea
284c0 6c 6c 6f 63 36 34 28 58 2c 4e 29 20 69 6e 74 65  lloc64(X,N) inte
284d0 72 66 61 63 65 73 20 77 6f 72 6b 73 20 74 68 65  rfaces works the
284e0 20 73 61 6d 65 20 61 73 0a 2a 2a 20 73 71 6c 69   same as.** sqli
284f0 74 65 33 5f 72 65 61 6c 6c 6f 63 28 58 2c 4e 29  te3_realloc(X,N)
28500 20 65 78 63 65 70 74 20 74 68 61 74 20 4e 20 69   except that N i
28510 73 20 61 20 36 34 2d 62 69 74 20 75 6e 73 69 67  s a 64-bit unsig
28520 6e 65 64 20 69 6e 74 65 67 65 72 20 69 6e 73 74  ned integer inst
28530 65 61 64 0a 2a 2a 20 6f 66 20 61 20 33 32 2d 62  ead.** of a 32-b
28540 69 74 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65  it signed intege
28550 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 58 20 69  r..**.** ^If X i
28560 73 20 61 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63  s a memory alloc
28570 61 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79  ation previously
28580 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 73   obtained from s
28590 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 2c  qlite3_malloc(),
285a0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  .** sqlite3_mall
285b0 6f 63 36 34 28 29 2c 20 73 71 6c 69 74 65 33 5f  oc64(), sqlite3_
285c0 72 65 61 6c 6c 6f 63 28 29 2c 20 6f 72 20 73 71  realloc(), or sq
285d0 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63 36 34 28  lite3_realloc64(
285e0 29 2c 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74  ), then.** sqlit
285f0 65 33 5f 6d 73 69 7a 65 28 58 29 20 72 65 74 75  e3_msize(X) retu
28600 72 6e 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20  rns the size of 
28610 74 68 61 74 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f  that memory allo
28620 63 61 74 69 6f 6e 20 69 6e 20 62 79 74 65 73 2e  cation in bytes.
28630 0a 2a 2a 20 5e 54 68 65 20 76 61 6c 75 65 20 72  .** ^The value r
28640 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c 69 74  eturned by sqlit
28650 65 33 5f 6d 73 69 7a 65 28 58 29 20 6d 69 67 68  e3_msize(X) migh
28660 74 20 62 65 20 6c 61 72 67 65 72 20 74 68 61 6e  t be larger than
28670 20 74 68 65 20 6e 75 6d 62 65 72 0a 2a 2a 20 6f   the number.** o
28680 66 20 62 79 74 65 73 20 72 65 71 75 65 73 74 65  f bytes requeste
28690 64 20 77 68 65 6e 20 58 20 77 61 73 20 61 6c 6c  d when X was all
286a0 6f 63 61 74 65 64 2e 20 20 5e 49 66 20 58 20 69  ocated.  ^If X i
286b0 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
286c0 20 74 68 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33   then.** sqlite3
286d0 5f 6d 73 69 7a 65 28 58 29 20 72 65 74 75 72 6e  _msize(X) return
286e0 73 20 7a 65 72 6f 2e 20 20 49 66 20 58 20 70 6f  s zero.  If X po
286f0 69 6e 74 73 20 74 6f 20 73 6f 6d 65 74 68 69 6e  ints to somethin
28700 67 20 74 68 61 74 20 69 73 20 6e 6f 74 0a 2a 2a  g that is not.**
28710 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f   the beginning o
28720 66 20 6d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74  f memory allocat
28730 69 6f 6e 2c 20 6f 72 20 69 66 20 69 74 20 70 6f  ion, or if it po
28740 69 6e 74 73 20 74 6f 20 61 20 66 6f 72 6d 65 72  ints to a former
28750 6c 79 0a 2a 2a 20 76 61 6c 69 64 20 6d 65 6d 6f  ly.** valid memo
28760 72 79 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 74 68  ry allocation th
28770 61 74 20 68 61 73 20 6e 6f 77 20 62 65 65 6e 20  at has now been 
28780 66 72 65 65 64 2c 20 74 68 65 6e 20 74 68 65 20  freed, then the 
28790 62 65 68 61 76 69 6f 72 0a 2a 2a 20 6f 66 20 73  behavior.** of s
287a0 71 6c 69 74 65 33 5f 6d 73 69 7a 65 28 58 29 20  qlite3_msize(X) 
287b0 69 73 20 75 6e 64 65 66 69 6e 65 64 20 61 6e 64  is undefined and
287c0 20 70 6f 73 73 69 62 6c 79 20 68 61 72 6d 66 75   possibly harmfu
287d0 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d 65  l..**.** ^The me
287e0 6d 6f 72 79 20 72 65 74 75 72 6e 65 64 20 62 79  mory returned by
287f0 20 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28   sqlite3_malloc(
28800 29 2c 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c  ), sqlite3_reall
28810 6f 63 28 29 2c 0a 2a 2a 20 73 71 6c 69 74 65 33  oc(),.** sqlite3
28820 5f 6d 61 6c 6c 6f 63 36 34 28 29 2c 20 61 6e 64  _malloc64(), and
28830 20 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f 63   sqlite3_realloc
28840 36 34 28 29 0a 2a 2a 20 69 73 20 61 6c 77 61 79  64().** is alway
28850 73 20 61 6c 69 67 6e 65 64 20 74 6f 20 61 74 20  s aligned to at 
28860 6c 65 61 73 74 20 61 6e 20 38 20 62 79 74 65 20  least an 8 byte 
28870 62 6f 75 6e 64 61 72 79 2c 20 6f 72 20 74 6f 20  boundary, or to 
28880 61 0a 2a 2a 20 34 20 62 79 74 65 20 62 6f 75 6e  a.** 4 byte boun
28890 64 61 72 79 20 69 66 20 74 68 65 20 5b 53 51 4c  dary if the [SQL
288a0 49 54 45 5f 34 5f 42 59 54 45 5f 41 4c 49 47 4e  ITE_4_BYTE_ALIGN
288b0 45 44 5f 4d 41 4c 4c 4f 43 5d 20 63 6f 6d 70 69  ED_MALLOC] compi
288c0 6c 65 2d 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f  le-time.** optio
288d0 6e 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a 2a  n is used..**.**
288e0 20 49 6e 20 53 51 4c 69 74 65 20 76 65 72 73 69   In SQLite versi
288f0 6f 6e 20 33 2e 35 2e 30 20 61 6e 64 20 33 2e 35  on 3.5.0 and 3.5
28900 2e 31 2c 20 69 74 20 77 61 73 20 70 6f 73 73 69  .1, it was possi
28910 62 6c 65 20 74 6f 20 64 65 66 69 6e 65 0a 2a 2a  ble to define.**
28920 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 4d 49 54   the SQLITE_OMIT
28930 5f 4d 45 4d 4f 52 59 5f 41 4c 4c 4f 43 41 54 49  _MEMORY_ALLOCATI
28940 4f 4e 20 77 68 69 63 68 20 77 6f 75 6c 64 20 63  ON which would c
28950 61 75 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69  ause the built-i
28960 6e 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74  n.** implementat
28970 69 6f 6e 20 6f 66 20 74 68 65 73 65 20 72 6f 75  ion of these rou
28980 74 69 6e 65 73 20 74 6f 20 62 65 20 6f 6d 69 74  tines to be omit
28990 74 65 64 2e 20 20 54 68 61 74 20 63 61 70 61 62  ted.  That capab
289a0 69 6c 69 74 79 0a 2a 2a 20 69 73 20 6e 6f 20 6c  ility.** is no l
289b0 6f 6e 67 65 72 20 70 72 6f 76 69 64 65 64 2e 20  onger provided. 
289c0 20 4f 6e 6c 79 20 62 75 69 6c 74 2d 69 6e 20 6d   Only built-in m
289d0 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74 6f 72 73  emory allocators
289e0 20 63 61 6e 20 62 65 20 75 73 65 64 2e 0a 2a 2a   can be used..**
289f0 0a 2a 2a 20 50 72 69 6f 72 20 74 6f 20 53 51 4c  .** Prior to SQL
28a00 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 37 2e  ite version 3.7.
28a10 31 30 2c 20 74 68 65 20 57 69 6e 64 6f 77 73 20  10, the Windows 
28a20 4f 53 20 69 6e 74 65 72 66 61 63 65 20 6c 61 79  OS interface lay
28a30 65 72 20 63 61 6c 6c 65 64 0a 2a 2a 20 74 68 65  er called.** the
28a40 20 73 79 73 74 65 6d 20 6d 61 6c 6c 6f 63 28 29   system malloc()
28a50 20 61 6e 64 20 66 72 65 65 28 29 20 64 69 72 65   and free() dire
28a60 63 74 6c 79 20 77 68 65 6e 20 63 6f 6e 76 65 72  ctly when conver
28a70 74 69 6e 67 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65  ting.** filename
28a80 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 55 54  s between the UT
28a90 46 2d 38 20 65 6e 63 6f 64 69 6e 67 20 75 73 65  F-8 encoding use
28aa0 64 20 62 79 20 53 51 4c 69 74 65 0a 2a 2a 20 61  d by SQLite.** a
28ab0 6e 64 20 77 68 61 74 65 76 65 72 20 66 69 6c 65  nd whatever file
28ac0 6e 61 6d 65 20 65 6e 63 6f 64 69 6e 67 20 69 73  name encoding is
28ad0 20 75 73 65 64 20 62 79 20 74 68 65 20 70 61 72   used by the par
28ae0 74 69 63 75 6c 61 72 20 57 69 6e 64 6f 77 73 0a  ticular Windows.
28af0 2a 2a 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e  ** installation.
28b00 20 20 4d 65 6d 6f 72 79 20 61 6c 6c 6f 63 61 74    Memory allocat
28b10 69 6f 6e 20 65 72 72 6f 72 73 20 77 65 72 65 20  ion errors were 
28b20 64 65 74 65 63 74 65 64 2c 20 62 75 74 0a 2a 2a  detected, but.**
28b30 20 74 68 65 79 20 77 65 72 65 20 72 65 70 6f 72   they were repor
28b40 74 65 64 20 62 61 63 6b 20 61 73 20 5b 53 51 4c  ted back as [SQL
28b50 49 54 45 5f 43 41 4e 54 4f 50 45 4e 5d 20 6f 72  ITE_CANTOPEN] or
28b60 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 49 4f 45 52  .** [SQLITE_IOER
28b70 52 5d 20 72 61 74 68 65 72 20 74 68 61 6e 20 5b  R] rather than [
28b80 53 51 4c 49 54 45 5f 4e 4f 4d 45 4d 5d 2e 0a 2a  SQLITE_NOMEM]..*
28b90 2a 0a 2a 2a 20 54 68 65 20 70 6f 69 6e 74 65 72  *.** The pointer
28ba0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 5b 73   arguments to [s
28bb0 71 6c 69 74 65 33 5f 66 72 65 65 28 29 5d 20 61  qlite3_free()] a
28bc0 6e 64 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c  nd [sqlite3_real
28bd0 6c 6f 63 28 29 5d 0a 2a 2a 20 6d 75 73 74 20 62  loc()].** must b
28be0 65 20 65 69 74 68 65 72 20 4e 55 4c 4c 20 6f 72  e either NULL or
28bf0 20 65 6c 73 65 20 70 6f 69 6e 74 65 72 73 20 6f   else pointers o
28c00 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 61 20 70  btained from a p
28c10 72 69 6f 72 0a 2a 2a 20 69 6e 76 6f 63 61 74 69  rior.** invocati
28c20 6f 6e 20 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d  on of [sqlite3_m
28c30 61 6c 6c 6f 63 28 29 5d 20 6f 72 20 5b 73 71 6c  alloc()] or [sql
28c40 69 74 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 20  ite3_realloc()] 
28c50 74 68 61 74 20 68 61 76 65 0a 2a 2a 20 6e 6f 74  that have.** not
28c60 20 79 65 74 20 62 65 65 6e 20 72 65 6c 65 61 73   yet been releas
28c70 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 70  ed..**.** The ap
28c80 70 6c 69 63 61 74 69 6f 6e 20 6d 75 73 74 20 6e  plication must n
28c90 6f 74 20 72 65 61 64 20 6f 72 20 77 72 69 74 65  ot read or write
28ca0 20 61 6e 79 20 70 61 72 74 20 6f 66 0a 2a 2a 20   any part of.** 
28cb0 61 20 62 6c 6f 63 6b 20 6f 66 20 6d 65 6d 6f 72  a block of memor
28cc0 79 20 61 66 74 65 72 20 69 74 20 68 61 73 20 62  y after it has b
28cd0 65 65 6e 20 72 65 6c 65 61 73 65 64 20 75 73 69  een released usi
28ce0 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 66  ng.** [sqlite3_f
28cf0 72 65 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74  ree()] or [sqlit
28d00 65 33 5f 72 65 61 6c 6c 6f 63 28 29 5d 2e 0a 2a  e3_realloc()]..*
28d10 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69  /.SQLITE_API voi
28d20 64 20 2a 73 71 6c 69 74 65 33 5f 6d 61 6c 6c 6f  d *sqlite3_mallo
28d30 63 28 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f 41  c(int);.SQLITE_A
28d40 50 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65 33  PI void *sqlite3
28d50 5f 6d 61 6c 6c 6f 63 36 34 28 73 71 6c 69 74 65  _malloc64(sqlite
28d60 33 5f 75 69 6e 74 36 34 29 3b 0a 53 51 4c 49 54  3_uint64);.SQLIT
28d70 45 5f 41 50 49 20 76 6f 69 64 20 2a 73 71 6c 69  E_API void *sqli
28d80 74 65 33 5f 72 65 61 6c 6c 6f 63 28 76 6f 69 64  te3_realloc(void
28d90 2a 2c 20 69 6e 74 29 3b 0a 53 51 4c 49 54 45 5f  *, int);.SQLITE_
28da0 41 50 49 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  API void *sqlite
28db0 33 5f 72 65 61 6c 6c 6f 63 36 34 28 76 6f 69 64  3_realloc64(void
28dc0 2a 2c 20 73 71 6c 69 74 65 33 5f 75 69 6e 74 36  *, sqlite3_uint6
28dd0 34 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 76  4);.SQLITE_API v
28de0 6f 69 64 20 73 71 6c 69 74 65 33 5f 66 72 65 65  oid sqlite3_free
28df0 28 76 6f 69 64 2a 29 3b 0a 53 51 4c 49 54 45 5f  (void*);.SQLITE_
28e00 41 50 49 20 73 71 6c 69 74 65 33 5f 75 69 6e 74  API sqlite3_uint
28e10 36 34 20 73 71 6c 69 74 65 33 5f 6d 73 69 7a 65  64 sqlite3_msize
28e20 28 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a 20  (void*);../*.** 
28e30 43 41 50 49 33 52 45 46 3a 20 4d 65 6d 6f 72 79  CAPI3REF: Memory
28e40 20 41 6c 6c 6f 63 61 74 6f 72 20 53 74 61 74 69   Allocator Stati
28e50 73 74 69 63 73 0a 2a 2a 0a 2a 2a 20 53 51 4c 69  stics.**.** SQLi
28e60 74 65 20 70 72 6f 76 69 64 65 73 20 74 68 65 73  te provides thes
28e70 65 20 74 77 6f 20 69 6e 74 65 72 66 61 63 65 73  e two interfaces
28e80 20 66 6f 72 20 72 65 70 6f 72 74 69 6e 67 20 6f   for reporting o
28e90 6e 20 74 68 65 20 73 74 61 74 75 73 0a 2a 2a 20  n the status.** 
28ea0 6f 66 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  of the [sqlite3_
28eb0 6d 61 6c 6c 6f 63 28 29 5d 2c 20 5b 73 71 6c 69  malloc()], [sqli
28ec0 74 65 33 5f 66 72 65 65 28 29 5d 2c 20 61 6e 64  te3_free()], and
28ed0 20 5b 73 71 6c 69 74 65 33 5f 72 65 61 6c 6c 6f   [sqlite3_reallo
28ee0 63 28 29 5d 0a 2a 2a 20 72 6f 75 74 69 6e 65 73  c()].** routines
28ef0 2c 20 77 68 69 63 68 20 66 6f 72 6d 20 74 68 65  , which form the
28f00 20 62 75 69 6c 74 2d 69 6e 20 6d 65 6d 6f 72 79   built-in memory
28f10 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 73 75 62 73   allocation subs
28f20 79 73 74 65 6d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68  ystem..**.** ^Th
28f30 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72  e [sqlite3_memor
28f40 79 5f 75 73 65 64 28 29 5d 20 72 6f 75 74 69 6e  y_used()] routin
28f50 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 6e 75  e returns the nu
28f60 6d 62 65 72 20 6f 66 20 62 79 74 65 73 0a 2a 2a  mber of bytes.**
28f70 20 6f 66 20 6d 65 6d 6f 72 79 20 63 75 72 72 65   of memory curre
28f80 6e 74 6c 79 20 6f 75 74 73 74 61 6e 64 69 6e 67  ntly outstanding
28f90 20 28 6d 61 6c 6c 6f 63 65 64 20 62 75 74 20 6e   (malloced but n
28fa0 6f 74 20 66 72 65 65 64 29 2e 0a 2a 2a 20 5e 54  ot freed)..** ^T
28fb0 68 65 20 5b 73 71 6c 69 74 65 33 5f 6d 65 6d 6f  he [sqlite3_memo
28fc0 72 79 5f 68 69 67 68 77 61 74 65 72 28 29 5d 20  ry_highwater()] 
28fd0 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e 73 20  routine returns 
28fe0 74 68 65 20 6d 61 78 69 6d 75 6d 0a 2a 2a 20 76  the maximum.** v
28ff0 61 6c 75 65 20 6f 66 20 5b 73 71 6c 69 74 65 33  alue of [sqlite3
29000 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20  _memory_used()] 
29010 73 69 6e 63 65 20 74 68 65 20 68 69 67 68 2d 77  since the high-w
29020 61 74 65 72 20 6d 61 72 6b 0a 2a 2a 20 77 61 73  ater mark.** was
29030 20 6c 61 73 74 20 72 65 73 65 74 2e 20 20 5e 54   last reset.  ^T
29040 68 65 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e  he values return
29050 65 64 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d  ed by [sqlite3_m
29060 65 6d 6f 72 79 5f 75 73 65 64 28 29 5d 20 61 6e  emory_used()] an
29070 64 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65  d.** [sqlite3_me
29080 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 29  mory_highwater()
29090 5d 20 69 6e 63 6c 75 64 65 20 61 6e 79 20 6f 76  ] include any ov
290a0 65 72 68 65 61 64 0a 2a 2a 20 61 64 64 65 64 20  erhead.** added 
290b0 62 79 20 53 51 4c 69 74 65 20 69 6e 20 69 74 73  by SQLite in its
290c0 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20   implementation 
290d0 6f 66 20 5b 73 71 6c 69 74 65 33 5f 6d 61 6c 6c  of [sqlite3_mall
290e0 6f 63 28 29 5d 2c 0a 2a 2a 20 62 75 74 20 6e 6f  oc()],.** but no
290f0 74 20 6f 76 65 72 68 65 61 64 20 61 64 64 65 64  t overhead added
29100 20 62 79 20 74 68 65 20 61 6e 79 20 75 6e 64 65   by the any unde
29110 72 6c 79 69 6e 67 20 73 79 73 74 65 6d 20 6c 69  rlying system li
29120 62 72 61 72 79 0a 2a 2a 20 72 6f 75 74 69 6e 65  brary.** routine
29130 73 20 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f  s that [sqlite3_
29140 6d 61 6c 6c 6f 63 28 29 5d 20 6d 61 79 20 63 61  malloc()] may ca
29150 6c 6c 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 6d  ll..**.** ^The m
29160 65 6d 6f 72 79 20 68 69 67 68 2d 77 61 74 65 72  emory high-water
29170 20 6d 61 72 6b 20 69 73 20 72 65 73 65 74 20 74   mark is reset t
29180 6f 20 74 68 65 20 63 75 72 72 65 6e 74 20 76 61  o the current va
29190 6c 75 65 20 6f 66 0a 2a 2a 20 5b 73 71 6c 69 74  lue of.** [sqlit
291a0 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65 64 28 29  e3_memory_used()
291b0 5d 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66  ] if and only if
291c0 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 74   the parameter t
291d0 6f 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6d 65  o.** [sqlite3_me
291e0 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28 29  mory_highwater()
291f0 5d 20 69 73 20 74 72 75 65 2e 20 20 5e 54 68 65  ] is true.  ^The
29200 20 76 61 6c 75 65 20 72 65 74 75 72 6e 65 64 0a   value returned.
29210 2a 2a 20 62 79 20 5b 73 71 6c 69 74 65 33 5f 6d  ** by [sqlite3_m
29220 65 6d 6f 72 79 5f 68 69 67 68 77 61 74 65 72 28  emory_highwater(
29230 31 29 5d 20 69 73 20 74 68 65 20 68 69 67 68 2d  1)] is the high-
29240 77 61 74 65 72 20 6d 61 72 6b 0a 2a 2a 20 70 72  water mark.** pr
29250 69 6f 72 20 74 6f 20 74 68 65 20 72 65 73 65 74  ior to the reset
29260 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20  ..*/.SQLITE_API 
29270 73 71 6c 69 74 65 33 5f 69 6e 74 36 34 20 73 71  sqlite3_int64 sq
29280 6c 69 74 65 33 5f 6d 65 6d 6f 72 79 5f 75 73 65  lite3_memory_use
29290 64 28 76 6f 69 64 29 3b 0a 53 51 4c 49 54 45 5f  d(void);.SQLITE_
292a0 41 50 49 20 73 71 6c 69 74 65 33 5f 69 6e 74 36  API sqlite3_int6
292b0 34 20 73 71 6c 69 74 65 33 5f 6d 65 6d 6f 72 79  4 sqlite3_memory
292c0 5f 68 69 67 68 77 61 74 65 72 28 69 6e 74 20 72  _highwater(int r
292d0 65 73 65 74 46 6c 61 67 29 3b 0a 0a 2f 2a 0a 2a  esetFlag);../*.*
292e0 2a 20 43 41 50 49 33 52 45 46 3a 20 50 73 65 75  * CAPI3REF: Pseu
292f0 64 6f 2d 52 61 6e 64 6f 6d 20 4e 75 6d 62 65 72  do-Random Number
29300 20 47 65 6e 65 72 61 74 6f 72 0a 2a 2a 0a 2a 2a   Generator.**.**
29310 20 53 51 4c 69 74 65 20 63 6f 6e 74 61 69 6e 73   SQLite contains
29320 20 61 20 68 69 67 68 2d 71 75 61 6c 69 74 79 20   a high-quality 
29330 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 20 6e 75  pseudo-random nu
29340 6d 62 65 72 20 67 65 6e 65 72 61 74 6f 72 20 28  mber generator (
29350 50 52 4e 47 29 20 75 73 65 64 20 74 6f 0a 2a 2a  PRNG) used to.**
29360 20 73 65 6c 65 63 74 20 72 61 6e 64 6f 6d 20 5b   select random [
29370 52 4f 57 49 44 20 7c 20 52 4f 57 49 44 73 5d 20  ROWID | ROWIDs] 
29380 77 68 65 6e 20 69 6e 73 65 72 74 69 6e 67 20 6e  when inserting n
29390 65 77 20 72 65 63 6f 72 64 73 20 69 6e 74 6f 20  ew records into 
293a0 61 20 74 61 62 6c 65 20 74 68 61 74 0a 2a 2a 20  a table that.** 
293b0 61 6c 72 65 61 64 79 20 75 73 65 73 20 74 68 65  already uses the
293c0 20 6c 61 72 67 65 73 74 20 70 6f 73 73 69 62 6c   largest possibl
293d0 65 20 5b 52 4f 57 49 44 5d 2e 20 20 54 68 65 20  e [ROWID].  The 
293e0 50 52 4e 47 20 69 73 20 61 6c 73 6f 20 75 73 65  PRNG is also use
293f0 64 20 66 6f 72 0a 2a 2a 20 74 68 65 20 62 75 69  d for.** the bui
29400 6c 64 2d 69 6e 20 72 61 6e 64 6f 6d 28 29 20 61  ld-in random() a
29410 6e 64 20 72 61 6e 64 6f 6d 62 6c 6f 62 28 29 20  nd randomblob() 
29420 53 51 4c 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  SQL functions.  
29430 54 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 61  This interface a
29440 6c 6c 6f 77 73 0a 2a 2a 20 61 70 70 6c 69 63 61  llows.** applica
29450 74 69 6f 6e 73 20 74 6f 20 61 63 63 65 73 73 20  tions to access 
29460 74 68 65 20 73 61 6d 65 20 50 52 4e 47 20 66 6f  the same PRNG fo
29470 72 20 6f 74 68 65 72 20 70 75 72 70 6f 73 65 73  r other purposes
29480 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 63 61 6c 6c 20  ..**.** ^A call 
29490 74 6f 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20  to this routine 
294a0 73 74 6f 72 65 73 20 4e 20 62 79 74 65 73 20 6f  stores N bytes o
294b0 66 20 72 61 6e 64 6f 6d 6e 65 73 73 20 69 6e 74  f randomness int
294c0 6f 20 62 75 66 66 65 72 20 50 2e 0a 2a 2a 20 5e  o buffer P..** ^
294d0 54 68 65 20 50 20 70 61 72 61 6d 65 74 65 72 20  The P parameter 
294e0 63 61 6e 20 62 65 20 61 20 4e 55 4c 4c 20 70 6f  can be a NULL po
294f0 69 6e 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66  inter..**.** ^If
29500 20 74 68 69 73 20 72 6f 75 74 69 6e 65 20 68 61   this routine ha
29510 73 20 6e 6f 74 20 62 65 65 6e 20 70 72 65 76 69  s not been previ
29520 6f 75 73 6c 79 20 63 61 6c 6c 65 64 20 6f 72 20  ously called or 
29530 69 66 20 74 68 65 20 70 72 65 76 69 6f 75 73 0a  if the previous.
29540 2a 2a 20 63 61 6c 6c 20 68 61 64 20 4e 20 6c 65  ** call had N le
29550 73 73 20 74 68 61 6e 20 6f 6e 65 20 6f 72 20 61  ss than one or a
29560 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 66 6f   NULL pointer fo
29570 72 20 50 2c 20 74 68 65 6e 20 74 68 65 20 50 52  r P, then the PR
29580 4e 47 20 69 73 0a 2a 2a 20 73 65 65 64 65 64 20  NG is.** seeded 
29590 75 73 69 6e 67 20 72 61 6e 64 6f 6d 6e 65 73 73  using randomness
295a0 20 6f 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 74   obtained from t
295b0 68 65 20 78 52 61 6e 64 6f 6d 6e 65 73 73 20 6d  he xRandomness m
295c0 65 74 68 6f 64 20 6f 66 0a 2a 2a 20 74 68 65 20  ethod of.** the 
295d0 64 65 66 61 75 6c 74 20 5b 73 71 6c 69 74 65 33  default [sqlite3
295e0 5f 76 66 73 5d 20 6f 62 6a 65 63 74 2e 0a 2a 2a  _vfs] object..**
295f0 20 5e 49 66 20 74 68 65 20 70 72 65 76 69 6f 75   ^If the previou
29600 73 20 63 61 6c 6c 20 74 6f 20 74 68 69 73 20 72  s call to this r
29610 6f 75 74 69 6e 65 20 68 61 64 20 61 6e 20 4e 20  outine had an N 
29620 6f 66 20 31 20 6f 72 20 6d 6f 72 65 20 61 6e 64  of 1 or more and
29630 20 61 0a 2a 2a 20 6e 6f 6e 2d 4e 55 4c 4c 20 50   a.** non-NULL P
29640 20 74 68 65 6e 20 74 68 65 20 70 73 65 75 64 6f   then the pseudo
29650 2d 72 61 6e 64 6f 6d 6e 65 73 73 20 69 73 20 67  -randomness is g
29660 65 6e 65 72 61 74 65 64 0a 2a 2a 20 69 6e 74 65  enerated.** inte
29670 72 6e 61 6c 6c 79 20 61 6e 64 20 77 69 74 68 6f  rnally and witho
29680 75 74 20 72 65 63 6f 75 72 73 65 20 74 6f 20 74  ut recourse to t
29690 68 65 20 5b 73 71 6c 69 74 65 33 5f 76 66 73 5d  he [sqlite3_vfs]
296a0 20 78 52 61 6e 64 6f 6d 6e 65 73 73 0a 2a 2a 20   xRandomness.** 
296b0 6d 65 74 68 6f 64 2e 0a 2a 2f 0a 53 51 4c 49 54  method..*/.SQLIT
296c0 45 5f 41 50 49 20 76 6f 69 64 20 73 71 6c 69 74  E_API void sqlit
296d0 65 33 5f 72 61 6e 64 6f 6d 6e 65 73 73 28 69 6e  e3_randomness(in
296e0 74 20 4e 2c 20 76 6f 69 64 20 2a 50 29 3b 0a 0a  t N, void *P);..
296f0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
29700 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 41 75 74  Compile-Time Aut
29710 68 6f 72 69 7a 61 74 69 6f 6e 20 43 61 6c 6c 62  horization Callb
29720 61 63 6b 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20  acks.** METHOD: 
29730 73 71 6c 69 74 65 33 0a 2a 2a 20 4b 45 59 57 4f  sqlite3.** KEYWO
29740 52 44 53 3a 20 7b 61 75 74 68 6f 72 69 7a 65 72  RDS: {authorizer
29750 20 63 61 6c 6c 62 61 63 6b 7d 0a 2a 2a 0a 2a 2a   callback}.**.**
29760 20 5e 54 68 69 73 20 72 6f 75 74 69 6e 65 20 72   ^This routine r
29770 65 67 69 73 74 65 72 73 20 61 6e 20 61 75 74 68  egisters an auth
29780 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20  orizer callback 
29790 77 69 74 68 20 61 20 70 61 72 74 69 63 75 6c 61  with a particula
297a0 72 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63  r.** [database c
297b0 6f 6e 6e 65 63 74 69 6f 6e 5d 2c 20 73 75 70 70  onnection], supp
297c0 6c 69 65 64 20 69 6e 20 74 68 65 20 66 69 72 73  lied in the firs
297d0 74 20 61 72 67 75 6d 65 6e 74 2e 0a 2a 2a 20 5e  t argument..** ^
297e0 54 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63  The authorizer c
297f0 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
29800 65 64 20 61 73 20 53 51 4c 20 73 74 61 74 65 6d  ed as SQL statem
29810 65 6e 74 73 20 61 72 65 20 62 65 69 6e 67 20 63  ents are being c
29820 6f 6d 70 69 6c 65 64 0a 2a 2a 20 62 79 20 5b 73  ompiled.** by [s
29830 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28 29  qlite3_prepare()
29840 5d 20 6f 72 20 69 74 73 20 76 61 72 69 61 6e 74  ] or its variant
29850 73 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  s [sqlite3_prepa
29860 72 65 5f 76 32 28 29 5d 2c 0a 2a 2a 20 5b 73 71  re_v2()],.** [sq
29870 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76 33  lite3_prepare_v3
29880 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 70 72  ()], [sqlite3_pr
29890 65 70 61 72 65 31 36 28 29 5d 2c 20 5b 73 71 6c  epare16()], [sql
298a0 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
298b0 32 28 29 5d 2c 0a 2a 2a 20 61 6e 64 20 5b 73 71  2()],.** and [sq
298c0 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
298d0 76 33 28 29 5d 2e 20 20 5e 41 74 20 76 61 72 69  v3()].  ^At vari
298e0 6f 75 73 0a 2a 2a 20 70 6f 69 6e 74 73 20 64 75  ous.** points du
298f0 72 69 6e 67 20 74 68 65 20 63 6f 6d 70 69 6c 61  ring the compila
29900 74 69 6f 6e 20 70 72 6f 63 65 73 73 2c 20 61 73  tion process, as
29910 20 6c 6f 67 69 63 20 69 73 20 62 65 69 6e 67 20   logic is being 
29920 63 72 65 61 74 65 64 0a 2a 2a 20 74 6f 20 70 65  created.** to pe
29930 72 66 6f 72 6d 20 76 61 72 69 6f 75 73 20 61 63  rform various ac
29940 74 69 6f 6e 73 2c 20 74 68 65 20 61 75 74 68 6f  tions, the autho
29950 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 69  rizer callback i
29960 73 20 69 6e 76 6f 6b 65 64 20 74 6f 0a 2a 2a 20  s invoked to.** 
29970 73 65 65 20 69 66 20 74 68 6f 73 65 20 61 63 74  see if those act
29980 69 6f 6e 73 20 61 72 65 20 61 6c 6c 6f 77 65 64  ions are allowed
29990 2e 20 20 5e 54 68 65 20 61 75 74 68 6f 72 69 7a  .  ^The authoriz
299a0 65 72 20 63 61 6c 6c 62 61 63 6b 20 73 68 6f 75  er callback shou
299b0 6c 64 0a 2a 2a 20 72 65 74 75 72 6e 20 5b 53 51  ld.** return [SQ
299c0 4c 49 54 45 5f 4f 4b 5d 20 74 6f 20 61 6c 6c 6f  LITE_OK] to allo
299d0 77 20 74 68 65 20 61 63 74 69 6f 6e 2c 20 5b 53  w the action, [S
299e0 51 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 20 74 6f  QLITE_IGNORE] to
299f0 20 64 69 73 61 6c 6c 6f 77 20 74 68 65 0a 2a 2a   disallow the.**
29a00 20 73 70 65 63 69 66 69 63 20 61 63 74 69 6f 6e   specific action
29a10 20 62 75 74 20 61 6c 6c 6f 77 20 74 68 65 20 53   but allow the S
29a20 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20  QL statement to 
29a30 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 0a 2a  continue to be.*
29a40 2a 20 63 6f 6d 70 69 6c 65 64 2c 20 6f 72 20 5b  * compiled, or [
29a50 53 51 4c 49 54 45 5f 44 45 4e 59 5d 20 74 6f 20  SQLITE_DENY] to 
29a60 63 61 75 73 65 20 74 68 65 20 65 6e 74 69 72 65  cause the entire
29a70 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 74   SQL statement t
29a80 6f 20 62 65 0a 2a 2a 20 72 65 6a 65 63 74 65 64  o be.** rejected
29a90 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 2e 20   with an error. 
29aa0 20 5e 49 66 20 74 68 65 20 61 75 74 68 6f 72 69   ^If the authori
29ab0 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 72 65 74  zer callback ret
29ac0 75 72 6e 73 0a 2a 2a 20 61 6e 79 20 76 61 6c 75  urns.** any valu
29ad0 65 20 6f 74 68 65 72 20 74 68 61 6e 20 5b 53 51  e other than [SQ
29ae0 4c 49 54 45 5f 49 47 4e 4f 52 45 5d 2c 20 5b 53  LITE_IGNORE], [S
29af0 51 4c 49 54 45 5f 4f 4b 5d 2c 20 6f 72 20 5b 53  QLITE_OK], or [S
29b00 51 4c 49 54 45 5f 44 45 4e 59 5d 0a 2a 2a 20 74  QLITE_DENY].** t
29b10 68 65 6e 20 74 68 65 20 5b 73 71 6c 69 74 65 33  hen the [sqlite3
29b20 5f 70 72 65 70 61 72 65 5f 76 32 28 29 5d 20 6f  _prepare_v2()] o
29b30 72 20 65 71 75 69 76 61 6c 65 6e 74 20 63 61 6c  r equivalent cal
29b40 6c 20 74 68 61 74 20 74 72 69 67 67 65 72 65 64  l that triggered
29b50 0a 2a 2a 20 74 68 65 20 61 75 74 68 6f 72 69 7a  .** the authoriz
29b60 65 72 20 77 69 6c 6c 20 66 61 69 6c 20 77 69 74  er will fail wit
29b70 68 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61  h an error messa
29b80 67 65 2e 0a 2a 2a 0a 2a 2a 20 57 68 65 6e 20 74  ge..**.** When t
29b90 68 65 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75  he callback retu
29ba0 72 6e 73 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 2c  rns [SQLITE_OK],
29bb0 20 74 68 61 74 20 6d 65 61 6e 73 20 74 68 65 20   that means the 
29bc0 6f 70 65 72 61 74 69 6f 6e 0a 2a 2a 20 72 65 71  operation.** req
29bd0 75 65 73 74 65 64 20 69 73 20 6f 6b 2e 20 20 5e  uested is ok.  ^
29be0 57 68 65 6e 20 74 68 65 20 63 61 6c 6c 62 61 63  When the callbac
29bf0 6b 20 72 65 74 75 72 6e 73 20 5b 53 51 4c 49 54  k returns [SQLIT
29c00 45 5f 44 45 4e 59 5d 2c 20 74 68 65 0a 2a 2a 20  E_DENY], the.** 
29c10 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
29c20 5f 76 32 28 29 5d 20 6f 72 20 65 71 75 69 76 61  _v2()] or equiva
29c30 6c 65 6e 74 20 63 61 6c 6c 20 74 68 61 74 20 74  lent call that t
29c40 72 69 67 67 65 72 65 64 20 74 68 65 0a 2a 2a 20  riggered the.** 
29c50 61 75 74 68 6f 72 69 7a 65 72 20 77 69 6c 6c 20  authorizer will 
29c60 66 61 69 6c 20 77 69 74 68 20 61 6e 20 65 72 72  fail with an err
29c70 6f 72 20 6d 65 73 73 61 67 65 20 65 78 70 6c 61  or message expla
29c80 69 6e 69 6e 67 20 74 68 61 74 0a 2a 2a 20 61 63  ining that.** ac
29c90 63 65 73 73 20 69 73 20 64 65 6e 69 65 64 2e 20  cess is denied. 
29ca0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73  .**.** ^The firs
29cb0 74 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74  t parameter to t
29cc0 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61  he authorizer ca
29cd0 6c 6c 62 61 63 6b 20 69 73 20 61 20 63 6f 70 79  llback is a copy
29ce0 20 6f 66 20 74 68 65 20 74 68 69 72 64 0a 2a 2a   of the third.**
29cf0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68   parameter to th
29d00 65 20 73 71 6c 69 74 65 33 5f 73 65 74 5f 61 75  e sqlite3_set_au
29d10 74 68 6f 72 69 7a 65 72 28 29 20 69 6e 74 65 72  thorizer() inter
29d20 66 61 63 65 2e 20 5e 54 68 65 20 73 65 63 6f 6e  face. ^The secon
29d30 64 20 70 61 72 61 6d 65 74 65 72 0a 2a 2a 20 74  d parameter.** t
29d40 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69  o the callback i
29d50 73 20 61 6e 20 69 6e 74 65 67 65 72 20 5b 53 51  s an integer [SQ
29d60 4c 49 54 45 5f 43 4f 50 59 20 7c 20 61 63 74 69  LITE_COPY | acti
29d70 6f 6e 20 63 6f 64 65 5d 20 74 68 61 74 20 73 70  on code] that sp
29d80 65 63 69 66 69 65 73 0a 2a 2a 20 74 68 65 20 70  ecifies.** the p
29d90 61 72 74 69 63 75 6c 61 72 20 61 63 74 69 6f 6e  articular action
29da0 20 74 6f 20 62 65 20 61 75 74 68 6f 72 69 7a 65   to be authorize
29db0 64 2e 20 5e 54 68 65 20 74 68 69 72 64 20 74 68  d. ^The third th
29dc0 72 6f 75 67 68 20 73 69 78 74 68 20 70 61 72 61  rough sixth para
29dd0 6d 65 74 65 72 73 0a 2a 2a 20 74 6f 20 74 68 65  meters.** to the
29de0 20 63 61 6c 6c 62 61 63 6b 20 61 72 65 20 65 69   callback are ei
29df0 74 68 65 72 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  ther NULL pointe
29e00 72 73 20 6f 72 20 7a 65 72 6f 2d 74 65 72 6d 69  rs or zero-termi
29e10 6e 61 74 65 64 20 73 74 72 69 6e 67 73 0a 2a 2a  nated strings.**
29e20 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 20 61 64   that contain ad
29e30 64 69 74 69 6f 6e 61 6c 20 64 65 74 61 69 6c 73  ditional details
29e40 20 61 62 6f 75 74 20 74 68 65 20 61 63 74 69 6f   about the actio
29e50 6e 20 74 6f 20 62 65 20 61 75 74 68 6f 72 69 7a  n to be authoriz
29e60 65 64 2e 0a 2a 2a 20 41 70 70 6c 69 63 61 74 69  ed..** Applicati
29e70 6f 6e 73 20 6d 75 73 74 20 61 6c 77 61 79 73 20  ons must always 
29e80 62 65 20 70 72 65 70 61 72 65 64 20 74 6f 20 65  be prepared to e
29e90 6e 63 6f 75 6e 74 65 72 20 61 20 4e 55 4c 4c 20  ncounter a NULL 
29ea0 70 6f 69 6e 74 65 72 20 69 6e 20 61 6e 79 0a 2a  pointer in any.*
29eb0 2a 20 6f 66 20 74 68 65 20 74 68 69 72 64 20 74  * of the third t
29ec0 68 72 6f 75 67 68 20 74 68 65 20 73 69 78 74 68  hrough the sixth
29ed0 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 20 74   parameters of t
29ee0 68 65 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e  he authorization
29ef0 20 63 61 6c 6c 62 61 63 6b 2e 0a 2a 2a 0a 2a 2a   callback..**.**
29f00 20 5e 49 66 20 74 68 65 20 61 63 74 69 6f 6e 20   ^If the action 
29f10 63 6f 64 65 20 69 73 20 5b 53 51 4c 49 54 45 5f  code is [SQLITE_
29f20 52 45 41 44 5d 0a 2a 2a 20 61 6e 64 20 74 68 65  READ].** and the
29f30 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
29f40 73 20 5b 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45  s [SQLITE_IGNORE
29f50 5d 20 74 68 65 6e 20 74 68 65 0a 2a 2a 20 5b 70  ] then the.** [p
29f60 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
29f70 74 5d 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  t] statement is 
29f80 63 6f 6e 73 74 72 75 63 74 65 64 20 74 6f 20 73  constructed to s
29f90 75 62 73 74 69 74 75 74 65 0a 2a 2a 20 61 20 4e  ubstitute.** a N
29fa0 55 4c 4c 20 76 61 6c 75 65 20 69 6e 20 70 6c 61  ULL value in pla
29fb0 63 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ce of the table 
29fc0 63 6f 6c 75 6d 6e 20 74 68 61 74 20 77 6f 75 6c  column that woul
29fd0 64 20 68 61 76 65 0a 2a 2a 20 62 65 65 6e 20 72  d have.** been r
29fe0 65 61 64 20 69 66 20 5b 53 51 4c 49 54 45 5f 4f  ead if [SQLITE_O
29ff0 4b 5d 20 68 61 64 20 62 65 65 6e 20 72 65 74 75  K] had been retu
2a000 72 6e 65 64 2e 20 20 54 68 65 20 5b 53 51 4c 49  rned.  The [SQLI
2a010 54 45 5f 49 47 4e 4f 52 45 5d 0a 2a 2a 20 72 65  TE_IGNORE].** re
2a020 74 75 72 6e 20 63 61 6e 20 62 65 20 75 73 65 64  turn can be used
2a030 20 74 6f 20 64 65 6e 79 20 61 6e 20 75 6e 74 72   to deny an untr
2a040 75 73 74 65 64 20 75 73 65 72 20 61 63 63 65 73  usted user acces
2a050 73 20 74 6f 20 69 6e 64 69 76 69 64 75 61 6c 0a  s to individual.
2a060 2a 2a 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 20  ** columns of a 
2a070 74 61 62 6c 65 2e 0a 2a 2a 20 5e 57 68 65 6e 20  table..** ^When 
2a080 61 20 74 61 62 6c 65 20 69 73 20 72 65 66 65 72  a table is refer
2a090 65 6e 63 65 64 20 62 79 20 61 20 5b 53 45 4c 45  enced by a [SELE
2a0a0 43 54 5d 20 62 75 74 20 6e 6f 20 63 6f 6c 75 6d  CT] but no colum
2a0b0 6e 20 76 61 6c 75 65 73 20 61 72 65 0a 2a 2a 20  n values are.** 
2a0c0 65 78 74 72 61 63 74 65 64 20 66 72 6f 6d 20 74  extracted from t
2a0d0 68 61 74 20 74 61 62 6c 65 20 28 66 6f 72 20 65  hat table (for e
2a0e0 78 61 6d 70 6c 65 20 69 6e 20 61 20 71 75 65 72  xample in a quer
2a0f0 79 20 6c 69 6b 65 0a 2a 2a 20 22 53 45 4c 45 43  y like.** "SELEC
2a100 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
2a110 74 61 62 22 29 20 74 68 65 6e 20 74 68 65 20 5b  tab") then the [
2a120 53 51 4c 49 54 45 5f 52 45 41 44 5d 20 61 75 74  SQLITE_READ] aut
2a130 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b  horizer callback
2a140 0a 2a 2a 20 69 73 20 69 6e 76 6f 6b 65 64 20 6f  .** is invoked o
2a150 6e 63 65 20 66 6f 72 20 74 68 61 74 20 74 61 62  nce for that tab
2a160 6c 65 20 77 69 74 68 20 61 20 63 6f 6c 75 6d 6e  le with a column
2a170 20 6e 61 6d 65 20 74 68 61 74 20 69 73 20 61 6e   name that is an
2a180 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 2a   empty string..*
2a190 2a 20 5e 49 66 20 74 68 65 20 61 63 74 69 6f 6e  * ^If the action
2a1a0 20 63 6f 64 65 20 69 73 20 5b 53 51 4c 49 54 45   code is [SQLITE
2a1b0 5f 44 45 4c 45 54 45 5d 20 61 6e 64 20 74 68 65  _DELETE] and the
2a1c0 20 63 61 6c 6c 62 61 63 6b 20 72 65 74 75 72 6e   callback return
2a1d0 73 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 49 47 4e  s.** [SQLITE_IGN
2a1e0 4f 52 45 5d 20 74 68 65 6e 20 74 68 65 20 5b 44  ORE] then the [D
2a1f0 45 4c 45 54 45 5d 20 6f 70 65 72 61 74 69 6f 6e  ELETE] operation
2a200 20 70 72 6f 63 65 65 64 73 20 62 75 74 20 74 68   proceeds but th
2a210 65 0a 2a 2a 20 5b 74 72 75 6e 63 61 74 65 20 6f  e.** [truncate o
2a220 70 74 69 6d 69 7a 61 74 69 6f 6e 5d 20 69 73 20  ptimization] is 
2a230 64 69 73 61 62 6c 65 64 20 61 6e 64 20 61 6c 6c  disabled and all
2a240 20 72 6f 77 73 20 61 72 65 20 64 65 6c 65 74 65   rows are delete
2a250 64 20 69 6e 64 69 76 69 64 75 61 6c 6c 79 2e 0a  d individually..
2a260 2a 2a 0a 2a 2a 20 41 6e 20 61 75 74 68 6f 72 69  **.** An authori
2a270 7a 65 72 20 69 73 20 75 73 65 64 20 77 68 65 6e  zer is used when
2a280 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72   [sqlite3_prepar
2a290 65 20 7c 20 70 72 65 70 61 72 69 6e 67 5d 0a 2a  e | preparing].*
2a2a0 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73  * SQL statements
2a2b0 20 66 72 6f 6d 20 61 6e 20 75 6e 74 72 75 73 74   from an untrust
2a2c0 65 64 20 73 6f 75 72 63 65 2c 20 74 6f 20 65 6e  ed source, to en
2a2d0 73 75 72 65 20 74 68 61 74 20 74 68 65 20 53 51  sure that the SQ
2a2e0 4c 20 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20  L statements.** 
2a2f0 64 6f 20 6e 6f 74 20 74 72 79 20 74 6f 20 61 63  do not try to ac
2a300 63 65 73 73 20 64 61 74 61 20 74 68 65 79 20 61  cess data they a
2a310 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 74  re not allowed t
2a320 6f 20 73 65 65 2c 20 6f 72 20 74 68 61 74 20 74  o see, or that t
2a330 68 65 79 20 64 6f 20 6e 6f 74 0a 2a 2a 20 74 72  hey do not.** tr
2a340 79 20 74 6f 20 65 78 65 63 75 74 65 20 6d 61 6c  y to execute mal
2a350 69 63 69 6f 75 73 20 73 74 61 74 65 6d 65 6e 74  icious statement
2a360 73 20 74 68 61 74 20 64 61 6d 61 67 65 20 74 68  s that damage th
2a370 65 20 64 61 74 61 62 61 73 65 2e 20 20 46 6f 72  e database.  For
2a380 0a 2a 2a 20 65 78 61 6d 70 6c 65 2c 20 61 6e 20  .** example, an 
2a390 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 61 79 20  application may 
2a3a0 61 6c 6c 6f 77 20 61 20 75 73 65 72 20 74 6f 20  allow a user to 
2a3b0 65 6e 74 65 72 20 61 72 62 69 74 72 61 72 79 0a  enter arbitrary.
2a3c0 2a 2a 20 53 51 4c 20 71 75 65 72 69 65 73 20 66  ** SQL queries f
2a3d0 6f 72 20 65 76 61 6c 75 61 74 69 6f 6e 20 62 79  or evaluation by
2a3e0 20 61 20 64 61 74 61 62 61 73 65 2e 20 20 42 75   a database.  Bu
2a3f0 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  t the applicatio
2a400 6e 20 64 6f 65 73 0a 2a 2a 20 6e 6f 74 20 77 61  n does.** not wa
2a410 6e 74 20 74 68 65 20 75 73 65 72 20 74 6f 20 62  nt the user to b
2a420 65 20 61 62 6c 65 20 74 6f 20 6d 61 6b 65 20 61  e able to make a
2a430 72 62 69 74 72 61 72 79 20 63 68 61 6e 67 65 73  rbitrary changes
2a440 20 74 6f 20 74 68 65 0a 2a 2a 20 64 61 74 61 62   to the.** datab
2a450 61 73 65 2e 20 20 41 6e 20 61 75 74 68 6f 72 69  ase.  An authori
2a460 7a 65 72 20 63 6f 75 6c 64 20 74 68 65 6e 20 62  zer could then b
2a470 65 20 70 75 74 20 69 6e 20 70 6c 61 63 65 20 77  e put in place w
2a480 68 69 6c 65 20 74 68 65 0a 2a 2a 20 75 73 65 72  hile the.** user
2a490 2d 65 6e 74 65 72 65 64 20 53 51 4c 20 69 73 20  -entered SQL is 
2a4a0 62 65 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 70  being [sqlite3_p
2a4b0 72 65 70 61 72 65 20 7c 20 70 72 65 70 61 72 65  repare | prepare
2a4c0 64 5d 20 74 68 61 74 0a 2a 2a 20 64 69 73 61 6c  d] that.** disal
2a4d0 6c 6f 77 73 20 65 76 65 72 79 74 68 69 6e 67 20  lows everything 
2a4e0 65 78 63 65 70 74 20 5b 53 45 4c 45 43 54 5d 20  except [SELECT] 
2a4f0 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a 0a 2a  statements..**.*
2a500 2a 20 41 70 70 6c 69 63 61 74 69 6f 6e 73 20 74  * Applications t
2a510 68 61 74 20 6e 65 65 64 20 74 6f 20 70 72 6f 63  hat need to proc
2a520 65 73 73 20 53 51 4c 20 66 72 6f 6d 20 75 6e 74  ess SQL from unt
2a530 72 75 73 74 65 64 20 73 6f 75 72 63 65 73 0a 2a  rusted sources.*
2a540 2a 20 6d 69 67 68 74 20 61 6c 73 6f 20 63 6f 6e  * might also con
2a550 73 69 64 65 72 20 6c 6f 77 65 72 69 6e 67 20 72  sider lowering r
2a560 65 73 6f 75 72 63 65 20 6c 69 6d 69 74 73 20 75  esource limits u
2a570 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f 6c 69  sing [sqlite3_li
2a580 6d 69 74 28 29 5d 0a 2a 2a 20 61 6e 64 20 6c 69  mit()].** and li
2a590 6d 69 74 69 6e 67 20 64 61 74 61 62 61 73 65 20  miting database 
2a5a0 73 69 7a 65 20 75 73 69 6e 67 20 74 68 65 20 5b  size using the [
2a5b0 6d 61 78 5f 70 61 67 65 5f 63 6f 75 6e 74 5d 20  max_page_count] 
2a5c0 5b 50 52 41 47 4d 41 5d 0a 2a 2a 20 69 6e 20 61  [PRAGMA].** in a
2a5d0 64 64 69 74 69 6f 6e 20 74 6f 20 75 73 69 6e 67  ddition to using
2a5e0 20 61 6e 20 61 75 74 68 6f 72 69 7a 65 72 2e 0a   an authorizer..
2a5f0 2a 2a 0a 2a 2a 20 5e 28 4f 6e 6c 79 20 61 20 73  **.** ^(Only a s
2a600 69 6e 67 6c 65 20 61 75 74 68 6f 72 69 7a 65 72  ingle authorizer
2a610 20 63 61 6e 20 62 65 20 69 6e 20 70 6c 61 63 65   can be in place
2a620 20 6f 6e 20 61 20 64 61 74 61 62 61 73 65 20 63   on a database c
2a630 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 61 74 20  onnection.** at 
2a640 61 20 74 69 6d 65 2e 20 20 45 61 63 68 20 63 61  a time.  Each ca
2a650 6c 6c 20 74 6f 20 73 71 6c 69 74 65 33 5f 73 65  ll to sqlite3_se
2a660 74 5f 61 75 74 68 6f 72 69 7a 65 72 20 6f 76 65  t_authorizer ove
2a670 72 72 69 64 65 73 20 74 68 65 0a 2a 2a 20 70 72  rrides the.** pr
2a680 65 76 69 6f 75 73 20 63 61 6c 6c 2e 29 5e 20 20  evious call.)^  
2a690 5e 44 69 73 61 62 6c 65 20 74 68 65 20 61 75 74  ^Disable the aut
2a6a0 68 6f 72 69 7a 65 72 20 62 79 20 69 6e 73 74 61  horizer by insta
2a6b0 6c 6c 69 6e 67 20 61 20 4e 55 4c 4c 20 63 61 6c  lling a NULL cal
2a6c0 6c 62 61 63 6b 2e 0a 2a 2a 20 54 68 65 20 61 75  lback..** The au
2a6d0 74 68 6f 72 69 7a 65 72 20 69 73 20 64 69 73 61  thorizer is disa
2a6e0 62 6c 65 64 20 62 79 20 64 65 66 61 75 6c 74 2e  bled by default.
2a6f0 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68 6f  .**.** The autho
2a700 72 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 20 6d  rizer callback m
2a710 75 73 74 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68  ust not do anyth
2a720 69 6e 67 20 74 68 61 74 20 77 69 6c 6c 20 6d 6f  ing that will mo
2a730 64 69 66 79 0a 2a 2a 20 74 68 65 20 64 61 74 61  dify.** the data
2a740 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2a750 74 68 61 74 20 69 6e 76 6f 6b 65 64 20 74 68 65  that invoked the
2a760 20 61 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c   authorizer call
2a770 62 61 63 6b 2e 0a 2a 2a 20 4e 6f 74 65 20 74 68  back..** Note th
2a780 61 74 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  at [sqlite3_prep
2a790 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20 5b 73  are_v2()] and [s
2a7a0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 20 62  qlite3_step()] b
2a7b0 6f 74 68 20 6d 6f 64 69 66 79 20 74 68 65 69 72  oth modify their
2a7c0 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63 6f 6e  .** database con
2a7d0 6e 65 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 65  nections for the
2a7e0 20 6d 65 61 6e 69 6e 67 20 6f 66 20 22 6d 6f 64   meaning of "mod
2a7f0 69 66 79 22 20 69 6e 20 74 68 69 73 20 70 61 72  ify" in this par
2a800 61 67 72 61 70 68 2e 0a 2a 2a 0a 2a 2a 20 5e 57  agraph..**.** ^W
2a810 68 65 6e 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  hen [sqlite3_pre
2a820 70 61 72 65 5f 76 32 28 29 5d 20 69 73 20 75 73  pare_v2()] is us
2a830 65 64 20 74 6f 20 70 72 65 70 61 72 65 20 61 20  ed to prepare a 
2a840 73 74 61 74 65 6d 65 6e 74 2c 20 74 68 65 0a 2a  statement, the.*
2a850 2a 20 73 74 61 74 65 6d 65 6e 74 20 6d 69 67 68  * statement migh
2a860 74 20 62 65 20 72 65 2d 70 72 65 70 61 72 65 64  t be re-prepared
2a870 20 64 75 72 69 6e 67 20 5b 73 71 6c 69 74 65 33   during [sqlite3
2a880 5f 73 74 65 70 28 29 5d 20 64 75 65 20 74 6f 20  _step()] due to 
2a890 61 20 0a 2a 2a 20 73 63 68 65 6d 61 20 63 68 61  a .** schema cha
2a8a0 6e 67 65 2e 20 20 48 65 6e 63 65 2c 20 74 68 65  nge.  Hence, the
2a8b0 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 73 68 6f   application sho
2a8c0 75 6c 64 20 65 6e 73 75 72 65 20 74 68 61 74 20  uld ensure that 
2a8d0 74 68 65 0a 2a 2a 20 63 6f 72 72 65 63 74 20 61  the.** correct a
2a8e0 75 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61  uthorizer callba
2a8f0 63 6b 20 72 65 6d 61 69 6e 73 20 69 6e 20 70 6c  ck remains in pl
2a900 61 63 65 20 64 75 72 69 6e 67 20 74 68 65 20 5b  ace during the [
2a910 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e  sqlite3_step()].
2a920 0a 2a 2a 0a 2a 2a 20 5e 4e 6f 74 65 20 74 68 61  .**.** ^Note tha
2a930 74 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72  t the authorizer
2a940 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
2a950 6f 6b 65 64 20 6f 6e 6c 79 20 64 75 72 69 6e 67  oked only during
2a960 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65  .** [sqlite3_pre
2a970 70 61 72 65 28 29 5d 20 6f 72 20 69 74 73 20 76  pare()] or its v
2a980 61 72 69 61 6e 74 73 2e 20 20 41 75 74 68 6f 72  ariants.  Author
2a990 69 7a 61 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 2a  ization is not.*
2a9a0 2a 20 70 65 72 66 6f 72 6d 65 64 20 64 75 72 69  * performed duri
2a9b0 6e 67 20 73 74 61 74 65 6d 65 6e 74 20 65 76 61  ng statement eva
2a9c0 6c 75 61 74 69 6f 6e 20 69 6e 20 5b 73 71 6c 69  luation in [sqli
2a9d0 74 65 33 5f 73 74 65 70 28 29 5d 2c 20 75 6e 6c  te3_step()], unl
2a9e0 65 73 73 0a 2a 2a 20 61 73 20 73 74 61 74 65 64  ess.** as stated
2a9f0 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73   in the previous
2aa00 20 70 61 72 61 67 72 61 70 68 2c 20 73 71 6c 69   paragraph, sqli
2aa10 74 65 33 5f 73 74 65 70 28 29 20 69 6e 76 6f 6b  te3_step() invok
2aa20 65 73 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72  es.** sqlite3_pr
2aa30 65 70 61 72 65 5f 76 32 28 29 20 74 6f 20 72 65  epare_v2() to re
2aa40 70 72 65 70 61 72 65 20 61 20 73 74 61 74 65 6d  prepare a statem
2aa50 65 6e 74 20 61 66 74 65 72 20 61 20 73 63 68 65  ent after a sche
2aa60 6d 61 20 63 68 61 6e 67 65 2e 0a 2a 2f 0a 53 51  ma change..*/.SQ
2aa70 4c 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c  LITE_API int sql
2aa80 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72 69  ite3_set_authori
2aa90 7a 65 72 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c  zer(.  sqlite3*,
2aaa0 0a 20 20 69 6e 74 20 28 2a 78 41 75 74 68 29 28  .  int (*xAuth)(
2aab0 76 6f 69 64 2a 2c 69 6e 74 2c 63 6f 6e 73 74 20  void*,int,const 
2aac0 63 68 61 72 2a 2c 63 6f 6e 73 74 20 63 68 61 72  char*,const char
2aad0 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a 2c 63 6f  *,const char*,co
2aae0 6e 73 74 20 63 68 61 72 2a 29 2c 0a 20 20 76 6f  nst char*),.  vo
2aaf0 69 64 20 2a 70 55 73 65 72 44 61 74 61 0a 29 3b  id *pUserData.);
2ab00 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2ab10 3a 20 41 75 74 68 6f 72 69 7a 65 72 20 52 65 74  : Authorizer Ret
2ab20 75 72 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20  urn Codes.**.** 
2ab30 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  The [sqlite3_set
2ab40 5f 61 75 74 68 6f 72 69 7a 65 72 20 7c 20 61 75  _authorizer | au
2ab50 74 68 6f 72 69 7a 65 72 20 63 61 6c 6c 62 61 63  thorizer callbac
2ab60 6b 20 66 75 6e 63 74 69 6f 6e 5d 20 6d 75 73 74  k function] must
2ab70 0a 2a 2a 20 72 65 74 75 72 6e 20 65 69 74 68 65  .** return eithe
2ab80 72 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 20 6f 72  r [SQLITE_OK] or
2ab90 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 74 77   one of these tw
2aba0 6f 20 63 6f 6e 73 74 61 6e 74 73 20 69 6e 20 6f  o constants in o
2abb0 72 64 65 72 0a 2a 2a 20 74 6f 20 73 69 67 6e 61  rder.** to signa
2abc0 6c 20 53 51 4c 69 74 65 20 77 68 65 74 68 65 72  l SQLite whether
2abd0 20 6f 72 20 6e 6f 74 20 74 68 65 20 61 63 74 69   or not the acti
2abe0 6f 6e 20 69 73 20 70 65 72 6d 69 74 74 65 64 2e  on is permitted.
2abf0 20 20 53 65 65 20 74 68 65 0a 2a 2a 20 5b 73 71    See the.** [sq
2ac00 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
2ac10 69 7a 65 72 20 7c 20 61 75 74 68 6f 72 69 7a 65  izer | authorize
2ac20 72 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 5d  r documentation]
2ac30 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
2ac40 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  ** information..
2ac50 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74 68 61 74 20  **.** Note that 
2ac60 53 51 4c 49 54 45 5f 49 47 4e 4f 52 45 20 69 73  SQLITE_IGNORE is
2ac70 20 61 6c 73 6f 20 75 73 65 64 20 61 73 20 61 20   also used as a 
2ac80 5b 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75  [conflict resolu
2ac90 74 69 6f 6e 20 6d 6f 64 65 5d 0a 2a 2a 20 72 65  tion mode].** re
2aca0 74 75 72 6e 65 64 20 66 72 6f 6d 20 74 68 65 20  turned from the 
2acb0 5b 73 71 6c 69 74 65 33 5f 76 74 61 62 5f 6f 6e  [sqlite3_vtab_on
2acc0 5f 63 6f 6e 66 6c 69 63 74 28 29 5d 20 69 6e 74  _conflict()] int
2acd0 65 72 66 61 63 65 2e 0a 2a 2f 0a 23 64 65 66 69  erface..*/.#defi
2ace0 6e 65 20 53 51 4c 49 54 45 5f 44 45 4e 59 20 20  ne SQLITE_DENY  
2acf0 20 31 20 20 20 2f 2a 20 41 62 6f 72 74 20 74 68   1   /* Abort th
2ad00 65 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20  e SQL statement 
2ad10 77 69 74 68 20 61 6e 20 65 72 72 6f 72 20 2a 2f  with an error */
2ad20 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2ad30 49 47 4e 4f 52 45 20 32 20 20 20 2f 2a 20 44 6f  IGNORE 2   /* Do
2ad40 6e 27 74 20 61 6c 6c 6f 77 20 61 63 63 65 73 73  n't allow access
2ad50 2c 20 62 75 74 20 64 6f 6e 27 74 20 67 65 6e 65  , but don't gene
2ad60 72 61 74 65 20 61 6e 20 65 72 72 6f 72 20 2a 2f  rate an error */
2ad70 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
2ad80 3a 20 41 75 74 68 6f 72 69 7a 65 72 20 41 63 74  : Authorizer Act
2ad90 69 6f 6e 20 43 6f 64 65 73 0a 2a 2a 0a 2a 2a 20  ion Codes.**.** 
2ada0 54 68 65 20 5b 73 71 6c 69 74 65 33 5f 73 65 74  The [sqlite3_set
2adb0 5f 61 75 74 68 6f 72 69 7a 65 72 28 29 5d 20 69  _authorizer()] i
2adc0 6e 74 65 72 66 61 63 65 20 72 65 67 69 73 74 65  nterface registe
2add0 72 73 20 61 20 63 61 6c 6c 62 61 63 6b 20 66 75  rs a callback fu
2ade0 6e 63 74 69 6f 6e 0a 2a 2a 20 74 68 61 74 20 69  nction.** that i
2adf0 73 20 69 6e 76 6f 6b 65 64 20 74 6f 20 61 75 74  s invoked to aut
2ae00 68 6f 72 69 7a 65 20 63 65 72 74 61 69 6e 20 53  horize certain S
2ae10 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 63 74  QL statement act
2ae20 69 6f 6e 73 2e 20 20 54 68 65 0a 2a 2a 20 73 65  ions.  The.** se
2ae30 63 6f 6e 64 20 70 61 72 61 6d 65 74 65 72 20 74  cond parameter t
2ae40 6f 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 69  o the callback i
2ae50 73 20 61 6e 20 69 6e 74 65 67 65 72 20 63 6f 64  s an integer cod
2ae60 65 20 74 68 61 74 20 73 70 65 63 69 66 69 65 73  e that specifies
2ae70 0a 2a 2a 20 77 68 61 74 20 61 63 74 69 6f 6e 20  .** what action 
2ae80 69 73 20 62 65 69 6e 67 20 61 75 74 68 6f 72 69  is being authori
2ae90 7a 65 64 2e 20 20 54 68 65 73 65 20 61 72 65 20  zed.  These are 
2aea0 74 68 65 20 69 6e 74 65 67 65 72 20 61 63 74 69  the integer acti
2aeb0 6f 6e 20 63 6f 64 65 73 20 74 68 61 74 0a 2a 2a  on codes that.**
2aec0 20 74 68 65 20 61 75 74 68 6f 72 69 7a 65 72 20   the authorizer 
2aed0 63 61 6c 6c 62 61 63 6b 20 6d 61 79 20 62 65 20  callback may be 
2aee0 70 61 73 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68  passed..**.** Th
2aef0 65 73 65 20 61 63 74 69 6f 6e 20 63 6f 64 65 20  ese action code 
2af00 76 61 6c 75 65 73 20 73 69 67 6e 69 66 79 20 77  values signify w
2af10 68 61 74 20 6b 69 6e 64 20 6f 66 20 6f 70 65 72  hat kind of oper
2af20 61 74 69 6f 6e 20 69 73 20 74 6f 20 62 65 0a 2a  ation is to be.*
2af30 2a 20 61 75 74 68 6f 72 69 7a 65 64 2e 20 20 54  * authorized.  T
2af40 68 65 20 33 72 64 20 61 6e 64 20 34 74 68 20 70  he 3rd and 4th p
2af50 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 65  arameters to the
2af60 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 0a 2a   authorization.*
2af70 2a 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  * callback funct
2af80 69 6f 6e 20 77 69 6c 6c 20 62 65 20 70 61 72 61  ion will be para
2af90 6d 65 74 65 72 73 20 6f 72 20 4e 55 4c 4c 20 64  meters or NULL d
2afa0 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 69 63  epending on whic
2afb0 68 20 6f 66 20 74 68 65 73 65 0a 2a 2a 20 63 6f  h of these.** co
2afc0 64 65 73 20 69 73 20 75 73 65 64 20 61 73 20 74  des is used as t
2afd0 68 65 20 73 65 63 6f 6e 64 20 70 61 72 61 6d 65  he second parame
2afe0 74 65 72 2e 20 20 5e 28 54 68 65 20 35 74 68 20  ter.  ^(The 5th 
2aff0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65  parameter to the
2b000 0a 2a 2a 20 61 75 74 68 6f 72 69 7a 65 72 20 63  .** authorizer c
2b010 61 6c 6c 62 61 63 6b 20 69 73 20 74 68 65 20 6e  allback is the n
2b020 61 6d 65 20 6f 66 20 74 68 65 20 64 61 74 61 62  ame of the datab
2b030 61 73 65 20 28 22 6d 61 69 6e 22 2c 20 22 74 65  ase ("main", "te
2b040 6d 70 22 2c 0a 2a 2a 20 65 74 63 2e 29 20 69 66  mp",.** etc.) if
2b050 20 61 70 70 6c 69 63 61 62 6c 65 2e 29 5e 20 20   applicable.)^  
2b060 5e 54 68 65 20 36 74 68 20 70 61 72 61 6d 65 74  ^The 6th paramet
2b070 65 72 20 74 6f 20 74 68 65 20 61 75 74 68 6f 72  er to the author
2b080 69 7a 65 72 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a  izer callback.**
2b090 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
2b0a0 74 68 65 20 69 6e 6e 65 72 2d 6d 6f 73 74 20 74  the inner-most t
2b0b0 72 69 67 67 65 72 20 6f 72 20 76 69 65 77 20 74  rigger or view t
2b0c0 68 61 74 20 69 73 20 72 65 73 70 6f 6e 73 69 62  hat is responsib
2b0d0 6c 65 20 66 6f 72 0a 2a 2a 20 74 68 65 20 61 63  le for.** the ac
2b0e0 63 65 73 73 20 61 74 74 65 6d 70 74 20 6f 72 20  cess attempt or 
2b0f0 4e 55 4c 4c 20 69 66 20 74 68 69 73 20 61 63 63  NULL if this acc
2b100 65 73 73 20 61 74 74 65 6d 70 74 20 69 73 20 64  ess attempt is d
2b110 69 72 65 63 74 6c 79 20 66 72 6f 6d 0a 2a 2a 20  irectly from.** 
2b120 74 6f 70 2d 6c 65 76 65 6c 20 53 51 4c 20 63 6f  top-level SQL co
2b130 64 65 2e 0a 2a 2f 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a  de..*/./********
2b140 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2b150 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
2b160 2a 2a 2a 20 33 72 64 20 2a 2a 2a 2a 2a 2a 2a 2a  *** 3rd ********
2b170 2a 2a 2a 2a 20 34 74 68 20 2a 2a 2a 2a 2a 2a 2a  **** 4th *******
2b180 2a 2a 2a 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  ****/.#define SQ
2b190 4c 49 54 45 5f 43 52 45 41 54 45 5f 49 4e 44 45  LITE_CREATE_INDE
2b1a0 58 20 20 20 20 20 20 20 20 20 20 31 20 20 20 2f  X          1   /
2b1b0 2a 20 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20  * Index Name    
2b1c0 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20    Table Name    
2b1d0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2b1e0 49 54 45 5f 43 52 45 41 54 45 5f 54 41 42 4c 45  ITE_CREATE_TABLE
2b1f0 20 20 20 20 20 20 20 20 20 20 32 20 20 20 2f 2a            2   /*
2b200 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2b210 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2b220 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2b230 54 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 49  TE_CREATE_TEMP_I
2b240 4e 44 45 58 20 20 20 20 20 33 20 20 20 2f 2a 20  NDEX     3   /* 
2b250 49 6e 64 65 78 20 4e 61 6d 65 20 20 20 20 20 20  Index Name      
2b260 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20  Table Name      
2b270 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2b280 45 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 54 41  E_CREATE_TEMP_TA
2b290 42 4c 45 20 20 20 20 20 34 20 20 20 2f 2a 20 54  BLE     4   /* T
2b2a0 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 4e  able Name      N
2b2b0 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a  ULL            *
2b2c0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b2d0 5f 43 52 45 41 54 45 5f 54 45 4d 50 5f 54 52 49  _CREATE_TEMP_TRI
2b2e0 47 47 45 52 20 20 20 35 20 20 20 2f 2a 20 54 72  GGER   5   /* Tr
2b2f0 69 67 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61  igger Name    Ta
2b300 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f  ble Name      */
2b310 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b320 43 52 45 41 54 45 5f 54 45 4d 50 5f 56 49 45 57  CREATE_TEMP_VIEW
2b330 20 20 20 20 20 20 36 20 20 20 2f 2a 20 56 69 65        6   /* Vie
2b340 77 20 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c  w Name       NUL
2b350 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2b360 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43  #define SQLITE_C
2b370 52 45 41 54 45 5f 54 52 49 47 47 45 52 20 20 20  REATE_TRIGGER   
2b380 20 20 20 20 20 37 20 20 20 2f 2a 20 54 72 69 67       7   /* Trig
2b390 67 65 72 20 4e 61 6d 65 20 20 20 20 54 61 62 6c  ger Name    Tabl
2b3a0 65 20 4e 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23  e Name      */.#
2b3b0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 43 52  define SQLITE_CR
2b3c0 45 41 54 45 5f 56 49 45 57 20 20 20 20 20 20 20  EATE_VIEW       
2b3d0 20 20 20 20 38 20 20 20 2f 2a 20 56 69 65 77 20      8   /* View 
2b3e0 4e 61 6d 65 20 20 20 20 20 20 20 4e 55 4c 4c 20  Name       NULL 
2b3f0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2b400 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 4c  efine SQLITE_DEL
2b410 45 54 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ETE             
2b420 20 20 20 39 20 20 20 2f 2a 20 54 61 62 6c 65 20     9   /* Table 
2b430 4e 61 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20  Name      NULL  
2b440 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2b450 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50  fine SQLITE_DROP
2b460 5f 49 4e 44 45 58 20 20 20 20 20 20 20 20 20 20  _INDEX          
2b470 20 31 30 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e   10   /* Index N
2b480 61 6d 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e  ame      Table N
2b490 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
2b4a0 69 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f  ine SQLITE_DROP_
2b4b0 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 20  TABLE           
2b4c0 31 31 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61  11   /* Table Na
2b4d0 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2b4e0 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2b4f0 6e 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54  ne SQLITE_DROP_T
2b500 45 4d 50 5f 49 4e 44 45 58 20 20 20 20 20 20 31  EMP_INDEX      1
2b510 32 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61 6d  2   /* Index Nam
2b520 65 20 20 20 20 20 20 54 61 62 6c 65 20 4e 61 6d  e      Table Nam
2b530 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e  e      */.#defin
2b540 65 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45  e SQLITE_DROP_TE
2b550 4d 50 5f 54 41 42 4c 45 20 20 20 20 20 20 31 33  MP_TABLE      13
2b560 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2b570 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20        NULL      
2b580 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65        */.#define
2b590 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d   SQLITE_DROP_TEM
2b5a0 50 5f 54 52 49 47 47 45 52 20 20 20 20 31 34 20  P_TRIGGER    14 
2b5b0 20 20 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d    /* Trigger Nam
2b5c0 65 20 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20  e    Table Name 
2b5d0 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2b5e0 53 51 4c 49 54 45 5f 44 52 4f 50 5f 54 45 4d 50  SQLITE_DROP_TEMP
2b5f0 5f 56 49 45 57 20 20 20 20 20 20 20 31 35 20 20  _VIEW       15  
2b600 20 2f 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20   /* View Name   
2b610 20 20 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20      NULL        
2b620 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53      */.#define S
2b630 51 4c 49 54 45 5f 44 52 4f 50 5f 54 52 49 47 47  QLITE_DROP_TRIGG
2b640 45 52 20 20 20 20 20 20 20 20 20 31 36 20 20 20  ER         16   
2b650 2f 2a 20 54 72 69 67 67 65 72 20 4e 61 6d 65 20  /* Trigger Name 
2b660 20 20 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20     Table Name   
2b670 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51     */.#define SQ
2b680 4c 49 54 45 5f 44 52 4f 50 5f 56 49 45 57 20 20  LITE_DROP_VIEW  
2b690 20 20 20 20 20 20 20 20 20 20 31 37 20 20 20 2f            17   /
2b6a0 2a 20 56 69 65 77 20 4e 61 6d 65 20 20 20 20 20  * View Name     
2b6b0 20 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20    NULL          
2b6c0 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c    */.#define SQL
2b6d0 49 54 45 5f 49 4e 53 45 52 54 20 20 20 20 20 20  ITE_INSERT      
2b6e0 20 20 20 20 20 20 20 20 20 31 38 20 20 20 2f 2a           18   /*
2b6f0 20 54 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20   Table Name     
2b700 20 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20   NULL           
2b710 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2b720 54 45 5f 50 52 41 47 4d 41 20 20 20 20 20 20 20  TE_PRAGMA       
2b730 20 20 20 20 20 20 20 20 31 39 20 20 20 2f 2a 20          19   /* 
2b740 50 72 61 67 6d 61 20 4e 61 6d 65 20 20 20 20 20  Pragma Name     
2b750 31 73 74 20 61 72 67 20 6f 72 20 4e 55 4c 4c 20  1st arg or NULL 
2b760 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  */.#define SQLIT
2b770 45 5f 52 45 41 44 20 20 20 20 20 20 20 20 20 20  E_READ          
2b780 20 20 20 20 20 20 20 32 30 20 20 20 2f 2a 20 54         20   /* T
2b790 61 62 6c 65 20 4e 61 6d 65 20 20 20 20 20 20 43  able Name      C
2b7a0 6f 6c 75 6d 6e 20 4e 61 6d 65 20 20 20 20 20 2a  olumn Name     *
2b7b0 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  /.#define SQLITE
2b7c0 5f 53 45 4c 45 43 54 20 20 20 20 20 20 20 20 20  _SELECT         
2b7d0 20 20 20 20 20 20 32 31 20 20 20 2f 2a 20 4e 55        21   /* NU
2b7e0 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 4e 55  LL            NU
2b7f0 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f  LL            */
2b800 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
2b810 54 52 41 4e 53 41 43 54 49 4f 4e 20 20 20 20 20  TRANSACTION     
2b820 20 20 20 20 20 32 32 20 20 20 2f 2a 20 4f 70 65       22   /* Ope
2b830 72 61 74 69 6f 6e 20 20 20 20 20 20 20 4e 55 4c  ration       NUL
2b840 4c 20 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a  L            */.
2b850 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 55  #define SQLITE_U
2b860 50 44 41 54 45 20 20 20 20 20 20 20 20 20 20 20  PDATE           
2b870 20 20 20 20 32 33 20 20 20 2f 2a 20 54 61 62 6c      23   /* Tabl
2b880 65 20 4e 61 6d 65 20 20 20 20 20 20 43 6f 6c 75  e Name      Colu
2b890 6d 6e 20 4e 61 6d 65 20 20 20 20 20 2a 2f 0a 23  mn Name     */.#
2b8a0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 54  define SQLITE_AT
2b8b0 54 41 43 48 20 20 20 20 20 20 20 20 20 20 20 20  TACH            
2b8c0 20 20 20 32 34 20 20 20 2f 2a 20 46 69 6c 65 6e     24   /* Filen
2b8d0 61 6d 65 20 20 20 20 20 20 20 20 4e 55 4c 4c 20  ame        NULL 
2b8e0 20 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64             */.#d
2b8f0 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 44 45 54  efine SQLITE_DET
2b900 41 43 48 20 20 20 20 20 20 20 20 20 20 20 20 20  ACH             
2b910 20 20 32 35 20 20 20 2f 2a 20 44 61 74 61 62 61    25   /* Databa
2b920 73 65 20 4e 61 6d 65 20 20 20 4e 55 4c 4c 20 20  se Name   NULL  
2b930 20 20 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65            */.#de
2b940 66 69 6e 65 20 53 51 4c 49 54 45 5f 41 4c 54 45  fine SQLITE_ALTE
2b950 52 5f 54 41 42 4c 45 20 20 20 20 20 20 20 20 20  R_TABLE         
2b960 20 32 36 20 20 20 2f 2a 20 44 61 74 61 62 61 73   26   /* Databas
2b970 65 20 4e 61 6d 65 20 20 20 54 61 62 6c 65 20 4e  e Name   Table N
2b980 61 6d 65 20 20 20 20 20 20 2a 2f 0a 23 64 65 66  ame      */.#def
2b990 69 6e 65 20 53 51 4c 49 54 45 5f 52 45 49 4e 44  ine SQLITE_REIND
2b9a0 45 58 20 20 20 20 20 20 20 20 20 20 20 20 20 20  EX              
2b9b0 32 37 20 20 20 2f 2a 20 49 6e 64 65 78 20 4e 61  27   /* Index Na
2b9c0 6d 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20  me      NULL    
2b9d0 20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69          */.#defi
2b9e0 6e 65 20 53 51 4c 49 54 45 5f 41 4e 41 4c 59 5a  ne SQLITE_ANALYZ
2b9f0 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32  E              2
2ba00 38 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d  8   /* Table Nam
2ba10 65 20 20 20 20 20 20 4e 55 4c 4c 20 20 20 20 20  e      NULL     
2ba20 20 20 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e         */.#defin
2ba30 65 20 53 51 4c 49 54 45 5f 43 52 45 41 54 45 5f  e SQLITE_CREATE_
2ba40 56 54 41 42 4c 45 20 20 20 20 20 20 20 20 32 39  VTABLE        29
2ba50 20 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65     /* Table Name
2ba60 20 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61 6d        Module Nam
2ba70 65 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65  e     */.#define
2ba80 20 53 51 4c 49 54 45 5f 44 52 4f 50 5f 56 54 41   SQLITE_DROP_VTA
2ba90 42 4c 45 20 20 20 20 20 20 20 20 20 20 33 30 20  BLE          30 
2baa0 20 20 2f 2a 20 54 61 62 6c 65 20 4e 61 6d 65 20    /* Table Name 
2bab0 20 20 20 20 20 4d 6f 64 75 6c 65 20 4e 61 6d 65       Module Name
2bac0 20 20 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20       */.#define 
2bad0 53 51 4c 49 54 45 5f 46 55 4e 43 54 49 4f 4e 20  SQLITE_FUNCTION 
2bae0 20 20 20 20 20 20 20 20 20 20 20 20 33 31 20 20              31  
2baf0 20 2f 2a 20 4e 55 4c 4c 20 20 20 20 20 20 20 20   /* NULL        
2bb00 20 20 20 20 46 75 6e 63 74 69 6f 6e 20 4e 61 6d      Function Nam
2bb10 65 20 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53  e   */.#define S
2bb20 51 4c 49 54 45 5f 53 41 56 45 50 4f 49 4e 54 20  QLITE_SAVEPOINT 
2bb30 20 20 20 20 20 20 20 20 20 20 20 33 32 20 20 20             32   
2bb40 2f 2a 20 4f 70 65 72 61 74 69 6f 6e 20 20 20 20  /* Operation    
2bb50 20 20 20 53 61 76 65 70 6f 69 6e 74 20 4e 61 6d     Savepoint Nam
2bb60 65 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51  e  */.#define SQ
2bb70 4c 49 54 45 5f 43 4f 50 59 20 20 20 20 20 20 20  LITE_COPY       
2bb80 20 20 20 20 20 20 20 20 20 20 20 30 20 20 20 2f             0   /
2bb90 2a 20 4e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  * No longer used
2bba0 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 51 4c 49   */.#define SQLI
2bbb0 54 45 5f 52 45 43 55 52 53 49 56 45 20 20 20 20  TE_RECURSIVE    
2bbc0 20 20 20 20 20 20 20 20 33 33 20 20 20 2f 2a 20          33   /* 
2bbd0 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2bbe0 4e 55 4c 4c 20 20 20 20 20 20 20 20 20 20 20 20  NULL            
2bbf0 2a 2f 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  */../*.** CAPI3R
2bc00 45 46 3a 20 54 72 61 63 69 6e 67 20 41 6e 64 20  EF: Tracing And 
2bc10 50 72 6f 66 69 6c 69 6e 67 20 46 75 6e 63 74 69  Profiling Functi
2bc20 6f 6e 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  ons.** METHOD: s
2bc30 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 54 68 65  qlite3.**.** The
2bc40 73 65 20 72 6f 75 74 69 6e 65 73 20 61 72 65 20  se routines are 
2bc50 64 65 70 72 65 63 61 74 65 64 2e 20 55 73 65 20  deprecated. Use 
2bc60 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 74 72 61  the [sqlite3_tra
2bc70 63 65 5f 76 32 28 29 5d 20 69 6e 74 65 72 66 61  ce_v2()] interfa
2bc80 63 65 0a 2a 2a 20 69 6e 73 74 65 61 64 20 6f 66  ce.** instead of
2bc90 20 74 68 65 20 72 6f 75 74 69 6e 65 73 20 64 65   the routines de
2bca0 73 63 72 69 62 65 64 20 68 65 72 65 2e 0a 2a 2a  scribed here..**
2bcb0 0a 2a 2a 20 54 68 65 73 65 20 72 6f 75 74 69 6e  .** These routin
2bcc0 65 73 20 72 65 67 69 73 74 65 72 20 63 61 6c 6c  es register call
2bcd0 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 73 20 74  back functions t
2bce0 68 61 74 20 63 61 6e 20 62 65 20 75 73 65 64 20  hat can be used 
2bcf0 66 6f 72 0a 2a 2a 20 74 72 61 63 69 6e 67 20 61  for.** tracing a
2bd00 6e 64 20 70 72 6f 66 69 6c 69 6e 67 20 74 68 65  nd profiling the
2bd10 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20 53 51   execution of SQ
2bd20 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 2a 2a  L statements..**
2bd30 0a 2a 2a 20 5e 54 68 65 20 63 61 6c 6c 62 61 63  .** ^The callbac
2bd40 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 73  k function regis
2bd50 74 65 72 65 64 20 62 79 20 73 71 6c 69 74 65 33  tered by sqlite3
2bd60 5f 74 72 61 63 65 28 29 20 69 73 20 69 6e 76 6f  _trace() is invo
2bd70 6b 65 64 20 61 74 0a 2a 2a 20 76 61 72 69 6f 75  ked at.** variou
2bd80 73 20 74 69 6d 65 73 20 77 68 65 6e 20 61 6e 20  s times when an 
2bd90 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 73  SQL statement is
2bda0 20 62 65 69 6e 67 20 72 75 6e 20 62 79 20 5b 73   being run by [s
2bdb0 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d 2e 0a  qlite3_step()]..
2bdc0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
2bdd0 74 72 61 63 65 28 29 20 63 61 6c 6c 62 61 63 6b  trace() callback
2bde0 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69 74 68   is invoked with
2bdf0 20 61 20 55 54 46 2d 38 20 72 65 6e 64 65 72 69   a UTF-8 renderi
2be00 6e 67 20 6f 66 20 74 68 65 0a 2a 2a 20 53 51 4c  ng of the.** SQL
2be10 20 73 74 61 74 65 6d 65 6e 74 20 74 65 78 74 20   statement text 
2be20 61 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  as the statement
2be30 20 66 69 72 73 74 20 62 65 67 69 6e 73 20 65 78   first begins ex
2be40 65 63 75 74 69 6e 67 2e 0a 2a 2a 20 5e 28 41 64  ecuting..** ^(Ad
2be50 64 69 74 69 6f 6e 61 6c 20 73 71 6c 69 74 65 33  ditional sqlite3
2be60 5f 74 72 61 63 65 28 29 20 63 61 6c 6c 62 61 63  _trace() callbac
2be70 6b 73 20 6d 69 67 68 74 20 6f 63 63 75 72 0a 2a  ks might occur.*
2be80 2a 20 61 73 20 65 61 63 68 20 74 72 69 67 67 65  * as each trigge
2be90 72 65 64 20 73 75 62 70 72 6f 67 72 61 6d 20 69  red subprogram i
2bea0 73 20 65 6e 74 65 72 65 64 2e 20 20 54 68 65 20  s entered.  The 
2beb0 63 61 6c 6c 62 61 63 6b 73 20 66 6f 72 20 74 72  callbacks for tr
2bec0 69 67 67 65 72 73 0a 2a 2a 20 63 6f 6e 74 61 69  iggers.** contai
2bed0 6e 20 61 20 55 54 46 2d 38 20 53 51 4c 20 63 6f  n a UTF-8 SQL co
2bee0 6d 6d 65 6e 74 20 74 68 61 74 20 69 64 65 6e 74  mment that ident
2bef0 69 66 69 65 73 20 74 68 65 20 74 72 69 67 67 65  ifies the trigge
2bf00 72 2e 29 5e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 5b  r.)^.**.** The [
2bf10 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 49 5a  SQLITE_TRACE_SIZ
2bf20 45 5f 4c 49 4d 49 54 5d 20 63 6f 6d 70 69 6c 65  E_LIMIT] compile
2bf30 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 63 61 6e  -time option can
2bf40 20 62 65 20 75 73 65 64 20 74 6f 20 6c 69 6d 69   be used to limi
2bf50 74 0a 2a 2a 20 74 68 65 20 6c 65 6e 67 74 68 20  t.** the length 
2bf60 6f 66 20 5b 62 6f 75 6e 64 20 70 61 72 61 6d 65  of [bound parame
2bf70 74 65 72 5d 20 65 78 70 61 6e 73 69 6f 6e 20 69  ter] expansion i
2bf80 6e 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20  n the output of 
2bf90 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 2e  sqlite3_trace().
2bfa0 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 63 61 6c 6c  .**.** ^The call
2bfb0 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 72 65  back function re
2bfc0 67 69 73 74 65 72 65 64 20 62 79 20 73 71 6c 69  gistered by sqli
2bfd0 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 20 69 73  te3_profile() is
2bfe0 20 69 6e 76 6f 6b 65 64 0a 2a 2a 20 61 73 20 65   invoked.** as e
2bff0 61 63 68 20 53 51 4c 20 73 74 61 74 65 6d 65 6e  ach SQL statemen
2c000 74 20 66 69 6e 69 73 68 65 73 2e 20 20 5e 54 68  t finishes.  ^Th
2c010 65 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c 62 61  e profile callba
2c020 63 6b 20 63 6f 6e 74 61 69 6e 73 0a 2a 2a 20 74  ck contains.** t
2c030 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 61 74  he original stat
2c040 65 6d 65 6e 74 20 74 65 78 74 20 61 6e 64 20 61  ement text and a
2c050 6e 20 65 73 74 69 6d 61 74 65 20 6f 66 20 77 61  n estimate of wa
2c060 6c 6c 2d 63 6c 6f 63 6b 20 74 69 6d 65 0a 2a 2a  ll-clock time.**
2c070 20 6f 66 20 68 6f 77 20 6c 6f 6e 67 20 74 68 61   of how long tha
2c080 74 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 6f 6b  t statement took
2c090 20 74 6f 20 72 75 6e 2e 20 20 5e 54 68 65 20 70   to run.  ^The p
2c0a0 72 6f 66 69 6c 65 20 63 61 6c 6c 62 61 63 6b 0a  rofile callback.
2c0b0 2a 2a 20 74 69 6d 65 20 69 73 20 69 6e 20 75 6e  ** time is in un
2c0c0 69 74 73 20 6f 66 20 6e 61 6e 6f 73 65 63 6f 6e  its of nanosecon
2c0d0 64 73 2c 20 68 6f 77 65 76 65 72 20 74 68 65 20  ds, however the 
2c0e0 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e  current implemen
2c0f0 74 61 74 69 6f 6e 0a 2a 2a 20 69 73 20 6f 6e 6c  tation.** is onl
2c100 79 20 63 61 70 61 62 6c 65 20 6f 66 20 6d 69 6c  y capable of mil
2c110 6c 69 73 65 63 6f 6e 64 20 72 65 73 6f 6c 75 74  lisecond resolut
2c120 69 6f 6e 20 73 6f 20 74 68 65 20 73 69 78 20 6c  ion so the six l
2c130 65 61 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74  east significant
2c140 0a 2a 2a 20 64 69 67 69 74 73 20 69 6e 20 74 68  .** digits in th
2c150 65 20 74 69 6d 65 20 61 72 65 20 6d 65 61 6e 69  e time are meani
2c160 6e 67 6c 65 73 73 2e 20 20 46 75 74 75 72 65 20  ngless.  Future 
2c170 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69  versions of SQLi
2c180 74 65 0a 2a 2a 20 6d 69 67 68 74 20 70 72 6f 76  te.** might prov
2c190 69 64 65 20 67 72 65 61 74 65 72 20 72 65 73 6f  ide greater reso
2c1a0 6c 75 74 69 6f 6e 20 6f 6e 20 74 68 65 20 70 72  lution on the pr
2c1b0 6f 66 69 6c 65 72 20 63 61 6c 6c 62 61 63 6b 2e  ofiler callback.
2c1c0 20 20 49 6e 76 6f 6b 69 6e 67 0a 2a 2a 20 65 69    Invoking.** ei
2c1d0 74 68 65 72 20 5b 73 71 6c 69 74 65 33 5f 74 72  ther [sqlite3_tr
2c1e0 61 63 65 28 29 5d 20 6f 72 20 5b 73 71 6c 69 74  ace()] or [sqlit
2c1f0 65 33 5f 74 72 61 63 65 5f 76 32 28 29 5d 20 77  e3_trace_v2()] w
2c200 69 6c 6c 20 63 61 6e 63 65 6c 20 74 68 65 0a 2a  ill cancel the.*
2c210 2a 20 70 72 6f 66 69 6c 65 20 63 61 6c 6c 62 61  * profile callba
2c220 63 6b 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50  ck..*/.SQLITE_AP
2c230 49 20 53 51 4c 49 54 45 5f 44 45 50 52 45 43 41  I SQLITE_DEPRECA
2c240 54 45 44 20 76 6f 69 64 20 2a 73 71 6c 69 74 65  TED void *sqlite
2c250 33 5f 74 72 61 63 65 28 73 71 6c 69 74 65 33 2a  3_trace(sqlite3*
2c260 2c 0a 20 20 20 76 6f 69 64 28 2a 78 54 72 61 63  ,.   void(*xTrac
2c270 65 29 28 76 6f 69 64 2a 2c 63 6f 6e 73 74 20 63  e)(void*,const c
2c280 68 61 72 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 53  har*), void*);.S
2c290 51 4c 49 54 45 5f 41 50 49 20 53 51 4c 49 54 45  QLITE_API SQLITE
2c2a0 5f 44 45 50 52 45 43 41 54 45 44 20 76 6f 69 64  _DEPRECATED void
2c2b0 20 2a 73 71 6c 69 74 65 33 5f 70 72 6f 66 69 6c   *sqlite3_profil
2c2c0 65 28 73 71 6c 69 74 65 33 2a 2c 0a 20 20 20 76  e(sqlite3*,.   v
2c2d0 6f 69 64 28 2a 78 50 72 6f 66 69 6c 65 29 28 76  oid(*xProfile)(v
2c2e0 6f 69 64 2a 2c 63 6f 6e 73 74 20 63 68 61 72 2a  oid*,const char*
2c2f0 2c 73 71 6c 69 74 65 33 5f 75 69 6e 74 36 34 29  ,sqlite3_uint64)
2c300 2c 20 76 6f 69 64 2a 29 3b 0a 0a 2f 2a 0a 2a 2a  , void*);../*.**
2c310 20 43 41 50 49 33 52 45 46 3a 20 53 51 4c 20 54   CAPI3REF: SQL T
2c320 72 61 63 65 20 45 76 65 6e 74 20 43 6f 64 65 73  race Event Codes
2c330 0a 2a 2a 20 4b 45 59 57 4f 52 44 53 3a 20 53 51  .** KEYWORDS: SQ
2c340 4c 49 54 45 5f 54 52 41 43 45 0a 2a 2a 0a 2a 2a  LITE_TRACE.**.**
2c350 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73   These constants
2c360 20 69 64 65 6e 74 69 66 79 20 63 6c 61 73 73 65   identify classe
2c370 73 20 6f 66 20 65 76 65 6e 74 73 20 74 68 61 74  s of events that
2c380 20 63 61 6e 20 62 65 20 6d 6f 6e 69 74 6f 72 65   can be monitore
2c390 64 0a 2a 2a 20 75 73 69 6e 67 20 74 68 65 20 5b  d.** using the [
2c3a0 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2c3b0 28 29 5d 20 74 72 61 63 69 6e 67 20 6c 6f 67 69  ()] tracing logi
2c3c0 63 2e 20 20 54 68 65 20 4d 20 61 72 67 75 6d 65  c.  The M argume
2c3d0 6e 74 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74 65  nt.** to [sqlite
2c3e0 33 5f 74 72 61 63 65 5f 76 32 28 44 2c 4d 2c 58  3_trace_v2(D,M,X
2c3f0 2c 50 29 5d 20 69 73 20 61 6e 20 4f 52 2d 65 64  ,P)] is an OR-ed
2c400 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 6f 66 20   combination of 
2c410 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 0a 2a  one or more of.*
2c420 2a 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  * the following 
2c430 63 6f 6e 73 74 61 6e 74 73 2e 20 20 5e 54 68 65  constants.  ^The
2c440 20 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20   first argument 
2c450 74 6f 20 74 68 65 20 74 72 61 63 65 20 63 61 6c  to the trace cal
2c460 6c 62 61 63 6b 0a 2a 2a 20 69 73 20 6f 6e 65 20  lback.** is one 
2c470 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  of the following
2c480 20 63 6f 6e 73 74 61 6e 74 73 2e 0a 2a 2a 0a 2a   constants..**.*
2c490 2a 20 4e 65 77 20 74 72 61 63 69 6e 67 20 63 6f  * New tracing co
2c4a0 6e 73 74 61 6e 74 73 20 6d 61 79 20 62 65 20 61  nstants may be a
2c4b0 64 64 65 64 20 69 6e 20 66 75 74 75 72 65 20 72  dded in future r
2c4c0 65 6c 65 61 73 65 73 2e 0a 2a 2a 0a 2a 2a 20 5e  eleases..**.** ^
2c4d0 41 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b  A trace callback
2c4e0 20 68 61 73 20 66 6f 75 72 20 61 72 67 75 6d 65   has four argume
2c4f0 6e 74 73 3a 20 78 43 61 6c 6c 62 61 63 6b 28 54  nts: xCallback(T
2c500 2c 43 2c 50 2c 58 29 2e 0a 2a 2a 20 5e 54 68 65  ,C,P,X)..** ^The
2c510 20 54 20 61 72 67 75 6d 65 6e 74 20 69 73 20 6f   T argument is o
2c520 6e 65 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65  ne of the intege
2c530 72 20 74 79 70 65 20 63 6f 64 65 73 20 61 62 6f  r type codes abo
2c540 76 65 2e 0a 2a 2a 20 5e 54 68 65 20 43 20 61 72  ve..** ^The C ar
2c550 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 70 79  gument is a copy
2c560 20 6f 66 20 74 68 65 20 63 6f 6e 74 65 78 74 20   of the context 
2c570 70 6f 69 6e 74 65 72 20 70 61 73 73 65 64 20 69  pointer passed i
2c580 6e 20 61 73 20 74 68 65 0a 2a 2a 20 66 6f 75 72  n as the.** four
2c590 74 68 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 5b  th argument to [
2c5a0 73 71 6c 69 74 65 33 5f 74 72 61 63 65 5f 76 32  sqlite3_trace_v2
2c5b0 28 29 5d 2e 0a 2a 2a 20 54 68 65 20 50 20 61 6e  ()]..** The P an
2c5c0 64 20 58 20 61 72 67 75 6d 65 6e 74 73 20 61 72  d X arguments ar
2c5d0 65 20 70 6f 69 6e 74 65 72 73 20 77 68 6f 73 65  e pointers whose
2c5e0 20 6d 65 61 6e 69 6e 67 73 20 64 65 70 65 6e 64   meanings depend
2c5f0 20 6f 6e 20 54 2e 0a 2a 2a 0a 2a 2a 20 3c 64 6c   on T..**.** <dl
2c600 3e 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52  >.** [[SQLITE_TR
2c610 41 43 45 5f 53 54 4d 54 5d 5d 20 3c 64 74 3e 53  ACE_STMT]] <dt>S
2c620 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54 4d 54  QLITE_TRACE_STMT
2c630 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e  </dt>.** <dd>^An
2c640 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 54   SQLITE_TRACE_ST
2c650 4d 54 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69  MT callback is i
2c660 6e 76 6f 6b 65 64 20 77 68 65 6e 20 61 20 70 72  nvoked when a pr
2c670 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
2c680 0a 2a 2a 20 66 69 72 73 74 20 62 65 67 69 6e 73  .** first begins
2c690 20 72 75 6e 6e 69 6e 67 20 61 6e 64 20 70 6f 73   running and pos
2c6a0 73 69 62 6c 79 20 61 74 20 6f 74 68 65 72 20 74  sibly at other t
2c6b0 69 6d 65 73 20 64 75 72 69 6e 67 20 74 68 65 0a  imes during the.
2c6c0 2a 2a 20 65 78 65 63 75 74 69 6f 6e 20 6f 66 20  ** execution of 
2c6d0 74 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61  the prepared sta
2c6e0 74 65 6d 65 6e 74 2c 20 73 75 63 68 20 61 73 20  tement, such as 
2c6f0 61 74 20 74 68 65 20 73 74 61 72 74 20 6f 66 20  at the start of 
2c700 65 61 63 68 0a 2a 2a 20 74 72 69 67 67 65 72 20  each.** trigger 
2c710 73 75 62 70 72 6f 67 72 61 6d 2e 20 5e 54 68 65  subprogram. ^The
2c720 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61   P argument is a
2c730 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 0a   pointer to the.
2c740 2a 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  ** [prepared sta
2c750 74 65 6d 65 6e 74 5d 2e 20 5e 54 68 65 20 58 20  tement]. ^The X 
2c760 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70 6f  argument is a po
2c770 69 6e 74 65 72 20 74 6f 20 61 20 73 74 72 69 6e  inter to a strin
2c780 67 20 77 68 69 63 68 0a 2a 2a 20 69 73 20 74 68  g which.** is th
2c790 65 20 75 6e 65 78 70 61 6e 64 65 64 20 53 51 4c  e unexpanded SQL
2c7a0 20 74 65 78 74 20 6f 66 20 74 68 65 20 70 72 65   text of the pre
2c7b0 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20  pared statement 
2c7c0 6f 72 20 61 6e 20 53 51 4c 20 63 6f 6d 6d 65 6e  or an SQL commen
2c7d0 74 20 0a 2a 2a 20 74 68 61 74 20 69 6e 64 69 63  t .** that indic
2c7e0 61 74 65 73 20 74 68 65 20 69 6e 76 6f 63 61 74  ates the invocat
2c7f0 69 6f 6e 20 6f 66 20 61 20 74 72 69 67 67 65 72  ion of a trigger
2c800 2e 20 20 5e 54 68 65 20 63 61 6c 6c 62 61 63 6b  .  ^The callback
2c810 20 63 61 6e 20 63 6f 6d 70 75 74 65 0a 2a 2a 20   can compute.** 
2c820 74 68 65 20 73 61 6d 65 20 74 65 78 74 20 74 68  the same text th
2c830 61 74 20 77 6f 75 6c 64 20 68 61 76 65 20 62 65  at would have be
2c840 65 6e 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  en returned by t
2c850 68 65 20 6c 65 67 61 63 79 20 5b 73 71 6c 69 74  he legacy [sqlit
2c860 65 33 5f 74 72 61 63 65 28 29 5d 0a 2a 2a 20 69  e3_trace()].** i
2c870 6e 74 65 72 66 61 63 65 20 62 79 20 75 73 69 6e  nterface by usin
2c880 67 20 74 68 65 20 58 20 61 72 67 75 6d 65 6e 74  g the X argument
2c890 20 77 68 65 6e 20 58 20 62 65 67 69 6e 73 20 77   when X begins w
2c8a0 69 74 68 20 22 2d 2d 22 20 61 6e 64 20 69 6e 76  ith "--" and inv
2c8b0 6f 6b 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65  oking.** [sqlite
2c8c0 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28 50  3_expanded_sql(P
2c8d0 29 5d 20 6f 74 68 65 72 77 69 73 65 2e 0a 2a 2a  )] otherwise..**
2c8e0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 54 52 41  .** [[SQLITE_TRA
2c8f0 43 45 5f 50 52 4f 46 49 4c 45 5d 5d 20 3c 64 74  CE_PROFILE]] <dt
2c900 3e 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 50 52  >SQLITE_TRACE_PR
2c910 4f 46 49 4c 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  OFILE</dt>.** <d
2c920 64 3e 5e 41 6e 20 53 51 4c 49 54 45 5f 54 52 41  d>^An SQLITE_TRA
2c930 43 45 5f 50 52 4f 46 49 4c 45 20 63 61 6c 6c 62  CE_PROFILE callb
2c940 61 63 6b 20 70 72 6f 76 69 64 65 73 20 61 70 70  ack provides app
2c950 72 6f 78 69 6d 61 74 65 6c 79 20 74 68 65 20 73  roximately the s
2c960 61 6d 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69  ame.** informati
2c970 6f 6e 20 61 73 20 69 73 20 70 72 6f 76 69 64 65  on as is provide
2c980 64 20 62 79 20 74 68 65 20 5b 73 71 6c 69 74 65  d by the [sqlite
2c990 33 5f 70 72 6f 66 69 6c 65 28 29 5d 20 63 61 6c  3_profile()] cal
2c9a0 6c 62 61 63 6b 2e 0a 2a 2a 20 5e 54 68 65 20 50  lback..** ^The P
2c9b0 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 70   argument is a p
2c9c0 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 5b 70  ointer to the [p
2c9d0 72 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e  repared statemen
2c9e0 74 5d 20 61 6e 64 20 74 68 65 0a 2a 2a 20 58 20  t] and the.** X 
2c9f0 61 72 67 75 6d 65 6e 74 20 70 6f 69 6e 74 73 20  argument points 
2ca00 74 6f 20 61 20 36 34 2d 62 69 74 20 69 6e 74 65  to a 64-bit inte
2ca10 67 65 72 20 77 68 69 63 68 20 69 73 20 74 68 65  ger which is the
2ca20 20 65 73 74 69 6d 61 74 65 64 20 6f 66 0a 2a 2a   estimated of.**
2ca30 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6e   the number of n
2ca40 61 6e 6f 73 65 63 6f 6e 64 20 74 68 61 74 20 74  anosecond that t
2ca50 68 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74  he prepared stat
2ca60 65 6d 65 6e 74 20 74 6f 6f 6b 20 74 6f 20 72 75  ement took to ru
2ca70 6e 2e 0a 2a 2a 20 5e 54 68 65 20 53 51 4c 49 54  n..** ^The SQLIT
2ca80 45 5f 54 52 41 43 45 5f 50 52 4f 46 49 4c 45 20  E_TRACE_PROFILE 
2ca90 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f  callback is invo
2caa0 6b 65 64 20 77 68 65 6e 20 74 68 65 20 73 74 61  ked when the sta
2cab0 74 65 6d 65 6e 74 20 66 69 6e 69 73 68 65 73 2e  tement finishes.
2cac0 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f  .**.** [[SQLITE_
2cad0 54 52 41 43 45 5f 52 4f 57 5d 5d 20 3c 64 74 3e  TRACE_ROW]] <dt>
2cae0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f 57  SQLITE_TRACE_ROW
2caf0 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 5e 41 6e  </dt>.** <dd>^An
2cb00 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 52 4f   SQLITE_TRACE_RO
2cb10 57 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e  W callback is in
2cb20 76 6f 6b 65 64 20 77 68 65 6e 65 76 65 72 20 61  voked whenever a
2cb30 20 70 72 65 70 61 72 65 64 0a 2a 2a 20 73 74 61   prepared.** sta
2cb40 74 65 6d 65 6e 74 20 67 65 6e 65 72 61 74 65 73  tement generates
2cb50 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66   a single row of
2cb60 20 72 65 73 75 6c 74 2e 20 20 0a 2a 2a 20 5e 54   result.  .** ^T
2cb70 68 65 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73  he P argument is
2cb80 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68   a pointer to th
2cb90 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
2cba0 65 6d 65 6e 74 5d 20 61 6e 64 20 74 68 65 0a 2a  ement] and the.*
2cbb0 2a 20 58 20 61 72 67 75 6d 65 6e 74 20 69 73 20  * X argument is 
2cbc0 75 6e 75 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b 5b  unused..**.** [[
2cbd0 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c 4f  SQLITE_TRACE_CLO
2cbe0 53 45 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45 5f  SE]] <dt>SQLITE_
2cbf0 54 52 41 43 45 5f 43 4c 4f 53 45 3c 2f 64 74 3e  TRACE_CLOSE</dt>
2cc00 0a 2a 2a 20 3c 64 64 3e 5e 41 6e 20 53 51 4c 49  .** <dd>^An SQLI
2cc10 54 45 5f 54 52 41 43 45 5f 43 4c 4f 53 45 20 63  TE_TRACE_CLOSE c
2cc20 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 6f 6b  allback is invok
2cc30 65 64 20 77 68 65 6e 20 61 20 64 61 74 61 62 61  ed when a databa
2cc40 73 65 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e  se.** connection
2cc50 20 63 6c 6f 73 65 73 2e 0a 2a 2a 20 5e 54 68 65   closes..** ^The
2cc60 20 50 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61   P argument is a
2cc70 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20   pointer to the 
2cc80 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
2cc90 74 69 6f 6e 5d 20 6f 62 6a 65 63 74 0a 2a 2a 20  tion] object.** 
2cca0 61 6e 64 20 74 68 65 20 58 20 61 72 67 75 6d 65  and the X argume
2ccb0 6e 74 20 69 73 20 75 6e 75 73 65 64 2e 0a 2a 2a  nt is unused..**
2ccc0 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64 65 66 69 6e   </dl>.*/.#defin
2ccd0 65 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 53  e SQLITE_TRACE_S
2cce0 54 4d 54 20 20 20 20 20 20 20 30 78 30 31 0a 23  TMT       0x01.#
2ccf0 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52  define SQLITE_TR
2cd00 41 43 45 5f 50 52 4f 46 49 4c 45 20 20 20 20 30  ACE_PROFILE    0
2cd10 78 30 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  x02.#define SQLI
2cd20 54 45 5f 54 52 41 43 45 5f 52 4f 57 20 20 20 20  TE_TRACE_ROW    
2cd30 20 20 20 20 30 78 30 34 0a 23 64 65 66 69 6e 65      0x04.#define
2cd40 20 53 51 4c 49 54 45 5f 54 52 41 43 45 5f 43 4c   SQLITE_TRACE_CL
2cd50 4f 53 45 20 20 20 20 20 20 30 78 30 38 0a 0a 2f  OSE      0x08../
2cd60 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53  *.** CAPI3REF: S
2cd70 51 4c 20 54 72 61 63 65 20 48 6f 6f 6b 0a 2a 2a  QL Trace Hook.**
2cd80 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
2cd90 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
2cda0 74 65 33 5f 74 72 61 63 65 5f 76 32 28 44 2c 4d  te3_trace_v2(D,M
2cdb0 2c 58 2c 50 29 20 69 6e 74 65 72 66 61 63 65 20  ,X,P) interface 
2cdc0 72 65 67 69 73 74 65 72 73 20 61 20 74 72 61 63  registers a trac
2cdd0 65 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75  e callback.** fu
2cde0 6e 63 74 69 6f 6e 20 58 20 61 67 61 69 6e 73 74  nction X against
2cdf0 20 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65   [database conne
2ce00 63 74 69 6f 6e 5d 20 44 2c 20 75 73 69 6e 67 20  ction] D, using 
2ce10 70 72 6f 70 65 72 74 79 20 6d 61 73 6b 20 4d 0a  property mask M.
2ce20 2a 2a 20 61 6e 64 20 63 6f 6e 74 65 78 74 20 70  ** and context p
2ce30 6f 69 6e 74 65 72 20 50 2e 20 20 5e 49 66 20 74  ointer P.  ^If t
2ce40 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69 73  he X callback is
2ce50 0a 2a 2a 20 4e 55 4c 4c 20 6f 72 20 69 66 20 74  .** NULL or if t
2ce60 68 65 20 4d 20 6d 61 73 6b 20 69 73 20 7a 65 72  he M mask is zer
2ce70 6f 2c 20 74 68 65 6e 20 74 72 61 63 69 6e 67 20  o, then tracing 
2ce80 69 73 20 64 69 73 61 62 6c 65 64 2e 20 20 54 68  is disabled.  Th
2ce90 65 0a 2a 2a 20 4d 20 61 72 67 75 6d 65 6e 74 20  e.** M argument 
2cea0 73 68 6f 75 6c 64 20 62 65 20 74 68 65 20 62 69  should be the bi
2ceb0 74 77 69 73 65 20 4f 52 2d 65 64 20 63 6f 6d 62  twise OR-ed comb
2cec0 69 6e 61 74 69 6f 6e 20 6f 66 0a 2a 2a 20 7a 65  ination of.** ze
2ced0 72 6f 20 6f 72 20 6d 6f 72 65 20 5b 53 51 4c 49  ro or more [SQLI
2cee0 54 45 5f 54 52 41 43 45 5d 20 63 6f 6e 73 74 61  TE_TRACE] consta
2cef0 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 45 61 63 68  nts..**.** ^Each
2cf00 20 63 61 6c 6c 20 74 6f 20 65 69 74 68 65 72 20   call to either 
2cf10 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29 20  sqlite3_trace() 
2cf20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  or sqlite3_trace
2cf30 5f 76 32 28 29 20 6f 76 65 72 72 69 64 65 73 20  _v2() overrides 
2cf40 0a 2a 2a 20 28 63 61 6e 63 65 6c 73 29 20 61 6e  .** (cancels) an
2cf50 79 20 70 72 69 6f 72 20 63 61 6c 6c 73 20 74 6f  y prior calls to
2cf60 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65 28 29   sqlite3_trace()
2cf70 20 6f 72 20 73 71 6c 69 74 65 33 5f 74 72 61 63   or sqlite3_trac
2cf80 65 5f 76 32 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 54  e_v2()..**.** ^T
2cf90 68 65 20 58 20 63 61 6c 6c 62 61 63 6b 20 69 73  he X callback is
2cfa0 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 65 76 65   invoked wheneve
2cfb0 72 20 61 6e 79 20 6f 66 20 74 68 65 20 65 76 65  r any of the eve
2cfc0 6e 74 73 20 69 64 65 6e 74 69 66 69 65 64 20 62  nts identified b
2cfd0 79 20 0a 2a 2a 20 6d 61 73 6b 20 4d 20 6f 63 63  y .** mask M occ
2cfe0 75 72 2e 20 20 5e 54 68 65 20 69 6e 74 65 67 65  ur.  ^The intege
2cff0 72 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 66  r return value f
2d000 72 6f 6d 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  rom the callback
2d010 20 69 73 20 63 75 72 72 65 6e 74 6c 79 0a 2a 2a   is currently.**
2d020 20 69 67 6e 6f 72 65 64 2c 20 74 68 6f 75 67 68   ignored, though
2d030 20 74 68 69 73 20 6d 61 79 20 63 68 61 6e 67 65   this may change
2d040 20 69 6e 20 66 75 74 75 72 65 20 72 65 6c 65 61   in future relea
2d050 73 65 73 2e 20 20 43 61 6c 6c 62 61 63 6b 0a 2a  ses.  Callback.*
2d060 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  * implementation
2d070 73 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20  s should return 
2d080 7a 65 72 6f 20 74 6f 20 65 6e 73 75 72 65 20 66  zero to ensure f
2d090 75 74 75 72 65 20 63 6f 6d 70 61 74 69 62 69 6c  uture compatibil
2d0a0 69 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 41 20 74 72  ity..**.** ^A tr
2d0b0 61 63 65 20 63 61 6c 6c 62 61 63 6b 20 69 73 20  ace callback is 
2d0c0 69 6e 76 6f 6b 65 64 20 77 69 74 68 20 66 6f 75  invoked with fou
2d0d0 72 20 61 72 67 75 6d 65 6e 74 73 3a 20 63 61 6c  r arguments: cal
2d0e0 6c 62 61 63 6b 28 54 2c 43 2c 50 2c 58 29 2e 0a  lback(T,C,P,X)..
2d0f0 2a 2a 20 5e 54 68 65 20 54 20 61 72 67 75 6d 65  ** ^The T argume
2d100 6e 74 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65  nt is one of the
2d110 20 5b 53 51 4c 49 54 45 5f 54 52 41 43 45 5d 0a   [SQLITE_TRACE].
2d120 2a 2a 20 63 6f 6e 73 74 61 6e 74 73 20 74 6f 20  ** constants to 
2d130 69 6e 64 69 63 61 74 65 20 77 68 79 20 74 68 65  indicate why the
2d140 20 63 61 6c 6c 62 61 63 6b 20 77 61 73 20 69 6e   callback was in
2d150 76 6f 6b 65 64 2e 0a 2a 2a 20 5e 54 68 65 20 43  voked..** ^The C
2d160 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 63   argument is a c
2d170 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 6e 74 65  opy of the conte
2d180 78 74 20 70 6f 69 6e 74 65 72 2e 0a 2a 2a 20 54  xt pointer..** T
2d190 68 65 20 50 20 61 6e 64 20 58 20 61 72 67 75 6d  he P and X argum
2d1a0 65 6e 74 73 20 61 72 65 20 70 6f 69 6e 74 65 72  ents are pointer
2d1b0 73 20 77 68 6f 73 65 20 6d 65 61 6e 69 6e 67 73  s whose meanings
2d1c0 20 64 65 70 65 6e 64 20 6f 6e 20 54 2e 0a 2a 2a   depend on T..**
2d1d0 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f  .** The sqlite3_
2d1e0 74 72 61 63 65 5f 76 32 28 29 20 69 6e 74 65 72  trace_v2() inter
2d1f0 66 61 63 65 20 69 73 20 69 6e 74 65 6e 64 65 64  face is intended
2d200 20 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20   to replace the 
2d210 6c 65 67 61 63 79 0a 2a 2a 20 69 6e 74 65 72 66  legacy.** interf
2d220 61 63 65 73 20 5b 73 71 6c 69 74 65 33 5f 74 72  aces [sqlite3_tr
2d230 61 63 65 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69  ace()] and [sqli
2d240 74 65 33 5f 70 72 6f 66 69 6c 65 28 29 5d 2c 20  te3_profile()], 
2d250 62 6f 74 68 20 6f 66 20 77 68 69 63 68 0a 2a 2a  both of which.**
2d260 20 61 72 65 20 64 65 70 72 65 63 61 74 65 64 2e   are deprecated.
2d270 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
2d280 6e 74 20 73 71 6c 69 74 65 33 5f 74 72 61 63 65  nt sqlite3_trace
2d290 5f 76 32 28 0a 20 20 73 71 6c 69 74 65 33 2a 2c  _v2(.  sqlite3*,
2d2a0 0a 20 20 75 6e 73 69 67 6e 65 64 20 75 4d 61 73  .  unsigned uMas
2d2b0 6b 2c 0a 20 20 69 6e 74 28 2a 78 43 61 6c 6c 62  k,.  int(*xCallb
2d2c0 61 63 6b 29 28 75 6e 73 69 67 6e 65 64 2c 76 6f  ack)(unsigned,vo
2d2d0 69 64 2a 2c 76 6f 69 64 2a 2c 76 6f 69 64 2a 29  id*,void*,void*)
2d2e0 2c 0a 20 20 76 6f 69 64 20 2a 70 43 74 78 0a 29  ,.  void *pCtx.)
2d2f0 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45  ;../*.** CAPI3RE
2d300 46 3a 20 51 75 65 72 79 20 50 72 6f 67 72 65 73  F: Query Progres
2d310 73 20 43 61 6c 6c 62 61 63 6b 73 0a 2a 2a 20 4d  s Callbacks.** M
2d320 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
2d330 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65  *.** ^The sqlite
2d340 33 5f 70 72 6f 67 72 65 73 73 5f 68 61 6e 64 6c  3_progress_handl
2d350 65 72 28 44 2c 4e 2c 58 2c 50 29 20 69 6e 74 65  er(D,N,X,P) inte
2d360 72 66 61 63 65 20 63 61 75 73 65 73 20 74 68 65  rface causes the
2d370 20 63 61 6c 6c 62 61 63 6b 0a 2a 2a 20 66 75 6e   callback.** fun
2d380 63 74 69 6f 6e 20 58 20 74 6f 20 62 65 20 69 6e  ction X to be in
2d390 76 6f 6b 65 64 20 70 65 72 69 6f 64 69 63 61 6c  voked periodical
2d3a0 6c 79 20 64 75 72 69 6e 67 20 6c 6f 6e 67 20 72  ly during long r
2d3b0 75 6e 6e 69 6e 67 20 63 61 6c 6c 73 20 74 6f 0a  unning calls to.
2d3c0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 65 78 65 63  ** [sqlite3_exec
2d3d0 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 73 74  ()], [sqlite3_st
2d3e0 65 70 28 29 5d 20 61 6e 64 20 5b 73 71 6c 69 74  ep()] and [sqlit
2d3f0 65 33 5f 67 65 74 5f 74 61 62 6c 65 28 29 5d 20  e3_get_table()] 
2d400 66 6f 72 0a 2a 2a 20 64 61 74 61 62 61 73 65 20  for.** database 
2d410 63 6f 6e 6e 65 63 74 69 6f 6e 20 44 2e 20 20 41  connection D.  A
2d420 6e 20 65 78 61 6d 70 6c 65 20 75 73 65 20 66 6f  n example use fo
2d430 72 20 74 68 69 73 0a 2a 2a 20 69 6e 74 65 72 66  r this.** interf
2d440 61 63 65 20 69 73 20 74 6f 20 6b 65 65 70 20 61  ace is to keep a
2d450 20 47 55 49 20 75 70 64 61 74 65 64 20 64 75 72   GUI updated dur
2d460 69 6e 67 20 61 20 6c 61 72 67 65 20 71 75 65 72  ing a large quer
2d470 79 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 70 61  y..**.** ^The pa
2d480 72 61 6d 65 74 65 72 20 50 20 69 73 20 70 61 73  rameter P is pas
2d490 73 65 64 20 74 68 72 6f 75 67 68 20 61 73 20 74  sed through as t
2d4a0 68 65 20 6f 6e 6c 79 20 70 61 72 61 6d 65 74 65  he only paramete
2d4b0 72 20 74 6f 20 74 68 65 20 0a 2a 2a 20 63 61 6c  r to the .** cal
2d4c0 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 58  lback function X
2d4d0 2e 20 20 5e 54 68 65 20 70 61 72 61 6d 65 74 65  .  ^The paramete
2d4e0 72 20 4e 20 69 73 20 74 68 65 20 61 70 70 72 6f  r N is the appro
2d4f0 78 69 6d 61 74 65 20 6e 75 6d 62 65 72 20 6f 66  ximate number of
2d500 20 0a 2a 2a 20 5b 76 69 72 74 75 61 6c 20 6d 61   .** [virtual ma
2d510 63 68 69 6e 65 20 69 6e 73 74 72 75 63 74 69 6f  chine instructio
2d520 6e 73 5d 20 74 68 61 74 20 61 72 65 20 65 76 61  ns] that are eva
2d530 6c 75 61 74 65 64 20 62 65 74 77 65 65 6e 20 73  luated between s
2d540 75 63 63 65 73 73 69 76 65 0a 2a 2a 20 69 6e 76  uccessive.** inv
2d550 6f 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20  ocations of the 
2d560 63 61 6c 6c 62 61 63 6b 20 58 2e 20 20 5e 49 66  callback X.  ^If
2d570 20 4e 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20   N is less than 
2d580 6f 6e 65 20 74 68 65 6e 20 74 68 65 20 70 72 6f  one then the pro
2d590 67 72 65 73 73 0a 2a 2a 20 68 61 6e 64 6c 65 72  gress.** handler
2d5a0 20 69 73 20 64 69 73 61 62 6c 65 64 2e 0a 2a 2a   is disabled..**
2d5b0 0a 2a 2a 20 5e 4f 6e 6c 79 20 61 20 73 69 6e 67  .** ^Only a sing
2d5c0 6c 65 20 70 72 6f 67 72 65 73 73 20 68 61 6e 64  le progress hand
2d5d0 6c 65 72 20 6d 61 79 20 62 65 20 64 65 66 69 6e  ler may be defin
2d5e0 65 64 20 61 74 20 6f 6e 65 20 74 69 6d 65 20 70  ed at one time p
2d5f0 65 72 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20  er.** [database 
2d600 63 6f 6e 6e 65 63 74 69 6f 6e 5d 3b 20 73 65 74  connection]; set
2d610 74 69 6e 67 20 61 20 6e 65 77 20 70 72 6f 67 72  ting a new progr
2d620 65 73 73 20 68 61 6e 64 6c 65 72 20 63 61 6e 63  ess handler canc
2d630 65 6c 73 20 74 68 65 0a 2a 2a 20 6f 6c 64 20 6f  els the.** old o
2d640 6e 65 2e 20 20 5e 53 65 74 74 69 6e 67 20 70 61  ne.  ^Setting pa
2d650 72 61 6d 65 74 65 72 20 58 20 74 6f 20 4e 55 4c  rameter X to NUL
2d660 4c 20 64 69 73 61 62 6c 65 73 20 74 68 65 20 70  L disables the p
2d670 72 6f 67 72 65 73 73 20 68 61 6e 64 6c 65 72 2e  rogress handler.
2d680 0a 2a 2a 20 5e 54 68 65 20 70 72 6f 67 72 65 73  .** ^The progres
2d690 73 20 68 61 6e 64 6c 65 72 20 69 73 20 61 6c 73  s handler is als
2d6a0 6f 20 64 69 73 61 62 6c 65 64 20 62 79 20 73 65  o disabled by se
2d6b0 74 74 69 6e 67 20 4e 20 74 6f 20 61 20 76 61 6c  tting N to a val
2d6c0 75 65 20 6c 65 73 73 0a 2a 2a 20 74 68 61 6e 20  ue less.** than 
2d6d0 31 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  1..**.** ^If the
2d6e0 20 70 72 6f 67 72 65 73 73 20 63 61 6c 6c 62 61   progress callba
2d6f0 63 6b 20 72 65 74 75 72 6e 73 20 6e 6f 6e 2d 7a  ck returns non-z
2d700 65 72 6f 2c 20 74 68 65 20 6f 70 65 72 61 74 69  ero, the operati
2d710 6f 6e 20 69 73 0a 2a 2a 20 69 6e 74 65 72 72 75  on is.** interru
2d720 70 74 65 64 2e 20 20 54 68 69 73 20 66 65 61 74  pted.  This feat
2d730 75 72 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  ure can be used 
2d740 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 0a 2a  to implement a.*
2d750 2a 20 22 43 61 6e 63 65 6c 22 20 62 75 74 74 6f  * "Cancel" butto
2d760 6e 20 6f 6e 20 61 20 47 55 49 20 70 72 6f 67 72  n on a GUI progr
2d770 65 73 73 20 64 69 61 6c 6f 67 20 62 6f 78 2e 0a  ess dialog box..
2d780 2a 2a 0a 2a 2a 20 54 68 65 20 70 72 6f 67 72 65  **.** The progre
2d790 73 73 20 68 61 6e 64 6c 65 72 20 63 61 6c 6c 62  ss handler callb
2d7a0 61 63 6b 20 6d 75 73 74 20 6e 6f 74 20 64 6f 20  ack must not do 
2d7b0 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 77 69  anything that wi
2d7c0 6c 6c 20 6d 6f 64 69 66 79 0a 2a 2a 20 74 68 65  ll modify.** the
2d7d0 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
2d7e0 74 69 6f 6e 20 74 68 61 74 20 69 6e 76 6f 6b 65  tion that invoke
2d7f0 64 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 68  d the progress h
2d800 61 6e 64 6c 65 72 2e 0a 2a 2a 20 4e 6f 74 65 20  andler..** Note 
2d810 74 68 61 74 20 5b 73 71 6c 69 74 65 33 5f 70 72  that [sqlite3_pr
2d820 65 70 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20  epare_v2()] and 
2d830 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
2d840 20 62 6f 74 68 20 6d 6f 64 69 66 79 20 74 68 65   both modify the
2d850 69 72 0a 2a 2a 20 64 61 74 61 62 61 73 65 20 63  ir.** database c
2d860 6f 6e 6e 65 63 74 69 6f 6e 73 20 66 6f 72 20 74  onnections for t
2d870 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 22 6d  he meaning of "m
2d880 6f 64 69 66 79 22 20 69 6e 20 74 68 69 73 20 70  odify" in this p
2d890 61 72 61 67 72 61 70 68 2e 0a 2a 2a 0a 2a 2f 0a  aragraph..**.*/.
2d8a0 53 51 4c 49 54 45 5f 41 50 49 20 76 6f 69 64 20  SQLITE_API void 
2d8b0 73 71 6c 69 74 65 33 5f 70 72 6f 67 72 65 73 73  sqlite3_progress
2d8c0 5f 68 61 6e 64 6c 65 72 28 73 71 6c 69 74 65 33  _handler(sqlite3
2d8d0 2a 2c 20 69 6e 74 2c 20 69 6e 74 28 2a 29 28 76  *, int, int(*)(v
2d8e0 6f 69 64 2a 29 2c 20 76 6f 69 64 2a 29 3b 0a 0a  oid*), void*);..
2d8f0 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20  /*.** CAPI3REF: 
2d900 4f 70 65 6e 69 6e 67 20 41 20 4e 65 77 20 44 61  Opening A New Da
2d910 74 61 62 61 73 65 20 43 6f 6e 6e 65 63 74 69 6f  tabase Connectio
2d920 6e 0a 2a 2a 20 43 4f 4e 53 54 52 55 43 54 4f 52  n.** CONSTRUCTOR
2d930 3a 20 73 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20  : sqlite3.**.** 
2d940 5e 54 68 65 73 65 20 72 6f 75 74 69 6e 65 73 20  ^These routines 
2d950 6f 70 65 6e 20 61 6e 20 53 51 4c 69 74 65 20 64  open an SQLite d
2d960 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 73 20  atabase file as 
2d970 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
2d980 20 0a 2a 2a 20 66 69 6c 65 6e 61 6d 65 20 61 72   .** filename ar
2d990 67 75 6d 65 6e 74 2e 20 5e 54 68 65 20 66 69 6c  gument. ^The fil
2d9a0 65 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 20 69  ename argument i
2d9b0 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73  s interpreted as
2d9c0 20 55 54 46 2d 38 20 66 6f 72 0a 2a 2a 20 73 71   UTF-8 for.** sq
2d9d0 6c 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64  lite3_open() and
2d9e0 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32   sqlite3_open_v2
2d9f0 28 29 20 61 6e 64 20 61 73 20 55 54 46 2d 31 36  () and as UTF-16
2da00 20 69 6e 20 74 68 65 20 6e 61 74 69 76 65 20 62   in the native b
2da10 79 74 65 0a 2a 2a 20 6f 72 64 65 72 20 66 6f 72  yte.** order for
2da20 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31 36 28   sqlite3_open16(
2da30 29 2e 20 5e 28 41 20 5b 64 61 74 61 62 61 73 65  ). ^(A [database
2da40 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68 61 6e   connection] han
2da50 64 6c 65 20 69 73 20 75 73 75 61 6c 6c 79 0a 2a  dle is usually.*
2da60 2a 20 72 65 74 75 72 6e 65 64 20 69 6e 20 2a 70  * returned in *p
2da70 70 44 62 2c 20 65 76 65 6e 20 69 66 20 61 6e 20  pDb, even if an 
2da80 65 72 72 6f 72 20 6f 63 63 75 72 73 2e 20 20 54  error occurs.  T
2da90 68 65 20 6f 6e 6c 79 20 65 78 63 65 70 74 69 6f  he only exceptio
2daa0 6e 20 69 73 20 74 68 61 74 0a 2a 2a 20 69 66 20  n is that.** if 
2dab0 53 51 4c 69 74 65 20 69 73 20 75 6e 61 62 6c 65  SQLite is unable
2dac0 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 6d 65 6d   to allocate mem
2dad0 6f 72 79 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  ory to hold the 
2dae0 5b 73 71 6c 69 74 65 33 5d 20 6f 62 6a 65 63 74  [sqlite3] object
2daf0 2c 0a 2a 2a 20 61 20 4e 55 4c 4c 20 77 69 6c 6c  ,.** a NULL will
2db00 20 62 65 20 77 72 69 74 74 65 6e 20 69 6e 74 6f   be written into
2db10 20 2a 70 70 44 62 20 69 6e 73 74 65 61 64 20 6f   *ppDb instead o
2db20 66 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 74  f a pointer to t
2db30 68 65 20 5b 73 71 6c 69 74 65 33 5d 0a 2a 2a 20  he [sqlite3].** 
2db40 6f 62 6a 65 63 74 2e 29 5e 20 5e 28 49 66 20 74  object.)^ ^(If t
2db50 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
2db60 70 65 6e 65 64 20 28 61 6e 64 2f 6f 72 20 63 72  pened (and/or cr
2db70 65 61 74 65 64 29 20 73 75 63 63 65 73 73 66 75  eated) successfu
2db80 6c 6c 79 2c 20 74 68 65 6e 0a 2a 2a 20 5b 53 51  lly, then.** [SQ
2db90 4c 49 54 45 5f 4f 4b 5d 20 69 73 20 72 65 74 75  LITE_OK] is retu
2dba0 72 6e 65 64 2e 20 20 4f 74 68 65 72 77 69 73 65  rned.  Otherwise
2dbb0 20 61 6e 20 5b 65 72 72 6f 72 20 63 6f 64 65 5d   an [error code]
2dbc0 20 69 73 20 72 65 74 75 72 6e 65 64 2e 29 5e 20   is returned.)^ 
2dbd0 5e 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  ^The.** [sqlite3
2dbe0 5f 65 72 72 6d 73 67 28 29 5d 20 6f 72 20 5b 73  _errmsg()] or [s
2dbf0 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28  qlite3_errmsg16(
2dc00 29 5d 20 72 6f 75 74 69 6e 65 73 20 63 61 6e 20  )] routines can 
2dc10 62 65 20 75 73 65 64 20 74 6f 20 6f 62 74 61 69  be used to obtai
2dc20 6e 0a 2a 2a 20 61 6e 20 45 6e 67 6c 69 73 68 20  n.** an English 
2dc30 6c 61 6e 67 75 61 67 65 20 64 65 73 63 72 69 70  language descrip
2dc40 74 69 6f 6e 20 6f 66 20 74 68 65 20 65 72 72 6f  tion of the erro
2dc50 72 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 20 66 61  r following a fa
2dc60 69 6c 75 72 65 20 6f 66 20 61 6e 79 0a 2a 2a 20  ilure of any.** 
2dc70 6f 66 20 74 68 65 20 73 71 6c 69 74 65 33 5f 6f  of the sqlite3_o
2dc80 70 65 6e 28 29 20 72 6f 75 74 69 6e 65 73 2e 0a  pen() routines..
2dc90 2a 2a 0a 2a 2a 20 5e 54 68 65 20 64 65 66 61 75  **.** ^The defau
2dca0 6c 74 20 65 6e 63 6f 64 69 6e 67 20 77 69 6c 6c  lt encoding will
2dcb0 20 62 65 20 55 54 46 2d 38 20 66 6f 72 20 64 61   be UTF-8 for da
2dcc0 74 61 62 61 73 65 73 20 63 72 65 61 74 65 64 20  tabases created 
2dcd0 75 73 69 6e 67 0a 2a 2a 20 73 71 6c 69 74 65 33  using.** sqlite3
2dce0 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c 69 74  _open() or sqlit
2dcf0 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 20 5e  e3_open_v2().  ^
2dd00 54 68 65 20 64 65 66 61 75 6c 74 20 65 6e 63 6f  The default enco
2dd10 64 69 6e 67 20 66 6f 72 20 64 61 74 61 62 61 73  ding for databas
2dd20 65 73 0a 2a 2a 20 63 72 65 61 74 65 64 20 75 73  es.** created us
2dd30 69 6e 67 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e  ing sqlite3_open
2dd40 31 36 28 29 20 77 69 6c 6c 20 62 65 20 55 54 46  16() will be UTF
2dd50 2d 31 36 20 69 6e 20 74 68 65 20 6e 61 74 69 76  -16 in the nativ
2dd60 65 20 62 79 74 65 20 6f 72 64 65 72 2e 0a 2a 2a  e byte order..**
2dd70 0a 2a 2a 20 57 68 65 74 68 65 72 20 6f 72 20 6e  .** Whether or n
2dd80 6f 74 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75  ot an error occu
2dd90 72 73 20 77 68 65 6e 20 69 74 20 69 73 20 6f 70  rs when it is op
2dda0 65 6e 65 64 2c 20 72 65 73 6f 75 72 63 65 73 0a  ened, resources.
2ddb0 2a 2a 20 61 73 73 6f 63 69 61 74 65 64 20 77 69  ** associated wi
2ddc0 74 68 20 74 68 65 20 5b 64 61 74 61 62 61 73 65  th the [database
2ddd0 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 68 61 6e   connection] han
2dde0 64 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 72 65  dle should be re
2ddf0 6c 65 61 73 65 64 20 62 79 0a 2a 2a 20 70 61 73  leased by.** pas
2de00 73 69 6e 67 20 69 74 20 74 6f 20 5b 73 71 6c 69  sing it to [sqli
2de10 74 65 33 5f 63 6c 6f 73 65 28 29 5d 20 77 68 65  te3_close()] whe
2de20 6e 20 69 74 20 69 73 20 6e 6f 20 6c 6f 6e 67 65  n it is no longe
2de30 72 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a  r required..**.*
2de40 2a 20 54 68 65 20 73 71 6c 69 74 65 33 5f 6f 70  * The sqlite3_op
2de50 65 6e 5f 76 32 28 29 20 69 6e 74 65 72 66 61 63  en_v2() interfac
2de60 65 20 77 6f 72 6b 73 20 6c 69 6b 65 20 73 71 6c  e works like sql
2de70 69 74 65 33 5f 6f 70 65 6e 28 29 0a 2a 2a 20 65  ite3_open().** e
2de80 78 63 65 70 74 20 74 68 61 74 20 69 74 20 61 63  xcept that it ac
2de90 63 65 70 74 73 20 74 77 6f 20 61 64 64 69 74 69  cepts two additi
2dea0 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20  onal parameters 
2deb0 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 63  for additional c
2dec0 6f 6e 74 72 6f 6c 0a 2a 2a 20 6f 76 65 72 20 74  ontrol.** over t
2ded0 68 65 20 6e 65 77 20 64 61 74 61 62 61 73 65 20  he new database 
2dee0 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 20 5e 28 54  connection.  ^(T
2def0 68 65 20 66 6c 61 67 73 20 70 61 72 61 6d 65 74  he flags paramet
2df00 65 72 20 74 6f 0a 2a 2a 20 73 71 6c 69 74 65 33  er to.** sqlite3
2df10 5f 6f 70 65 6e 5f 76 32 28 29 20 63 61 6e 20 74  _open_v2() can t
2df20 61 6b 65 20 6f 6e 65 20 6f 66 0a 2a 2a 20 74 68  ake one of.** th
2df30 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 65  e following thre
2df40 65 20 76 61 6c 75 65 73 2c 20 6f 70 74 69 6f 6e  e values, option
2df50 61 6c 6c 79 20 63 6f 6d 62 69 6e 65 64 20 77 69  ally combined wi
2df60 74 68 20 74 68 65 20 0a 2a 2a 20 5b 53 51 4c 49  th the .** [SQLI
2df70 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58 5d  TE_OPEN_NOMUTEX]
2df80 2c 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 46  , [SQLITE_OPEN_F
2df90 55 4c 4c 4d 55 54 45 58 5d 2c 20 5b 53 51 4c 49  ULLMUTEX], [SQLI
2dfa0 54 45 5f 4f 50 45 4e 5f 53 48 41 52 45 44 43 41  TE_OPEN_SHAREDCA
2dfb0 43 48 45 5d 2c 0a 2a 2a 20 5b 53 51 4c 49 54 45  CHE],.** [SQLITE
2dfc0 5f 4f 50 45 4e 5f 50 52 49 56 41 54 45 43 41 43  _OPEN_PRIVATECAC
2dfd0 48 45 5d 2c 20 61 6e 64 2f 6f 72 20 5b 53 51 4c  HE], and/or [SQL
2dfe0 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c  ITE_OPEN_URI] fl
2dff0 61 67 73 3a 29 5e 0a 2a 2a 0a 2a 2a 20 3c 64 6c  ags:)^.**.** <dl
2e000 3e 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51 4c 49  >.** ^(<dt>[SQLI
2e010 54 45 5f 4f 50 45 4e 5f 52 45 41 44 4f 4e 4c 59  TE_OPEN_READONLY
2e020 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68  ]</dt>.** <dd>Th
2e030 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70  e database is op
2e040 65 6e 65 64 20 69 6e 20 72 65 61 64 2d 6f 6e 6c  ened in read-onl
2e050 79 20 6d 6f 64 65 2e 20 20 49 66 20 74 68 65 20  y mode.  If the 
2e060 64 61 74 61 62 61 73 65 20 64 6f 65 73 20 6e 6f  database does no
2e070 74 0a 2a 2a 20 61 6c 72 65 61 64 79 20 65 78 69  t.** already exi
2e080 73 74 2c 20 61 6e 20 65 72 72 6f 72 20 69 73 20  st, an error is 
2e090 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e 29 5e  returned.</dd>)^
2e0a0 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e 5b 53 51  .**.** ^(<dt>[SQ
2e0b0 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52  LITE_OPEN_READWR
2e0c0 49 54 45 5d 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  ITE]</dt>.** <dd
2e0d0 3e 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73  >The database is
2e0e0 20 6f 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64   opened for read
2e0f0 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 20  ing and writing 
2e100 69 66 20 70 6f 73 73 69 62 6c 65 2c 20 6f 72 20  if possible, or 
2e110 72 65 61 64 69 6e 67 0a 2a 2a 20 6f 6e 6c 79 20  reading.** only 
2e120 69 66 20 74 68 65 20 66 69 6c 65 20 69 73 20 77  if the file is w
2e130 72 69 74 65 20 70 72 6f 74 65 63 74 65 64 20 62  rite protected b
2e140 79 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20  y the operating 
2e150 73 79 73 74 65 6d 2e 20 20 49 6e 20 65 69 74 68  system.  In eith
2e160 65 72 0a 2a 2a 20 63 61 73 65 20 74 68 65 20 64  er.** case the d
2e170 61 74 61 62 61 73 65 20 6d 75 73 74 20 61 6c 72  atabase must alr
2e180 65 61 64 79 20 65 78 69 73 74 2c 20 6f 74 68 65  eady exist, othe
2e190 72 77 69 73 65 20 61 6e 20 65 72 72 6f 72 20 69  rwise an error i
2e1a0 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64 3e  s returned.</dd>
2e1b0 29 5e 0a 2a 2a 0a 2a 2a 20 5e 28 3c 64 74 3e 5b  )^.**.** ^(<dt>[
2e1c0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
2e1d0 57 52 49 54 45 5d 20 7c 20 5b 53 51 4c 49 54 45  WRITE] | [SQLITE
2e1e0 5f 4f 50 45 4e 5f 43 52 45 41 54 45 5d 3c 2f 64  _OPEN_CREATE]</d
2e1f0 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 64 61  t>.** <dd>The da
2e200 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
2e210 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64   for reading and
2e220 20 77 72 69 74 69 6e 67 2c 20 61 6e 64 20 69 73   writing, and is
2e230 20 63 72 65 61 74 65 64 20 69 66 0a 2a 2a 20 69   created if.** i
2e240 74 20 64 6f 65 73 20 6e 6f 74 20 61 6c 72 65 61  t does not alrea
2e250 64 79 20 65 78 69 73 74 2e 20 54 68 69 73 20 69  dy exist. This i
2e260 73 20 74 68 65 20 62 65 68 61 76 69 6f 72 20 74  s the behavior t
2e270 68 61 74 20 69 73 20 61 6c 77 61 79 73 20 75 73  hat is always us
2e280 65 64 20 66 6f 72 0a 2a 2a 20 73 71 6c 69 74 65  ed for.** sqlite
2e290 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20 73 71 6c  3_open() and sql
2e2a0 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 2e 3c 2f  ite3_open16().</
2e2b0 64 64 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a  dd>)^.** </dl>.*
2e2c0 2a 0a 2a 2a 20 49 66 20 74 68 65 20 33 72 64 20  *.** If the 3rd 
2e2d0 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
2e2e0 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20 69  ite3_open_v2() i
2e2f0 73 20 6e 6f 74 20 6f 6e 65 20 6f 66 20 74 68 65  s not one of the
2e300 0a 2a 2a 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73  .** combinations
2e310 20 73 68 6f 77 6e 20 61 62 6f 76 65 20 6f 70 74   shown above opt
2e320 69 6f 6e 61 6c 6c 79 20 63 6f 6d 62 69 6e 65 64  ionally combined
2e330 20 77 69 74 68 20 6f 74 68 65 72 0a 2a 2a 20 5b   with other.** [
2e340 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45 41 44  SQLITE_OPEN_READ
2e350 4f 4e 4c 59 20 7c 20 53 51 4c 49 54 45 5f 4f 50  ONLY | SQLITE_OP
2e360 45 4e 5f 2a 20 62 69 74 73 5d 0a 2a 2a 20 74 68  EN_* bits].** th
2e370 65 6e 20 74 68 65 20 62 65 68 61 76 69 6f 72 20  en the behavior 
2e380 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a  is undefined..**
2e390 0a 2a 2a 20 5e 49 66 20 74 68 65 20 5b 53 51 4c  .** ^If the [SQL
2e3a0 49 54 45 5f 4f 50 45 4e 5f 4e 4f 4d 55 54 45 58  ITE_OPEN_NOMUTEX
2e3b0 5d 20 66 6c 61 67 20 69 73 20 73 65 74 2c 20 74  ] flag is set, t
2e3c0 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
2e3d0 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 2a 2a 20 6f   connection.** o
2e3e0 70 65 6e 73 20 69 6e 20 74 68 65 20 6d 75 6c 74  pens in the mult
2e3f0 69 2d 74 68 72 65 61 64 20 5b 74 68 72 65 61 64  i-thread [thread
2e400 69 6e 67 20 6d 6f 64 65 5d 20 61 73 20 6c 6f 6e  ing mode] as lon
2e410 67 20 61 73 20 74 68 65 20 73 69 6e 67 6c 65 2d  g as the single-
2e420 74 68 72 65 61 64 0a 2a 2a 20 6d 6f 64 65 20 68  thread.** mode h
2e430 61 73 20 6e 6f 74 20 62 65 65 6e 20 73 65 74 20  as not been set 
2e440 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  at compile-time 
2e450 6f 72 20 73 74 61 72 74 2d 74 69 6d 65 2e 20 20  or start-time.  
2e460 5e 49 66 20 74 68 65 0a 2a 2a 20 5b 53 51 4c 49  ^If the.** [SQLI
2e470 54 45 5f 4f 50 45 4e 5f 46 55 4c 4c 4d 55 54 45  TE_OPEN_FULLMUTE
2e480 58 5d 20 66 6c 61 67 20 69 73 20 73 65 74 20 74  X] flag is set t
2e490 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
2e4a0 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6f 70 65 6e   connection open
2e4b0 73 0a 2a 2a 20 69 6e 20 74 68 65 20 73 65 72 69  s.** in the seri
2e4c0 61 6c 69 7a 65 64 20 5b 74 68 72 65 61 64 69 6e  alized [threadin
2e4d0 67 20 6d 6f 64 65 5d 20 75 6e 6c 65 73 73 20 73  g mode] unless s
2e4e0 69 6e 67 6c 65 2d 74 68 72 65 61 64 20 77 61 73  ingle-thread was
2e4f0 0a 2a 2a 20 70 72 65 76 69 6f 75 73 6c 79 20 73  .** previously s
2e500 65 6c 65 63 74 65 64 20 61 74 20 63 6f 6d 70 69  elected at compi
2e510 6c 65 2d 74 69 6d 65 20 6f 72 20 73 74 61 72 74  le-time or start
2e520 2d 74 69 6d 65 2e 0a 2a 2a 20 5e 54 68 65 20 5b  -time..** ^The [
2e530 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52  SQLITE_OPEN_SHAR
2e540 45 44 43 41 43 48 45 5d 20 66 6c 61 67 20 63 61  EDCACHE] flag ca
2e550 75 73 65 73 20 74 68 65 20 64 61 74 61 62 61 73  uses the databas
2e560 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20  e connection to 
2e570 62 65 0a 2a 2a 20 65 6c 69 67 69 62 6c 65 20 74  be.** eligible t
2e580 6f 20 75 73 65 20 5b 73 68 61 72 65 64 20 63 61  o use [shared ca
2e590 63 68 65 20 6d 6f 64 65 5d 2c 20 72 65 67 61 72  che mode], regar
2e5a0 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72  dless of whether
2e5b0 20 6f 72 20 6e 6f 74 20 73 68 61 72 65 64 0a 2a   or not shared.*
2e5c0 2a 20 63 61 63 68 65 20 69 73 20 65 6e 61 62 6c  * cache is enabl
2e5d0 65 64 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65  ed using [sqlite
2e5e0 33 5f 65 6e 61 62 6c 65 5f 73 68 61 72 65 64 5f  3_enable_shared_
2e5f0 63 61 63 68 65 28 29 5d 2e 20 20 5e 54 68 65 0a  cache()].  ^The.
2e600 2a 2a 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f  ** [SQLITE_OPEN_
2e610 50 52 49 56 41 54 45 43 41 43 48 45 5d 20 66 6c  PRIVATECACHE] fl
2e620 61 67 20 63 61 75 73 65 73 20 74 68 65 20 64 61  ag causes the da
2e630 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e640 6e 20 74 6f 20 6e 6f 74 0a 2a 2a 20 70 61 72 74  n to not.** part
2e650 69 63 69 70 61 74 65 20 69 6e 20 5b 73 68 61 72  icipate in [shar
2e660 65 64 20 63 61 63 68 65 20 6d 6f 64 65 5d 20 65  ed cache mode] e
2e670 76 65 6e 20 69 66 20 69 74 20 69 73 20 65 6e 61  ven if it is ena
2e680 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  bled..**.** ^The
2e690 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65 74 65   fourth paramete
2e6a0 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65  r to sqlite3_ope
2e6b0 6e 5f 76 32 28 29 20 69 73 20 74 68 65 20 6e 61  n_v2() is the na
2e6c0 6d 65 20 6f 66 20 74 68 65 0a 2a 2a 20 5b 73 71  me of the.** [sq
2e6d0 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65 63  lite3_vfs] objec
2e6e0 74 20 74 68 61 74 20 64 65 66 69 6e 65 73 20 74  t that defines t
2e6f0 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
2e700 74 65 6d 20 69 6e 74 65 72 66 61 63 65 20 74 68  tem interface th
2e710 61 74 0a 2a 2a 20 74 68 65 20 6e 65 77 20 64 61  at.** the new da
2e720 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f  tabase connectio
2e730 6e 20 73 68 6f 75 6c 64 20 75 73 65 2e 20 20 5e  n should use.  ^
2e740 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  If the fourth pa
2e750 72 61 6d 65 74 65 72 20 69 73 0a 2a 2a 20 61 20  rameter is.** a 
2e760 4e 55 4c 4c 20 70 6f 69 6e 74 65 72 20 74 68 65  NULL pointer the
2e770 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 5b 73  n the default [s
2e780 71 6c 69 74 65 33 5f 76 66 73 5d 20 6f 62 6a 65  qlite3_vfs] obje
2e790 63 74 20 69 73 20 75 73 65 64 2e 0a 2a 2a 0a 2a  ct is used..**.*
2e7a0 2a 20 5e 49 66 20 74 68 65 20 66 69 6c 65 6e 61  * ^If the filena
2e7b0 6d 65 20 69 73 20 22 3a 6d 65 6d 6f 72 79 3a 22  me is ":memory:"
2e7c0 2c 20 74 68 65 6e 20 61 20 70 72 69 76 61 74 65  , then a private
2e7d0 2c 20 74 65 6d 70 6f 72 61 72 79 20 69 6e 2d 6d  , temporary in-m
2e7e0 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 0a 2a  emory database.*
2e7f0 2a 20 69 73 20 63 72 65 61 74 65 64 20 66 6f 72  * is created for
2e800 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e   the connection.
2e810 20 20 5e 54 68 69 73 20 69 6e 2d 6d 65 6d 6f 72    ^This in-memor
2e820 79 20 64 61 74 61 62 61 73 65 20 77 69 6c 6c 20  y database will 
2e830 76 61 6e 69 73 68 20 77 68 65 6e 0a 2a 2a 20 74  vanish when.** t
2e840 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  he database conn
2e850 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73 65 64  ection is closed
2e860 2e 20 20 46 75 74 75 72 65 20 76 65 72 73 69 6f  .  Future versio
2e870 6e 73 20 6f 66 20 53 51 4c 69 74 65 20 6d 69 67  ns of SQLite mig
2e880 68 74 0a 2a 2a 20 6d 61 6b 65 20 75 73 65 20 6f  ht.** make use o
2e890 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 73 70 65  f additional spe
2e8a0 63 69 61 6c 20 66 69 6c 65 6e 61 6d 65 73 20 74  cial filenames t
2e8b0 68 61 74 20 62 65 67 69 6e 20 77 69 74 68 20 74  hat begin with t
2e8c0 68 65 20 22 3a 22 20 63 68 61 72 61 63 74 65 72  he ":" character
2e8d0 2e 0a 2a 2a 20 49 74 20 69 73 20 72 65 63 6f 6d  ..** It is recom
2e8e0 6d 65 6e 64 65 64 20 74 68 61 74 20 77 68 65 6e  mended that when
2e8f0 20 61 20 64 61 74 61 62 61 73 65 20 66 69 6c 65   a database file
2e900 6e 61 6d 65 20 61 63 74 75 61 6c 6c 79 20 64 6f  name actually do
2e910 65 73 20 62 65 67 69 6e 20 77 69 74 68 0a 2a 2a  es begin with.**
2e920 20 61 20 22 3a 22 20 63 68 61 72 61 63 74 65 72   a ":" character
2e930 20 79 6f 75 20 73 68 6f 75 6c 64 20 70 72 65 66   you should pref
2e940 69 78 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20  ix the filename 
2e950 77 69 74 68 20 61 20 70 61 74 68 6e 61 6d 65 20  with a pathname 
2e960 73 75 63 68 20 61 73 0a 2a 2a 20 22 2e 2f 22 20  such as.** "./" 
2e970 74 6f 20 61 76 6f 69 64 20 61 6d 62 69 67 75 69  to avoid ambigui
2e980 74 79 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68  ty..**.** ^If th
2e990 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61 6e  e filename is an
2e9a0 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2c 20 74   empty string, t
2e9b0 68 65 6e 20 61 20 70 72 69 76 61 74 65 2c 20 74  hen a private, t
2e9c0 65 6d 70 6f 72 61 72 79 0a 2a 2a 20 6f 6e 2d 64  emporary.** on-d
2e9d0 69 73 6b 20 64 61 74 61 62 61 73 65 20 77 69 6c  isk database wil
2e9e0 6c 20 62 65 20 63 72 65 61 74 65 64 2e 20 20 5e  l be created.  ^
2e9f0 54 68 69 73 20 70 72 69 76 61 74 65 20 64 61 74  This private dat
2ea00 61 62 61 73 65 20 77 69 6c 6c 20 62 65 0a 2a 2a  abase will be.**
2ea10 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64   automatically d
2ea20 65 6c 65 74 65 64 20 61 73 20 73 6f 6f 6e 20 61  eleted as soon a
2ea30 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63  s the database c
2ea40 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f  onnection is clo
2ea50 73 65 64 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 55 52 49  sed..**.** [[URI
2ea60 20 66 69 6c 65 6e 61 6d 65 73 20 69 6e 20 73 71   filenames in sq
2ea70 6c 69 74 65 33 5f 6f 70 65 6e 28 29 5d 5d 20 3c  lite3_open()]] <
2ea80 68 33 3e 55 52 49 20 46 69 6c 65 6e 61 6d 65 73  h3>URI Filenames
2ea90 3c 2f 68 33 3e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  </h3>.**.** ^If 
2eaa0 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 69  [URI filename] i
2eab0 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73  nterpretation is
2eac0 20 65 6e 61 62 6c 65 64 2c 20 61 6e 64 20 74 68   enabled, and th
2ead0 65 20 66 69 6c 65 6e 61 6d 65 20 61 72 67 75 6d  e filename argum
2eae0 65 6e 74 0a 2a 2a 20 62 65 67 69 6e 73 20 77 69  ent.** begins wi
2eaf0 74 68 20 22 66 69 6c 65 3a 22 2c 20 74 68 65 6e  th "file:", then
2eb00 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 69 73   the filename is
2eb10 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
2eb20 61 20 55 52 49 2e 20 5e 55 52 49 0a 2a 2a 20 66  a URI. ^URI.** f
2eb30 69 6c 65 6e 61 6d 65 20 69 6e 74 65 72 70 72 65  ilename interpre
2eb40 74 61 74 69 6f 6e 20 69 73 20 65 6e 61 62 6c 65  tation is enable
2eb50 64 20 69 66 20 74 68 65 20 5b 53 51 4c 49 54 45  d if the [SQLITE
2eb60 5f 4f 50 45 4e 5f 55 52 49 5d 20 66 6c 61 67 20  _OPEN_URI] flag 
2eb70 69 73 0a 2a 2a 20 73 65 74 20 69 6e 20 74 68 65  is.** set in the
2eb80 20 74 68 69 72 64 20 61 72 67 75 6d 65 6e 74 20   third argument 
2eb90 74 6f 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f  to sqlite3_open_
2eba0 76 32 28 29 2c 20 6f 72 20 69 66 20 69 74 20 68  v2(), or if it h
2ebb0 61 73 0a 2a 2a 20 62 65 65 6e 20 65 6e 61 62 6c  as.** been enabl
2ebc0 65 64 20 67 6c 6f 62 61 6c 6c 79 20 75 73 69 6e  ed globally usin
2ebd0 67 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 43 4f  g the [SQLITE_CO
2ebe0 4e 46 49 47 5f 55 52 49 5d 20 6f 70 74 69 6f 6e  NFIG_URI] option
2ebf0 20 77 69 74 68 20 74 68 65 0a 2a 2a 20 5b 73 71   with the.** [sq
2ec00 6c 69 74 65 33 5f 63 6f 6e 66 69 67 28 29 5d 20  lite3_config()] 
2ec10 6d 65 74 68 6f 64 20 6f 72 20 62 79 20 74 68 65  method or by the
2ec20 20 5b 53 51 4c 49 54 45 5f 55 53 45 5f 55 52 49   [SQLITE_USE_URI
2ec30 5d 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  ] compile-time o
2ec40 70 74 69 6f 6e 2e 0a 2a 2a 20 55 52 49 20 66 69  ption..** URI fi
2ec50 6c 65 6e 61 6d 65 20 69 6e 74 65 72 70 72 65 74  lename interpret
2ec60 61 74 69 6f 6e 20 69 73 20 74 75 72 6e 65 64 20  ation is turned 
2ec70 6f 66 66 0a 2a 2a 20 62 79 20 64 65 66 61 75 6c  off.** by defaul
2ec80 74 2c 20 62 75 74 20 66 75 74 75 72 65 20 72 65  t, but future re
2ec90 6c 65 61 73 65 73 20 6f 66 20 53 51 4c 69 74 65  leases of SQLite
2eca0 20 6d 69 67 68 74 20 65 6e 61 62 6c 65 20 55 52   might enable UR
2ecb0 49 20 66 69 6c 65 6e 61 6d 65 0a 2a 2a 20 69 6e  I filename.** in
2ecc0 74 65 72 70 72 65 74 61 74 69 6f 6e 20 62 79 20  terpretation by 
2ecd0 64 65 66 61 75 6c 74 2e 20 20 53 65 65 20 22 5b  default.  See "[
2ece0 55 52 49 20 66 69 6c 65 6e 61 6d 65 73 5d 22 20  URI filenames]" 
2ecf0 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a 2a  for additional.*
2ed00 2a 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a  * information..*
2ed10 2a 0a 2a 2a 20 55 52 49 20 66 69 6c 65 6e 61 6d  *.** URI filenam
2ed20 65 73 20 61 72 65 20 70 61 72 73 65 64 20 61 63  es are parsed ac
2ed30 63 6f 72 64 69 6e 67 20 74 6f 20 52 46 43 20 33  cording to RFC 3
2ed40 39 38 36 2e 20 5e 49 66 20 74 68 65 20 55 52 49  986. ^If the URI
2ed50 20 63 6f 6e 74 61 69 6e 73 20 61 6e 0a 2a 2a 20   contains an.** 
2ed60 61 75 74 68 6f 72 69 74 79 2c 20 74 68 65 6e 20  authority, then 
2ed70 69 74 20 6d 75 73 74 20 62 65 20 65 69 74 68 65  it must be eithe
2ed80 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72 69 6e  r an empty strin
2ed90 67 20 6f 72 20 74 68 65 20 73 74 72 69 6e 67 20  g or the string 
2eda0 0a 2a 2a 20 22 6c 6f 63 61 6c 68 6f 73 74 22 2e  .** "localhost".
2edb0 20 5e 49 66 20 74 68 65 20 61 75 74 68 6f 72 69   ^If the authori
2edc0 74 79 20 69 73 20 6e 6f 74 20 61 6e 20 65 6d 70  ty is not an emp
2edd0 74 79 20 73 74 72 69 6e 67 20 6f 72 20 22 6c 6f  ty string or "lo
2ede0 63 61 6c 68 6f 73 74 22 2c 20 61 6e 20 0a 2a 2a  calhost", an .**
2edf0 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
2ee00 65 64 20 74 6f 20 74 68 65 20 63 61 6c 6c 65 72  ed to the caller
2ee10 2e 20 5e 54 68 65 20 66 72 61 67 6d 65 6e 74 20  . ^The fragment 
2ee20 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 20 55  component of a U
2ee30 52 49 2c 20 69 66 20 0a 2a 2a 20 70 72 65 73 65  RI, if .** prese
2ee40 6e 74 2c 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a  nt, is ignored..
2ee50 2a 2a 0a 2a 2a 20 5e 53 51 4c 69 74 65 20 75 73  **.** ^SQLite us
2ee60 65 73 20 74 68 65 20 70 61 74 68 20 63 6f 6d 70  es the path comp
2ee70 6f 6e 65 6e 74 20 6f 66 20 74 68 65 20 55 52 49  onent of the URI
2ee80 20 61 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   as the name of 
2ee90 74 68 65 20 64 69 73 6b 20 66 69 6c 65 0a 2a 2a  the disk file.**
2eea0 20 77 68 69 63 68 20 63 6f 6e 74 61 69 6e 73 20   which contains 
2eeb0 74 68 65 20 64 61 74 61 62 61 73 65 2e 20 5e 49  the database. ^I
2eec0 66 20 74 68 65 20 70 61 74 68 20 62 65 67 69 6e  f the path begin
2eed0 73 20 77 69 74 68 20 61 20 27 2f 27 20 63 68 61  s with a '/' cha
2eee0 72 61 63 74 65 72 2c 20 0a 2a 2a 20 74 68 65 6e  racter, .** then
2eef0 20 69 74 20 69 73 20 69 6e 74 65 72 70 72 65 74   it is interpret
2ef00 65 64 20 61 73 20 61 6e 20 61 62 73 6f 6c 75 74  ed as an absolut
2ef10 65 20 70 61 74 68 2e 20 5e 49 66 20 74 68 65 20  e path. ^If the 
2ef20 70 61 74 68 20 64 6f 65 73 20 6e 6f 74 20 62 65  path does not be
2ef30 67 69 6e 20 0a 2a 2a 20 77 69 74 68 20 61 20 27  gin .** with a '
2ef40 2f 27 20 28 6d 65 61 6e 69 6e 67 20 74 68 61 74  /' (meaning that
2ef50 20 74 68 65 20 61 75 74 68 6f 72 69 74 79 20 73   the authority s
2ef60 65 63 74 69 6f 6e 20 69 73 20 6f 6d 69 74 74 65  ection is omitte
2ef70 64 20 66 72 6f 6d 20 74 68 65 20 55 52 49 29 0a  d from the URI).
2ef80 2a 2a 20 74 68 65 6e 20 74 68 65 20 70 61 74 68  ** then the path
2ef90 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20   is interpreted 
2efa0 61 73 20 61 20 72 65 6c 61 74 69 76 65 20 70 61  as a relative pa
2efb0 74 68 2e 20 0a 2a 2a 20 5e 28 4f 6e 20 77 69 6e  th. .** ^(On win
2efc0 64 6f 77 73 2c 20 74 68 65 20 66 69 72 73 74 20  dows, the first 
2efd0 63 6f 6d 70 6f 6e 65 6e 74 20 6f 66 20 61 6e 20  component of an 
2efe0 61 62 73 6f 6c 75 74 65 20 70 61 74 68 20 0a 2a  absolute path .*
2eff0 2a 20 69 73 20 61 20 64 72 69 76 65 20 73 70 65  * is a drive spe
2f000 63 69 66 69 63 61 74 69 6f 6e 20 28 65 2e 67 2e  cification (e.g.
2f010 20 22 43 3a 22 29 2e 29 5e 0a 2a 2a 0a 2a 2a 20   "C:").)^.**.** 
2f020 5b 5b 63 6f 72 65 20 55 52 49 20 71 75 65 72 79  [[core URI query
2f030 20 70 61 72 61 6d 65 74 65 72 73 5d 5d 0a 2a 2a   parameters]].**
2f040 20 54 68 65 20 71 75 65 72 79 20 63 6f 6d 70 6f   The query compo
2f050 6e 65 6e 74 20 6f 66 20 61 20 55 52 49 20 6d 61  nent of a URI ma
2f060 79 20 63 6f 6e 74 61 69 6e 20 70 61 72 61 6d 65  y contain parame
2f070 74 65 72 73 20 74 68 61 74 20 61 72 65 20 69 6e  ters that are in
2f080 74 65 72 70 72 65 74 65 64 0a 2a 2a 20 65 69 74  terpreted.** eit
2f090 68 65 72 20 62 79 20 53 51 4c 69 74 65 20 69 74  her by SQLite it
2f0a0 73 65 6c 66 2c 20 6f 72 20 62 79 20 61 20 5b 56  self, or by a [V
2f0b0 46 53 20 7c 20 63 75 73 74 6f 6d 20 56 46 53 20  FS | custom VFS 
2f0c0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 5d 2e  implementation].
2f0d0 0a 2a 2a 20 53 51 4c 69 74 65 20 61 6e 64 20 69  .** SQLite and i
2f0e0 74 73 20 62 75 69 6c 74 2d 69 6e 20 5b 56 46 53  ts built-in [VFS
2f0f0 65 73 5d 20 69 6e 74 65 72 70 72 65 74 20 74 68  es] interpret th
2f100 65 0a 2a 2a 20 66 6f 6c 6c 6f 77 69 6e 67 20 71  e.** following q
2f110 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73 3a  uery parameters:
2f120 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a 2a 2a 20 20  .**.** <ul>.**  
2f130 20 3c 6c 69 3e 20 3c 62 3e 76 66 73 3c 2f 62 3e   <li> <b>vfs</b>
2f140 3a 20 5e 54 68 65 20 22 76 66 73 22 20 70 61 72  : ^The "vfs" par
2f150 61 6d 65 74 65 72 20 6d 61 79 20 62 65 20 75 73  ameter may be us
2f160 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 74 68  ed to specify th
2f170 65 20 6e 61 6d 65 20 6f 66 0a 2a 2a 20 20 20 20  e name of.**    
2f180 20 61 20 56 46 53 20 6f 62 6a 65 63 74 20 74 68   a VFS object th
2f190 61 74 20 70 72 6f 76 69 64 65 73 20 74 68 65 20  at provides the 
2f1a0 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d  operating system
2f1b0 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 74 20   interface that 
2f1c0 73 68 6f 75 6c 64 0a 2a 2a 20 20 20 20 20 62 65  should.**     be
2f1d0 20 75 73 65 64 20 74 6f 20 61 63 63 65 73 73 20   used to access 
2f1e0 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
2f1f0 65 20 6f 6e 20 64 69 73 6b 2e 20 5e 49 66 20 74  e on disk. ^If t
2f200 68 69 73 20 6f 70 74 69 6f 6e 20 69 73 20 73 65  his option is se
2f210 74 20 74 6f 0a 2a 2a 20 20 20 20 20 61 6e 20 65  t to.**     an e
2f220 6d 70 74 79 20 73 74 72 69 6e 67 20 74 68 65 20  mpty string the 
2f230 64 65 66 61 75 6c 74 20 56 46 53 20 6f 62 6a 65  default VFS obje
2f240 63 74 20 69 73 20 75 73 65 64 2e 20 5e 53 70 65  ct is used. ^Spe
2f250 63 69 66 79 69 6e 67 20 61 6e 20 75 6e 6b 6e 6f  cifying an unkno
2f260 77 6e 0a 2a 2a 20 20 20 20 20 56 46 53 20 69 73  wn.**     VFS is
2f270 20 61 6e 20 65 72 72 6f 72 2e 20 5e 49 66 20 73   an error. ^If s
2f280 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29  qlite3_open_v2()
2f290 20 69 73 20 75 73 65 64 20 61 6e 64 20 74 68 65   is used and the
2f2a0 20 76 66 73 20 6f 70 74 69 6f 6e 20 69 73 0a 2a   vfs option is.*
2f2b0 2a 20 20 20 20 20 70 72 65 73 65 6e 74 2c 20 74  *     present, t
2f2c0 68 65 6e 20 74 68 65 20 56 46 53 20 73 70 65 63  hen the VFS spec
2f2d0 69 66 69 65 64 20 62 79 20 74 68 65 20 6f 70 74  ified by the opt
2f2e0 69 6f 6e 20 74 61 6b 65 73 20 70 72 65 63 65 64  ion takes preced
2f2f0 65 6e 63 65 20 6f 76 65 72 0a 2a 2a 20 20 20 20  ence over.**    
2f300 20 74 68 65 20 76 61 6c 75 65 20 70 61 73 73 65   the value passe
2f310 64 20 61 73 20 74 68 65 20 66 6f 75 72 74 68 20  d as the fourth 
2f320 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c  parameter to sql
2f330 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a  ite3_open_v2()..
2f340 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62 3e  **.**   <li> <b>
2f350 6d 6f 64 65 3c 2f 62 3e 3a 20 5e 28 54 68 65 20  mode</b>: ^(The 
2f360 6d 6f 64 65 20 70 61 72 61 6d 65 74 65 72 20 6d  mode parameter m
2f370 61 79 20 62 65 20 73 65 74 20 74 6f 20 65 69 74  ay be set to eit
2f380 68 65 72 20 22 72 6f 22 2c 20 22 72 77 22 2c 0a  her "ro", "rw",.
2f390 2a 2a 20 20 20 20 20 22 72 77 63 22 2c 20 6f 72  **     "rwc", or
2f3a0 20 22 6d 65 6d 6f 72 79 22 2e 20 41 74 74 65 6d   "memory". Attem
2f3b0 70 74 69 6e 67 20 74 6f 20 73 65 74 20 69 74 20  pting to set it 
2f3c0 74 6f 20 61 6e 79 20 6f 74 68 65 72 20 76 61 6c  to any other val
2f3d0 75 65 20 69 73 0a 2a 2a 20 20 20 20 20 61 6e 20  ue is.**     an 
2f3e0 65 72 72 6f 72 29 5e 2e 20 0a 2a 2a 20 20 20 20  error)^. .**    
2f3f0 20 5e 49 66 20 22 72 6f 22 20 69 73 20 73 70 65   ^If "ro" is spe
2f400 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
2f410 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65   database is ope
2f420 6e 65 64 20 66 6f 72 20 72 65 61 64 2d 6f 6e 6c  ned for read-onl
2f430 79 20 0a 2a 2a 20 20 20 20 20 61 63 63 65 73 73  y .**     access
2f440 2c 20 6a 75 73 74 20 61 73 20 69 66 20 74 68 65  , just as if the
2f450 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 52 45   [SQLITE_OPEN_RE
2f460 41 44 4f 4e 4c 59 5d 20 66 6c 61 67 20 68 61 64  ADONLY] flag had
2f470 20 62 65 65 6e 20 73 65 74 20 69 6e 20 74 68 65   been set in the
2f480 20 0a 2a 2a 20 20 20 20 20 74 68 69 72 64 20 61   .**     third a
2f490 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
2f4a0 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 20 5e 49  e3_open_v2(). ^I
2f4b0 66 20 74 68 65 20 6d 6f 64 65 20 6f 70 74 69 6f  f the mode optio
2f4c0 6e 20 69 73 20 73 65 74 20 74 6f 20 0a 2a 2a 20  n is set to .** 
2f4d0 20 20 20 20 22 72 77 22 2c 20 74 68 65 6e 20 74      "rw", then t
2f4e0 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 6f  he database is o
2f4f0 70 65 6e 65 64 20 66 6f 72 20 72 65 61 64 2d 77  pened for read-w
2f500 72 69 74 65 20 28 62 75 74 20 6e 6f 74 20 63 72  rite (but not cr
2f510 65 61 74 65 29 20 0a 2a 2a 20 20 20 20 20 61 63  eate) .**     ac
2f520 63 65 73 73 2c 20 61 73 20 69 66 20 53 51 4c 49  cess, as if SQLI
2f530 54 45 5f 4f 50 45 4e 5f 52 45 41 44 57 52 49 54  TE_OPEN_READWRIT
2f540 45 20 28 62 75 74 20 6e 6f 74 20 53 51 4c 49 54  E (but not SQLIT
2f550 45 5f 4f 50 45 4e 5f 43 52 45 41 54 45 29 20 68  E_OPEN_CREATE) h
2f560 61 64 20 0a 2a 2a 20 20 20 20 20 62 65 65 6e 20  ad .**     been 
2f570 73 65 74 2e 20 5e 56 61 6c 75 65 20 22 72 77 63  set. ^Value "rwc
2f580 22 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20  " is equivalent 
2f590 74 6f 20 73 65 74 74 69 6e 67 20 62 6f 74 68 20  to setting both 
2f5a0 0a 2a 2a 20 20 20 20 20 53 51 4c 49 54 45 5f 4f  .**     SQLITE_O
2f5b0 50 45 4e 5f 52 45 41 44 57 52 49 54 45 20 61 6e  PEN_READWRITE an
2f5c0 64 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 43 52  d SQLITE_OPEN_CR
2f5d0 45 41 54 45 2e 20 20 5e 49 66 20 74 68 65 20 6d  EATE.  ^If the m
2f5e0 6f 64 65 20 6f 70 74 69 6f 6e 20 69 73 0a 2a 2a  ode option is.**
2f5f0 20 20 20 20 20 73 65 74 20 74 6f 20 22 6d 65 6d       set to "mem
2f600 6f 72 79 22 20 74 68 65 6e 20 61 20 70 75 72 65  ory" then a pure
2f610 20 5b 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61   [in-memory data
2f620 62 61 73 65 5d 20 74 68 61 74 20 6e 65 76 65 72  base] that never
2f630 20 72 65 61 64 73 0a 2a 2a 20 20 20 20 20 6f 72   reads.**     or
2f640 20 77 72 69 74 65 73 20 66 72 6f 6d 20 64 69 73   writes from dis
2f650 6b 20 69 73 20 75 73 65 64 2e 20 5e 49 74 20 69  k is used. ^It i
2f660 73 20 61 6e 20 65 72 72 6f 72 20 74 6f 20 73 70  s an error to sp
2f670 65 63 69 66 79 20 61 20 76 61 6c 75 65 20 66 6f  ecify a value fo
2f680 72 0a 2a 2a 20 20 20 20 20 74 68 65 20 6d 6f 64  r.**     the mod
2f690 65 20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74  e parameter that
2f6a0 20 69 73 20 6c 65 73 73 20 72 65 73 74 72 69 63   is less restric
2f6b0 74 69 76 65 20 74 68 61 6e 20 74 68 61 74 20 73  tive than that s
2f6c0 70 65 63 69 66 69 65 64 20 62 79 0a 2a 2a 20 20  pecified by.**  
2f6d0 20 20 20 74 68 65 20 66 6c 61 67 73 20 70 61 73     the flags pas
2f6e0 73 65 64 20 69 6e 20 74 68 65 20 74 68 69 72 64  sed in the third
2f6f0 20 70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71   parameter to sq
2f700 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e  lite3_open_v2().
2f710 0a 2a 2a 0a 2a 2a 20 20 20 3c 6c 69 3e 20 3c 62  .**.**   <li> <b
2f720 3e 63 61 63 68 65 3c 2f 62 3e 3a 20 5e 54 68 65  >cache</b>: ^The
2f730 20 63 61 63 68 65 20 70 61 72 61 6d 65 74 65 72   cache parameter
2f740 20 6d 61 79 20 62 65 20 73 65 74 20 74 6f 20 65   may be set to e
2f750 69 74 68 65 72 20 22 73 68 61 72 65 64 22 20 6f  ither "shared" o
2f760 72 0a 2a 2a 20 20 20 20 20 22 70 72 69 76 61 74  r.**     "privat
2f770 65 22 2e 20 5e 53 65 74 74 69 6e 67 20 69 74 20  e". ^Setting it 
2f780 74 6f 20 22 73 68 61 72 65 64 22 20 69 73 20 65  to "shared" is e
2f790 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 73 65 74  quivalent to set
2f7a0 74 69 6e 67 20 74 68 65 0a 2a 2a 20 20 20 20 20  ting the.**     
2f7b0 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52  SQLITE_OPEN_SHAR
2f7c0 45 44 43 41 43 48 45 20 62 69 74 20 69 6e 20 74  EDCACHE bit in t
2f7d0 68 65 20 66 6c 61 67 73 20 61 72 67 75 6d 65 6e  he flags argumen
2f7e0 74 20 70 61 73 73 65 64 20 74 6f 0a 2a 2a 20 20  t passed to.**  
2f7f0 20 20 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f     sqlite3_open_
2f800 76 32 28 29 2e 20 5e 53 65 74 74 69 6e 67 20 74  v2(). ^Setting t
2f810 68 65 20 63 61 63 68 65 20 70 61 72 61 6d 65 74  he cache paramet
2f820 65 72 20 74 6f 20 22 70 72 69 76 61 74 65 22 20  er to "private" 
2f830 69 73 20 0a 2a 2a 20 20 20 20 20 65 71 75 69 76  is .**     equiv
2f840 61 6c 65 6e 74 20 74 6f 20 73 65 74 74 69 6e 67  alent to setting
2f850 20 74 68 65 20 53 51 4c 49 54 45 5f 4f 50 45 4e   the SQLITE_OPEN
2f860 5f 50 52 49 56 41 54 45 43 41 43 48 45 20 62 69  _PRIVATECACHE bi
2f870 74 2e 0a 2a 2a 20 20 20 20 20 5e 49 66 20 73 71  t..**     ^If sq
2f880 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 20  lite3_open_v2() 
2f890 69 73 20 75 73 65 64 20 61 6e 64 20 74 68 65 20  is used and the 
2f8a0 22 63 61 63 68 65 22 20 70 61 72 61 6d 65 74 65  "cache" paramete
2f8b0 72 20 69 73 20 70 72 65 73 65 6e 74 20 69 6e 0a  r is present in.
2f8c0 2a 2a 20 20 20 20 20 61 20 55 52 49 20 66 69 6c  **     a URI fil
2f8d0 65 6e 61 6d 65 2c 20 69 74 73 20 76 61 6c 75 65  ename, its value
2f8e0 20 6f 76 65 72 72 69 64 65 73 20 61 6e 79 20 62   overrides any b
2f8f0 65 68 61 76 69 6f 72 20 72 65 71 75 65 73 74 65  ehavior requeste
2f900 64 20 62 79 20 73 65 74 74 69 6e 67 0a 2a 2a 20  d by setting.** 
2f910 20 20 20 20 53 51 4c 49 54 45 5f 4f 50 45 4e 5f      SQLITE_OPEN_
2f920 50 52 49 56 41 54 45 43 41 43 48 45 20 6f 72 20  PRIVATECACHE or 
2f930 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 53 48 41 52  SQLITE_OPEN_SHAR
2f940 45 44 43 41 43 48 45 20 66 6c 61 67 2e 0a 2a 2a  EDCACHE flag..**
2f950 0a 2a 2a 20 20 3c 6c 69 3e 20 3c 62 3e 70 73 6f  .**  <li> <b>pso
2f960 77 3c 2f 62 3e 3a 20 5e 54 68 65 20 70 73 6f 77  w</b>: ^The psow
2f970 20 70 61 72 61 6d 65 74 65 72 20 69 6e 64 69 63   parameter indic
2f980 61 74 65 73 20 77 68 65 74 68 65 72 20 6f 72 20  ates whether or 
2f990 6e 6f 74 20 74 68 65 0a 2a 2a 20 20 20 20 20 5b  not the.**     [
2f9a0 70 6f 77 65 72 73 61 66 65 20 6f 76 65 72 77 72  powersafe overwr
2f9b0 69 74 65 5d 20 70 72 6f 70 65 72 74 79 20 64 6f  ite] property do
2f9c0 65 73 20 6f 72 20 64 6f 65 73 20 6e 6f 74 20 61  es or does not a
2f9d0 70 70 6c 79 20 74 6f 20 74 68 65 0a 2a 2a 20 20  pply to the.**  
2f9e0 20 20 20 73 74 6f 72 61 67 65 20 6d 65 64 69 61     storage media
2f9f0 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 64 61   on which the da
2fa00 74 61 62 61 73 65 20 66 69 6c 65 20 72 65 73 69  tabase file resi
2fa10 64 65 73 2e 0a 2a 2a 0a 2a 2a 20 20 3c 6c 69 3e  des..**.**  <li>
2fa20 20 3c 62 3e 6e 6f 6c 6f 63 6b 3c 2f 62 3e 3a 20   <b>nolock</b>: 
2fa30 5e 54 68 65 20 6e 6f 6c 6f 63 6b 20 70 61 72 61  ^The nolock para
2fa40 6d 65 74 65 72 20 69 73 20 61 20 62 6f 6f 6c 65  meter is a boole
2fa50 61 6e 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  an query paramet
2fa60 65 72 0a 2a 2a 20 20 20 20 20 77 68 69 63 68 20  er.**     which 
2fa70 69 66 20 73 65 74 20 64 69 73 61 62 6c 65 73 20  if set disables 
2fa80 66 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 69 6e 20  file locking in 
2fa90 72 6f 6c 6c 62 61 63 6b 20 6a 6f 75 72 6e 61 6c  rollback journal
2faa0 20 6d 6f 64 65 73 2e 20 20 54 68 69 73 0a 2a 2a   modes.  This.**
2fab0 20 20 20 20 20 69 73 20 75 73 65 66 75 6c 20 66       is useful f
2fac0 6f 72 20 61 63 63 65 73 73 69 6e 67 20 61 20 64  or accessing a d
2fad0 61 74 61 62 61 73 65 20 6f 6e 20 61 20 66 69 6c  atabase on a fil
2fae0 65 73 79 73 74 65 6d 20 74 68 61 74 20 64 6f 65  esystem that doe
2faf0 73 20 6e 6f 74 0a 2a 2a 20 20 20 20 20 73 75 70  s not.**     sup
2fb00 70 6f 72 74 20 6c 6f 63 6b 69 6e 67 2e 20 20 43  port locking.  C
2fb10 61 75 74 69 6f 6e 3a 20 20 44 61 74 61 62 61 73  aution:  Databas
2fb20 65 20 63 6f 72 72 75 70 74 69 6f 6e 20 6d 69 67  e corruption mig
2fb30 68 74 20 72 65 73 75 6c 74 20 69 66 20 74 77 6f  ht result if two
2fb40 0a 2a 2a 20 20 20 20 20 6f 72 20 6d 6f 72 65 20  .**     or more 
2fb50 70 72 6f 63 65 73 73 65 73 20 77 72 69 74 65 20  processes write 
2fb60 74 6f 20 74 68 65 20 73 61 6d 65 20 64 61 74 61  to the same data
2fb70 62 61 73 65 20 61 6e 64 20 61 6e 79 20 6f 6e 65  base and any one
2fb80 20 6f 66 20 74 68 6f 73 65 0a 2a 2a 20 20 20 20   of those.**    
2fb90 20 70 72 6f 63 65 73 73 65 73 20 75 73 65 73 20   processes uses 
2fba0 6e 6f 6c 6f 63 6b 3d 31 2e 0a 2a 2a 0a 2a 2a 20  nolock=1..**.** 
2fbb0 20 3c 6c 69 3e 20 3c 62 3e 69 6d 6d 75 74 61 62   <li> <b>immutab
2fbc0 6c 65 3c 2f 62 3e 3a 20 5e 54 68 65 20 69 6d 6d  le</b>: ^The imm
2fbd0 75 74 61 62 6c 65 20 70 61 72 61 6d 65 74 65 72  utable parameter
2fbe0 20 69 73 20 61 20 62 6f 6f 6c 65 61 6e 20 71 75   is a boolean qu
2fbf0 65 72 79 0a 2a 2a 20 20 20 20 20 70 61 72 61 6d  ery.**     param
2fc00 65 74 65 72 20 74 68 61 74 20 69 6e 64 69 63 61  eter that indica
2fc10 74 65 73 20 74 68 61 74 20 74 68 65 20 64 61 74  tes that the dat
2fc20 61 62 61 73 65 20 66 69 6c 65 20 69 73 20 73 74  abase file is st
2fc30 6f 72 65 64 20 6f 6e 0a 2a 2a 20 20 20 20 20 72  ored on.**     r
2fc40 65 61 64 2d 6f 6e 6c 79 20 6d 65 64 69 61 2e 20  ead-only media. 
2fc50 20 5e 57 68 65 6e 20 69 6d 6d 75 74 61 62 6c 65   ^When immutable
2fc60 20 69 73 20 73 65 74 2c 20 53 51 4c 69 74 65 20   is set, SQLite 
2fc70 61 73 73 75 6d 65 73 20 74 68 61 74 20 74 68 65  assumes that the
2fc80 0a 2a 2a 20 20 20 20 20 64 61 74 61 62 61 73 65  .**     database
2fc90 20 66 69 6c 65 20 63 61 6e 6e 6f 74 20 62 65 20   file cannot be 
2fca0 63 68 61 6e 67 65 64 2c 20 65 76 65 6e 20 62 79  changed, even by
2fcb0 20 61 20 70 72 6f 63 65 73 73 20 77 69 74 68 20   a process with 
2fcc0 68 69 67 68 65 72 0a 2a 2a 20 20 20 20 20 70 72  higher.**     pr
2fcd0 69 76 69 6c 65 67 65 2c 20 61 6e 64 20 73 6f 20  ivilege, and so 
2fce0 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
2fcf0 6f 70 65 6e 65 64 20 72 65 61 64 2d 6f 6e 6c 79  opened read-only
2fd00 20 61 6e 64 20 61 6c 6c 20 6c 6f 63 6b 69 6e 67   and all locking
2fd10 0a 2a 2a 20 20 20 20 20 61 6e 64 20 63 68 61 6e  .**     and chan
2fd20 67 65 20 64 65 74 65 63 74 69 6f 6e 20 69 73 20  ge detection is 
2fd30 64 69 73 61 62 6c 65 64 2e 20 20 43 61 75 74 69  disabled.  Cauti
2fd40 6f 6e 3a 20 53 65 74 74 69 6e 67 20 74 68 65 20  on: Setting the 
2fd50 69 6d 6d 75 74 61 62 6c 65 0a 2a 2a 20 20 20 20  immutable.**    
2fd60 20 70 72 6f 70 65 72 74 79 20 6f 6e 20 61 20 64   property on a d
2fd70 61 74 61 62 61 73 65 20 66 69 6c 65 20 74 68 61  atabase file tha
2fd80 74 20 64 6f 65 73 20 69 6e 20 66 61 63 74 20 63  t does in fact c
2fd90 68 61 6e 67 65 20 63 61 6e 20 72 65 73 75 6c 74  hange can result
2fda0 0a 2a 2a 20 20 20 20 20 69 6e 20 69 6e 63 6f 72  .**     in incor
2fdb0 72 65 63 74 20 71 75 65 72 79 20 72 65 73 75 6c  rect query resul
2fdc0 74 73 20 61 6e 64 2f 6f 72 20 5b 53 51 4c 49 54  ts and/or [SQLIT
2fdd0 45 5f 43 4f 52 52 55 50 54 5d 20 65 72 72 6f 72  E_CORRUPT] error
2fde0 73 2e 0a 2a 2a 20 20 20 20 20 53 65 65 20 61 6c  s..**     See al
2fdf0 73 6f 3a 20 5b 53 51 4c 49 54 45 5f 49 4f 43 41  so: [SQLITE_IOCA
2fe00 50 5f 49 4d 4d 55 54 41 42 4c 45 5d 2e 0a 2a 2a  P_IMMUTABLE]..**
2fe10 20 20 20 20 20 20 20 0a 2a 2a 20 3c 2f 75 6c 3e         .** </ul>
2fe20 0a 2a 2a 0a 2a 2a 20 5e 53 70 65 63 69 66 79 69  .**.** ^Specifyi
2fe30 6e 67 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70 61  ng an unknown pa
2fe40 72 61 6d 65 74 65 72 20 69 6e 20 74 68 65 20 71  rameter in the q
2fe50 75 65 72 79 20 63 6f 6d 70 6f 6e 65 6e 74 20 6f  uery component o
2fe60 66 20 61 20 55 52 49 20 69 73 20 6e 6f 74 20 61  f a URI is not a
2fe70 6e 0a 2a 2a 20 65 72 72 6f 72 2e 20 20 46 75 74  n.** error.  Fut
2fe80 75 72 65 20 76 65 72 73 69 6f 6e 73 20 6f 66 20  ure versions of 
2fe90 53 51 4c 69 74 65 20 6d 69 67 68 74 20 75 6e 64  SQLite might und
2fea0 65 72 73 74 61 6e 64 20 61 64 64 69 74 69 6f 6e  erstand addition
2feb0 61 6c 20 71 75 65 72 79 0a 2a 2a 20 70 61 72 61  al query.** para
2fec0 6d 65 74 65 72 73 2e 20 20 53 65 65 20 22 5b 71  meters.  See "[q
2fed0 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73 20  uery parameters 
2fee0 77 69 74 68 20 73 70 65 63 69 61 6c 20 6d 65 61  with special mea
2fef0 6e 69 6e 67 20 74 6f 20 53 51 4c 69 74 65 5d 22  ning to SQLite]"
2ff00 20 66 6f 72 0a 2a 2a 20 61 64 64 69 74 69 6f 6e   for.** addition
2ff10 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a  al information..
2ff20 2a 2a 0a 2a 2a 20 5b 5b 55 52 49 20 66 69 6c 65  **.** [[URI file
2ff30 6e 61 6d 65 20 65 78 61 6d 70 6c 65 73 5d 5d 20  name examples]] 
2ff40 3c 68 33 3e 55 52 49 20 66 69 6c 65 6e 61 6d 65  <h3>URI filename
2ff50 20 65 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 2a   examples</h3>.*
2ff60 2a 0a 2a 2a 20 3c 74 61 62 6c 65 20 62 6f 72 64  *.** <table bord
2ff70 65 72 3d 22 31 22 20 61 6c 69 67 6e 3d 63 65 6e  er="1" align=cen
2ff80 74 65 72 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  ter cellpadding=
2ff90 35 3e 0a 2a 2a 20 3c 74 72 3e 3c 74 68 3e 20 55  5>.** <tr><th> U
2ffa0 52 49 20 66 69 6c 65 6e 61 6d 65 73 20 3c 74 68  RI filenames <th
2ffb0 3e 20 52 65 73 75 6c 74 73 0a 2a 2a 20 3c 74 72  > Results.** <tr
2ffc0 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e  ><td> file:data.
2ffd0 64 62 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20  db <td> .**     
2ffe0 20 20 20 20 20 4f 70 65 6e 20 74 68 65 20 66 69       Open the fi
2fff0 6c 65 20 22 64 61 74 61 2e 64 62 22 20 69 6e 20  le "data.db" in 
30000 74 68 65 20 63 75 72 72 65 6e 74 20 64 69 72 65  the current dire
30010 63 74 6f 72 79 2e 0a 2a 2a 20 3c 74 72 3e 3c 74  ctory..** <tr><t
30020 64 3e 20 66 69 6c 65 3a 2f 68 6f 6d 65 2f 66 72  d> file:/home/fr
30030 65 64 2f 64 61 74 61 2e 64 62 3c 62 72 3e 0a 2a  ed/data.db<br>.*
30040 2a 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a  *          file:
30050 2f 2f 2f 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74  ///home/fred/dat
30060 61 2e 64 62 20 3c 62 72 3e 20 0a 2a 2a 20 20 20  a.db <br> .**   
30070 20 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 6c 6f         file://lo
30080 63 61 6c 68 6f 73 74 2f 68 6f 6d 65 2f 66 72 65  calhost/home/fre
30090 64 2f 64 61 74 61 2e 64 62 20 3c 62 72 3e 20 3c  d/data.db <br> <
300a0 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20 20 20 20  td> .**         
300b0 20 4f 70 65 6e 20 74 68 65 20 64 61 74 61 62 61   Open the databa
300c0 73 65 20 66 69 6c 65 20 22 2f 68 6f 6d 65 2f 66  se file "/home/f
300d0 72 65 64 2f 64 61 74 61 2e 64 62 22 2e 0a 2a 2a  red/data.db"..**
300e0 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f   <tr><td> file:/
300f0 2f 64 61 72 6b 73 74 61 72 2f 68 6f 6d 65 2f 66  /darkstar/home/f
30100 72 65 64 2f 64 61 74 61 2e 64 62 20 3c 74 64 3e  red/data.db <td>
30110 20 0a 2a 2a 20 20 20 20 20 20 20 20 20 20 41 6e   .**          An
30120 20 65 72 72 6f 72 2e 20 22 64 61 72 6b 73 74 61   error. "darksta
30130 72 22 20 69 73 20 6e 6f 74 20 61 20 72 65 63 6f  r" is not a reco
30140 67 6e 69 7a 65 64 20 61 75 74 68 6f 72 69 74 79  gnized authority
30150 2e 0a 2a 2a 20 3c 74 72 3e 3c 74 64 20 73 74 79  ..** <tr><td sty
30160 6c 65 3d 22 77 68 69 74 65 2d 73 70 61 63 65 3a  le="white-space:
30170 6e 6f 77 72 61 70 22 3e 20 0a 2a 2a 20 20 20 20  nowrap"> .**    
30180 20 20 20 20 20 20 66 69 6c 65 3a 2f 2f 2f 43 3a        file:///C:
30190 2f 44 6f 63 75 6d 65 6e 74 73 25 32 30 61 6e 64  /Documents%20and
301a0 25 32 30 53 65 74 74 69 6e 67 73 2f 66 72 65 64  %20Settings/fred
301b0 2f 44 65 73 6b 74 6f 70 2f 64 61 74 61 2e 64 62  /Desktop/data.db
301c0 0a 2a 2a 20 20 20 20 20 3c 74 64 3e 20 57 69 6e  .**     <td> Win
301d0 64 6f 77 73 20 6f 6e 6c 79 3a 20 4f 70 65 6e 20  dows only: Open 
301e0 74 68 65 20 66 69 6c 65 20 22 64 61 74 61 2e 64  the file "data.d
301f0 62 22 20 6f 6e 20 66 72 65 64 27 73 20 64 65 73  b" on fred's des
30200 6b 74 6f 70 20 6f 6e 20 64 72 69 76 65 0a 2a 2a  ktop on drive.**
30210 20 20 20 20 20 20 20 20 20 20 43 3a 2e 20 4e 6f            C:. No
30220 74 65 20 74 68 61 74 20 74 68 65 20 25 32 30 20  te that the %20 
30230 65 73 63 61 70 69 6e 67 20 69 6e 20 74 68 69 73  escaping in this
30240 20 65 78 61 6d 70 6c 65 20 69 73 20 6e 6f 74 20   example is not 
30250 73 74 72 69 63 74 6c 79 20 0a 2a 2a 20 20 20 20  strictly .**    
30260 20 20 20 20 20 20 6e 65 63 65 73 73 61 72 79 20        necessary 
30270 2d 20 73 70 61 63 65 20 63 68 61 72 61 63 74 65  - space characte
30280 72 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 6c  rs can be used l
30290 69 74 65 72 61 6c 6c 79 0a 2a 2a 20 20 20 20 20  iterally.**     
302a0 20 20 20 20 20 69 6e 20 55 52 49 20 66 69 6c 65       in URI file
302b0 6e 61 6d 65 73 2e 0a 2a 2a 20 3c 74 72 3e 3c 74  names..** <tr><t
302c0 64 3e 20 66 69 6c 65 3a 64 61 74 61 2e 64 62 3f  d> file:data.db?
302d0 6d 6f 64 65 3d 72 6f 26 63 61 63 68 65 3d 70 72  mode=ro&cache=pr
302e0 69 76 61 74 65 20 3c 74 64 3e 20 0a 2a 2a 20 20  ivate <td> .**  
302f0 20 20 20 20 20 20 20 20 4f 70 65 6e 20 66 69 6c          Open fil
30300 65 20 22 64 61 74 61 2e 64 62 22 20 69 6e 20 74  e "data.db" in t
30310 68 65 20 63 75 72 72 65 6e 74 20 64 69 72 65 63  he current direc
30320 74 6f 72 79 20 66 6f 72 20 72 65 61 64 2d 6f 6e  tory for read-on
30330 6c 79 20 61 63 63 65 73 73 2e 0a 2a 2a 20 20 20  ly access..**   
30340 20 20 20 20 20 20 20 52 65 67 61 72 64 6c 65 73         Regardles
30350 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f 72 20  s of whether or 
30360 6e 6f 74 20 73 68 61 72 65 64 2d 63 61 63 68 65  not shared-cache
30370 20 6d 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64   mode is enabled
30380 20 62 79 0a 2a 2a 20 20 20 20 20 20 20 20 20 20   by.**          
30390 64 65 66 61 75 6c 74 2c 20 75 73 65 20 61 20 70  default, use a p
303a0 72 69 76 61 74 65 20 63 61 63 68 65 2e 0a 2a 2a  rivate cache..**
303b0 20 3c 74 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 2f   <tr><td> file:/
303c0 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64  home/fred/data.d
303d0 62 3f 76 66 73 3d 75 6e 69 78 2d 64 6f 74 66 69  b?vfs=unix-dotfi
303e0 6c 65 20 3c 74 64 3e 0a 2a 2a 20 20 20 20 20 20  le <td>.**      
303f0 20 20 20 20 4f 70 65 6e 20 66 69 6c 65 20 22 2f      Open file "/
30400 68 6f 6d 65 2f 66 72 65 64 2f 64 61 74 61 2e 64  home/fred/data.d
30410 62 22 2e 20 55 73 65 20 74 68 65 20 73 70 65 63  b". Use the spec
30420 69 61 6c 20 56 46 53 20 22 75 6e 69 78 2d 64 6f  ial VFS "unix-do
30430 74 66 69 6c 65 22 0a 2a 2a 20 20 20 20 20 20 20  tfile".**       
30440 20 20 20 74 68 61 74 20 75 73 65 73 20 64 6f 74     that uses dot
30450 2d 66 69 6c 65 73 20 69 6e 20 70 6c 61 63 65 20  -files in place 
30460 6f 66 20 70 6f 73 69 78 20 61 64 76 69 73 6f 72  of posix advisor
30470 79 20 6c 6f 63 6b 69 6e 67 2e 0a 2a 2a 20 3c 74  y locking..** <t
30480 72 3e 3c 74 64 3e 20 66 69 6c 65 3a 64 61 74 61  r><td> file:data
30490 2e 64 62 3f 6d 6f 64 65 3d 72 65 61 64 6f 6e 6c  .db?mode=readonl
304a0 79 20 3c 74 64 3e 20 0a 2a 2a 20 20 20 20 20 20  y <td> .**      
304b0 20 20 20 20 41 6e 20 65 72 72 6f 72 2e 20 22 72      An error. "r
304c0 65 61 64 6f 6e 6c 79 22 20 69 73 20 6e 6f 74 20  eadonly" is not 
304d0 61 20 76 61 6c 69 64 20 6f 70 74 69 6f 6e 20 66  a valid option f
304e0 6f 72 20 74 68 65 20 22 6d 6f 64 65 22 20 70 61  or the "mode" pa
304f0 72 61 6d 65 74 65 72 2e 0a 2a 2a 20 3c 2f 74 61  rameter..** </ta
30500 62 6c 65 3e 0a 2a 2a 0a 2a 2a 20 5e 55 52 49 20  ble>.**.** ^URI 
30510 68 65 78 61 64 65 63 69 6d 61 6c 20 65 73 63 61  hexadecimal esca
30520 70 65 20 73 65 71 75 65 6e 63 65 73 20 28 25 48  pe sequences (%H
30530 48 29 20 61 72 65 20 73 75 70 70 6f 72 74 65 64  H) are supported
30540 20 77 69 74 68 69 6e 20 74 68 65 20 70 61 74 68   within the path
30550 20 61 6e 64 0a 2a 2a 20 71 75 65 72 79 20 63 6f   and.** query co
30560 6d 70 6f 6e 65 6e 74 73 20 6f 66 20 61 20 55 52  mponents of a UR
30570 49 2e 20 41 20 68 65 78 61 64 65 63 69 6d 61 6c  I. A hexadecimal
30580 20 65 73 63 61 70 65 20 73 65 71 75 65 6e 63 65   escape sequence
30590 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 61 0a 2a   consists of a.*
305a0 2a 20 70 65 72 63 65 6e 74 20 73 69 67 6e 20 2d  * percent sign -
305b0 20 22 25 22 20 2d 20 66 6f 6c 6c 6f 77 65 64 20   "%" - followed 
305c0 62 79 20 65 78 61 63 74 6c 79 20 74 77 6f 20 68  by exactly two h
305d0 65 78 61 64 65 63 69 6d 61 6c 20 64 69 67 69 74  exadecimal digit
305e0 73 20 0a 2a 2a 20 73 70 65 63 69 66 79 69 6e 67  s .** specifying
305f0 20 61 6e 20 6f 63 74 65 74 20 76 61 6c 75 65 2e   an octet value.
30600 20 5e 42 65 66 6f 72 65 20 74 68 65 20 70 61 74   ^Before the pat
30610 68 20 6f 72 20 71 75 65 72 79 20 63 6f 6d 70 6f  h or query compo
30620 6e 65 6e 74 73 20 6f 66 20 61 0a 2a 2a 20 55 52  nents of a.** UR
30630 49 20 66 69 6c 65 6e 61 6d 65 20 61 72 65 20 69  I filename are i
30640 6e 74 65 72 70 72 65 74 65 64 2c 20 74 68 65 79  nterpreted, they
30650 20 61 72 65 20 65 6e 63 6f 64 65 64 20 75 73 69   are encoded usi
30660 6e 67 20 55 54 46 2d 38 20 61 6e 64 20 61 6c 6c  ng UTF-8 and all
30670 20 0a 2a 2a 20 68 65 78 61 64 65 63 69 6d 61 6c   .** hexadecimal
30680 20 65 73 63 61 70 65 20 73 65 71 75 65 6e 63 65   escape sequence
30690 73 20 72 65 70 6c 61 63 65 64 20 62 79 20 61 20  s replaced by a 
306a0 73 69 6e 67 6c 65 20 62 79 74 65 20 63 6f 6e 74  single byte cont
306b0 61 69 6e 69 6e 67 20 74 68 65 0a 2a 2a 20 63 6f  aining the.** co
306c0 72 72 65 73 70 6f 6e 64 69 6e 67 20 6f 63 74 65  rresponding octe
306d0 74 2e 20 49 66 20 74 68 69 73 20 70 72 6f 63 65  t. If this proce
306e0 73 73 20 67 65 6e 65 72 61 74 65 73 20 61 6e 20  ss generates an 
306f0 69 6e 76 61 6c 69 64 20 55 54 46 2d 38 20 65 6e  invalid UTF-8 en
30700 63 6f 64 69 6e 67 2c 0a 2a 2a 20 74 68 65 20 72  coding,.** the r
30710 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64 65 66  esults are undef
30720 69 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20 3c 62 3e 4e  ined..**.** <b>N
30730 6f 74 65 20 74 6f 20 57 69 6e 64 6f 77 73 20 75  ote to Windows u
30740 73 65 72 73 3a 3c 2f 62 3e 20 20 54 68 65 20 65  sers:</b>  The e
30750 6e 63 6f 64 69 6e 67 20 75 73 65 64 20 66 6f 72  ncoding used for
30760 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 61 72   the filename ar
30770 67 75 6d 65 6e 74 0a 2a 2a 20 6f 66 20 73 71 6c  gument.** of sql
30780 69 74 65 33 5f 6f 70 65 6e 28 29 20 61 6e 64 20  ite3_open() and 
30790 73 71 6c 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28  sqlite3_open_v2(
307a0 29 20 6d 75 73 74 20 62 65 20 55 54 46 2d 38 2c  ) must be UTF-8,
307b0 20 6e 6f 74 20 77 68 61 74 65 76 65 72 0a 2a 2a   not whatever.**
307c0 20 63 6f 64 65 70 61 67 65 20 69 73 20 63 75 72   codepage is cur
307d0 72 65 6e 74 6c 79 20 64 65 66 69 6e 65 64 2e 20  rently defined. 
307e0 20 46 69 6c 65 6e 61 6d 65 73 20 63 6f 6e 74 61   Filenames conta
307f0 69 6e 69 6e 67 20 69 6e 74 65 72 6e 61 74 69 6f  ining internatio
30800 6e 61 6c 0a 2a 2a 20 63 68 61 72 61 63 74 65 72  nal.** character
30810 73 20 6d 75 73 74 20 62 65 20 63 6f 6e 76 65 72  s must be conver
30820 74 65 64 20 74 6f 20 55 54 46 2d 38 20 70 72 69  ted to UTF-8 pri
30830 6f 72 20 74 6f 20 70 61 73 73 69 6e 67 20 74 68  or to passing th
30840 65 6d 20 69 6e 74 6f 0a 2a 2a 20 73 71 6c 69 74  em into.** sqlit
30850 65 33 5f 6f 70 65 6e 28 29 20 6f 72 20 73 71 6c  e3_open() or sql
30860 69 74 65 33 5f 6f 70 65 6e 5f 76 32 28 29 2e 0a  ite3_open_v2()..
30870 2a 2a 0a 2a 2a 20 3c 62 3e 4e 6f 74 65 20 74 6f  **.** <b>Note to
30880 20 57 69 6e 64 6f 77 73 20 52 75 6e 74 69 6d 65   Windows Runtime
30890 20 75 73 65 72 73 3a 3c 2f 62 3e 20 20 54 68 65   users:</b>  The
308a0 20 74 65 6d 70 6f 72 61 72 79 20 64 69 72 65 63   temporary direc
308b0 74 6f 72 79 20 6d 75 73 74 20 62 65 20 73 65 74  tory must be set
308c0 0a 2a 2a 20 70 72 69 6f 72 20 74 6f 20 63 61 6c  .** prior to cal
308d0 6c 69 6e 67 20 73 71 6c 69 74 65 33 5f 6f 70 65  ling sqlite3_ope
308e0 6e 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 6f  n() or sqlite3_o
308f0 70 65 6e 5f 76 32 28 29 2e 20 20 4f 74 68 65 72  pen_v2().  Other
30900 77 69 73 65 2c 20 76 61 72 69 6f 75 73 0a 2a 2a  wise, various.**
30910 20 66 65 61 74 75 72 65 73 20 74 68 61 74 20 72   features that r
30920 65 71 75 69 72 65 20 74 68 65 20 75 73 65 20 6f  equire the use o
30930 66 20 74 65 6d 70 6f 72 61 72 79 20 66 69 6c 65  f temporary file
30940 73 20 6d 61 79 20 66 61 69 6c 2e 0a 2a 2a 0a 2a  s may fail..**.*
30950 2a 20 53 65 65 20 61 6c 73 6f 3a 20 5b 73 71 6c  * See also: [sql
30960 69 74 65 33 5f 74 65 6d 70 5f 64 69 72 65 63 74  ite3_temp_direct
30970 6f 72 79 5d 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41  ory].*/.SQLITE_A
30980 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  PI int sqlite3_o
30990 70 65 6e 28 0a 20 20 63 6f 6e 73 74 20 63 68 61  pen(.  const cha
309a0 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20 20 2f  r *filename,   /
309b0 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c 65 6e  * Database filen
309c0 61 6d 65 20 28 55 54 46 2d 38 29 20 2a 2f 0a 20  ame (UTF-8) */. 
309d0 20 73 71 6c 69 74 65 33 20 2a 2a 70 70 44 62 20   sqlite3 **ppDb 
309e0 20 20 20 20 20 20 20 20 20 2f 2a 20 4f 55 54 3a           /* OUT:
309f0 20 53 51 4c 69 74 65 20 64 62 20 68 61 6e 64 6c   SQLite db handl
30a00 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  e */.);.SQLITE_A
30a10 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 6f  PI int sqlite3_o
30a20 70 65 6e 31 36 28 0a 20 20 63 6f 6e 73 74 20 76  pen16(.  const v
30a30 6f 69 64 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 20  oid *filename,  
30a40 20 2f 2a 20 44 61 74 61 62 61 73 65 20 66 69 6c   /* Database fil
30a50 65 6e 61 6d 65 20 28 55 54 46 2d 31 36 29 20 2a  ename (UTF-16) *
30a60 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a 2a 70 70  /.  sqlite3 **pp
30a70 44 62 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4f  Db          /* O
30a80 55 54 3a 20 53 51 4c 69 74 65 20 64 62 20 68 61  UT: SQLite db ha
30a90 6e 64 6c 65 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54  ndle */.);.SQLIT
30aa0 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65  E_API int sqlite
30ab0 33 5f 6f 70 65 6e 5f 76 32 28 0a 20 20 63 6f 6e  3_open_v2(.  con
30ac0 73 74 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d  st char *filenam
30ad0 65 2c 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65  e,   /* Database
30ae0 20 66 69 6c 65 6e 61 6d 65 20 28 55 54 46 2d 38   filename (UTF-8
30af0 29 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33 20 2a  ) */.  sqlite3 *
30b00 2a 70 70 44 62 2c 20 20 20 20 20 20 20 20 20 2f  *ppDb,         /
30b10 2a 20 4f 55 54 3a 20 53 51 4c 69 74 65 20 64 62  * OUT: SQLite db
30b20 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 69 6e 74   handle */.  int
30b30 20 66 6c 61 67 73 2c 20 20 20 20 20 20 20 20 20   flags,         
30b40 20 20 20 20 20 2f 2a 20 46 6c 61 67 73 20 2a 2f       /* Flags */
30b50 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
30b60 56 66 73 20 20 20 20 20 20 20 20 2f 2a 20 4e 61  Vfs        /* Na
30b70 6d 65 20 6f 66 20 56 46 53 20 6d 6f 64 75 6c 65  me of VFS module
30b80 20 74 6f 20 75 73 65 20 2a 2f 0a 29 3b 0a 0a 2f   to use */.);../
30b90 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 4f  *.** CAPI3REF: O
30ba0 62 74 61 69 6e 20 56 61 6c 75 65 73 20 46 6f 72  btain Values For
30bb0 20 55 52 49 20 50 61 72 61 6d 65 74 65 72 73 0a   URI Parameters.
30bc0 2a 2a 0a 2a 2a 20 54 68 65 73 65 20 61 72 65 20  **.** These are 
30bd0 75 74 69 6c 69 74 79 20 72 6f 75 74 69 6e 65 73  utility routines
30be0 2c 20 75 73 65 66 75 6c 20 74 6f 20 56 46 53 20  , useful to VFS 
30bf0 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2c  implementations,
30c00 20 74 68 61 74 20 63 68 65 63 6b 0a 2a 2a 20 74   that check.** t
30c10 6f 20 73 65 65 20 69 66 20 61 20 64 61 74 61 62  o see if a datab
30c20 61 73 65 20 66 69 6c 65 20 77 61 73 20 61 20 55  ase file was a U
30c30 52 49 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 65  RI that containe
30c40 64 20 61 20 73 70 65 63 69 66 69 63 20 71 75 65  d a specific que
30c50 72 79 20 0a 2a 2a 20 70 61 72 61 6d 65 74 65 72  ry .** parameter
30c60 2c 20 61 6e 64 20 69 66 20 73 6f 20 6f 62 74 61  , and if so obta
30c70 69 6e 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66  ins the value of
30c80 20 74 68 61 74 20 71 75 65 72 79 20 70 61 72 61   that query para
30c90 6d 65 74 65 72 2e 0a 2a 2a 0a 2a 2a 20 49 66 20  meter..**.** If 
30ca0 46 20 69 73 20 74 68 65 20 64 61 74 61 62 61 73  F is the databas
30cb0 65 20 66 69 6c 65 6e 61 6d 65 20 70 6f 69 6e 74  e filename point
30cc0 65 72 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74  er passed into t
30cd0 68 65 20 78 4f 70 65 6e 28 29 20 6d 65 74 68 6f  he xOpen() metho
30ce0 64 20 6f 66 20 0a 2a 2a 20 61 20 56 46 53 20 69  d of .** a VFS i
30cf0 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 68  mplementation wh
30d00 65 6e 20 74 68 65 20 66 6c 61 67 73 20 70 61 72  en the flags par
30d10 61 6d 65 74 65 72 20 74 6f 20 78 4f 70 65 6e 28  ameter to xOpen(
30d20 29 20 68 61 73 20 6f 6e 65 20 6f 72 20 0a 2a 2a  ) has one or .**
30d30 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 5b 53 51   more of the [SQ
30d40 4c 49 54 45 5f 4f 50 45 4e 5f 55 52 49 5d 20 6f  LITE_OPEN_URI] o
30d50 72 20 5b 53 51 4c 49 54 45 5f 4f 50 45 4e 5f 4d  r [SQLITE_OPEN_M
30d60 41 49 4e 5f 44 42 5d 20 62 69 74 73 20 73 65 74  AIN_DB] bits set
30d70 20 61 6e 64 0a 2a 2a 20 50 20 69 73 20 74 68 65   and.** P is the
30d80 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 71 75 65   name of the que
30d90 72 79 20 70 61 72 61 6d 65 74 65 72 2c 20 74 68  ry parameter, th
30da0 65 6e 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72  en.** sqlite3_ur
30db0 69 5f 70 61 72 61 6d 65 74 65 72 28 46 2c 50 29  i_parameter(F,P)
30dc0 20 72 65 74 75 72 6e 73 20 74 68 65 20 76 61 6c   returns the val
30dd0 75 65 20 6f 66 20 74 68 65 20 50 0a 2a 2a 20 70  ue of the P.** p
30de0 61 72 61 6d 65 74 65 72 20 69 66 20 69 74 20 65  arameter if it e
30df0 78 69 73 74 73 20 6f 72 20 61 20 4e 55 4c 4c 20  xists or a NULL 
30e00 70 6f 69 6e 74 65 72 20 69 66 20 50 20 64 6f 65  pointer if P doe
30e10 73 20 6e 6f 74 20 61 70 70 65 61 72 20 61 73 20  s not appear as 
30e20 61 20 0a 2a 2a 20 71 75 65 72 79 20 70 61 72 61  a .** query para
30e30 6d 65 74 65 72 20 6f 6e 20 46 2e 20 20 49 66 20  meter on F.  If 
30e40 50 20 69 73 20 61 20 71 75 65 72 79 20 70 61 72  P is a query par
30e50 61 6d 65 74 65 72 20 6f 66 20 46 0a 2a 2a 20 68  ameter of F.** h
30e60 61 73 20 6e 6f 20 65 78 70 6c 69 63 69 74 20 76  as no explicit v
30e70 61 6c 75 65 2c 20 74 68 65 6e 20 73 71 6c 69 74  alue, then sqlit
30e80 65 33 5f 75 72 69 5f 70 61 72 61 6d 65 74 65 72  e3_uri_parameter
30e90 28 46 2c 50 29 20 72 65 74 75 72 6e 73 0a 2a 2a  (F,P) returns.**
30ea0 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e   a pointer to an
30eb0 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 2a   empty string..*
30ec0 2a 0a 2a 2a 20 54 68 65 20 73 71 6c 69 74 65 33  *.** The sqlite3
30ed0 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50  _uri_boolean(F,P
30ee0 2c 42 29 20 72 6f 75 74 69 6e 65 20 61 73 73 75  ,B) routine assu
30ef0 6d 65 73 20 74 68 61 74 20 50 20 69 73 20 61 20  mes that P is a 
30f00 62 6f 6f 6c 65 61 6e 0a 2a 2a 20 70 61 72 61 6d  boolean.** param
30f10 65 74 65 72 20 61 6e 64 20 72 65 74 75 72 6e 73  eter and returns
30f20 20 74 72 75 65 20 28 31 29 20 6f 72 20 66 61 6c   true (1) or fal
30f30 73 65 20 28 30 29 20 61 63 63 6f 72 64 69 6e 67  se (0) according
30f40 20 74 6f 20 74 68 65 20 76 61 6c 75 65 0a 2a 2a   to the value.**
30f50 20 6f 66 20 50 2e 20 20 54 68 65 20 73 71 6c 69   of P.  The sqli
30f60 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e 28  te3_uri_boolean(
30f70 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65 20 72  F,P,B) routine r
30f80 65 74 75 72 6e 73 20 74 72 75 65 20 28 31 29 20  eturns true (1) 
30f90 69 66 20 74 68 65 0a 2a 2a 20 76 61 6c 75 65 20  if the.** value 
30fa0 6f 66 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  of query paramet
30fb0 65 72 20 50 20 69 73 20 6f 6e 65 20 6f 66 20 22  er P is one of "
30fc0 79 65 73 22 2c 20 22 74 72 75 65 22 2c 20 6f 72  yes", "true", or
30fd0 20 22 6f 6e 22 20 69 6e 20 61 6e 79 0a 2a 2a 20   "on" in any.** 
30fe0 63 61 73 65 20 6f 72 20 69 66 20 74 68 65 20 76  case or if the v
30ff0 61 6c 75 65 20 62 65 67 69 6e 73 20 77 69 74 68  alue begins with
31000 20 61 20 6e 6f 6e 2d 7a 65 72 6f 20 6e 75 6d 62   a non-zero numb
31010 65 72 2e 20 20 54 68 65 20 0a 2a 2a 20 73 71 6c  er.  The .** sql
31020 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
31030 28 46 2c 50 2c 42 29 20 72 6f 75 74 69 6e 65 73  (F,P,B) routines
31040 20 72 65 74 75 72 6e 73 20 66 61 6c 73 65 20 28   returns false (
31050 30 29 20 69 66 20 74 68 65 20 76 61 6c 75 65 20  0) if the value 
31060 6f 66 0a 2a 2a 20 71 75 65 72 79 20 70 61 72 61  of.** query para
31070 6d 65 74 65 72 20 50 20 69 73 20 6f 6e 65 20 6f  meter P is one o
31080 66 20 22 6e 6f 22 2c 20 22 66 61 6c 73 65 22 2c  f "no", "false",
31090 20 6f 72 20 22 6f 66 66 22 20 69 6e 20 61 6e 79   or "off" in any
310a0 20 63 61 73 65 20 6f 72 0a 2a 2a 20 69 66 20 74   case or.** if t
310b0 68 65 20 76 61 6c 75 65 20 62 65 67 69 6e 73 20  he value begins 
310c0 77 69 74 68 20 61 20 6e 75 6d 65 72 69 63 20 7a  with a numeric z
310d0 65 72 6f 2e 20 20 49 66 20 50 20 69 73 20 6e 6f  ero.  If P is no
310e0 74 20 61 20 71 75 65 72 79 0a 2a 2a 20 70 61 72  t a query.** par
310f0 61 6d 65 74 65 72 20 6f 6e 20 46 20 6f 72 20 69  ameter on F or i
31100 66 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 50  f the value of P
31110 20 69 73 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74   is does not mat
31120 63 68 20 61 6e 79 20 6f 66 20 74 68 65 0a 2a 2a  ch any of the.**
31130 20 61 62 6f 76 65 2c 20 74 68 65 6e 20 73 71 6c   above, then sql
31140 69 74 65 33 5f 75 72 69 5f 62 6f 6f 6c 65 61 6e  ite3_uri_boolean
31150 28 46 2c 50 2c 42 29 20 72 65 74 75 72 6e 73 20  (F,P,B) returns 
31160 28 42 21 3d 30 29 2e 0a 2a 2a 0a 2a 2a 20 54 68  (B!=0)..**.** Th
31170 65 20 73 71 6c 69 74 65 33 5f 75 72 69 5f 69 6e  e sqlite3_uri_in
31180 74 36 34 28 46 2c 50 2c 44 29 20 72 6f 75 74 69  t64(F,P,D) routi
31190 6e 65 20 63 6f 6e 76 65 72 74 73 20 74 68 65 20  ne converts the 
311a0 76 61 6c 75 65 20 6f 66 20 50 20 69 6e 74 6f 20  value of P into 
311b0 61 0a 2a 2a 20 36 34 2d 62 69 74 20 73 69 67 6e  a.** 64-bit sign
311c0 65 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20 72  ed integer and r
311d0 65 74 75 72 6e 73 20 74 68 61 74 20 69 6e 74 65  eturns that inte
311e0 67 65 72 2c 20 6f 72 20 44 20 69 66 20 50 20 64  ger, or D if P d
311f0 6f 65 73 20 6e 6f 74 0a 2a 2a 20 65 78 69 73 74  oes not.** exist
31200 2e 20 20 49 66 20 74 68 65 20 76 61 6c 75 65 20  .  If the value 
31210 6f 66 20 50 20 69 73 20 73 6f 6d 65 74 68 69 6e  of P is somethin
31220 67 20 6f 74 68 65 72 20 74 68 61 6e 20 61 6e 20  g other than an 
31230 69 6e 74 65 67 65 72 2c 20 74 68 65 6e 0a 2a 2a  integer, then.**
31240 20 7a 65 72 6f 20 69 73 20 72 65 74 75 72 6e 65   zero is returne
31250 64 2e 0a 2a 2a 20 0a 2a 2a 20 49 66 20 46 20 69  d..** .** If F i
31260 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65 72  s a NULL pointer
31270 2c 20 74 68 65 6e 20 73 71 6c 69 74 65 33 5f 75  , then sqlite3_u
31280 72 69 5f 70 61 72 61 6d 65 74 65 72 28 46 2c 50  ri_parameter(F,P
31290 29 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20 61  ) returns NULL a
312a0 6e 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 75 72  nd.** sqlite3_ur
312b0 69 5f 62 6f 6f 6c 65 61 6e 28 46 2c 50 2c 42 29  i_boolean(F,P,B)
312c0 20 72 65 74 75 72 6e 73 20 42 2e 20 20 49 66 20   returns B.  If 
312d0 46 20 69 73 20 6e 6f 74 20 61 20 4e 55 4c 4c 20  F is not a NULL 
312e0 70 6f 69 6e 74 65 72 20 61 6e 64 0a 2a 2a 20 69  pointer and.** i
312f0 73 20 6e 6f 74 20 61 20 64 61 74 61 62 61 73 65  s not a database
31300 20 66 69 6c 65 20 70 61 74 68 6e 61 6d 65 20 70   file pathname p
31310 6f 69 6e 74 65 72 20 74 68 61 74 20 53 51 4c 69  ointer that SQLi
31320 74 65 20 70 61 73 73 65 64 20 69 6e 74 6f 20 74  te passed into t
31330 68 65 20 78 4f 70 65 6e 0a 2a 2a 20 56 46 53 20  he xOpen.** VFS 
31340 6d 65 74 68 6f 64 2c 20 74 68 65 6e 20 74 68 65  method, then the
31350 20 62 65 68 61 76 69 6f 72 20 6f 66 20 74 68 69   behavior of thi
31360 73 20 72 6f 75 74 69 6e 65 20 69 73 20 75 6e 64  s routine is und
31370 65 66 69 6e 65 64 20 61 6e 64 20 70 72 6f 62 61  efined and proba
31380 62 6c 79 0a 2a 2a 20 75 6e 64 65 73 69 72 61 62  bly.** undesirab
31390 6c 65 2e 0a 2a 2a 0a 2a 2a 20 53 65 65 20 74 68  le..**.** See th
313a0 65 20 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d  e [URI filename]
313b0 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66   documentation f
313c0 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
313d0 66 6f 72 6d 61 74 69 6f 6e 2e 0a 2a 2f 0a 53 51  formation..*/.SQ
313e0 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63  LITE_API const c
313f0 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 75 72 69  har *sqlite3_uri
31400 5f 70 61 72 61 6d 65 74 65 72 28 63 6f 6e 73 74  _parameter(const
31410 20 63 68 61 72 20 2a 7a 46 69 6c 65 6e 61 6d 65   char *zFilename
31420 2c 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 50  , const char *zP
31430 61 72 61 6d 29 3b 0a 53 51 4c 49 54 45 5f 41 50  aram);.SQLITE_AP
31440 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 75 72  I int sqlite3_ur
31450 69 5f 62 6f 6f 6c 65 61 6e 28 63 6f 6e 73 74 20  i_boolean(const 
31460 63 68 61 72 20 2a 7a 46 69 6c 65 2c 20 63 6f 6e  char *zFile, con
31470 73 74 20 63 68 61 72 20 2a 7a 50 61 72 61 6d 2c  st char *zParam,
31480 20 69 6e 74 20 62 44 65 66 61 75 6c 74 29 3b 0a   int bDefault);.
31490 53 51 4c 49 54 45 5f 41 50 49 20 73 71 6c 69 74  SQLITE_API sqlit
314a0 65 33 5f 69 6e 74 36 34 20 73 71 6c 69 74 65 33  e3_int64 sqlite3
314b0 5f 75 72 69 5f 69 6e 74 36 34 28 63 6f 6e 73 74  _uri_int64(const
314c0 20 63 68 61 72 2a 2c 20 63 6f 6e 73 74 20 63 68   char*, const ch
314d0 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 69 6e 74  ar*, sqlite3_int
314e0 36 34 29 3b 0a 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  64);.../*.** CAP
314f0 49 33 52 45 46 3a 20 45 72 72 6f 72 20 43 6f 64  I3REF: Error Cod
31500 65 73 20 41 6e 64 20 4d 65 73 73 61 67 65 73 0a  es And Messages.
31510 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
31520 65 33 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65  e3.**.** ^If the
31530 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 73 71 6c   most recent sql
31540 69 74 65 33 5f 2a 20 41 50 49 20 63 61 6c 6c 20  ite3_* API call 
31550 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20  associated with 
31560 0a 2a 2a 20 5b 64 61 74 61 62 61 73 65 20 63 6f  .** [database co
31570 6e 6e 65 63 74 69 6f 6e 5d 20 44 20 66 61 69 6c  nnection] D fail
31580 65 64 2c 20 74 68 65 6e 20 74 68 65 20 73 71 6c  ed, then the sql
31590 69 74 65 33 5f 65 72 72 63 6f 64 65 28 44 29 20  ite3_errcode(D) 
315a0 69 6e 74 65 72 66 61 63 65 0a 2a 2a 20 72 65 74  interface.** ret
315b0 75 72 6e 73 20 74 68 65 20 6e 75 6d 65 72 69 63  urns the numeric
315c0 20 5b 72 65 73 75 6c 74 20 63 6f 64 65 5d 20 6f   [result code] o
315d0 72 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75  r [extended resu
315e0 6c 74 20 63 6f 64 65 5d 20 66 6f 72 20 74 68 61  lt code] for tha
315f0 74 0a 2a 2a 20 41 50 49 20 63 61 6c 6c 2e 0a 2a  t.** API call..*
31600 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65  * ^The sqlite3_e
31610 78 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28  xtended_errcode(
31620 29 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 69  ).** interface i
31630 73 20 74 68 65 20 73 61 6d 65 20 65 78 63 65 70  s the same excep
31640 74 20 74 68 61 74 20 69 74 20 61 6c 77 61 79 73  t that it always
31650 20 72 65 74 75 72 6e 73 20 74 68 65 20 0a 2a 2a   returns the .**
31660 20 5b 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c   [extended resul
31670 74 20 63 6f 64 65 5d 20 65 76 65 6e 20 77 68 65  t code] even whe
31680 6e 20 65 78 74 65 6e 64 65 64 20 72 65 73 75 6c  n extended resul
31690 74 20 63 6f 64 65 73 20 61 72 65 0a 2a 2a 20 64  t codes are.** d
316a0 69 73 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20 54  isabled..**.** T
316b0 68 65 20 76 61 6c 75 65 73 20 72 65 74 75 72 6e  he values return
316c0 65 64 20 62 79 20 73 71 6c 69 74 65 33 5f 65 72  ed by sqlite3_er
316d0 72 63 6f 64 65 28 29 20 61 6e 64 2f 6f 72 0a 2a  rcode() and/or.*
316e0 2a 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  * sqlite3_extend
316f0 65 64 5f 65 72 72 63 6f 64 65 28 29 20 6d 69 67  ed_errcode() mig
31700 68 74 20 63 68 61 6e 67 65 20 77 69 74 68 20 65  ht change with e
31710 61 63 68 20 41 50 49 20 63 61 6c 6c 2e 0a 2a 2a  ach API call..**
31720 20 45 78 63 65 70 74 2c 20 74 68 65 72 65 20 61   Except, there a
31730 72 65 20 73 6f 6d 65 20 69 6e 74 65 72 66 61 63  re some interfac
31740 65 73 20 74 68 61 74 20 61 72 65 20 67 75 61 72  es that are guar
31750 61 6e 74 65 65 64 20 74 6f 20 6e 65 76 65 72 0a  anteed to never.
31760 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 76 61  ** change the va
31770 6c 75 65 20 6f 66 20 74 68 65 20 65 72 72 6f 72  lue of the error
31780 20 63 6f 64 65 2e 20 20 54 68 65 20 65 72 72 6f   code.  The erro
31790 72 2d 63 6f 64 65 20 70 72 65 73 65 72 76 69 6e  r-code preservin
317a0 67 0a 2a 2a 20 69 6e 74 65 72 66 61 63 65 73 20  g.** interfaces 
317b0 61 72 65 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  are:.**.** <ul>.
317c0 2a 2a 20 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f  ** <li> sqlite3_
317d0 65 72 72 63 6f 64 65 28 29 0a 2a 2a 20 3c 6c 69  errcode().** <li
317e0 3e 20 73 71 6c 69 74 65 33 5f 65 78 74 65 6e 64  > sqlite3_extend
317f0 65 64 5f 65 72 72 63 6f 64 65 28 29 0a 2a 2a 20  ed_errcode().** 
31800 3c 6c 69 3e 20 73 71 6c 69 74 65 33 5f 65 72 72  <li> sqlite3_err
31810 6d 73 67 28 29 0a 2a 2a 20 3c 6c 69 3e 20 73 71  msg().** <li> sq
31820 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 28 29  lite3_errmsg16()
31830 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a 2a 20  .** </ul>.**.** 
31840 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 65 72 72  ^The sqlite3_err
31850 6d 73 67 28 29 20 61 6e 64 20 73 71 6c 69 74 65  msg() and sqlite
31860 33 5f 65 72 72 6d 73 67 31 36 28 29 20 72 65 74  3_errmsg16() ret
31870 75 72 6e 20 45 6e 67 6c 69 73 68 2d 6c 61 6e 67  urn English-lang
31880 75 61 67 65 0a 2a 2a 20 74 65 78 74 20 74 68 61  uage.** text tha
31890 74 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20  t describes the 
318a0 65 72 72 6f 72 2c 20 61 73 20 65 69 74 68 65 72  error, as either
318b0 20 55 54 46 2d 38 20 6f 72 20 55 54 46 2d 31 36   UTF-8 or UTF-16
318c0 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 2a   respectively..*
318d0 2a 20 5e 28 4d 65 6d 6f 72 79 20 74 6f 20 68 6f  * ^(Memory to ho
318e0 6c 64 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73  ld the error mes
318f0 73 61 67 65 20 73 74 72 69 6e 67 20 69 73 20 6d  sage string is m
31900 61 6e 61 67 65 64 20 69 6e 74 65 72 6e 61 6c 6c  anaged internall
31910 79 2e 0a 2a 2a 20 54 68 65 20 61 70 70 6c 69 63  y..** The applic
31920 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 6e  ation does not n
31930 65 65 64 20 74 6f 20 77 6f 72 72 79 20 61 62 6f  eed to worry abo
31940 75 74 20 66 72 65 65 69 6e 67 20 74 68 65 20 72  ut freeing the r
31950 65 73 75 6c 74 2e 0a 2a 2a 20 48 6f 77 65 76 65  esult..** Howeve
31960 72 2c 20 74 68 65 20 65 72 72 6f 72 20 73 74 72  r, the error str
31970 69 6e 67 20 6d 69 67 68 74 20 62 65 20 6f 76 65  ing might be ove
31980 72 77 72 69 74 74 65 6e 20 6f 72 20 64 65 61 6c  rwritten or deal
31990 6c 6f 63 61 74 65 64 20 62 79 0a 2a 2a 20 73 75  located by.** su
319a0 62 73 65 71 75 65 6e 74 20 63 61 6c 6c 73 20 74  bsequent calls t
319b0 6f 20 6f 74 68 65 72 20 53 51 4c 69 74 65 20 69  o other SQLite i
319c0 6e 74 65 72 66 61 63 65 20 66 75 6e 63 74 69 6f  nterface functio
319d0 6e 73 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ns.)^.**.** ^The
319e0 20 73 71 6c 69 74 65 33 5f 65 72 72 73 74 72 28   sqlite3_errstr(
319f0 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
31a00 72 6e 73 20 74 68 65 20 45 6e 67 6c 69 73 68 2d  rns the English-
31a10 6c 61 6e 67 75 61 67 65 20 74 65 78 74 0a 2a 2a  language text.**
31a20 20 74 68 61 74 20 64 65 73 63 72 69 62 65 73 20   that describes 
31a30 74 68 65 20 5b 72 65 73 75 6c 74 20 63 6f 64 65  the [result code
31a40 5d 2c 20 61 73 20 55 54 46 2d 38 2e 0a 2a 2a 20  ], as UTF-8..** 
31a50 5e 28 4d 65 6d 6f 72 79 20 74 6f 20 68 6f 6c 64  ^(Memory to hold
31a60 20 74 68 65 20 65 72 72 6f 72 20 6d 65 73 73 61   the error messa
31a70 67 65 20 73 74 72 69 6e 67 20 69 73 20 6d 61 6e  ge string is man
31a80 61 67 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79 0a  aged internally.
31a90 2a 2a 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20  ** and must not 
31aa0 62 65 20 66 72 65 65 64 20 62 79 20 74 68 65 20  be freed by the 
31ab0 61 70 70 6c 69 63 61 74 69 6f 6e 29 5e 2e 0a 2a  application)^..*
31ac0 2a 0a 2a 2a 20 57 68 65 6e 20 74 68 65 20 73 65  *.** When the se
31ad0 72 69 61 6c 69 7a 65 64 20 5b 74 68 72 65 61 64  rialized [thread
31ae0 69 6e 67 20 6d 6f 64 65 5d 20 69 73 20 69 6e 20  ing mode] is in 
31af0 75 73 65 2c 20 69 74 20 6d 69 67 68 74 20 62 65  use, it might be
31b00 20 74 68 65 0a 2a 2a 20 63 61 73 65 20 74 68 61   the.** case tha
31b10 74 20 61 20 73 65 63 6f 6e 64 20 65 72 72 6f 72  t a second error
31b20 20 6f 63 63 75 72 73 20 6f 6e 20 61 20 73 65 70   occurs on a sep
31b30 61 72 61 74 65 20 74 68 72 65 61 64 20 69 6e 20  arate thread in 
31b40 62 65 74 77 65 65 6e 0a 2a 2a 20 74 68 65 20 74  between.** the t
31b50 69 6d 65 20 6f 66 20 74 68 65 20 66 69 72 73 74  ime of the first
31b60 20 65 72 72 6f 72 20 61 6e 64 20 74 68 65 20 63   error and the c
31b70 61 6c 6c 20 74 6f 20 74 68 65 73 65 20 69 6e 74  all to these int
31b80 65 72 66 61 63 65 73 2e 0a 2a 2a 20 57 68 65 6e  erfaces..** When
31b90 20 74 68 61 74 20 68 61 70 70 65 6e 73 2c 20 74   that happens, t
31ba0 68 65 20 73 65 63 6f 6e 64 20 65 72 72 6f 72 20  he second error 
31bb0 77 69 6c 6c 20 62 65 20 72 65 70 6f 72 74 65 64  will be reported
31bc0 20 73 69 6e 63 65 20 74 68 65 73 65 0a 2a 2a 20   since these.** 
31bd0 69 6e 74 65 72 66 61 63 65 73 20 61 6c 77 61 79  interfaces alway
31be0 73 20 72 65 70 6f 72 74 20 74 68 65 20 6d 6f 73  s report the mos
31bf0 74 20 72 65 63 65 6e 74 20 72 65 73 75 6c 74 2e  t recent result.
31c00 20 20 54 6f 20 61 76 6f 69 64 0a 2a 2a 20 74 68    To avoid.** th
31c10 69 73 2c 20 65 61 63 68 20 74 68 72 65 61 64 20  is, each thread 
31c20 63 61 6e 20 6f 62 74 61 69 6e 20 65 78 63 6c 75  can obtain exclu
31c30 73 69 76 65 20 75 73 65 20 6f 66 20 74 68 65 20  sive use of the 
31c40 5b 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63  [database connec
31c50 74 69 6f 6e 5d 20 44 0a 2a 2a 20 62 79 20 69 6e  tion] D.** by in
31c60 76 6f 6b 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f  voking [sqlite3_
31c70 6d 75 74 65 78 5f 65 6e 74 65 72 5d 28 5b 73 71  mutex_enter]([sq
31c80 6c 69 74 65 33 5f 64 62 5f 6d 75 74 65 78 5d 28  lite3_db_mutex](
31c90 44 29 29 20 62 65 66 6f 72 65 20 62 65 67 69 6e  D)) before begin
31ca0 6e 69 6e 67 0a 2a 2a 20 74 6f 20 75 73 65 20 44  ning.** to use D
31cb0 20 61 6e 64 20 69 6e 76 6f 6b 69 6e 67 20 5b 73   and invoking [s
31cc0 71 6c 69 74 65 33 5f 6d 75 74 65 78 5f 6c 65 61  qlite3_mutex_lea
31cd0 76 65 5d 28 5b 73 71 6c 69 74 65 33 5f 64 62 5f  ve]([sqlite3_db_
31ce0 6d 75 74 65 78 5d 28 44 29 29 20 61 66 74 65 72  mutex](D)) after
31cf0 0a 2a 2a 20 61 6c 6c 20 63 61 6c 6c 73 20 74 6f  .** all calls to
31d00 20 74 68 65 20 69 6e 74 65 72 66 61 63 65 73 20   the interfaces 
31d10 6c 69 73 74 65 64 20 68 65 72 65 20 61 72 65 20  listed here are 
31d20 63 6f 6d 70 6c 65 74 65 64 2e 0a 2a 2a 0a 2a 2a  completed..**.**
31d30 20 49 66 20 61 6e 20 69 6e 74 65 72 66 61 63 65   If an interface
31d40 20 66 61 69 6c 73 20 77 69 74 68 20 53 51 4c 49   fails with SQLI
31d50 54 45 5f 4d 49 53 55 53 45 2c 20 74 68 61 74 20  TE_MISUSE, that 
31d60 6d 65 61 6e 73 20 74 68 65 20 69 6e 74 65 72 66  means the interf
31d70 61 63 65 0a 2a 2a 20 77 61 73 20 69 6e 76 6f 6b  ace.** was invok
31d80 65 64 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 62  ed incorrectly b
31d90 79 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  y the applicatio
31da0 6e 2e 20 20 49 6e 20 74 68 61 74 20 63 61 73 65  n.  In that case
31db0 2c 20 74 68 65 0a 2a 2a 20 65 72 72 6f 72 20 63  , the.** error c
31dc0 6f 64 65 20 61 6e 64 20 6d 65 73 73 61 67 65 20  ode and message 
31dd0 6d 61 79 20 6f 72 20 6d 61 79 20 6e 6f 74 20 62  may or may not b
31de0 65 20 73 65 74 2e 0a 2a 2f 0a 53 51 4c 49 54 45  e set..*/.SQLITE
31df0 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
31e00 5f 65 72 72 63 6f 64 65 28 73 71 6c 69 74 65 33  _errcode(sqlite3
31e10 20 2a 64 62 29 3b 0a 53 51 4c 49 54 45 5f 41 50   *db);.SQLITE_AP
31e20 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 65 78  I int sqlite3_ex
31e30 74 65 6e 64 65 64 5f 65 72 72 63 6f 64 65 28 73  tended_errcode(s
31e40 71 6c 69 74 65 33 20 2a 64 62 29 3b 0a 53 51 4c  qlite3 *db);.SQL
31e50 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68  ITE_API const ch
31e60 61 72 20 2a 73 71 6c 69 74 65 33 5f 65 72 72 6d  ar *sqlite3_errm
31e70 73 67 28 73 71 6c 69 74 65 33 2a 29 3b 0a 53 51  sg(sqlite3*);.SQ
31e80 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 76  LITE_API const v
31e90 6f 69 64 20 2a 73 71 6c 69 74 65 33 5f 65 72 72  oid *sqlite3_err
31ea0 6d 73 67 31 36 28 73 71 6c 69 74 65 33 2a 29 3b  msg16(sqlite3*);
31eb0 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e 73  .SQLITE_API cons
31ec0 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f  t char *sqlite3_
31ed0 65 72 72 73 74 72 28 69 6e 74 29 3b 0a 0a 2f 2a  errstr(int);../*
31ee0 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 50 72  .** CAPI3REF: Pr
31ef0 65 70 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74  epared Statement
31f00 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b 45 59 57 4f   Object.** KEYWO
31f10 52 44 53 3a 20 7b 70 72 65 70 61 72 65 64 20 73  RDS: {prepared s
31f20 74 61 74 65 6d 65 6e 74 7d 20 7b 70 72 65 70 61  tatement} {prepa
31f30 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 7d 0a  red statements}.
31f40 2a 2a 0a 2a 2a 20 41 6e 20 69 6e 73 74 61 6e 63  **.** An instanc
31f50 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74  e of this object
31f60 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 73 69   represents a si
31f70 6e 67 6c 65 20 53 51 4c 20 73 74 61 74 65 6d 65  ngle SQL stateme
31f80 6e 74 20 74 68 61 74 0a 2a 2a 20 68 61 73 20 62  nt that.** has b
31f90 65 65 6e 20 63 6f 6d 70 69 6c 65 64 20 69 6e 74  een compiled int
31fa0 6f 20 62 69 6e 61 72 79 20 66 6f 72 6d 20 61 6e  o binary form an
31fb0 64 20 69 73 20 72 65 61 64 79 20 74 6f 20 62 65  d is ready to be
31fc0 20 65 76 61 6c 75 61 74 65 64 2e 0a 2a 2a 0a 2a   evaluated..**.*
31fd0 2a 20 54 68 69 6e 6b 20 6f 66 20 65 61 63 68 20  * Think of each 
31fe0 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 61 73  SQL statement as
31ff0 20 61 20 73 65 70 61 72 61 74 65 20 63 6f 6d 70   a separate comp
32000 75 74 65 72 20 70 72 6f 67 72 61 6d 2e 20 20 54  uter program.  T
32010 68 65 0a 2a 2a 20 6f 72 69 67 69 6e 61 6c 20 53  he.** original S
32020 51 4c 20 74 65 78 74 20 69 73 20 73 6f 75 72 63  QL text is sourc
32030 65 20 63 6f 64 65 2e 20 20 41 20 70 72 65 70 61  e code.  A prepa
32040 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 6f 62  red statement ob
32050 6a 65 63 74 20 0a 2a 2a 20 69 73 20 74 68 65 20  ject .** is the 
32060 63 6f 6d 70 69 6c 65 64 20 6f 62 6a 65 63 74 20  compiled object 
32070 63 6f 64 65 2e 20 20 41 6c 6c 20 53 51 4c 20 6d  code.  All SQL m
32080 75 73 74 20 62 65 20 63 6f 6e 76 65 72 74 65 64  ust be converted
32090 20 69 6e 74 6f 20 61 0a 2a 2a 20 70 72 65 70 61   into a.** prepa
320a0 72 65 64 20 73 74 61 74 65 6d 65 6e 74 20 62 65  red statement be
320b0 66 6f 72 65 20 69 74 20 63 61 6e 20 62 65 20 72  fore it can be r
320c0 75 6e 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 6c 69  un..**.** The li
320d0 66 65 2d 63 79 63 6c 65 20 6f 66 20 61 20 70 72  fe-cycle of a pr
320e0 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
320f0 20 6f 62 6a 65 63 74 20 75 73 75 61 6c 6c 79 20   object usually 
32100 67 6f 65 73 20 6c 69 6b 65 20 74 68 69 73 3a 0a  goes like this:.
32110 2a 2a 0a 2a 2a 20 3c 6f 6c 3e 0a 2a 2a 20 3c 6c  **.** <ol>.** <l
32120 69 3e 20 43 72 65 61 74 65 20 74 68 65 20 70 72  i> Create the pr
32130 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
32140 20 6f 62 6a 65 63 74 20 75 73 69 6e 67 20 5b 73   object using [s
32150 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
32160 32 28 29 5d 2e 0a 2a 2a 20 3c 6c 69 3e 20 42 69  2()]..** <li> Bi
32170 6e 64 20 76 61 6c 75 65 73 20 74 6f 20 5b 70 61  nd values to [pa
32180 72 61 6d 65 74 65 72 73 5d 20 75 73 69 6e 67 20  rameters] using 
32190 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  the sqlite3_bind
321a0 5f 2a 28 29 0a 2a 2a 20 20 20 20 20 20 69 6e 74  _*().**      int
321b0 65 72 66 61 63 65 73 2e 0a 2a 2a 20 3c 6c 69 3e  erfaces..** <li>
321c0 20 52 75 6e 20 74 68 65 20 53 51 4c 20 62 79 20   Run the SQL by 
321d0 63 61 6c 6c 69 6e 67 20 5b 73 71 6c 69 74 65 33  calling [sqlite3
321e0 5f 73 74 65 70 28 29 5d 20 6f 6e 65 20 6f 72 20  _step()] one or 
321f0 6d 6f 72 65 20 74 69 6d 65 73 2e 0a 2a 2a 20 3c  more times..** <
32200 6c 69 3e 20 52 65 73 65 74 20 74 68 65 20 70 72  li> Reset the pr
32210 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
32220 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
32230 72 65 73 65 74 28 29 5d 20 74 68 65 6e 20 67 6f  reset()] then go
32240 20 62 61 63 6b 0a 2a 2a 20 20 20 20 20 20 74 6f   back.**      to
32250 20 73 74 65 70 20 32 2e 20 20 44 6f 20 74 68 69   step 2.  Do thi
32260 73 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 74  s zero or more t
32270 69 6d 65 73 2e 0a 2a 2a 20 3c 6c 69 3e 20 44 65  imes..** <li> De
32280 73 74 72 6f 79 20 74 68 65 20 6f 62 6a 65 63 74  stroy the object
32290 20 75 73 69 6e 67 20 5b 73 71 6c 69 74 65 33 5f   using [sqlite3_
322a0 66 69 6e 61 6c 69 7a 65 28 29 5d 2e 0a 2a 2a 20  finalize()]..** 
322b0 3c 2f 6f 6c 3e 0a 2a 2f 0a 74 79 70 65 64 65 66  </ol>.*/.typedef
322c0 20 73 74 72 75 63 74 20 73 71 6c 69 74 65 33 5f   struct sqlite3_
322d0 73 74 6d 74 20 73 71 6c 69 74 65 33 5f 73 74 6d  stmt sqlite3_stm
322e0 74 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52  t;../*.** CAPI3R
322f0 45 46 3a 20 52 75 6e 2d 74 69 6d 65 20 4c 69 6d  EF: Run-time Lim
32300 69 74 73 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73  its.** METHOD: s
32310 71 6c 69 74 65 33 0a 2a 2a 0a 2a 2a 20 5e 28 54  qlite3.**.** ^(T
32320 68 69 73 20 69 6e 74 65 72 66 61 63 65 20 61 6c  his interface al
32330 6c 6f 77 73 20 74 68 65 20 73 69 7a 65 20 6f 66  lows the size of
32340 20 76 61 72 69 6f 75 73 20 63 6f 6e 73 74 72 75   various constru
32350 63 74 73 20 74 6f 20 62 65 20 6c 69 6d 69 74 65  cts to be limite
32360 64 0a 2a 2a 20 6f 6e 20 61 20 63 6f 6e 6e 65 63  d.** on a connec
32370 74 69 6f 6e 20 62 79 20 63 6f 6e 6e 65 63 74 69  tion by connecti
32380 6f 6e 20 62 61 73 69 73 2e 20 20 54 68 65 20 66  on basis.  The f
32390 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 69  irst parameter i
323a0 73 20 74 68 65 0a 2a 2a 20 5b 64 61 74 61 62 61  s the.** [databa
323b0 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 5d 20 77  se connection] w
323c0 68 6f 73 65 20 6c 69 6d 69 74 20 69 73 20 74 6f  hose limit is to
323d0 20 62 65 20 73 65 74 20 6f 72 20 71 75 65 72 69   be set or queri
323e0 65 64 2e 20 20 54 68 65 0a 2a 2a 20 73 65 63 6f  ed.  The.** seco
323f0 6e 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20  nd parameter is 
32400 6f 6e 65 20 6f 66 20 74 68 65 20 5b 6c 69 6d 69  one of the [limi
32410 74 20 63 61 74 65 67 6f 72 69 65 73 5d 20 74 68  t categories] th
32420 61 74 20 64 65 66 69 6e 65 20 61 0a 2a 2a 20 63  at define a.** c
32430 6c 61 73 73 20 6f 66 20 63 6f 6e 73 74 72 75 63  lass of construc
32440 74 73 20 74 6f 20 62 65 20 73 69 7a 65 20 6c 69  ts to be size li
32450 6d 69 74 65 64 2e 20 20 54 68 65 20 74 68 69 72  mited.  The thir
32460 64 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74  d parameter is t
32470 68 65 0a 2a 2a 20 6e 65 77 20 6c 69 6d 69 74 20  he.** new limit 
32480 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72 75  for that constru
32490 63 74 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  ct.)^.**.** ^If 
324a0 74 68 65 20 6e 65 77 20 6c 69 6d 69 74 20 69 73  the new limit is
324b0 20 61 20 6e 65 67 61 74 69 76 65 20 6e 75 6d 62   a negative numb
324c0 65 72 2c 20 74 68 65 20 6c 69 6d 69 74 20 69 73  er, the limit is
324d0 20 75 6e 63 68 61 6e 67 65 64 2e 0a 2a 2a 20 5e   unchanged..** ^
324e0 28 46 6f 72 20 65 61 63 68 20 6c 69 6d 69 74 20  (For each limit 
324f0 63 61 74 65 67 6f 72 79 20 53 51 4c 49 54 45 5f  category SQLITE_
32500 4c 49 4d 49 54 5f 3c 69 3e 4e 41 4d 45 3c 2f 69  LIMIT_<i>NAME</i
32510 3e 20 74 68 65 72 65 20 69 73 20 61 20 0a 2a 2a  > there is a .**
32520 20 5b 6c 69 6d 69 74 73 20 7c 20 68 61 72 64 20   [limits | hard 
32530 75 70 70 65 72 20 62 6f 75 6e 64 5d 0a 2a 2a 20  upper bound].** 
32540 73 65 74 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74  set at compile-t
32550 69 6d 65 20 62 79 20 61 20 43 20 70 72 65 70 72  ime by a C prepr
32560 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20 63 61  ocessor macro ca
32570 6c 6c 65 64 0a 2a 2a 20 5b 6c 69 6d 69 74 73 20  lled.** [limits 
32580 7c 20 53 51 4c 49 54 45 5f 4d 41 58 5f 3c 69 3e  | SQLITE_MAX_<i>
32590 4e 41 4d 45 3c 2f 69 3e 5d 2e 0a 2a 2a 20 28 54  NAME</i>]..** (T
325a0 68 65 20 22 5f 4c 49 4d 49 54 5f 22 20 69 6e 20  he "_LIMIT_" in 
325b0 74 68 65 20 6e 61 6d 65 20 69 73 20 63 68 61 6e  the name is chan
325c0 67 65 64 20 74 6f 20 22 5f 4d 41 58 5f 22 2e 29  ged to "_MAX_".)
325d0 29 5e 0a 2a 2a 20 5e 41 74 74 65 6d 70 74 73 20  )^.** ^Attempts 
325e0 74 6f 20 69 6e 63 72 65 61 73 65 20 61 20 6c 69  to increase a li
325f0 6d 69 74 20 61 62 6f 76 65 20 69 74 73 20 68 61  mit above its ha
32600 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64 20 61  rd upper bound a
32610 72 65 0a 2a 2a 20 73 69 6c 65 6e 74 6c 79 20 74  re.** silently t
32620 72 75 6e 63 61 74 65 64 20 74 6f 20 74 68 65 20  runcated to the 
32630 68 61 72 64 20 75 70 70 65 72 20 62 6f 75 6e 64  hard upper bound
32640 2e 0a 2a 2a 0a 2a 2a 20 5e 52 65 67 61 72 64 6c  ..**.** ^Regardl
32650 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 6f  ess of whether o
32660 72 20 6e 6f 74 20 74 68 65 20 6c 69 6d 69 74 20  r not the limit 
32670 77 61 73 20 63 68 61 6e 67 65 64 2c 20 74 68 65  was changed, the
32680 20 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6c 69   .** [sqlite3_li
32690 6d 69 74 28 29 5d 20 69 6e 74 65 72 66 61 63 65  mit()] interface
326a0 20 72 65 74 75 72 6e 73 20 74 68 65 20 70 72 69   returns the pri
326b0 6f 72 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20  or value of the 
326c0 6c 69 6d 69 74 2e 0a 2a 2a 20 5e 48 65 6e 63 65  limit..** ^Hence
326d0 2c 20 74 6f 20 66 69 6e 64 20 74 68 65 20 63 75  , to find the cu
326e0 72 72 65 6e 74 20 76 61 6c 75 65 20 6f 66 20 61  rrent value of a
326f0 20 6c 69 6d 69 74 20 77 69 74 68 6f 75 74 20 63   limit without c
32700 68 61 6e 67 69 6e 67 20 69 74 2c 0a 2a 2a 20 73  hanging it,.** s
32710 69 6d 70 6c 79 20 69 6e 76 6f 6b 65 20 74 68 69  imply invoke thi
32720 73 20 69 6e 74 65 72 66 61 63 65 20 77 69 74 68  s interface with
32730 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61 6d   the third param
32740 65 74 65 72 20 73 65 74 20 74 6f 20 2d 31 2e 0a  eter set to -1..
32750 2a 2a 0a 2a 2a 20 52 75 6e 2d 74 69 6d 65 20 6c  **.** Run-time l
32760 69 6d 69 74 73 20 61 72 65 20 69 6e 74 65 6e 64  imits are intend
32770 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 61 70  ed for use in ap
32780 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74 20  plications that 
32790 6d 61 6e 61 67 65 0a 2a 2a 20 62 6f 74 68 20 74  manage.** both t
327a0 68 65 69 72 20 6f 77 6e 20 69 6e 74 65 72 6e 61  heir own interna
327b0 6c 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 61  l database and a
327c0 6c 73 6f 20 64 61 74 61 62 61 73 65 73 20 74 68  lso databases th
327d0 61 74 20 61 72 65 20 63 6f 6e 74 72 6f 6c 6c 65  at are controlle
327e0 64 0a 2a 2a 20 62 79 20 75 6e 74 72 75 73 74 65  d.** by untruste
327f0 64 20 65 78 74 65 72 6e 61 6c 20 73 6f 75 72 63  d external sourc
32800 65 73 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20  es.  An example 
32810 61 70 70 6c 69 63 61 74 69 6f 6e 20 6d 69 67 68  application migh
32820 74 20 62 65 20 61 0a 2a 2a 20 77 65 62 20 62 72  t be a.** web br
32830 6f 77 73 65 72 20 74 68 61 74 20 68 61 73 20 69  owser that has i
32840 74 73 20 6f 77 6e 20 64 61 74 61 62 61 73 65 73  ts own databases
32850 20 66 6f 72 20 73 74 6f 72 69 6e 67 20 68 69 73   for storing his
32860 74 6f 72 79 20 61 6e 64 0a 2a 2a 20 73 65 70 61  tory and.** sepa
32870 72 61 74 65 20 64 61 74 61 62 61 73 65 73 20 63  rate databases c
32880 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 4a 61 76  ontrolled by Jav
32890 61 53 63 72 69 70 74 20 61 70 70 6c 69 63 61 74  aScript applicat
328a0 69 6f 6e 73 20 64 6f 77 6e 6c 6f 61 64 65 64 0a  ions downloaded.
328b0 2a 2a 20 6f 66 66 20 74 68 65 20 49 6e 74 65 72  ** off the Inter
328c0 6e 65 74 2e 20 20 54 68 65 20 69 6e 74 65 72 6e  net.  The intern
328d0 61 6c 20 64 61 74 61 62 61 73 65 73 20 63 61 6e  al databases can
328e0 20 62 65 20 67 69 76 65 6e 20 74 68 65 0a 2a 2a   be given the.**
328f0 20 6c 61 72 67 65 2c 20 64 65 66 61 75 6c 74 20   large, default 
32900 6c 69 6d 69 74 73 2e 20 20 44 61 74 61 62 61 73  limits.  Databas
32910 65 73 20 6d 61 6e 61 67 65 64 20 62 79 20 65 78  es managed by ex
32920 74 65 72 6e 61 6c 20 73 6f 75 72 63 65 73 20 63  ternal sources c
32930 61 6e 0a 2a 2a 20 62 65 20 67 69 76 65 6e 20 6d  an.** be given m
32940 75 63 68 20 73 6d 61 6c 6c 65 72 20 6c 69 6d 69  uch smaller limi
32950 74 73 20 64 65 73 69 67 6e 65 64 20 74 6f 20 70  ts designed to p
32960 72 65 76 65 6e 74 20 61 20 64 65 6e 69 61 6c 20  revent a denial 
32970 6f 66 20 73 65 72 76 69 63 65 0a 2a 2a 20 61 74  of service.** at
32980 74 61 63 6b 2e 20 20 44 65 76 65 6c 6f 70 65 72  tack.  Developer
32990 73 20 6d 69 67 68 74 20 61 6c 73 6f 20 77 61 6e  s might also wan
329a0 74 20 74 6f 20 75 73 65 20 74 68 65 20 5b 73 71  t to use the [sq
329b0 6c 69 74 65 33 5f 73 65 74 5f 61 75 74 68 6f 72  lite3_set_author
329c0 69 7a 65 72 28 29 5d 0a 2a 2a 20 69 6e 74 65 72  izer()].** inter
329d0 66 61 63 65 20 74 6f 20 66 75 72 74 68 65 72 20  face to further 
329e0 63 6f 6e 74 72 6f 6c 20 75 6e 74 72 75 73 74 65  control untruste
329f0 64 20 53 51 4c 2e 20 20 54 68 65 20 73 69 7a 65  d SQL.  The size
32a00 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
32a10 0a 2a 2a 20 63 72 65 61 74 65 64 20 62 79 20 61  .** created by a
32a20 6e 20 75 6e 74 72 75 73 74 65 64 20 73 63 72 69  n untrusted scri
32a30 70 74 20 63 61 6e 20 62 65 20 63 6f 6e 74 61 69  pt can be contai
32a40 6e 65 64 20 75 73 69 6e 67 20 74 68 65 0a 2a 2a  ned using the.**
32a50 20 5b 6d 61 78 5f 70 61 67 65 5f 63 6f 75 6e 74   [max_page_count
32a60 5d 20 5b 50 52 41 47 4d 41 5d 2e 0a 2a 2a 0a 2a  ] [PRAGMA]..**.*
32a70 2a 20 4e 65 77 20 72 75 6e 2d 74 69 6d 65 20 6c  * New run-time l
32a80 69 6d 69 74 20 63 61 74 65 67 6f 72 69 65 73 20  imit categories 
32a90 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e 20  may be added in 
32aa0 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73 2e  future releases.
32ab0 0a 2a 2f 0a 53 51 4c 49 54 45 5f 41 50 49 20 69  .*/.SQLITE_API i
32ac0 6e 74 20 73 71 6c 69 74 65 33 5f 6c 69 6d 69 74  nt sqlite3_limit
32ad0 28 73 71 6c 69 74 65 33 2a 2c 20 69 6e 74 20 69  (sqlite3*, int i
32ae0 64 2c 20 69 6e 74 20 6e 65 77 56 61 6c 29 3b 0a  d, int newVal);.
32af0 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a  ./*.** CAPI3REF:
32b00 20 52 75 6e 2d 54 69 6d 65 20 4c 69 6d 69 74 20   Run-Time Limit 
32b10 43 61 74 65 67 6f 72 69 65 73 0a 2a 2a 20 4b 45  Categories.** KE
32b20 59 57 4f 52 44 53 3a 20 7b 6c 69 6d 69 74 20 63  YWORDS: {limit c
32b30 61 74 65 67 6f 72 79 7d 20 7b 2a 6c 69 6d 69 74  ategory} {*limit
32b40 20 63 61 74 65 67 6f 72 69 65 73 7d 0a 2a 2a 0a   categories}.**.
32b50 2a 2a 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e  ** These constan
32b60 74 73 20 64 65 66 69 6e 65 20 76 61 72 69 6f 75  ts define variou
32b70 73 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6c 69  s performance li
32b80 6d 69 74 73 0a 2a 2a 20 74 68 61 74 20 63 61 6e  mits.** that can
32b90 20 62 65 20 6c 6f 77 65 72 65 64 20 61 74 20 72   be lowered at r
32ba0 75 6e 2d 74 69 6d 65 20 75 73 69 6e 67 20 5b 73  un-time using [s
32bb0 71 6c 69 74 65 33 5f 6c 69 6d 69 74 28 29 5d 2e  qlite3_limit()].
32bc0 0a 2a 2a 20 54 68 65 20 73 79 6e 6f 70 73 69 73  .** The synopsis
32bd0 20 6f 66 20 74 68 65 20 6d 65 61 6e 69 6e 67 73   of the meanings
32be0 20 6f 66 20 74 68 65 20 76 61 72 69 6f 75 73 20   of the various 
32bf0 6c 69 6d 69 74 73 20 69 73 20 73 68 6f 77 6e 20  limits is shown 
32c00 62 65 6c 6f 77 2e 0a 2a 2a 20 41 64 64 69 74 69  below..** Additi
32c10 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
32c20 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 61 74   is available at
32c30 20 5b 6c 69 6d 69 74 73 20 7c 20 4c 69 6d 69 74   [limits | Limit
32c40 73 20 69 6e 20 53 51 4c 69 74 65 5d 2e 0a 2a 2a  s in SQLite]..**
32c50 0a 2a 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51  .** <dl>.** [[SQ
32c60 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54  LITE_LIMIT_LENGT
32c70 48 5d 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45  H]] ^(<dt>SQLITE
32c80 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48 3c 2f 64  _LIMIT_LENGTH</d
32c90 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61  t>.** <dd>The ma
32ca0 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66 20 61 6e  ximum size of an
32cb0 79 20 73 74 72 69 6e 67 20 6f 72 20 42 4c 4f 42  y string or BLOB
32cc0 20 6f 72 20 74 61 62 6c 65 20 72 6f 77 2c 20 69   or table row, i
32cd0 6e 20 62 79 74 65 73 2e 3c 64 64 3e 29 5e 0a 2a  n bytes.<dd>)^.*
32ce0 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
32cf0 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 5d 5d  MIT_SQL_LENGTH]]
32d00 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
32d10 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48 3c 2f  MIT_SQL_LENGTH</
32d20 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
32d30 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66  aximum length of
32d40 20 61 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e   an SQL statemen
32d50 74 2c 20 69 6e 20 62 79 74 65 73 2e 3c 2f 64 64  t, in bytes.</dd
32d60 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
32d70 54 45 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 5d  TE_LIMIT_COLUMN]
32d80 5d 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c  ] ^(<dt>SQLITE_L
32d90 49 4d 49 54 5f 43 4f 4c 55 4d 4e 3c 2f 64 74 3e  IMIT_COLUMN</dt>
32da0 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
32db0 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  mum number of co
32dc0 6c 75 6d 6e 73 20 69 6e 20 61 20 74 61 62 6c 65  lumns in a table
32dd0 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 72 20 69   definition or i
32de0 6e 20 74 68 65 0a 2a 2a 20 72 65 73 75 6c 74 20  n the.** result 
32df0 73 65 74 20 6f 66 20 61 20 5b 53 45 4c 45 43 54  set of a [SELECT
32e00 5d 20 6f 72 20 74 68 65 20 6d 61 78 69 6d 75 6d  ] or the maximum
32e10 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
32e20 6e 73 20 69 6e 20 61 6e 20 69 6e 64 65 78 0a 2a  ns in an index.*
32e30 2a 20 6f 72 20 69 6e 20 61 6e 20 4f 52 44 45 52  * or in an ORDER
32e40 20 42 59 20 6f 72 20 47 52 4f 55 50 20 42 59 20   BY or GROUP BY 
32e50 63 6c 61 75 73 65 2e 3c 2f 64 64 3e 29 5e 0a 2a  clause.</dd>)^.*
32e60 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49  *.** [[SQLITE_LI
32e70 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 5d 5d  MIT_EXPR_DEPTH]]
32e80 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
32e90 4d 49 54 5f 45 58 50 52 5f 44 45 50 54 48 3c 2f  MIT_EXPR_DEPTH</
32ea0 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d  dt>.** <dd>The m
32eb0 61 78 69 6d 75 6d 20 64 65 70 74 68 20 6f 66 20  aximum depth of 
32ec0 74 68 65 20 70 61 72 73 65 20 74 72 65 65 20 6f  the parse tree o
32ed0 6e 20 61 6e 79 20 65 78 70 72 65 73 73 69 6f 6e  n any expression
32ee0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
32ef0 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 43 4f  [SQLITE_LIMIT_CO
32f00 4d 50 4f 55 4e 44 5f 53 45 4c 45 43 54 5d 5d 20  MPOUND_SELECT]] 
32f10 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d  ^(<dt>SQLITE_LIM
32f20 49 54 5f 43 4f 4d 50 4f 55 4e 44 5f 53 45 4c 45  IT_COMPOUND_SELE
32f30 43 54 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  CT</dt>.** <dd>T
32f40 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
32f50 72 20 6f 66 20 74 65 72 6d 73 20 69 6e 20 61 20  r of terms in a 
32f60 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
32f70 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 64 64 3e 29  statement.</dd>)
32f80 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45  ^.**.** [[SQLITE
32f90 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f 50 5d 5d  _LIMIT_VDBE_OP]]
32fa0 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
32fb0 4d 49 54 5f 56 44 42 45 5f 4f 50 3c 2f 64 74 3e  MIT_VDBE_OP</dt>
32fc0 0a 2a 2a 20 3c 64 64 3e 54 68 65 20 6d 61 78 69  .** <dd>The maxi
32fd0 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e  mum number of in
32fe0 73 74 72 75 63 74 69 6f 6e 73 20 69 6e 20 61 20  structions in a 
32ff0 76 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 20  virtual machine 
33000 70 72 6f 67 72 61 6d 0a 2a 2a 20 75 73 65 64 20  program.** used 
33010 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 6e 20  to implement an 
33020 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 20 20  SQL statement.  
33030 49 66 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  If [sqlite3_prep
33040 61 72 65 5f 76 32 28 29 5d 20 6f 72 0a 2a 2a 20  are_v2()] or.** 
33050 74 68 65 20 65 71 75 69 76 61 6c 65 6e 74 20 74  the equivalent t
33060 72 69 65 73 20 74 6f 20 61 6c 6c 6f 63 61 74 65  ries to allocate
33070 20 73 70 61 63 65 20 66 6f 72 20 6d 6f 72 65 20   space for more 
33080 74 68 61 6e 20 74 68 69 73 20 6d 61 6e 79 20 6f  than this many o
33090 70 63 6f 64 65 73 0a 2a 2a 20 69 6e 20 61 20 73  pcodes.** in a s
330a0 69 6e 67 6c 65 20 70 72 65 70 61 72 65 64 20 73  ingle prepared s
330b0 74 61 74 65 6d 65 6e 74 2c 20 61 6e 20 53 51 4c  tatement, an SQL
330c0 49 54 45 5f 4e 4f 4d 45 4d 20 65 72 72 6f 72 20  ITE_NOMEM error 
330d0 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 64 64  is returned.</dd
330e0 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49  >)^.**.** [[SQLI
330f0 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54 49 4f  TE_LIMIT_FUNCTIO
33100 4e 5f 41 52 47 5d 5d 20 5e 28 3c 64 74 3e 53 51  N_ARG]] ^(<dt>SQ
33110 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54  LITE_LIMIT_FUNCT
33120 49 4f 4e 5f 41 52 47 3c 2f 64 74 3e 0a 2a 2a 20  ION_ARG</dt>.** 
33130 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20  <dd>The maximum 
33140 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65  number of argume
33150 6e 74 73 20 6f 6e 20 61 20 66 75 6e 63 74 69 6f  nts on a functio
33160 6e 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20  n.</dd>)^.**.** 
33170 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41  [[SQLITE_LIMIT_A
33180 54 54 41 43 48 45 44 5d 5d 20 5e 28 3c 64 74 3e  TTACHED]] ^(<dt>
33190 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54  SQLITE_LIMIT_ATT
331a0 41 43 48 45 44 3c 2f 64 74 3e 0a 2a 2a 20 3c 64  ACHED</dt>.** <d
331b0 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75  d>The maximum nu
331c0 6d 62 65 72 20 6f 66 20 5b 41 54 54 41 43 48 20  mber of [ATTACH 
331d0 7c 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  | attached datab
331e0 61 73 65 73 5d 2e 29 5e 3c 2f 64 64 3e 0a 2a 2a  ases].)^</dd>.**
331f0 0a 2a 2a 20 5b 5b 53 51 4c 49 54 45 5f 4c 49 4d  .** [[SQLITE_LIM
33200 49 54 5f 4c 49 4b 45 5f 50 41 54 54 45 52 4e 5f  IT_LIKE_PATTERN_
33210 4c 45 4e 47 54 48 5d 5d 0a 2a 2a 20 5e 28 3c 64  LENGTH]].** ^(<d
33220 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c  t>SQLITE_LIMIT_L
33230 49 4b 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47  IKE_PATTERN_LENG
33240 54 48 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54  TH</dt>.** <dd>T
33250 68 65 20 6d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  he maximum lengt
33260 68 20 6f 66 20 74 68 65 20 70 61 74 74 65 72 6e  h of the pattern
33270 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65   argument to the
33280 20 5b 4c 49 4b 45 5d 20 6f 72 0a 2a 2a 20 5b 47   [LIKE] or.** [G
33290 4c 4f 42 5d 20 6f 70 65 72 61 74 6f 72 73 2e 3c  LOB] operators.<
332a0 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53  /dd>)^.**.** [[S
332b0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41 52 49  QLITE_LIMIT_VARI
332c0 41 42 4c 45 5f 4e 55 4d 42 45 52 5d 5d 0a 2a 2a  ABLE_NUMBER]].**
332d0 20 5e 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49   ^(<dt>SQLITE_LI
332e0 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e 55 4d  MIT_VARIABLE_NUM
332f0 42 45 52 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e  BER</dt>.** <dd>
33300 54 68 65 20 6d 61 78 69 6d 75 6d 20 69 6e 64 65  The maximum inde
33310 78 20 6e 75 6d 62 65 72 20 6f 66 20 61 6e 79 20  x number of any 
33320 5b 70 61 72 61 6d 65 74 65 72 5d 20 69 6e 20 61  [parameter] in a
33330 6e 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e  n SQL statement.
33340 29 5e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c 49 54  )^.**.** [[SQLIT
33350 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47 45 52 5f  E_LIMIT_TRIGGER_
33360 44 45 50 54 48 5d 5d 20 5e 28 3c 64 74 3e 53 51  DEPTH]] ^(<dt>SQ
33370 4c 49 54 45 5f 4c 49 4d 49 54 5f 54 52 49 47 47  LITE_LIMIT_TRIGG
33380 45 52 5f 44 45 50 54 48 3c 2f 64 74 3e 0a 2a 2a  ER_DEPTH</dt>.**
33390 20 3c 64 64 3e 54 68 65 20 6d 61 78 69 6d 75 6d   <dd>The maximum
333a0 20 64 65 70 74 68 20 6f 66 20 72 65 63 75 72 73   depth of recurs
333b0 69 6f 6e 20 66 6f 72 20 74 72 69 67 67 65 72 73  ion for triggers
333c0 2e 3c 2f 64 64 3e 29 5e 0a 2a 2a 0a 2a 2a 20 5b  .</dd>)^.**.** [
333d0 5b 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 57 4f  [SQLITE_LIMIT_WO
333e0 52 4b 45 52 5f 54 48 52 45 41 44 53 5d 5d 20 5e  RKER_THREADS]] ^
333f0 28 3c 64 74 3e 53 51 4c 49 54 45 5f 4c 49 4d 49  (<dt>SQLITE_LIMI
33400 54 5f 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53  T_WORKER_THREADS
33410 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
33420 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20   maximum number 
33430 6f 66 20 61 75 78 69 6c 69 61 72 79 20 77 6f 72  of auxiliary wor
33440 6b 65 72 20 74 68 72 65 61 64 73 20 74 68 61 74  ker threads that
33450 20 61 20 73 69 6e 67 6c 65 0a 2a 2a 20 5b 70 72   a single.** [pr
33460 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
33470 5d 20 6d 61 79 20 73 74 61 72 74 2e 3c 2f 64 64  ] may start.</dd
33480 3e 29 5e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a  >)^.** </dl>.*/.
33490 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c  #define SQLITE_L
334a0 49 4d 49 54 5f 4c 45 4e 47 54 48 20 20 20 20 20  IMIT_LENGTH     
334b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                 0
334c0 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
334d0 4c 49 4d 49 54 5f 53 51 4c 5f 4c 45 4e 47 54 48  LIMIT_SQL_LENGTH
334e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
334f0 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
33500 5f 4c 49 4d 49 54 5f 43 4f 4c 55 4d 4e 20 20 20  _LIMIT_COLUMN   
33510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33520 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   2.#define SQLIT
33530 45 5f 4c 49 4d 49 54 5f 45 58 50 52 5f 44 45 50  E_LIMIT_EXPR_DEP
33540 54 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20  TH              
33550 20 20 33 0a 23 64 65 66 69 6e 65 20 53 51 4c 49    3.#define SQLI
33560 54 45 5f 4c 49 4d 49 54 5f 43 4f 4d 50 4f 55 4e  TE_LIMIT_COMPOUN
33570 44 5f 53 45 4c 45 43 54 20 20 20 20 20 20 20 20  D_SELECT        
33580 20 20 20 34 0a 23 64 65 66 69 6e 65 20 53 51 4c     4.#define SQL
33590 49 54 45 5f 4c 49 4d 49 54 5f 56 44 42 45 5f 4f  ITE_LIMIT_VDBE_O
335a0 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  P               
335b0 20 20 20 20 35 0a 23 64 65 66 69 6e 65 20 53 51      5.#define SQ
335c0 4c 49 54 45 5f 4c 49 4d 49 54 5f 46 55 4e 43 54  LITE_LIMIT_FUNCT
335d0 49 4f 4e 5f 41 52 47 20 20 20 20 20 20 20 20 20  ION_ARG         
335e0 20 20 20 20 20 36 0a 23 64 65 66 69 6e 65 20 53       6.#define S
335f0 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 41 54 54 41  QLITE_LIMIT_ATTA
33600 43 48 45 44 20 20 20 20 20 20 20 20 20 20 20 20  CHED            
33610 20 20 20 20 20 20 37 0a 23 64 65 66 69 6e 65 20        7.#define 
33620 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 4c 49 4b  SQLITE_LIMIT_LIK
33630 45 5f 50 41 54 54 45 52 4e 5f 4c 45 4e 47 54 48  E_PATTERN_LENGTH
33640 20 20 20 20 20 20 20 38 0a 23 64 65 66 69 6e 65         8.#define
33650 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 56 41   SQLITE_LIMIT_VA
33660 52 49 41 42 4c 45 5f 4e 55 4d 42 45 52 20 20 20  RIABLE_NUMBER   
33670 20 20 20 20 20 20 20 20 39 0a 23 64 65 66 69 6e          9.#defin
33680 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f 54  e SQLITE_LIMIT_T
33690 52 49 47 47 45 52 5f 44 45 50 54 48 20 20 20 20  RIGGER_DEPTH    
336a0 20 20 20 20 20 20 20 20 31 30 0a 23 64 65 66 69          10.#defi
336b0 6e 65 20 53 51 4c 49 54 45 5f 4c 49 4d 49 54 5f  ne SQLITE_LIMIT_
336c0 57 4f 52 4b 45 52 5f 54 48 52 45 41 44 53 20 20  WORKER_THREADS  
336d0 20 20 20 20 20 20 20 20 20 31 31 0a 0a 2f 2a 0a           11../*.
336e0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 50 72 65  ** CAPI3REF: Pre
336f0 70 61 72 65 20 46 6c 61 67 73 0a 2a 2a 0a 2a 2a  pare Flags.**.**
33700 20 54 68 65 73 65 20 63 6f 6e 73 74 61 6e 74 73   These constants
33710 20 64 65 66 69 6e 65 20 76 61 72 69 6f 75 73 20   define various 
33720 66 6c 61 67 73 20 74 68 61 74 20 63 61 6e 20 62  flags that can b
33730 65 20 70 61 73 73 65 64 20 69 6e 74 6f 0a 2a 2a  e passed into.**
33740 20 22 70 72 65 70 46 6c 61 67 73 22 20 70 61 72   "prepFlags" par
33750 61 6d 65 74 65 72 20 6f 66 20 74 68 65 20 5b 73  ameter of the [s
33760 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
33770 33 28 29 5d 20 61 6e 64 0a 2a 2a 20 5b 73 71 6c  3()] and.** [sql
33780 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76  ite3_prepare16_v
33790 33 28 29 5d 20 69 6e 74 65 72 66 61 63 65 73 2e  3()] interfaces.
337a0 0a 2a 2a 0a 2a 2a 20 4e 65 77 20 66 6c 61 67 73  .**.** New flags
337b0 20 6d 61 79 20 62 65 20 61 64 64 65 64 20 69 6e   may be added in
337c0 20 66 75 74 75 72 65 20 72 65 6c 65 61 73 65 73   future releases
337d0 20 6f 66 20 53 51 4c 69 74 65 2e 0a 2a 2a 0a 2a   of SQLite..**.*
337e0 2a 20 3c 64 6c 3e 0a 2a 2a 20 5b 5b 53 51 4c 49  * <dl>.** [[SQLI
337f0 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52 53 49  TE_PREPARE_PERSI
33800 53 54 45 4e 54 5d 5d 20 5e 28 3c 64 74 3e 53 51  STENT]] ^(<dt>SQ
33810 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 50 45 52  LITE_PREPARE_PER
33820 53 49 53 54 45 4e 54 3c 2f 64 74 3e 0a 2a 2a 20  SISTENT</dt>.** 
33830 3c 64 64 3e 54 68 65 20 53 51 4c 49 54 45 5f 50  <dd>The SQLITE_P
33840 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e  REPARE_PERSISTEN
33850 54 20 66 6c 61 67 20 69 73 20 61 20 68 69 6e 74  T flag is a hint
33860 20 74 6f 20 74 68 65 20 71 75 65 72 79 20 70 6c   to the query pl
33870 61 6e 6e 65 72 0a 2a 2a 20 74 68 61 74 20 74 68  anner.** that th
33880 65 20 70 72 65 70 61 72 65 64 20 73 74 61 74 65  e prepared state
33890 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 72 65 74  ment will be ret
338a0 61 69 6e 65 64 20 66 6f 72 20 61 20 6c 6f 6e 67  ained for a long
338b0 20 74 69 6d 65 20 61 6e 64 0a 2a 2a 20 70 72 6f   time and.** pro
338c0 62 61 62 6c 79 20 72 65 75 73 65 64 20 6d 61 6e  bably reused man
338d0 79 20 74 69 6d 65 73 2e 29 5e 20 5e 57 69 74 68  y times.)^ ^With
338e0 6f 75 74 20 74 68 69 73 20 66 6c 61 67 2c 20 5b  out this flag, [
338f0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
33900 76 33 28 29 5d 0a 2a 2a 20 61 6e 64 20 5b 73 71  v3()].** and [sq
33910 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f  lite3_prepare16_
33920 76 33 28 29 5d 20 61 73 73 75 6d 65 20 74 68 61  v3()] assume tha
33930 74 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  t the prepared s
33940 74 61 74 65 6d 65 6e 74 20 77 69 6c 6c 20 0a 2a  tatement will .*
33950 2a 20 62 65 20 75 73 65 64 20 6a 75 73 74 20 6f  * be used just o
33960 6e 63 65 20 6f 72 20 61 74 20 6d 6f 73 74 20 61  nce or at most a
33970 20 66 65 77 20 74 69 6d 65 73 20 61 6e 64 20 74   few times and t
33980 68 65 6e 20 64 65 73 74 72 6f 79 65 64 20 75 73  hen destroyed us
33990 69 6e 67 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ing.** [sqlite3_
339a0 66 69 6e 61 6c 69 7a 65 28 29 5d 20 72 65 6c 61  finalize()] rela
339b0 74 69 76 65 6c 79 20 73 6f 6f 6e 2e 20 54 68 65  tively soon. The
339c0 20 63 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65   current impleme
339d0 6e 74 61 74 69 6f 6e 20 61 63 74 73 0a 2a 2a 20  ntation acts.** 
339e0 6f 6e 20 74 68 69 73 20 68 69 6e 74 20 62 79 20  on this hint by 
339f0 61 76 6f 69 64 69 6e 67 20 74 68 65 20 75 73 65  avoiding the use
33a00 20 6f 66 20 5b 6c 6f 6f 6b 61 73 69 64 65 20 6d   of [lookaside m
33a10 65 6d 6f 72 79 5d 20 73 6f 20 61 73 20 6e 6f 74  emory] so as not
33a20 20 74 6f 0a 2a 2a 20 64 65 70 6c 65 74 65 20 74   to.** deplete t
33a30 68 65 20 6c 69 6d 69 74 65 64 20 73 74 6f 72 65  he limited store
33a40 20 6f 66 20 6c 6f 6f 6b 61 73 69 64 65 20 6d 65   of lookaside me
33a50 6d 6f 72 79 2e 20 46 75 74 75 72 65 20 76 65 72  mory. Future ver
33a60 73 69 6f 6e 73 20 6f 66 0a 2a 2a 20 53 51 4c 69  sions of.** SQLi
33a70 74 65 20 6d 61 79 20 61 63 74 20 6f 6e 20 74 68  te may act on th
33a80 69 73 20 68 69 6e 74 20 64 69 66 66 65 72 65 6e  is hint differen
33a90 74 6c 79 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  tly..**.** [[SQL
33aa0 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d  ITE_PREPARE_NORM
33ab0 41 4c 49 5a 45 5d 5d 20 3c 64 74 3e 53 51 4c 49  ALIZE]] <dt>SQLI
33ac0 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41  TE_PREPARE_NORMA
33ad0 4c 49 5a 45 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64  LIZE</dt>.** <dd
33ae0 3e 54 68 65 20 53 51 4c 49 54 45 5f 50 52 45 50  >The SQLITE_PREP
33af0 41 52 45 5f 4e 4f 52 4d 41 4c 49 5a 45 20 66 6c  ARE_NORMALIZE fl
33b00 61 67 20 69 73 20 61 20 6e 6f 2d 6f 70 2e 20 54  ag is a no-op. T
33b10 68 69 73 20 66 6c 61 67 20 75 73 65 64 0a 2a 2a  his flag used.**
33b20 20 74 6f 20 62 65 20 72 65 71 75 69 72 65 64 20   to be required 
33b30 66 6f 72 20 61 6e 79 20 70 72 65 70 61 72 65 64  for any prepared
33b40 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
33b50 77 61 6e 74 65 64 20 74 6f 20 75 73 65 20 74 68  wanted to use th
33b60 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 6e 6f  e.** [sqlite3_no
33b70 72 6d 61 6c 69 7a 65 64 5f 73 71 6c 28 29 5d 20  rmalized_sql()] 
33b80 69 6e 74 65 72 66 61 63 65 2e 20 20 48 6f 77 65  interface.  Howe
33b90 76 65 72 2c 20 74 68 65 0a 2a 2a 20 5b 73 71 6c  ver, the.** [sql
33ba0 69 74 65 33 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f  ite3_normalized_
33bb0 73 71 6c 28 29 5d 20 69 6e 74 65 72 66 61 63 65  sql()] interface
33bc0 20 69 73 20 6e 6f 77 20 61 76 61 69 6c 61 62 6c   is now availabl
33bd0 65 20 74 6f 20 61 6c 6c 0a 2a 2a 20 70 72 65 70  e to all.** prep
33be0 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 2c  ared statements,
33bf0 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77   regardless of w
33c00 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
33c10 65 79 20 75 73 65 20 74 68 69 73 0a 2a 2a 20 66  ey use this.** f
33c20 6c 61 67 2e 0a 2a 2a 0a 2a 2a 20 5b 5b 53 51 4c  lag..**.** [[SQL
33c30 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 5f 56  ITE_PREPARE_NO_V
33c40 54 41 42 5d 5d 20 3c 64 74 3e 53 51 4c 49 54 45  TAB]] <dt>SQLITE
33c50 5f 50 52 45 50 41 52 45 5f 4e 4f 5f 56 54 41 42  _PREPARE_NO_VTAB
33c60 3c 2f 64 74 3e 0a 2a 2a 20 3c 64 64 3e 54 68 65  </dt>.** <dd>The
33c70 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f   SQLITE_PREPARE_
33c80 4e 4f 5f 56 54 41 42 20 66 6c 61 67 20 63 61 75  NO_VTAB flag cau
33c90 73 65 73 20 74 68 65 20 53 51 4c 20 63 6f 6d 70  ses the SQL comp
33ca0 69 6c 65 72 0a 2a 2a 20 74 6f 20 72 65 74 75 72  iler.** to retur
33cb0 6e 20 61 6e 20 65 72 72 6f 72 20 28 65 72 72 6f  n an error (erro
33cc0 72 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 45 52  r code SQLITE_ER
33cd0 52 4f 52 29 20 69 66 20 74 68 65 20 73 74 61 74  ROR) if the stat
33ce0 65 6d 65 6e 74 20 75 73 65 73 0a 2a 2a 20 61 6e  ement uses.** an
33cf0 79 20 76 69 72 74 75 61 6c 20 74 61 62 6c 65 73  y virtual tables
33d00 2e 0a 2a 2a 20 3c 2f 64 6c 3e 0a 2a 2f 0a 23 64  ..** </dl>.*/.#d
33d10 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 50 52 45  efine SQLITE_PRE
33d20 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e 54 20  PARE_PERSISTENT 
33d30 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30               0x0
33d40 31 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45  1.#define SQLITE
33d50 5f 50 52 45 50 41 52 45 5f 4e 4f 52 4d 41 4c 49  _PREPARE_NORMALI
33d60 5a 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ZE              
33d70 20 30 78 30 32 0a 23 64 65 66 69 6e 65 20 53 51   0x02.#define SQ
33d80 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 4e 4f 5f  LITE_PREPARE_NO_
33d90 56 54 41 42 20 20 20 20 20 20 20 20 20 20 20 20  VTAB            
33da0 20 20 20 20 20 30 78 30 34 0a 0a 2f 2a 0a 2a 2a       0x04../*.**
33db0 20 43 41 50 49 33 52 45 46 3a 20 43 6f 6d 70 69   CAPI3REF: Compi
33dc0 6c 69 6e 67 20 41 6e 20 53 51 4c 20 53 74 61 74  ling An SQL Stat
33dd0 65 6d 65 6e 74 0a 2a 2a 20 4b 45 59 57 4f 52 44  ement.** KEYWORD
33de0 53 3a 20 7b 53 51 4c 20 73 74 61 74 65 6d 65 6e  S: {SQL statemen
33df0 74 20 63 6f 6d 70 69 6c 65 72 7d 0a 2a 2a 20 4d  t compiler}.** M
33e00 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33 0a 2a  ETHOD: sqlite3.*
33e10 2a 20 43 4f 4e 53 54 52 55 43 54 4f 52 3a 20 73  * CONSTRUCTOR: s
33e20 71 6c 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a  qlite3_stmt.**.*
33e30 2a 20 54 6f 20 65 78 65 63 75 74 65 20 61 6e 20  * To execute an 
33e40 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 69  SQL statement, i
33e50 74 20 6d 75 73 74 20 66 69 72 73 74 20 62 65 20  t must first be 
33e60 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20 61 20  compiled into a 
33e70 62 79 74 65 2d 63 6f 64 65 0a 2a 2a 20 70 72 6f  byte-code.** pro
33e80 67 72 61 6d 20 75 73 69 6e 67 20 6f 6e 65 20 6f  gram using one o
33e90 66 20 74 68 65 73 65 20 72 6f 75 74 69 6e 65 73  f these routines
33ea0 2e 20 20 4f 72 2c 20 69 6e 20 6f 74 68 65 72 20  .  Or, in other 
33eb0 77 6f 72 64 73 2c 20 74 68 65 73 65 20 72 6f 75  words, these rou
33ec0 74 69 6e 65 73 0a 2a 2a 20 61 72 65 20 63 6f 6e  tines.** are con
33ed0 73 74 72 75 63 74 6f 72 73 20 66 6f 72 20 74 68  structors for th
33ee0 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
33ef0 65 6d 65 6e 74 5d 20 6f 62 6a 65 63 74 2e 0a 2a  ement] object..*
33f00 2a 0a 2a 2a 20 54 68 65 20 70 72 65 66 65 72 72  *.** The preferr
33f10 65 64 20 72 6f 75 74 69 6e 65 20 74 6f 20 75 73  ed routine to us
33f20 65 20 69 73 20 5b 73 71 6c 69 74 65 33 5f 70 72  e is [sqlite3_pr
33f30 65 70 61 72 65 5f 76 32 28 29 5d 2e 20 20 54 68  epare_v2()].  Th
33f40 65 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72  e.** [sqlite3_pr
33f50 65 70 61 72 65 28 29 5d 20 69 6e 74 65 72 66 61  epare()] interfa
33f60 63 65 20 69 73 20 6c 65 67 61 63 79 20 61 6e 64  ce is legacy and
33f70 20 73 68 6f 75 6c 64 20 62 65 20 61 76 6f 69 64   should be avoid
33f80 65 64 2e 0a 2a 2a 20 5b 73 71 6c 69 74 65 33 5f  ed..** [sqlite3_
33f90 70 72 65 70 61 72 65 5f 76 33 28 29 5d 20 68 61  prepare_v3()] ha
33fa0 73 20 61 6e 20 65 78 74 72 61 20 22 70 72 65 70  s an extra "prep
33fb0 46 6c 61 67 73 22 20 6f 70 74 69 6f 6e 20 74 68  Flags" option th
33fc0 61 74 20 69 73 20 75 73 65 64 0a 2a 2a 20 66 6f  at is used.** fo
33fd0 72 20 73 70 65 63 69 61 6c 20 70 75 72 70 6f 73  r special purpos
33fe0 65 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 75 73  es..**.** The us
33ff0 65 20 6f 66 20 74 68 65 20 55 54 46 2d 38 20 69  e of the UTF-8 i
34000 6e 74 65 72 66 61 63 65 73 20 69 73 20 70 72 65  nterfaces is pre
34010 66 65 72 72 65 64 2c 20 61 73 20 53 51 4c 69 74  ferred, as SQLit
34020 65 20 63 75 72 72 65 6e 74 6c 79 0a 2a 2a 20 64  e currently.** d
34030 6f 65 73 20 61 6c 6c 20 70 61 72 73 69 6e 67 20  oes all parsing 
34040 75 73 69 6e 67 20 55 54 46 2d 38 2e 20 20 54 68  using UTF-8.  Th
34050 65 20 55 54 46 2d 31 36 20 69 6e 74 65 72 66 61  e UTF-16 interfa
34060 63 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64  ces are provided
34070 0a 2a 2a 20 61 73 20 61 20 63 6f 6e 76 65 6e 69  .** as a conveni
34080 65 6e 63 65 2e 20 20 54 68 65 20 55 54 46 2d 31  ence.  The UTF-1
34090 36 20 69 6e 74 65 72 66 61 63 65 73 20 77 6f 72  6 interfaces wor
340a0 6b 20 62 79 20 63 6f 6e 76 65 72 74 69 6e 67 20  k by converting 
340b0 74 68 65 0a 2a 2a 20 69 6e 70 75 74 20 74 65 78  the.** input tex
340c0 74 20 69 6e 74 6f 20 55 54 46 2d 38 2c 20 74 68  t into UTF-8, th
340d0 65 6e 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  en invoking the 
340e0 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 55 54  corresponding UT
340f0 46 2d 38 20 69 6e 74 65 72 66 61 63 65 2e 0a 2a  F-8 interface..*
34100 2a 0a 2a 2a 20 54 68 65 20 66 69 72 73 74 20 61  *.** The first a
34110 72 67 75 6d 65 6e 74 2c 20 22 64 62 22 2c 20 69  rgument, "db", i
34120 73 20 61 20 5b 64 61 74 61 62 61 73 65 20 63 6f  s a [database co
34130 6e 6e 65 63 74 69 6f 6e 5d 20 6f 62 74 61 69 6e  nnection] obtain
34140 65 64 20 66 72 6f 6d 20 61 0a 2a 2a 20 70 72 69  ed from a.** pri
34150 6f 72 20 73 75 63 63 65 73 73 66 75 6c 20 63 61  or successful ca
34160 6c 6c 20 74 6f 20 5b 73 71 6c 69 74 65 33 5f 6f  ll to [sqlite3_o
34170 70 65 6e 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  pen()], [sqlite3
34180 5f 6f 70 65 6e 5f 76 32 28 29 5d 20 6f 72 0a 2a  _open_v2()] or.*
34190 2a 20 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e 31  * [sqlite3_open1
341a0 36 28 29 5d 2e 20 20 54 68 65 20 64 61 74 61 62  6()].  The datab
341b0 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d  ase connection m
341c0 75 73 74 20 6e 6f 74 20 68 61 76 65 20 62 65 65  ust not have bee
341d0 6e 20 63 6c 6f 73 65 64 2e 0a 2a 2a 0a 2a 2a 20  n closed..**.** 
341e0 54 68 65 20 73 65 63 6f 6e 64 20 61 72 67 75 6d  The second argum
341f0 65 6e 74 2c 20 22 7a 53 71 6c 22 2c 20 69 73 20  ent, "zSql", is 
34200 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 74 6f  the statement to
34210 20 62 65 20 63 6f 6d 70 69 6c 65 64 2c 20 65 6e   be compiled, en
34220 63 6f 64 65 64 0a 2a 2a 20 61 73 20 65 69 74 68  coded.** as eith
34230 65 72 20 55 54 46 2d 38 20 6f 72 20 55 54 46 2d  er UTF-8 or UTF-
34240 31 36 2e 20 20 54 68 65 20 73 71 6c 69 74 65 33  16.  The sqlite3
34250 5f 70 72 65 70 61 72 65 28 29 2c 20 73 71 6c 69  _prepare(), sqli
34260 74 65 33 5f 70 72 65 70 61 72 65 5f 76 32 28 29  te3_prepare_v2()
34270 2c 0a 2a 2a 20 61 6e 64 20 73 71 6c 69 74 65 33  ,.** and sqlite3
34280 5f 70 72 65 70 61 72 65 5f 76 33 28 29 0a 2a 2a  _prepare_v3().**
34290 20 69 6e 74 65 72 66 61 63 65 73 20 75 73 65 20   interfaces use 
342a0 55 54 46 2d 38 2c 20 61 6e 64 20 73 71 6c 69 74  UTF-8, and sqlit
342b0 65 33 5f 70 72 65 70 61 72 65 31 36 28 29 2c 20  e3_prepare16(), 
342c0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
342d0 36 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73  6_v2(),.** and s
342e0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
342f0 5f 76 33 28 29 20 75 73 65 20 55 54 46 2d 31 36  _v3() use UTF-16
34300 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20 74 68 65 20  ..**.** ^If the 
34310 6e 42 79 74 65 20 61 72 67 75 6d 65 6e 74 20 69  nByte argument i
34320 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e  s negative, then
34330 20 7a 53 71 6c 20 69 73 20 72 65 61 64 20 75 70   zSql is read up
34340 20 74 6f 20 74 68 65 0a 2a 2a 20 66 69 72 73 74   to the.** first
34350 20 7a 65 72 6f 20 74 65 72 6d 69 6e 61 74 6f 72   zero terminator
34360 2e 20 5e 49 66 20 6e 42 79 74 65 20 69 73 20 70  . ^If nByte is p
34370 6f 73 69 74 69 76 65 2c 20 74 68 65 6e 20 69 74  ositive, then it
34380 20 69 73 20 74 68 65 0a 2a 2a 20 6e 75 6d 62 65   is the.** numbe
34390 72 20 6f 66 20 62 79 74 65 73 20 72 65 61 64 20  r of bytes read 
343a0 66 72 6f 6d 20 7a 53 71 6c 2e 20 20 5e 49 66 20  from zSql.  ^If 
343b0 6e 42 79 74 65 20 69 73 20 7a 65 72 6f 2c 20 74  nByte is zero, t
343c0 68 65 6e 20 6e 6f 20 70 72 65 70 61 72 65 64 0a  hen no prepared.
343d0 2a 2a 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  ** statement is 
343e0 67 65 6e 65 72 61 74 65 64 2e 0a 2a 2a 20 49 66  generated..** If
343f0 20 74 68 65 20 63 61 6c 6c 65 72 20 6b 6e 6f 77   the caller know
34400 73 20 74 68 61 74 20 74 68 65 20 73 75 70 70 6c  s that the suppl
34410 69 65 64 20 73 74 72 69 6e 67 20 69 73 20 6e 75  ied string is nu
34420 6c 2d 74 65 72 6d 69 6e 61 74 65 64 2c 20 74 68  l-terminated, th
34430 65 6e 0a 2a 2a 20 74 68 65 72 65 20 69 73 20 61  en.** there is a
34440 20 73 6d 61 6c 6c 20 70 65 72 66 6f 72 6d 61 6e   small performan
34450 63 65 20 61 64 76 61 6e 74 61 67 65 20 74 6f 20  ce advantage to 
34460 70 61 73 73 69 6e 67 20 61 6e 20 6e 42 79 74 65  passing an nByte
34470 20 70 61 72 61 6d 65 74 65 72 20 74 68 61 74 0a   parameter that.
34480 2a 2a 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72  ** is the number
34490 20 6f 66 20 62 79 74 65 73 20 69 6e 20 74 68 65   of bytes in the
344a0 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c 69   input string <i
344b0 3e 69 6e 63 6c 75 64 69 6e 67 3c 2f 69 3e 0a 2a  >including</i>.*
344c0 2a 20 74 68 65 20 6e 75 6c 2d 74 65 72 6d 69 6e  * the nul-termin
344d0 61 74 6f 72 2e 0a 2a 2a 0a 2a 2a 20 5e 49 66 20  ator..**.** ^If 
344e0 70 7a 54 61 69 6c 20 69 73 20 6e 6f 74 20 4e 55  pzTail is not NU
344f0 4c 4c 20 74 68 65 6e 20 2a 70 7a 54 61 69 6c 20  LL then *pzTail 
34500 69 73 20 6d 61 64 65 20 74 6f 20 70 6f 69 6e 74  is made to point
34510 20 74 6f 20 74 68 65 20 66 69 72 73 74 20 62 79   to the first by
34520 74 65 0a 2a 2a 20 70 61 73 74 20 74 68 65 20 65  te.** past the e
34530 6e 64 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  nd of the first 
34540 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 20 69 6e  SQL statement in
34550 20 7a 53 71 6c 2e 20 20 54 68 65 73 65 20 72 6f   zSql.  These ro
34560 75 74 69 6e 65 73 20 6f 6e 6c 79 0a 2a 2a 20 63  utines only.** c
34570 6f 6d 70 69 6c 65 20 74 68 65 20 66 69 72 73 74  ompile the first
34580 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 7a 53   statement in zS
34590 71 6c 2c 20 73 6f 20 2a 70 7a 54 61 69 6c 20 69  ql, so *pzTail i
345a0 73 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67 20  s left pointing 
345b0 74 6f 0a 2a 2a 20 77 68 61 74 20 72 65 6d 61 69  to.** what remai
345c0 6e 73 20 75 6e 63 6f 6d 70 69 6c 65 64 2e 0a 2a  ns uncompiled..*
345d0 2a 0a 2a 2a 20 5e 2a 70 70 53 74 6d 74 20 69 73  *.** ^*ppStmt is
345e0 20 6c 65 66 74 20 70 6f 69 6e 74 69 6e 67 20 74   left pointing t
345f0 6f 20 61 20 63 6f 6d 70 69 6c 65 64 20 5b 70 72  o a compiled [pr
34600 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
34610 5d 20 74 68 61 74 20 63 61 6e 20 62 65 0a 2a 2a  ] that can be.**
34620 20 65 78 65 63 75 74 65 64 20 75 73 69 6e 67 20   executed using 
34630 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
34640 2e 20 20 5e 49 66 20 74 68 65 72 65 20 69 73 20  .  ^If there is 
34650 61 6e 20 65 72 72 6f 72 2c 20 2a 70 70 53 74 6d  an error, *ppStm
34660 74 20 69 73 20 73 65 74 0a 2a 2a 20 74 6f 20 4e  t is set.** to N
34670 55 4c 4c 2e 20 20 5e 49 66 20 74 68 65 20 69 6e  ULL.  ^If the in
34680 70 75 74 20 74 65 78 74 20 63 6f 6e 74 61 69 6e  put text contain
34690 73 20 6e 6f 20 53 51 4c 20 28 69 66 20 74 68 65  s no SQL (if the
346a0 20 69 6e 70 75 74 20 69 73 20 61 6e 20 65 6d 70   input is an emp
346b0 74 79 0a 2a 2a 20 73 74 72 69 6e 67 20 6f 72 20  ty.** string or 
346c0 61 20 63 6f 6d 6d 65 6e 74 29 20 74 68 65 6e 20  a comment) then 
346d0 2a 70 70 53 74 6d 74 20 69 73 20 73 65 74 20 74  *ppStmt is set t
346e0 6f 20 4e 55 4c 4c 2e 0a 2a 2a 20 54 68 65 20 63  o NULL..** The c
346f0 61 6c 6c 69 6e 67 20 70 72 6f 63 65 64 75 72 65  alling procedure
34700 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 20   is responsible 
34710 66 6f 72 20 64 65 6c 65 74 69 6e 67 20 74 68 65  for deleting the
34720 20 63 6f 6d 70 69 6c 65 64 0a 2a 2a 20 53 51 4c   compiled.** SQL
34730 20 73 74 61 74 65 6d 65 6e 74 20 75 73 69 6e 67   statement using
34740 20 5b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69   [sqlite3_finali
34750 7a 65 28 29 5d 20 61 66 74 65 72 20 69 74 20 68  ze()] after it h
34760 61 73 20 66 69 6e 69 73 68 65 64 20 77 69 74 68  as finished with
34770 20 69 74 2e 0a 2a 2a 20 70 70 53 74 6d 74 20 6d   it..** ppStmt m
34780 61 79 20 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e 0a  ay not be NULL..
34790 2a 2a 0a 2a 2a 20 5e 4f 6e 20 73 75 63 63 65 73  **.** ^On succes
347a0 73 2c 20 74 68 65 20 73 71 6c 69 74 65 33 5f 70  s, the sqlite3_p
347b0 72 65 70 61 72 65 28 29 20 66 61 6d 69 6c 79 20  repare() family 
347c0 6f 66 20 72 6f 75 74 69 6e 65 73 20 72 65 74 75  of routines retu
347d0 72 6e 20 5b 53 51 4c 49 54 45 5f 4f 4b 5d 3b 0a  rn [SQLITE_OK];.
347e0 2a 2a 20 6f 74 68 65 72 77 69 73 65 20 61 6e 20  ** otherwise an 
347f0 5b 65 72 72 6f 72 20 63 6f 64 65 5d 20 69 73 20  [error code] is 
34800 72 65 74 75 72 6e 65 64 2e 0a 2a 2a 0a 2a 2a 20  returned..**.** 
34810 54 68 65 20 73 71 6c 69 74 65 33 5f 70 72 65 70  The sqlite3_prep
34820 61 72 65 5f 76 32 28 29 2c 20 73 71 6c 69 74 65  are_v2(), sqlite
34830 33 5f 70 72 65 70 61 72 65 5f 76 33 28 29 2c 20  3_prepare_v3(), 
34840 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
34850 36 5f 76 32 28 29 2c 0a 2a 2a 20 61 6e 64 20 73  6_v2(),.** and s
34860 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31 36  qlite3_prepare16
34870 5f 76 33 28 29 20 69 6e 74 65 72 66 61 63 65 73  _v3() interfaces
34880 20 61 72 65 20 72 65 63 6f 6d 6d 65 6e 64 65 64   are recommended
34890 20 66 6f 72 20 61 6c 6c 20 6e 65 77 20 70 72 6f   for all new pro
348a0 67 72 61 6d 73 2e 0a 2a 2a 20 54 68 65 20 6f 6c  grams..** The ol
348b0 64 65 72 20 69 6e 74 65 72 66 61 63 65 73 20 28  der interfaces (
348c0 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 28  sqlite3_prepare(
348d0 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 70 72  ) and sqlite3_pr
348e0 65 70 61 72 65 31 36 28 29 29 0a 2a 2a 20 61 72  epare16()).** ar
348f0 65 20 72 65 74 61 69 6e 65 64 20 66 6f 72 20 62  e retained for b
34900 61 63 6b 77 61 72 64 73 20 63 6f 6d 70 61 74 69  ackwards compati
34910 62 69 6c 69 74 79 2c 20 62 75 74 20 74 68 65 69  bility, but thei
34920 72 20 75 73 65 20 69 73 20 64 69 73 63 6f 75 72  r use is discour
34930 61 67 65 64 2e 0a 2a 2a 20 5e 49 6e 20 74 68 65  aged..** ^In the
34940 20 22 76 58 22 20 69 6e 74 65 72 66 61 63 65 73   "vX" interfaces
34950 2c 20 74 68 65 20 70 72 65 70 61 72 65 64 20 73  , the prepared s
34960 74 61 74 65 6d 65 6e 74 0a 2a 2a 20 74 68 61 74  tatement.** that
34970 20 69 73 20 72 65 74 75 72 6e 65 64 20 28 74 68   is returned (th
34980 65 20 5b 73 71 6c 69 74 65 33 5f 73 74 6d 74 5d  e [sqlite3_stmt]
34990 20 6f 62 6a 65 63 74 29 20 63 6f 6e 74 61 69 6e   object) contain
349a0 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 0a  s a copy of the.
349b0 2a 2a 20 6f 72 69 67 69 6e 61 6c 20 53 51 4c 20  ** original SQL 
349c0 74 65 78 74 2e 20 54 68 69 73 20 63 61 75 73 65  text. This cause
349d0 73 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 73  s the [sqlite3_s
349e0 74 65 70 28 29 5d 20 69 6e 74 65 72 66 61 63 65  tep()] interface
349f0 20 74 6f 0a 2a 2a 20 62 65 68 61 76 65 20 64 69   to.** behave di
34a00 66 66 65 72 65 6e 74 6c 79 20 69 6e 20 74 68 72  fferently in thr
34a10 65 65 20 77 61 79 73 3a 0a 2a 2a 0a 2a 2a 20 3c  ee ways:.**.** <
34a20 6f 6c 3e 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a 20 5e  ol>.** <li>.** ^
34a30 49 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20  If the database 
34a40 73 63 68 65 6d 61 20 63 68 61 6e 67 65 73 2c 20  schema changes, 
34a50 69 6e 73 74 65 61 64 20 6f 66 20 72 65 74 75 72  instead of retur
34a60 6e 69 6e 67 20 5b 53 51 4c 49 54 45 5f 53 43 48  ning [SQLITE_SCH
34a70 45 4d 41 5d 20 61 73 20 69 74 0a 2a 2a 20 61 6c  EMA] as it.** al
34a80 77 61 79 73 20 75 73 65 64 20 74 6f 20 64 6f 2c  ways used to do,
34a90 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29   [sqlite3_step()
34aa0 5d 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63  ] will automatic
34ab0 61 6c 6c 79 20 72 65 63 6f 6d 70 69 6c 65 20 74  ally recompile t
34ac0 68 65 20 53 51 4c 0a 2a 2a 20 73 74 61 74 65 6d  he SQL.** statem
34ad0 65 6e 74 20 61 6e 64 20 74 72 79 20 74 6f 20 72  ent and try to r
34ae0 75 6e 20 69 74 20 61 67 61 69 6e 2e 20 41 73 20  un it again. As 
34af0 6d 61 6e 79 20 61 73 20 5b 53 51 4c 49 54 45 5f  many as [SQLITE_
34b00 4d 41 58 5f 53 43 48 45 4d 41 5f 52 45 54 52 59  MAX_SCHEMA_RETRY
34b10 5d 0a 2a 2a 20 72 65 74 72 69 65 73 20 77 69 6c  ].** retries wil
34b20 6c 20 6f 63 63 75 72 20 62 65 66 6f 72 65 20 73  l occur before s
34b30 71 6c 69 74 65 33 5f 73 74 65 70 28 29 20 67 69  qlite3_step() gi
34b40 76 65 73 20 75 70 20 61 6e 64 20 72 65 74 75 72  ves up and retur
34b50 6e 73 20 61 6e 20 65 72 72 6f 72 2e 0a 2a 2a 20  ns an error..** 
34b60 3c 2f 6c 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e  </li>.**.** <li>
34b70 0a 2a 2a 20 5e 57 68 65 6e 20 61 6e 20 65 72 72  .** ^When an err
34b80 6f 72 20 6f 63 63 75 72 73 2c 20 5b 73 71 6c 69  or occurs, [sqli
34b90 74 65 33 5f 73 74 65 70 28 29 5d 20 77 69 6c 6c  te3_step()] will
34ba0 20 72 65 74 75 72 6e 20 6f 6e 65 20 6f 66 20 74   return one of t
34bb0 68 65 20 64 65 74 61 69 6c 65 64 0a 2a 2a 20 5b  he detailed.** [
34bc0 65 72 72 6f 72 20 63 6f 64 65 73 5d 20 6f 72 20  error codes] or 
34bd0 5b 65 78 74 65 6e 64 65 64 20 65 72 72 6f 72 20  [extended error 
34be0 63 6f 64 65 73 5d 2e 20 20 5e 54 68 65 20 6c 65  codes].  ^The le
34bf0 67 61 63 79 20 62 65 68 61 76 69 6f 72 20 77 61  gacy behavior wa
34c00 73 20 74 68 61 74 0a 2a 2a 20 5b 73 71 6c 69 74  s that.** [sqlit
34c10 65 33 5f 73 74 65 70 28 29 5d 20 77 6f 75 6c 64  e3_step()] would
34c20 20 6f 6e 6c 79 20 72 65 74 75 72 6e 20 61 20 67   only return a g
34c30 65 6e 65 72 69 63 20 5b 53 51 4c 49 54 45 5f 45  eneric [SQLITE_E
34c40 52 52 4f 52 5d 20 72 65 73 75 6c 74 20 63 6f 64  RROR] result cod
34c50 65 0a 2a 2a 20 61 6e 64 20 74 68 65 20 61 70 70  e.** and the app
34c60 6c 69 63 61 74 69 6f 6e 20 77 6f 75 6c 64 20 68  lication would h
34c70 61 76 65 20 74 6f 20 6d 61 6b 65 20 61 20 73 65  ave to make a se
34c80 63 6f 6e 64 20 63 61 6c 6c 20 74 6f 20 5b 73 71  cond call to [sq
34c90 6c 69 74 65 33 5f 72 65 73 65 74 28 29 5d 0a 2a  lite3_reset()].*
34ca0 2a 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 69  * in order to fi
34cb0 6e 64 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  nd the underlyin
34cc0 67 20 63 61 75 73 65 20 6f 66 20 74 68 65 20 70  g cause of the p
34cd0 72 6f 62 6c 65 6d 2e 20 57 69 74 68 20 74 68 65  roblem. With the
34ce0 20 22 76 32 22 20 70 72 65 70 61 72 65 0a 2a 2a   "v2" prepare.**
34cf0 20 69 6e 74 65 72 66 61 63 65 73 2c 20 74 68 65   interfaces, the
34d00 20 75 6e 64 65 72 6c 79 69 6e 67 20 72 65 61 73   underlying reas
34d10 6f 6e 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72  on for the error
34d20 20 69 73 20 72 65 74 75 72 6e 65 64 20 69 6d 6d   is returned imm
34d30 65 64 69 61 74 65 6c 79 2e 0a 2a 2a 20 3c 2f 6c  ediately..** </l
34d40 69 3e 0a 2a 2a 0a 2a 2a 20 3c 6c 69 3e 0a 2a 2a  i>.**.** <li>.**
34d50 20 5e 49 66 20 74 68 65 20 73 70 65 63 69 66 69   ^If the specifi
34d60 63 20 76 61 6c 75 65 20 62 6f 75 6e 64 20 74 6f  c value bound to
34d70 20 5b 70 61 72 61 6d 65 74 65 72 20 7c 20 68 6f   [parameter | ho
34d80 73 74 20 70 61 72 61 6d 65 74 65 72 5d 20 69 6e  st parameter] in
34d90 20 74 68 65 20 0a 2a 2a 20 57 48 45 52 45 20 63   the .** WHERE c
34da0 6c 61 75 73 65 20 6d 69 67 68 74 20 69 6e 66 6c  lause might infl
34db0 75 65 6e 63 65 20 74 68 65 20 63 68 6f 69 63 65  uence the choice
34dc0 20 6f 66 20 71 75 65 72 79 20 70 6c 61 6e 20 66   of query plan f
34dd0 6f 72 20 61 20 73 74 61 74 65 6d 65 6e 74 2c 0a  or a statement,.
34de0 2a 2a 20 74 68 65 6e 20 74 68 65 20 73 74 61 74  ** then the stat
34df0 65 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 61 75  ement will be au
34e00 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 65 63 6f  tomatically reco
34e10 6d 70 69 6c 65 64 2c 20 61 73 20 69 66 20 74 68  mpiled, as if th
34e20 65 72 65 20 68 61 64 20 62 65 65 6e 20 0a 2a 2a  ere had been .**
34e30 20 61 20 73 63 68 65 6d 61 20 63 68 61 6e 67 65   a schema change
34e40 2c 20 6f 6e 20 74 68 65 20 66 69 72 73 74 20 20  , on the first  
34e50 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 5d  [sqlite3_step()]
34e60 20 63 61 6c 6c 20 66 6f 6c 6c 6f 77 69 6e 67 20   call following 
34e70 61 6e 79 20 63 68 61 6e 67 65 0a 2a 2a 20 74 6f  any change.** to
34e80 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f 62 69   the [sqlite3_bi
34e90 6e 64 5f 74 65 78 74 20 7c 20 62 69 6e 64 69 6e  nd_text | bindin
34ea0 67 73 5d 20 6f 66 20 74 68 61 74 20 5b 70 61 72  gs] of that [par
34eb0 61 6d 65 74 65 72 5d 2e 20 0a 2a 2a 20 5e 54 68  ameter]. .** ^Th
34ec0 65 20 73 70 65 63 69 66 69 63 20 76 61 6c 75 65  e specific value
34ed0 20 6f 66 20 57 48 45 52 45 2d 63 6c 61 75 73 65   of WHERE-clause
34ee0 20 5b 70 61 72 61 6d 65 74 65 72 5d 20 6d 69 67   [parameter] mig
34ef0 68 74 20 69 6e 66 6c 75 65 6e 63 65 20 74 68 65  ht influence the
34f00 20 0a 2a 2a 20 63 68 6f 69 63 65 20 6f 66 20 71   .** choice of q
34f10 75 65 72 79 20 70 6c 61 6e 20 69 66 20 74 68 65  uery plan if the
34f20 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 74 68   parameter is th
34f30 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65  e left-hand side
34f40 20 6f 66 20 61 20 5b 4c 49 4b 45 5d 0a 2a 2a 20   of a [LIKE].** 
34f50 6f 72 20 5b 47 4c 4f 42 5d 20 6f 70 65 72 61 74  or [GLOB] operat
34f60 6f 72 20 6f 72 20 69 66 20 74 68 65 20 70 61 72  or or if the par
34f70 61 6d 65 74 65 72 20 69 73 20 63 6f 6d 70 61 72  ameter is compar
34f80 65 64 20 74 6f 20 61 6e 20 69 6e 64 65 78 65 64  ed to an indexed
34f90 20 63 6f 6c 75 6d 6e 0a 2a 2a 20 61 6e 64 20 74   column.** and t
34fa0 68 65 20 5b 53 51 4c 49 54 45 5f 45 4e 41 42 4c  he [SQLITE_ENABL
34fb0 45 5f 53 54 41 54 33 5d 20 63 6f 6d 70 69 6c 65  E_STAT3] compile
34fc0 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 69 73 20  -time option is 
34fd0 65 6e 61 62 6c 65 64 2e 0a 2a 2a 20 3c 2f 6c 69  enabled..** </li
34fe0 3e 0a 2a 2a 20 3c 2f 6f 6c 3e 0a 2a 2a 0a 2a 2a  >.** </ol>.**.**
34ff0 20 3c 70 3e 5e 73 71 6c 69 74 65 33 5f 70 72 65   <p>^sqlite3_pre
35000 70 61 72 65 5f 76 33 28 29 20 64 69 66 66 65 72  pare_v3() differ
35010 73 20 66 72 6f 6d 20 73 71 6c 69 74 65 33 5f 70  s from sqlite3_p
35020 72 65 70 61 72 65 5f 76 32 28 29 20 6f 6e 6c 79  repare_v2() only
35030 20 69 6e 20 68 61 76 69 6e 67 0a 2a 2a 20 74 68   in having.** th
35040 65 20 65 78 74 72 61 20 70 72 65 70 46 6c 61 67  e extra prepFlag
35050 73 20 70 61 72 61 6d 65 74 65 72 2c 20 77 68 69  s parameter, whi
35060 63 68 20 69 73 20 61 20 62 69 74 20 61 72 72 61  ch is a bit arra
35070 79 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20  y consisting of 
35080 7a 65 72 6f 20 6f 72 0a 2a 2a 20 6d 6f 72 65 20  zero or.** more 
35090 6f 66 20 74 68 65 20 5b 53 51 4c 49 54 45 5f 50  of the [SQLITE_P
350a0 52 45 50 41 52 45 5f 50 45 52 53 49 53 54 45 4e  REPARE_PERSISTEN
350b0 54 7c 53 51 4c 49 54 45 5f 50 52 45 50 41 52 45  T|SQLITE_PREPARE
350c0 5f 2a 5d 20 66 6c 61 67 73 2e 20 20 5e 54 68 65  _*] flags.  ^The
350d0 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 70 72 65 70  .** sqlite3_prep
350e0 61 72 65 5f 76 32 28 29 20 69 6e 74 65 72 66 61  are_v2() interfa
350f0 63 65 20 77 6f 72 6b 73 20 65 78 61 63 74 6c 79  ce works exactly
35100 20 74 68 65 20 73 61 6d 65 20 61 73 0a 2a 2a 20   the same as.** 
35110 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f  sqlite3_prepare_
35120 76 33 28 29 20 77 69 74 68 20 61 20 7a 65 72 6f  v3() with a zero
35130 20 70 72 65 70 46 6c 61 67 73 20 70 61 72 61 6d   prepFlags param
35140 65 74 65 72 2e 0a 2a 2f 0a 53 51 4c 49 54 45 5f  eter..*/.SQLITE_
35150 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f  API int sqlite3_
35160 70 72 65 70 61 72 65 28 0a 20 20 73 71 6c 69 74  prepare(.  sqlit
35170 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20 20  e3 *db,         
35180 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20 68     /* Database h
35190 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74  andle */.  const
351a0 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20 20   char *zSql,    
351b0 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d     /* SQL statem
351c0 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f 64  ent, UTF-8 encod
351d0 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74  ed */.  int nByt
351e0 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  e,              
351f0 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74  /* Maximum lengt
35200 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74  h of zSql in byt
35210 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65 33  es. */.  sqlite3
35220 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c 20  _stmt **ppStmt, 
35230 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d 65   /* OUT: Stateme
35240 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63  nt handle */.  c
35250 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54 61  onst char **pzTa
35260 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20 50  il     /* OUT: P
35270 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65 64  ointer to unused
35280 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71 6c   portion of zSql
35290 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41 50   */.);.SQLITE_AP
352a0 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70 72  I int sqlite3_pr
352b0 65 70 61 72 65 5f 76 32 28 0a 20 20 73 71 6c 69  epare_v2(.  sqli
352c0 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20 20  te3 *db,        
352d0 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65 20      /* Database 
352e0 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73  handle */.  cons
352f0 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20 20  t char *zSql,   
35300 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74 65      /* SQL state
35310 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63 6f  ment, UTF-8 enco
35320 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79  ded */.  int nBy
35330 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20 20  te,             
35340 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67   /* Maximum leng
35350 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79  th of zSql in by
35360 74 65 73 2e 20 2a 2f 0a 20 20 73 71 6c 69 74 65  tes. */.  sqlite
35370 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
35380 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
35390 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
353a0 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 70 7a 54  const char **pzT
353b0 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
353c0 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
353d0 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
353e0 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49 54 45 5f 41  l */.);.SQLITE_A
353f0 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33 5f 70  PI int sqlite3_p
35400 72 65 70 61 72 65 5f 76 33 28 0a 20 20 73 71 6c  repare_v3(.  sql
35410 69 74 65 33 20 2a 64 62 2c 20 20 20 20 20 20 20  ite3 *db,       
35420 20 20 20 20 20 2f 2a 20 44 61 74 61 62 61 73 65       /* Database
35430 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e   handle */.  con
35440 73 74 20 63 68 61 72 20 2a 7a 53 71 6c 2c 20 20  st char *zSql,  
35450 20 20 20 20 20 2f 2a 20 53 51 4c 20 73 74 61 74       /* SQL stat
35460 65 6d 65 6e 74 2c 20 55 54 46 2d 38 20 65 6e 63  ement, UTF-8 enc
35470 6f 64 65 64 20 2a 2f 0a 20 20 69 6e 74 20 6e 42  oded */.  int nB
35480 79 74 65 2c 20 20 20 20 20 20 20 20 20 20 20 20  yte,            
35490 20 20 2f 2a 20 4d 61 78 69 6d 75 6d 20 6c 65 6e    /* Maximum len
354a0 67 74 68 20 6f 66 20 7a 53 71 6c 20 69 6e 20 62  gth of zSql in b
354b0 79 74 65 73 2e 20 2a 2f 0a 20 20 75 6e 73 69 67  ytes. */.  unsig
354c0 6e 65 64 20 69 6e 74 20 70 72 65 70 46 6c 61 67  ned int prepFlag
354d0 73 2c 20 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f  s, /* Zero or mo
354e0 72 65 20 53 51 4c 49 54 45 5f 50 52 45 50 41 52  re SQLITE_PREPAR
354f0 45 5f 20 66 6c 61 67 73 20 2a 2f 0a 20 20 73 71  E_ flags */.  sq
35500 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70 53  lite3_stmt **ppS
35510 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53 74  tmt,  /* OUT: St
35520 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20 2a  atement handle *
35530 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
35540 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20 4f  *pzTail     /* O
35550 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20 75  UT: Pointer to u
35560 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f 66  nused portion of
35570 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c 49   zSql */.);.SQLI
35580 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74  TE_API int sqlit
35590 65 33 5f 70 72 65 70 61 72 65 31 36 28 0a 20 20  e3_prepare16(.  
355a0 73 71 6c 69 74 65 33 20 2a 64 62 2c 20 20 20 20  sqlite3 *db,    
355b0 20 20 20 20 20 20 20 20 2f 2a 20 44 61 74 61 62          /* Datab
355c0 61 73 65 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ase handle */.  
355d0 63 6f 6e 73 74 20 76 6f 69 64 20 2a 7a 53 71 6c  const void *zSql
355e0 2c 20 20 20 20 20 20 20 2f 2a 20 53 51 4c 20 73  ,       /* SQL s
355f0 74 61 74 65 6d 65 6e 74 2c 20 55 54 46 2d 31 36  tatement, UTF-16
35600 20 65 6e 63 6f 64 65 64 20 2a 2f 0a 20 20 69 6e   encoded */.  in
35610 74 20 6e 42 79 74 65 2c 20 20 20 20 20 20 20 20  t nByte,        
35620 20 20 20 20 20 20 2f 2a 20 4d 61 78 69 6d 75 6d        /* Maximum
35630 20 6c 65 6e 67 74 68 20 6f 66 20 7a 53 71 6c 20   length of zSql 
35640 69 6e 20 62 79 74 65 73 2e 20 2a 2f 0a 20 20 73  in bytes. */.  s
35650 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 2a 70 70  qlite3_stmt **pp
35660 53 74 6d 74 2c 20 20 2f 2a 20 4f 55 54 3a 20 53  Stmt,  /* OUT: S
35670 74 61 74 65 6d 65 6e 74 20 68 61 6e 64 6c 65 20  tatement handle 
35680 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20  */.  const void 
35690 2a 2a 70 7a 54 61 69 6c 20 20 20 20 20 2f 2a 20  **pzTail     /* 
356a0 4f 55 54 3a 20 50 6f 69 6e 74 65 72 20 74 6f 20  OUT: Pointer to 
356b0 75 6e 75 73 65 64 20 70 6f 72 74 69 6f 6e 20 6f  unused portion o
356c0 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b 0a 53 51 4c  f zSql */.);.SQL
356d0 49 54 45 5f 41 50 49 20 69 6e 74 20 73 71 6c 69  ITE_API int sqli
356e0 74 65 33 5f 70 72 65 70 61 72 65 31 36 5f 76 32  te3_prepare16_v2
356f0 28 0a 20 20 73 71 6c 69 74 65 33 20 2a 64 62 2c  (.  sqlite3 *db,
35700 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 44              /* D
35710 61 74 61 62 61 73 65 20 68 61 6e 64 6c 65 20 2a  atabase handle *
35720 2f 0a 20 20 63 6f 6e 73 74 20 76 6f 69 64 20 2a  /.  const void *
35730 7a 53 71 6c 2c 20 20 20 20 20 20 20 2f 2a 20 53  zSql,       /* S
35740 51 4c 20 73 74 61 74 65 6d 65 6e 74 2c 20 55 54  QL statement, UT
35750 46 2d 31 36 20 65 6e 63 6f 64 65 64 20 2a 2f 0a  F-16 encoded */.
35760 20 20 69 6e 74 20 6e 42 79 74 65 2c 20 20 20 20    int nByte,    
35770 20 20 20 20 20 20 20 20 20 20 2f 2a 20 4d 61 78            /* Max
35780 69 6d 75 6d 20 6c 65 6e 67 74 68 20 6f 66 20 7a  imum length of z
35790 53 71 6c 20 69 6e 20 62 79 74 65 73 2e 20 2a 2f  Sql in bytes. */
357a0 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 20  .  sqlite3_stmt 
357b0 2a 2a 70 70 53 74 6d 74 2c 20 20 2f 2a 20 4f 55  **ppStmt,  /* OU
357c0 54 3a 20 53 74 61 74 65 6d 65 6e 74 20 68 61 6e  T: Statement han
357d0 64 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76  dle */.  const v
357e0 6f 69 64 20 2a 2a 70 7a 54 61 69 6c 20 20 20 20  oid **pzTail    
357f0 20 2f 2a 20 4f 55 54 3a 20 50 6f 69 6e 74 65 72   /* OUT: Pointer
35800 20 74 6f 20 75 6e 75 73 65 64 20 70 6f 72 74 69   to unused porti
35810 6f 6e 20 6f 66 20 7a 53 71 6c 20 2a 2f 0a 29 3b  on of zSql */.);
35820 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
35830 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 31  sqlite3_prepare1
35840 36 5f 76 33 28 0a 20 20 73 71 6c 69 74 65 33 20  6_v3(.  sqlite3 
35850 2a 64 62 2c 20 20 20 20 20 20 20 20 20 20 20 20  *db,            
35860 2f 2a 20 44 61 74 61 62 61 73 65 20 68 61 6e 64  /* Database hand
35870 6c 65 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 76 6f  le */.  const vo
35880 69 64 20 2a 7a 53 71 6c 2c 20 20 20 20 20 20 20  id *zSql,       
35890 2f 2a 20 53 51 4c 20 73 74 61 74 65 6d 65 6e 74  /* SQL statement
358a0 2c 20 55 54 46 2d 31 36 20 65 6e 63 6f 64 65 64  , UTF-16 encoded
358b0 20 2a 2f 0a 20 20 69 6e 74 20 6e 42 79 74 65 2c   */.  int nByte,
358c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
358d0 20 4d 61 78 69 6d 75 6d 20 6c 65 6e 67 74 68 20   Maximum length 
358e0 6f 66 20 7a 53 71 6c 20 69 6e 20 62 79 74 65 73  of zSql in bytes
358f0 2e 20 2a 2f 0a 20 20 75 6e 73 69 67 6e 65 64 20  . */.  unsigned 
35900 69 6e 74 20 70 72 65 70 46 6c 61 67 73 2c 20 2f  int prepFlags, /
35910 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 53  * Zero or more S
35920 51 4c 49 54 45 5f 50 52 45 50 41 52 45 5f 20 66  QLITE_PREPARE_ f
35930 6c 61 67 73 20 2a 2f 0a 20 20 73 71 6c 69 74 65  lags */.  sqlite
35940 33 5f 73 74 6d 74 20 2a 2a 70 70 53 74 6d 74 2c  3_stmt **ppStmt,
35950 20 20 2f 2a 20 4f 55 54 3a 20 53 74 61 74 65 6d    /* OUT: Statem
35960 65 6e 74 20 68 61 6e 64 6c 65 20 2a 2f 0a 20 20  ent handle */.  
35970 63 6f 6e 73 74 20 76 6f 69 64 20 2a 2a 70 7a 54  const void **pzT
35980 61 69 6c 20 20 20 20 20 2f 2a 20 4f 55 54 3a 20  ail     /* OUT: 
35990 50 6f 69 6e 74 65 72 20 74 6f 20 75 6e 75 73 65  Pointer to unuse
359a0 64 20 70 6f 72 74 69 6f 6e 20 6f 66 20 7a 53 71  d portion of zSq
359b0 6c 20 2a 2f 0a 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43  l */.);../*.** C
359c0 41 50 49 33 52 45 46 3a 20 52 65 74 72 69 65 76  API3REF: Retriev
359d0 69 6e 67 20 53 74 61 74 65 6d 65 6e 74 20 53 51  ing Statement SQ
359e0 4c 0a 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c  L.** METHOD: sql
359f0 69 74 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20  ite3_stmt.**.** 
35a00 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 73 71 6c  ^The sqlite3_sql
35a10 28 50 29 20 69 6e 74 65 72 66 61 63 65 20 72 65  (P) interface re
35a20 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20  turns a pointer 
35a30 74 6f 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  to a copy of the
35a40 20 55 54 46 2d 38 0a 2a 2a 20 53 51 4c 20 74 65   UTF-8.** SQL te
35a50 78 74 20 75 73 65 64 20 74 6f 20 63 72 65 61 74  xt used to creat
35a60 65 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  e [prepared stat
35a70 65 6d 65 6e 74 5d 20 50 20 69 66 20 50 20 77 61  ement] P if P wa
35a80 73 0a 2a 2a 20 63 72 65 61 74 65 64 20 62 79 20  s.** created by 
35a90 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
35aa0 5f 76 32 28 29 5d 2c 20 5b 73 71 6c 69 74 65 33  _v2()], [sqlite3
35ab0 5f 70 72 65 70 61 72 65 5f 76 33 28 29 5d 2c 0a  _prepare_v3()],.
35ac0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  ** [sqlite3_prep
35ad0 61 72 65 31 36 5f 76 32 28 29 5d 2c 20 6f 72 20  are16_v2()], or 
35ae0 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65  [sqlite3_prepare
35af0 31 36 5f 76 33 28 29 5d 2e 0a 2a 2a 20 5e 54 68  16_v3()]..** ^Th
35b00 65 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64  e sqlite3_expand
35b10 65 64 5f 73 71 6c 28 50 29 20 69 6e 74 65 72 66  ed_sql(P) interf
35b20 61 63 65 20 72 65 74 75 72 6e 73 20 61 20 70 6f  ace returns a po
35b30 69 6e 74 65 72 20 74 6f 20 61 20 55 54 46 2d 38  inter to a UTF-8
35b40 0a 2a 2a 20 73 74 72 69 6e 67 20 63 6f 6e 74 61  .** string conta
35b50 69 6e 69 6e 67 20 74 68 65 20 53 51 4c 20 74 65  ining the SQL te
35b60 78 74 20 6f 66 20 70 72 65 70 61 72 65 64 20 73  xt of prepared s
35b70 74 61 74 65 6d 65 6e 74 20 50 20 77 69 74 68 0a  tatement P with.
35b80 2a 2a 20 5b 62 6f 75 6e 64 20 70 61 72 61 6d 65  ** [bound parame
35b90 74 65 72 73 5d 20 65 78 70 61 6e 64 65 64 2e 0a  ters] expanded..
35ba0 2a 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f  ** ^The sqlite3_
35bb0 6e 6f 72 6d 61 6c 69 7a 65 64 5f 73 71 6c 28 50  normalized_sql(P
35bc0 29 20 69 6e 74 65 72 66 61 63 65 20 72 65 74 75  ) interface retu
35bd0 72 6e 73 20 61 20 70 6f 69 6e 74 65 72 20 74 6f  rns a pointer to
35be0 20 61 20 55 54 46 2d 38 0a 2a 2a 20 73 74 72 69   a UTF-8.** stri
35bf0 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  ng containing th
35c00 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 53 51 4c  e normalized SQL
35c10 20 74 65 78 74 20 6f 66 20 70 72 65 70 61 72 65   text of prepare
35c20 64 20 73 74 61 74 65 6d 65 6e 74 20 50 2e 20 20  d statement P.  
35c30 54 68 65 0a 2a 2a 20 73 65 6d 61 6e 74 69 63 73  The.** semantics
35c40 20 75 73 65 64 20 74 6f 20 6e 6f 72 6d 61 6c 69   used to normali
35c50 7a 65 20 61 20 53 51 4c 20 73 74 61 74 65 6d 65  ze a SQL stateme
35c60 6e 74 20 61 72 65 20 75 6e 73 70 65 63 69 66 69  nt are unspecifi
35c70 65 64 20 61 6e 64 20 73 75 62 6a 65 63 74 0a 2a  ed and subject.*
35c80 2a 20 74 6f 20 63 68 61 6e 67 65 2e 20 20 41 74  * to change.  At
35c90 20 61 20 6d 69 6e 69 6d 75 6d 2c 20 6c 69 74 65   a minimum, lite
35ca0 72 61 6c 20 76 61 6c 75 65 73 20 77 69 6c 6c 20  ral values will 
35cb0 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68  be replaced with
35cc0 20 73 75 69 74 61 62 6c 65 0a 2a 2a 20 70 6c 61   suitable.** pla
35cd0 63 65 68 6f 6c 64 65 72 73 2e 0a 2a 2a 0a 2a 2a  ceholders..**.**
35ce0 20 5e 28 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20   ^(For example, 
35cf0 69 66 20 61 20 70 72 65 70 61 72 65 64 20 73 74  if a prepared st
35d00 61 74 65 6d 65 6e 74 20 69 73 20 63 72 65 61 74  atement is creat
35d10 65 64 20 75 73 69 6e 67 20 74 68 65 20 53 51 4c  ed using the SQL
35d20 0a 2a 2a 20 74 65 78 74 20 22 53 45 4c 45 43 54  .** text "SELECT
35d30 20 24 61 62 63 2c 3a 78 79 7a 22 20 61 6e 64 20   $abc,:xyz" and 
35d40 69 66 20 70 61 72 61 6d 65 74 65 72 20 24 61 62  if parameter $ab
35d50 63 20 69 73 20 62 6f 75 6e 64 20 74 6f 20 69 6e  c is bound to in
35d60 74 65 67 65 72 20 32 33 34 35 0a 2a 2a 20 61 6e  teger 2345.** an
35d70 64 20 70 61 72 61 6d 65 74 65 72 20 3a 78 79 7a  d parameter :xyz
35d80 20 69 73 20 75 6e 62 6f 75 6e 64 2c 20 74 68 65   is unbound, the
35d90 6e 20 73 71 6c 69 74 65 33 5f 73 71 6c 28 29 20  n sqlite3_sql() 
35da0 77 69 6c 6c 20 72 65 74 75 72 6e 0a 2a 2a 20 74  will return.** t
35db0 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69  he original stri
35dc0 6e 67 2c 20 22 53 45 4c 45 43 54 20 24 61 62 63  ng, "SELECT $abc
35dd0 2c 3a 78 79 7a 22 20 62 75 74 20 73 71 6c 69 74  ,:xyz" but sqlit
35de0 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71 6c 28  e3_expanded_sql(
35df0 29 0a 2a 2a 20 77 69 6c 6c 20 72 65 74 75 72 6e  ).** will return
35e00 20 22 53 45 4c 45 43 54 20 32 33 34 35 2c 4e 55   "SELECT 2345,NU
35e10 4c 4c 22 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e 54 68  LL".)^.**.** ^Th
35e20 65 20 73 71 6c 69 74 65 33 5f 65 78 70 61 6e 64  e sqlite3_expand
35e30 65 64 5f 73 71 6c 28 29 20 69 6e 74 65 72 66 61  ed_sql() interfa
35e40 63 65 20 72 65 74 75 72 6e 73 20 4e 55 4c 4c 20  ce returns NULL 
35e50 69 66 20 69 6e 73 75 66 66 69 63 69 65 6e 74 20  if insufficient 
35e60 6d 65 6d 6f 72 79 0a 2a 2a 20 69 73 20 61 76 61  memory.** is ava
35e70 69 6c 61 62 6c 65 20 74 6f 20 68 6f 6c 64 20 74  ilable to hold t
35e80 68 65 20 72 65 73 75 6c 74 2c 20 6f 72 20 69 66  he result, or if
35e90 20 74 68 65 20 72 65 73 75 6c 74 20 77 6f 75 6c   the result woul
35ea0 64 20 65 78 63 65 65 64 20 74 68 65 0a 2a 2a 20  d exceed the.** 
35eb0 74 68 65 20 6d 61 78 69 6d 75 6d 20 73 74 72 69  the maximum stri
35ec0 6e 67 20 6c 65 6e 67 74 68 20 64 65 74 65 72 6d  ng length determ
35ed0 69 6e 65 64 20 62 79 20 74 68 65 20 5b 53 51 4c  ined by the [SQL
35ee0 49 54 45 5f 4c 49 4d 49 54 5f 4c 45 4e 47 54 48  ITE_LIMIT_LENGTH
35ef0 5d 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 5b 53  ]..**.** ^The [S
35f00 51 4c 49 54 45 5f 54 52 41 43 45 5f 53 49 5a 45  QLITE_TRACE_SIZE
35f10 5f 4c 49 4d 49 54 5d 20 63 6f 6d 70 69 6c 65 2d  _LIMIT] compile-
35f20 74 69 6d 65 20 6f 70 74 69 6f 6e 20 6c 69 6d 69  time option limi
35f30 74 73 20 74 68 65 20 73 69 7a 65 20 6f 66 0a 2a  ts the size of.*
35f40 2a 20 62 6f 75 6e 64 20 70 61 72 61 6d 65 74 65  * bound paramete
35f50 72 20 65 78 70 61 6e 73 69 6f 6e 73 2e 20 20 5e  r expansions.  ^
35f60 54 68 65 20 5b 53 51 4c 49 54 45 5f 4f 4d 49 54  The [SQLITE_OMIT
35f70 5f 54 52 41 43 45 5d 20 63 6f 6d 70 69 6c 65 2d  _TRACE] compile-
35f80 74 69 6d 65 0a 2a 2a 20 6f 70 74 69 6f 6e 20 63  time.** option c
35f90 61 75 73 65 73 20 73 71 6c 69 74 65 33 5f 65 78  auses sqlite3_ex
35fa0 70 61 6e 64 65 64 5f 73 71 6c 28 29 20 74 6f 20  panded_sql() to 
35fb0 61 6c 77 61 79 73 20 72 65 74 75 72 6e 20 4e 55  always return NU
35fc0 4c 4c 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73  LL..**.** ^The s
35fd0 74 72 69 6e 67 73 20 72 65 74 75 72 6e 65 64 20  trings returned 
35fe0 62 79 20 73 71 6c 69 74 65 33 5f 73 71 6c 28 50  by sqlite3_sql(P
35ff0 29 20 61 6e 64 20 73 71 6c 69 74 65 33 5f 6e 6f  ) and sqlite3_no
36000 72 6d 61 6c 69 7a 65 64 5f 73 71 6c 28 50 29 0a  rmalized_sql(P).
36010 2a 2a 20 61 72 65 20 6d 61 6e 61 67 65 64 20 62  ** are managed b
36020 79 20 53 51 4c 69 74 65 20 61 6e 64 20 61 72 65  y SQLite and are
36030 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 66   automatically f
36040 72 65 65 64 20 77 68 65 6e 20 74 68 65 20 70 72  reed when the pr
36050 65 70 61 72 65 64 0a 2a 2a 20 73 74 61 74 65 6d  epared.** statem
36060 65 6e 74 20 69 73 20 66 69 6e 61 6c 69 7a 65 64  ent is finalized
36070 2e 0a 2a 2a 20 5e 54 68 65 20 73 74 72 69 6e 67  ..** ^The string
36080 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71 6c   returned by sql
36090 69 74 65 33 5f 65 78 70 61 6e 64 65 64 5f 73 71  ite3_expanded_sq
360a0 6c 28 50 29 2c 20 6f 6e 20 74 68 65 20 6f 74 68  l(P), on the oth
360b0 65 72 20 68 61 6e 64 2c 0a 2a 2a 20 69 73 20 6f  er hand,.** is o
360c0 62 74 61 69 6e 65 64 20 66 72 6f 6d 20 5b 73 71  btained from [sq
360d0 6c 69 74 65 33 5f 6d 61 6c 6c 6f 63 28 29 5d 20  lite3_malloc()] 
360e0 61 6e 64 20 6d 75 73 74 20 62 65 20 66 72 65 65  and must be free
360f0 20 62 79 20 74 68 65 20 61 70 70 6c 69 63 61 74   by the applicat
36100 69 6f 6e 0a 2a 2a 20 62 79 20 70 61 73 73 69 6e  ion.** by passin
36110 67 20 69 74 20 74 6f 20 5b 73 71 6c 69 74 65 33  g it to [sqlite3
36120 5f 66 72 65 65 28 29 5d 2e 0a 2a 2f 0a 53 51 4c  _free()]..*/.SQL
36130 49 54 45 5f 41 50 49 20 63 6f 6e 73 74 20 63 68  ITE_API const ch
36140 61 72 20 2a 73 71 6c 69 74 65 33 5f 73 71 6c 28  ar *sqlite3_sql(
36150 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
36160 74 6d 74 29 3b 0a 53 51 4c 49 54 45 5f 41 50 49  tmt);.SQLITE_API
36170 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33 5f 65   char *sqlite3_e
36180 78 70 61 6e 64 65 64 5f 73 71 6c 28 73 71 6c 69  xpanded_sql(sqli
36190 74 65 33 5f 73 74 6d 74 20 2a 70 53 74 6d 74 29  te3_stmt *pStmt)
361a0 3b 0a 53 51 4c 49 54 45 5f 41 50 49 20 63 6f 6e  ;.SQLITE_API con
361b0 73 74 20 63 68 61 72 20 2a 73 71 6c 69 74 65 33  st char *sqlite3
361c0 5f 6e 6f 72 6d 61 6c 69 7a 65 64 5f 73 71 6c 28  _normalized_sql(
361d0 73 71 6c 69 74 65 33 5f 73 74 6d 74 20 2a 70 53  sqlite3_stmt *pS
361e0 74 6d 74 29 3b 0a 0a 2f 2a 0a 2a 2a 20 43 41 50  tmt);../*.** CAP
361f0 49 33 52 45 46 3a 20 44 65 74 65 72 6d 69 6e 65  I3REF: Determine
36200 20 49 66 20 41 6e 20 53 51 4c 20 53 74 61 74 65   If An SQL State
36210 6d 65 6e 74 20 57 72 69 74 65 73 20 54 68 65 20  ment Writes The 
36220 44 61 74 61 62 61 73 65 0a 2a 2a 20 4d 45 54 48  Database.** METH
36230 4f 44 3a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  OD: sqlite3_stmt
36240 0a 2a 2a 0a 2a 2a 20 5e 54 68 65 20 73 71 6c 69  .**.** ^The sqli
36250 74 65 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c  te3_stmt_readonl
36260 79 28 58 29 20 69 6e 74 65 72 66 61 63 65 20 72  y(X) interface r
36270 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f 6e  eturns true (non
36280 2d 7a 65 72 6f 29 20 69 66 0a 2a 2a 20 61 6e 64  -zero) if.** and
36290 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 5b 70 72   only if the [pr
362a0 65 70 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74  epared statement
362b0 5d 20 58 20 6d 61 6b 65 73 20 6e 6f 20 64 69 72  ] X makes no dir
362c0 65 63 74 20 63 68 61 6e 67 65 73 20 74 6f 0a 2a  ect changes to.*
362d0 2a 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66  * the content of
362e0 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69   the database fi
362f0 6c 65 2e 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 74  le..**.** Note t
36300 68 61 74 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e  hat [application
36310 2d 64 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e  -defined SQL fun
36320 63 74 69 6f 6e 73 5d 20 6f 72 0a 2a 2a 20 5b 76  ctions] or.** [v
36330 69 72 74 75 61 6c 20 74 61 62 6c 65 73 5d 20 6d  irtual tables] m
36340 69 67 68 74 20 63 68 61 6e 67 65 20 74 68 65 20  ight change the 
36350 64 61 74 61 62 61 73 65 20 69 6e 64 69 72 65 63  database indirec
36360 74 6c 79 20 61 73 20 61 20 73 69 64 65 20 65 66  tly as a side ef
36370 66 65 63 74 2e 20 20 0a 2a 2a 20 5e 28 46 6f 72  fect.  .** ^(For
36380 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20   example, if an 
36390 61 70 70 6c 69 63 61 74 69 6f 6e 20 64 65 66 69  application defi
363a0 6e 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 22  nes a function "
363b0 65 76 61 6c 28 29 22 20 74 68 61 74 20 0a 2a 2a  eval()" that .**
363c0 20 63 61 6c 6c 73 20 5b 73 71 6c 69 74 65 33 5f   calls [sqlite3_
363d0 65 78 65 63 28 29 5d 2c 20 74 68 65 6e 20 74 68  exec()], then th
363e0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 53 51 4c 20  e following SQL 
363f0 73 74 61 74 65 6d 65 6e 74 20 77 6f 75 6c 64 0a  statement would.
36400 2a 2a 20 63 68 61 6e 67 65 20 74 68 65 20 64 61  ** change the da
36410 74 61 62 61 73 65 20 66 69 6c 65 20 74 68 72 6f  tabase file thro
36420 75 67 68 20 73 69 64 65 2d 65 66 66 65 63 74 73  ugh side-effects
36430 3a 0a 2a 2a 0a 2a 2a 20 3c 62 6c 6f 63 6b 71 75  :.**.** <blockqu
36440 6f 74 65 3e 3c 70 72 65 3e 0a 2a 2a 20 20 20 20  ote><pre>.**    
36450 53 45 4c 45 43 54 20 65 76 61 6c 28 27 44 45 4c  SELECT eval('DEL
36460 45 54 45 20 46 52 4f 4d 20 74 31 27 29 20 46 52  ETE FROM t1') FR
36470 4f 4d 20 74 32 3b 0a 2a 2a 20 3c 2f 70 72 65 3e  OM t2;.** </pre>
36480 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 2a 2a  </blockquote>.**
36490 0a 2a 2a 20 42 75 74 20 62 65 63 61 75 73 65 20  .** But because 
364a0 74 68 65 20 5b 53 45 4c 45 43 54 5d 20 73 74 61  the [SELECT] sta
364b0 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20  tement does not 
364c0 63 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 62  change the datab
364d0 61 73 65 20 66 69 6c 65 0a 2a 2a 20 64 69 72 65  ase file.** dire
364e0 63 74 6c 79 2c 20 73 71 6c 69 74 65 33 5f 73 74  ctly, sqlite3_st
364f0 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 77 6f  mt_readonly() wo
36500 75 6c 64 20 73 74 69 6c 6c 20 72 65 74 75 72 6e  uld still return
36510 20 74 72 75 65 2e 29 5e 0a 2a 2a 0a 2a 2a 20 5e   true.)^.**.** ^
36520 54 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6e 74  Transaction cont
36530 72 6f 6c 20 73 74 61 74 65 6d 65 6e 74 73 20 73  rol statements s
36540 75 63 68 20 61 73 20 5b 42 45 47 49 4e 5d 2c 20  uch as [BEGIN], 
36550 5b 43 4f 4d 4d 49 54 5d 2c 20 5b 52 4f 4c 4c 42  [COMMIT], [ROLLB
36560 41 43 4b 5d 2c 0a 2a 2a 20 5b 53 41 56 45 50 4f  ACK],.** [SAVEPO
36570 49 4e 54 5d 2c 20 61 6e 64 20 5b 52 45 4c 45 41  INT], and [RELEA
36580 53 45 5d 20 63 61 75 73 65 20 73 71 6c 69 74 65  SE] cause sqlite
36590 33 5f 73 74 6d 74 5f 72 65 61 64 6f 6e 6c 79 28  3_stmt_readonly(
365a0 29 20 74 6f 20 72 65 74 75 72 6e 20 74 72 75 65  ) to return true
365b0 2c 0a 2a 2a 20 73 69 6e 63 65 20 74 68 65 20 73  ,.** since the s
365c0 74 61 74 65 6d 65 6e 74 73 20 74 68 65 6d 73 65  tatements themse
365d0 6c 76 65 73 20 64 6f 20 6e 6f 74 20 61 63 74 75  lves do not actu
365e0 61 6c 6c 79 20 6d 6f 64 69 66 79 20 74 68 65 20  ally modify the 
365f0 64 61 74 61 62 61 73 65 20 62 75 74 0a 2a 2a 20  database but.** 
36600 72 61 74 68 65 72 20 74 68 65 79 20 63 6f 6e 74  rather they cont
36610 72 6f 6c 20 74 68 65 20 74 69 6d 69 6e 67 20 6f  rol the timing o
36620 66 20 77 68 65 6e 20 6f 74 68 65 72 20 73 74 61  f when other sta
36630 74 65 6d 65 6e 74 73 20 6d 6f 64 69 66 79 20 74  tements modify t
36640 68 65 20 0a 2a 2a 20 64 61 74 61 62 61 73 65 2e  he .** database.
36650 20 20 5e 54 68 65 20 5b 41 54 54 41 43 48 5d 20    ^The [ATTACH] 
36660 61 6e 64 20 5b 44 45 54 41 43 48 5d 20 73 74 61  and [DETACH] sta
36670 74 65 6d 65 6e 74 73 20 61 6c 73 6f 20 63 61 75  tements also cau
36680 73 65 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74  se.** sqlite3_st
36690 6d 74 5f 72 65 61 64 6f 6e 6c 79 28 29 20 74 6f  mt_readonly() to
366a0 20 72 65 74 75 72 6e 20 74 72 75 65 20 73 69 6e   return true sin
366b0 63 65 2c 20 77 68 69 6c 65 20 74 68 6f 73 65 20  ce, while those 
366c0 73 74 61 74 65 6d 65 6e 74 73 0a 2a 2a 20 63 68  statements.** ch
366d0 61 6e 67 65 20 74 68 65 20 63 6f 6e 66 69 67 75  ange the configu
366e0 72 61 74 69 6f 6e 20 6f 66 20 61 20 64 61 74 61  ration of a data
366f0 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  base connection,
36700 20 74 68 65 79 20 64 6f 20 6e 6f 74 20 6d 61 6b   they do not mak
36710 65 20 0a 2a 2a 20 63 68 61 6e 67 65 73 20 74 6f  e .** changes to
36720 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 6f 66 20   the content of 
36730 74 68 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  the database fil
36740 65 73 20 6f 6e 20 64 69 73 6b 2e 0a 2a 2a 20 5e  es on disk..** ^
36750 54 68 65 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  The sqlite3_stmt
36760 5f 72 65 61 64 6f 6e 6c 79 28 29 20 69 6e 74 65  _readonly() inte
36770 72 66 61 63 65 20 72 65 74 75 72 6e 73 20 74 72  rface returns tr
36780 75 65 20 66 6f 72 20 5b 42 45 47 49 4e 5d 20 73  ue for [BEGIN] s
36790 69 6e 63 65 0a 2a 2a 20 5b 42 45 47 49 4e 5d 20  ince.** [BEGIN] 
367a0 6d 65 72 65 6c 79 20 73 65 74 73 20 69 6e 74 65  merely sets inte
367b0 72 6e 61 6c 20 66 6c 61 67 73 2c 20 62 75 74 20  rnal flags, but 
367c0 74 68 65 20 5b 42 45 47 49 4e 7c 42 45 47 49 4e  the [BEGIN|BEGIN
367d0 20 49 4d 4d 45 44 49 41 54 45 5d 20 61 6e 64 0a   IMMEDIATE] and.
367e0 2a 2a 20 5b 42 45 47 49 4e 7c 42 45 47 49 4e 20  ** [BEGIN|BEGIN 
367f0 45 58 43 4c 55 53 49 56 45 5d 20 63 6f 6d 6d 61  EXCLUSIVE] comma
36800 6e 64 73 20 64 6f 20 74 6f 75 63 68 20 74 68 65  nds do touch the
36810 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 73 6f   database and so
36820 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 73 74 6d 74  .** sqlite3_stmt
36830 5f 72 65 61 64 6f 6e 6c 79 28 29 20 72 65 74 75  _readonly() retu
36840 72 6e 73 20 66 61 6c 73 65 20 66 6f 72 20 74 68  rns false for th
36850 6f 73 65 20 63 6f 6d 6d 61 6e 64 73 2e 0a 2a 2f  ose commands..*/
36860 0a 53 51 4c 49 54 45 5f 41 50 49 20 69 6e 74 20  .SQLITE_API int 
36870 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 72 65 61  sqlite3_stmt_rea
36880 64 6f 6e 6c 79 28 73 71 6c 69 74 65 33 5f 73 74  donly(sqlite3_st
36890 6d 74 20 2a 70 53 74 6d 74 29 3b 0a 0a 2f 2a 0a  mt *pStmt);../*.
368a0 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 44 65 74  ** CAPI3REF: Det
368b0 65 72 6d 69 6e 65 20 49 66 20 41 20 50 72 65 70  ermine If A Prep
368c0 61 72 65 64 20 53 74 61 74 65 6d 65 6e 74 20 48  ared Statement H
368d0 61 73 20 42 65 65 6e 20 52 65 73 65 74 0a 2a 2a  as Been Reset.**
368e0 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74 65 33   METHOD: sqlite3
368f0 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  _stmt.**.** ^The
36900 20 73 71 6c 69 74 65 33 5f 73 74 6d 74 5f 62 75   sqlite3_stmt_bu
36910 73 79 28 53 29 20 69 6e 74 65 72 66 61 63 65 20  sy(S) interface 
36920 72 65 74 75 72 6e 73 20 74 72 75 65 20 28 6e 6f  returns true (no
36930 6e 2d 7a 65 72 6f 29 20 69 66 20 74 68 65 0a 2a  n-zero) if the.*
36940 2a 20 5b 70 72 65 70 61 72 65 64 20 73 74 61 74  * [prepared stat
36950 65 6d 65 6e 74 5d 20 53 20 68 61 73 20 62 65 65  ement] S has bee
36960 6e 20 73 74 65 70 70 65 64 20 61 74 20 6c 65 61  n stepped at lea
36970 73 74 20 6f 6e 63 65 20 75 73 69 6e 67 20 0a 2a  st once using .*
36980 2a 20 5b 73 71 6c 69 74 65 33 5f 73 74 65 70 28  * [sqlite3_step(
36990 53 29 5d 20 62 75 74 20 68 61 73 20 6e 65 69 74  S)] but has neit
369a0 68 65 72 20 72 75 6e 20 74 6f 20 63 6f 6d 70 6c  her run to compl
369b0 65 74 69 6f 6e 20 28 72 65 74 75 72 6e 65 64 0a  etion (returned.
369c0 2a 2a 20 5b 53 51 4c 49 54 45 5f 44 4f 4e 45 5d  ** [SQLITE_DONE]
369d0 20 66 72 6f 6d 20 5b 73 71 6c 69 74 65 33 5f 73   from [sqlite3_s
369e0 74 65 70 28 53 29 5d 29 20 6e 6f 72 0a 2a 2a 20  tep(S)]) nor.** 
369f0 62 65 65 6e 20 72 65 73 65 74 20 75 73 69 6e 67  been reset using
36a00 20 5b 73 71 6c 69 74 65 33 5f 72 65 73 65 74 28   [sqlite3_reset(
36a10 53 29 5d 2e 20 20 5e 54 68 65 20 73 71 6c 69 74  S)].  ^The sqlit
36a20 65 33 5f 73 74 6d 74 5f 62 75 73 79 28 53 29 0a  e3_stmt_busy(S).
36a30 2a 2a 20 69 6e 74 65 72 66 61 63 65 20 72 65 74  ** interface ret
36a40 75 72 6e 73 20 66 61 6c 73 65 20 69 66 20 53 20  urns false if S 
36a50 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69 6e 74 65  is a NULL pointe
36a60 72 2e 20 20 49 66 20 53 20 69 73 20 6e 6f 74 20  r.  If S is not 
36a70 61 20 0a 2a 2a 20 4e 55 4c 4c 20 70 6f 69 6e 74  a .** NULL point
36a80 65 72 20 61 6e 64 20 69 73 20 6e 6f 74 20 61 20  er and is not a 
36a90 70 6f 69 6e 74 65 72 20 74 6f 20 61 20 76 61 6c  pointer to a val
36aa0 69 64 20 5b 70 72 65 70 61 72 65 64 20 73 74 61  id [prepared sta
36ab0 74 65 6d 65 6e 74 5d 0a 2a 2a 20 6f 62 6a 65 63  tement].** objec
36ac0 74 2c 20 74 68 65 6e 20 74 68 65 20 62 65 68 61  t, then the beha
36ad0 76 69 6f 72 20 69 73 20 75 6e 64 65 66 69 6e 65  vior is undefine
36ae0 64 20 61 6e 64 20 70 72 6f 62 61 62 6c 79 20 75  d and probably u
36af0 6e 64 65 73 69 72 61 62 6c 65 2e 0a 2a 2a 0a 2a  ndesirable..**.*
36b00 2a 20 54 68 69 73 20 69 6e 74 65 72 66 61 63 65  * This interface
36b10 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
36b20 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 5b 73 71 6c  combination [sql
36b30 69 74 65 33 5f 6e 65 78 74 5f 73 74 6d 74 28 29  ite3_next_stmt()
36b40 5d 0a 2a 2a 20 74 6f 20 6c 6f 63 61 74 65 20 61  ].** to locate a
36b50 6c 6c 20 70 72 65 70 61 72 65 64 20 73 74 61 74  ll prepared stat
36b60 65 6d 65 6e 74 73 20 61 73 73 6f 63 69 61 74 65  ements associate
36b70 64 20 77 69 74 68 20 61 20 64 61 74 61 62 61 73  d with a databas
36b80 65 20 0a 2a 2a 20 63 6f 6e 6e 65 63 74 69 6f 6e  e .** connection
36b90 20 74 68 61 74 20 61 72 65 20 69 6e 20 6e 65 65   that are in nee
36ba0 64 20 6f 66 20 62 65 69 6e 67 20 72 65 73 65 74  d of being reset
36bb0 2e 20 20 54 68 69 73 20 63 61 6e 20 62 65 20 75  .  This can be u
36bc0 73 65 64 2c 0a 2a 2a 20 66 6f 72 20 65 78 61 6d  sed,.** for exam
36bd0 70 6c 65 2c 20 69 6e 20 64 69 61 67 6e 6f 73 74  ple, in diagnost
36be0 69 63 20 72 6f 75 74 69 6e 65 73 20 74 6f 20 73  ic routines to s
36bf0 65 61 72 63 68 20 66 6f 72 20 70 72 65 70 61 72  earch for prepar
36c00 65 64 20 0a 2a 2a 20 73 74 61 74 65 6d 65 6e 74  ed .** statement
36c10 73 20 74 68 61 74 20 61 72 65 20 68 6f 6c 64 69  s that are holdi
36c20 6e 67 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e  ng a transaction
36c30 20 6f 70 65 6e 2e 0a 2a 2f 0a 53 51 4c 49 54 45   open..*/.SQLITE
36c40 5f 41 50 49 20 69 6e 74 20 73 71 6c 69 74 65 33  _API int sqlite3
36c50 5f 73 74 6d 74 5f 62 75 73 79 28 73 71 6c 69 74  _stmt_busy(sqlit
36c60 65 33 5f 73 74 6d 74 2a 29 3b 0a 0a 2f 2a 0a 2a  e3_stmt*);../*.*
36c70 2a 20 43 41 50 49 33 52 45 46 3a 20 44 79 6e 61  * CAPI3REF: Dyna
36c80 6d 69 63 61 6c 6c 79 20 54 79 70 65 64 20 56 61  mically Typed Va
36c90 6c 75 65 20 4f 62 6a 65 63 74 0a 2a 2a 20 4b 45  lue Object.** KE
36ca0 59 57 4f 52 44 53 3a 20 7b 70 72 6f 74 65 63 74  YWORDS: {protect
36cb0 65 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65  ed sqlite3_value
36cc0 7d 20 7b 75 6e 70 72 6f 74 65 63 74 65 64 20 73  } {unprotected s
36cd0 71 6c 69 74 65 33 5f 76 61 6c 75 65 7d 0a 2a 2a  qlite3_value}.**
36ce0 0a 2a 2a 20 53 51 4c 69 74 65 20 75 73 65 73 20  .** SQLite uses 
36cf0 74 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  the sqlite3_valu
36d00 65 20 6f 62 6a 65 63 74 20 74 6f 20 72 65 70 72  e object to repr
36d10 65 73 65 6e 74 20 61 6c 6c 20 76 61 6c 75 65 73  esent all values
36d20 0a 2a 2a 20 74 68 61 74 20 63 61 6e 20 62 65 20  .** that can be 
36d30 73 74 6f 72 65 64 20 69 6e 20 61 20 64 61 74 61  stored in a data
36d40 62 61 73 65 20 74 61 62 6c 65 2e 20 53 51 4c 69  base table. SQLi
36d50 74 65 20 75 73 65 73 20 64 79 6e 61 6d 69 63 20  te uses dynamic 
36d60 74 79 70 69 6e 67 0a 2a 2a 20 66 6f 72 20 74 68  typing.** for th
36d70 65 20 76 61 6c 75 65 73 20 69 74 20 73 74 6f 72  e values it stor
36d80 65 73 2e 20 20 5e 56 61 6c 75 65 73 20 73 74 6f  es.  ^Values sto
36d90 72 65 64 20 69 6e 20 73 71 6c 69 74 65 33 5f 76  red in sqlite3_v
36da0 61 6c 75 65 20 6f 62 6a 65 63 74 73 0a 2a 2a 20  alue objects.** 
36db0 63 61 6e 20 62 65 20 69 6e 74 65 67 65 72 73 2c  can be integers,
36dc0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20   floating point 
36dd0 76 61 6c 75 65 73 2c 20 73 74 72 69 6e 67 73 2c  values, strings,
36de0 20 42 4c 4f 42 73 2c 20 6f 72 20 4e 55 4c 4c 2e   BLOBs, or NULL.
36df0 0a 2a 2a 0a 2a 2a 20 41 6e 20 73 71 6c 69 74 65  .**.** An sqlite
36e00 33 5f 76 61 6c 75 65 20 6f 62 6a 65 63 74 20 6d  3_value object m
36e10 61 79 20 62 65 20 65 69 74 68 65 72 20 22 70 72  ay be either "pr
36e20 6f 74 65 63 74 65 64 22 20 6f 72 20 22 75 6e 70  otected" or "unp
36e30 72 6f 74 65 63 74 65 64 22 2e 0a 2a 2a 20 53 6f  rotected"..** So
36e40 6d 65 20 69 6e 74 65 72 66 61 63 65 73 20 72 65  me interfaces re
36e50 71 75 69 72 65 20 61 20 70 72 6f 74 65 63 74 65  quire a protecte
36e60 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
36e70 20 20 4f 74 68 65 72 20 69 6e 74 65 72 66 61 63    Other interfac
36e80 65 73 0a 2a 2a 20 77 69 6c 6c 20 61 63 63 65 70  es.** will accep
36e90 74 20 65 69 74 68 65 72 20 61 20 70 72 6f 74 65  t either a prote
36ea0 63 74 65 64 20 6f 72 20 61 6e 20 75 6e 70 72 6f  cted or an unpro
36eb0 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
36ec0 61 6c 75 65 2e 0a 2a 2a 20 45 76 65 72 79 20 69  alue..** Every i
36ed0 6e 74 65 72 66 61 63 65 20 74 68 61 74 20 61 63  nterface that ac
36ee0 63 65 70 74 73 20 73 71 6c 69 74 65 33 5f 76 61  cepts sqlite3_va
36ef0 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 20 73 70  lue arguments sp
36f00 65 63 69 66 69 65 73 0a 2a 2a 20 77 68 65 74 68  ecifies.** wheth
36f10 65 72 20 6f 72 20 6e 6f 74 20 69 74 20 72 65 71  er or not it req
36f20 75 69 72 65 73 20 61 20 70 72 6f 74 65 63 74 65  uires a protecte
36f30 64 20 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 2e  d sqlite3_value.
36f40 20 20 54 68 65 0a 2a 2a 20 5b 73 71 6c 69 74 65    The.** [sqlite
36f50 33 5f 76 61 6c 75 65 5f 64 75 70 28 29 5d 20 69  3_value_dup()] i
36f60 6e 74 65 72 66 61 63 65 20 63 61 6e 20 62 65 20  nterface can be 
36f70 75 73 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63  used to construc
36f80 74 20 61 20 6e 65 77 20 0a 2a 2a 20 70 72 6f 74  t a new .** prot
36f90 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76 61  ected sqlite3_va
36fa0 6c 75 65 20 66 72 6f 6d 20 61 6e 20 75 6e 70 72  lue from an unpr
36fb0 6f 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f  otected sqlite3_
36fc0 76 61 6c 75 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65  value..**.** The
36fd0 20 74 65 72 6d 73 20 22 70 72 6f 74 65 63 74 65   terms "protecte
36fe0 64 22 20 61 6e 64 20 22 75 6e 70 72 6f 74 65 63  d" and "unprotec
36ff0 74 65 64 22 20 72 65 66 65 72 20 74 6f 20 77 68  ted" refer to wh
37000 65 74 68 65 72 20 6f 72 20 6e 6f 74 0a 2a 2a 20  ether or not.** 
37010 61 20 6d 75 74 65 78 20 69 73 20 68 65 6c 64 2e  a mutex is held.
37020 20 20 41 6e 20 69 6e 74 65 72 6e 61 6c 20 6d 75    An internal mu
37030 74 65 78 20 69 73 20 68 65 6c 64 20 66 6f 72 20  tex is held for 
37040 61 20 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73  a protected.** s
37050 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
37060 65 63 74 20 62 75 74 20 6e 6f 20 6d 75 74 65 78  ect but no mutex
37070 20 69 73 20 68 65 6c 64 20 66 6f 72 20 61 6e 20   is held for an 
37080 75 6e 70 72 6f 74 65 63 74 65 64 0a 2a 2a 20 73  unprotected.** s
37090 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62 6a  qlite3_value obj
370a0 65 63 74 2e 20 20 49 66 20 53 51 4c 69 74 65 20  ect.  If SQLite 
370b0 69 73 20 63 6f 6d 70 69 6c 65 64 20 74 6f 20 62  is compiled to b
370c0 65 20 73 69 6e 67 6c 65 2d 74 68 72 65 61 64 65  e single-threade
370d0 64 0a 2a 2a 20 28 77 69 74 68 20 5b 53 51 4c 49  d.** (with [SQLI
370e0 54 45 5f 54 48 52 45 41 44 53 41 46 45 3d 30 5d  TE_THREADSAFE=0]
370f0 20 61 6e 64 20 77 69 74 68 20 5b 73 71 6c 69 74   and with [sqlit
37100 65 33 5f 74 68 72 65 61 64 73 61 66 65 28 29 5d  e3_threadsafe()]
37110 20 72 65 74 75 72 6e 69 6e 67 20 30 29 0a 2a 2a   returning 0).**
37120 20 6f 72 20 69 66 20 53 51 4c 69 74 65 20 69 73   or if SQLite is
37130 20 72 75 6e 20 69 6e 20 6f 6e 65 20 6f 66 20 72   run in one of r
37140 65 64 75 63 65 64 20 6d 75 74 65 78 20 6d 6f 64  educed mutex mod
37150 65 73 20 0a 2a 2a 20 5b 53 51 4c 49 54 45 5f 43  es .** [SQLITE_C
37160 4f 4e 46 49 47 5f 53 49 4e 47 4c 45 54 48 52 45  ONFIG_SINGLETHRE
37170 41 44 5d 20 6f 72 20 5b 53 51 4c 49 54 45 5f 43  AD] or [SQLITE_C
37180 4f 4e 46 49 47 5f 4d 55 4c 54 49 54 48 52 45 41  ONFIG_MULTITHREA
37190 44 5d 0a 2a 2a 20 74 68 65 6e 20 74 68 65 72 65  D].** then there
371a0 20 69 73 20 6e 6f 20 64 69 73 74 69 6e 63 74 69   is no distincti
371b0 6f 6e 20 62 65 74 77 65 65 6e 20 70 72 6f 74 65  on between prote
371c0 63 74 65 64 20 61 6e 64 20 75 6e 70 72 6f 74 65  cted and unprote
371d0 63 74 65 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f  cted.** sqlite3_
371e0 76 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 61 6e  value objects an
371f0 64 20 74 68 65 79 20 63 61 6e 20 62 65 20 75 73  d they can be us
37200 65 64 20 69 6e 74 65 72 63 68 61 6e 67 65 61 62  ed interchangeab
37210 6c 79 2e 20 20 48 6f 77 65 76 65 72 2c 0a 2a 2a  ly.  However,.**
37220 20 66 6f 72 20 6d 61 78 69 6d 75 6d 20 63 6f 64   for maximum cod
37230 65 20 70 6f 72 74 61 62 69 6c 69 74 79 20 69 74  e portability it
37240 20 69 73 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20   is recommended 
37250 74 68 61 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  that application
37260 73 0a 2a 2a 20 73 74 69 6c 6c 20 6d 61 6b 65 20  s.** still make 
37270 74 68 65 20 64 69 73 74 69 6e 63 74 69 6f 6e 20  the distinction 
37280 62 65 74 77 65 65 6e 20 70 72 6f 74 65 63 74 65  between protecte
37290 64 20 61 6e 64 20 75 6e 70 72 6f 74 65 63 74 65  d and unprotecte
372a0 64 0a 2a 2a 20 73 71 6c 69 74 65 33 5f 76 61 6c  d.** sqlite3_val
372b0 75 65 20 6f 62 6a 65 63 74 73 20 65 76 65 6e 20  ue objects even 
372c0 77 68 65 6e 20 6e 6f 74 20 73 74 72 69 63 74 6c  when not strictl
372d0 79 20 72 65 71 75 69 72 65 64 2e 0a 2a 2a 0a 2a  y required..**.*
372e0 2a 20 5e 54 68 65 20 73 71 6c 69 74 65 33 5f 76  * ^The sqlite3_v
372f0 61 6c 75 65 20 6f 62 6a 65 63 74 73 20 74 68 61  alue objects tha
37300 74 20 61 72 65 20 70 61 73 73 65 64 20 61 73 20  t are passed as 
37310 70 61 72 61 6d 65 74 65 72 73 20 69 6e 74 6f 20  parameters into 
37320 74 68 65 0a 2a 2a 20 69 6d 70 6c 65 6d 65 6e 74  the.** implement
37330 61 74 69 6f 6e 20 6f 66 20 5b 61 70 70 6c 69 63  ation of [applic
37340 61 74 69 6f 6e 2d 64 65 66 69 6e 65 64 20 53 51  ation-defined SQ
37350 4c 20 66 75 6e 63 74 69 6f 6e 73 5d 20 61 72 65  L functions] are
37360 20 70 72 6f 74 65 63 74 65 64 2e 0a 2a 2a 20 5e   protected..** ^
37370 54 68 65 20 73 71 6c 69 74 65 33 5f 76 61 6c 75  The sqlite3_valu
37380 65 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65  e object returne
37390 64 20 62 79 0a 2a 2a 20 5b 73 71 6c 69 74 65 33  d by.** [sqlite3
373a0 5f 63 6f 6c 75 6d 6e 5f 76 61 6c 75 65 28 29 5d  _column_value()]
373b0 20 69 73 20 75 6e 70 72 6f 74 65 63 74 65 64 2e   is unprotected.
373c0 0a 2a 2a 20 55 6e 70 72 6f 74 65 63 74 65 64 20  .** Unprotected 
373d0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 6f 62  sqlite3_value ob
373e0 6a 65 63 74 73 20 6d 61 79 20 6f 6e 6c 79 20 62  jects may only b
373f0 65 20 75 73 65 64 20 61 73 20 61 72 67 75 6d 65  e used as argume
37400 6e 74 73 0a 2a 2a 20 74 6f 20 5b 73 71 6c 69 74  nts.** to [sqlit
37410 65 33 5f 72 65 73 75 6c 74 5f 76 61 6c 75 65 28  e3_result_value(
37420 29 5d 2c 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e  )], [sqlite3_bin
37430 64 5f 76 61 6c 75 65 28 29 5d 2c 20 61 6e 64 0a  d_value()], and.
37440 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75  ** [sqlite3_valu
37450 65 5f 64 75 70 28 29 5d 2e 0a 2a 2a 20 54 68 65  e_dup()]..** The
37460 20 5b 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 5f   [sqlite3_value_
37470 62 6c 6f 62 20 7c 20 73 71 6c 69 74 65 33 5f 76  blob | sqlite3_v
37480 61 6c 75 65 5f 74 79 70 65 28 29 5d 20 66 61 6d  alue_type()] fam
37490 69 6c 79 20 6f 66 0a 2a 2a 20 69 6e 74 65 72 66  ily of.** interf
374a0 61 63 65 73 20 72 65 71 75 69 72 65 20 70 72 6f  aces require pro
374b0 74 65 63 74 65 64 20 73 71 6c 69 74 65 33 5f 76  tected sqlite3_v
374c0 61 6c 75 65 20 6f 62 6a 65 63 74 73 2e 0a 2a 2f  alue objects..*/
374d0 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
374e0 73 71 6c 69 74 65 33 5f 76 61 6c 75 65 20 73 71  sqlite3_value sq
374f0 6c 69 74 65 33 5f 76 61 6c 75 65 3b 0a 0a 2f 2a  lite3_value;../*
37500 0a 2a 2a 20 43 41 50 49 33 52 45 46 3a 20 53 51  .** CAPI3REF: SQ
37510 4c 20 46 75 6e 63 74 69 6f 6e 20 43 6f 6e 74 65  L Function Conte
37520 78 74 20 4f 62 6a 65 63 74 0a 2a 2a 0a 2a 2a 20  xt Object.**.** 
37530 54 68 65 20 63 6f 6e 74 65 78 74 20 69 6e 20 77  The context in w
37540 68 69 63 68 20 61 6e 20 53 51 4c 20 66 75 6e 63  hich an SQL func
37550 74 69 6f 6e 20 65 78 65 63 75 74 65 73 20 69 73  tion executes is
37560 20 73 74 6f 72 65 64 20 69 6e 20 61 6e 0a 2a 2a   stored in an.**
37570 20 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74   sqlite3_context
37580 20 6f 62 6a 65 63 74 2e 20 20 5e 41 20 70 6f 69   object.  ^A poi
37590 6e 74 65 72 20 74 6f 20 61 6e 20 73 71 6c 69 74  nter to an sqlit
375a0 65 33 5f 63 6f 6e 74 65 78 74 20 6f 62 6a 65 63  e3_context objec
375b0 74 0a 2a 2a 20 69 73 20 61 6c 77 61 79 73 20 66  t.** is always f
375c0 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 20 74  irst parameter t
375d0 6f 20 5b 61 70 70 6c 69 63 61 74 69 6f 6e 2d 64  o [application-d
375e0 65 66 69 6e 65 64 20 53 51 4c 20 66 75 6e 63 74  efined SQL funct
375f0 69 6f 6e 73 5d 2e 0a 2a 2a 20 54 68 65 20 61 70  ions]..** The ap
37600 70 6c 69 63 61 74 69 6f 6e 2d 64 65 66 69 6e 65  plication-define
37610 64 20 53 51 4c 20 66 75 6e 63 74 69 6f 6e 20 69  d SQL function i
37620 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 69  mplementation wi
37630 6c 6c 20 70 61 73 73 20 74 68 69 73 0a 2a 2a 20  ll pass this.** 
37640 70 6f 69 6e 74 65 72 20 74 68 72 6f 75 67 68 20  pointer through 
37650 69 6e 74 6f 20 63 61 6c 6c 73 20 74 6f 20 5b 73  into calls to [s
37660 71 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 69 6e  qlite3_result_in
37670 74 20 7c 20 73 71 6c 69 74 65 33 5f 72 65 73 75  t | sqlite3_resu
37680 6c 74 28 29 5d 2c 0a 2a 2a 20 5b 73 71 6c 69 74  lt()],.** [sqlit
37690 65 33 5f 61 67 67 72 65 67 61 74 65 5f 63 6f 6e  e3_aggregate_con
376a0 74 65 78 74 28 29 5d 2c 20 5b 73 71 6c 69 74 65  text()], [sqlite
376b0 33 5f 75 73 65 72 5f 64 61 74 61 28 29 5d 2c 0a  3_user_data()],.
376c0 2a 2a 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6e 74  ** [sqlite3_cont
376d0 65 78 74 5f 64 62 5f 68 61 6e 64 6c 65 28 29 5d  ext_db_handle()]
376e0 2c 20 5b 73 71 6c 69 74 65 33 5f 67 65 74 5f 61  , [sqlite3_get_a
376f0 75 78 64 61 74 61 28 29 5d 2c 0a 2a 2a 20 61 6e  uxdata()],.** an
37700 64 2f 6f 72 20 5b 73 71 6c 69 74 65 33 5f 73 65  d/or [sqlite3_se
37710 74 5f 61 75 78 64 61 74 61 28 29 5d 2e 0a 2a 2f  t_auxdata()]..*/
37720 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20  .typedef struct 
37730 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 20  sqlite3_context 
37740 73 71 6c 69 74 65 33 5f 63 6f 6e 74 65 78 74 3b  sqlite3_context;
37750 0a 0a 2f 2a 0a 2a 2a 20 43 41 50 49 33 52 45 46  ../*.** CAPI3REF
37760 3a 20 42 69 6e 64 69 6e 67 20 56 61 6c 75 65 73  : Binding Values
37770 20 54 6f 20 50 72 65 70 61 72 65 64 20 53 74 61   To Prepared Sta
37780 74 65 6d 65 6e 74 73 0a 2a 2a 20 4b 45 59 57 4f  tements.** KEYWO
37790 52 44 53 3a 20 7b 68 6f 73 74 20 70 61 72 61 6d  RDS: {host param
377a0 65 74 65 72 7d 20 7b 68 6f 73 74 20 70 61 72 61  eter} {host para
377b0 6d 65 74 65 72 73 7d 20 7b 68 6f 73 74 20 70 61  meters} {host pa
377c0 72 61 6d 65 74 65 72 20 6e 61 6d 65 7d 0a 2a 2a  rameter name}.**
377d0 20 4b 45 59 57 4f 52 44 53 3a 20 7b 53 51 4c 20   KEYWORDS: {SQL 
377e0 70 61 72 61 6d 65 74 65 72 7d 20 7b 53 51 4c 20  parameter} {SQL 
377f0 70 61 72 61 6d 65 74 65 72 73 7d 20 7b 70 61 72  parameters} {par
37800 61 6d 65 74 65 72 20 62 69 6e 64 69 6e 67 7d 0a  ameter binding}.
37810 2a 2a 20 4d 45 54 48 4f 44 3a 20 73 71 6c 69 74  ** METHOD: sqlit
37820 65 33 5f 73 74 6d 74 0a 2a 2a 0a 2a 2a 20 5e 28  e3_stmt.**.** ^(
37830 49 6e 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  In the SQL state
37840 6d 65 6e 74 20 74 65 78 74 20 69 6e 70 75 74 20  ment text input 
37850 74 6f 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70  to [sqlite3_prep
37860 61 72 65 5f 76 32 28 29 5d 20 61 6e 64 20 69 74  are_v2()] and it
37870 73 20 76 61 72 69 61 6e 74 73 2c 0a 2a 2a 20 6c  s variants,.** l
37880 69 74 65 72 61 6c 73 20 6d 61 79 20 62 65 20 72  iterals may be r
37890 65 70 6c 61 63 65 64 20 62 79 20 61 20 5b 70 61  eplaced by a [pa
378a0 72 61 6d 65 74 65 72 5d 20 74 68 61 74 20 6d 61  rameter] that ma
378b0 74 63 68 65 73 20 6f 6e 65 20 6f 66 20 66 6f 6c  tches one of fol
378c0 6c 6f 77 69 6e 67 0a 2a 2a 20 74 65 6d 70 6c 61  lowing.** templa
378d0 74 65 73 3a 0a 2a 2a 0a 2a 2a 20 3c 75 6c 3e 0a  tes:.**.** <ul>.
378e0 2a 2a 20 3c 6c 69 3e 20 20 3f 0a 2a 2a 20 3c 6c  ** <li>  ?.** <l
378f0 69 3e 20 20 3f 4e 4e 4e 0a 2a 2a 20 3c 6c 69 3e  i>  ?NNN.** <li>
37900 20 20 3a 56 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20    :VVV.** <li>  
37910 40 56 56 56 0a 2a 2a 20 3c 6c 69 3e 20 20 24 56  @VVV.** <li>  $V
37920 56 56 0a 2a 2a 20 3c 2f 75 6c 3e 0a 2a 2a 0a 2a  VV.** </ul>.**.*
37930 2a 20 49 6e 20 74 68 65 20 74 65 6d 70 6c 61 74  * In the templat
37940 65 73 20 61 62 6f 76 65 2c 20 4e 4e 4e 20 72 65  es above, NNN re
37950 70 72 65 73 65 6e 74 73 20 61 6e 20 69 6e 74 65  presents an inte
37960 67 65 72 20 6c 69 74 65 72 61 6c 2c 0a 2a 2a 20  ger literal,.** 
37970 61 6e 64 20 56 56 56 20 72 65 70 72 65 73 65 6e  and VVV represen
37980 74 73 20 61 6e 20 61 6c 70 68 61 6e 75 6d 65 72  ts an alphanumer
37990 69 63 20 69 64 65 6e 74 69 66 69 65 72 2e 29 5e  ic identifier.)^
379a0 20 20 5e 54 68 65 20 76 61 6c 75 65 73 20 6f 66    ^The values of
379b0 20 74 68 65 73 65 0a 2a 2a 20 70 61 72 61 6d 65   these.** parame
379c0 74 65 72 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65  ters (also calle
379d0 64 20 22 68 6f 73 74 20 70 61 72 61 6d 65 74 65  d "host paramete
379e0 72 20 6e 61 6d 65 73 22 20 6f 72 20 22 53 51 4c  r names" or "SQL
379f0 20 70 61 72 61 6d 65 74 65 72 73 22 29 0a 2a 2a   parameters").**
37a00 20 63 61 6e 20 62 65 20 73 65 74 20 75 73 69 6e   can be set usin
37a10 67 20 74 68 65 20 73 71 6c 69 74 65 33 5f 62 69  g the sqlite3_bi
37a20 6e 64 5f 2a 28 29 20 72 6f 75 74 69 6e 65 73 20  nd_*() routines 
37a30 64 65 66 69 6e 65 64 20 68 65 72 65 2e 0a 2a 2a  defined here..**
37a40 0a 2a 2a 20 5e 54 68 65 20 66 69 72 73 74 20 61  .** ^The first a
37a50 72 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 73  rgument to the s
37a60 71 6c 69 74 65 33 5f 62 69 6e 64 5f 2a 28 29 20  qlite3_bind_*() 
37a70 72 6f 75 74 69 6e 65 73 20 69 73 20 61 6c 77 61  routines is alwa
37a80 79 73 0a 2a 2a 20 61 20 70 6f 69 6e 74 65 72 20  ys.** a pointer 
37a90 74 6f 20 74 68 65 20 5b 73 71 6c 69 74 65 33 5f  to the [sqlite3_
37aa0 73 74 6d 74 5d 20 6f 62 6a 65 63 74 20 72 65 74  stmt] object ret
37ab0 75 72 6e 65 64 20 66 72 6f 6d 0a 2a 2a 20 5b 73  urned from.** [s
37ac0 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 5f 76  qlite3_prepare_v
37ad0 32 28 29 5d 20 6f 72 20 69 74 73 20 76 61 72 69  2()] or its vari
37ae0 61 6e 74 73 2e 0a 2a 2a 0a 2a 2a 20 5e 54 68 65  ants..**.** ^The
37af0 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74   second argument
37b00 20 69 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66   is the index of
37b10 20 74 68 65 20 53 51 4c 20 70 61 72 61 6d 65 74   the SQL paramet
37b20 65 72 20 74 6f 20 62 65 20 73 65 74 2e 0a 2a 2a  er to be set..**
37b30 20 5e 54 68 65 20 6c 65 66 74 6d 6f 73 74 20 53   ^The leftmost S
37b40 51 4c 20 70 61 72 61 6d 65 74 65 72 20 68 61 73  QL parameter has
37b50 20 61 6e 20 69 6e 64 65 78 20 6f 66 20 31 2e 20   an index of 1. 
37b60 20 5e 57 68 65 6e 20 74 68 65 20 73 61 6d 65 20   ^When the same 
37b70 6e 61 6d 65 64 0a 2a 2a 20 53 51 4c 20 70 61 72  named.** SQL par
37b80 61 6d 65 74 65 72 20 69 73 20 75 73 65 64 20 6d  ameter is used m
37b90 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 2c 20 73  ore than once, s
37ba0 65 63 6f 6e 64 20 61 6e 64 20 73 75 62 73 65 71  econd and subseq
37bb0 75 65 6e 74 0a 2a 2a 20 6f 63 63 75 72 72 65 6e  uent.** occurren
37bc0 63 65 73 20 68 61 76 65 20 74 68 65 20 73 61 6d  ces have the sam
37bd0 65 20 69 6e 64 65 78 20 61 73 20 74 68 65 20 66  e index as the f
37be0 69 72 73 74 20 6f 63 63 75 72 72 65 6e 63 65 2e  irst occurrence.
37bf0 0a 2a 2a 20 5e 54 68 65 20 69 6e 64 65 78 20 66  .** ^The index f
37c00 6f 72 20 6e 61 6d 65 64 20 70 61 72 61 6d 65 74  or named paramet
37c10 65 72 73 20 63 61 6e 20 62 65 20 6c 6f 6f 6b 65  ers can be looke
37c20 64 20 75 70 20 75 73 69 6e 67 20 74 68 65 0a 2a  d up using the.*
37c30 2a 20 5b 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  * [sqlite3_bind_
37c40 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 28  parameter_index(
37c50 29 5d 20 41 50 49 20 69 66 20 64 65 73 69 72 65  )] API if desire
37c60 64 2e 20 20 5e 54 68 65 20 69 6e 64 65 78 0a 2a  d.  ^The index.*
37c70 2a 20 66 6f 72 20 22 3f 4e 4e 4e 22 20 70 61 72  * for "?NNN" par
37c80 61 6d 65 74 65 72 73 20 69 73 20 74 68 65 20 76  ameters is the v
37c90 61 6c 75 65 20 6f 66 20 4e 4e 4e 2e 0a 2a 2a 20  alue of NNN..** 
37ca0 5e 54 68 65 20 4e 4e 4e 20 76 61 6c 75 65 20 6d  ^The NNN value m
37cb0 75 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 31  ust be between 1
37cc0 20 61 6e 64 20 74 68 65 20 5b 73 71 6c 69 74 65   and the [sqlite
37cd0 33 5f 6c 69 6d 69 74 28 29 5d 0a 2a 2a 20 70 61  3_limit()].** pa
37ce0 72 61 6d 65 74 65 72 20 5b 53 51 4c 49 54 45 5f  rameter [SQLITE_
37cf0 4c 49 4d 49 54 5f 56 41 52 49 41 42 4c 45 5f 4e  LIMIT_VARIABLE_N
37d00 55 4d 42 45 52 5d 20 28 64 65 66 61 75 6c 74 20  UMBER] (default 
37d10 76 61 6c 75 65 3a 20 39 39 39 29 2e 0a 2a 2a 0a  value: 999)..**.
37d20 2a 2a 20 5e 54 68 65 20 74 68 69 72 64 20 61 72  ** ^The third ar
37d30 67 75 6d 65 6e 74 20 69 73 20 74 68 65 20 76 61  gument is the va
37d40 6c 75 65 20 74 6f 20 62 69 6e 64 20 74 6f 20 74  lue to bind to t
37d50 68 65 20 70 61 72 61 6d 65 74 65 72 2e 0a 2a 2a  he parameter..**
37d60 20 5e 49 66 20 74 68 65 20 74 68 69 72 64 20 70   ^If the third p
37d70 61 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69  arameter to sqli
37d80 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 28 29 20  te3_bind_text() 
37d90 6f 72 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  or sqlite3_bind_
37da0 74 65 78 74 31 36 28 29 0a 2a 2a 20 6f 72 20 73  text16().** or s
37db0 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62  qlite3_bind_blob
37dc0 28 29 20 69 73 20 61 20 4e 55 4c 4c 20 70 6f 69  () is a NULL poi
37dd0 6e 74 65 72 20 74 68 65 6e 20 74 68 65 20 66 6f  nter then the fo
37de0 75 72 74 68 20 70 61 72 61 6d 65 74 65 72 0a 2a  urth parameter.*
37df0 2a 20 69 73 20 69 67 6e 6f 72 65 64 20 61 6e 64  * is ignored and
37e00 20 74 68 65 20 65 6e 64 20 72 65 73 75 6c 74 20   the end result 
37e10 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 73  is the same as s
37e20 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
37e30 28 29 2e 0a 2a 2a 0a 2a 2a 20 5e 28 49 6e 20 74  ()..**.** ^(In t
37e40 68 6f 73 65 20 72 6f 75 74 69 6e 65 73 20 74 68  hose routines th
37e50 61 74 20 68 61 76 65 20 61 20 66 6f 75 72 74 68  at have a fourth
37e60 20 61 72 67 75 6d 65 6e 74 2c 20 69 74 73 20 76   argument, its v
37e70 61 6c 75 65 20 69 73 20 74 68 65 0a 2a 2a 20 6e  alue is the.** n
37e80 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69  umber of bytes i
37e90 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 2e  n the parameter.
37ea0 20 20 54 6f 20 62 65 20 63 6c 65 61 72 3a 20 74    To be clear: t
37eb0 68 65 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a  he value is the.
37ec0 2a 2a 20 6e 75 6d 62 65 72 20 6f 66 20 3c 75 3e  ** number of <u>
37ed0 62 79 74 65 73 3c 2f 75 3e 20 69 6e 20 74 68 65  bytes</u> in the
37ee0 20 76 61 6c 75 65 2c 20 6e 6f 74 20 74 68 65 20   value, not the 
37ef0 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63  number of charac
37f00 74 65 72 73 2e 29 5e 0a 2a 2a 20 5e 49 66 20 74  ters.)^.** ^If t
37f10 68 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d 65  he fourth parame
37f20 74 65 72 20 74 6f 20 73 71 6c 69 74 65 33 5f 62  ter to sqlite3_b
37f30 69 6e 64 5f 74 65 78 74 28 29 20 6f 72 20 73 71  ind_text() or sq
37f40 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
37f50 36 28 29 0a 2a 2a 20 69 73 20 6e 65 67 61 74 69  6().** is negati
37f60 76 65 2c 20 74 68 65 6e 20 74 68 65 20 6c 65 6e  ve, then the len
37f70 67 74 68 20 6f 66 20 74 68 65 20 73 74 72 69 6e  gth of the strin
37f80 67 20 69 73 0a 2a 2a 20 74 68 65 20 6e 75 6d 62  g is.** the numb
37f90 65 72 20 6f 66 20 62 79 74 65 73 20 75 70 20 74  er of bytes up t
37fa0 6f 20 74 68 65 20 66 69 72 73 74 20 7a 65 72 6f  o the first zero
37fb0 20 74 65 72 6d 69 6e 61 74 6f 72 2e 0a 2a 2a 20   terminator..** 
37fc0 49 66 20 74 68 65 20 66 6f 75 72 74 68 20 70 61  If the fourth pa
37fd0 72 61 6d 65 74 65 72 20 74 6f 20 73 71 6c 69 74  rameter to sqlit
37fe0 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 28 29 20 69  e3_bind_blob() i
37ff0 73 20 6e 65 67 61 74 69 76 65 2c 20 74 68 65 6e  s negative, then
38000 0a 2a 2a 20 74 68 65 20 62 65 68 61 76 69 6f 72  .** the behavior
38010 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a   is undefined..*
38020 2a 20 49 66 20 61 20 6e 6f 6e 2d 6e 65 67 61 74  * If a non-negat
38030 69 76 65 20 66 6f 75 72 74 68 20 70 61 72 61 6d  ive fourth param
38040 65 74 65 72 20 69 73 20 70 72 6f 76 69 64 65 64  eter is provided
38050 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
38060 5f 74 65 78 74 28 29 0a 2a 2a 20 6f 72 20 73 71  _text().** or sq
38070 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
38080 36 28 29 20 6f 72 20 73 71 6c 69 74 65 33 5f 62  6() or sqlite3_b
38090 69 6e 64 5f 74 65 78 74 36 34 28 29 20 74 68 65  ind_text64() the
380a0 6e 0a 2a 2a 20 74 68 61 74 20 70 61 72 61 6d 65  n.** that parame
380b0 74 65 72 20 6d 75 73 74 20 62 65 20 74 68 65 20  ter must be the 
380c0 62 79 74 65 20 6f 66 66 73 65 74 0a 2a 2a 20 77  byte offset.** w
380d0 68 65 72 65 20 74 68 65 20 4e 55 4c 20 74 65 72  here the NUL ter
380e0 6d 69 6e 61 74 6f 72 20 77 6f 75 6c 64 20 6f 63  minator would oc
380f0 63 75 72 20 61 73 73 75 6d 69 6e 67 20 74 68 65  cur assuming the
38100 20 73 74 72 69 6e 67 20 77 65 72 65 20 4e 55 4c   string were NUL
38110 0a 2a 2a 20 74 65 72 6d 69 6e 61 74 65 64 2e 20  .** terminated. 
38120 20 49 66 20 61 6e 79 20 4e 55 4c 20 63 68 61 72   If any NUL char
38130 61 63 74 65 72 73 20 6f 63 63 75 72 20 61 74 20  acters occur at 
38140 62 79 74 65 20 6f 66 66 73 65 74 73 20 6c 65 73  byte offsets les
38150 73 20 74 68 61 6e 20 0a 2a 2a 20 74 68 65 20 76  s than .** the v
38160 61 6c 75 65 20 6f 66 20 74 68 65 20 66 6f 75 72  alue of the four
38170 74 68 20 70 61 72 61 6d 65 74 65 72 20 74 68 65  th parameter the
38180 6e 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20  n the resulting 
38190 73 74 72 69 6e 67 20 76 61 6c 75 65 20 77 69 6c  string value wil
381a0 6c 0a 2a 2a 20 63 6f 6e 74 61 69 6e 20 65 6d 62  l.** contain emb
381b0 65 64 64 65 64 20 4e 55 4c 73 2e 20 20 54 68 65  edded NULs.  The
381c0 20 72 65 73 75 6c 74 20 6f 66 20 65 78 70 72 65   result of expre
381d0 73 73 69 6f 6e 73 20 69 6e 76 6f 6c 76 69 6e 67  ssions involving
381e0 20 73 74 72 69 6e 67 73 0a 2a 2a 20 77 69 74 68   strings.** with
381f0 20 65 6d 62 65 64 64 65 64 20 4e 55 4c 73 20 69   embedded NULs i
38200 73 20 75 6e 64 65 66 69 6e 65 64 2e 0a 2a 2a 0a  s undefined..**.
38210 2a 2a 20 5e 54 68 65 20 66 69 66 74 68 20 61 72  ** ^The fifth ar
38220 67 75 6d 65 6e 74 20 74 6f 20 74 68 65 20 42 4c  gument to the BL
38230 4f 42 20 61 6e 64 20 73 74 72 69 6e 67 20 62 69  OB and string bi
38240 6e 64 69 6e 67 20 69 6e 74 65 72 66 61 63 65 73  nding interfaces
38250 0a 2a 2a 20 69 73 20 61 20 64 65 73 74 72 75 63  .** is a destruc
38260 74 6f 72 20 75 73 65 64 20 74 6f 20 64 69 73 70  tor used to disp
38270 6f 73 65 20 6f 66 20 74 68 65 20 42 4c 4f 42 20  ose of the BLOB 
38280 6f 72 0a 2a 2a 20 73 74 72 69 6e 67 20 61 66 74  or.** string aft
38290 65 72 20 53 51 4c 69 74 65 20 68 61 73 20 66 69  er SQLite has fi
382a0 6e 69 73 68 65 64 20 77 69 74 68 20 69 74 2e 20  nished with it. 
382b0 20 5e 54 68 65 20 64 65 73 74 72 75 63 74 6f 72   ^The destructor
382c0 20 69 73 20 63 61 6c 6c 65 64 0a 2a 2a 20 74 6f   is called.** to
382d0 20 64 69 73 70 6f 73 65 20 6f 66 20 74 68 65 20   dispose of the 
382e0 42 4c 4f 42 20 6f 72 20 73 74 72 69 6e 67 20 65  BLOB or string e
382f0 76 65 6e 20 69 66 20 74 68 65 20 63 61 6c 6c 20  ven if the call 
38300 74 6f 20 62 69 6e 64 20 41 50 49 20 66 61 69 6c  to bind API fail
38310 73 2e 0a 2a 2a 20 5e 49 66 20 74 68 65 20 66 69  s..** ^If the fi
38320 66 74 68 20 61 72 67 75 6d 65 6e 74 20 69 73 0a  fth argument is.
38330 2a 2a 20 74 68 65 20 73 70 65 63 69 61 6c 20 76  ** the special v
38340 61 6c 75 65 20 5b 53 51 4c 49 54 45 5f 53 54 41  alue [SQLITE_STA
38350 54 49 43 5d 2c 20 74 68 65 6e 20 53 51 4c 69 74  TIC], then SQLit
38360 65 20 61 73 73 75 6d 65 73 20 74 68 61 74 20 74  e assumes that t
38370 68 65 0a 2a 2a 20 69 6e 66 6f 72 6d 61 74 69 6f  he.** informatio
38380 6e 20 69 73 20 69 6e 20 73 74 61 74 69 63 2c 20  n is in static, 
38390 75 6e 6d 61 6e 61 67 65 64 20 73 70 61 63 65 20  unmanaged space 
383a0 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 6e 65 65  and does not nee
383b0 64 20 74 6f 20 62 65 20 66 72 65 65 64 2e 0a 2a  d to be freed..*
383c0 2a 20 5e 49 66 20 74 68 65 20 66 69 66 74 68 20  * ^If the fifth 
383d0 61 72 67 75 6d 65 6e 74 20 68 61 73 20 74 68 65  argument has the
383e0 20 76 61 6c 75 65 20 5b 53 51 4c 49 54 45 5f 54   value [SQLITE_T
383f0 52 41 4e 53 49 45 4e 54 5d 2c 20 74 68 65 6e 0a  RANSIENT], then.
38400 2a 2a 20 53 51 4c 69 74 65 20 6d 61 6b 65 73 20  ** SQLite makes 
38410 69 74 73 20 6f 77 6e 20 70 72 69 76 61 74 65 20  its own private 
38420 63 6f 70 79 20 6f 66 20 74 68 65 20 64 61 74 61  copy of the data
38430 20 69 6d 6d 65 64 69 61 74 65 6c 79 2c 20 62 65   immediately, be
38440 66 6f 72 65 0a 2a 2a 20 74 68 65 20 73 71 6c 69  fore.** the sqli
38450 74 65 33 5f 62 69 6e 64 5f 2a 28 29 20 72 6f 75  te3_bind_*() rou
38460 74 69 6e 65 20 72 65 74 75 72 6e 73 2e 0a 2a 2a  tine returns..**
38470 0a 2a 2a 20 5e 54 68 65 20 73 69 78 74 68 20 61  .** ^The sixth a
38480 72 67 75 6d 65 6e 74 20 74 6f 20 73 71 6c 69 74  rgument to sqlit
38490 65 33 5f 62 69 6e 64 5f 74 65 78 74 36 34 28 29  e3_bind_text64()
384a0 20 6d 75 73 74 20 62 65 20 6f 6e 65 20 6f 66 0a   must be one of.
384b0 2a 2a 20 5b 53 51 4c 49 54 45 5f 55 54 46 38 5d  ** [SQLITE_UTF8]
384c0 2c 20 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 5d  , [SQLITE_UTF16]
384d0 2c 20 5b 53 51 4c 49 54 45 5f 55 54 46 31 36 42  , [SQLITE_UTF16B
384e0 45 5d 2c 20 6f 72 20 5b 53 51 4c 49 54 45 5f 55  E], or [SQLITE_U
384f0 54 46 31 36 4c 45 5d 0a 2a 2a 20 74 6f 20 73 70  TF16LE].** to sp
38500 65 63 69 66 79 20 74 68 65 20 65 6e 63 6f 64 69  ecify the encodi
38510 6e 67 20 6f 66 20 74 68 65 20 74 65 78 74 20 69  ng of the text i
38520 6e 20 74 68 65 20 74 68 69 72 64 20 70 61 72 61  n the third para
38530 6d 65 74 65 72 2e 20 20 49 66 0a 2a 2a 20 74 68  meter.  If.** th
38540 65 20 73 69 78 74 68 20 61 72 67 75 6d 65 6e 74  e sixth argument
38550 20 74 6f 20 73 71 6c 69 74 65 33 5f 62 69 6e 64   to sqlite3_bind
38560 5f 74 65 78 74 36 34 28 29 20 69 73 20 6e 6f 74  _text64() is not
38570 20 6f 6e 65 20 6f 66 20 74 68 65 0a 2a 2a 20 61   one of the.** a
38580 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 73 68  llowed values sh
38590 6f 77 6e 20 61 62 6f 76 65 2c 20 6f 72 20 69 66  own above, or if
385a0 20 74 68 65 20 74 65 78 74 20 65 6e 63 6f 64 69   the text encodi
385b0 6e 6